文章目录

  • 一、ROS中的几种通信机制
  • 二、不同通信机制的特点
    • 2.1 话题消息通信
    • 2.2 服务消息通信
    • 2.3 动作消息通信
  • 3. 同步和异步

一、ROS中的几种通信机制

在ROS中,不同的进程可以可以被视为不同的节点,节点之间的数据传输需要通过消息通信来完成,常见的消息通信类型有话题、服务、动作、参数等,我们可以用下面这张表来说明。

二、不同通信机制的特点

我们从上面可以简单看出不同通信机制的特点:其中单向消息发送/接收方式的话题(topic);双向消息请求/响应方式的服务(service);双向消息目标(goal)/结果(result)/反馈(feedback)方式的动作(action)。另外,节点中使用的参数可以从外部进行修改。这在大的框架中也可以被看作消息通信。
以下我们用几张图来描述:

2.1 话题消息通信

话题消息通信是指发送信息的发布者和接收信息的订阅者以话题消息的形式发送和接收信息。希望接收话题的订阅者节点接收的是与在主节点中注册的话题名称对应的发布者节点的信息。基于这个信息,订阅者节点直接连接到发布者节点来发送和接
收消息。

2.2 服务消息通信

服务消息通信是指请求服务的服务客户端与负责服务响应的服务服务器之间的同步双向服务消息通信。一个服务被分成服务服务器和服务客户端,其中服务服务器只在有请求(request)的时候才响应(response),而服务客户端会在发送请求后接收响应。与话题不同,服务是一次性消息通信。因此,当服务的请求和响应完成时,两个连接的节点将被断开。该服务通常被用作请求机器人执行特定操作时使用的命令,或者用于根据特定条件需要产生事件的节点。由于它是一次性的通信方式,又因为它在网络上的负载很小,所以它也被用作代替话题的手段,因此是一种非常有用的通信手段。

2.3 动作消息通信

动作 消息通信是在如下情况使用的消息通信方式:服务器收到请求后直到响应所需的时间较长,且需要中途反馈值。这与服务非常相似,服务具有与请求和响应分别对应的目标(goal)和结果(result)。除此之外动作中还多了反馈(feedback)。收到请
求后需要很长时间才能响应,又需要中间值时,使用这个反馈发送相关的数据。消息传输方案本身与异步方式的话题(topic)相同。反馈在动作客户端(action client)和动作服务器(action server)之间执行异步双向消息通信,其中动作客户端设置动作目标(goal),而动作服务器根据目标执行指定的工作,并将动作反馈和动作结果发送给动作客户端。

3. 同步和异步

同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)。同步,就是调用某个东西是,调用方得等待这个调用返回结果才能继续往后执行。异步,和同步相反 调用方不会理解得到结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理这个调用。

我们可以使用以下的表格为例来总结出ROS中3种典型通信机制的同步和异步方式:

最后,我们来举一个通俗易懂的例子:
你去商城买东西,看上了一款手机,你和店家说你想买这款手机,他就去仓库拿货,你得在店里等着,不能离开,这叫做同步。现在你直接去京东下单,下单完成后你就可用做其他时间(追剧、打王者、lol)等货到了去签收就ok了.这就叫异步。

我记得《忠犬八公》这部电影,讲的是一只名叫“八公”的秋田犬,每天接送教授上下班。不幸的是有一天教授在上课的时候突发心脏病辞世,再也没有回到车站,然而八公在之后的9年时间里依然每天按时在车站等待,直到最后死去。这段感人的人狗情其实就解释了同步通信的本质。

理解同步和异步通信:以ROS的3中典型通信机制为例相关推荐

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

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

  2. 【ROS入门-4】嘴对嘴讲解ROS的核心概念——ROS话题通信机制

    文章目录 前言 ROS系列文章 ROS的通信机制 话题(topic) 发布者 订阅者 消息(Message) 用C++来写话题通信的代码 发布者 订阅者 使用rqt_graph 源码附录 引用说明 参 ...

  3. 异步通信还要设置波特率?_深入理解同步/异步通信

    异步通信还要设置波特率?_深入理解同步/异步通信   上一篇我们解释了串口通信中同步通信和异步通信的区别,详见上篇链接.其中我们分析同步/异步通信最重要的不同点就是是否同步时钟,可能就有很多小伙伴不理 ...

  4. 理解同步异步、阻塞与非阻塞

    "阻塞"与"非阻塞"与"同步"与"异步"不能简单的从字面理解,提供一个从分布式系统角度的回答. 1.同步与异步 同步和异 ...

  5. socket同步和异步通信区别_程序员必知必会,同步通信与异步通信,你了解多少...

    我们常常说,分布式系统需要进行解耦操作,解耦操作最简单的就是把现有的系统拆出几个独立的模块,并把这些模块在不同的机器部署起来.虽然说,分布式系统更加健壮,但往往也引入其他问题,其中,最为麻烦的问题之一 ...

  6. 同步和异步通信的异同

    什么 是串口呢 ? 串行通信进行数据传送时是将要传送的数据按二进制位,依据一定的顺序逐位发送到接收方.串口通信分为同步通信和异步通信两部分,两者的主要区别是是否需要时钟. 同步通信 同步通信,顾名思义 ...

  7. [转] JavaScript:彻底理解同步、异步和事件循环(Event Loop)

    一. 单线程 我们常说"JavaScript是单线程的". 所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个.不妨叫它主线程. 但是实际上还存在其他 ...

  8. JavaScript 运行机制详解(理解同步、异步和事件循环)

    1.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. Java ...

  9. 【好记性不如烂笔头】IO之深入理解同步、异步、阻塞、非阻塞

    IO之深入理解同步.异步.阻塞.非阻塞 一.什么是同步? 二.什么是异步? 什么是阻塞? 什么是非阻塞? 总结 一.什么是同步? 先简单画一个图再解释: 我打算做番茄炒蛋,于是我去街上买点西红柿买点鸡 ...

最新文章

  1. 如何改android device monitor文件的权限
  2. oracle 概要文件不存在,oracle 概要文件 - kecy1217的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  3. SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean入参的对象里面的属性名是一样的||员工的增删改查案例
  4. 传统公司部署OpenStack(t版)简易介绍(一)——环境部署
  5. 通过一个最简单的例子,理解Angular rxjs里的Observable对象的pipe方法
  6. MFC 操作配置文件INI的方法
  7. Kafka笔记-kafka外网搭建及构建生产者
  8. php magento 开发,php – Magento:如何将配置更改从开发环境迁移到生产环境?
  9. [原创]java WEB学习笔记107:Spring学习---AOP切面的优先级,重用切点表达式
  10. 海康威视相机SDK开发(多个相机)
  11. CCF NOI1048 检测矩阵
  12. android 修复工具,安卓手机修复工具下载 牛学长安卓手机修复工具(安卓手机修复助手) v2.4.0.15 官方免费安装版 下载-脚本之家...
  13. 计算机接口学平时作业,西电《计算机接口与通信技术》平时作业[教学作业]
  14. web前端-----细线表格(table)的制作
  15. nuscenes instance 调研笔记
  16. android开发照相机啊,Android照相机开发详解(一)
  17. Android APP开发入门
  18. ABP官方文档(十三)【对象之间的映射】
  19. 关于hive统计周wau、保留率需求的几种思路
  20. 数据人该知道的埋点体系(二)

热门文章

  1. 最新自用pdf免费在线去水印全套方案
  2. mysql统计没有参加考试的学生名单_sQL SERVER,帮我编写一个存储过程,查询没有参加考试的学生名单,要求显示姓名、学号,具体请补充:...
  3. Terramaster铁威马 F4-422真机实测预告 3000元级万兆4盘位NAS
  4. 【2018十大VR眼镜排行榜】VR眼镜有哪些品牌。哪个牌子的VR眼镜比较好,性价比高,适合玩VR游戏的
  5. 程序员常用的一些快捷键(持续更新)
  6. 计算机视觉知识表征,计算机视觉基础 - 边缘和轮廓检测
  7. outlook2013配置
  8. python远程监控服务器多个日志_flume远程监控一个文件
  9. Python每日一练-----难题唯唯诺诺,易题重拳出击?(回文数)
  10. 微信小程序调用扫一扫