目录
ROS 1 - 节点 vs. 节点组
ROS 2 - 统一 API
编写组件
使用组件
实际应用
ROS 1 - 节点 vs. 节点组
在 ROS 1 中,您可以将代码编写为 ROS node 或 ROS nodelet 。ROS 1 节点被编译成可执行文件。另一方面,ROS 1 nodelet 被编译成共享库,然后由容器进程在运行时加载。
ROS 2 - 统一 API
在 ROS 2 中,推荐的编写代码方式类似于 nodelet - 我们称之为 Component
。这使得将常见概念添加到现有代码中变得容易,比如生命周期 https://design.ros2.org/articles/node_lifecycle.html 。在 ROS 1 中最大的缺点是有不同的 API,而在 ROS 2 中避免了这一点,因为两种方法使用相同的 API。
注意
仍然可以使用“编写自己的主程序”的节点样式,但对于常见情况,不推荐这样做。
通过将流程布局设为部署时的决策,用户可以选择:
在单独的进程中运行多个节点,具有进程/故障隔离的好处以及更容易调试单个节点
在单个进程中运行多个节点,具有较低的开销,并且可选择更高效的通信(参见进程内通信 https://docs.ros.org/en/jazzy/Tutorials/Demos/Intra-Process-Communication