RGB-D相机视觉SLAM

Dense Visual SLAM for RGB-D Cameras

开源代码地址:  vision.in.tum.de/data/software/dvo

摘要

本文提出了一种用于RGB-D相机的稠密视觉SLAM方法,该方法可以使所有像素上的光度误差和深度误差最小化。与稀疏的、基于特征的方法相比,能够更好地利用图像数据中的可用信息,从而提高姿态精度。提出了一种基于熵的相似性度量方法,用于关键帧选择和环路闭合检测。从所有成功的匹配中,构建了一个使用g2o框架进行优化的图。在公开的基准数据集上对进行了广泛的评估,在低纹理和低结构的场景中表现良好。与几种最先进的方法直接比较,本方法产生的轨迹误差大大降低。代码开源。

主要创新点:

本文的主要贡献有:

•一种快速的帧间配准方法,可优化强度和深度误差,

•基于熵的关键帧选择方法,显著减少了漂移,

•基于相同熵度量验证循环闭包的方法,以及

•将上述所有技术集成到一个通用的图形SLAM解算器中,进一步减少漂移。

本文目标是仅从摄像机的图像流来估计摄像机的运动。在每个时间步t,相机提供RGB-D图像,包括强度图像It和相应的深度贴图Zt。给定两个连续时间步的RGB-D图像,要计算相机的刚体运动g。图2说明了这个想法。

选择了测量近邻搜索,在空间受限的室内环境中操作,而且视觉里程计非常精确。在一个围绕关键帧位置具有预定半径的球体中搜索循环闭合候选者。在粗分辨率下,计算每个候选帧的两个关键帧和相关协方差矩阵之间的相对变换。为了验证候选者,采用与关键帧选择相同的熵比测试。使用中间帧到关键帧的所有成功匹配的平均熵,而不是第一帧到关键帧H(ζk:k+1)的转换熵。这一标准背后的直觉是,中间帧在空间和时间上最接近于关键帧,在此可获得具有最低不确定性的最佳可能注册结果。如果从低分辨率图像获得的参数估计值通过测试,也使用更高分辨率计算改进的估计值。最后,应用相同的熵比检验。如果这个测试也成功了,就在图中插入一个带有相对位姿约束的新边。图3显示,当相机返回到捕捉到第50帧的附近(第420450帧)时,熵比再次增大。此外,图3显示,高熵比与估计中的低误差相符。

使用慕尼黑技术大学提供的RGB-D基准进行评估[10]。基准包含用RGB-D相机捕获的多个真实数据集。每个数据集都伴随着一个由外部运动捕获系统获得的精确的地面真值轨迹。在第一组实验中,评估了组合光度和几何误差最小化的好处。具有不同数量的纹理和结构的RGB-D数据集适合于此目的。图4显示了不同数据集的代表性图像。表一显示了实验结果。前两列指示数据集是否包含结构/纹理(x)或不包含(-)。第三列显示相机到场景的定性距离。最后三列显示了RGBonly、depth only和combined三种不同估计方法的平移漂移(RPE)的均方根误差(RMSE),单位为m/s。与仅深度变量相比,仅RGB的里程计在具有纹理的无结构场景中效果更好,反之亦然。在这些数据集上,组合变量的性能优于这两种方法。但是,在具有结构和纹理的数据集上,组合RGB和深度odometry的性能略低于仅RGB的odometry。尽管如此,它在不同场景类型上显示了更好的泛化。深度项也有助于在由于自动曝光而导致强度突然变化的情况下稳定估计值。

本方法与最新的视觉SLAM方法进行比较,即RGB-D SLAM系统[2]、[31]、多分辨率surfel映射(MRSMap)[11]和KinectFusion的PCL实现(KinFu)[5]。表三总结了结果。第一列包含数据集名称,第二列显示系统创建的关键帧数。以下各列显示了本系统、RGB-D SLAM、MRSMap和KinectFusion的绝对轨迹误差的RMSE。本系统在八个数据集中表现最好,所有系统的结果都是可用的。三个方面与最佳系统的区别其他数据集较小。内部冲突在长而复杂的轨道上,例如fr1/房间、fr1/teddy,比其他系统的改进是显著的。

表二:所有freiburg1数据集的平移漂移(RPE)RMSE(m/s),帧间、帧间和帧间里程计,以及姿势图优化。注意(v)标记没有公共基础的验证数据集,本文使用在线工具评估了这些数据集。与逐帧里程计相比,使用关键帧可将性能提高16%。位姿图优化进一步减小了漂移,平均提高了20%。

表三:与三个最先进的系统相比,本文视觉SLAM系统的绝对轨迹误差(m)的RMSE。第二列显示系统使用的关键帧数。本系统对大多数数据集的性能最好。尤其要注意对具有长而复杂轨迹的数据集(如fr1/房间、fr1/teddy)的改进。

在一台采用英特尔酷睿i7-2600处理器、3.40GHz和16GB内存的PC机上进行了所有实验。视觉里程计和SLAM组件在不同的线程中运行。帧到关键帧的跟踪时间在32ms左右几乎是恒定的,循环闭合检测和优化的时间取决于图中关键帧和边的数量。此地图更新的平均处理时间为135ms。在运动估计的粗到精优化中,本文使用三种不同的图像分辨率,最高可达320×240像素。

RGB-D相机视觉SLAM的更多相关文章

  1. 视觉SLAM中相机详解

    视觉SLAM中,通常是指使用相机来解决定位和建图问题. SLAM中使用的相机往往更加简单,不携带昂贵的镜头,以一定的速率拍摄周围的环境,形成一个连续的视频流. 相机分类: 单目相机:只是用一个摄像头进 ...

  2. (转) SLAM系统的研究点介绍 与 Kinect视觉SLAM技术介绍

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     SLAM系统的研究点介绍 本文主要谈谈SLAM中的各个研究点,为研究生们(应该是博客的多数读者吧)作一个提纲挈领的摘要.然后,我 ...

  3. 高翔《视觉SLAM十四讲》从理论到实践

    目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...

  4. 视觉SLAM漫淡

    视觉SLAM漫谈 1.    前言 开始做SLAM(机器人同时定位与建图)研究已经近一年了.从一年级开始对这个方向产生兴趣,到现在为止,也算是对这个领域有了大致的了解.然而越了解,越觉得这个方向难度很 ...

  5. 视觉SLAM的数学表达

    相机是在某些时刻采集数据的,所以只关心这些时刻的位置和地图. 就把这一段时间的运动变成了李三时刻 t=1,2,...K当中发生的事情. 在这些事可,x表示机器自身的位置. x1,x2,x3,x4... ...

  6. 视觉SLAM

    SLAM:Simultaneous Localization And Mapping.中文:同时定位与地图重建. 它是指搭载特定传感器的主体,在没有实验先验信息的情况下,于运动过程中建立环境的模型,同 ...

  7. 如何从零开始系统化学习视觉SLAM?

    由于显示格式问题,建议阅读原文:如何从零开始系统化学习视觉SLAM? 什么是SLAM? SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻 ...

  8. 经典视觉SLAM框架

    经典视觉SLAM框架 整个视觉SLAM流程包括以下步骤: 1. 传感器信息读取.在视觉SLAM中主要为相机图像信息的读取和预处理. 2. 视觉里程计(Visual Odometry,VO).视觉里程计 ...

  9. SLAM学习笔记 - 视觉SLAM方法资源汇总

    工具类: ros框架 linux系列教程     vim Eigen     Eigen快速入门 Pangolin  Pangolin安装与使用 数据集: TUM         数据格式 提供pyt ...

随机推荐

  1. Android APK程序的smali动态调试

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/71250622 一.Apktool的下载和安装 Apktool是Android逆向分 ...

  2. POJ 2135 简单费用流

    题意:       题意是一个人他要从牧场1走到牧场n然后在走回来,每条路径只走一次,问全程的最短路径是多少. 思路:        这个题目挺简单的吧,首先要保证每条边只能走一次,然后还要要求费用最 ...

  3. Java Web中间件

    目录 中间件 常见的web中间件有哪些 Tomcat Weblogic Jboss Jetty Webshere Glasshfish 中间件 我们经常会看到中间件,但是,一直好奇的是,中间件到底是什 ...

  4. Win64 驱动内核编程-26.强制结束进程

    强制结束进程 依然已经走到驱动这一层了,那么通常结束掉一个进程不是什么难的事情.同时因为win64 位的各种保护,导致大家慢慢的已经不敢HOOK了,当然这指的是产品.作为学习和破解的话当然可以尝试各种 ...

  5. Cannot read property 'style' of null

    代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...

  6. 【ECharts】报表联动,动态数据设计

    说明: 数据没有拉取后台数据,仅仅前端模拟数据,Copy即可有效果.联动后台时,使用异步获取数据即可.鼠标点击,动态展示点击项的数据.有关更多实例,请移步到echarts官网查看. 成果展示: 相关代 ...

  7. SwiftUI 简明教程之自定义 Modifier

    本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容. Eul 是一款 SwiftUI & Combine 教程 App(iOS.macOS),以文章(文字.图片. ...

  8. JS数组的操作方法汇总

    数组的增删 push():添加到最后 pop():取出最后一个 shift():取出第一个 unshift():添加到第一个 splice() : 返回删除的数组,如果没有则为空数组,会改变原数组.可 ...

  9. 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍

    目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...

  10. zabbix添加菜单栏

    1.更改字体(中文乱码多半是因为字体不支持中文) define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name define('ZBX_ ...