4. 地图构建与定位

移动机器人要完成自主取放与搬运,首先必须回答两个问题:“我在哪里”和“周围环境是什么样”。前者是定位,后者是建图。SLAM(Simultaneous Localization and Mapping,同步定位与建图)把这两个问题放在同一个概率框架中联合求解:机器人一边根据运动估计自身位姿,一边用观测到的环境特征修正位姿并增量式地构建地图。没有地图,定位缺少参照;没有定位,地图无法对齐。二者互为条件,这正是SLAM的核心难点。

一、SLAM基本原理:概率估计与误差闭环

SLAM的数学本质是估计后验概率 p(x_{1:t}, m | z_{1:t}, u_{1:t}),其中 x 为机器人位姿序列,m 为地图,z 为观测,u 为控制输入。工程上通常拆成两个交替步骤:

  • 预测(Prediction):用轮式里程计或IMU积分推算位姿,位姿不确定性随时间累积增大。
  • 更新(Correction):用激光雷达、深度相机等观测与地图匹配,计算观测似然,通过贝叶斯滤波或图优化回缩误差。

按后端处理方式,SLAM可分为滤波类(EKF-SLAM、粒子滤波)与优化类(位姿图、因子图)。滤波类计算量小、适合小场景;优化类通过回环检测构建全局约束,能在大场景中保持一致性,是当前主流。回环检测是抑制漂移的关键:当机器人重新经过已建图区域时,识别出“这里来过”,在因子图中加入一条回环边,一次性拉直整条轨迹。

二、栅格地图与特征地图

地图表示决定了后续定位与导航的接口形式。工程中最常用的是栅格地图与特征地图。

对比项栅格地图特征地图
表示方式二维/三维离散网格,每格记录占据概率点、线、面、角点等几何特征集合
典型格式OccupancyGrid、PGM+YAML、八叉树路标点、线段、平面、特征描述子
优点直观、可直接用于路径规划与避障紧凑、匹配精度高、便于优化
缺点存储随分辨率增长,动态物体易残留依赖特征提取质量,稀疏区域易退化
典型用途导航代价地图、AMCL定位视觉SLAM、激光特征匹配、LIO-SAM

栅格地图用 0~100 的占据概率描述每格状态,通常以 0.05 m 分辨率保存。特征地图则把环境抽象为可重复观测的几何元素,便于在优化中建立精确约束。实际系统常同时维护两者:特征用于前端匹配与后端优化,栅格用于导航与避障。

三、AMCL:已知地图下的粒子滤波定位

AMCL(Adaptive Monte Carlo Localization)是ROS中经典的二维概率定位算法,适用于已有栅格地图的场景。它用一组带权粒子表示位姿分布,流程如下:

  1. 粒子采样:按运动模型对粒子位姿进行传播,模拟里程计噪声。
  2. 权重更新:用激光观测与地图做似然场匹配,给每个粒子打分。
  3. 重采样:淘汰低权粒子,复制高权粒子,抑制退化。
  4. 自适应粒子数:根据分布散度动态增减粒子,兼顾精度与算力。

典型参数配置如下:

min_particles: 500
max_particles: 5000
laser_model_type: likelihood_field
laser_max_range: 12.0
update_min_d: 0.2
update_min_a: 0.2
resample_interval: 1
AMCL只解决“已知地图中的定位”,不能建图。若机器人被搬动或地图与现场不一致,粒子会发散,需要重新初始化或触发重定位。

四、Cartographer与LIO-SAM:两类主流建图方案

Cartographer是Google开源的二维/三维激光SLAM系统,核心是“局部子图+全局回环”。前端把连续激光帧插入子图(Submap),后端用分支定界快速扫描匹配做回环检测,再用位姿图优化消除累积误差。它支持纯激光、激光+IMU、多雷达输入,适合室内仓储、走廊等结构化环境,输出可直接用于AMCL的栅格地图。

LIO-SAM是激光-惯性紧耦合的因子图优化方案,基于GTSAM构建。它把IMU预积分因子、激光里程计因子、GPS因子和回环因子统一放入因子图,利用IMU高频信息去畸变并约束激光匹配,在室外大场景、颠簸路面和快速运动中表现稳定。其关键因子包括:

  • IMU预积分因子:提供高频姿态与速度约束。
  • 激光里程计因子:帧间匹配得到相对位姿。
  • 回环因子:识别历史位置,拉直全局轨迹。
  • GPS因子:室外绝对位置约束,抑制长期漂移。

两者定位不同:Cartographer偏重二维室内建图与栅格输出,LIO-SAM偏重三维室外高精度轨迹与点云地图。选型时应根据传感器配置、场景尺度与导航栈需求决定。

五、典型场景与工程误区

以仓储搬运机器人为例:先用Cartographer建好仓库二维栅格地图,保存为 map.pgm 与 map.yaml;运行时加载地图并启动AMCL,机器人从初始位姿开始粒子收敛;导航栈基于代价地图规划路径。若仓库货架频繁变动,静态地图会与现场不符,此时可结合动态障碍层或定期重跑建图。

常见误区:一是把AMCL当作建图工具,导致启动后地图空白;二是忽略时间同步,激光与IMU时间戳偏差会造成点云畸变和轨迹抖动;三是回环检测阈值设置过松,产生错误回环,使地图整体扭曲;四是分辨率设置过细,导致栅格地图体积和匹配耗时急剧上升。

复盘时建议检查:里程计标定是否准确、外参是否标定、TF树是否完整、传感器时间戳是否对齐、回环是否被正确触发。只有建图与定位链路稳定,后续的取放与搬运任务才有可靠的位姿基础。

SLAM建图与定位系统数据流 传感器层 激光雷达 / IMU 轮式里程计 / 相机 前端处理 去畸变 / 帧间匹配 特征提取 / 预积分 后端优化 因子图 / 位姿图 回环检测与优化 地图输出 栅格 / 点云 特征地图 回环约束反馈 AMCL定位 粒子滤波 / 似然场 导航与避障 代价地图 / 路径规划 Cartographer 二维/三维激光SLAM · 子图+回环 室内结构化场景 · 输出栅格地图 LIO-SAM 激光-惯性紧耦合 · 因子图优化 室外大场景 · 高精度轨迹与点云