匿名
未登录
登录
丢石头百科
搜索
查看“JetBot AI Kit 教程八、ROS”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
JetBot AI Kit 教程八、ROS
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==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 |JetBot AI Kit WIKI 主页]] ==1. 前言== 如果你从来没有接触过ROS系统,请先参考ROS官方教程熟悉ROS系统,了解各种ROS概念,然后再根据本教程通过ROS操作JetBot小车 ==2. 前期准备== 使用前需要先安装系统,参考: *[[JetBot AI Kit 教程二、安装镜像]] ==3. 安装melodic版本ROS== Jetson Nano提供的系统镜像是基于18.04版本Ubuntu系统,支持直接用apt安装ROS.使用下面的指令,按顺序安装,注意安装过程中是否有报错。 <syntaxhighlight 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' </syntaxhighlight> 添加i2c到user用户组 <syntaxhighlight lang="c"> sudo usermod -aG i2c $USER </syntaxhighlight> ==4. 创建catkin工作空间== 关闭当前终端,重新打开一个新的终端。确认ROS是否安装成功 <syntaxhighlight lang="c"> $ echo $ROS_PACKAGE_PATH /home/nvidia/workspace/catkin_ws/src:/opt/ros/melodic/share </syntaxhighlight> 创建catkin工作空间保存我们的ROS程序包 <syntaxhighlight 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' </syntaxhighlight> ==5. 编译安装jetson-inference== <syntaxhighlight 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 </syntaxhighlight> 【注意】由于Jetson nano服务器均在国外,部分资源需要能够上外网才能可以获取,否则可能安装失败。另外需要安装一下库 <syntaxhighlight lang="c"> sudo apt install libqt4-dev libglew-dev </syntaxhighlight> ==6. 编译安装ros_deep_learning== <syntaxhighlight 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 </syntaxhighlight> ==7. 编译安装jetbot_ros== <syntaxhighlight 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 </syntaxhighlight> ==8. 测试jetbot ROS== 打开一个新终端,然后运行ros核心节点 roscore 输出信息如下,则ros正常工作 :[[File:JetBot_AI_Kit_Manual_35.jpg|600px]] 【注意】roscore核心节点必须保持运行状态,否则其他所有的节点都不能工作 ===运行电机节点=== 另外再打开一个终端,roscore节点不要关闭。运行如下命令启动jetbot_motors节点 rosrun jetbot_ros jetbot_motors.py 再新建一个终端,输入rosnode list可以查看jetbot_motors节点是否启动。输入rostopic list可以查看jetbot_motor节点监听的话题 :[[File:JetBot_AI_Kit_Manual_36.jpg|400px]] 【注意】到2019/02/22为止, jotbot-ros只实现cmd_str方法,后续如果有其他更新,可以自行了解 cmd_str 通过发送字符串命令 (left/right/forward/backward/stop)控制jetbot运动。 ===测试电机命令=== 打开一个新的终端,运行如下测试命令可以控制jetbot运动 <syntaxhighlight 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" </syntaxhighlight> ===使用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 显示如下: :[[File:JetBot_AI_Kit_Manual_37.jpg|400px]] 其中的js0就是代表游戏摇杆手柄,输入如下命令测试设备是否正常工作 sudo jstest /dev/input/js0 :[[File:JetBot_AI_Kit_Manual_38.jpg|800px]] 遥控手柄按下不同的按键,对应的按键值会改变. 【注意】如果运行命令后提示jstest命令找不到则需要运行如下命令安装对应的库。 sudo apt-get install joystick 安装joy包,并启动joy节点。要获得通过ROS发布的摇杆数据,我们需要启动joy节点。 sudo apt-get install ros-melodic-joy rosrun joy joy_node 显示信息如下: :[[File:JetBot_AI_Kit_Manual_39.jpg|700px]] 新建一个终端运行如下命令显示joy节点信息 rosrun echo joy 当按下游戏摇杆按下时,会输出类似如下的信息. :[[File:JetBot_AI_Kit_Manual_40.jpg|700px]] 其中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[ ] 的值可以设置不同的按键控制。 :[[File:JetBot_AI_Kit_Manual_41.jpg|700px]] ===使用摄像头实时监控=== 启动jetbot_camera节点,启动jetbot摄像头视频流 rosrun jetbot_ros jetbot_camera 将会发布图像格式为sensor_msgs::Image 的话题 jetbot_camera/raw 运行如下命令显示摄像头图像。 rqt_imge_view 会显示如下窗口,选择话题为/jetbot_camera/raw :[[File:JetBot_AI_Kit_Manual_42.jpg|700px]] 注意:此命令需要在图形界面下运行。可以在电脑端通过虚拟机安装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摄像头的实时图像了。
返回至
JetBot AI Kit 教程八、ROS
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志