ORBSLAM2 Tracking主线程讲解
/*
作为一名slam初学者小白,创立这个博客是为了能激励自己坚持下去并且可以和各位大佬交流.
以下内容都是自己的见解,如果有错误请大家帮忙指正
*/
Tracking线程是slam系统中视觉里程计的主要内容,主要功能就是计算相机的位姿跟计算局部地图点.
1.在Frame进入Tracking线程之前还有一个步骤就是预处理,主要是输入相机的内参跟矫正系数,然后建立图像金字塔,并将输入的图像转化成灰度值再构造Frame开始接下里的步骤.
2.相机位姿跟踪其实也是帧间跟踪,当mbOnlyTracking为Flase时即同时跟踪与定位模式启动时,系统首先判断初始化是否成功,初始化未成功就直接重新定位.如果初始化成功了,则再次判断是否刚刚重定位或者运动模式是否为空,如果是,则跟踪参考帧得到匹配点,如果不是则通过匀速运动模型跟踪上一帧.
当仅跟踪时,则需要判断跟踪是否丢失,如果跟踪失败,就进行重定位RelocaLization.跟踪成功后还需要判断跟踪的好坏,跟踪较好的情况下就根据运动模型是否为空来判断是选择跟踪上一帧还是跟踪参考帧.如果跟踪较差,就要既继续跟踪还要重新定位.
3.当帧间匹配后还要对局部地图进行跟踪来获取更多的匹配点并进一步优化相机的位姿.
同帧间跟踪一样,局部地图跟踪也分为仅跟踪与跟踪并定位两种模式.由于仅跟踪模式下局部地图不工作,所以在这个模式下只有当系统重定位成功了才开执行TrackLocalMap这项工作.而当跟踪与定位模式下,则会直接执行TrackLocalMap.
如果没看懂的话建议去看https://blog.csdn.net/qq_30356613/article/category/6897125这个博客,讲的非常详细.欢迎大家一起讨论指出我的错误共同进步.