睡前ROS学习之ROS 通信方式
ROS Message:
之前介绍了 ROS 节点之间的通信方式,其中一种就是Message机制它是一种基于发布/订阅的轻量级通信方式,消息是一种包含位域类型的简单数据结构,ROS提供标准的原始数据类型和原始数据类型的数组。ROS使用MD5校验方式来确认发布者和订阅者是否正在交换同样类型的数据。
和之前介绍的ROS节点一样,ROS也提供了一个内置的称为rosmsg的命令来获取ROS消息的信息,下面是常见的命令:
rosmsg show [message]显示消息的描述 |
ROS Topic:
ROS Topic 是一个用于ROS 节点交换消息的命名总线,Topic可以匿名地发送和订阅消息,这就意味着消息的产生和消费是解偶的,二者之间没有强行绑定的关系,ROS节点不在乎是谁在发布Topic,哪个节点在订阅Topic,它只关心topic的名字以及当前的消息类型时候和我要求的匹配。Topic和稍候介绍的Service的最大区别是它是单向的。
和之前介绍的ROS Message一样,ROS也提供了一个内置的称为rostopic的命令来获取ROS topic的信息,下面是常见的命令:
$rostopic bw /topic :用于显示指定topic所占用的带宽 |
ROS Service:
ROS Service 是基于请求/答复形式的交互形式,主要用于分布式系统中ROS服务是通过一对消息来定义的,其中一个用于定义请求数据类型,另一个用于定义答复数据类型,服务的定义一般位于一个包的srv目录的src文件内。在ROS 服务中一个节点作为ROS服务,ROS 客户端可以从这个服务中请求服务,等到服务完成后会发送结果到它的客户端上。
下面是用于ROS服务的命令:
$rosservice call /service args: 这个命令将会使用特定的参数调用服务 |