主函数 void LocalMapping::Run()
处理新插入的关键帧
步骤一:计算该关键帧特征点描述子的Bow映射关系
步骤二:更新MapPoints与KeyFrame的关联(在跟踪局部地图时地图点和特征点对应上了,但是没有关联起来)
步骤三:跟新关键帧之间的连接关系,将当前帧的地图点放入mlpRecentAddedMapPoints容器中
筛选出符合要求的地图点
- 跟踪到该点的帧数量/能观测到该点的帧数量>25%
- 必须有足够的关键帧能观测到当前地图点
利用三角化创造新的地图点
将当前帧的地图点和一级相连二级相连的关键帧地图点进行融合
1.如果MapPoint能匹配关键帧的特征点,并且该点有对应的MapPoint,那么将两个MapPoint合并(选择观测数多的)
2.如果MapPoint能匹配关键帧的特征点,并且该点没有对应的MapPoint,那么为该点添加MapPoint
Local BA
和当前关键帧相连的关键帧及MapPoints做局部BA优化
关键帧的剔除
某共视关键帧90%以上的地图点能被其他共识关键帧(3个以上)同时(尺度约束)观测到,说明该关键帧是冗余的,将它剔除。