为了快速浏览教程,先从ArbotiX虚拟器开始。具体代码看ros-by-example,主要讲述实现过程。
首先要启动一个虚拟的Turtlebot
$ roslaunch rbx1_bringup fake_turtlebot.launch
另一个终端,打开RViz可视化机器人运动
$ rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz
一、虚拟器上运行
1、直接发布命令
先来看下现有的话题
基控制器节点订阅/cmd_vel话题,类型是geometry_msgs/Twist
然后把Twist消息翻译成发动机信号,使轮子转动。二维平面差速驱动机器人只用到了线速度x和角速度z部分。
$ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.1, y:
0, z: 0}, angular: {x: 0, y: 0, z: -0.5}}'
想要机器人停下来,发布空消息即可
$ rostopic pub -1 /cmd_vel geometry_msgs/Twist '{}'
2、从ROS节点发布Twist消息
任务:定时的Twist命令让机器人向前移动1.0m,旋转180度,然后返回原位置。
在启动虚拟Turtlebot和RViz基础上,直接运行写好的节点
$ rosrun rbx1_nav timed_out_and_back.py
3、使用测程法前进
$ rosrun rbx1_nav odom_out_and_back.py
存储内部位置数据的消息类型是nav_msgs/Odometry
基框架为/odom,测量框架为/base_footprint即现实中的机器人。
tf库来监听框架/odom和框架/base_footprint之间的转换。
4、走正方形
$ rosrun rbx1_nav nav_square.py
二、实际Turtlebot运行
首先启动Turtlebot
$ roslaunch rbx1_bringup turtlebot_minimal_create.launch
其次,辅助脚本使在RViz中看到Turtlebot的组合测量框架(编码器+陀螺仪)。
$ roslaunch rbx1_bringup odom_ekf.launch
之后,运行RViz,并使用nav_ekf配置文件
$ rosrun rviz rviz -d `rospack find rbx1_nav`/nav_ekf.rviz
最后,执行命令节点
$ rosrun rbx1_nav timed_out_and_back.py
$ rosrun rbx1_nav odom_out_and_back.py
$ rosrun rbx1_nav nav_square.py