本文主要带你了解DDS是什么、ROS2使用DDS所带来的优缺点,以及ROS2为了让DDS在机器人开发上变得简单做了哪些努力。
顾名思义
中间件就是介于某两个或者多个节点中间的组件。干嘛用的呢?
就是提供多个节点中间通信用的。
官方解释就比较玄乎了:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。
小鱼看完表示
话不多说先上图
ROS/ROS2中间件对比
此图来自论文Exploring the Performance of ROS2,小鱼已经收录到了公众号
ROS1的中间件是ROS组织自己基于TCP/UDP机制建立的,为了维护该部分ROS1组织花费了大量的精力,但是依然存在很多问题。
ROS2采用了第三方的DDS作为中间件,将DDS服务接口进行了一层抽象,保证了上层应用层调用接口的统一性。
基于DDS的互相发现协议,ROS2终于干掉了ROS1中的Master节点。
ROS2为每家DDS供应商都开发了对应的DDS_Interface即DDS接口层,然后通过DDS Abstract抽象层来统一DDS的API。
ROS2架构中的DDS部分
DDS的模型是非常容易理解,我们可以定义话题的数据结构(类似于ROS2中的接口类型)。下图中的例子:
DDS的参与者(Participant)通过发布和订阅主题数据进行通信。
DDS的应用层通过DDS进行数据订阅发布,DDS通过传输层进行数据的收发。
技术交流&&问题求助:
QQ交流群:139707339
版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划