Brief
根据六老师所说,orb-slam2的局部建图线程包括如下作用
输入的关键帧来自跟踪里新建的关键帧。为了增加局部地图点数目,局部地图里关键帧
之间会重新进行特征匹配,生成新的地图点,局部BA会同时优化共视图里的关键帧位姿和地图点,
优化后也会删除不准确的地图点和冗余的关键帧。
Questions
对于这个描述,我有如下疑问:
1. 在tracklocalmap中,orb-slam2有增加每一帧对于地图点的观测的操作,但是没有直接增加地图点,而在localmapping中,增加地图点的操作是否和它有所关联呢?
2. 共视图有多大?关键帧的数目有多少?那些关键帧会算作共视图的关键帧?
3. 优化后删除的地图点,如何判断它不准确?
4 什么样的关键帧回被认为是冗余的?
Explanation
相关函数
CreateNewMapPoints(), SearchInNeighbors()
CreateNewMapPoints的逻辑包括如下:
const vector<KeyFrame*> vpNeighKFs = mpCurrentKeyFrame->GetBestCovisibilityKeyFrames(nn);
寻找与当前帧共视关系最高的n帧关键帧
将当前帧与NeighKFs匹配,寻找共视特征点,利用三角化构建地图点。在三角化后,还要对相关数据结构进行一定的维护。值得主义的是,三角化后得到的点之后将会被进行严格的筛选。