orbSLAM2 之 追踪局部地图

orbSLAM2 之 追踪局部地图

      • 简介:
      • 流程:

简介:

通过当前帧(mCurrentFrame)与当前帧的局部地图匹配,优化当前帧的位姿
注意:计算的位姿是当前帧相对于世界坐标系的Tcw。

流程:

1,更新局部地图。函数UpdateLocalMap()

	1,全局地图(Tracking::mpMap)的mvpReferenceMapPoints保存上一可以追踪局部地图的帧的局部地图地图点,用于可视化
	2,更新当前帧局部地图中的局部关键帧(mvpLocalKeyFrames)。
	   局部关键帧包括:共视关键帧、共视关键帧的最多80个 {共视关键帧、子帧、父帧}。
	   函数UpdateLocalKeyFrames()
	3,更新局部地图点(mvpLocalMapPoints),局部关键帧匹配的所有地图点构成局部地图点
	   函数UpdateLocalPoints();

2,匹配局部地图点与当前帧特征。函数SearchLocalPoints()。

	1,根据投影的几何关系筛选出局部地图点中可以匹配的地图点。函数mCurrentFrame.isInFrustum(pMP,0.5)。
	2,根据地图点在当前帧的投影点的位置,为每个地图点确定一组候选特征点。
	   在每一组候选特征点中确定与相应地图点的最佳匹配特征点。
	   函数ORBmatcher::SearchByProjection()

3,g2o优化位姿(3d-2d)。
函数Optimizer::PoseOptimization(&mCurrentFrame)。

4,在当前帧的mvpMapPoints中滤除优化外点。

5,更新相应地图点的mnFound信息。

6,根据优化内点数判断追踪是否成功。

你可能感兴趣的:(orbSLAM2笔记)