论文阅读顺序

一、摘要

二、介绍

三、结论

四、相关工作

五、模型

六、实验

正文部分

一、摘要

本文提出了一个完整的SLAM系统ORB-SLAM2,针对于单目,双目和RGB-D相机,其中包括地图重建、闭环和重定位功能。该系统在标准的CPUs上实时工作,可以运用与各种场景,比如小型便携性室内数据(small hand-held indoors sequences),工业环境的无人机飞行和城市内的汽车行驶。后端基于单目和双目观察值的BA(bundle adjustment)允许米尺寸(metric
scale)进行精确轨迹优化。我们的系统包括一个轻量级的定位模式,利用视觉里程测量跟踪未映射区域和匹配映射点,允许零漂移定位。对29个流行的公开数据的评估所表明,我们的方法达到了最先进的精度,在大多数情况下是最准确的SLAM解。我们发布源代码,不仅是为了造福SLAM社区,也是为了为其他领域的研究人员提供现成的SLAM解决方案。

二、介绍

SLAM在前两年的计算机视觉和机器人环境是一个火的研究点,曾经吸引很多大型技术公司的注意力。SLAM技术通过构建未知环境的地图,对地图中的传感器进行定位,注重实时操作。在各种各样的传感器中,相机是便宜的,还能提供环境中丰富的信息允许机器人对位置的准确识别。因此,视觉SLAM解决方案的主要传感器是相机,也如今主要的兴趣。位置识别是一个SLAM系统关键模块对于闭环(检测当传感器返回地图区域的时候,并纠正勘探过程中累积的错误)和在追踪失败后相机的重定位,由于阻塞或主动运动,或在系统重新初始化时。

视觉SLAM仅通过一个单目摄像头就可以实现,这是最便宜和最小的传感器设置。然而,仅一个摄像头不能够观察到深度,这使地图的尺寸和轨迹的评估都是未知的。此外,系统引导了需要多视图或过滤技术来生成初始地图,因为它不能从第一帧进行三角测量。最后但同样重要的是,单目SLAM在探测过程中存在尺度漂移问题,如果采用纯旋转的方法可能会失败。通过使用立体或RGB-D摄像机,所有这些问题都得到了解决,并允许最可靠的视觉SLAM解决方案。

在这篇论文中,在建立ORB-SLAM的基础上,提出了ORB-SLAM2,它的贡献如下:

1、首个单目、双目和RGB-D相机的开源的SLAM系统,该系统包括了闭环,重定位和地图重建。

2、通过使用BA的RGB-D结果展示我们比目前最先进的基于ICP或光度法和深度误差最小化的方法实现了更高的精度。

3、通过使用近的和远的双目点和单目观测值,我们的双目结果的精确值比最好直接双目SLAM得效果更准确。

4、一个轻微的定位模型能够禁用映射的情况下有效地地图重建。

图1展示了双目和RGB-D输入的ORB-SLAM2输出的例子。双目实例显示了从KITTI数据集[2]中得到的数据00的最终轨迹和稀疏重建。这是一个带有多个环路的城市序列,ORB-SLAM2能够成功探测到。RGB-D案例显示了从TUM RGB-D数据集[3]中序列fr1室估计出的关键帧位姿,以及一个密集的点云,由估计出的关键帧位姿的反向投影传感器深度图呈现。请注意,我们的SLAM不执行任何融合,如KinectFusion[4]或类似的,但良好的定义表明关键帧姿态的准确性。更多的例子显示在附加的视频。

三、结论

  我们提出了一个完整的SLAM系统,满足单目,双目和RGB-D传感器,能够实时的实现重定位,闭环和地图的重建基于标准的CPU。我们专注于构建全球一致的地图,在广泛的环境中进行可靠和长期的定位,正如实验中所证明的那样。提出的定位模式与系统的重新定位能力产生了一个非常鲁棒的,零漂移和轻量化的定位方法,为已知环境。这个模型对于某些应用程序可能很有用,比如在已建图良好的空间中跟踪虚拟现实中的用户视角。

与最新技术的对比表明,ORBSLAM2在大多数情况下都达到了最高的精度。在KITTI视觉里程计基准ORB-SLAM2是目前最好的双目SLAM解决方案。至关重要的是,与近年来蓬勃发展的双目视觉里程计方法相比,ORB-SLAM2可以在已构建地图的区域上实现零漂移定位。令人惊讶的是,我们的RGB-D结果表明,如果需要最精确的相机定位,BA比直接方法或ICP方法执行得更好,另外的优势是计算成本更低,不需要GPU处理实时操作。

四、相关工作

在本节中,我们讨论有关双目和RGBD SLAM的工作。我们的讨论和第四节的评价只集中在SLAM方法上。

A.双目相机

早期的双目SLAM系统是Paz等人的成果。基于条件独立分治法的卡尔曼滤波器SLAM(Conditionally Independent Divide 和Conquer EKF SLAM)与当时的其他方法相比,它能够在更大的环境中运行。最重要的是,这是第一个同时利用近点和远点的双目SLAM。(由于双目相机中视差小,这些点无法可靠估计深度)对后者使用反深度参数化[6]。他们的经验表明,如果点的深度小于双目基线的40倍,就可以可靠地进行三角测量。在这项工作中,我们遵循以不同方式处理近点和远点的策略,如第三- a节所述。

大多数现代双目SLAM系统都是基于关键帧的[7],并在局部区域进行BA优化以实现可扩展性。Strasdat等人的工作是实现了BA(点-位姿约束)的一个联合优化在在关键帧的内部窗口和外部窗口中的姿态图(姿态约束)。通过限制这些窗口的尺寸来得到恒定的时间复杂度,但代价是不能保证全局一致性。Mei等人的RSLASM,在活动区域中使用地标和姿势的相对表示,并执行相对BA,而活动区域可以被限制为常数时间。RSLAM能够闭环,运行在回环的两侧括展活动区域,但是全局统一无法实现。最近的Pire等人的S-PTAM实现了局部BA,然而却没有大范围的闭环。与这些方法类似,我们在关键帧的局部集合中执行BA,这样复杂性与地图大小无关,我们可以在大型环境中操作。然而,我们的目标是建立一个全局统一的地图。当闭环时,我们的系统首先调整两边,类似于RSLAM,以便跟踪能够继续使用旧地图定位,然后执行位姿图优化,以最小化在环中累积的漂移,然后完全BA。

Engel 等人最近提出的双目 LSD-SLAM是一种半密集直接方法,它能使高梯度图像区域的光度误差最小化。由于不依赖于特征,该方法有望对运动模糊或纹理不良的环境更加稳健。然而,作为一种直接的方法,它的性能可能会受到未经建模的影响,如滚动快门或非朗伯反射。

B.r-gbd相机

最早和最著名的RGB-D SLAM系统之一是纽科姆等人的KinectFusion。该方法将传感器的所有深度数据融合成一个体积密集模型,用于使用ICP跟踪相机的姿态。由于它的体积表示法和缺少闭环,这个系统被限制在小的工作空间中。通过使用滚动循环缓冲器和使用位置识别和位姿图优化的闭环,[12]能够在大环境中运行。

可能第一个流行的开源系统是Endres等人的RGB-D SLAM。这是一个基于特征的系统,其前端通过特征匹配和ICP计算帧到帧的运动。后端使用探索式搜索中的闭环约束执行姿态图优化。类似地,Kerl等人的DVO-SLAM的后端[14]优化了一个姿态图,其中关键帧到关键帧的约束是从视觉里程计计算出来的,从而最大限度地减少了光度和深度误差。DVO-SLAM还在所有之前的帧中以探索式方式搜索回环候选帧,而不是依赖位置识别。

Whelan et al.[15]最近的ElasticFusion构建了一个基于surfel的环境地图。这是一种以地图为中心的方法,它忘记了姿势,并在地图上应用非刚性变形执行回环关闭,而不是标准的姿势图优化。该系统的详细重建和定位精度令人印象深刻,但目前的实现仅限于房间大小的地图,因为复杂性与地图中的surfels数量的比例。

正如Strasdat等人提出的,我们的ORB-SLAM2使用深度信息合成立体坐标来提取图像上的特征。这样我们的系统就不知道输入是双目还是RGB-D。

与上述方法不同的是,我们的后端是基于BA和构建全局一致的稀疏重建。因此,我们的方法是个轻量级可以在标准的CPU下工作。我们的目标是长期和全局一致的定位,而不是最多细节的稠密重建。然而,从高度精确的关键帧姿态可以融合深度图,在局部区域得到精确的动态重建,或者在完全BA后对所有关键帧的深度图进行后处理,得到整个场景的精确3D模型。

五、模型

   

用于立体和RGB-D相机的ORB-SLAM2是基于我们的基于单目特征的ORB-SLAM [1],有如下几个部分。

系统的总体概况如图2所示。这个系统有三个主要平行线程:1、通过寻找与局部地图匹配的特征和应用仅运动的BA最小化重投影误差来跟踪摄像机每帧的位置。2、局部地图管理和优化,执行局部BA。3、闭环检测大环,并通过执行位姿图优化来纠正累积漂移。在前三个线程之后启动第四个线程,在姿态图优化后执行全BA,计算最优结构和运动解。

该系统嵌入一个位置识别模型基于DBoW2为了重定位,如果跟踪失败(例如遮挡)或重新初始化在一个已经建图的场景,以及环路检测。系统维护一个共视图 [8],该图将观察公共点的任意两个关键帧与连接所有关键帧的最小生成树连接起来。这些图形结构允许检索关键帧的局部窗口,以便跟踪和局部映射在局部运行,允许在大型环境中工作,并用作闭环时执行的姿势图优化的结构。该系统使用相同的ORB特性[17]来执行跟踪、映射和位置识别任务。

这些功能对旋转和缩放都很强的鲁棒性,并且对相机自动增益和自动曝光以及照明变化具有良好的不变性。此外,它们提取和匹配速度快,可实现实时操作,并在词袋(bag-of-word)位置识别中表现出良好的精度/召回性能[18]。

数学公式(略)

六、实验

A.kitti数据集

B、EuRoC数据集

C、TUM数据集

#第三篇#ORB-SLAM2: an Open-Source SLAM System forMonocular, Stereo and RGB-D Cameras相关推荐

  1. ORB SLAM2源码解读(三):Frame类

    文章目录 前言 构造函数 双目相机 RGBD相机 单目相机 ExtractORB:提取特征点 ComputeBoW:计算词袋数据 SetPose:设置相机外参 isInFrustum:判断一个MapP ...

  2. Ubuntu下使用单目相机运行ORB SLAM2

    环境:Ubuntu16.04+ROS Kinetic+USB单目摄像头 虽然ORB SLAM2的官方说明中表示没有ROS也可以编译运行,但要实时的跑ORB SLAM2还是需要ROS平台的,所以之前没有 ...

  3. 步步理解 JAVA 泛型编程 – 共三篇

    http://learning.iteye.com/blog/1295901 FROM: http://unmi.cc/understand-java-generic-3 步步理解 JAVA 泛型编程 ...

  4. 好玩的ES--第三篇之过滤查询,整合SpringBoot

    好玩的ES--第三篇之过滤查询,整合SpringBoot 过滤查询 过滤查询 使用 类型 term . terms Filter ranage filter exists filter ids fil ...

  5. orbslam2可视化_[Ubuntu] ORB SLAM2 编译调试

    ORB SLAM2 是 2015年比较受到关注的一篇文章,它的主要思想是借助 ORB 描述子改进了 Sparse SLAM 的性能,使得其在稳定性和速度上都达到了比较好的程度.从创新性上来讲,它的主要 ...

  6. GWAS分析中SNP解释百分比PVE | 第三篇,MLM模型中如何计算PVE?

    之前,想研究一下GWAS分析汇中PVE(表型方差解释百分比)的计算方法,写了两篇: GWAS分析中SNP解释百分比PVE | 第一篇,SNP解释百分比之和为何大于1? GWAS分析中SNP解释百分比P ...

  7. centOS7 LNMP+phpmyadmin环境搭建 第三篇phpmyadmin安装

    这篇文章主要介绍了CentOS7 LNMP+phpmyadmin环境搭建,第三篇phpmyadmin安装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 之前我们已经安装了lnmp的环境,现在让我们 ...

  8. IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上)...

    IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上) 在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的 ...

  9. hadoop作业初始化过程详解(源码分析第三篇)

    (一)概述 我们在上一篇blog已经详细的分析了一个作业从用户输入提交命令到到达JobTracker之前的各个过程.在作业到达JobTracker之后初始化之前,JobTracker会通过submit ...

最新文章

  1. boost::log::dynamic_type_dispatcher用法的测试程序
  2. UML类图的6大关系
  3. 三次握手和四次挥手图解_三次握手和四次挥手简单理解
  4. java安装版本哪种好_我怎么知道我安装了哪个版本的Java?
  5. 设置go path_Go命令的PATH安全性
  6. Python+django网页设计入门(16):优化设计复用分页代码
  7. 算法复习——割点(洛谷3388)
  8. 【计算机网络】网络层(六)—— IP组播与移动IP
  9. 如何给客户做产品培训
  10. git 删除git管理_使用Git管理多媒体文件
  11. Spring框架中 自动装配的详解 属性值的详解
  12. eNSP配置VLAN
  13. 安装VMtools:请确保您已登录客户机操作系统。在客户机中装载CD驱动器启动终端,使用tar解压缩安装程序,然后执行vmware-insall.pl安装VMware Tools。
  14. GFP-GAN学习笔记
  15. VB.Net - 程序结构
  16. 微信小程序:组件Component接收不到参数id
  17. Java反射invoke报错wrong number of arguments
  18. FaceNet:人脸识别和聚类的统一嵌入
  19. 免费中医坐堂管理软件
  20. Ubuntu 下安装Python2.7, Scrapy, tabula

热门文章

  1. Golang 之context用法
  2. c语言双重for循环流程图_使用C语言编写程序对数据进行排序
  3. 你的花呗额度为啥那么低?我用Python帮你做分析
  4. Flink temporal table join研究
  5. 前端打卡day3--html-表格
  6. Flask Web开发入门(十)之图片上传(使用Flask-Upload)
  7. 名帖127 文徵明 小楷《盘谷叙》
  8. android 百度地图名片,如何制作百度地图名片获取链接及代码?
  9. fatal: unable to access ‘https://github.com/xxx‘: GnuTLS recv error (-110): The TLS connection...
  10. Python Learning Day8