ORB-SLAM3 架构解读一

ORB-SLAM3 系统结构

ORB-SLAM3 架构解读一_第1张图片 Atlas模块:

Atlas是由一组不连续的地图组成的地图集。其中activate map,每一个新的视觉帧进入流程,跟踪线程立即追踪并定位新一帧的位姿。并通过Local Mapping 线程使用新的关键帧进行不断优化activate map。其他map 为 noactivate map。系统会建立唯一的关键帧DBow2数据集,可以拿来relocalization(重定位), loop closing(回环检测), and map merging(地图合并)。

Tracking 模块:

跟踪线程处理传感器信息,实时处理前帧相对于activate map 的位姿(换而言之,可以根据当前的activate map 来实时的跟踪最新一帧的位姿)。利用最小化重投影误差的方式实现位姿的最大后验估计MAP。还决定了当前帧是否作为关键帧加入地图。Tracking 接受Frame,IMU的输入。Frame使用ORB特征,IMU被预积分(bias). 当定位跟踪失败时:首先会在所有的Atlas地图集中搜索当前位置的匹配,如果成功,则将当前的地图设置为non-active,而将在Atlas搜索到的地图设置为active,并继续在active的地图上进行局部跟踪。如果在全图搜索失败,则在一定时间后,当前的active地图会强行被设置为non-active,新的小地图将被构建,并设置为active。这样,就的地图的正确性不会被局部定位的失败影响,新旧地图之间的位姿变换关系不确定性也有希望被之后的共视减小或者消除。

Local Mapping 模块: 只有activate map 会被添加关键帧,在添加关键帧的时候,重复的关键点被移除。在当前帧前后的local window中使用VI-BA来提高map的质量。在惯性方案中,IMU被用来优化map通过ORB-SLAM3 中的novek MAP-estimation。

Loop and Map Merging 模块: 当有关键帧被插入,当前模块才会启动。这一关键帧被和整个Atlas地图集关键帧进行比较,如果检测到两关键帧是同一地点,分为两种情况:若被召回帧是当前的active地图中的一部分,则需要进行loop correction回环矫正,在回环矫正之后,Full BA在另一个线程中被悄悄进行,全局位姿图得到优化,整体的地图一致性得到了提升。这一过程和跟踪并行,不会影响跟踪的实时性。若被召回帧是属于一个non-active的map,两个地图则会被合并成一个地图并将大地图设置为当前的active地图。

本文由博客一文多发平台 OpenWrite 发布!

你可能感兴趣的:(视觉SLAM,深度学习,项目实战)