main procedure
- processNewKeyFrame
- mappoint culling
- create new key frame
- check new key frame
- SearchInNeighbors
- Optimization BA
- key frame culling
- insert new key frame
- 为什么是这样的步骤,为什么只要这几个步骤,为什么是这样的顺序?
- 这样做的目的是什么?
主要目的是BA,BA的对象就是key frame,那么BA之前有一些key frame的准备工作。由于BA进行的师爹待优化工作,所以在这之前应该准备尽量多的点(关键帧)进行优化,网络关系可以比较复杂。这样有利于最终的结果的精确度。经过BA之后,那没有会找到那些Outliers,可以把他们删掉。
另外要给目的是得到比较精确的路标点,经过几个回合的优化之后路标点的就比较固定了。那时候把位姿轨迹拿出来专门做优化那样叫做Essential Graph。因为在局部BA中位姿的数量其实比较少,大部分数据是点,那么这时候使用系数特别重要,因为这样可以大大计算量。