ORB-SLAM: a Versatile and Accurate Monocular SLAM System阅读笔记(一)

    PTAM首先提出了多线程和关键帧的思想:

    多线程:将slam系统的运行过程分别在不同的线程中运行。如在PTAM中,主要是分为tracking(追踪)线程和mapping(建图)线程;

    关键帧:在比较大型的场景中,输入的图片比较多,若在整个系统运行过程中处理所有的图片,往往消耗大量计算资源却得不偿失。此时可以在有些时候处理所有的图片帧,有些时候只挑选一些具有代表性的图片处理即可。如在PTAM中,在tracking线程处理所有的图片帧,而在mapping线程,只对关键帧进行处理即可。

    orb-slam继承和发展了这种思想。在orb-slam运行过程中,一般分为三个线程:tracking(追踪)线程,local mapping(局部建图)线程以及loop closing回环处理线程。在tracking线程中,对输入系统的每一帧图片都进行处理;而在local mapping线程以及loop closing线程中,则只需对关键帧进行处理以减少计算量。

    另一方面,orb-slam中在所有线程中统一使用可以快速提取的orb特征(其本身具有旋转不变性,结合图像金字塔后在一定程度上兼顾尺寸不变性),使整个线程中的特征具有内在的一致性。

    除了关注orb-slam运行过程中的三个线程以外,还需注意到其在初始化阶段所作的优化。相较于PTAM需要人工选择合适的图像进行初始化,orb-slam中使用探索式的自动初始化方式。有系统自动判定是否满足初始化条件,自动判断是否进行初始化,并根据当前输入的图像情况选择初始化方式(通过H单应矩阵或者F基础矩阵)进行初始化。

orb-slam流程图如下:

ORB-SLAM: a Versatile and Accurate Monocular SLAM System阅读笔记(一)

    由于能力有限,以上笔记主要是记录备忘所用,如有不准确的地方,烦请指出,共同学习!