ROS 学习备忘录 - 02 - 通信编程中如何知道话题消息的数据类型

前言

ros节点编程中,有时需要利用到ros内部提供的一些消息来做订阅和发布,那么如何知道这些消息具体的数据类型呢,百度当然是一种方法,但是治标不治本,下面是简单的通过ros自带命令来查阅消息类型的方式:

精简命令

  • rosnode list 查看节点列表
  • rostopic list 查看话题列表
  • rosnode info xxx 查看节点信息
  • rostopic info xxx 查看话题信息
  • rosmsg show xxx 显示消息数据类型
  • rosservice info xxx 查看服务信息

授人以渔

基本思路是明确该消息是哪个节点发出的,根据节点按图索骥找到这个消息类型。以海龟仿真器为例,我们来查看海龟仿真节点中发布和订阅的消息具体的数据类型是什么,运行命令:

  1. roscore 打开master

  2. rosrun turtlesim turtlesim_node 打开海龟仿真器

  3. rosnode list 有如下节点信息:

在这里插入图片描述

  1. rosnode info /turtlesim 节点详细信息如下。这里节点内容主要有三大部分,发布publications,订阅subscriptions和服务services,其中每一个发布和订阅都是一个话题名称,这里目前看不到具体的数据类型,但是能得知发布话题的名字,继续查看话题的具体信息。

    ROS 学习备忘录 - 02 - 通信编程中如何知道话题消息的数据类型_第1张图片

  2. rostopic info /turtle1/posepose话题为例,看到pose话题的消息类型是turtlesim/Pose,继续查看消息的内部结构。

    在这里插入图片描述

  3. rosmsg show turtlesim/Pose,看到如下输出:其中pose话题发布的消息类型叫pose,隶属于turtlesim,内部设有个变量,分别是位置x,y,朝向theta,线速度linear_velocity和角速度angular_velocity。到这里就一步步挖掘查到了这个话题的消息类型。

ROS 学习备忘录 - 02 - 通信编程中如何知道话题消息的数据类型_第2张图片

  1. 同样我们可以查看另一个订阅话题的消息类型,输入rostopic info /turtle1/cmd_vel得到如下信息,能看到海龟仿真器订阅了这个话题,继续查看该话题中Twist的消息类型。

在这里插入图片描述

  1. rosmsg show geometry_msgs/Twist 看到如下输出,明确了Twist信息中的数据结构,具体不再赘述。

    ROS 学习备忘录 - 02 - 通信编程中如何知道话题消息的数据类型_第3张图片

  2. rosservice info /spawn同样的,我们不仅可以查看话题的数据类型,也可以查看服务的数据类型,如这条命令会显示出生成新海龟服务的数据类型。

小结

  • 找节点得到节点名,查看节点信息。
  • 找话题或服务,得到话题和服务名,查看话题和服务信息得到消息名。
  • 查看消息内部类型。

你可能感兴趣的:(ROS,学习记录,ROS,ROS通信编程,ROS消息类型)