Skip to content

导航概览

导航(Navigation)是移动机器人最核心的能力之一。它指的是机器人能够自主地从当前位置移动到目标位置,同时在行进过程中避开障碍物、遵守运动学约束,并与环境安全交互。

在 ROS 2 生态中,Navigation2(Nav2) 是标准的导航软件栈,提供了完整的移动机器人导航解决方案。

机器人导航需要解决以下几个核心问题:

机器人需要知道自己在环境中的位置和朝向(统称为位姿,pose)。这依赖于:

  • 里程计(Odometry):通过轮式编码器、IMU 等传感器连续估计机器人的位移,提供 odom → base_link 的坐标变换。里程计在短距离内精度较高,但存在累积漂移。
  • 全局定位(Global Localization):通过激光雷达匹配预建地图(如 AMCL)、GPS、SLAM 等方式提供 map → odom 的坐标变换,用于校正里程计漂移。

ROS 2 中通常遵循 REP 105 标准,构建 map → odom → base_link → [传感器坐标系] 的完整 TF 树。Robot Localization 包常用于融合多种传感器以获得平滑的里程计输出。

2. 周围环境是什么样的?(感知与建图)

Section titled “2. 周围环境是什么样的?(感知与建图)”

机器人需要感知周围环境中的障碍物和可通行区域。常用的环境表示方式包括:

  • 代价地图(Costmap):一张规则的 2D 网格,每个单元格标记为空闲、占用或未知。通过多层插件叠加传感器数据(激光雷达、深度相机等)来更新。
  • 静态地图:通过 SLAM 算法(如 SLAM Toolbox)预先构建的占据栅格地图。

3. 怎么到达目标?(路径规划与控制)

Section titled “3. 怎么到达目标?(路径规划与控制)”

导航系统通常采用两级规划架构:

  • 全局规划器(Global Planner):在全局代价地图上搜索从起点到目标点的路径(通常使用 A*、Dijkstra 等算法),不考虑机器人的运动学约束。
  • 局部控制器(Local Controller):也叫局部规划器,负责跟随全局路径并生成具体的速度命令(cmd_vel),同时避开动态障碍物并遵守机器人的运动学约束。

Nav2 是 ROS 2 中的标准导航框架,采用模块化的插件架构:

组件功能
BT Navigator使用行为树(Behavior Tree)编排高层导航逻辑
Planner Server全局路径规划,支持多种规划算法插件
Controller Server局部路径跟随与速度控制
Recovery Server恢复行为(如原地旋转、后退脱困)
Smoother Server路径平滑优化
Costmap 2D多层代价地图,融合多种传感器数据
AMCL基于粒子滤波的自适应蒙特卡洛定位

Nav2 通过 ROS 2 动作(Action)接口接收导航指令,如 NavigateToPose(导航到指定位姿)和 NavigateThroughPoses(途经多个航点)。所有服务器组件都是生命周期节点(Lifecycle Node),支持确定性的启动和关闭流程。