zl程序教程

您现在的位置是:首页 >  其他

当前栏目

ROS机器人程序设计(原书第2版)2.2.2 主题

2023-03-14 10:19:47 时间

2.2.2 主题

主题是节点间用来传输数据的总线。通过主题进行消息路由不需要节点之间直接连接。这就意味着发布者和订阅者之间不需要知道彼此是否存在。同一个主题也可以有很多个订阅者。一个主题可以有多个订阅者也可以有多个发布者,但是你需要注意用不同的节点发布同样的主题,否则会产生冲突。

每个主题都是强类型的,发布到主题上的消息必须与主题的ROS消息类型相匹配,并且节点只能接收类型匹配的消息。节点要想订阅主题,就必须具有相同的消息类型。

ROS的主题可以使用TCP/IP和UDP传输。基于TCP传输称为TCPROS,它使用TCP/IP长连接。这是ROS默认的传输方式。

基于UDP传输称为UDPROS,它是一种低延迟高效率的传输方式,但可能产生数据丢失。所以它最适合于像远程操控的任务。

ROS有一个rostopic工具用于主题操作。它是一个命令行工具,允许我们获取主题的相关信息或直接在网络上发布数据。此工具的参数如下:

rostopic bw /topic 显示主题所使用的带宽。

rostopic echo /topic 将消息输出到屏幕。

rostopic find message_type 按照类型查找主题。

rostopic hz /topic 显示主题的发布频率。

rostopic info /topic 输出活动主题、发布的主题、主题订阅者和服务的信息。

rostopic list 输出活动主题的列表。

rostopic pub /topic type args 将数据发布到主题。它允许我们直接从命令行中对任意主题创建和发布数据。

rostopic type /topic 输出主题的类型,或者说主题中发布的消息类型。

我们会在后面的章节中学习如何使用这些命令。