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
6th ROS通信机制概述相关推荐
- Chapter2 ROS通信机制----基础篇(Ⅰ)vs配置及通信基础
目录 一.复习及launch 1.1 深入理解配置信息(非常重要) 1.2 launch文件演示 二.ROS通信机制-----基础 2.1 本节导论 2.2 话题通信 2.2.1 话题通信概述 2.2 ...
- 【ROS理论与实践-赵虚左老师】Chap2 ROS通信机制
第二章 ROS通信机制 通信是ROS中的核心 Core 机器人是一种高度复杂的系统性实现,在机器人上可能集成各种传感器(雷达.摄像头.GPS-)以及运动控制实现,为了解耦合,在ROS中每一个功能点都是 ...
- ROS自主导航学习———ROS通信机制
前言 前面ROS很多都忘记了 ,现在来重新回顾一下内容 ROS 中的基本通信机制主要有如下三种实现策略: 话题通信(发布订阅模式) 服务通信(请求响应模式) 参数服务器(参数共享模式) Action通 ...
- ROS 通信机制(已整理)
文章目录 节点与节点管理器 ROS通信机制 1. 话题通信 1.1 基本话题通信 1.1.1 C++实现 发布方 demo01_pub.cpp 订阅方 demo01_sub.cpp 1.1.2 Pyt ...
- ROS通信机制——发布/订阅者模型
目录 发布/订阅者模型 (一)发布者 (二)订阅者 (三)综合 参考资料 ROS (Robot Operating System),即机器人操作系统,是为了加快机器人的开发效率,提高机器人软件代码的复 ...
- Linux C编程--进程间通信(IPC)1--进程间通信机制概述
linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它 ...
- ROS通信机制一---话题通信
文章目录 总述 1. 话题通信模型 2. 话题通信基本实现示例 2.1 发布者 2.1.1 创建发布者topic_pub.cpp文件 2.1.2 修改CMakeLists.txt文件 2.1.3 编译 ...
- ROS通信机制--键盘控制乌龟运动线速度角速度XYZ值的解释
目录 前言 案例实现 线速度角速度X.Y.Z值的取值和作用 (END) 前言 在学习ros之初,想必大家运行的第一个案例就是键盘控制乌龟运动.这是ros内置的小案例,采用的通信机制为话题通信.本文介绍 ...
- ROS入门跟着我就够了(二)上 ROS通信机制
由于这一章东西比较多,我分了上下两篇,下部分可以在< ROS 入门跟着我就够了>专辑中查看 ROS 中的基本通信机制主要有如下三种实现策略: 话题通信(发布订阅模式)服务通信(请求响应模式 ...
最新文章
- 机器学习集成学习与模型融合!
- 为什么我可以在Java中抛出null? [重复]
- 白光驱动器替代指南(转)
- springmvc的初始化参数绑定
- Java核心类库篇4——集合
- Easy Math(2018 ACM-ICPC 徐州赛区网络赛 D)
- 1_文本处理与词嵌入
- 开启JAVA死锁之迷
- ACE6.3.3在Linux(CentOS7.0)下的安装和使用
- SM4-ECB加解密
- python大众点评霸王餐_如何抽中大众点评霸王餐?
- nexmo - 电话报警Alert
- C++实现随机点名器(支持文件读入、手动输入、不重复点名)
- HTTP的请求过程解析
- NSN 内部推荐 -- 不能从电子邮件地址认证身份和来源.
- 搁浅争议共同开发_搁浅!
- c连接mysql数据库字符串函数_在mysql数据库—— 字符串函数的运用
- 西邮计算机学院楚东方,西邮计算机系课堂教学质量监控办法.doc
- 通过J-Flash回读取芯片的固件程序
- 网络爬虫-----python爬取新浪新闻