ORB SALM2
类型:V-SLAM
传感器:单目/双目/RGB-D相机
在ORB SLAM的基础上提出ORB SLAM2,贡献如下:
1.首个基于单目,双目和RGB-D相机的开源SLAM方案,这个方案包括:回环检测,地图重用和重定位。
2.RGB-D结果说明,BA比ICP或者最小化光度/深度误差的方法更加精确。
3.通过使用远处和近处的双目特征点和单目观测结果,我们的双目的结果比直接使用双目系统更加精确。
4.针对无法建图的情况,提出了一个轻量化的定位模式 ,能够更加有效的重用地图。
1. 系统
ORB-SLAM2由三个平行的线程组成,跟踪,局部建图和回环检测。在一次回环检测后,会执行第四个线程,去执行BA优化。跟踪的线程在双目或者RGB-D输入之前进行,因此剩下的系统模块能够跟传感器模块独立运行。单目ORB-SLAM2工作图也是这幅图。
1.1 单目,近双目和远双目特征点
处理单目或双目的特征点时,将其分成远处特征点和近处特征点两类。
双目特征点通过三个坐标定义xs=(uL,vL,uR),(uL,vL)是这个左边图像的坐标,uR是右图当中的水平坐标。之后会将左边图像产生的双目ORB特征点,及一条水平的线和右边的图像进行匹配,通过修补相关性来重新定义亚像素(??)。对于RGB-D相机,在图像通道上提取ORB特征点,将其深度值d转换为虚拟右坐标:
f_x表示水平焦距,b表示在结构光投影器和红外相机间的基线长度。深度传感器的不确定性被虚拟右坐标代替,通过这种方式,双目和RGB-D相机的输入被系统的其余部分做同等处理。
近双目特征点:匹配得到的深度值小于40倍双目或者RGB-D的基线,否则的话,是远特征点。
近特征点能够从一帧的深度值进行三角测量化,是精确的估计,并且能够提供尺度,平移和旋转的信息。
远特征点,能够提供精确的旋转信息,但是很少的尺度和平移信息。当多个视图支持它们时,我们才能三角化那些远的点。
单目特征点通过左边图像的两个坐标xm=(uL,vL)定义,单目特征点仅能够从多视图中三角测量化并且不能够提供尺度信息,但是可以提供旋转和平移的估计信息。
1.2 系统引导
使用立体声或RGB-D摄像机的主要好处之一是,通过仅获取一帧的深度信息,我们就不需要像单眼情况那样通过运动初始化获得特定的结构。在系统启动时,我们用第一帧创建关键帧,将其姿势设置为原点,并从所有立体关键点创建初始贴图。
1.3 单目/双目BA
tracking线程中使用纯运动BA(motion-only BA)优化相机位姿,
local mapping线程中使用局部BA(local BA )优化本地窗口的关键帧和局部地图的特征点;
loop closing线程中使用全局BA(full BA)优化所有关键帧和特征点.
根据Levenberg-Marquardt方法使用g2o库实现.
motion-only BA
优化相机旋转矩阵R和位置t,最小化世界坐标系下匹配3D点云和特征点的重投影误差:
ρ是具有鲁棒性的Huber的cost函数,Σ是协方差矩阵,关联对于特征点的尺度。π(.)是投影函数,单目的时候使用π_m,修正双目的时候用π_s.定义如下:
(fx,fy)—焦距,(cx,cy)—主点(象点),b—基线,通过标定获得。
local BA
采用一系列可见的关键帧K_L和所有在关键帧可观点P_L,所有的其他关键帧是K_F,而不是K_L,观察P_L当中所有的特征点用于cost函数,但是在优化中是固定的。
优化一组共视的关键帧KL这些关键帧中所有可见的特征点PL. 其余非共视的关键帧KF中的特征点也对优化做出贡献,但是不对其中的特征点做处理.
定义Xk为PL和关键帧k中的特征点和PL的一系列匹配的特征点,优化问题可以描述如下:
Full BA
local BA 的特殊情况.除了初始帧以外所有的关键帧和点在地图当中都会被优化。初始帧是固定的,用来消除随机化。
1.4 loop closing & full BA
回环检测包含两步: 一个回环信息被确定检测到,然后利用它回环纠正和优化位姿图。
在ORB-SLAM2的位姿优化后,我们包含一个全局的BA优化,为了实现一个优化方案,我们必须采用一个独立的线程,允许系统能够持续的建图,并且检测到回环信息。但是这将会再次触发全局BA优化与当前地图的合成。如果在优化运行时检测到新的循环,我们将中止优化并继续关闭循环,这将再次启动完整的BA优化。当完整的BA结束时,我们需要将更新的关键帧子集和由完整BA优化的点与未更新的关键帧和在优化运行时插入的点合并。最后通过更新更新关键帧校正(例如,这个变换从未优化到已优化)到一个未更新关键帧通过生成树当中。根据校正参考帧来变换那些未更新的特征点。
1.5 插入关键帧
ORB-SLAM2遵循在单目ORB-SLAM中提的法则,即经常插入关键帧并且剔除上一帧的冗余。在远近特征点的差异为我们插入一个新的关键帧提供了条件.
1.6 定位模式
ORB-SLAM2包括一个定位模式,该模式适用于轻量级以及在地图已知情况下长期运行,只要那个环境没有发生剧烈变化。在该模式中,局部建图和回环检测的线程中是停用的,并且这个相机始终都是在通过追踪进行重定位。在这个模式下,追踪模块使用视觉里程计进行匹配图像的点云。视觉里程计匹配在当前帧的ORB算子和由双目或者深度相机收集的3D点云。这些匹配使得在没有地图的区域也能够精确的重新定位,但是漂移将会累加。地图点云匹配要确保在一个已经存在的地图当中零漂移定位.