一、硬件也要是节点
ROS 1 中的一些设计决策使得很难将硬件设备(例如传感器或执行器)本地集成到 ROS 图中。 master 是 ROS 图中的中心实体,需要在任何节点之前启动。此外,节点和主节点之间的通信是使用 XML-RPC 完成的,由于其递归无界性质,当在小型资源约束系统/微控制器上实现时,这会造成很大的依赖性。相反,通常使用一个驱动程序,它使用自定义协议在设备和计算机之间进行通信,并在计算机上公开一个 ROS 接口。
将来应该可以直接在设备嵌入式系统上实现 ROS 协议。然后,启用 ROS 的设备将能够自动发现其他节点并公开 ROS 接口(由发布者、服务和参数组成)。采用像 DDS 这样的行业标准以及中间件的去中心化特性是实现这一目标的重要部分。
这种方法的优点是双重的:
- 由于不再需要自定义驱动程序,因此减少了构建新系统的集成工作。
- 通过实现特定的基于 ROS 的接口,可以轻松替换特定类别的设备,而无需花费时间集成来自例如不同的供应商。
二、延迟决定流程布局以部署时间
在 ROS 1 中,节点通常使用 Node API 并实现自己的主要功能。只有少数包利用 Nodelet API 并将其组件编译到共享库中。开发人员必须在这两种不同的 API 之间进行选择,