ROS2是一种使用节点间发布/订阅者消息的分布式体系结构。
ROS2在其消息传递层采用了一种不同的方法,现在采用了称为数据分布式服务()的行业标准。
但是,DDS是一种通信中间件,也支持发布者/订阅者。
所以,我们可以直接使用直接数字频率合成器,为什么要使用ROS2?
发布于 2019-03-17 06:57:33
生态系统
DDS是OMG提出的一种通信标准。它的目标市场更广泛,比如军事、空中交通管制、自动车辆、医疗器械..。提供企业和开源版本的供应商很少,但只有少数人或市场能够决定他们的未来工作或设计。
任何想要将DDS应用到他们的产品中的人都需要从头开始。
ROS2更像是一个生态系统。ROS2 - OSRF的领导者为那些想要创建他们的机器人应用程序的人提供了一个生态系统、文档和友好的框架。
任何人都可以将自己的想法提交给核心设计,也可以为社区做出自己的贡献。
更技术性
ROS与DDS的Pub/Sub模型差异
DDS
参与者、主题、发布服务器、订阅者、数据中心和数据写入器
是的,DDS有发行者和订阅者。此外,它还包括参与者、主题、发布者、订阅者、数据写入者和数据中心,它们被称为DDS数据共享空间中的一个实体。
每个实体拥有不同的QoS属性,并影响实体如何管理数据传递或数据生命周期。
参与者控制整个实体的创建、删除、分组。它有能力知道新实体的加入或离开。
不同的参与者由域ID (整数)标识。
主题就像拥有QoS信息的目标,数据写入器和数据器可以相互链接。
发布服务器和订阅服务器控制其拥有的数据存储器和数据写入器的数据传递和数据可用性。
Publisher只能有多个数据写入器,而订阅服务器只能有多个数据中心。
DataWriter是数据提供者,DataReader是数据使用者。他们需要对他们的目标主题拥有相同的QoS。
DDS主题命名:
取消其他发布/子模型的链接,它们不会大量使用斜杠/,相反,它们是面向对象的。
ROS2
命名空间和节点.
就像主题,但有命名空间。
ROS2高度使用命名空间和斜杠/。它有以/开头的命名空间。例如,/turtle/cmd_vel,turtle是命名空间,cmd_vel是它的基本名称。
简单地说是提供或使用数据的基本元素。
您可以检查ros2主题和服务名称的ROS2发布/子命名设计。
结论
ROS2更加注重机器人的应用设计,消除了合成复杂pub/sub应用的困难。
发布于 2018-07-05 16:04:03
在什么斯托克已经写过了上添加一点
ROS不仅仅是通信层。例如,它提供了
发布于 2018-07-05 10:08:29
实际上,ROS2是基于直接数字频率合成技术进行通信的。(https://github.com/ros2/ros2/wiki/DDS-and-ROS-middleware-implementations)
之所以使用ROS2,是因为它增加了一个抽象,从而使DDS更易于使用。DDS需要大量的设置和配置(分区、主题名称、发现模式、消息创建、.)这是在ROS2的RMW封装中完成的。此包还负责处理消息发布/接收(获取)时的错误。
您可以直接使用DDS (如果您正确配置您的发布服务器和订阅服务器,您也可以与ROS2发布服务器和订阅服务器通信),但是您必须创建消息(.idl),调用生成器来获取相应的结构和源文件,创建域,分配主题,配置数据作者/数据中心。(请看一些示例https://github.com/rticommunity/rticonnextdds-examples/tree/master/examples/listeners/c)
所以ROS2让你的生活更轻松了。另外,还有很多包可以在消息上面使用。
https://stackoverflow.com/questions/51187676
复制相似问题