前言:
这里简单记录一下ORB-SLAM3和ORB-SLAM2在跟踪线程的主要区别。
跟踪线程主要分为以下3个阶段:
第一阶段:参考关键帧跟踪、恒速模型跟踪、重定位跟踪。
第二阶段:局部地图跟踪。
第三阶段:短期跟踪丢失和长期跟踪丢失。
其中第三阶段是ORB-SLAM3新增的一种状态。
下面分别从三个阶段介绍区别:
一:第一阶段跟踪
1.参考关键帧跟踪
参考关键帧跟踪的代码基本一致,不同之处在于,在IMU模式下跟踪成功的判断标准更宽松,不需要位姿优化后成功匹配点数量超过10个的这个条件。
2.恒速模型跟踪
ORB-SLAM2:直接用位姿差代替速度。
ORB-SLAM3:大多数情况下(完成初始化、距离重定位较久)用IMU估计位姿,否则用位姿差代替速度。且在IMU模式下跟踪成功的判断标准更宽松。
3.重定位跟踪
基本流程一样,将位姿估计的方法由EPNP改成MLPNP。
二:局部地图跟踪
ORB-SLAM2:仅优化当前帧位姿,跟踪地图点超过30个认为跟踪成功。
ORB-SLAM3:大多数情况下(完成初始化,距离重定位较久)会优化当前帧位姿、速度和IMU零偏。如果地图未更换,参考上一普通帧和当前帧信息联合优化,如果地图更换,参考上一关键帧和当前帧信息进行联合优化。此外,在IMU模式下跟踪成功的判断标准有所区别。
三:短期跟踪丢失和长期跟踪丢失
ORB-SLAM3新增的一种状态。
1.短期跟踪丢失(RECENTLY_LOST)
重定位跟踪失败5s内,进入短期跟踪丢失状态。
先用IMU数据预测位姿,然后在局部地图跟踪中用预测的位姿在更大的图像窗口中进行投影匹配最后视觉惯性联合优化。
2.长期跟踪丢失(LOST)
重定位跟踪失败超过5s,进入长期跟踪丢失状态。
进入此状态重新创建地图,重新开始跟踪。