具身导航算法基本概念
本章建立具身导航的最小知识框架:机器人如何根据传感器观测估计自身位置、构建或读取地图、规划路径,并把路径转换成可执行控制量。学完后,应能读懂后续 Habitat 实验中的场景、传感器、导航网格、目标和评估指标。
1. 导航闭环
一个完整导航系统持续执行以下循环:
mermaidflowchart LR
A[相机与深度等观测] --> B[定位与状态估计]
B --> C[地图或场景表示]
C --> D[全局路径规划]
D --> E[局部规划与避障]
E --> F[速度或离散动作]
F --> G[机器人与环境]
G --> A
各模块的职责不同:定位回答“机器人在哪里”,建图回答“环境是什么结构”,规划回答“应从哪里通过”,控制回答“这一时刻如何运动”。端到端策略可以把多个模块合并到同一模型中,但评估时仍需区分感知、路径和执行阶段。
2. 常见任务定义
| 任务 | 目标输入 | 典型输出 | 主要难点 |
|---|---|---|---|
| 点目标导航 | 相对坐标或目标坐标 | 前进、转向、停止 | 定位误差与障碍规避 |
| 物体目标导航 | 目标类别或目标图像 | 运动动作与停止决策 | 目标搜索与语义泛化 |
| 图像目标导航 | 目标位置的参考图像 | 运动动作与停止决策 | 视角变化与地点匹配 |
| 视觉语言导航 | 自然语言路径描述 | 连续或离散导航动作 | 指令对齐、历史记忆与路径选择 |
| 探索与主动感知 | 覆盖或信息增益目标 | 观测位置序列 | 未知空间建模与采样效率 |
3. 地图与规划
3.1 栅格地图和导航网格
二维栅格地图将空间划分为可通行、占用和未知区域,适合 A*、Dijkstra 等经典规划算法。三维仿真器通常根据场景网格和机器人尺寸生成导航网格,规划器只在可通行表面上搜索。
3.2 全局规划与局部规划
全局规划根据已知地图生成从起点到目标的整体路线。局部规划使用当前传感器观测处理移动障碍、地图误差和控制约束。只有全局路线而没有局部避障时,机器人难以应对动态环境;只有局部反应而没有全局目标时,则容易在复杂空间中绕行或陷入局部区域。
3.3 经典搜索算法
- Dijkstra:按累计路径代价扩展节点,可得到非负边权图上的最短路径。
- A*:在累计代价基础上加入到目标的启发式估计,通常比 Dijkstra 扩展更少节点。
- 快速扩展随机树:在连续高维空间中采样并扩展树结构,适合带运动学约束的规划问题。
4. 传感器与状态
RGB 相机提供纹理和语义,深度相机提供表面距离,激光雷达提供稳定的几何扫描,里程计和惯性测量单元提供短时间运动估计。仿真环境中可以直接获得理想位姿,但训练与测试是否允许使用该信息必须由任务协议明确规定。
5. 常用评估指标
成功率
成功率统计在限定步数内正确到达并执行停止动作的回合比例。目标距离阈值、碰撞条件和停止动作要求必须固定。
路径长度加权成功率
路径长度加权成功率同时考虑是否成功和路径效率。成功但严重绕路的轨迹得分低于接近最短路径的成功轨迹。
到目标距离与碰撞
到目标距离适合分析未成功轨迹接近目标的程度;碰撞次数、碰撞时间或安全距离用于分析执行安全性。不同论文的碰撞定义可能不同,比较前应先核对协议。
6. 最小学习检查
进入 Habitat 实践前,确认能够回答以下问题:
- 当前任务向策略提供的是坐标、类别、图像还是语言目标?
- 策略能否读取真实位姿或完整地图?
- 动作是离散的前进与转向,还是连续速度?
- 成功判定是否要求显式停止?
- 评估使用多少回合、哪些场景和哪些初始状态?
后续先学习Habitat-Sim 环境与数据集,再进入 Habitat-Lab 任务与评估实践。