ORB-SLAM: a Versatile and Accurate Monocular SLAM System

2022/1/19 23:55:59

本文主要是介绍ORB-SLAM: a Versatile and Accurate Monocular SLAM System,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

论文翻译
论文讲解

三、系统总览

在这部分中简单介绍了一下整个系统的流程。

A特征选择
制图和追踪过程中的特征点在重定位和回环检测的时候也会使用,从而实现一个更加高效的系统。在ORBSLAM中使用的特征描述子是ORB描述子,这种描述子计算和匹配的速度很快,同时具有旋转不变性,从而让BA优化的结果精度更高。

B三个线程:追踪、局部建图和回环检测
在这里插入图片描述
图中所示的是整个系统的流程,可以看见整个系统包括三个线程。
跟踪线程主要负责随着每一帧的增加,一帧一帧地计算相机的位姿,并且根据计算出来的位姿,来确定什么时候将一个帧作为新的关键帧,在这个过程中我们首先使用匀速模型去进行估计,不合适则是用上一帧的数据,再不行则使用全局重定位。这个线程相当于在不断获得每一帧的位姿信息。
局部地图线程是负责进行新的关键帧的处理,并且要进行局部的BA优化。同时这个线程也会维护关键帧的数目,从而起到一个限制计算量的作用。
最后的回环检测线程看名字就能知道意思了,就是对新来的关键帧进行检测,看是否出现了回环的信息,如果出现就利用回环信息去校正累积误差,从而对全局的地图进行一次优化。

C地图点、关键帧以及他们的选择
地图点是恢复了3d信息的点,对应的是真实场景下的一个点的坐标,每个地图点要存储下面的一系列信息:
在这里插入图片描述
而关键帧没什么好说的,需要保存下面的信息:
在这里插入图片描述
地图点和关键帧都通过一些选择和删除机制去维持,从而保证维护的局部场景是有限大小的,不至于过大导致计算过于复杂。

D共视图和关键图
共视信息指的是一个点可以被两个帧同时看见,而共视图是基于这个共视关系,用节点表示关键帧,关键帧之间如果存在至少十五个点满足共视关系,就给这两个点增加一条边,并用共视关系的点的数目来表示边的权重。可见共视图描述了帧与帧之间特征的联系,在后面的优化过程中会用到这个图。
关键图则是用于回环检测的相关操作。关键图保留了所有的关键帧,每个关键帧都存储为一个节点,但是在关键图中节点的数目会更少,这主要是为了保持一个比较强的网络,从而获得精准的结果。它的边包含生成树的连接关系、形成闭环的连接关系、共视关系非常好的关键帧连接关系
此外,系统还增量式地维护一个生成树,从第一个关键帧开始,它连接了边缘数量最少的共视图的子图像,也就是关键帧与附近共视关系最好的关键帧,也是一种父子关系。
共视图、关键图和生成树讲解
也就是说,共视图是内容最丰富的,只要满足十五个点的共视关系就有一条边,而生成树是内容最简单的,一个节点只选择共视关系最大的点作为父节点,关键图介于二者之间,只保留了共视关系很好的边以及一些额外的信息。

E基于图像词袋模型的位置识别
在进行回环检测过程中,使用词袋模型进行回环的检测,关于词袋模型的内容前面SLAM十四讲里面有,这里不多赘述了。

四、自动地图初始化

五、跟踪

六、局部制图

七、回环检测



这篇关于ORB-SLAM: a Versatile and Accurate Monocular SLAM System的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程