2. 机器人导航基础

在部署语义导航地图之前,必须先理解机器人导航系统的基本工作原理。语义地图并不是孤立存在的“标签集合”,它最终要服务于定位、路径规划与运动控制。如果对导航系统的组成和信号流没有整体认识,就容易把语义地图做成“好看但不可用”的展示图。本节从系统组成出发,串联定位、建图、路径规划与运动控制四个核心环节,建立后续章节所需的原理基础。

一、导航系统的五大组成

一个完整的移动机器人导航系统,通常可以拆解为感知、定位、建图、规划、控制五个部分,它们通过数据流紧密耦合:

  • 感知层:激光雷达、深度相机、IMU、轮式里程计、GNSS 等传感器,负责采集环境与自身运动信息。
  • 定位模块:估计机器人在全局地图中的位姿(位置 + 朝向),输出 x, y, θ。
  • 建图模块:把多帧观测拼接成一致的地图,同时反过来修正定位,即 SLAM。
  • 规划模块:在已知地图上计算从当前位姿到目标点的可行路径,分为全局规划与局部规划。
  • 控制模块:把路径转化为线速度 v 与角速度 ω,驱动底盘执行。

这五部分构成一个闭环:感知为定位提供观测,定位为建图提供位姿,地图为规划提供代价信息,规划为控制提供轨迹,控制结果又通过里程计反馈回定位。语义导航地图正是在“建图”这一环中,把语义信息叠加到几何地图之上。

移动机器人导航系统组成与数据流 感知层 LiDAR / 相机 / IMU 定位模块 输出位姿 x, y, θ 建图模块 栅格 / 语义地图 规划模块 全局 + 局部路径 控制模块 线速度 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 表示未知区域。语义导航地图在此基础上增加语义层,例如把“走廊”“房间”“门”“充电桩”作为带标签的多边形或点标注,与栅格地图共享同一坐标系。

建图时建议控制速度在 0.3~0.5 m/s,避免快速旋转导致扫描匹配失败;回环检测开启后,长走廊场景的地图一致性会明显提升。

四、路径规划:从目标到轨迹

路径规划通常分为两层:

层级输入输出常用算法
全局规划静态地图、起点、目标点全局路径A*、Dijkstra、RRT
局部规划局部代价地图、实时障碍速度指令DWA、TEB、MPC

全局规划负责“走哪条路”,局部规划负责“怎么避开突然出现的人或箱子”。语义信息可以参与代价设计:例如把“地毯”“玻璃门”设为高代价区域,把“充电桩”“电梯口”设为语义目标点。

五、运动控制:把轨迹变成轮速

控制模块接收局部规划输出的速度指令,通过差速运动学模型转换为左右轮速:

v_L = v - ω * L / 2
v_R = v + ω * L / 2
其中 L 为轮距,v 为线速度,ω 为角速度

实际部署中还要考虑加速度限制、轮子打滑、控制周期(常见 20~50 Hz)等因素。控制不稳会直接导致定位漂移,进而污染建图与语义标注。

六、常见误区与复盘

误区一:只关注建图效果,忽略定位精度。地图再漂亮,定位漂移也会让语义标签失效。

误区二:把语义地图当成纯视觉任务。语义标签必须与几何地图、定位坐标系对齐,否则无法用于规划。

误区三:规划层不区分全局与局部。缺少局部规划时,机器人遇到动态障碍会直接卡死。

复盘时建议按“感知 → 定位 → 建图 → 规划 → 控制”的顺序逐环节排查:先看传感器数据是否正常,再看定位是否收敛,然后检查地图一致性,最后验证规划路径与控制响应。只有这条链路整体稳定,语义导航地图才能真正落地。