082|ORB-SLAM:从持续跟踪走向能够重访和恢复的单目地图
论文:Raúl Mur-Artal、J. M. M. Montiel、Juan D. Tardós,ORB-SLAM: A Versatile and Accurate Monocular SLAM System,2015。原文 · 官方代码。
先接住前作的问题
PTAM解决了局部关键帧跟踪与建图的分工,长期重访、失踪恢复与尺度漂移仍需要额外机制;ORB-SLAM 将ORB与DBoW等模块组织到统一地图中。
五个前置概念
五个前置概念:
- 三角化:利用不同视点的射线恢复三维点。
- Bundle Adjustment:联合优化相机位姿与地图点的重投影误差。
- 共视:多个关键帧观察到相同三维点的关系。
- Sim(3):含尺度、旋转和平移的相似变换。
- 重定位:跟踪中断后利用旧地图重新估计相机位姿。
一、问题设定:单目关键帧地图怎样支持重定位与长期回访
相机向前走时,靠相邻图像估计运动可以形成一条轨迹。但一旦跟踪丢失,或绕一圈回来,系统还需要认出旧地点并修正累计误差。否则地图只是不断增长的历史记录。
问题定义:相机位姿和地图一起估计
输入是经过标定的单目图像流;状态包括关键帧位姿与三维地图点。输出是相机轨迹与稀疏地图,没有 IMU、双目深度或强化学习策略。
单幅图像不能确定深度,多幅图像可以通过视差约束结构,但整体尺度仍不可观测。系统内部可以选定一个尺度,评价时再做相似变换对齐。不要把这种评价操作当作算法从图像中恢复了绝对距离。
与 PTAM 相比,本篇强调自动初始化、全局回环、对视角变化更稳健的重定位和更大的地图范围。它继承关键帧 BA、词袋检索及尺度回环等已有思想,新意主要在组件改进与系统组织。
二、统一ORB特征,区分共视图与回环约束
地图里的几种图,各负责什么
共视图连接观察到相同地图点的关键帧,帮助定位局部相关区域。生成树保持全局连通骨架。Essential Graph由生成树、强共视边和回环边构成,用较稀疏的约束做全局优化。
“Essential Graph”不是本质矩阵,也不是将所有地图点都删掉只剩位姿。系统仍保留地图点与局部 BA,稀疏全局图主要服务回环修正。
三个并行线程分别做逐帧跟踪、局部建图与回环。局部 BA 耗时可以大于相机帧间隔,因为它与逐帧跟踪并行;实时系统不要求每个后台任务都逐帧完成。
初始化:宁可等待,也不急着选错解释
第 IV 节并行拟合单应矩阵 和基础矩阵 。前者适合平面及部分退化情况,后者用于具有足够视差的一般结构。
论文以得分比例 选择模型,给出的启发式阈值是 0.45。选好模型还不够,必须检验运动假设的正深度、视差和重投影误差;有多个难以区分的解释时继续等待。
这种拒绝初始化是合理行为。一个系统立即给出错误地图,不能仅凭“成功启动”就比谨慎等待的系统更稳健。实验中的平面二义性案例正说明了这个问题。
跟踪、BA 与回环的数学关系
基本重投影残差可写为:
是地图点 在关键帧 的图像观测, 将世界点变到相机坐标, 为投影。跟踪时通常固定地图点,只优化当前位姿;局部 BA 同时优化局部关键帧和地图点,边界观测的其他关键帧固定。
回环需要处理单目尺度漂移,因此使用含尺度的相似变换 ,而不是只调整平移旋转的 。词袋检索只给候选,随后通过几何一致性和相似变换验证。
目标函数减小几何观测误差;算法机制是检索、关键帧筛选和分层优化;实验指标包括轨迹误差、恢复召回率和处理时间。三者不能简写为“ORB 特征让所有误差都下降”。
关键帧剔除考虑其他关键帧是否以相同或更细尺度观察其大部分点,不是按时间间隔机械删帧。这让短期快速插帧和长期紧凑地图可以并存。
尺度修正为什么必须同时作用于地图点
为避免把“七自由度”只当成术语,设某关键帧的相似变换为 ,其中 是尺度, 是旋转, 是平移。投影满足 ,所以从优化后的相似变换恢复用于投影的刚体位姿时,平移必须除以尺度,不能直接删去 。
地图点也要随参照关键帧一起修正。若该帧优化前后变换分别为 与 ,保持相似变换所得局部坐标不变、因而保持图像投影一致的更新是
原创教学例。 只看一维坐标,把旧变换设为 、新变换设为 。旧地图点 3 应改成 ,再投进新帧仍是 3;若只改相机却把地图点留在 3,新帧中会得到 7。这个算例不模拟完整回环,只检查“相机与地图一起改”的坐标一致性。
原文 VII-D 与附录说明按观察关键帧的修正更新地图点,并固定一个回环关键帧消除七维规范自由度。固定参考系让方程可求,不提供外部米制标尺;因此下文实验中的尺度对齐与系统自身尺度可观测性仍须分开。
共视关系、BA与回环各约束不同范围,统一特征并不抹去这些职责。下面先检查初始化与尺度,再把局部和长期结果拆开。
三、完成初始化跟踪和地图维护,检查尺度
对每帧图像:
提取 ORB 特征
若地图未初始化:并行拟合 H/F,验证重建;不足时等待
否则:预测位姿并匹配上一帧/局部地图
若跟踪失败:词袋检索候选,PnP+几何验证重定位
优化当前位姿,按视觉变化与跟踪条件考虑插入关键帧
局部建图线程:
更新共视关系,三角化新点,剔除不可靠点
运行局部 BA,删除冗余关键帧
回环线程:
检索时间一致的候选并几何验证
估计 Sim(3),融合重复地图点,优化 Essential Graph
返回当前轨迹和可复用的稀疏地图
自构例子与前置概念
自构例子,未运行:拿相机绕办公室一圈。局部 BA 不断修正附近桌角,但整圈的尺度与方向仍可能漂移;回到门口后,ORB 匹配与几何验证建立远距离约束,Sim(3) 图修正把两个门口对齐。若只是看到相似房门却不是同一地点,词袋分数高也不能直接闭环。
四、按系统模式读轨迹误差与恢复结果

读图:横轴时间增长时,对比重复观察同一静态环境的关键帧数量。冗余删除让 ORB-SLAM 曲线趋缓,证据范围是重访环境,不意味着探索无限新区域时地图仍固定大小。
实验设计与评价口径
第一代 ORB-SLAM 的单目结果应保留尺度对齐条件;第二、三代的深度、惯性和多地图功能不能移入这里。
| 实验 | 数据与条件 | 基线与指标 | 必须保留的限制 |
|---|---|---|---|
| NewCollege | 2.2 km 机器人序列,使用单目 | 地图、线程时间、回环表现 | 反向经过的大环存在回环漏检 |
| TUM | 选择适合单目的 16 个序列 | PTAM、LSD-SLAM、RGBD-SLAM;关键帧 ATE | 不是整个 TUM 全集;RGB-D 使用额外深度 |
| 重定位 | 先建地图,再定位后续或另一动态序列 | 召回率与成功恢复帧误差 | 与在线从零建图条件不同 |
| 地图复用 | 同一区域不同视点及动态序列 | 关键帧数量、创建/删除过程 | 有限实验不是无限生命周期证明 |
| KITTI | 左相机,逐序列五次执行 | 关键帧 RMSE、回环优化方案 | 01 失败;09 报告检测到回环的执行 |
TUM 的单目方法采用七自由度对齐;PTAM 初始化由人工选择合适帧,LSD-SLAM 的初始关键帧被按文中规则排除。公平讨论需要写明这些处理,而不是只给一列最低误差。
这里没有策略训练或环境交互预算。重复执行次数明确,但实验表未统一报告全部任务的置信区间。原文给出的部分结果来自网站已有轨迹,也不等同于全部方法都在完全相同代码环境下重新训练运行。
关键证据:系统优势不代表每个单项都赢
表 I、II。 跟踪、局部建图、回环耗时;不同频率模块可并行组织;不能据此推出:总时间简单相加就是每帧延迟。
表 III。 所选 TUM 序列 ATE 与失效;多数序列精度和鲁棒性较好;不能据此推出:每条序列误差最低。
表 IV。 重定位召回与误差;能从更多视角恢复定位;不能据此推出:更高召回必然伴随更低条件误差。
图 9、10。 同一环境的关键帧增删;冗余删除可限制重复区域增长;不能据此推出:探索无限新环境时地图仍固定大小。

读图:(a)统计当前地图中的关键帧,(b)每条横线表示一帧的寿命,(c)统计相对剩余序列长度的存活比例;三者的纵轴不能混用。
表 VI、图 13。 KITTI 09 不同回环优化;先图优化可改善大误差初值;不能据此推出:更多 BA 迭代总能解决错误初值。

读图:按无回环、BA、Essential Graph以及二者组合的顺序读四个面板;地图变得闭合仍需结合正文误差衡量。
表 III 中 fr2_xyz 的 RMSE 为 ORB-SLAM 0.30 cm、PTAM 0.20 cm,说明优势并非所有单项都成立。表 IV 的 fr2_xyz 重定位召回为 78.4% 对 34.9%,但成功恢复帧的 RMSE 为 0.38 cm 对 0.26 cm;覆盖更多困难帧会改变误差统计的样本组成。
表 VI 的同一次 KITTI 09 比较中,无回环误差 48.77 m;直接做 20 次 BA 为 49.90 m,而 Essential Graph 的一个配置约 0.48 s 得到 8.36 m。它说明非线性 BA 需要好的初值和全局约束,不能靠迭代次数替代回环信息。
更需注意的是,KITTI 09 常规结果只纳入成功检测到末尾回环的执行。这个条件应留在解读中,不能当作任意重复都能得到的无条件成绩。NewCollege 反向经过的大环未闭合,也直接展示地点识别的边界。
五、保留低视差、弱纹理与单目尺度自由度
统一特征避免跟踪与地点识别维护两套不一致的信息;共视局部地图让计算集中于相关区域;关键帧积极插入、严格删除兼顾短期鲁棒性和长期规模。这些系统决策共同起作用。
局限包括单目尺度、稀疏地图、无纹理、远处结构与低视差、动态遮挡及外观变化。原文提出未来加入无穷远点和更密重建,而不是已经解决这些问题。
作者用当时比较讨论特征法与直接法的精度。本文分析认为,这些结果比较的是具体系统及配置,不能成为“特征法在所有情况下必然优于直接法”的定理;后续方法还会改变优化、标定和评价设置。
六、追问:关闭回环后与另一视觉里程计比较,为什么不能把结论直接写成完整SLAM排名?
关闭回环后与另一视觉里程计比较,为什么不能把结论直接写成完整SLAM排名?
参考答案:关闭功能改变了被测系统的能力与计算开销。应注明模式并分开评价局部轨迹、恢复和全局一致性。单目尺度对齐后的误差还不表示系统独立恢复米制尺度;各项比较需要相同输入与对齐协议。
七、将单目系统扩展到深度输入
- 直接继承:ORB-SLAM2:把单目、双目和深度观测接入同一套 SLAM 后端。把架构扩展到双目和RGB-D,并增加全局优化。
八、自测与参考答案
问题一:为什么单目 ATE 很小,不代表算法恢复了真实尺度?
答案:单目评估先用含尺度的相似变换对齐真值,消除了全局尺度自由度。小 ATE 描述对齐后的轨迹形状与位置一致性,不能证明算法自身从图像知道“一米”。要获得物理尺度,需要额外信息或假设。
问题二:为什么有时拒绝初始化反而是更稳健的设计?
答案:低视差或平面二义性使多个三维解释同时符合图像。强行选一个可能产生看似合理却错误的地图,后续优化难以恢复。等待额外视差是在承认观测信息不足,不能只按启动速度评价。
问题三:为什么回环先做稀疏图优化,而不是直接无限增加 BA 次数?
答案:长程漂移可能使全局 BA 初值很差,局部非线性优化难以跨越较大误差。尺度感知图约束先把全局结构拉回合理范围,再做 BA 才更有效。表 VI 正是对这一机制的具体证据。