2. 基础知识
在多机器人地图共享与协同定位中,单机 SLAM 是整条技术链的起点。只有先理解单台机器人如何“知道自己在哪里、周围长什么样”,才能进一步讨论多机之间如何交换地图、对齐坐标、融合位姿。本节围绕四个基础问题展开:SLAM 在解决什么、坐标系如何串联、概率方法为何必要、传感器误差从哪里来。
一、SLAM 的基本概念
SLAM(Simultaneous Localization and Mapping)指机器人在未知环境中,一边估计自身运动轨迹,一边构建环境地图。它之所以困难,是因为“定位需要地图,建图又需要定位”,两者互为条件。SLAM 的输出通常包括机器人轨迹(位姿序列)和地图(栅格、特征点、点云或拓扑结构)。
从系统角度看,SLAM 包含两个交替过程:前端负责帧间配准、里程计推算与短期约束构建;后端负责优化全局轨迹与地图一致性,常用滤波或因子图方法。多机器人场景下,还会增加地图融合与相对观测两个环节。
二、坐标系变换:从传感器到世界
机器人系统中,同一物理点会在多个坐标系中表达。常见坐标系包括:世界系 map、机器人体系 base_link、激光雷达系 laser、相机系 camera、IMU 系 imu。坐标变换通常用齐次变换矩阵描述:
T_map_base = T_map_odom * T_odom_base
p_map = T_map_base * T_base_laser * p_laser
其中:
T = [ R t ]
[ 0 1 ]
R 为 3x3 旋转矩阵,t 为 3x1 平移向量
旋转可用欧拉角、四元数或旋转矩阵表示。四元数无万向锁、插值平滑,是 ROS 与多数 SLAM 系统的默认姿态表示。需要注意:变换方向不能写反,T_a_b 表示把 b 系坐标变换到 a 系。
三、概率机器人学基础
传感器有噪声,运动有滑移,因此位姿不是确定值,而是概率分布。SLAM 的本质是递推贝叶斯估计:
预测:bel(x_t) = ∫ p(x_t | x_{t-1}, u_t) bel(x_{t-1}) dx_{t-1}
更新:bel(x_t) ∝ p(z_t | x_t) bel(x_t)
其中 u_t 是控制/里程计输入,z_t 是观测。运动模型描述“走一步后可能在哪”,观测模型描述“看到这个特征时位姿有多可信”。当分布近似高斯时,可用扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF);当状态维度高、约束稀疏时,因子图优化更常用。
四、常见传感器及其噪声模型
不同传感器提供不同约束,也带来不同误差特性。下表给出典型对比:
| 传感器 | 主要观测 | 典型噪声/误差 | 在 SLAM 中的作用 |
|---|---|---|---|
| 激光雷达 | 距离、角度、点云 | 测距噪声、反射率偏差、运动畸变 | 扫描匹配、建图、回环 |
| 相机 | 图像、特征点、深度 | 像素噪声、光照敏感、尺度不确定 | 视觉里程计、重定位 |
| IMU | 角速度、加速度 | 零偏、随机游走、温漂 | 高频姿态预测、预积分 |
| 里程计 | 轮速、位移增量 | 轮径误差、打滑、累积漂移 | 运动先验、短期递推 |
噪声建模常用高斯白噪声近似:激光测距误差可建模为 σ_r,IMU 零偏建模为随机游走,里程计误差随距离累积。实际系统中,还会加入鲁棒核函数抑制外点。
五、案例:单机 SLAM 到多机共享的衔接
假设一台机器人在室内走廊运行,激光雷达提供 2D 扫描,轮式里程计提供运动增量,IMU 提供角速度。前端用扫描匹配得到相对位姿,后端用位姿图优化消除漂移。当第二台机器人进入同一区域时,若两者都使用同一 map 坐标系,则可通过共享子图或特征描述子进行地图对齐;若坐标系不一致,则需先估计 T_map1_map2。
此时,单机 SLAM 中的协方差、因子图边缘分布、传感器噪声参数,都会直接影响多机融合权重。因此,基础环节的建模质量决定了协同定位的上限。
六、复盘与检查清单
- 是否明确每个传感器的安装位置与外参?
- 是否统一了时间基准与坐标基准?
- 是否为每类观测建立了合理的噪声模型?
- 是否区分了前端短期约束与后端全局约束?
- 是否保留了协方差或信息矩阵,供多机融合使用?