ROS 学习备忘录 - 02 - 通信编程中如何知道话题消息的数据类型
前言
在ros
节点编程中,有时需要利用到ros
内部提供的一些消息来做订阅和发布,那么如何知道这些消息具体的数据类型呢,百度当然是一种方法,但是治标不治本,下面是简单的通过ros
自带命令来查阅消息类型的方式:
精简命令
-
rosnode list
查看节点列表 -
rostopic list
查看话题列表 -
rosnode info xxx
查看节点信息 -
rostopic info xxx
查看话题信息 -
rosmsg show xxx
显示消息数据类型 -
rosservice info xxx
查看服务信息
授人以渔
基本思路是明确该消息是哪个节点发出的,根据节点按图索骥找到这个消息类型。以海龟仿真器为例,我们来查看海龟仿真节点中发布和订阅的消息具体的数据类型是什么,运行命令:
-
roscore
打开master
-
rosrun turtlesim turtlesim_node
打开海龟仿真器 -
rosnode list
有如下节点信息:
-
rosnode info /turtlesim
节点详细信息如下。这里节点内容主要有三大部分,发布publications
,订阅subscriptions
和服务services
,其中每一个发布和订阅都是一个话题名称,这里目前看不到具体的数据类型,但是能得知发布话题的名字,继续查看话题的具体信息。 -
rostopic info /turtle1/pose
以pose
话题为例,看到pose
话题的消息类型是turtlesim/Pose
,继续查看消息的内部结构。 -
rosmsg show turtlesim/Pose
,看到如下输出:其中pose
话题发布的消息类型叫pose
,隶属于turtlesim
,内部设有5
个变量,分别是位置x,y
,朝向theta
,线速度linear_velocity
和角速度angular_velocity
。到这里就一步步挖掘查到了这个话题的消息类型。
- 同样我们可以查看另一个订阅话题的消息类型,输入
rostopic info /turtle1/cmd_vel
得到如下信息,能看到海龟仿真器订阅了这个话题,继续查看该话题中Twist
的消息类型。
-
rosmsg show geometry_msgs/Twist
看到如下输出,明确了Twist
信息中的数据结构,具体不再赘述。 -
rosservice info /spawn
同样的,我们不仅可以查看话题的数据类型,也可以查看服务的数据类型,如这条命令会显示出生成新海龟服务的数据类型。
小结
- 找节点得到节点名,查看节点信息。
- 找话题或服务,得到话题和服务名,查看话题和服务信息得到消息名。
- 查看消息内部类型。