ROS(Robot operating system)是一个通用的机器人操作系统,自动驾驶是其中一个应用领域。ROS1已经比较古老了,自动驾驶公司中提到的ROS通常指ROS2,它采用的是DDS架构。我所在的公司虽然未直接使用ROS2,但是自研的自动驾驶系统采用的也是DDS架构,算是在抽象的ROS2架构之上研发。
DDS(data distribution service)是一种以数据为中心的分布式通信协议。DDS采用的通信方式是多对多的单向数据交互,通信模型为分布式结构,没有中心节点,任意两个节点之间可以相互通信。概括DDS的工作模式,Publisher将数据发布到某个Topic,Subscriber从某个Topic订阅到数据。Publisher和Subscriber可能存在于不同的节点中,一个节点失效不会导致另一个节点崩溃。
RTPS协议(real-time publish subscribe) 是DDS在网络传输层的数据通信商使用到的协议,用于发布者和订阅者之间通过 UDP 等不可靠传输进行通信。这个协议的主要特性是:
- 为实时应用程序配置的尽力而为和可靠的发布/订阅通信策略
- 即插即用连接,以便网络的其他成员自动发现新应用程序
- 模块化和可扩展性,支持网络中复杂和简单设备的持续增长
- 可配置的网络行为和兼容的传输层:为每个部署选择最佳协议和系统 I/O 通道组合
- 两个 API 层:一个专注于可用性的高级发布者/订阅者和一个提供对 RTPS 协议内部工作的细粒度访问的低级编写器-阅读器。
参考
https://www.zhihu.com/question/504713458
https://zhuanlan.zhihu.com/p/431734731
https://fiware-tutorials.letsfiware.jp/Fast-RTPS-Micro-RTPS/