1.任务需求

  创建一个节点,在其中实现一个订阅者和一个发布者,完成以下功能:

  • 发布者:发布海龟速度指令,让海龟做圆周运动;
  • 订阅者:订阅海龟的位置信息,并在终端中周期打印输出;

2.任务分析

  要发布海龟速度指令,我们得先知道海龟速度指令对应的话题名称和数据格式是什么,首先生成一只小海龟,并用键盘控制其运动。打开roscore
【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动-LMLPHP

  启动小海龟rosrun turtlesim turtlesim_node
【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动-LMLPHP

2.1发布方topic和msg

  查看当前有那些话题rostopic list
【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动-LMLPHP

  其中 cmd_vel 是速度指令话题,获取这个话题的消息类型rostopic type /turtle1/cmd_vel如下:
【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动-LMLPHP

  可以看到,发布速度信息的消息名称是 geometry_msgs/Twist,我们继续用指令rosmsg info geometry_msg/Twist查看这个消息的具体格式,分别由 xyz 方向上的线速度和 xyz 方向的角速度组成。
【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动-LMLPHP

2.2接收方topic和msg

  pose 是小海龟当前姿态话题,用rostopic type /turtle1/pose获取这个话题的消息类型为turtlesim/Pose如下:
【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动-LMLPHP

  同样查看该topic的消息类型rosmsg info turtlesim/Pose
【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动-LMLPHP

2.3目标明确!

  因此我们的目的便明确了:

  • 建立一个发布方节点,发布的话题名称是/turtle1/cmd_vel/turtle1/cmd_vel的消息格式是 geometry_msgs/Twist,具体的数值可以设置为 x 方向线速度为1,z 方向角速度为1;
  • 建立一个订阅方的节点,订阅的话题为/turtle1/pose/turtle1/pose的数据格式为turtlesim/Pose

3.创建ROS节点</

10-30 07:22