一、SLAM技术概述:从理论到量产的全景图
大家好,我是你们这门课的主讲。在机器人或自动驾驶领域摸爬滚打了十几年,我越来越觉得,SLAM 是真正意义上的「卡脖子」技术之一。今天咱们先不急着写代码,而是把 SLAM 的来龙去脉、技术流派、以及量产时那些让人头疼的坑,一次性讲清楚。
1.1 什么是SLAM?
SLAM,全称 Simultaneous Localization and Mapping,中文叫「同步定位与地图构建」。说白了,就是让一个移动的机器人,在完全陌生的环境里,一边走路一边画地图,同时还得知道自己在地图上的哪个位置。
你想想看,这其实是个「先有鸡还是先有蛋」的问题:要定位,你得先有地图;要建图,你得先知道自己在哪。SLAM 的核心,就是通过概率和优化,把这个死循环给解开了。
核心公式(简化版):
P(x, m | z, u) —— 给定观测z和控制u,估计状态x和地图m
嗯,这里要注意,实际工程中我们很少直接算这个全概率,而是用图优化或者滤波器来近似。
我在项目中遇到过最典型的场景:一台 AGV 小车在仓库里跑,突然 WiFi 断了,GPS 也没有。这时候如果 SLAM 做不好,小车直接就「失忆」了,撞货架是小事,伤到人就麻烦了。
1.2 视觉SLAM的发展历程
视觉 SLAM 的发展,我把它分成三个阶段,每个阶段都有标志性的工作。
| 阶段 | 时间 | 代表工作 | 核心特点 |
|---|---|---|---|
| 古典时代 | 2007-2012 | MonoSLAM, PTAM | 基于滤波器,稀疏特征,实时性差 |
| 黄金时代 | 2013-2018 | ORB-SLAM, LSD-SLAM, DSO | 基于图优化,特征法/直接法分庭抗礼 |
| 量产时代 | 2019-至今 | ORB-SLAM3, VINS-Fusion, DroidSLAM | 多传感器融合,深度学习加持,嵌入式优化 |
我记得 2015 年刚接触 ORB-SLAM 时,被它的回环检测效果震撼到了。一个单目摄像头,绕着办公室走一圈,居然能自动修正累积误差,把地图闭合得严丝合缝。那时候我就知道,视觉 SLAM 要爆发了。
1.3 主流视觉SLAM框架对比
现在市面上框架很多,但真正经过量产检验的,其实就那么几个。我挑三个最有代表性的,给大家做个横向对比。
ORB-SLAM3
这是目前最完整的特征点法 SLAM 系统。支持单目、双目、RGB-D,甚至支持 IMU 紧耦合。它的三大线程(跟踪、局部建图、回环检测)设计得非常清晰,代码质量也高。
- 优点: 精度高,回环检测强,支持纯视觉和视觉惯性
- 缺点: 特征提取耗时,弱纹理场景容易丢
- 我的经验: 在室内白墙场景,ORB 特征经常提取不到足够的点。我后来加了边缘特征,才勉强稳住。
VINS-Mono
港科大沈劭劼团队的作品,视觉惯性紧耦合的标杆。它的初始化非常鲁棒,能在运动激励不足的情况下快速收敛。
- 优点: IMU 预积分做得好,初始化快,代码工程化程度高
- 缺点: 纯视觉模式下精度不如 ORB-SLAM3
- 避坑指南: 我曾经在无人机上跑 VINS,发现 IMU 的零偏估计在剧烈振动时会发散。后来加了加速度计饱和检测,才解决这个问题。
LSD-SLAM
直接法的开山之作,由慕尼黑工大的 Cremers 团队提出。它不提取特征点,而是直接对图像像素做半稠密深度估计。
- 优点: 能建半稠密地图,在纹理丰富场景表现好
- 缺点: 对光照变化敏感,计算量大,不适合低算力平台
- 我的看法: 直接法在学术上很有价值,但量产时我很少用。因为嵌入式芯片跑直接法,帧率很难保证。
个人建议: 如果你刚开始学 SLAM,先从 ORB-SLAM3 入手。它的代码结构最清晰,文档也最全。等你把特征法吃透了,再去看直接法和深度学习 SLAM,会事半功倍。
1.4 应用场景与量产挑战
SLAM 的应用场景,现在已经非常广泛了。我简单列几个我实际参与过的:
- 扫地机器人: 这是 SLAM 量产最成熟的领域。科沃斯、石头、iRobot 都在用。核心挑战是低成本传感器(单目+陀螺仪)下的鲁棒性。
- 自动驾驶: L4 级以上的自动驾驶,SLAM 是冗余定位的关键一环。但量产时最大的问题是「长尾场景」——比如隧道、雨雪天、高架桥下。
- AR/VR: HoloLens、Apple Vision Pro 都依赖视觉惯性 SLAM。这里对延迟要求极高,必须做到 10ms 以内。
- 无人机: 大疆的无人机在无 GPS 环境下,全靠 VIO 做定位。我参与过一款农业无人机,在麦田里飞,纹理重复度极高,SLAM 经常丢。
量产挑战(我踩过的坑):
- 算力限制: 你以为的 2TOPS 算力,实际能用的可能只有 0.5TOPS。因为 NPU 的利用率很难做到 100%。
- 传感器标定: 相机和 IMU 的外参,出厂时标好了,但运输振动后可能就偏了。我曾经遇到过一台设备,外参偏了 0.5 度,导致定位误差在 10 米外累积到 1 米。
- 动态物体: 行人、车辆、飘动的窗帘,都会破坏 SLAM 的静态世界假设。我见过一个方案,在商场里跑,因为人太多,地图直接被「撑爆」了。
- 光照变化: 从室内到室外,光照变化 100 倍,特征点匹配率直接掉到 10% 以下。
1.5 本章知识体系总览
为了让大家对本章内容有个整体印象,我画了一张图。这张图把 SLAM 的核心问题、发展脉络、主流框架、以及量产挑战串在了一起。你可以把它当作后续学习的「导航图」。
这张图里,我把 SLAM 的核心问题放在中心,四个方向分别对应定义、发展、框架和应用。你会发现,所有技术最终都要落到「量产挑战」上。这也是我们这门课的核心主线——从理论到量产,中间隔着一道巨大的鸿沟。
一个小建议: 学 SLAM 不要只盯着算法。多想想你的算法最终要跑在什么芯片上,要面对什么样的环境。我见过太多优秀的论文算法,到了嵌入式平台上直接「躺平」——跑不动,或者跑不稳。
好了,第一章的内容就到这里。下一章我们会深入 SLAM 的数学基础,从坐标系变换开始,一步步搭建你的 SLAM 知识体系。