上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2.3 ROS消息
ROS节点可以写入或读取各种类型的数据。这些不同类型的数据使用简化的消息描述语言(也称为ROS消息)进行描述。这些数据类型描述可用于以不同的目标语言为适当的消息类型生成源代码。
尽管ROS框架提供了大量已经实现的机器人专用消息,开发人员仍然可以在节点内定义自己的消息类型。
消息定义可以由两种类型组成:字段和常量。字段分为字段类型和字段名称,前者是传输消息的数据类型,而后者是它的名称。
以下是消息定义的一个示例:
这里,左边是字段类型,右边是字段名。字段类型就是数据类型,字段名可用于访问消息中的值。例如,我们可以使用msg.number从消息中访问数字值。
表1.1显示了读者可以在消息中使用的一些内置字段类型。
表1.1 内置字段类型
ROS提供了一组复杂且更结构化的消息文件,旨在满足特定应用程序的需求,例如交换常见几何信息(geometry_msgs)或传感器信息(sensor_msgs)。这些消息由不同的基本类型组成。一种特殊类型的ROS消息称为消息头。消息头可以携带时间、参考系(frame_id)以及序列号等信息。使用消息头,我们将得到编号的消息和哪个组件正在发送当前消息的清晰信息。消息头信息主要用于发送机器人关节变换等数据。以下是消息头的定义:
rosmsg命令工具可用于检查消息头和字段类型。以下命令有助于查看特定消息的消息头:
这将为读者提供与前面示例的消息头类似的输出。我们将在本章后面介绍rosmsg命令以及如何使用自定义消息。