ROS创建节点发布命令使得小海龟做圆周运动
1.任务需求
创建一个节点,在其中实现一个订阅者和一个发布者,完成以下功能:
- 发布者:发布海龟速度指令,让海龟做圆周运动;
- 订阅者:订阅海龟的位置信息,并在终端中周期打印输出;
2.任务分析
要发布海龟速度指令,我们得先知道海龟速度指令对应的话题名称和数据格式是什么,首先生成一只小海龟,并用键盘控制其运动。打开roscore
:
启动小海龟rosrun turtlesim turtlesim_node
:
2.1发布方topic和msg
查看当前有那些话题rostopic list
:
其中 cmd_vel
是速度指令话题,获取这个话题的消息类型rostopic type /turtle1/cmd_vel
如下:
可以看到,发布速度信息的消息名称是 geometry_msgs/Twist
,我们继续用指令rosmsg info geometry_msg/Twist
查看这个消息的具体格式,分别由 xyz 方向上的线速度和 xyz 方向的角速度组成。
2.2接收方topic和msg
pose
是小海龟当前姿态话题,用rostopic type /turtle1/pose
获取这个话题的消息类型为turtlesim/Pose
如下:
同样查看该topic的消息类型rosmsg info turtlesim/Pose
:
2.3目标明确!
因此我们的目的便明确了:
- 建立一个发布方节点,发布的话题名称是
/turtle1/cmd_vel
,/turtle1/cmd_vel
的消息格式是geometry_msgs/Twist
,具体的数值可以设置为 x 方向线速度为1,z 方向角速度为1; - 建立一个订阅方的节点,订阅的话题为
/turtle1/pose
,/turtle1/pose
的数据格式为turtlesim/Pose