ROS Message:
之前介绍了 ROS 节点之间的通信方式,其中一种就是Message机制它是一种基于发布/订阅的轻量级通信方式,消息是一种包含位域类型的简单数据结构,ROS提供标准的原始数据类型和原始数据类型的数组。ROS使用MD5校验方式来确认发布者和订阅者是否正在交换同样类型的数据。
和之前介绍的ROS节点一样,ROS也提供了一个内置的称为rosmsg的命令来获取ROS消息的信息,下面是常见的命令:

rosmsg show [message]显示消息的描述
rosmsg list 显示所有的消息
rosmsg md5 [message]:显示某个消息的md5sum
rosmsg package [package_name]: 显示所有在这个包里面的消息
rosmsg packages :列出包含消息的包

ROS Topic:

ROS Topic 是一个用于ROS 节点交换消息的命名总线,Topic可以匿名地发送和订阅消息,这就意味着消息的产生和消费是解偶的,二者之间没有强行绑定的关系,ROS节点不在乎是谁在发布Topic,哪个节点在订阅Topic,它只关心topic的名字以及当前的消息类型时候和我要求的匹配。Topic和稍候介绍的Service的最大区别是它是单向的。

和之前介绍的ROS Message一样,ROS也提供了一个内置的称为rostopic的命令来获取ROS topic的信息,下面是常见的命令:

$rostopic bw  /topic :用于显示指定topic所占用的带宽
$rostopic echo /topic :用于显示指定topic的内容
$rostopic find /message_type:这个命令用于指定给定消息类型的topic
$rostopic hz /topic :这个命令用于显示给定topic的发布速度
$rostopic info /topic :这个会打印所有激活的topic消息
$rostopic list: 这个会显示ROS系统中所有激活的topic
$rostopic pub /topic message_type args :这个命令可以用于向一个topic上发布一个指定类型的消息
$rostopic type /topic:这个会显示指定topic的消息类型

ROS Service:

ROS Service 是基于请求/答复形式的交互形式,主要用于分布式系统中ROS服务是通过一对消息来定义的,其中一个用于定义请求数据类型,另一个用于定义答复数据类型,服务的定义一般位于一个包的srv目录的src文件内。在ROS 服务中一个节点作为ROS服务,ROS 客户端可以从这个服务中请求服务,等到服务完成后会发送结果到它的客户端上。

下面是用于ROS服务的命令:

$rosservice	call /service args: 这个命令将会使用特定的参数调用服务
$rosservice find service_type : 这个命令将会查找指定服务类型的服务
$rosservice info /services : 这个将会打印关于指定服务的消息
$rosservice list : 这个将会列出系统上的所有服务
$rosservice type /service : 这个命令将会打印某个服务的服务类型
$rosservice uri /service : 这个命令将会打印服务的ROSRPC URI
Contents