ORB-SLAM-Mono论文要点总结(四)——— 局部建图LocalMapping

这一部分,主要总结了局部建图线程对每个新关键帧 K i K_i Ki进行的操作步骤。

  1. 关键帧插入
    首先,更新共视图,为新的关键帧 K i K_i Ki增加新的节点,而且基于和其他关键帧共享的地图点更新对应的边。接着更新旋转树,连接 K i K_i Ki和共视最多地图点的关键帧。下一步计算该关键帧的词袋表达,存储于数据库中将有助于三角化新的地图点。
  2. 最近的地图点筛选
    为了在地图中保留下来,这些地图点必须在创建之后的前3帧图像里通过一个严格的测试。这能够确保这些地图点是可追踪的,且能够不被错误的三角化,比如由于错误的数据关联导致错误的三角化。一个点是地图点必须满足下面两个条件:
    1)跟踪线程能够在至少25%个预测的可视图像帧里能够找到该地图点;
    2)如果有超过1个关键帧通过了该地图点的创建?,则其必须能够在至少3个关键帧里能够观测到。
    一旦一个地图点已经通过了这项测试,它只能在被观测的关键帧数量少于3个时被移除。这可能发生在关键帧筛选和局部BA剔除外点观测时。该策略可以让局部地图包含更少的外点。
  3. 新地图点创建
    新地图点的创建通过三角化共视图里连接关键帧 K C K_C KC的ORB特征。对关键帧 K i K_i Ki里里未匹配的ORB特征,在其他关键帧里继续搜索未匹配的特征点。匹配方法即是按照III-E里说明的方法,而且剔除那些不满足极线约束的匹配。三角化ORB特征点对,为了插入新地图点,需检查两个相机的正深度、视差、重投影误差、尺度一致性。起初,一个地图点可被两个关键帧观测,但是它在其他关键帧里也能匹配到;因此,地图点还被投影到其余连接的关键帧,在V-D部分详细说明了查找对应关系的方法。
  4. 局部BA优化
    局部BA优化当前关键帧 K i K_i Ki和共视图里所有连接到 K i K_i Ki的关键帧集 K c K_c Kc都能观测到的地图点。所有其他能够观测到这些地图点,但是不与当前关键帧 K i K_i Ki相连接的关键帧包含在优化里,但是保持固定(也就是对这些关键帧的状态不优化)。在优化中和优化末,那些被标记为外点的观测被剔除。可在附录里查看此优化的更多细节。
  5. 局部关键帧筛选
    为了维持一个简洁的过程,局部建图尽力去检测冗余关键帧,然后删除掉。这对于系统来说是不仅有好处,因为BA的复杂度随着关键帧的数量而增长,而且因为关键帧的数量不会无限制的增长,所以使得系统能够在在同一环境下长时间工作(除非视觉场景不断发生变化)。剔除 K c K_c Kc里90%的地图点(关键帧里的)都可以被至少其他三个关键帧以相同或者更好的尺度观测到的关键帧。尺度环境能确保地图点维持的关键帧源于最好的测量精度。该策略受[24]启发而来,其通过一个动态检测方法去剔除冗余关键帧。

你可能感兴趣的:(SLAM)