第1章 · SLAM概述

各位同学,欢迎来到《手把手搭建SLAM地图构建环境》。我是你们这门课的老朋友,一个在机器人感知领域摸爬滚打了七八年的工程师。今天咱们先不急着装环境、敲代码,而是坐下来聊聊——SLAM到底是什么?

说白了,SLAM就是让一个移动的机器人(或者手机、汽车)在完全陌生的环境里,一边走路一边给自己定位,同时把周围的地图画出来。你想想看,这像不像一个人蒙着眼睛走进一间黑屋子,靠摸墙和数步子来搞清楚自己在哪、屋子长什么样?嗯,差不多就是这个意思。

🔑 核心定义: SLAM = Simultaneous Localization And Mapping,同时定位与地图构建。没有GPS,没有预先地图,全靠传感器实时推算。

1.1 为什么SLAM这么重要?

我刚开始做机器人那会儿,大家还在用“磁条导航”或者“反光板”。直到2012年左右,SLAM技术开始落地,我才真正意识到——这才是让机器拥有“空间智能”的关键。没有SLAM,扫地机器人就是个乱撞的傻子;没有SLAM,自动驾驶汽车连自己在哪都不知道。

我个人习惯把SLAM比作“机器人的眼睛+小脑”。它不单单是感知,还涉及状态估计、数据关联、优化理论。嗯,听着有点唬人,但别怕,咱们这门课会一层层把它剥开。

1.2 SLAM的应用领域

你可能每天都在用SLAM,只是没意识到。我列几个最常见的场景:

  • 扫地机器人 —— 这是SLAM最亲民的应用。它用激光雷达或者视觉传感器,在家里跑一圈就能画出户型图,还能记住哪里扫过、哪里没扫。我在2018年帮一家扫地机公司调过参数,说实话,最头疼的不是算法,而是家里各种玻璃和深色地毯……
  • 自动驾驶 —— L3级别以上的车,几乎都离不开SLAM。高精地图的实时更新、车辆在隧道或地库的定位,全靠它。我曾经在测试场遇到过GPS信号丢失的情况,多亏了视觉SLAM撑着,车才没跑偏。
  • AR/VR —— 你手机上的AR测量、虚拟物体固定摆放,背后都是SLAM在实时计算相机位姿。我记得第一次用ARKit时,觉得这东西太神奇了——其实核心就是一个轻量级的视觉SLAM。
  • 无人机、仓储机器人、矿山自动驾驶 —— 这些领域SLAM几乎是标配。没有它,无人机在室内根本飞不稳。
💡 避坑指南: 我曾经在室内用纯视觉SLAM做无人机定位,结果遇到一整面白墙,特征点全丢了……从那以后我养成了一个习惯:任何SLAM系统都要考虑退化场景,该融合激光就融合,别头铁。

1.3 主流SLAM方案:激光 vs 视觉

现在市面上主流的SLAM方案就两大派:激光SLAM 和 视觉SLAM。很多新手会纠结选哪个,我直接说结论:没有银弹,看场景。

对比维度激光SLAM视觉SLAM
核心传感器激光雷达(2D/3D)单目/双目/深度相机
典型代表GMapping, Cartographer, HectorORB-SLAM3, VINS-Mono, DSO
优点精度高,直接测距,光照不敏感硬件便宜,纹理信息丰富,轻量
缺点无纹理信息,怕玻璃/黑墙,价格贵光照敏感,弱纹理易跟丢,计算量大
典型场景室内扫地机、AGV、封闭园区AR/VR、无人机、自动驾驶(融合)

我个人习惯在项目初期先问三个问题:有没有光照变化?有没有动态物体?预算多少? 如果预算充足且环境结构化,激光SLAM稳如老狗。如果要做消费级产品或者需要语义信息,视觉SLAM的上限更高。

⚠️ 注意: 别以为激光SLAM就一定比视觉SLAM简单。我见过不少团队在Cartographer的参数调优上花了一个月……每种方案都有它的脾气。

1.4 一张图看懂SLAM知识体系

下面这张SVG图是我自己梳理的SLAM核心模块。你可以把它当作整个课程的地图——我们后面每一章都会对应到其中的一块。

SLAM 核心 激光雷达 / 相机 前端:特征/匹配 后端:图优化/滤波 回环检测 地图构建 位姿 + 地图 传感器数据 闭环修正

你看,SLAM其实就这几大块:传感器输入 → 前端(特征提取与匹配)→ 后端(优化)→ 回环检测 → 建图。我们这门课会按照这个流程,从环境搭建开始,一步步带你手写一个完整的视觉里程计。嗯,说到这,我已经有点兴奋了。

1.5 课程地图 & 你该怎么学

这门课一共30章,前9章是基础环境(Ubuntu、ROS、工具链),中间10章是核心算法模块,最后10章是实战搭建一个视觉SLAM系统。我建议你每看完一章,都亲手把代码跑一遍。遇到问题很正常——我当年调第一个VO的时候,光CMakeLists就改吐了三次。

🎯 本章小结: SLAM不是某个单一算法,而是一个系统。激光和视觉各有千秋,但核心思想一致:在运动中对自身和环境进行联合估计