2. 机器人导航基础
在部署语义导航地图之前,必须先理解机器人导航系统的基本工作原理。语义地图并不是孤立存在的“标签集合”,它最终要服务于定位、路径规划与运动控制。如果对导航系统的组成和信号流没有整体认识,就容易把语义地图做成“好看但不可用”的展示图。本节从系统组成出发,串联定位、建图、路径规划与运动控制四个核心环节,建立后续章节所需的原理基础。
一、导航系统的五大组成
一个完整的移动机器人导航系统,通常可以拆解为感知、定位、建图、规划、控制五个部分,它们通过数据流紧密耦合:
- 感知层:激光雷达、深度相机、IMU、轮式里程计、GNSS 等传感器,负责采集环境与自身运动信息。
- 定位模块:估计机器人在全局地图中的位姿(位置 + 朝向),输出
x, y, θ。 - 建图模块:把多帧观测拼接成一致的地图,同时反过来修正定位,即 SLAM。
- 规划模块:在已知地图上计算从当前位姿到目标点的可行路径,分为全局规划与局部规划。
- 控制模块:把路径转化为线速度
v与角速度ω,驱动底盘执行。
这五部分构成一个闭环:感知为定位提供观测,定位为建图提供位姿,地图为规划提供代价信息,规划为控制提供轨迹,控制结果又通过里程计反馈回定位。语义导航地图正是在“建图”这一环中,把语义信息叠加到几何地图之上。
二、定位:导航的“我在哪里”
定位解决的是机器人在全局地图中的位姿估计问题。常见方法有两类:
- 绝对定位:依赖 GNSS、UWB、二维码或反光板等外部基准,直接给出全局坐标,但室内常受遮挡影响。
- 相对定位:依赖轮式里程计、IMU 递推,短时平滑但会累积漂移。
- 概率定位:如 AMCL(自适应蒙特卡洛定位),用粒子滤波融合里程计与激光观测,在已知地图上持续修正位姿。
定位精度直接决定语义地图中“物体在哪”的可信度。若定位漂移 0.5 m,那么“门口”“充电桩”等语义标签的位置也会随之偏移,规划出的目标点就可能落在障碍物上。
三、建图:从观测到一致地图
建图的核心是把多帧传感器观测拼接到同一坐标系下。以 2D 激光 SLAM 为例,典型流程如下:
1. 采集一帧激光扫描 scan
2. 用里程计预测当前位姿 pose_pred
3. 将 scan 与已有地图做扫描匹配,得到 pose_corrected
4. 用 pose_corrected 把 scan 插入栅格地图,更新占据概率
5. 回环检测:识别曾经到过的位置,触发位姿图优化
6. 输出栅格地图 map.pgm + map.yaml
栅格地图用 0~100 表示占据概率,-1 表示未知区域。语义导航地图在此基础上增加语义层,例如把“走廊”“房间”“门”“充电桩”作为带标签的多边形或点标注,与栅格地图共享同一坐标系。
四、路径规划:从目标到轨迹
路径规划通常分为两层:
| 层级 | 输入 | 输出 | 常用算法 |
|---|---|---|---|
| 全局规划 | 静态地图、起点、目标点 | 全局路径 | A*、Dijkstra、RRT |
| 局部规划 | 局部代价地图、实时障碍 | 速度指令 | DWA、TEB、MPC |
全局规划负责“走哪条路”,局部规划负责“怎么避开突然出现的人或箱子”。语义信息可以参与代价设计:例如把“地毯”“玻璃门”设为高代价区域,把“充电桩”“电梯口”设为语义目标点。
五、运动控制:把轨迹变成轮速
控制模块接收局部规划输出的速度指令,通过差速运动学模型转换为左右轮速:
v_L = v - ω * L / 2
v_R = v + ω * L / 2
其中 L 为轮距,v 为线速度,ω 为角速度
实际部署中还要考虑加速度限制、轮子打滑、控制周期(常见 20~50 Hz)等因素。控制不稳会直接导致定位漂移,进而污染建图与语义标注。
六、常见误区与复盘
误区一:只关注建图效果,忽略定位精度。地图再漂亮,定位漂移也会让语义标签失效。
误区二:把语义地图当成纯视觉任务。语义标签必须与几何地图、定位坐标系对齐,否则无法用于规划。
误区三:规划层不区分全局与局部。缺少局部规划时,机器人遇到动态障碍会直接卡死。
复盘时建议按“感知 → 定位 → 建图 → 规划 → 控制”的顺序逐环节排查:先看传感器数据是否正常,再看定位是否收敛,然后检查地图一致性,最后验证规划路径与控制响应。只有这条链路整体稳定,语义导航地图才能真正落地。