三维重建(8)--SLAM系统设计
目录
一、ORB-SLAM系统概述
1、概述
SLAM(Simultaneous Localization and Mapping)同步定位与建图,应用于机器人和自主车辆等自主系统的技术,能够在未知环境中同时定位自身位置并构建地图。SLAM在机器人、自动驾驶汽车、无人机等领域都有广泛应用。
ORB-SLAM作为常见的单目摄像机SLAM方案,由三个线程组成,分别是跟踪、建图、回环修正。
跟踪:确定当前帧位姿
建图:完成局部地图构建
回环修正:回环检测以及基于回环信息修正系统漂移
2、数据库
(1)快速图像匹配数据库
快速图像匹配数据库分为视觉词典和关键帧的词袋模型检索数据库。
视觉词典就是将一张图片中的若干特征部分拆解,获得一个包含有若干特征的视觉词典。
词袋模型检索数据库:利用TF-IDF算法,根据相似度,对于不同图片查询出与数据库中最相似的特征。
(2)三维重建的核心数据库
三维重建的核心数据库分为地图点、关键帧、共视图、本质树四类。
地图点:包含世界坐标系下3D坐标,观测方向即所有可以观测到该特征点的视图所产生的的观测方向的均值,ORB特征描述子(相对比之前SfM的sift算子),该点能被观测到的最大距离和最小距离。
关键帧:摄像机位姿,内参数,该帧被提取到的全部ORB特征描述子以及与地图点之间的对应关系。
共视图:一种无向有权图,节点是关键帧,两个节点共享的地图点数大于阈值则存在一条边,边的权重为共享地图点个数
本质图:共视图的子图,保留所有结点,边数量较共视图更少,目的是加速回环校正的计算。
3、算法流程
二、跟踪
跟踪:通过给定当前帧,从图像中提取ORB特征,根据上一帧估计当前帧姿态,估计失败时尝试全局重定位初始化位姿,并构建局部地图进一步优化位姿,并确定是否设置为关键帧。
ORB特征提取:参见ORB特征提取详解-CSDN博客
地图初始化:
初始位姿估计:
局部位姿优化:
关键帧获取:
三、建图
建图:完成局部地图构建,包括对关键帧的插入,验证最近生成的地图点并进行筛选,然后生成新的地图点,使用局部捆绑调整(只调整世界坐标系下三维点,不改变摄像机位姿),最后对插入的关键帧进行筛选,去除多余的关键帧。
关键帧插入:
(1)更新共视图,增加新的结点,更新共视图连接关系
(2)更新生成树的节点关系
(3)计算该新增关键帧的词袋表示,为新建地图点做准备
地图点剔除:
若实际观测比例大于理论值的25%,且地图点创建后,连续的三个关键帧都可以观测到,则保留该新增地图点。
若任何时间连续观测的关键帧数均小于3,则剔除该点。
新地图点生成:
对于当前帧没有被匹配的特征点做如下处理:
(1)在共视图中选取20帧共视程度最高且基线宽度大于某阈值的关键帧进行特征点匹配与三角化,对重构结果进行尺度、重投影误差、视差不宜过小正向深度的检验。
(2)通过检验的点投影到其他视图中,若匹配成功则建立地图和关键帧特征点的对应关系。
局部地图优化:
当前帧及共视关键帧,及其所看到的的所有世界坐标系下的地图点,参与局部BA优化。
局部BA优化只优化地图点的位置,但摄像机位姿在优化过程中固定不变。
局部BA优化方法:
局部关键帧剔除:
保证场景不发生变化的情况下,如果当前帧的90%的地图点都可以被至少其他三个关键帧在相同或更精细的尺度观测到,那么该关键帧被剔除。
通过局部关键帧剔除,可以有效的控制关键帧数量,以此来减少参数数量,提高运算效率。
四、回环修正
回环修正:包含闭环检测和闭环校正两步,闭环检测使用词袋模型找到闭环图片,然后通过Sim3算法去计算相似变换。闭环校正主要是闭环融合和Essential Graph的图优化。
回环候选帧检测:
计算Sim3变换:
回环融合:
位姿优化: