一、单目SLAM概述:从模糊到清晰

大家好,我是老张。今天咱们聊聊单目SLAM。

说实话,我入行那会儿,单目SLAM还是个挺小众的方向。那时候大家更愿意用双目或者RGB-D,毕竟深度信息直接给,省事。但后来我发现,单目SLAM才是真正考验功力的地方——你想想看,只用一只眼睛,就要在三维空间里定位、建图,这本身就是件很酷的事。

1.1 什么是单目SLAM?

单目SLAM,说白了就是:只用一台普通摄像头,同时完成自身定位和环境地图构建

你拿着手机走一圈,它就能知道你在哪、周围长什么样。不需要激光雷达,不需要深度相机,就一个摄像头。我最早接触这个,是在2015年做AR项目的时候。当时客户要求用手机实现室内导航,不能用额外传感器。嗯,那会儿我就知道,单目SLAM这条路必须走通。

核心流程:

  • 图像采集 → 特征提取 → 特征匹配 → 运动估计 → 三角化 → 局部优化 → 全局优化

每一步都有坑,后面我会一个一个讲。

单目SLAM和双目、RGB-D最大的区别在于:它没有直接的深度信息。双目靠视差算深度,RGB-D靠结构光或ToF直接测。单目呢?只能靠运动。你不动,深度就出不来。这就是为什么单目SLAM必须初始化,必须有一段运动来建立初始的深度基准。

1.2 单目SLAM的核心挑战:尺度模糊性

这是单目SLAM最让人头疼的问题,没有之一。

什么叫尺度模糊性?我举个例子:

你拍一张照片,里面有个杯子。你没法知道这个杯子是真实大小10cm,还是模型大小5cm。因为单张图像丢失了深度信息。同样,当你移动相机时,你也没法知道你是移动了1米还是2米——除非你有个参照物。

避坑指南:

我曾经在一个AR项目中,因为尺度没处理好,虚拟物体在真实场景里忽大忽小。用户戴上眼镜一看,一个虚拟的椅子比桌子还大。嗯,那场面,挺尴尬的。后来我花了整整两周,才把尺度一致性调好。

尺度模糊性带来的具体问题:

问题 表现 后果
轨迹漂移 估计的运动轨迹与实际不符 定位不准,地图变形
地图变形 重建的三维点云比例失调 无法用于精确测量
初始化困难 需要特定运动才能启动 用户体验差,容易失败

为什么会这样?因为单目SLAM本质上是在解一个带尺度因子的方程。你算出来的位置和地图,都乘了一个未知的常数λ。这个λ就是尺度因子。没有外部信息,你永远不知道λ是多少。

解决思路其实就两条:

  • 加约束:比如已知物体大小、已知运动速度、已知地面平面
  • 加传感器:比如IMU、轮速计、GPS

我个人习惯是,能加IMU就加IMU。IMU可以提供加速度信息,帮你把尺度定下来。当然,IMU也有自己的问题,比如零偏、噪声,这些后面会细讲。

1.3 应用场景:单目SLAM能干什么?

单目SLAM的应用场景,其实比你想的要多。我挑三个最典型的说说。

AR/VR

这是单目SLAM最火的应用。你玩过Pokémon GO吗?那个小精灵能站在真实地面上,靠的就是单目SLAM。还有苹果的ARKit、谷歌的ARCore,底层都是单目SLAM。

我记得2017年帮一家创业公司做AR试鞋应用。用户用手机拍一下脚,虚拟的鞋子就能穿在脚上。难点在于:脚会动,光线会变,地面可能有花纹。单目SLAM在这种场景下,鲁棒性要求极高。

机器人

扫地机器人、配送机器人、无人机,很多都用单目SLAM。为什么不用激光雷达?便宜啊!一个摄像头几十块钱,一个激光雷达几千块。对于消费级产品,成本是第一位的。

我有个朋友做扫地机器人,他们用单目SLAM做室内定位。一开始效果很差,后来加了IMU和轮速计,融合之后效果才稳定。嗯,这里要注意:单目SLAM在机器人上,通常需要和其他传感器做融合。

自动驾驶

自动驾驶里,单目SLAM主要用于视觉里程计语义地图构建。特斯拉就是纯视觉方案,没有激光雷达。当然,特斯拉用了多目,但核心思想是一样的。

不过说实话,自动驾驶对安全性要求太高,单目SLAM的尺度模糊性是个大问题。你想想看,如果尺度估计错了10%,那刹车距离就全错了。所以自动驾驶里,单目SLAM通常只做辅助,主传感器还是激光雷达或双目。

我的建议:

如果你是初学者,先从AR/VR场景入手。因为AR/VR对精度的要求相对宽松,而且有成熟的SDK可以参考。等把单目SLAM的原理吃透了,再去做机器人和自动驾驶。

1.4 知识体系总览

下面这张图,是我自己总结的单目SLAM知识体系。你可以把它当成整个课程的地图。

单目SLAM知识体系 单目SLAM 尺度模糊性 初始化困难 累积漂移 多传感器融合 优化算法 回环检测 AR/VR 机器人 自动驾驶 核心:尺度恢复是贯穿始终的主线

从这张图你可以看到,单目SLAM的核心是尺度恢复。所有的挑战、解决方案、应用场景,都围绕着这个核心展开。后面的课程,我会从特征提取开始,一步步带你走通整个流程。

好了,第一章就到这里。记住一句话:单目SLAM的本质,是从模糊中寻找确定。下一章,我们聊聊特征提取——这是SLAM的第一步,也是最基础的一步。


公众号:蓝海资料掘金营,微信deep3321