[论文笔记]ORB-SLAM: a Versatile and Accurate Monocular SLAM System

ORB-SLAM

一、introduction

PTAM

  • 缺少闭环检测
  • 缺少对于闭塞(occlusion)的处理
  • 重定位时对视角的不变性低
  • 自启动(bootstrapping)时需要人工干涉

ORB SLAM

以PTAM为基础

contributions:

  • 使用ORB features在tracking、mapping、relocalization、loop closing任务中,保证在视点和光照变化时的不变性。
  • 使用covisibility graph,使得能在大规模环境中实时运行。
  • 基于essential graph的实时闭环检测。
  • 实时相机重定位
  • 提出基于模型选择的自动地图初始化方法,能够在平面和非平面环境下创建初始地图。
  • 使用宽进严出,”宽进严留“ (generous in the spawning but very restrictive in the culling)的survival of the fittest方法,选取关键帧和地图点。

二、system overview

总结一下就是,tracking、local mapping、loop closing三个线程并行,这三个部分都使用ORB特征。mapping部分的关键帧和地图点存储宽进快出,数据结构比较常规。loop closing部分使用DBoW2进行匹配以检测闭环。构造了两图一树,表示关键帧之间的临近关系,这个两图一树暂时不知道是用在哪儿的

1. feature choice

特征的选择要求:

  • 每张图片的提取时间小于33ms
  • 具有旋转不变性

选取ORB特征。 并在tracking、mapping、place recognition(用于重定位和闭环检测)中都使用ORB特征。

2. 线程

分为三个并行线程:tracking、local mapping、loop closing

2.1. tracking

功能:每一帧相机位姿的估计以及关键帧的检测。

步骤:

  • 当前帧特征抽取,与上一帧特征匹配,得到当前位姿的初始估计。
  • 若匹配失败(由于遮挡或两帧差距过大),则使用place recognition模块进行全局的重定位,得到初始位姿。
  • 使用motion-only BA进行位姿估计的优化。
  • 从局部地图模块得到当前视角的局部地图(由全局关键字的convisibility graph维护),根据重投影,搜索当前帧特征点和局部地图点的匹配。
  • 根据得到的匹配结果,再次优化位姿估计。
  • 决定当前帧是否作为关键帧插入。
2.2. local mapping

功能:处理新进入的关键帧,执行局部BA,以达到当前相机位姿附近的最优的局部重建。维护地图,加入新的点,去除低质量的点和关键帧。

步骤:

  • 插入新的关键帧
  • 使用exigent point culling policy去除低质量的点。
  • 若当前帧的特征点和局部地图中的点不匹配,则covisibility graph的连接关键帧中搜索对应关系,三角化出新的点,插入。
  • 执行局部BA。
  • 去除低质量的局部关键帧。
2.3. loop closing

功能:在每个新关键帧执行闭环检测,若检测到闭环,则做调整。

步骤:

  • 对新进入的关键帧执行闭环检测。
  • 若检测到闭环,计算相似性转换,得到累积误差。
  • 将闭环的两侧对齐,融合重复点。
  • 在essential graph上,根据相似性限制,执行位姿图优化,以达到全局一致性。

3. 地图点、关键帧的描述及选取

3.1. 地图点pip_ipi

包含:

  • 世界坐标系中的三维坐标Xw,iX_{w,i}Xw,i
  • 观测方向nin_ini。是所有观测到这个点的关键帧的中心视角的平均单位向量。(是只有一个吗??)
  • ORB描述子DiD_iDi。 是所有观测到它的关键帧的描述子中,汉明距离最小的一个。
  • dmax,dmind_{max},d_{min}dmax,dmin。(不知道是啥的距离??
3.2. 关键帧KiK_iKi

包含:

  • 相机位姿TiwT_{iw}Tiw,从世界坐标系到相机坐标系。
  • 相机内参,包含焦距和焦点。
  • 此帧的所有ORB特征,无论是否与地图点关联。未扰动的。
3.3. 选取方式

宽容选取,紧急去除。去除冗余关键帧、误匹配地图点、漏匹配地图点。能够提高地图探索时的鲁棒性,外点少。

4. covisibility graph and essential graph

essential graph的权重阈值是多少?比spaaning tree小?
好像这不是三个图,而是两个图。
spanning tree指的就是essential graph,essential graph是covisibility graph的最小生成树(MST)。

4.1. covisibility graph

无向有权图。表示关键帧之间的相邻关系。

  • 点:关键帧
  • 边:若两个关键帧之间共同观测到的地图点大于15,则连一条边
  • 权重:两个关键帧之间共同观测到的地图点数量
4.2. essential graph

保留covisibility graph中的全节点,保留很少量的边。

4.3. spanning tree

从最初关键帧开始持续维护的树,是covisibility graph的子图。

当新关键帧插入:此节点连接到与他有最多共同观测的节点上

当关键帧删除:更新受影响的其他节点的连接关系

essential graph包含spanning tree,这个树的权重阈值很高(100)。

5. bags of

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值