089|ORB-SLAM2:把单目、双目和深度观测接入同一套 SLAM 后端
返回总览 · 上一篇:COLMAP · 下一篇:SE-Sync
论文:Raúl Mur-Artal、Juan D. Tardós,ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras,2016 年首次公开,2017 年发表于 T-RO。论文 v2 · 官方代码。
先接住前作的问题
ORB-SLAM已经有回环和恢复,但单目初始化与尺度仍是瓶颈;本篇直接继承其架构,把双目与 RGB-D 深度转为统一观测,并增加异步全局 BA。
五个前置概念
- 视差:校正双目中左右对应位置的水平差,与深度成反比。
- 公制尺度:重建长度对应实际单位,需要已知基线或深度等信息。
- 共视图:连接观察到共同地图点的关键帧。
- 重定位:跟踪中断后,相对已有地图重新估计位姿。
- 局部与全局 BA:调整的状态范围不同,计算频率和代价也不同。
一、问题设定:双目和RGB-D怎样接入原有单目SLAM架构
单目 ORB-SLAM 已能跟踪、建图、回环和重定位,但一张单目图像不能直接给出深度和公制尺度。双目或 RGB-D 可以更早得到三维点,却也带来不同的观测形式和噪声。
问题定义与背景
这是在线定位与建图系统,不是强化学习。输入分别可以是单目、校正后的双目或对齐深度图的 RGB-D;输出是相机位姿与地图点。这里“三种输入”是系统支持不同模式,不表示随时把任意三种设备自动混合标定。
单目模式继承前作的多视图初始化与尺度问题;双目和 RGB-D 以已标定的基线或深度尺度提供公制约束。一旦深度尺度标定偏了,地图也会受影响。因此“尺度可观测”不等于“尺度数值永远准确”。
长期漂移需要与旧地图重新建立联系。纯 VO 只向前累计局部变化;SLAM 通过回环与地图复用纠正累计误差。反过来,错误地点识别也可能污染地图,所以外观匹配之后必须几何验证。
二、统一观测表达,区分近点远点的信息
ORB-SLAM2 将这些输入统一为单目二维观测或双目三维观测。RGB-D 深度被转换成“虚拟右图坐标”,后端继续使用特征匹配、局部 BA、回环修正和全局 BA。近点和远点分开处理,让系统同时利用近点的平移信息与远点的旋转信息。
1. 虚拟双目观测
双目关键点可写为 ,校正后的左右对应点位于同一扫描线。RGB-D 特征的深度 可以转成:
为焦距, 是等效基线。它让同一后端以相同形式处理深度,但虚拟右坐标并非真的拍到一张右图。噪声模型和深度尺度仍需要正确设定;深度无效的特征可保留为单目观测,不能当零深度点使用。
虚拟双目还暴露一个容易忽视的统计关系。令 、深度为 ,假设左像素误差 与深度误差 独立,方差分别为 。一阶展开给出 ,故左、右虚拟坐标的协方差为
原创手算。 取 px、 m、 m、 px、 m,则矩阵为 px²。视差 的方差是 px²,而把两项误认为独立会得到 2.25 px²。这里说明的是由共享左坐标产生的相关性,不是宣称原始 ORB-SLAM2 实现采用了这张完整协方差矩阵。
原文 III-A–B用虚拟坐标统一几何投影,并采用特征尺度相关的优化权重;“统一表示”本身不证明各种深度传感器具有相同噪声模型。下文 Freiburg2 的深度尺度补偿也属于另一层系统误差:再精细的随机协方差都不能自动纠正整体深度乘了错误比例。
2. 近点与远点
论文第 III-A 节采用约四十倍基线的深度阈值。近点的视差较可靠,对尺度和平移有帮助;远点视差小,旋转信息仍有价值,但单帧深度不稳定,需要更多视图支持。
对双目公式 求导,可以得到教学近似 。同样一个像素的视差误差,对远点造成更大的深度误差。这解释为何不能把所有点视为等精度,也说明“四十倍”是工程阈值而非普遍物理常数。
3. 三种 BA 的区别
跟踪中的 motion-only BA 固定地图点,只优化当前位姿;局部 BA 同时优化邻近关键帧和地图点,并让相关外部关键帧作为固定约束;全局 BA 在回环后优化整张地图,固定原点以消除规范自由度。
共同目标是鲁棒重投影误差:
输出二维单目坐标, 输出三维双目坐标; 为 Huber 代价。这个公式是当前位姿优化形式,局部或全局 BA 还把相应地图变量放入优化。BA 的非线性局部求解不自动获得全局最优。
4. 回环之后,全局 BA 不能阻塞一切
系统先验证回环、融合重复点并优化位姿图,再用独立线程运行全局 BA。运行期间新关键帧仍可能加入,所以 BA 完成后需通过生成树传播修正;若又发现新回环,则中止旧优化并启动新的修正过程。
双目/深度下尺度可观测,相关回环处理采用刚体变换;单目仍要考虑尺度。不能因为软件名相同,就把两种模式的数学自由度混为一谈。
5. 定位模式与伪代码
定位模式关闭建图和回环线程,主要使用既有地图匹配,必要时重定位;进入未建图区域时还利用相邻帧生成的 VO 点。前者约束相对旧地图的累计漂移,后者仍可能漂移。“零漂移”应理解为持续相对既有地图定位,而非任何时刻绝对误差为零。
虚拟右坐标统一几何表达,近远点和传感器噪声仍提供不同强度的信息。下面检查观测到BA的接口,再按模式读米制定位结果。
三、运行局部与全局优化,检查米制尺度来源
输入:单目、双目或 RGB-D 流以及相应标定
提取 ORB;生成单目观测和真实/虚拟双目观测
按输入模式初始化地图
每帧:
预测位姿,匹配局部地图,进行 motion-only BA
若跟踪失败,检索历史关键帧并几何验证重定位
若允许建图且需要新关键帧:
插入关键帧,生成或三角化点,局部 BA,剔除冗余
回环线程验证地点重访:
融合地图并进行位姿图修正
后台启动全局 BA;必要时中止旧任务
完成后向新加入的关键帧和点传播修正
输出:相机轨迹与稀疏地图
这是教学流程。优化目标、系统机制和实测误差是三层概念;线程多也不是算法自动获得低延迟的证明。
具体例子与前置概念
自构例子,未运行。 取焦距 500 px、基线 0.1 m。2 m 处视差 25 px,20 m 处仅 2.5 px;0.5 px 误差对应的一阶深度误差约为 0.04 m 与 4 m。远点深度不准仍可对朝向变化提供约束,解释了“不丢掉所有远点,也不把远点当可靠近点”。
四、按传感器模式读跨场景实验
五组关键结果
表 I,KITTI 01。 双目系统能处理前作单目失败的高速公路序列;相对平移误差为 1.39%,Stereo LSD-SLAM 为 2.36%。但绝对平移 RMSE 为 10.4 m,对照为 9.0 m。两个指标给出不同排序,不能只挑一项说全面更准。KITTI 00 相对平移 0.70% 也高于对照 0.63%。
图 3、5:深度与尺度。 近点短暂可见时,双目较早初始化点有帮助;远点辅助旋转。作者用 KITTI 08 对比单目尺度漂移与双目轨迹,但它不是把传感器完全相同后只移除某一个代码模块的消融。

读图:绿色点以立体基线倍数定义为近点,蓝色点更远;颜色并非跟踪正确与错误的标签。

读图:黑色为估计轨迹、红色为真值;左右使用不同传感信息,不能解释成只替换了优化器。
表 II:EuRoC 并非全部成功。 V1_02 为 0.020 m,对照 0.074 m;MH_04 为 0.119 m;V2_03 明确失败,原因是严重模糊。因此“厘米级”有具体序列条件,不能把失败行从总体稳健性叙述中删去。对照仅部分序列有数值,“—”不是零误差。
表 III:RGB-D 的优势与例外。 fr3/office 为 0.010 m、ElasticFusion 0.017 m;fr3/nst 则为 0.019 m、ElasticFusion 0.016 m。本方法不总领先。fr2/xyz 的 0.004 m 还应连同深度尺度补偿一起理解,不能单凭它证明稀疏 BA 普遍胜过稠密方法。
表 IV:实时跟踪不等于全图每帧更新。 EuRoC、KITTI、TUM 示例平均跟踪耗时分别 41.66、49.47、25.58 ms;TUM 示例全局 BA 本身约 1640.96 ms,在后台单次执行。平均跟踪低于相机周期支持实时运行,但误差条与单次记录不构成最坏延迟保证。
另一个限制是 KITTI 09 的末尾回环没有检测到;不能写成所有存在回环的序列都成功闭环。证据见原文第 IV 节。

读图:同一序列中同时检查相对平移误差和绝对 RMSE,两种指标可能给出相反排序。KITTI 01 说明双目可完成单目困难场景,但并非每一列都比对照更低。
第二代系统的双目/RGB-D 地图有公制信息;ORB-SLAM3 的视觉惯性、多地图及鱼眼能力属于后作。
| 项目 | 原文报告 |
|---|---|
| 数据集 | KITTI 11 条公开真值序列、EuRoC 11 条、TUM RGB-D 7 条选定序列,共 29 条评测输入 |
| 传感器 | KITTI、EuRoC 使用双目视觉;EuRoC 虽提供 IMU,但本系统此处没有使用 |
| 计算 | i7-4790、16 GB RAM;每序列运行五次,报告轨迹精度中位数 |
| 对照 | Stereo LSD-SLAM、ElasticFusion、Kintinuous、DVO-SLAM 等,取原作者发表结果,并非全部同机重跑 |
| 精度指标 | KITTI 同时报相对平移/旋转误差与绝对平移 RMSE;其他表主要报平移 RMSE |
| 特殊处理 | 作者对 Freiburg2 深度约 4% 尺度偏差做补偿,承认这可能部分解释较好结果 |
| 时间统计 | 表 IV 一般任务为均值±两倍标准差;每条计时序列只有一次的大回环/全局 BA 任务报单次时间 |
五次同序列运行反映多线程非确定性,不等于五个独立环境。深度补偿与基线配置差异也限制了将全部改善归因于 BA 的强因果结论。
五、保留纯单目尺度、标定与稀疏地图边界
真正贡献是把多传感器视觉模式、地图复用及异步优化组织为可用系统,延续前作统一 ORB 特征的设计。它并不声称发明了双目、BA 或近远点区别,背景明确承认前人。
作者把更强模糊鲁棒性、全向或多相机、大规模稠密融合列为未来工作。我的分析是,地图复用需要环境和外观足够稳定,动态物体或长期场景变化可能破坏关联;公制深度也不能解决所有低纹理与遮挡。可靠的定位模式仍需检测何时已退化为会漂移的局部 VO。
六、追问:把RGB-D深度转成虚拟右图坐标后,是否意味着其噪声就与真实双目相同?
把RGB-D深度转成虚拟右图坐标后,是否意味着其噪声就与真实双目相同?
参考答案:统一的是观测表达和几何接口,不是传感器的误差生成机制。仍须按深度来源、距离与标定条件设置权重并验证。比较时也应区分双目、RGB-D和纯单目模式,避免把一种输入的尺度能力归给全部模式。
七、加入惯性和多地图,或转向稠密表面
- 直接继承:ORB-SLAM3:跟踪丢了以后,地图还能继续生长吗。增加惯性初始化和Atlas多地图管理。
- 平行路线:ElasticFusion:直接修正稠密地图,而不只修正相机轨迹。用表面融合与形变处理RGB-D稠密地图。
八、自测与参考答案
问题 1:RGB-D 的虚拟右坐标是否意味着凭空增加了一个独立测量?
答案: 不是。它只是把原深度测量换一种参数表达,信息量来自原始深度。必须同步转换噪声含义,不能当作又获得一台独立相机。
问题 2:为什么论文平均跟踪约 26 ms,却允许全局 BA 超过一秒?
答案: 两者在不同线程、不同频率执行。跟踪使用当前地图继续定位,全局 BA 后台求解并在完成后传播修正;一秒级全局任务不等于每帧都阻塞一秒,但仍需关注更新与并发开销。
问题 3:如何解释“零漂移定位”?
答案: 在持续匹配稳定旧地图时,不会像无地图 VO 那样无界累积相对误差;但地图可能已有误差,测量有噪声,未建图区域也仍会漂移。它不是绝对位置始终完全正确的保证。