Paper Reading :ORB SLAM(待完成)

前言:ORB SLAM共有两个版本,其中发表于2015的《ORB-SLAM:a Versatile and Accurate Monoculor SLAM System》详细介绍了单目ORB-SLAM的系统组成和算法流程。而与2017年发表的《ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras》则是在前一版本的基础上增加了双目立体视觉和深度相机的ORB-SLAM 实现,总体框架与前一版本基本一致,因此本文主要介绍ORB-SLAM v1。

ORG-SLAM 项目主页

orb slam 文献《ORB-SLAM:a Versatile and Accurate Monoculor SLAM System》

开放源码: github

orb slam 2 文献《ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras》

开放源码  github



ORB-SLAM 论文解析

0、系统总体框架


Paper Reading :ORB SLAM(待完成)_第1张图片
Fig.0 ORB-SLAM System Overview

简述:

1.两个重要模块 BoW (bags of words) Place Recognition ,Map;

2.三个并行线程:Tracking 线程,Local Mapping 线程,Loop Closing 线程。

1、BoW Place Recognition 模块

    这个模块主要包括离线训练获得的视觉词汇表和增量式数据库。视觉词汇表是基于DBoW2库训练得到的,针对不同的视觉场景,需要提前训练获得包含尽可能多的视觉词汇。识别数据库则是建立起特征点ORB描述子与能够看见这个特征点的关键帧之间的逆检索对,本文中的识别数据库在搜索特征点匹配对时发挥了较大作用,主要用于重定位,闭环检测和插入新的地图点步骤中。

2、Map 模块

Map Points: 地图点,即经过单目视觉的深度估计,然后进行优化之后的 3D 空间点,如果后续工作需要使用 ORB-SLAM 产生的地图(当然这种稀疏地图好像除了定位也没有什么太大用处),这个地图点是重要产物。在Map Point 中主要包含以下信息:

地图点在世界坐标系(起始帧对应的相机坐标系)中的三维坐标Xw,i

观测方向ni,即所有能观测到该地图点的关键帧对应的相机光心与该地图点连线的单位平均向量

最佳描述子Di,与该地图点对应的ORB描述子中海明距离最短的描述子

该点能被观测到的最近距离dmin和最远距离dmax

KeyFrames:关键帧,为了减少优化的计算量(以及地图点的数量),ORB-SLAM 对普通的视频帧进行筛选,得找数量较小,质量较高(冗余特征点少)的关键帧,只有这些关键帧才能进入局部地图和闭环检测的线程中,这是ORB-SLAM之所以能够在普通CPU上运行的重要原因(当然也是地图稀疏的主要原因)。关键帧中主要包含以下信息:

相机位姿Tiw(从世界坐标系到当前关键帧的变换)

相机内参,焦距,光心位置

所有特征点的ORB描述子,是否与地图点匹配

 Co-visibility Graph , Essential Graph, Spanning Tree:所谓共视,是指 相机在两个位姿下 (两个相机)观测到了同一个地图点。而共视图则是一种无向有权图,以相机(关键帧)的姿态为图节点,节点之间是否存在边(相连),则是依据这两个节点是否是共视节点,边的权重则是相连节点间共视的地图点个数。本文在共视图中判断两个关键帧是否是共视的依据是:共视的地图点至少为15个。Spanning Tree则只保留每个节点与其他节点有最多共视地图点的边。 而Essential Graph本质上也是共视图,只不过判断共视的依据是:共视的地图点至少为100个,在此基础上再加上Spanning Tree。因此,就地图规模而言,共视图最大,Essential Graph次之,Spanning Tree 最小。

3、地图自动初始化

    这个“自动”,指的是ORB-SLAM系统会根据不同的初始条件(特征点共面或接近共面,视差小归为一类,其他情况归为另一类),自动选择是采用单应性矩阵进行运动恢复(计算初始相机位姿),还是使用基础矩阵进行运动恢复。由于单目视觉系统无法直接获取特征点的深度信息,所以在系统运行的初始阶段,需要依靠对极约束和单应性约束进行运动恢复,才能对特征点进行跟踪(Tracking线程)。流程图如下:


Paper Reading :ORB SLAM(待完成)_第2张图片


,,

4、Tracking 线程


5、Local Mapping 线程


6、Loop Closing 线程

你可能感兴趣的:(Paper Reading :ORB SLAM(待完成))