“JetBot AI Kit 教程八、ROS”的版本间的差异
(创建页面,内容为“==JetBot AI Kit 教程目录== *JetBot AI Kit 教程一、组装小车 *JetBot AI Kit 教程二、安装镜像 *JetBot AI Kit 教程三、电机驱动 *[…”) |
小 (文本替换 - 替换“</source>”为“</code>”) |
||
第34行: | 第34行: | ||
# add ROS paths to environment | # add ROS paths to environment | ||
sudo sh -c 'echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc' | sudo sh -c 'echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc' | ||
− | </ | + | </code> |
添加i2c到user用户组 | 添加i2c到user用户组 | ||
<source lang="c"> | <source lang="c"> | ||
sudo usermod -aG i2c $USER | sudo usermod -aG i2c $USER | ||
− | </ | + | </code> |
==4. 创建catkin工作空间== | ==4. 创建catkin工作空间== | ||
第45行: | 第45行: | ||
$ echo $ROS_PACKAGE_PATH | $ echo $ROS_PACKAGE_PATH | ||
/home/nvidia/workspace/catkin_ws/src:/opt/ros/melodic/share | /home/nvidia/workspace/catkin_ws/src:/opt/ros/melodic/share | ||
− | </ | + | </code> |
创建catkin工作空间保存我们的ROS程序包 | 创建catkin工作空间保存我们的ROS程序包 | ||
第56行: | 第56行: | ||
# add catkin_ws path to bashrc | # add catkin_ws path to bashrc | ||
sudo sh -c 'echo "source ~/workspace/catkin_ws/devel/setup.bash" >> ~/.bashrc' | sudo sh -c 'echo "source ~/workspace/catkin_ws/devel/setup.bash" >> ~/.bashrc' | ||
− | </ | + | </code> |
==5. 编译安装jetson-inference== | ==5. 编译安装jetson-inference== | ||
第77行: | 第77行: | ||
# install libraries | # install libraries | ||
sudo make install | sudo make install | ||
− | </ | + | </code> |
【注意】由于Jetson nano服务器均在国外,部分资源需要能够上外网才能可以获取,否则可能安装失败。另外需要安装一下库 | 【注意】由于Jetson nano服务器均在国外,部分资源需要能够上外网才能可以获取,否则可能安装失败。另外需要安装一下库 | ||
<source lang="c"> | <source lang="c"> | ||
sudo apt install libqt4-dev libglew-dev | sudo apt install libqt4-dev libglew-dev | ||
− | </ | + | </code> |
==6. 编译安装ros_deep_learning== | ==6. 编译安装ros_deep_learning== | ||
<source lang="c"> | <source lang="c"> | ||
第98行: | 第98行: | ||
rospack find ros_deep_learning | rospack find ros_deep_learning | ||
/home/nvidia/workspace/catkin_ws/src/ros_deep_learning | /home/nvidia/workspace/catkin_ws/src/ros_deep_learning | ||
− | </ | + | </code> |
==7. 编译安装jetbot_ros== | ==7. 编译安装jetbot_ros== | ||
<source lang="c"> | <source lang="c"> | ||
第112行: | 第112行: | ||
rospack find jetbot_ros | rospack find jetbot_ros | ||
/home/nvidia/workspace/catkin_ws/src/jetbot_ros | /home/nvidia/workspace/catkin_ws/src/jetbot_ros | ||
− | </ | + | </code> |
==8. 测试jetbot ROS== | ==8. 测试jetbot ROS== | ||
打开一个新终端,然后运行ros核心节点 | 打开一个新终端,然后运行ros核心节点 | ||
第135行: | 第135行: | ||
rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "right" | rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "right" | ||
rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "stop" | rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "stop" | ||
− | </ | + | </code> |
===使用OLED显示信息=== | ===使用OLED显示信息=== | ||
新建一个终端运行OLED节点 | 新建一个终端运行OLED节点 |
2019年11月14日 (四) 15:39的版本
目录
JetBot AI Kit 教程目录
- JetBot AI Kit 教程一、组装小车
- JetBot AI Kit 教程二、安装镜像
- JetBot AI Kit 教程三、电机驱动
- JetBot AI Kit 教程四、远程遥控
- JetBot AI Kit 教程五、自主避障
- JetBot AI Kit 教程六、目标跟踪
- JetBot AI Kit 教程七、目标巡线
- JetBot AI Kit 教程八、ROS
- JetBot AI Kit WIKI 主页
1. 前言
如果你从来没有接触过ROS系统,请先参考ROS官方教程熟悉ROS系统,了解各种ROS概念,然后再根据本教程通过ROS操作JetBot小车
2. 前期准备
使用前需要先安装系统,参考:
3. 安装melodic版本ROS
Jetson Nano提供的系统镜像是基于18.04版本Ubuntu系统,支持直接用apt安装ROS.使用下面的指令,按顺序安装,注意安装过程中是否有报错。 <source lang="c">
- enable all Ubuntu packages:
sudo apt-add-repository universe sudo apt-add-repository multiverse sudo apt-add-repository restricted
- add ROS repository to apt sources
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
- install ROS Base
sudo apt-get update sudo apt-get install ros-melodic-ros-base
- add ROS paths to environment
sudo sh -c 'echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc' 添加i2c到user用户组 <source lang="c"> sudo usermod -aG i2c $USER
4. 创建catkin工作空间
关闭当前终端,重新打开一个新的终端。确认ROS是否安装成功 <source lang="c"> $ echo $ROS_PACKAGE_PATH /home/nvidia/workspace/catkin_ws/src:/opt/ros/melodic/share
创建catkin工作空间保存我们的ROS程序包 <source lang="c">
- create the catkin workspace
mkdir -p ~/workspace/catkin_ws/src cd ~/workspace/catkin_ws catkin_make
- add catkin_ws path to bashrc
sudo sh -c 'echo "source ~/workspace/catkin_ws/devel/setup.bash" >> ~/.bashrc'
5. 编译安装jetson-inference
<source lang="c">
- git and cmake should be installed
sudo apt-get install git cmake
- clone the repo and submodules
cd ~/workspace git clone -b onnx https://github.com/dusty-nv/jetson-inference cd jetson-inference git submodule update --init
- build from source
mkdir build cd build cmake ../ make
- install libraries
sudo make install 【注意】由于Jetson nano服务器均在国外,部分资源需要能够上外网才能可以获取,否则可能安装失败。另外需要安装一下库 <source lang="c"> sudo apt install libqt4-dev libglew-dev
6. 编译安装ros_deep_learning
<source lang="c">
- install dependencies
sudo apt-get install ros-melodic-vision-msgs ros-melodic-image-transport ros-melodic-image-publisher
- clone the repo
cd ~/workspace/catkin_ws/src git clone https://github.com/dusty-nv/ros_deep_learning
- make ros_deep_learning
cd ../ # cd ~/workspace/catkin_ws catkin_make
- confirm that the package can be found
rospack find ros_deep_learning /home/nvidia/workspace/catkin_ws/src/ros_deep_learning
7. 编译安装jetbot_ros
<source lang="c">
- clone the repo
cd ~/workspace/catkin_ws/src git clone https://github.com/waveshare/jetbot_ros
- build the package
cd ../ # cd ~/workspace/catkin_ws catkin_make
- confirm that jetbot_ros package can be found
rospack find jetbot_ros /home/nvidia/workspace/catkin_ws/src/jetbot_ros
8. 测试jetbot ROS
打开一个新终端,然后运行ros核心节点
roscore
输出信息如下,则ros正常工作
【注意】roscore核心节点必须保持运行状态,否则其他所有的节点都不能工作
运行电机节点
另外再打开一个终端,roscore节点不要关闭。运行如下命令启动jetbot_motors节点
rosrun jetbot_ros jetbot_motors.py
再新建一个终端,输入rosnode list可以查看jetbot_motors节点是否启动。输入rostopic list可以查看jetbot_motor节点监听的话题
【注意】到2019/02/22为止, jotbot-ros只实现cmd_str方法,后续如果有其他更新,可以自行了解
cmd_str 通过发送字符串命令 (left/right/forward/backward/stop)控制jetbot运动。
测试电机命令
打开一个新的终端,运行如下测试命令可以控制jetbot运动 <source lang="c"> rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "forward" rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "backward" rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "left" rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "right" rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "stop"
使用OLED显示信息
新建一个终端运行OLED节点
rosrun jetbot_ros jetbot_oled.py
jetbot_oled 监听/jetbot_oled/user_text话题,接受字符信息并显示。运行如下命令显示“HELLO”字符 rostopic pub /jetbot_oled/user_text std_msgs/String --once "HELLO!"
使用键盘控制jetbot移动
新建一个终端运行teleop_key节点
rosrun jetbot_ros teleop_key.py
程序运行后通过键盘输入W、S、D、A四个按键控制jetbot前后左右移动
使用游戏摇杆控制jetbot移动
将游戏手柄的USB接收器插到jetbot 新建一个终端输入以下命令
ls /dev/input
显示如下:
其中的js0就是代表游戏摇杆手柄,输入如下命令测试设备是否正常工作
sudo jstest /dev/input/js0
遥控手柄按下不同的按键,对应的按键值会改变.
【注意】如果运行命令后提示jstest命令找不到则需要运行如下命令安装对应的库。
sudo apt-get install joystick
安装joy包,并启动joy节点。要获得通过ROS发布的摇杆数据,我们需要启动joy节点。
sudo apt-get install ros-melodic-joy rosrun joy joy_node
显示信息如下:
新建一个终端运行如下命令显示joy节点信息
rosrun echo joy
当按下游戏摇杆按下时,会输出类似如下的信息.
其中axes[ ]表示摇杆的数据,buttons[ ]表示按键的数据。
此时操作游戏手柄虽然可以显示ros发布的数据,但是要不能遥控jetbot。还需要运行teleop_joy节点,接收joy节点发布的话题信息,转换为/jetbot_motor/ cmd_str话题再发给jetbot_motors节点控制电机运动。新建一个终端运行如下命令启动终端teleop_joy节点。
rosrun jetbot_ros teleop_joy.py
安装游戏手柄的A键,然后控制上下左右方向键既可以控制jetbot移动,松开A键,jetbot则停止。
修改jetbot_ros/scripts/teleop_joy.py程序中 axes[ ]和 buttons[ ] 的值可以设置不同的按键控制。
使用摄像头实时监控
启动jetbot_camera节点,启动jetbot摄像头视频流
rosrun jetbot_ros jetbot_camera
将会发布图像格式为sensor_msgs::Image 的话题 jetbot_camera/raw
运行如下命令显示摄像头图像。
rqt_imge_view
会显示如下窗口,选择话题为/jetbot_camera/raw
注意:此命令需要在图形界面下运行。可以在电脑端通过虚拟机安装ubuntu系统并安装ROS.
Jetbot 在~/.bashrc 文件最后面添加下面两行语句
export ROS_HOSTNAME=jetbot.local export ROS_MASTER_URI=http://jetbot.local:11311
Ubuntu 系统在 ~/.bashrc 文件最后面添加下面两行语句
export ROS_HOSTNAME=ubuntu.local export ROS_MASTER_URI=http://jetbot.local:11311
这样jetbot 和ubuntu虚拟机就可以通过ros节点通讯了,这样就可以在电脑端通过ubuntu虚拟机运行rqt_imge_view命令查看jetbot摄像头的实时图像了。