VO vs SLAM

视觉里程计(Visual Odometry, VO) 从连续帧中估计局部的、增量式的相机运动:在帧间匹配或跟踪特征(对于直接法,则是最小化光度误差),估计相对位姿,并将这些估计链接起来。VO没有全局地图的概念,也无法执行回环检测——因此漂移会无限累积。沿着一个较长的环走一圈回到起点后,纯VO轨迹是无法闭合的。

视觉SLAM 在VO的基础上扩展了全局一致性机制:

一个简明的对比:

方面VOSLAM
范围局部(近期帧的窗口)全局(整条轨迹+地图)
漂移无限增长在回环处被校正
地图无,或临时局部地图持久、可复用
成本低,有界更高;随地图规模增长
故障恢复丢失即永久丢失相对地图进行重定位

VO流程实际做了什么

具体来说,一次基于特征的VO迭代大致如下——值得内化理解,因为它同时也是每个基于特征的SLAM系统的跟踪线程:

  1. 在新帧中检测/跟踪特征(FAST/ORB检测,或从上一帧进行KLT跟踪)。
  2. 与前一帧(或多帧)进行关联:描述子匹配或已跟踪的对应关系,经RANSAC剔除误匹配。
  3. 估计相对位姿:由2D-2D匹配得到本质矩阵(初始化阶段),或对局部三角化的3D点进行PnP(稳态阶段)。
  4. 从估计的运动中三角化新的点,以维持局部3D结构的持续更新。
  5. 局部细化:对最近若干帧/关键帧进行小规模光束法平差(滑动窗口BA)。

直接法VO用光度对齐取代步骤1-3:在位姿(以及逐像素深度)上最小化帧间像素强度误差,跳过显式的对应关系建立。无论哪种方式,输出都是一串相对位姿链——第3步之后的每一个阶段都是为了减缓漂移,而不是消除漂移。

对应的评价指标:**RPE(相对位姿误差)**衡量在固定距离/时间间隔上位姿增量的误差——即漂移率,是VO的诚实评分。**ATE(绝对轨迹误差)**衡量将估计结果与真值对齐后的全局位置误差——主要取决于是否闭合了回环,是SLAM的评分。一个RPE优异但ATE较差的系统是一个没有全局一致性的优秀里程计;反之则说明该系统在噪声较大的前端之上拥有强大的回环检测能力。

二者的边界是一个连续谱

DSO和SVO是VO系统;LDSO是”DSO+回环检测”,即同一前端被提升为SLAM。ORB-SLAM的跟踪线程本身基本上就是一个VO系统——正是局部建图线程和回环检测线程使其成为SLAM。在VIO中,同样的区分体现为里程计(MSCKF、VINS前端)与具有地图复用功能的完整SLAM(ORB-SLAM3、启用回环检测的VINS-Mono)之间的对比。

需要哪一种是一个工程决策。如果只关心短时间尺度的自我运动(例如为控制器提供输入、无人机稳定控制),VO的有界计算量和简洁性更有优势。如果机器人会重访某些地点、需要长期运行,或必须在先验地图中定位,那么就需要SLAM——没有其他手段能够阻止无限的漂移。

常见陷阱

对SLAM的意义

这一区分组织了整个领域:你将学习的几乎每一个系统,都或者是一种VO/里程计方法,或者是一个通过在VO核心之外包裹地图管理、位置识别和全局优化而构建的SLAM系统。了解一篇论文所声称的是哪一类(局部精度还是全局一致性),能够告诉你哪些基准指标是重要的——VO看RPE,带回环检测的SLAM看ATE——以及它的失效模式将会是什么。

动手实践

相关条目