ROS2入门教程-ROS2和不同的DDS程序
ROS2入门教程-ROS2和不同的DDS程序
说明:
- 介绍ROS2与不同的DDS程序的关系
关系:
- ROS2是建立在DDS程序的基础上的。
- DDS程序被用来发现节点,序列化和传递信息。
- 这篇文章详细介绍了DDS程序的开发动机。
- 总而言之,DDS程序提供了ROS系统所需的一些功能,比如分布式发现节点(并不是像ROS1那样中心化)
- 控制传输中的不同的"通信质量(Quality of Service)"选项
DDS:
- DDS是一个被很多公司实现的工业标准。
- 比如RTI的实现Connext和eProsima的实现Fast RTPS。
- ROS2 支持多种实现方式。因为没有必要“一个尺码的鞋给所有人穿”。用户有选择的自由。
- 在选择DDS实现的时候你要考虑很多方面:比如法律上你要考虑他们的协议,技术上要考虑是否支持跨平台。
- 不同的公司也许会为了适应不同的场景提出不止一种的DDS实现方式。
- 比如RTI为了不同的目标就有很多种他们的Connext的变种。
- 从小到微处理器到需要特殊资质的应用程序(我们支持标准的桌面版)
中间件:
- 为了能够在ROS2中使用一个DDS实现,需要一个ROS中间件(RMW软件包)
- 这个包需要利用DDS程序提供的API和工具实现ROS中间件的接口。
- 为了在ROS2中使用一个DDS实现,有大量的工作需要做。
- 但是为了防止ROS2的代码过于绑定某种DDS程序必须支持至少几种DDS程序。
- 因为用户可能会根据他们的项目需求选择不同的DDS程序。
支持的RMW实现
名称 | 协议 | RMW 实现 | 状态 |
eProsima Fast RTPS | Apache 2 | rmw_fastrtps_cpp | 完全支持. 默认的RMW. 已经打包在发布的文件中. |
RTI Connext | commercial, research | rmw_connext_cpp | 完全支持. 需要从源码编译支持. |
RTI Connext (dynamic implementation) | commercial, research | rmw_connext_dynamic_cpp | 停止支持. alpha 8.* 之前版本完全支持 |
PrismTech Opensplice | LGPL (only v6.4), commercial | rmw_opensplice_cpp | 停止支持. alpha 8.* 之前版本完全支持 |
OSRF FreeRTPS | Apache 2 | -- | 部分支持. 开发暂停. |
暂停支持意味着从 ROS2 alpha 8 版本以后新的添加进ROS2的功能还没有添加到这些中间件的实现中来。
这些中间件的实现也许以后会会有也许以后也不会有。
对于如何同时使用多个RMW实现的方法,可以看[[使用多个RMW实现]]页面
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号