Navigation 2 概述

Navigation 2 项目是 ROS Navigation Stack 的精神继承者。该项目寻求找到一种安全的方法,使机器人从 A 点移动到 B 点。项目内容包括动态路径规划,计算电机速度,避障和恢复等。

Navigation 2 使用行为树来调用模块化服务器以完成一个 Action。Action 可以是计算路径,控制量,恢复或任何其它与导航相关的 Action。这些节点都是通过 ROS Action 服务器与行为树(BT)进行通信的单独节点。您可以通过下图更好地了解 Navigation 2 的结构。注意:可以在控制器,规划器和恢复器的服务器中提供多个匹配行为树插件格式的插件,用于创建上下文有关的导航行为。

Navigation 2 的期望输入是符合 REP-105 的 TF 变换,使用静态 Costmap 图层的地图源,行为树 XML 文件以及任何相关的传感器数据源。然后它将为完整约束或非完整约束机器人的电机提供有效的速度指令。我们目前支持完整约束的和差速驱动的底座类型,但计划在不久的将来也会支持 Ackermann 机器人。

它包括以下工具:

  • 加载,提供和存储地图(Map Server)
  • 在地图上定位机器人(AMCL)
  • 围绕障碍物规划从 A 到 B 的路径(Nav2 Planner)
  • 控制机器人沿着规划路径运动(Nav2 Controller)
  • 将传感器数据转换为当前世界的代价地图表示(Nav2 Costmap 2D)
  • 使用行为树构建复杂的机器人行为(Nav2 Behavior Trees 和 BT Navigator)
  • 计算故障情况下的恢复行为(Nav2 Recoveries)
  • 跟随连续路点运动(Nav2 Waypoint Follower)
  • 管理服务器的生命周期(Nav2 Lifecycle Manager)
  • 使用自定义算法和行为来编写插件(Nav2 Core)

我们还提供了一组启动插件来帮助您入门。NavFn 使用 A* 或 Dijkstra 算法计算从当前位置到目标位置的最短路径。DWB 将使用 DWA 算法来计算跟随路径的控制量,并提供若干个插件用于轨迹评价。恢复行为包括:等待,旋转,清除代价地图和倒车。一组行为树插件可用于调用这些服务器并计算条件。最后,还有一组 Rviz 插件,用于与导航堆栈交互并控制生命周期。

原文地址:https://www.cnblogs.com/xGonZh10n/p/12909408.html