ROS中用Twist消息控制机器人
INSTALLING THE ROS-BY-EXAMPLE CODE是书中第五章的内容,如果我们按照上一篇教程执行过了,就可以直接进入第五章,安装一个叫rbx1的包。这个包里面包括了本书中用到的所有例子的源码,包括路径规划,视觉,语音识别等功能。这本书基本就围绕这个包来学习ROS的使用方法。
- 基本包的功能介绍
- 从终端发布Twist消息控制机器人
- 从节点发布Twist消息控制机器人
- 下一步
1.基本包的功能介绍
ROS Base Controller是ROS中的基本控制节点,其中包含基本PID算法来控制电机运动。它主要任务是监听终端中或其他节点发出的以/cmd_vel为topic的控制指令(Topic是ROS中的一个基本概念,不同的节点之间通过发布和订阅相同Topic的消息来通信),然后发布/odom topic的odometry 消息(里程,指直接获得的机器人走过的距离,通常由编码器数据计算得到或结合惯导经EKF得到),同时发布/odom坐标系和机体坐标系之间的转换(如果odom数据由EKF得到的话,这个工作由 robot_pose_ekf 节点完成).
move_base pacakge 可以让机器人移动至我们指定的目标地点,其中包含避障,路径规划等功能。
gmapping package :SLAM,用激光雷达或Kinect构建实时地图
amcl package : 机器人利用SLAM或odometry数据实时定位
下面是整个流程图:
2.从终端发布Twist消息控制机器人
其实这个Twist消息我们上一次已经用过了,它的Topic是/cmd_vel,base controler订阅Twist消息来控制电机。
在终端中执行以下指令查看Twist消息的具体内容:
rosmsg show geometry_msgs/Twist
一切正常的话,终端会输出以下信息。
其中有linear和angular两个子消息,可以唯一确定机器人的运动状态。
首先roscore,然后启动机器人和仿真器:
roslaunch rbx1_bringup fake_turtlebot.launch