背景:

ROS是在机器人领域大家常用的通信中间件。DDS是一个很古老的用在很多safe-critical领域的通信中间件(航天,汽车,战舰,金融等)。两者要解决的问题都是一样的:灵活,可靠的通信网络。并且两者都是在实际使用诞生的协议,所以都有很强的实用性。但两者有一些不同的价值观:

  1. ROS所在的机器人领域更加开放(基本都是开源软件),用户的参与度更高(大部分问题都是被社区人员回答)。但是在工业落地的应用相对于DDS少很多。
  2. DDS和ROS正好相反,基本所有问题都由开发商来回答,而且开源的代码很少。但是DDS的文档和案例库比ROS要强很多,而且通过很多落地项目的实践,验证了DDS的可靠性和实用性。

节点发现机制:

ROS需要一个中心节点ROS master来协调所有通信活动。而DDS完全摆脱了任何有集权作用的节点。自然DDS的容错能力更强。

组成:

  1. ROS中的node和DDS中的participent对应。ROS中一个进程只能有一个node,但是DDS中可以有多个participent。
  2. ROS和DDS中都有subscriber和publisher。ROS中的两者包含了具体的读写操作。但是DDS中的两者只是一个身份的标示。使用中还需要附带一个对应的DataReaders和DataWriters来处理具体怎么对不同的消息进行读写。DDS这样做的好处是可以来从不同的层级来设置各种属性。比如想要把某个特性(比如不需要正确性验证)应用到某个具体的消息传输上,可以对DataReaders进行修改。如果想要应用到所有Subscriber,就可以对subscriber进行修改。
  3. Topic的概念对ROS和DDS都相同。

QoS:

QoS是用来控制传输的行为的,比如:

  1. 在规定时间内没有发送成功就是放弃。
  2. 一定要阻塞到发送成功。
  3. 是否需要确认对方有收到消息。
  4. 是否需要错误验证等。

QoS在DDS中有很复杂的和灵活的设置方法。通过调整QoS系统,可以把整个系统从类UDP行为逐渐变成类TCP行为。而只是通过定义subscriber和publisher时几个有限的参数来控制QoS。这样做的好处是隐藏了很多普通用户不需要关心的复杂性。

效率上的比较:

ROS不用zero-copy的原因:ROS是基于TCP的,对于TCP的使用者可以一次性提供一大块需要传输的数据,然后由TCP来负责切分成小的package进行传输。在本地情况下(localhost),TCP自动的会把这一大块数据进行内存共享。所以在效率上,在本地环境下,通过TCP传输和zero-copy方式传输没有太大的效率差异。但是DDS是基于UDP,DDS会先把数据切成小块后,再给UDP进行传输,这样就和zero-copy的效率有很大的不同了。

另外使用ROS的时候,如果想要得到更快的大数据本地传输效率可以使用nodelets。nodelets把地址通过消息进行共享,是最快的共享方式。

服务和客户模式(Server/Client model):

目前DDS没有类似于ROS的Service功能

消息描述:

DDS使用的是.idl格式,ROS是自己定义的.msg格式。

参考:https://design.ros2.org/articles/ros_on_dds.html

【自动驾驶】5. ROS和DDS的区别总结相关推荐

  1. 【自动驾驶】12.百度Apollo对ROS的优化【详细干货】

    转载自 "Apollo智能驾驶" 公众号 和搜狐网 "百度开发者中心" : 原文链接 7月22日,百度自动驾驶事业部资深架构师.数据平台专家杨凡,百度自动驾驶资 ...

  2. 自动驾驶(六十五)---------ROS学习笔记(1)

    ROS是面向机器人的开源的元操作系统,它能够提供类似传统操作系统的诸多功能,如硬件抽象.底层设备控制.常用功能实现.进程间消息传递和程序包管理等.此外,它还提供相关工具和库,用于获取.编译.编辑代码以 ...

  3. 【自动驾驶】2.车载以太网 - SOME/IP简介

    车载以太网 - SOME/IP简介 SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是车载以太网通信引入的一个概念,位于OSI 7层模型的 ...

  4. 把地图中的道路以线条提取出来_入围 ICRA 2019 最佳论文:MIT利用粗粒度地图实现自动驾驶...

    MIT最新研究能够利用简单的GPS地图和视觉数据,模仿人类驾驶员的驾驶方式,将学到的知识应用于视障环境中的复杂计划路线,该论文入围ICRA2019最佳论文. 真正的人工智能不是只会机械处理数据,而是要 ...

  5. 自动驾驶感知——自动驾驶地图

    文章目录 1. 地图基础知识 1.1 地图的基本特性 1.2 地图的构成要素 1.3 地图的比例尺 2. 电子地图 2.1 电子地图的特点和优势 2.2 构建电子地图 2.3 存储和表达电子地图 2. ...

  6. 构建高效的整车系统级别评估平台,百度安全自动驾驶风险安全研究亮相NDSS2022AutoSec...

    4月24日在美国圣地亚哥召开的 Automotive and Autonomous Vehicle Security (AutoSec) Workshop 2022 会议上,百度安全对于自动驾驶风险安 ...

  7. 自动驾驶缺人才?听听David Silver怎么说!

    如今自动驾驶在全球范围内的发展势头愈发"凶猛",该领域人才也一度被视为"香饽饽". 即使在美国,自动驾驶工程师的起薪也已经突破了25万美元,我国'"开 ...

  8. 自动驾驶中间件之二:通信中间件,DDS与SOME/IP 谁主沉浮?

    本文是自动驾驶中间件科普系列第二篇,上一篇为自动驾驶中间件之一:AUTOSAR正在被"边缘化"? 随着传感器的数量越来越多,数据来源越来越多.规模也会越来越大,那这些多源异构数据如 ...

  9. 【自动驾驶】11.百度Apollo对ROS的优化

    更详细的介绍可以跳转到:[自动驾驶]百度Apollo对ROS的优化[详细干货] 自从百度All in人工智能之后,无人驾驶汽车平台Apollo就被推上了风口浪尖,甚至还登上了2018春晚的舞台.在这个 ...

最新文章

  1. Linq 等式运算符:SequenceEqual
  2. docker 配置阿里云镜像加速
  3. 实现单服务器响应多客户机,对等网与客户机/服务器网络
  4. 17、【 商品管理模块开发】——后台商品图片的springmvc和富文本上传以及ftp文件服务器的开发...
  5. python多线程 不在main_从python线程(不是main)启动pyQt线程有什么不...
  6. 蓝桥杯 ADV-148算法提高 排队打水问题(贪心)
  7. java计算机毕业设计网上书店进销存管理系统源程序+mysql+系统+lw文档+远程调试
  8. html设置桌面背景win7,怎么让电脑桌面背景动起来 win7设置动态背景桌面的方法...
  9. Carryon 数数字——小米 OJ 编程比赛 02 月常规赛(思维)
  10. 杭电计算机考研比率,杭州电子科技大学考研的难度大吗
  11. 请听一个故事------三个70多岁老人的创业故事(励志)
  12. 考研英语复试口语常见问题(上岸必备)
  13. 【canvas使用】
  14. JSP SSH校园兼职信息发布平台myeclipse开发mysql数据库MVC模式java编程计算机网页设计
  15. Java SPI机制详解
  16. Linux下CP命令的使用!
  17. 基于JAVA线上动漫周边商城计算机毕业设计源码+数据库+lw文档+系统+部署
  18. ABAP HASH TABLE 主键重复时
  19. c语言做土壤湿度传感器程序,单片机土壤湿度传感器设计 程序编译错误
  20. 提高沟通表达能力该看什么书?有哪些沟通书籍值得推荐?

热门文章

  1. Nashorn——在JDK 8中融合Java与JavaScript之力--转
  2. Zuul 2 : The Netflix Journey to Asynchronous, Non-Blocking Systems--转
  3. spring transaction源码分析--事务架构
  4. Http Message Converters with the Spring Framework--转载
  5. weblogic查看内存情况
  6. “解剖”HIGO徐易容:关于创业、后悔、喝酒和滑雪
  7. 从0到1走进 Kaggle
  8. WhatsApp CEO向FreeBSD捐赠一百万美金
  9. 深入理解分布式技术 - 理论基石 CAP
  10. 干货一:通过自定义PopupWindow实现QQ菜单选项功能