消息模型理解
业务与数据¶
在现有的模型中,我们通常都是Node与Node节点进行数据的传递。
在一些应用场景中,例如机械臂抓取过程中,摄像头对应的节点会将数据发送给机械臂,机械臂根据数据来实现逻辑。
这里的数据是需要有一定的数据规范格式的,例如这种情况下数据应该是图片数据。
例如无人驾驶过程中,激光雷达给汽车控制中心发送数据,这里的数据也是需要一定的规范的,这种情况下的数据应该是描述和障碍物的距离和位置情况的。
在ROS中对于数据的类型都是有定义规范的,系统也通过了很多数据类型供我们使用。
查询所有的消息类型¶
1 |
|
Tip
可以查询出当前支持的所有消息类型。例如我们用到过的std_msgs/String
和geometry_msgs/Twist
查询消息类型的数据结构¶
我们还可以对一个消息的数据结构进行查询。
1 |
|
Tip
结果显示为string data
,说明了std_msgs/String
这种消息类型的数据,内部包含了一个叫做data
类型为string
的数据。
我们也可以看看geometry_msgs/Twist
包含了什么数据
1 |
|
结果显示为:
1 2 3 4 5 6 7 8 |
|
Tip
geometry_msgs/Twist
包含了 linear
和angular
两个数据。
linear
的数据类型为geometry_msgs/Vector3
。
angular
的数据类型为geometry_msgs/Vector3
。
我们发现在linear
下面的x,y,z
是有缩进的,这个缩进表示的是,geometry_msgs/Vector3
这种类型的数据下面包含了三个数据x
,y
,z
,他们的类型都是float64
。
发散与探讨¶
我们在前面可以发现,ros系统还是提供了大量的数据类型供我们使用。但是数据类型再多,很有可能也满足不了我的实际业务场景,这个时候,我们就需要定制自己的数据类型了。
后面我们会着重讲到如何是定制自己的数据类型。