目录
前言
在学习ros之初,想必大家运行的第一个案例就是键盘控制乌龟运动。这是ros内置的小案例,采用的通信机制为话题通信。本文介绍键盘控制时发布的消息里包含线速度和角速度的X、Y、Z值的取值和作用。
案例实现
1、打开三个终端,依次属于以下命令:
- roscore
- rosrun turtlesim turtlesim_node //打开乌龟运动显示窗口
- rosrun turtlesim turtle_teleop_key //键盘控制
注意:光标选中rosrun turtlesim turtle_teleop_key运行窗口,使用按键上、下、左、右控制运动。不选中此窗口控制无效。
2、新开一个终端,输入命令rqt_graph,查看此案例的节点拓扑图:
3、上一个步骤我们得知键盘控制乌龟运动的话题名为/turtle1/cmd_vel,新开一个终端输入rostopic type /turtle1/cmd_vel 查看此话题的消息名,打印出消息名为geometry_msgs/Twist:
4、新开一个终端输入rosmsg info geometry_msgs/Twist,查看消息内容:
线速度角速度X、Y、Z值的取值和作用
根据上述步骤我们最终拿到了消息内容,消息内容中可以看出有linear和angular。 linear为线速度,angular为角速度。
- 线速度
- 物理意义:描述质点圆周运动快慢的物理量
- 定义:质点做圆周运动通过的弧长和所用时间的比值为线速度的大小。
- 公式:
- 单位:m/s
- 角速度
- 物理意义:描述质点绕圆心转动快慢的物理量
- 定义:质点所在的半径转过的角度和所用的时间 的比值叫做角速度。
- 公式:
- 单位: 弧度/秒 rad/s
- 线速度和角速度的关系(r为半径)
geometry_msgs/Vector3 linear
float64 x //直行或倒车,直行为正数,倒车为负数,单位为m/s
float64 y //左右横移,例如麦克纳姆轮小车支持左右横移。此案例中乌龟不能左右横移,所以不用输入此值。
float64 z //三维空间下的上下移动,例如无人机的起飞和降落。此案例中乌龟在二维中运动,所以不用输入此值
geometry_msgs/Vector3 angular
float64 x //三维坐标下沿着X轴旋转(如图飞机左右翻转) ,此案例中乌龟不能翻转,所以不用输入此值
float64 y //三维坐标下沿着Y轴旋转(如图飞机前后翻转) ,此案例中乌龟不能翻转,所以不用输入此值
float64 z //三维坐标下沿着Z轴旋转(如图原地旋转) ,此案例中乌龟可以原地旋转。左旋转为正数,右旋转为负数。
新开一个终端输入rostopic echo /turtle1/cmd_vel 命令,在键盘控制窗口中控制乌龟左右前后运动,查看此窗口消息内容的变化: