1. SLAM是什么:盲人摸象与边走边画
1. SLAM 是什么:一个”鸡生蛋”的故事
上一篇:0. 基本数学 | 下一篇:2. 机器人眼中的世界:传感器与栅格地图
一、先讲个故事:蒙眼探索办公楼
想象你被蒙上眼睛、坐轮椅推进一栋从没来过的办公楼,手里只有两样东西:
- 轮椅轮子上的计步器(= 里程计):”我刚才大概往前走了 3 米,左转了 90°”;
- 一根能旋转 360° 的盲杖(= 激光雷达):每挥一圈,告诉你”正前方 2.1 米是墙、右边 1.3 米是桌子腿、……”
现在要求你:一边搞清楚自己在楼里的位置,一边画出整层楼的平面图。
你很快会遇到死循环:
1 | flowchart LR |
这就是 SLAM(Simultaneous Localization And Mapping,同时定位与建图)的本质困境:
定位需要地图,建图需要定位,两者互为先决条件–一个”鸡生蛋、蛋生鸡”问题。
SLAM 算法的全部意义,就是打破这个死循环。gmapping 给出的解法,是本系列第 4 篇的主角。
二、SLAM 两个字的精确定义
| 任务 | 输入 | 输出 |
|---|---|---|
| 定位 Localization | 传感器数据 + 已知地图 | 我在哪(位姿 $x, y, \theta$) |
| 建图 Mapping | 传感器数据 + 已知位姿 | 环境长什么样(地图 $m$) |
| SLAM | 只有传感器数据 | 位姿 + 地图同时都要 |
机器人领域的三大件:建图、定位、路径规划。SLAM 正好卡在建图 ∩ 定位的交集上:
1 | flowchart TD |
三、SLAM 门派地图:gmapping 站在哪
3.1 按传感器分
| 门派 | 传感器 | 特点 |
|---|---|---|
| 激光 SLAM | 激光雷达(+里程计) | 测距精准、不受光照影响、工业主流(扫地机器人/仓储 AGV) |
| 视觉 SLAM | 相机(单目/双目/RGBD) | 便宜、信息丰富,但受光照/纹理影响大 |
gmapping 是激光 SLAM。
3.2 按后端解法分(更关键!)
两大门派的区别在于”怎么求解那个鸡生蛋问题”:
| 滤波派(贝叶斯递推) | 图优化派 | |
|---|---|---|
| 思路 | 每来一帧数据,在线更新对”位姿+地图”的概率估计 | 把历史位姿当节点、传感器约束当边,构建因子图,整体优化 |
| 代表 | gmapping(粒子滤波)、Hector | Cartographer、Karto |
| 优点 | 实时性好、小场景精度高 | 支持回环检测、大场景、内存省 |
| 缺点 | 无回环、大场景内存爆炸(见第 9 篇) | 计算量大、矩阵运算重 |
一个直觉对比:滤波派像”边走边记日记,写完不回头改”;图优化派像”写完整本日记后通读一遍,把前后矛盾的地方全部修正”(回环检测就是发现”这一页说的走廊和第 3 页是同一条”)。
3.3 gmapping 的江湖地位
- 2007 年 Grisetti 等人论文《Efficient Rao-Blackwellized Particle Filters for SLAM》(TRO);
- 基于 RBPF 粒子滤波(滤波派),是 ROS 里最老牌、最常用的 2D 激光 SLAM 之一;
- 小场景(室内、几百平米)精度高、算得快、参数少–至今仍是扫地机器人、教学实验的主力;
- 大场景、需要回环的场景让位给 Cartographer。
四、SLAM 系统的通用流水线(所有算法都长这样)
无论哪个门派,激光 SLAM 都可以拆成四块:
1 | flowchart LR |
gmapping 在这张图里的填空:前端 = 里程计 + 扫描匹配;后端 = RBPF 粒子滤波;回环 = 无;地图 = 2D 栅格图。后面几篇逐个填满。
五、本篇小结
- SLAM = 蒙眼画地图:定位和建图互为先决条件的死循环;
- gmapping = 激光 + 滤波派(粒子滤波)+ 无回环 + 2D 栅格地图;
- 通用流水线四件套:传感器 -> 前端 -> 后端 -> 地图(+回环)。
📚 参考:Gmapping算法原理及源代码解析(SLAM 分类与框架图)、GMapping原理分析(滤波 vs 图优化对比)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 TeachCraft Blog!
评论