ROS2 组件
ROS2 组件是什么
在 ROS1 中,我们可以把代码写成一个 node(节点)或者一个 nodelet。ROS1 的 node 会被编译成可执行文件,而 nodelets 会被编译成库之后在运行时被一个容器加载。
在 ROS2 里,我们建议使用一种和 nodelet 类似的方式编程,我们把这种方式命名为——组件(component)。这种方法可以使一些通用的概念更加容易地被加入到代码中,例如“生命周期”(life cycle)。在 ROS2 中使用了统一的 API,组件编程方式可以避免使用不同 API 造成的缺陷。
注意:现在还是可以自己给节点写 main 函数的,但是并不推荐这么做。
通过使这个过程变成“运行时决定”,码农们有了以下两种选择:
- 让不同的节点跑在不同的进程中,这样可以使 运行/错误 分离,同时对单个节点的 debug 也更容易。
- 在一个进程里跑多个节点,这样开销更小,通信效率更高。
另外,ros2 launch 可以通过特殊的加载动作自动地实现这些操作。