ROS和DDS的区别总结

本文对比了ROS和DDS两个通信中间件在机器人领域的应用。ROS更开放,社区活跃,但在工业落地应用较少;DDS则以强大的文档和案例库、出色的可靠性见长。DDS的节点发现机制无需中心节点,容错能力更强。ROS的node与DDS的participant对应,而DDS的subscriber和publisher只标识身份,DataReaders和DataWriters处理读写操作,提供更灵活的QoS设置。DDS基于UDP,而ROS基于TCP,导致效率差异。DDS的idl与ROS的msg格式不同,且DDS暂无ROS的Service功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

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,就可以对subscri
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值