ROS 兼容性节点

ROS 兼容性节点 是一个接口,允许软件包与 ROS 1 和 ROS 2 无缝使用。根据环境变量ROS_VERSION,相同的 API 将调用 ROS 1 或 ROS 2 函数。它通过创建继承CompatibleNode创建类。


ROS 参数

默认情况下,在 ROS 2 中设置或访问参数之前需要声明参数。ROS 1 中并非如此。为了保持 ROS 1 和 ROS 2 模式以相似的方式工作,在 ROS 2 的CompatibleNode版本中将参数 allow_undeclared_parameters 设置为True,允许使用参数 TrueCompatibleNode 而无需事先声明。


服务

在 ROS 2 中,服务可以异步调用。ROS 1 中并非如此。因此,ROS 2 版本的call_service()方法在异步调用后会等待服务器的响应,以模拟 ROS 1 的同步行为。

笔记

在等待响应时,ROS 2 的call_service()方法会旋转节点。如果另一个线程并行旋转同一节点,这可能会导致问题(错误或死锁)。