ORB-SLAM3整体结构框架分析

1、整体框架
1.1 tracking 模块 处理传感器信息并实时计算当前帧在激活地图中的姿态。同时该模块也决定了是否将当前帧作为关键帧。在视觉-惯性模式下,通过在优化中加入惯性残差来估计刚体速度和 imu 偏差。当追踪丢失时,tracking 线程会尝试在 atlas 地 图中重定位当前帧。若重定位成功,恢复追踪,并在需要的时候切换激活地图。若一段时间后仍未激活成功,该激活地图会被存储为未激活地图,并重新初始化一个新的激活地图。
1.2 local mapping 模块 加入关键帧和地图点到当前激活地图,删除冗余帧,并通过对当前帧的附近关键帧操作,利用视觉 ba 或视觉-惯性 ba 技术来优化地图。此外,在惯性模式下,mapping 线程会利用最大后验估计(map)技术来初始化和优化 imu 参数。
1.3 loop and map merging 模块 每当加入一个新的关键帧,该线程在激活地图和整个 atlas 地图中检测公共区域。如果该公共区域属于激活地图,它就会执行回环校正;如果该公共区域属 于其他地图,就会把它们融合为一个地图,并把这个融合地图作为新的激活地图。在回环校正以后,一个独立线程就会进行全局 ba,进一步优化地图,同时并不影 响实时性能。
1.4 atlas 模块 一个由一系列离散地图组成的多子图系统。它会维护一个激活地图,用于tracking 线程对当前帧的定位,同时 local mapping 线程会利用新的关键帧信 息持续对该地图优化和更新。在 atlas 中的其它地图被称为未激活地图。该系统基于词袋模型对关键帧信息建立数据库,用于重定位、闭环检测和地图融合。
2、imu 和 camera 数据融合获取位姿数据的过程
imu 虽然可以测得角速度和加速度,但这些量都存在明显的漂移,使得积分 两次得到的位姿数据非常不可靠。但是,短时间内的快速运动,imu 能够提供一 些较好的估计,这正是相机的弱点。当运动过快时,相机会出现运动模糊,或者 两帧之间重叠区域太少以至于无法进行特征匹配,所以纯视觉 slam 非常害怕快 速的运动。而有了 imu,即使在相机数据无效的那段时间内,我们也能保持一个较好的位姿估计,这是纯视觉 slam 无法做到的。相比于 imu,相机数据基本不 会有漂移,所以相机数据可以有效的估计并修正 imu 读数中的漂移,使得在慢速运动后的位姿估计依然有效。当图像发生变化时,本质上我们没法知道是相机自 身发生了运动,还是外界条件发生了变化,所以纯视觉 slam 难以处理动态的障 碍物。而 imu 能够感受到自己的运动信息,从某种程度上减轻动态物体的影响。主要流程如下:
(1) 利用相机和 imu 分别进行图像采集和惯性数据采集,且 imu 的采集频率大于 相机的采集频率; (2) 提取相机获取的每一帧图像的特征点,然后提取特征点的描述子(orb-slam 采用),匹配特征点;此处,还可以采用光流追踪的方法; (3) 对 imu 得到的多组 imu 数据进行预积分,计算出两帧图像对应的 imu 位置和 速度;
(4) imu 初始化(讲解 orb-slam3 采用的方法),这一步的目的是获取 imu 参数较好的初始值:速度、重力以及 bias。 1> vision-only
采用 orb-slam 经典框架纯视觉初始化流程,按照关键帧速率 4hz 持续运行2s,然后我们可以得到按比例缩放的地图,包括 10 个关键帧以及上百个地图点,然后通过 visual-only ba 进行优化。 2> inertial-only
这一步目的是获得 imu 参数最优估计。利用前述单目视觉 slam 初始化后稳 定运行的数据,以及这些关键帧之间的 imu 测量,包括:尺度因子、重力方 向、imu 传感器偏置参数、关键帧的无尺度速度。这些 imu 测量放在一起构 成状态向量,构建优化问题求解。一旦惯性优化完成,帧的姿态、速度以及 3d 地图点就会以估计的尺度进行缩放,同时旋转以使 z 轴与估计的重力方向对齐。
3> visual-inertial 一旦视觉以及 imu 有了较好的估计后,进行一个联合优化进一步对这些参数进行精化。 (5) 结合上面得到的惯性残差和视觉残差,视觉-惯性 slam 可以看作是基于关键帧的最小化问题。在后期中,基于下式进行计算优化。
在 tracking 过程中,只优化最后两帧的位姿,同时保持地图点固定。在mapping 过程中,为了解决全图优化问题,若图的规模比较大就会比较棘手。orb-slam3 采用了滑动窗口思想,把关键帧及其地图点的滑动窗口作为优化变量。
3、orb-slam3 的基于特征点的 tracking 模块的优缺点,改善的机会点或方向
首先,orb-slam3 视觉前端做法采用特征点提取+描述子匹配特征点的方式。因为有描述子,所以对地图的维护很方便(包括重定位、闭环、全局优化)。尤其是对室内环境,当视觉上共视关系较多的时候,这种方法能很大程度上提高定 位精度和局部稳定性。但这种方式也有缺点,每帧图像都要提取特征点数量的描述子,比较浪费时间。在 tarcking 过程中,如果运动过快(图像出现模糊),比较容易 tracking loss。此外,纯视觉 orb-slam3 严重依赖特征点的提取与匹配 效果,在如纹理缺失的环境下运行会无法得到足够多的稳定匹配点对,此时光束平差法缺乏足够多的输入信息,无法有效地修正位姿偏差。基于这点,有很多人 也有不同的方法,还有一个主流方法是,特征点提取+光流跟踪的方式。采用这种方式tracking 要鲁棒一些,但这种方式不容易构建全局 map,同时在闭环和重定位阶段也需要另外提取特征点和描述子。同时,visual-inertial orb- slam3 通过引入 imu 来约束和修正特征缺失带来的偏差,得到尺度信息,在一定程度上解决了过度依赖严重依赖特征点问题。
orb-slam3 引入了 atlas 系统,在 tracking 过程中,如果跟丢了,可以利用当前帧查询 atlas dbow 数据库。这个查询可以利用所有先验信息,在所有地图 中找相似的关键帧。一旦有了候选关键帧,地图和匹配的地图点就可以进行重定位,极大提升性能,增大鲁棒性。
个人认为,orb-slam3 此次更新的一大变化就是引入了 atlas 地图,相当于 开辟了一条新的方向。当前由于只是第一个版本,所以在这方面的改进空间还有 很大,可以在这个方向做一些研究。同时 imu 相比于 camera,有很多互补优势, 如何让 imu 和 camera 更好的结合,发挥更好的效果,也是可以研究改进的点。imu 初始化也有很多不足,采用一个更好的方法进行 imu 初始化,也是一个可以改进的点。  


爆料!苹果正在设计自己的电源芯片
MLX90824基于MEMS的无PCB绝对压力传感器芯片
如何找回Rhino犀牛的指令框、左边栏
什么是 LLVM C/C++ 编译器?
混合电动汽车能量流仿真系统设计与分析
ORB-SLAM3整体结构框架分析
比亚迪发布2020年半年度报告:营业收入605.03亿元,同比减少2.7%
荣耀50发布会上荣耀50参数详细配置搭载一亿像素
高动态范围有源混频器ADRF6655
为什么不该在睡觉时给手机充电?
电磁场与微波技术类专业考研就业前景
UWB人员定位电力行业施工规范
NFC接口保护选择器件的注意事项
电脑主板晶振损耗的原因和修复方法
增资60亿元!LED芯片龙头三安光电引入三战略投资者
防海水电缆技术难点的详细说明
解读全球视频监控市场:未来几年将飞速上涨
谷歌将试用Gmail中的新的安全功能
在疫情和国际贸易形势下,LED屏企应该如何应对
在SA 5G毫米波应用场景中,控制信道可利用与数据相同的5G毫米波频谱