为了快速浏览教程,先从ArbotiX虚拟器开始。具体代码看ros-by-example,主要讲述实现过程。

首先要启动一个虚拟的Turtlebot

$ roslaunch rbx1_bringup fake_turtlebot.launch

另一个终端,打开RViz可视化机器人运动

$ rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz

一、虚拟器上运行

1、直接发布命令

先来看下现有的话题

Ros by example1 控制底座

基控制器节点订阅/cmd_vel话题,类型是geometry_msgs/Twist

Ros by example1 控制底座

然后把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

Ros by example1 控制底座

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

 

相关文章: