BAD SLAM:捆绑束调整直接RGB-D SLAM

BAD SLAM: Bundle Adjusted Direct RGB-D SLAM

论文地址:

http://openaccess.thecvf.com/content_CVPR_2019/papers/Schops_BAD_SLAM_Bundle_Adjusted_Direct_RGB-D_SLAM_CVPR_2019_paper.pdf

源码链接:www.eth3d.net

摘要

同时定位与映射(SLAM)系统的一个关键组成部分是估计的3D地图与摄像机轨迹的联合优化。束调整(BA)是这方面的金标准。由于稠密RGB-D SLAM中存在大量的变量,以往的工作主要集中在BA的近似上。相比之下,本文提出了一种新的快速直接BA公式,并将其应用于实时密集RGB-D SLAM算法中。证明了直接RGB-D SLAM系统对卷帘快门、RGB和深度传感器同步以及校准误差高度敏感。为了促进对直接RGB-D SLAM的最新研究,提出了一种新颖的、经过良好校准的基准,该基准使用同步的全局快门RGB和深度相机。它包括一个训练集,一个没有公共背景真相的测试集,以及一个在线评估服务。与现有方法相比,该数据集上方法的排序发生了变化,提出的算法优于所有其他评估的SLAM方法。

主要贡献

i) 在RGB-D SLAM系统中实现了一种新的快速直接BA算法,其性能优于现有方法。

ii)一个经过良好校准的RGB-D SLAM基准数据集,但也包括单目和立体视觉惯性SLAM。              与以前的数据集不同,本文使用同步全局快门相机,不需要对滚动快门等效果建模。与现有数据集相比,RGB-D SLAM方法在该数据集上的排名发生了变化。

iii)本文基准和SLAM系统作为开源的排行榜,可参考www.eth3d.net

本文证明了在密集的RGB-D数据上使用单一GPU直接交替BA是实时可行的。提出了一种新颖实用的BA算法,该算法经过精心设计,能够在如图1所示的场景中实时运行。

Direct RGB-D Bundle Adjustment

与SLAM算法一样,由前端和后端组成(c.f.图2)。前端实时跟踪RGB-D相机的运动。提供了摄像机姿态和场景几何的初始估计。后端以较低的频率运行[32],重新定义相机轨迹和几何图形,以构建一致的三维地图。本文的核心技术贡献是一种新的用于后端的直接RGB-D SLAM的Bundle调整(BA)策略。下面,我们将详细描述这个策略。

BA策略基于一组关键概念:

同时使用基于记录深度图像的几何约束和光度约束。后者使用渐变而不是原始像素强度来对光度变化保持鲁棒性。为了实现有效的优化,在重新确定3D地图和相机姿态之间进行交替,以最小化每个时间点考虑的参数数量。本方法是第一个为RGB-D SLAM的密集BA方法,可以在较小的场景中实时运行。首先描述数据表示,然后详细说明优化的成本函数和优化过程本身。

优化方案,如Alg1所述。执行多次迭代直到达到最大值或收敛。在每个迭代中,交替的步骤优化等式1中的成本并更新surfels。每一步的细节如下。

Benchmark Dataset

作为记录新的RGB D SLAM基准的动机,讨论了流行的TUM RGB-D数据集的结果[61]。表2显示了一些常用序列上不同SLAM方法的绝对轨迹误差(ATE)结果(如[61]中所用;越小越好)。可选的内部函数和深度失真优化极大地改善了这些数据集上的结果。

对于异步帧,使用最坏的情况,因为彩色图像是在两个连续深度图像之间的中间时间点渲染的。所有其他偏移都会产生时间上更接近的深度/颜色对。结果显示在表3中。与TUM-RGB-D结果相比,在这些数据集上优于所有其他方法,表明需要模拟更多的效果,例如深度失真,以获得真实的结果。

通过对两台红外摄像机进行立体深度估计,该立体算法同时利用了主动照明和环境红外光。地面真实姿态主要由运动捕捉系统记录。一些训练数据集被记录在这个系统之外以获得更多的多样性。根据基准摄像机和钻机上的附加摄像机的运动结构,以及多次覆盖数据集序列的视频,给出了这些数据的基本真相。这些数据集被保存在一个单独的类别中,可能不太准确。本SLAM基准包括61个训练和35个测试数据集。图3示出了来自本数据集的示例图像。所有序列都显示在补充视频中。

比较了最新的(非惯性)RGB-D SLAM方法的源代码是可用的。对于所有方法,参数仅在训练数据集上调整。图6示出了累积结果,而图7示出了所有数据集上的单个结果。将数据集划分为简单、中等或硬:简单数据集由大多数算法求解,而硬数据集则不由任何算法很好地求解。剩下的是中等难度的。训练数据集的“SfM”类别包含具有SfM地面真值的数据集。

图4显示了BA方案的不同部分在基准测试的示例数据集上的运行时间。里程计所用的时间可以忽略不计。关键帧姿势和几何优化占用的时间最多。

在图5中评估关键帧的创建频率,其中每个关键帧的帧数是为每个图形指定的。在该评估中,选择更频繁的关键帧总是比选择较少的关键帧执行得更好,尽管可能会减少实时设置中的BA迭代次数。但是,内存使用也随着更多关键帧而线性增加。用于surfel创建的单元大小在图5中计算。较小的单元大小可以产生更密集的场景重建,从而提高内存使用率。它可以提高精度,因为更多的几何考虑,但也增加了计算要求。

BAD SLAM:捆绑束调整直接RGB-D SLAM的更多相关文章

  1. 视觉SLAM实战(一):RGB-D SLAM V2

    写在前面 首先打个广告.SLAM研究者交流QQ群:254787961.欢迎各路大神和小白前来交流. 看了前面三篇博文之后,是不是有同学要问:博主你扯了那么多有用没用的东西,能不能再给力一点,拿出一个我 ...

  2. [SLAM] 01 "Simultaneous Localization and Mapping" basic knowledge

    发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发信站: 水木社区 (Thu Jun 16 19:18:24 2016), 站内 ...

  3. [SLAM] 01. "Simultaneous Localization and Mapping"

    本篇带你认识SLAM,形成客观的认识和体系 一.通过行业招聘初步了解SLAM 发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发 ...

  4. 简化可视SLAM应用程序的开发

    简化可视SLAM应用程序的开发 Easing the development of visual SLAM applications 同步定位和映射(SLAM)描述了一个设备(如机器人)使用传感器数据 ...

  5. 从零开始一起学习SLAM | 你好,点云

    本文提纲 先热热身点云是啥你知道点云优缺点吗?点云库PCL:开发者的福音PCL安装指北炒鸡简单的PCL实践留个作业再走先热热身 小白:hi,师兄,好久不见师兄:师妹好,上周单应矩阵作业做了吗?小白:嗯 ...

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

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

  7. 泡泡一分钟:Fast and Robust Initialization for Visual-Inertial SLAM

    张宁  Fast and Robust Initialization for Visual-Inertial SLAM链接:https://pan.baidu.com/s/1cdkuHdkSi9x7l ...

  8. 泡泡一分钟:FMD Stereo SLAM: Fusing MVG and Direct Formulation Towards Accurate and Fast Stereo SLAM

    FMD Stereo SLAM: Fusing MVG and Direct Formulation Towards Accurate and Fast Stereo SLAM FMD Stereo ...

  9. 鱼眼摄像头SLAM

    鱼眼摄像头SLAM 在机器人技术.摄影测量学和计算机视觉等领域,鲁棒相机位姿估计是许多视觉应用的核心.近年来,在复杂.大规模的室内外环境中,人们越来越关注相机位姿估计方法的实时性.通用性和可操作性.其 ...

随机推荐

  1. 关于PHP动态的接收传递的GET,POST和COOKIE变量

    0x01 我们知道 PHP 接收的变量最常用的是 GET,POST,COOKIE 这三个变量.GET变量是附在 url 后传输的,而 POST 变量是放在 http 包中传输的,COOKIE 则是浏览 ...

  2. java+selenium使用JS、键盘滑动滚动条

    本篇文章介绍如何使用JS和键盘对象对页面进行滑动滚动条-------------主要针对java做自动化测试的同学 一:使用键盘对象操作滚动条 //导包 import org.openqa.selen ...

  3. Python JWT 介绍

    Python JWT 介绍 目录 Python JWT 介绍 1. JWT 介绍 2. JWT 创建 token 2.1 JWT 生成原理 2.2 JWT 校验 token 原理 3. 代码实现 4. ...

  4. c++通讯录管理系统

    代码拷贝 #include<iostream> #include<string> #include<stdlib.h> #define MAX 1000 using ...

  5. 基于 el-form 封装一个依赖 json 动态渲染的表单控件

    nf-form 表单控件的功能 基于 el-form 封装了一个表单控件,包括表单的子控件. 既然要封装,那么就要完善一些,把能想到的功能都要实现出来,不想留遗憾. 毕竟UI库提供的功能都很强大了,不 ...

  6. php中的一些碎的知识点

    PHP函数之可变函数,即可以通过变量的名字来调用函数,因为变量的值是可变的,所以可以通过改变一个变量来调用不同的函数 例如 function name(){     echo "name&q ...

  7. [前端、HTTP协议、HTML标签]

    [前端.HTTP协议.HTML标签] 什么是前端 """ 任何与用户直接打交道的操作界面都可以称之为前端 比如:电脑界面 手机界面 平板界面 什么是后端 后端类似于幕后操 ...

  8. Spring Boot读取自定义外部属性

    测试的环境:Spring Boot2 + Maven +lombok 准备需要用到的基础类: public class People { private String name; private St ...

  9. [bug] python3 pip 安装 MarkupSafe==1.0 失败:ImportError:cannot import name 'Feature' from 'setpools'

    解决 先升级pip到最新版本 python -m pip install --upgrade pip 再升级setuptools pip install --upgrade pip setuptool ...

  10. 在 Linux 中,最直观、最可见的部分就是 文件系统(file system)

    在 Linux 中,最直观.最可见的部分就是 文件系统(file system).下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想.这些思想中有一些来 ...