ORB-SLAM学习(1)—— Tracking线程
ORB-Slam的线程启动写在System类的构造函数,Tracking,LocalMapping和LoopClosing三个线程在System函数中启动,其中Tracking运行在主线程中。线程启动后,ORBSlam2再通过调用TrackMonocular(im,tframe)将图像传给Tracking线程,而TrackMonocular函数中调用了Tracking类的GrabImageMonocular(im,timestamp),才真正进入Tracking的图像处理过程。 代码架构 Tracking线程函数主要功能和流程 orb-slam做匹配的过程用的都ORB特征描述子。先在8层图像金字塔中,提取FAST特征点。提取特征点的个数根据图像分辨率不同而不同,高分辨率的图像提取更多的角点。然后对检测到的特征点用ORB来描述,用于之后的匹配和识别。跟踪这部分主要用了几种模型:运动模型(Tracking with motion model)、关键帧(Tracking with reference keyframe)和重定位(Relocalization)。 运动模式 TrackWithMotionModel 先通过上一帧的位姿和速度预测当前帧相机的位姿。 通过PnP方法估计相机位姿,在将上一帧的地图点投影到当前固定大小范围的帧平面上,如果匹配点少,那么扩大两倍的采点范围