Nav2 是什么:概念与核心术语
一、Nav2 是什么:概念与核心术语
Nav2 是 ROS2 的导航栈,负责把「我要去地图上的某个点」翻译成底盘能执行的速度指令。它把导航拆成几个可以独立替换的模块:定位(我在哪)、全局规划(走哪条路)、局部控制(这一秒往哪走)、代价地图(哪里能走)、恢复行为(卡住了怎么办),再用一棵行为树把这些模块串成完整的决策流程。
它解决的问题是「移动机器人自主行驶这件事不必从零写」。开源的 A* 或者自研的纯跟踪控制器只能解决其中一小块,实际项目里真正花时间的是定位漂移、动态障碍、窄通道、恢复逻辑,Nav2 把这些工程细节做成了可配置的插件。
与其它方案的比较
| 方案 | 决策方式 | 特点 |
|---|---|---|
| Nav2 | 行为树 + 插件化模块 | 组件可替换、有生命周期管理、生态成熟 |
| ROS1 move_base | 固定的状态机 | 逻辑写死,扩展要改源码;已不再是新项目选择 |
| 自研 A* 加纯跟踪 | 自己写 | 简单场景够用,但动态避障与异常恢复要全部自研 |
| 其它商业导航套件 | 厂商封装 | 开箱即用,定制受限,通常与特定硬件绑定 |
核心术语表
| 术语 | 含义 | 说明 |
|---|---|---|
| 代价地图 Costmap | 把传感器数据栅格化成「能不能走」的地图 | 分全局(静态,覆盖整张地图)与局部(滚动窗口,跟着车走) |
| 层 Layer | 代价地图的构成单元 | 静态层、障碍层、体素层、膨胀层 |
| 膨胀 Inflation | 在障碍物周围生成代价梯度 | 让路径远离障碍,参数直接决定「敢不敢贴边过」 |
| 全局规划器 Planner | 在全局代价地图上找一条路径 | NavFn、Smac 2D、Theta 等 |
| 控制器 Controller | 跟踪路径,输出速度指令 | DWB、RPP、MPPI 等 |
| 行为树 BT | 导航决策流程的描述文件 | 恢复行为、重规划频率都在这里编排 |
| 恢复行为 Recovery | 卡住时的自救动作 | 清理代价地图、原地旋转、后退 |
| AMCL | 基于粒子滤波的二维定位 | 需要初始位姿,对地图质量敏感 |
| 生命周期节点 | 带状态机的节点 | 不激活就不工作,启动顺序由 lifecycle manager 管 |
| 速度平滑器 | 对速度指令做限幅与平滑 | 保护底盘,避免急加速急停 |

