ORB-SLAM的发展脉络
ORBSLAM系列存在随机性的原因:RANSAC中随机数生成器的使用;跟踪、映射和回环闭合线程的不可预测的交织,这取决于操作系统调度程序,这种不可预测性使得在不同的执行中估计的关键帧的姿势可能不同,甚至可能选择不同的帧作为关键帧
track in local map: 相机跟踪时利用了局部地图。具体来说,先从所有关键帧中选择与当前关键帧有相同特征点的关键帧集合,之后提取每一个关键帧的共视帧的集合,然后利用两个集合的关键帧的信息进行相机位姿的跟踪。
loop detect: 回环检测共包含四个部分:选择候选关键帧,计算变换,回环融合和essential graph优化
选择候选关键帧:当每次获得一个关键帧时,都会判断是否与之前的关键帧发生了回环。采用bag of words方法进行判断是否是相同的观测场景,论文采用了一个小技巧就是首先判断了当前关键帧与其共视帧的匹配得分,其他关键帧如果低于这个得分不会判定为回环。如果某个关键帧与当前帧的匹配分数达到了阈值,还需要判断共视帧的3个关键帧是否也满足会还的条件。只有都满足时才会判定发生了回环。
计算变换:通过3D地图点计算回环时,当前帧与回环帧之间的SE(3)变换。
回环融合:将重复的地图点融合并更新共视图;通过纠正当前关键帧与当前帧相连关键帧的位姿,并进行回环帧的地图点与当前帧地图点的融合;更新融合后的共视图。
essential graph优化:通过优化,将回环得到的误差均匀分配到整个essential graph当中,纠正建图过程中积累的误差。
ORB-SLAM2在ORBSLAM的基础上,BoW字典有所变化,以及在回环检测essential graph优化后,新增了一个全局的BA进一步优化。
ORBSLAM-Atlas管理着一系列的子地图,这些子地图共用一个DBoW数据库,使得能够实现重定位回环等操作。每个sub-map都有mappoints,keyframes,covisibility和spanning tree
当相机在正常跟踪状态,所生成关键帧所在的地图称为“活动地图(active map)”。如果跟踪失败,首先将进行重定位操作寻找地图集中对应的关键帧,如果依旧失败,则重新创建一个新的地图。此时旧地图变成了“非活动地图(non-active map)”,新的地图作为活动地图继续进行跟踪和建图过程。在跟踪过程中,当前相机必然是位于活动地图当中,可能存在零或多个子地图。
每次插入关键帧时,都与完整地图的DBoW数据库进行匹配。如果发现了相同的场景,且两个关键帧同时位于活动地图,则意味着发生了回环,便按照回环的方式进行融合处理;如果匹配上的关键帧位于非活动地图,则需要将两个子地图进行拼接,这便是ORBSLAM-Atlas的创新之处。
地图无缝融合时,当前活跃的地图吞并对应的非活跃地图。通过以下步骤将非活跃地图的信息补充到当前活跃地图。具体步骤如下:
1、检测:首先由重识别模块检测出当前关键帧Ka与匹配上的待吞并关键帧Ks,并获取两个子地图当中与匹配上的两个关键帧具有共视关系的关键点和关键帧
2、位姿计算:通过Horn+RANSAC方法初步计算两个关键帧之间的变换关系,之后将待吞并地图的地图点通过这个变换投射到当前关键帧Ka上,再利用引导匹配的方法获得更丰富的匹配并进行非线性优化,获得精确的变换。
3、地图点合并:将吞并地图的关键点变换到当前关键帧位姿下,融合重复的地图点。之后将两个地图的关键帧融合,重新生成spanning tree和共视图
4、衔接区域的局部BA优化:融合后于Ka具有共视关系的关键帧参与局部BA优化,为避免gauge freedom,固定之前活跃地图中的关键帧而移动其他的关键帧。优化完成后再次进行地图点的合并于spanning tree/共视图的更新
5、完整地图的位姿图优化:对整个合并后的地图进行位姿图优化
Atlas的方法使得在跟踪丢失时能够重新创建一个地图,并在回到原有位置时利用原地图的信息,使得SLAM更加鲁棒。Atlas的方法也用在了ORB-SLAM3中
ORB-SLAM3中的地图,大致上采用了ORB-SLAM1/2和ORBSLAM-Atlas的方法完成了重定位、回环和地图融合
1、重定位:ORB-SLAM3在重定位的策略上做了一些改进。为了保证重定位不出错,重定位重重设置了严苛的条件,保证高精准率而识别率较低。旧的方法(ORB-SLAM1/2)中当3个关键帧完全匹配上后才判定为重定位成功。
然而作者发现。三个关键帧经过了很长时间。主要改进是,当当前帧于数据库的关键帧匹配上后,检测于当前关键帧具有共视关系的关键帧是否也能够匹配,如果可以则判定为重定位成功;否则才继续使用接下来的关键帧进行判定
2、视觉地图融合:视觉地图融合方式与ORB-Atlas的大致相同,对融合的区域起了一个新的名字叫做“衔接窗口(welding window)”同时指明在衔接后进行完整位姿图融合时,衔接窗口的关键帧固定以保证不会出现gauge freedom,固定之前活跃地图中的关键帧而移动其他的关键帧。优化完成后再次进行地图点的合并于spanning
3、闭环:闭环检测部分与ORB-Atlas的基本相同