ROS 到 ROS 2 导航

move_base 已经拆分为多个组件。与单个的完整状态机不同,导航2利用动作服务器和ROS 2的低延迟、可靠通信来分离概念。行为树用于编排这些任务。这使得Navigation2能够通过在行为树XML文件中重新排列任务来具有高度可配置的导航行为,而无需进行编程。

在顶层,nav2_bt_navigator 替代了 move_base,使用基于树的动作模型完成导航任务的 Action 接口。它使用 行为树 来实现更复杂的状态机,并通过添加其他 Action 服务器 来添加行为。这些行为树是可配置的 XML,我们提供了一些起始示例。

规划、行为、平滑器和控制器服务器也是动作服务器,BT导航器可以调用它们进行计算。这4个服务器都可以承载多个算法的插件,并可以通过导航行为树对特定行为进行单独调用。BT导航器通过它们的动作服务器调用这些服务器以计算结果或完成任务。状态由BT导航器行为树维护。

所有这些改变使得在启动/运行时能够用实现相同接口的任何其他算法替换这些节点。有关更多详细信息,请参阅每个软件包的 README.md。

Move Base -> Navigation2 概述

注意:nav2_simple_navigator 不再存在,已被 nav2_bt_navigator 替代。

总结:

迁移的软件包:

  • amcl: 迁移到 nav2_amcl

  • map_server: 迁移到 nav2_map_server

  • nav2_planner: 取代 global_planner,承载 N 个规划器插件

  • nav2_controller: 替代 local_planner,托管“N”个控制器插件

  • Navfn: 迁移到 nav2_navfn_planner

  • DWB: 替代 DWA,并在 nav2_dwb_controller metapackage 下迁移到 ROS 2

  • nav_core:已作为nav2_core进行移植,并更新了接口

  • costmap_2d: 迁移到 nav2_costmap_2d

新的软件包:

  • nav2_bt_navigator: 替代“move_base”状态机

  • nav2_lifecycle_manager:处理服务器程序的生命周期

  • nav2_waypoint_follower: 可以接收多个路径点以执行复杂任务

  • nav2_system_tests:一组用于CI的集成测试和基本仿真教程

  • nav2_rviz_plugins: 一个用于控制Navigation2服务器的rviz插件,可以进行命令、取消和导航等操作。

  • navigation2_behavior_trees:用于调用ROS动作服务器的行为树库的包装器

等等其他功能。