6th ROS通信机制概述

ROS通信是ROS的核心之一。

一、基本概念

  • 节点(Node)
    • 一个节点就表示一个进程
    • 多节点、端到端、分布式通信机制
  • 消息(Message)
    • 节点之间通过订阅和发布传递的数据
    • 可以使用ROS提供的消息类型,也可以使用 .msg 文件自定义消息类型
  • 话题(Topic)
    • 消息通过发布/订阅(Publish/Subscribe)方式传递
    • 发布者节点(Talker)针对一个给定的话题发布消息,订阅者节点(Listener)订阅某个话题及其特定数据
    • 话题通信是【异步通信】
    • 无反馈,有缓冲,弱实时,节点关系多对多,适于数据传输
  • 服务(Service)
    • 基于服务器/客服端(Sercer/Client)模型
    • 可以使用 ROS 提供的服务类型,也可以使用 .srv 文件自定义
    • 服务通信是【同步通信】
    • 有反馈,无缓冲,强实时,节点关系一对多,适于逻辑处理
  • 节点管理器(ROS Master)
    • 统筹管理所有节点,进行节点间的查找、连接等
    • 为系统提供参数服务器,管理全局参数
    • 节点管理器也体现了ROS的弊端:ROS Master 如果 broken down,整个系统将崩溃

二、通信原理

ROS可以形象的描述为一个工厂的运行机制,创建好一个工作空间(workspace)就像一个工厂,工厂里又有好多个生产车间,每个功能包(pkg)看作是一个生产车间,每个生产车间又有好多工人在配合,每个节点(node)看作是一个工人,节点是又是可执行程序的最小单位,工人们之间相互沟通通过消息(mesage)来完成。

ROS中的通信方式有四种,话题、服务、参数服务器、动作库。常用前三种。

2.1  话题通信

对于实时性、周期性的消息,使用topic来传输是最佳的选择。topic是一种点对点的单向通信方式,这里的“点”指的是node,也就是说node之间可以通过topic方式来传递信息。topic要经历下面几步的初始化过程:首先,publisher节点和subscriber节点都要到节点管理器进行注册,然后publisher会发布topic,subscriber在master的指挥下会订阅该topic,从而建立起sub-pub之间的通信。注意整个过程是单向的。

举个例子,有一个软件叫今日头条,你喜欢看汽车类的新闻,这个“汽车类的新闻”就是话题。今日头条软件就经常给你推送这个话题的内容,当你打开的时候就会看到,也就是“订阅”。

再举个例子,你喜欢听FM90.8安徽交通广播的《青春集结号》节目,电台那边就是发布者,你打开收音机调到这个频道就是

2.2   服务通信

service服务通讯机制是一种双向同步数据传输模式。基于客户端/服务器模型,两部分通信数据类型:一个用于请求,一个用于应答,类似web服务器。

举个例子,就像是你打10086客服电话查话费,打过去就是客户端发出请求,客服给你回复就是服务端产生响应。

 2.3 参数服务器

        在机器人系统中,参数传递十分重要,机器人工作时,我们有需要对机器人的参数(如传感器参数、算法的参数)进行设置。有些参数(如机器人的轮廓、传感器的高度)在机器人启动时就设定好就行了,有些参数则需要动态改变(特别是在调试的时候)。无论是传感器的设置,还是控制参数的调整,都需要留出方便的参数调试接口。ROS提供了参数服务器来满足这一需求,我们可以将参数设置在参数服务器,在需要用到参数的时候再从参数服务器中获取。使用参数服务器配置系统的参数,是全局可见的,方便我们检索和更改系统的配置状态。

        相当于把参数都放到一个容器中,需要的时候从中取。参数共享。就像共享单车,单车都是参数,需要的时候进行扫码使用。作为管理者,可能也会投放新的参数,或者删除一些旧的参数。

 

参考文章:

https://zhuanlan.zhihu.com/p/90425611?from_voters_page=true

https://www.pianshen.com/article/14831374014/

https://blog.csdn.net/sunlin972913894/article/details/103556936

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是刃小木啦~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值