ORB-SLAM: a Versatile and Accurate Monocular SLAM System阅读笔记(三)
Tracking线程:
在相机读取图像的每一帧都需要运行tracking线程。
一.提取orb特征:
按8层图像金字塔结构提取Fast角点,为保证提取的角点分布比较均匀,将图像划分成网格,在每个网格中提取角点。再计算出各个角点的orb特征。提取出的orb特征是一种带有方向性的多尺度特征,具有旋转不变性和一定程度的尺度变性。
二.初步位姿估计:
- 使用匀速运动模型估计预测相机姿态,根据该相机姿态将上一帧看到的地图点投影到当前图像与当前特征匹配,PNP求解优化相机姿态;
- 若追踪失败,进行重定位。对当前帧进行bow搜索出候选关键帧,对每一个候选关键帧进行匹配并PNP求解出相机位姿并优化。
三.局部地图追踪
局部地图包括当前帧,可以看到当前帧中特征对应的地图点的关键帧K1,在共视图中临近K1的关键帧K2,在K1中,与当前帧共享最多的地图点的关键帧命名为Kr。
通过当前帧对应的所有的地图点最终优化相机位姿。
四.判断新的关键帧
最后,需要判断当前帧是否为新的关键帧。
- 距上一次重定位超过20帧;
- 局部建图线程空闲,或距上一次插入关键帧已经超过20帧;
- 当前帧追踪到至少50个点;
- 当前帧追踪到参考关键帧Kr的地图点数量小于其90%。
条件4确保当前帧与参考关键帧Kr最小改变量,条件1确保重定位良好,条件3确保追踪情况良好。确定新的关键帧后会给local mapping线程发出信号,停止其局部BA过程,确保其尽快处理新的关键帧。
由于能力有限,以上笔记主要是记录备忘所用,如有不准确的地方,烦请指出,共同学习!