Home / 机器人经典基础 / ORB-SLAM:从持续跟踪走向能够重访和恢复的单目地图

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等模块组织到统一地图中。

五个前置概念

五个前置概念:

  1. 三角化:利用不同视点的射线恢复三维点。
  2. Bundle Adjustment:联合优化相机位姿与地图点的重投影误差。
  3. 共视:多个关键帧观察到相同三维点的关系。
  4. Sim(3):含尺度、旋转和平移的相似变换。
  5. 重定位:跟踪中断后利用旧地图重新估计相机位姿。

一、问题设定:单目关键帧地图怎样支持重定位与长期回访

相机向前走时,靠相邻图像估计运动可以形成一条轨迹。但一旦跟踪丢失,或绕一圈回来,系统还需要认出旧地点并修正累计误差。否则地图只是不断增长的历史记录。

问题定义:相机位姿和地图一起估计

输入是经过标定的单目图像流;状态包括关键帧位姿与三维地图点。输出是相机轨迹与稀疏地图,没有 IMU、双目深度或强化学习策略。

单幅图像不能确定深度,多幅图像可以通过视差约束结构,但整体尺度仍不可观测。系统内部可以选定一个尺度,评价时再做相似变换对齐。不要把这种评价操作当作算法从图像中恢复了绝对距离。

与 PTAM 相比,本篇强调自动初始化、全局回环、对视角变化更稳健的重定位和更大的地图范围。它继承关键帧 BA、词袋检索及尺度回环等已有思想,新意主要在组件改进与系统组织。

二、统一ORB特征,区分共视图与回环约束

地图里的几种图,各负责什么

共视图连接观察到相同地图点的关键帧,帮助定位局部相关区域。生成树保持全局连通骨架。Essential Graph由生成树、强共视边和回环边构成,用较稀疏的约束做全局优化。

“Essential Graph”不是本质矩阵,也不是将所有地图点都删掉只剩位姿。系统仍保留地图点与局部 BA,稀疏全局图主要服务回环修正。

三个并行线程分别做逐帧跟踪、局部建图与回环。局部 BA 耗时可以大于相机帧间隔,因为它与逐帧跟踪并行;实时系统不要求每个后台任务都逐帧完成。

初始化:宁可等待,也不急着选错解释

第 IV 节并行拟合单应矩阵 HH 和基础矩阵 FF。前者适合平面及部分退化情况,后者用于具有足够视差的一般结构。

论文以得分比例 RH=SH/(SH+SF)R_H=S_H/(S_H+S_F) 选择模型,给出的启发式阈值是 0.45。选好模型还不够,必须检验运动假设的正深度、视差和重投影误差;有多个难以区分的解释时继续等待。

这种拒绝初始化是合理行为。一个系统立即给出错误地图,不能仅凭“成功启动”就比谨慎等待的系统更稳健。实验中的平面二义性案例正说明了这个问题。

跟踪、BA 与回环的数学关系

基本重投影残差可写为:

eij=zij−π(TiwPj),min⁡T,P∑ijρ(eijTΣij−1eij).e_{ij}=z_{ij}-\pi(T_{iw}P_j),\qquad \min_{T,P}\sum_{ij}\rho(e_{ij}^{\mathsf T}\Sigma_{ij}^{-1}e_{ij}).

zijz_{ij} 是地图点 jj 在关键帧 ii 的图像观测,TiwT_{iw} 将世界点变到相机坐标,π\pi 为投影。跟踪时通常固定地图点,只优化当前位姿;局部 BA 同时优化局部关键帧和地图点,边界观测的其他关键帧固定。

回环需要处理单目尺度漂移,因此使用含尺度的相似变换 Sim(3)Sim(3),而不是只调整平移旋转的 SE(3)SE(3)。词袋检索只给候选,随后通过几何一致性和相似变换验证。

目标函数减小几何观测误差;算法机制是检索、关键帧筛选和分层优化;实验指标包括轨迹误差、恢复召回率和处理时间。三者不能简写为“ORB 特征让所有误差都下降”。

关键帧剔除考虑其他关键帧是否以相同或更细尺度观察其大部分点,不是按时间间隔机械删帧。这让短期快速插帧和长期紧凑地图可以并存。

尺度修正为什么必须同时作用于地图点

为避免把“七自由度”只当成术语,设某关键帧的相似变换为 Siw:Xw↦siRiXw+tiS_{iw}:X_w\mapsto s_iR_iX_w+t_i,其中 si>0s_i>0 是尺度,RiR_i 是旋转,tit_i 是平移。投影满足 π(siRiXw+ti)=π(RiXw+ti/si)\pi(s_iR_iX_w+t_i)=\pi(R_iX_w+t_i/s_i),所以从优化后的相似变换恢复用于投影的刚体位姿时,平移必须除以尺度,不能直接删去 sis_i。

地图点也要随参照关键帧一起修正。若该帧优化前后变换分别为 SiwoldS_{iw}^{old} 与 SiwnewS_{iw}^{new},保持相似变换所得局部坐标不变、因而保持图像投影一致的更新是

Xwnew=(Siwnew)−1SiwoldXwold.X_w^{new}=(S_{iw}^{new})^{-1}S_{iw}^{old}X_w^{old}.

原创教学例。 只看一维坐标,把旧变换设为 Sold(X)=XS^{old}(X)=X、新变换设为 Snew(X)=2X+1S^{new}(X)=2X+1。旧地图点 3 应改成 (3−1)/2=1(3-1)/2=1,再投进新帧仍是 3;若只改相机却把地图点留在 3,新帧中会得到 7。这个算例不模拟完整回环,只检查“相机与地图一起改”的坐标一致性。

原文 VII-D 与附录说明按观察关键帧的修正更新地图点,并固定一个回环关键帧消除七维规范自由度。固定参考系让方程可求,不提供外部米制标尺;因此下文实验中的尺度对齐与系统自身尺度可观测性仍须分开。

共视关系、BA与回环各约束不同范围,统一特征并不抹去这些职责。下面先检查初始化与尺度,再把局部和长期结果拆开。

三、完成初始化跟踪和地图维护,检查尺度

对每帧图像:
    提取 ORB 特征
    若地图未初始化:并行拟合 H/F,验证重建;不足时等待
    否则:预测位姿并匹配上一帧/局部地图
    若跟踪失败:词袋检索候选,PnP+几何验证重定位
    优化当前位姿,按视觉变化与跟踪条件考虑插入关键帧
局部建图线程:
    更新共视关系,三角化新点,剔除不可靠点
    运行局部 BA,删除冗余关键帧
回环线程:
    检索时间一致的候选并几何验证
    估计 Sim(3),融合重复地图点,优化 Essential Graph
返回当前轨迹和可复用的稀疏地图

自构例子与前置概念

自构例子,未运行:拿相机绕办公室一圈。局部 BA 不断修正附近桌角,但整圈的尺度与方向仍可能漂移;回到门口后,ORB 匹配与几何验证建立远距离约束,Sim(3) 图修正把两个门口对齐。若只是看到相似房门却不是同一地点,词袋分数高也不能直接闭环。

四、按系统模式读轨迹误差与恢复结果

Fig. 9:横轴时间增长时,对比重复观察同一静态环境的关键帧数量
原论文结果图/表摘引:Raúl Mur-Artal、J. M. M. Montiel、Juan D. Tardós(2015),Fig. 9,PDF 第 13 页;核对原文。原版权保留。

读图:横轴时间增长时,对比重复观察同一静态环境的关键帧数量。冗余删除让 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。 同一环境的关键帧增删;冗余删除可限制重复区域增长;不能据此推出:探索无限新环境时地图仍固定大小。

原论文图10:动态环境中关键帧数量、创建销毁和存活比例三个面板
Raúl Mur-Artal、J. M. M. Montiel、Juan D. Tardós(2015),图 10,PDF 第 13 页;原文与图注。原版权保留。

读图:(a)统计当前地图中的关键帧,(b)每条横线表示一帧的寿命,(c)统计相对剩余序列长度的存活比例;三者的纵轴不能混用。

表 VI、图 13。 KITTI 09 不同回环优化;先图优化可改善大误差初值;不能据此推出:更多 BA 迭代总能解决错误初值。

原论文图13:KITTI 09中四种回环处理方案与真值的轨迹对比
Raúl Mur-Artal、J. M. M. Montiel、Juan D. Tardós(2015),图 13,PDF 第 15 页;原文与图注。原版权保留。

读图:按无回环、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排名?

参考答案:关闭功能改变了被测系统的能力与计算开销。应注明模式并分开评价局部轨迹、恢复和全局一致性。单目尺度对齐后的误差还不表示系统独立恢复米制尺度;各项比较需要相同输入与对齐协议。

七、将单目系统扩展到深度输入

八、自测与参考答案

问题一:为什么单目 ATE 很小,不代表算法恢复了真实尺度?

答案:单目评估先用含尺度的相似变换对齐真值,消除了全局尺度自由度。小 ATE 描述对齐后的轨迹形状与位置一致性,不能证明算法自身从图像知道“一米”。要获得物理尺度,需要额外信息或假设。

问题二:为什么有时拒绝初始化反而是更稳健的设计?

答案:低视差或平面二义性使多个三维解释同时符合图像。强行选一个可能产生看似合理却错误的地图,后续优化难以恢复。等待额外视差是在承认观测信息不足,不能只按启动速度评价。

问题三:为什么回环先做稀疏图优化,而不是直接无限增加 BA 次数?

答案:长程漂移可能使全局 BA 初值很差,局部非线性优化难以跨越较大误差。尺度感知图约束先把全局结构拉回合理范围,再做 BA 才更有效。表 VI 正是对这一机制的具体证据。