ORB-SLAM2基于ORB-SLAM的工作;
而ORB-SLAM基于:
1.PTAM的main idea:S-PTAM只有local BA,没有大型的回环,所以也没有全局一致的地图,recocalization的地图导入需要人工介入,观测点的不变性较低(理解为观测点不稳定?)。优点在关键帧的选取,特征匹配,点三角化,每一帧的相机定位,tracking 失败后的relocalization都提供了比较有效的方法。
2.place recognition (Bags of binary words for fast place recognition in image sequences,该论文发表于2012年,但是2011年的RSLAM就也实现了回环,只是结果没有强制执行全局一致的解,也就是RSLAM可能没有使用词袋,而且2014该作者提出了一种基于关键帧的快速回环方法,那么发表于2015年的ORB-SLAM也是基于这个论文提出了回环和重定位的方法)
3.2010 年在RSS上发表的Scale drift-aware large scale monocular SLAM,指出单目SLAM存在scale drift 问题。
一、远点与近点采用不同的策略,具体见:
J. Civera, A. J. Davison, and J. M. M. Montiel, “Inverse depthparametrization for monocular SLAM,” IEEE Trans. Robot., vol. 24,no. 5, pp. 932–945, 2008
该论文对远点采用一种逆深度参数化的方式,并且得到经验性数据,一般不超过基线距40倍的深度可以被有效参数化,并用来计算相机旋转,位移和尺度;超过40倍baseline的为远点,可以提供旋转信息,但是位移和尺度信息比较弱,其需要在多个视图的支持下进行三角化。
二、LSD-SLAM 是一种半稠密直接法,通过最小化大梯度图像块光度误差来实现,不是依靠特征点。但是容易受到滚动快门和non-lambertian reflectance (非博朗反射,)的影响。
三、DVO-SLAM 在前端通过视觉里程计同时最小化光度和深度误差,在后端通过启发式搜索所有先前帧寻找回环。
四、该论文所提出的方法不同之处主要在于后端是使用的BA,而且建立了全局一致的稀疏重建。目标是用于长时间的全局一致的定位而不是细化的稠密重建,但是由于pose的精确性也可以建立精确的全局稠密重建。
主要分为三个线程:
1.tracking :通过与局部地图的匹配得到帧间的相机位姿估计,通过motion-onlyBA来最小化重投影误差。
2.local mapping:管理局部地图,包括去掉局部地图股关键点,局部关键帧。还有local BA。
3.loop closing :使用place recognition 模块检测回环,通过pose graph优化矫正累计误差。该线程会在检测到之后激发第四个线程-full BA。(place recognition 模块也用来tracking 失败的时候重定位)
地图采用covisibility graph 和spanning tree
covisibility graph : 变种pose-pose图,顶点还是pose,只是边增加了权重,由于时间距离较近的的帧间可能具有较多共识的空间点,将共同观测到的空间点的数量用一个数值来表示其共识性的大小作为权重,这个权重越小,则两帧间共同观测的点就越少,相似性就越少,我的理解是运动相应就大一些,用这些间隔最远的pose(权重最小)连起来(最小生成树也就是spannig tree),会使得整体做pose graph优化的时候pose最小,计算量最小。所以用这个图的好处就是既可以做local BA,也可以通过最小生成树来进行整体优化。
提出了一个完成的SLAM系统,更加关键的是提出了一个针对已有地图的localization mode,能够零漂移,定位准确,鲁棒性好。
通过ORB-SLAM2的结果可以看到,BA的方式比ICP和直接发要好,因为它计算消耗小,不需要GPU加速就可以用于实时。