出处:2017 IEEE Transactions on Robotics,(截止到2022-3-28)Google论文被引3500+;
说明:ORB-SLAM2是基于ORB-SLAM[1]的工作,所以论文中对单目方法做了较少的描述,而对新添加的双目和RGB-D方法做了较多描述。
完整SLAM系统定义:初始化、tracking、优化、map reuse(仅定位模式或者支持在该map上扩展)、loop closing、relocalization ;显然ORB-SLAM2是一个非常完整(指包含Monocular、Stereo 和 RGB-D三种模式)的SLAM系统。
Monocular SLAM的问题:
图1:由图1(b)可以看出,ORB-SLAM2的开发者在自己测试的时候做了RGB-D模式稠密地图的demo,具体方法正如图上所示“估计的关键帧位姿反投影传感器深度图得到点云,不进行融合(如KinectFusion [4)”,该点云效果好说明关键帧pose非常精确;
ORB-SLAM2的主要贡献如下:
A. Stereo SLAM
ORB-SLAM2采用的方法:与上面这些方法类似,ORB-SLAM2在一组本地关键帧中执行 BA,以便复杂性与地图大小无关,并且可以在大型环境中操作; ORB-SLAM2的目标是建立一个全球一致的地图;关闭循环时,ORB-SLAM2首先对齐两侧,类似于 RSLAM,以便跟踪能够继续使用旧地图进行定位,然后执行位姿图优化以最小化循环中累积的漂移,然后是 full BA 。
B. RGB-D SLAM
ORB-SLAM2采用的方法:参考[8]的方法,ORB-SLAM2 使用深度信息为图像上提取的特征合成立体坐标,这样就不同区分输入是RGB-D还是双目;与上面方法不同的是,ORB-SLAM2的后端基于BA构建全局一致的稀疏重建;所以ORB-SLAM2是轻量级的,并且适用于标准 CPU;ORB-SLAM2的目标是长期和globally一致的localization,而不是构建最详细的稠密重建。但是可以从高度准确的关键帧poses中融合深度图并在局部区域中即时获得准确的重建,或者在full BA 之后对来自所有关键帧的深度图进行后处理,并获得整个场景的准确 3D 模型。
ORB-SLAM2建立在单目ORB-SLAM1的基础上,总体概述如图 2 所示,主要包括三个线程:
图2:ORB-SLAM2主要由三个并行线程组成:tracking, local mapping and loop closing;在loop closure后创建第四个线程来执行full BA;tracking线程预处理双目或 RGB-D 输入,以便系统的其余部分独立于输入传感器运行;虽然图中没有显示,但 ORB-SLAM2 也适用于 [1] 中的单目输入。
ORB-SLAM2系统还包括如下部件:
A. Monocular , Close Stereo and Far Stereo Keypoints
ORB-SLAM2是基于特征的方法,对输入进行预处理以提取显著关键点位置的特征,然后丢弃输入图像,所有系统操作都基于这些特征,因此系统独立于双目或 RGB-D 传感器;ORB-SLAM2系统处理单目和双目关键点,进一步分类为近或远:
Stereo keypoints:假设输入的图像立体校正,核线水平;如果双目关键点的相关深度小于立体/RGB-D 基线的 40 倍,则将其分类为近,如 [5] 中所建议的,否则将其分类为远;
Monocular keypoints:图像二维坐标定义,包含RGB-D中没有深度以及双目立体匹配找不到深度的点,这些点仅从多个视图进行三角剖分,不提供比例信息,但有助于旋转和平移估计;
B. System Bootstrapping(系统引导)
双目和RGB-D相机可以通过仅从一帧获得深度信息,不需要像单目情况那样来自运动初始化的特定结构;在系统启动时,ORB-SLAM2使用第一帧创建关键帧,将其pose设置为原点,并从所有双目关键点中创建初始地图。
C. Bundle Adjustment with Monocular and Stereo Constraints
ORB-SLAM2的BA使用的是g2o中的Levenberg-Marquardt 方法:
D. Loop Closing and Full BA
Loop Closing 分为两个步骤执行,首先检测和验证一个回环,然后对闭环进行校正以优化pose-graph;与单目ORB-SLAM不同,RGB-D和双目的ORB-SLAM2,立体/深度信息使尺度可观察,几何验证和位姿图优化不再需要处理尺度漂移,不是相似性而是基于刚体变换;
Full BA在pose-graph 优化之后用于实现最优解,Full BA优化需要很高的计算量所以放在单独的线程中执行,允许系统继续创建地图和检测回环;如果在Full BA优化运行时检测到新回环,ORB-SLAM2将中止优化并继续回环,这将再次启动full BA 优化;当full BA 完成后,需要将完整 BA 优化的关键帧和点的更新子集与优化运行时插入的未更新关键帧和点合并。
E. Keyframe Insertion
ORB-SLAM2采用了monocular ORB-SLAM[1]的关键帧插入策略,即非常频繁地插入关键帧并随后剔除冗余的关键帧;近双目点和远双目点之间的区别成为引入关键帧插入的新条件;如图3所示,在这样的环境中需要有足够数量的闭合点来准确估计平移,因此如果跟踪的闭合点数量低于 τt 并且该帧可以创建至少 τc 个新的闭合立体点,系统将插入一个新的关键帧。作者凭经验发现 τt = 100 和 τc = 70 在所有的实验中效果很好。
图3:KITTI 数据集01序列的效果,绿色的点为近点其深度小于双目基线的40倍,蓝色点为远点;远点有助于估计方向,但为平移和缩放提供微弱的信息。
F . Localization Mode
ORB-SLAM2添加了一种定位模式,在该模式下local mapping 和loop closing 线程被关闭,如果需要,相机可以通过使用重定位的跟踪连续定位;在这种模式下,跟踪利用视觉里程计匹配并匹配到地图点,视觉里程计匹配是当前帧中的 ORB 与根据立体/深度信息在前一帧中创建的 3D 点之间的匹配,这些匹配使定位对未建图区域具有鲁棒性,但可以累积漂移,地图点匹配确保对现有地图的无漂移定位。
测试硬件平台:Intel Core i7-4790 desktop computer with 16Gb RAM;
指标:使用原作者发表的结果(这里如何直接使用论文的结果是不是不太公平?)和文献中的标准评估指标;
测试:为了避免多线程系统的不确定性,每个序列运行 5 次,并取中值结果;
A. KITTI Dataset [2]
KITTI dataset 包含从城市和高速公路环境中的汽车记录的立体序列,双目基线约为54cm,工作频率为 10Hz,校正后的分辨率为 1240 × 376 像素,序列 00、02、05、06、07 和 09 包含回环;表 1显示了 11 个训练序列的结果,与最先进的Stereo LSD-SLAM [11] 相比,据我们所知ORB-SLAM2是唯一显示所有序列详细结果的Stereo SLAM。作者使用两个不同的指标,[3] 中提出的绝对平移 RMSE 和 [2] 中提出的平均相对平移 r(rel) 和旋转 r(rel) 误差;ORB-SLAM2在大多数序列中都优于 Stereo LSD-SLAM,并且总体上实现了低于 1% 的相对误差;
表1:KITTI 数据集中的准确性比较;
图 4 显示了一些估计轨迹的例子:
图4:KITTI 00、01、05 和 07 ;
与 [1] 中提出的单目结果相比,所提出的双目版本能够处理单目系统失败的序列 01,在这个高速公路序列中,见图 3,近点仅在几帧中可见,双目版本仅从一个立体关键帧创建点的能力,而不是延迟初始化单目,包括在两个关键帧之间寻找匹配,在这个序列中不丢失跟踪是至关重要的,此外,双目系统使用公制比例估计地图和轨迹,并且不会受到比例漂移的影响,如图 5 所示;
图5:KITTI 08数据集,左边是monocular ORB-SLAM [1],右边是monocular ORB-SLAM [1];monocular ORBSLAM 在这个序列中遭受严重的尺度漂移,尤其是在转弯处,相比之下,所提出的立体版本能够估计轨迹和地图的真实比例,而不会发生比例漂移;
B. EuRoC Dataset [21]
EuRoC Dataset包含从在两个不同房间和大型工业环境中飞行MAV记录的11个双目序列;双目基线约为11cm,并提供20HZ的WVGA图像,根据 MAV 的速度、光照和场景纹理,这些序列分为简单、中等和困难;表2显示了 ORB-SLAM2 对于所有序列的绝对平移 RMSE,与 Stereo LSDSLAM 相比(采用其论文 [11] 中提供的结果)更准确;ORB-SLAM2 实现了厘米级的定位精度,比 Stereo LSD-SLAM 更准确;由于严重的运动模糊,ORB-SLAM2的tracking在 V2 03 的某些部分难以进行;如[22]所示,这个序列可以使用 IMU 信息进行处理;
表2: EuRoC Dataset上平移 RMSE (m) 的比较;
图 6 显示了计算出轨迹与真值相比的示例:
图6:数据集为EuRoC中等难度的V1_02,V2_02,MH_03和困难的MH_05;黑色代表估计出的轨迹,红色代表groundtruth;
C. TUM RGB-D Dataset [3]
TUM RGB-D dataset包含来自 RGB-D 传感器的室内序列,分为几类,用于评估不同纹理、照明和结构条件下的对象重建和 SLAM/里程计方法;表3中,将ORB-SLAM2和ElasticFusion [15]、Kintinuous [12]、DVO-SLAM [14] 和 RGB-D SLAM [13]做了比较,ORB-SLAM2是唯一一种基于BA的方法,并且在大多数序列中都优于其他方法;
表3:TUM RGB-D DATASET上平移 RMSE (m) 的比较;
图 7 显示了从四个序列中计算的关键帧pose对传感器深度图进行反投影所产生的点云,桌子和海报的良好定义和笔直轮廓证明了ORB-SLAM2的高精度定位:
图7:TUM RGB-D fr3 office, fr1 room, fr2 desk and fr3 nst数据集通过计算的关键帧pose对传感器深度图进行反投影所产生的点云;
D. Timing Results
在表3中对三个序列在不同传感器和不同分辨率图像进行了时间分析,显示的是每个线程任务的平均值和两个标准偏差范围。由于这些序列包含一个回环,因此full BA 和回环线程的一些任务只执行一次,并且只报告一个时间测量值。每帧的平均跟踪时间低于每个帧速率的倒数序列,这意味着我们的系统能够实时工作。由于双目图像中的ORB提取是并行的,可以看出在V2 02的立体WVGA图像中提取1000个ORB特征类似于在fr3 office的单个VGA图像通道中提取相同数量的特征;回环中的关键帧数显示为与回环相关的时间的参考,虽然 KITTI 07 中的回环包含更多关键帧,但为室内 fr3 办公室构建的 covisibility graph 更密集,因此回环融合、pose-graph优化和full BA 更昂贵, covisibility graph 的高密度使得本地地图包含更多的关键帧和点,因此本地地图tracking和local BA 也更加昂贵。
表4:以毫秒为单位的每个线程的计时结果(平均值 ± 2 标准偏差);
ORB-SLAM2是一个完整的SLAM系统,接受Monocular、Stereo and RGB-D传感器输入,同时能够在标准的CPU上实时执行 relocalization、loop closing、map reuse等功能;在已知环境下,ORB-SLAM2的仅定位模式提供了一种非常稳健、零漂移和轻量级的定位方法;ORB-SLAM2在大多情况下都表现出最高的精度,在KITTI visual odometry benchmark上ORB-SLAM2是最好的双目解决方案,至关重要的是,与其他双目SLAM方法相比,ORB-SLAM2实现在已经建图区域上实现了零漂移定位;ORB-SLAM2的RGB-D方法表明,在定位精度上,BA的方法优于直接法或者ICP,另外还具有计算成本低、不需要GPU就能实时等优点;
作者开源了ORB-SLAM2的源代码,该源代码还包含一个使用单目相机的AR应用程序;
未来的扩展可能包括:非重叠多摄像头、鱼眼或者全景摄像头支持、大尺度的稠密融合、协同建图或者是增强运动模糊鲁棒性。