本节摘要:自动驾驶要知道"我在哪"。本节讲视觉 SLAM——边建图边定位,自动驾驶定位的核心技术之一。
阅读完本节,你应当能够:
SLAM(Simultaneous Localization and Mapping)= 同时定位与建图:在未知环境边建地图边定位自己。自动驾驶用它做局部定位和地图构建。

视觉 SLAM 四模块:
| 系统 | 特点 |
|---|---|
| ORB-SLAM | 特征点法,经典 |
| VINS-Mono/Fusion | 视觉+IMU 融合 |
| LSD-SLAM | 直接法 |
| DSO | 直接法稀疏 |
| KinectFusion | RGB-D |
自动驾驶常用 VINS(视觉+IMU)或 ORB-SLAM。
| 方法 | 特点 |
|---|---|
| 特征点法 | 提特征点匹配,ORB-SLAM |
| 直接法 | 用像素强度,LSD/DSO |
| 半直接法 | 结合,SVO |
特征点法稳定,直接法用全部信息但受光照影响。
视觉 SLAM 常融合 IMU(VIO):
VINS-Mono/Fusion 是视觉+IMU SLAM 代表。
自动驾驶定位两种方式:
实际自动驾驶多用高精地图定位(地图预建),SLAM 用于建图和 GPS 失效场景。
⚠️ SLAM vs 高精地图:自动驾驶已知道路多用高精地图定位(地图预建),SLAM 用于建图和 GPS 失效(隧道)场景,不是主定位方式。
💡 关键直觉:SLAM 边建图边定位,四模块(前端里程计/后端优化/回环/建图)。视觉+IMU(VINS)互补。自动驾驶用高精地图定位为主,SLAM 用于建图和 GPS 失效。挑战动态环境/快速运动/纹理弱。
第 2 章结束。下一章讲传感器与数据。
视觉里程计的核心是从两帧图像估计相机运动。特征点法的流程:提取关键点(ORB 角点)→ 特征描述子匹配 → 用对极几何(本质矩阵)或 PnP 求解相对位姿 → RANSAC 剔除误匹配。直接法则不走特征匹配,而是最小化两帧之间像素光度误差,能利用所有像素信息,在纹理稀疏环境更稳,但对光照和相机参数敏感。半直接法(SVO)介于两者之间。工程上 ORB-SLAM 系列的特征点方案因鲁棒性和可复现性好,被用到最多。
关键帧1, 关键帧2 -> 特征提取与匹配(ORB) -> 本质矩阵/PnP 求相对位姿 -> RANSAC 剔误匹配 -> 局部 BA: 同时优化位姿与地图点 -> 回环候选: 词袋检索 -> 位姿图优化 -> 全局一致
长时间 SLAM 会累积漂移——转了一圈,估计的位置可能偏了几米。回环检测用词袋(BoW)把帧的视觉特征聚成词汇,当前帧在词袋里检索到已访问过的关键帧,就建立回环约束,在位姿图上做全局优化,把漂移拉回来。自动驾驶实际落地时,多数场景走"高精地图定位"路线:地图在建图阶段已经做好,运行时只用视觉(或视觉加激光)与地图匹配,算出精确位姿,计算量比实时 SLAM 小得多,精度也更稳定。SLAM 的价值体现在没有地图的地方——地下车库、隧道、园区新道路,这也是"记忆泊车"这类功能的底层支撑。选择特征点法还是直接法,还要考虑算力平台:特征提取和匹配在 GPU 与 DSP 上有成熟算子,直接法虽然有更多像素信息,但迭代优化对实时算力的要求更高。多数车规级方案最终是"视觉里程计加 IMU 预积分加词袋回环"的组合,兼顾精度、鲁棒性和可部署性。