激光同步定位与地图构建(激光 SLAM),是利用激光雷达对周围环境的观测,一边估计机器人所在的位置和朝向,一边建立环境地图的技术。它解决的是“地图尚不完整时,如何同时知道自己在哪里、周围是什么样”的问题,通常还会融合轮式里程计、惯性测量等信息。

在移动机器人类型中,自主移动平台常需要这样的环境感知能力。但能建图,不等于已经具备完整的路径规划、动态避障和安全控制;这些任务与 SLAM 使用的观测可能相关,承担的职责却不同。
雷达测到的是距离,为什么还需要 SLAM?
激光雷达在多个方向测量到周围物体的距离,一次扫描可以形成二维轮廓或三维点云。二维扫描常描述某个扫描平面上的墙体、柱子和货架腿;三维扫描则包含更多高度信息。它们首先位于传感器自己的坐标系里。
机器人向前移动后,同一根柱子在雷达坐标系中的位置会改变。若直接把各次扫描叠加,柱子可能变成多个重影。SLAM 要估计每次观测发生时的机器人位姿,再把观测变换到地图坐标系中,才能让同一对象尽量重合。
这里的“位姿”同时包含位置和姿态。平面移动通常关心平面上的两个位置坐标与朝向角;三维运动还需处理高度、俯仰和侧倾等。地图与位姿互相依赖:估计位姿需要已有环境结构,更新环境结构又需要知道观测从哪里发生。
从一次扫描到地图,主要经过哪些环节?
不同算法的实现并不相同。以具有局部建图和全局优化的系统为例,可以沿下列过程理解。Cartographer 的算法说明将局部 SLAM 和全局 SLAM 区分开来,这是一种具体架构,不是所有系统必须采用的固定模块划分。
- 整理观测。读取激光距离与时间信息,去除不适用的回波;运动过程中还可能需要补偿同一帧内各点的采集时间差。
- 预测运动。结合上一时刻位姿、轮式里程计或惯性测量,得到本次位姿的大致初值。具体需要哪些辅助传感器,由算法及运动条件决定。
- 进行扫描匹配。调整当前扫描的相对位置与方向,使其与已有扫描、特征或局部地图的几何结构一致,形成更准确的相对运动估计。
- 更新局部地图。将新观测放入地图,保存局部结构;系统可以采用占据栅格、点云或其他地图表示。
- 建立全局约束。识别重访区域或引入其他位置约束,再联合调整历史位姿与地图,减小长距离运动后的不一致。
扫描匹配不是让每个点都找到完全相同的旧点。视角变化、遮挡、测量噪声和人员移动,都会让两次扫描不同。算法需要在可用观测中估计最合理的对应关系,重复货架或特征稀少的通道则可能让多个位置看起来相似。
回环检测为什么能减小累计误差?
每次相对运动估计都可能带有小偏差。机器人沿长通道运动时,这些偏差会逐渐积累;即使回到起点附近,地图中的轨迹也可能无法闭合,墙体出现重影或错位。这种随运动积累的不一致常被称为漂移。
回环检测尝试判断“现在是否看到了以前到过的区域”。一旦形成可信的重访约束,后端优化便可以联合调整多段轨迹,让局部观测之间的关系更加一致。它不是把当前位置生硬地移回起点,而是根据约束与误差模型,重新分配历史位姿中的偏差。
Google Research 公布的2016 年二维激光 SLAM 研究展示了扫描到子地图匹配与实时回环约束的做法。回环能否可靠建立,取决于重访区域的辨识性和匹配结果;将两个相似但不同的通道误认成同一位置,反而可能破坏地图。

建图、已有地图定位和导航分别做什么?
| 任务 | 主要问题 | 典型输出 |
|---|---|---|
| SLAM 建图 | 环境地图尚未完整建立时,机器人在哪里,周围结构怎样连接? | 地图与机器人轨迹或位姿估计 |
| 已有地图定位 | 面对已保存的地图,当前观测对应地图里的哪个位置? | 相对于已有地图的当前位姿及相应状态信息 |
| 路径规划与运动执行 | 怎样从当前位置到达目标,并把路径转成运动? | 全局或局部路径、速度指令与执行状态 |
| 障碍处理与安全控制 | 当前哪些区域不能通过,遇到人员或障碍时如何响应? | 障碍表示、避让或停车等控制动作 |
实际运行中,机器人可以先完成建图,再主要在已有地图上定位;也有系统允许在线更新地图。SLAM 使用激光雷达,并不自动证明整机具备某一种安全等级。用于建图的感知功能、用于避障的处理与安全保护,应按整机设计分别理解。
哪些环境会让定位和地图变得不稳定?
几何特征太少或高度重复。长直走廊里,相邻位置的扫描可能非常相似,沿通道方向的位移就较难约束;成排相同货架也可能增加错误对应的机会。地图“有线条”,并不意味着所有方向的位置都同样容易确定。
观测与预期不符。玻璃、反光表面、低反射物体或灰尘可能改变有效回波;人员和叉车不断移动,也会使当前扫描偏离静态地图。具体表现取决于雷达原理、材质、观察角度与算法的异常观测处理,不能仅用“有激光就能看见所有障碍”概括。
传感器关系不准确。雷达与机器人之间的安装关系、时间同步或运动补偿出现问题,可能让墙体变弯、转弯处错位。轮子打滑会使轮式里程计偏离真实运动,惯性测量也有噪声和偏置;融合更多传感器仍需要正确处理各自的不确定性。
Cartographer 的输入接口说明列出了激光扫描、点云、惯性和里程计等观测来源。理解输入条件,比把某一算法名称等同于固定精度更有意义。
怎样读懂一张 SLAM 地图?
占据栅格图中的格子表达空间被占用、空闲或尚未充分观测的状态;未知区域不应被直接理解成可通行。地图分辨率是表示空间的粒度,也不等于机器人绝对定位误差。雷达测距表现、观测几何、运动速度和算法误差都会影响最终结果。
观察一次建图结果,可以先看墙体是否连续、回到同一区域时是否出现重影、转弯处是否错位,再结合原始扫描与运动记录判断原因。这些是理解系统行为的线索;若要评价定位精度,仍需要独立参考测量、明确的测试路径与工况,不能只凭地图看起来整齐就得出数值结论。
评论留言
暂时没有留言!