ORBSLAM2学习笔记(1)——整体框架

ORBSLAM2学习笔记(1)整体框架

ORB特征原理

首先,简单而笼统地概括ORB特征原理。ORB特征试由Fast关键点和rBRIEF描述子构成的。Fast关键点有一个问题,那就是不具备尺度一致性。ORB用图像金字塔的方式解决了这一问题。也就是对图像降采样,来模拟从远处看到物体的情形。比如图像里有一只猫,对它进行降采样,高和宽每两个像素点取一个,这样得到的图像高和宽都是1/2,效果和你在两倍远看猫试一样的。BRIEF描述子也有一个问题,那就是没有旋转不变性。ORB通过为FAST关键点确定方向,解决了这一问题。该方向为FAST点与其所在矩形框的灰度质心的连线方向。BRIEF描述子在确立时会以此为准进行旋转,这样就确保方向一致啦!

ORBSLAM的三线程

ORBSLAM采用经典的三线程,即跟踪(Tracking),后端(Local Mapping),闭环检测(Loop Closing)。要注意后端和闭环的区别。后端用于维护局部地图,优化tracking的结果,而闭环用于消除累计误差。
Tracking:用于跟踪运动轨迹。功能包括:提取每帧的特征点,与局部图进行纯运动BA匹配;提取关键帧加入局部图;重启动功能。
Local Mapping: 更新局部地图。功能包括: 通过关键帧的关键点将其三角化为新的地图点(共视图covisibility graph上的点);通过local BA来调整优化局部图,去除冗余关键帧和特征点。
Loop Closing:检测闭环。检测到后,开始估计累计误差,并根据累计误差融合特征点,通过基图进行优化。之后,开启第四个线程Full BA,获得整个系统的最优结构和轨迹。
能看出,ORBSLAM2不关心我们用的是什么相机,只要能提供特征点就ok。

顶层封装

按照github上的说明,文明打开例程的源码mono_euroc.cc,发现所有工作都是交给ORB_SLAM2::System这个类完成的。这就是orbslam2的顶层封装啦。接下来我们对它进行分析吧。

你可能感兴趣的:(slam)