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通信机制概述相关推荐

  1. Chapter2 ROS通信机制----基础篇(Ⅰ)vs配置及通信基础

    目录 一.复习及launch 1.1 深入理解配置信息(非常重要) 1.2 launch文件演示 二.ROS通信机制-----基础 2.1 本节导论 2.2 话题通信 2.2.1 话题通信概述 2.2 ...

  2. 【ROS理论与实践-赵虚左老师】Chap2 ROS通信机制

    第二章 ROS通信机制 通信是ROS中的核心 Core 机器人是一种高度复杂的系统性实现,在机器人上可能集成各种传感器(雷达.摄像头.GPS-)以及运动控制实现,为了解耦合,在ROS中每一个功能点都是 ...

  3. ROS自主导航学习———ROS通信机制

    前言 前面ROS很多都忘记了 ,现在来重新回顾一下内容 ROS 中的基本通信机制主要有如下三种实现策略: 话题通信(发布订阅模式) 服务通信(请求响应模式) 参数服务器(参数共享模式) Action通 ...

  4. ROS 通信机制(已整理)

    文章目录 节点与节点管理器 ROS通信机制 1. 话题通信 1.1 基本话题通信 1.1.1 C++实现 发布方 demo01_pub.cpp 订阅方 demo01_sub.cpp 1.1.2 Pyt ...

  5. ROS通信机制——发布/订阅者模型

    目录 发布/订阅者模型 (一)发布者 (二)订阅者 (三)综合 参考资料 ROS (Robot Operating System),即机器人操作系统,是为了加快机器人的开发效率,提高机器人软件代码的复 ...

  6. Linux C编程--进程间通信(IPC)1--进程间通信机制概述

    linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它 ...

  7. ROS通信机制一---话题通信

    文章目录 总述 1. 话题通信模型 2. 话题通信基本实现示例 2.1 发布者 2.1.1 创建发布者topic_pub.cpp文件 2.1.2 修改CMakeLists.txt文件 2.1.3 编译 ...

  8. ROS通信机制--键盘控制乌龟运动线速度角速度XYZ值的解释

    目录 前言 案例实现 线速度角速度X.Y.Z值的取值和作用 (END) 前言 在学习ros之初,想必大家运行的第一个案例就是键盘控制乌龟运动.这是ros内置的小案例,采用的通信机制为话题通信.本文介绍 ...

  9. ROS入门跟着我就够了(二)上 ROS通信机制

    由于这一章东西比较多,我分了上下两篇,下部分可以在< ROS 入门跟着我就够了>专辑中查看 ROS 中的基本通信机制主要有如下三种实现策略: 话题通信(发布订阅模式)服务通信(请求响应模式 ...

最新文章

  1. 机器学习集成学习与模型融合!
  2. 为什么我可以在Java中抛出null? [重复]
  3. 白光驱动器替代指南(转)
  4. springmvc的初始化参数绑定
  5. Java核心类库篇4——集合
  6. Easy Math(2018 ACM-ICPC 徐州赛区网络赛 D)
  7. 1_文本处理与词嵌入
  8. 开启JAVA死锁之迷
  9. ACE6.3.3在Linux(CentOS7.0)下的安装和使用
  10. SM4-ECB加解密
  11. python大众点评霸王餐_如何抽中大众点评霸王餐?
  12. nexmo - 电话报警Alert
  13. C++实现随机点名器(支持文件读入、手动输入、不重复点名)
  14. HTTP的请求过程解析
  15. NSN 内部推荐 -- 不能从电子邮件地址认证身份和来源.
  16. 搁浅争议共同开发_搁浅!
  17. c连接mysql数据库字符串函数_在mysql数据库—— 字符串函数的运用
  18. 西邮计算机学院楚东方,西邮计算机系课堂教学质量监控办法.doc
  19. 通过J-Flash回读取芯片的固件程序
  20. 网络爬虫-----python爬取新浪新闻

热门文章

  1. 一键生成工资条,并根据不同部门/地区分类命名
  2. 金明的预算方案-题解
  3. 蓝桥杯--基础(二)
  4. Java开发环境的搭建
  5. Day7--复数和复变函数之复数运算基础
  6. Windows 10无法打开注册表 由于某个错误无法打开该密钥(详细信息:拒绝访问)且无法在注册表上设置新的所有者拒绝访问的解决方案
  7. 细说 Android Annotations 注解框架
  8. Word添加页眉的方法
  9. 如何删除(文件正在运行/已在其他应用中打开等)的文件
  10. 【转】谈谈如何做研究