1. SLAM技术概述:什么是SLAM、SLAM的发展历程、视觉SLAM vs VIO、课程目标与学习路径

1.1 到底什么是SLAM?

SLAM,全称是 Simultaneous Localization and Mapping。中文叫「同步定位与地图构建」。

说白了,就是让一个机器人,在完全陌生的环境里,一边走路,一边给自己画地图,同时还要知道自己在地图上的哪个位置。

你想想看,这其实是个「先有鸡还是先有蛋」的问题。要知道自己在哪里,得先有地图;要构建地图,又得先知道自己的位置。SLAM 要解决的,就是这个死循环。

我在做第一个机器人项目时,就踩过这个坑。当时天真地以为,只要给机器人装个激光雷达,它就能自己认路。结果一开机,它直接撞墙——因为它根本不知道自己在哪。嗯,从那以后我才真正理解 SLAM 有多重要。

核心三要素:

  • 定位:我在哪?
  • 建图:周围长什么样?
  • 同步:一边走一边干这两件事。

1.2 SLAM 的发展历程

SLAM 这个概念,最早可以追溯到 1986 年。当时在旧金山的一次机器人会议上,几位大佬开始讨论:能不能让机器人在未知环境中自主导航?

我简单梳理了一下几个关键节点:

年代 里程碑 我的感受
1986-1990 概率论引入 SLAM,卡尔曼滤波成为主流 那时候我还没入行,但听说当时的论文都是用笔手写的
1990-2000 EKF-SLAM 成为标准框架 我刚开始学 SLAM 时,EKF 还是必讲内容
2000-2010 FastSLAM、GraphSLAM 出现,非线性问题得到缓解 我个人觉得,图优化是 SLAM 历史上最重要的突破之一
2010-2015 视觉 SLAM 爆发,PTAM、ORB-SLAM 相继问世 我记得第一次跑通 ORB-SLAM 时,那种兴奋感至今难忘
2015-至今 VIO 融合、深度学习辅助 SLAM 成为热点 现在做 SLAM,不聊几句 VIO 都不好意思说自己是搞这个的

为什么会从激光 SLAM 转向视觉 SLAM?说白了,激光雷达太贵了。一个 16 线激光雷达,价格够买好几台相机。视觉 SLAM 用摄像头,成本低得多,而且能获取丰富的纹理信息。

1.3 视觉 SLAM vs VIO

视觉 SLAM 和 VIO(Visual-Inertial Odometry,视觉惯性里程计)有什么区别?

我直接说结论:VIO 是视觉 SLAM 的增强版

纯视觉 SLAM 有个致命弱点——怕运动太快。你想想看,相机一快速转动,图像就模糊了,特征点跟丢了,整个系统就崩了。

VIO 加了一个 IMU(惯性测量单元),它能测量加速度和角速度。IMU 不怕快,它怕的是漂移。但巧了,视觉正好能修正 IMU 的漂移。两者一结合,优势互补。

我的建议:

如果你做的是室内低速机器人,纯视觉 SLAM 完全够用。但如果你要做无人机、AR/VR、或者手持设备,VIO 几乎是必选项。我在做无人机项目时,一开始用的纯视觉,结果一飞起来就丢。后来换成 VIO,稳如老狗。

下面这张图,是我自己总结的视觉 SLAM 与 VIO 的核心对比:

视觉SLAM vs VIO 核心对比 视觉SLAM VIO(视觉惯性里程计) 传感器:单目/双目/深度相机 优势:成本低、纹理丰富 弱点:怕快速运动、怕光照变化 典型:ORB-SLAM3、DSO 应用:室内机器人、AR 传感器:相机 + IMU 优势:高速运动稳定、抗光照 弱点:IMU漂移需视觉修正 典型:VINS-Mono、OKVIS 应用:无人机、手机AR、VR 核心区别:VIO多了一个IMU,解决了纯视觉在快速运动下的失效问题

避坑指南:

我曾经犯过一个错误——在 VIO 系统中把 IMU 的噪声参数设错了。结果系统跑起来,定位误差越来越大,我还以为是算法有问题。后来查了两天,才发现是 IMU 标定没做好。所以,IMU 标定是 VIO 的第一步,也是最重要的一步

1.4 课程目标与学习路径

这门课的目标很明确:让你从零开始,真正掌握视觉 SLAM 和 VIO 融合的实战技能

不是只讲理论,也不是只给代码。而是把理论和实践串起来,让你知道「为什么这么写」以及「出了问题怎么修」。

我建议的学习路径是这样的:

  1. 打好数学基础——三维空间刚体运动、李群李代数、非线性优化。这部分枯燥,但绕不过去。
  2. 理解视觉前端——特征点提取与匹配、光流法、直接法。这是 SLAM 的眼睛。
  3. 掌握后端优化——图优化、BA(光束法平差)、滑动窗口。这是 SLAM 的大脑。
  4. 学习回环检测——词袋模型、位置识别。让机器人知道自己来过这里。
  5. 深入 VIO 融合——IMU 预积分、紧耦合/松耦合、VINS-Mono 源码解析。
  6. 动手实战——从零搭建一个完整的 SLAM 系统,跑通自己的数据集。

一个小建议:

不要一上来就啃 ORB-SLAM 源码。先手写一个简单的 VO(视觉里程计),哪怕只有几百行代码,跑通了再去看开源框架。我当年就是这么过来的,手写一遍,理解深度完全不一样。

嗯,第一章就到这里。内容不多,但都是干货。接下来的每一章,我都会带着你一步步深入。准备好了吗?


专注资料整理