从Dashing到Eloquent

从 ROS 2 Dashing 到 Eloquent 的迁移中,我们添加了一些稳定性改进,这里不会具体讨论。

新的包

Navigation2 现在包含一个新包 nav2_waypoint_follower。Waypoint 跟随者是一个行动服务器,它将接收一个要跟随的 waypoint 列表,并按顺序跟随它们。有一个参数 stop_on_failure,用于控制在单个 waypoint 失败时机器人是继续前往下一个 waypoint,还是向行动客户端返回失败。Waypoint 跟随者还是一个参考应用程序,演示了如何使用 Navigation2 行动服务器完成基本自主任务。

Navigation2现在支持用于控制和SLAM的新算法。Timed-Elastic Band (TEB)控制器已经实现,并可在此处找到: <https://github.com/rst-tu-dortmund/teb_local_planner>。它是自己的控制器插件,可用作DWB控制器的替代方案。Nav2还支持SLAM Toolbox作为ROS 2的默认SLAM实现,用以取代Cartographer的使用。

新插件

Eloquent在导航堆栈中引入了pluginlib插件。``nav2_core``定义了插件头接口,用于实现控制器、规划器、恢复器和目标检查器插件。所有算法(NavFn、DWB、恢复器)都作为插件接口进行了添加,并创建了用于服务器的通用包。``nav2_planner``是规划的动作服务器,托管了规划器的插件。``nav2_controller``是控制的动作服务器,托管了控制器的插件。``nav2_recovery``是恢复的动作服务器,托管了恢复器的插件。

新增了一些恢复插件,包括备份功能,如果无冲突的话,可以根据距离进行备份。此外,还新增了等待恢复功能,可以在再次尝试导航之前等待可配置的一段时间。该插件对于时间相关的障碍物或者暂停导航以使场景变得不太动态非常有帮助。

添加了许多新的行为树节点。这些行为树节点在行为树引擎中进行了硬编码。行为树cpp v3支持插件,并将在下一个版本中进行转换。