BAD SLAM:捆绑束调整直接RGB-D SLAM
BAD SLAM:捆绑束调整直接RGB-D SLAM
BAD SLAM: Bundle Adjusted Direct RGB-D SLAM
论文地址:
源码链接: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的更多相关文章
- 视觉SLAM实战(一):RGB-D SLAM V2
写在前面 首先打个广告.SLAM研究者交流QQ群:254787961.欢迎各路大神和小白前来交流. 看了前面三篇博文之后,是不是有同学要问:博主你扯了那么多有用没用的东西,能不能再给力一点,拿出一个我 ...
- [SLAM] 01 "Simultaneous Localization and Mapping" basic knowledge
发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发信站: 水木社区 (Thu Jun 16 19:18:24 2016), 站内 ...
- [SLAM] 01. "Simultaneous Localization and Mapping"
本篇带你认识SLAM,形成客观的认识和体系 一.通过行业招聘初步了解SLAM 发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发 ...
- 简化可视SLAM应用程序的开发
简化可视SLAM应用程序的开发 Easing the development of visual SLAM applications 同步定位和映射(SLAM)描述了一个设备(如机器人)使用传感器数据 ...
- 从零开始一起学习SLAM | 你好,点云
本文提纲 先热热身点云是啥你知道点云优缺点吗?点云库PCL:开发者的福音PCL安装指北炒鸡简单的PCL实践留个作业再走先热热身 小白:hi,师兄,好久不见师兄:师妹好,上周单应矩阵作业做了吗?小白:嗯 ...
- 高翔《视觉SLAM十四讲》从理论到实践
目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...
- 泡泡一分钟:Fast and Robust Initialization for Visual-Inertial SLAM
张宁 Fast and Robust Initialization for Visual-Inertial SLAM链接:https://pan.baidu.com/s/1cdkuHdkSi9x7l ...
- 泡泡一分钟: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 ...
- 鱼眼摄像头SLAM
鱼眼摄像头SLAM 在机器人技术.摄影测量学和计算机视觉等领域,鲁棒相机位姿估计是许多视觉应用的核心.近年来,在复杂.大规模的室内外环境中,人们越来越关注相机位姿估计方法的实时性.通用性和可操作性.其 ...
随机推荐
- Linux 究级基础入门命令整理
Linux 究级基础入门命令整理 条条框框,三三两两,怎讷个这么多,哈哈!no zuo no die. 纯粹个人菜鸟笔记,望大神笑纳! 后续,未完!! 查看系统信息 uname -a - 查看内核/操 ...
- 【MySQL】Mysql(InnoDB引擎) 索引的数据结构为什么选择B+Tree
1.B+ Tree的层数较少 B类树的一个很鲜明的特点就是数的层数比较少,而每层的节点非常多,树的每个叶子节点到根节点的距离都是相同的: 2. 减少磁盘IO: 树的每一个节点都是一个数据也,这样每 ...
- thinkphp5 ztree树形菜单
教程:http://makaidong.com/zjfjava/4074_5873678.html 下载:https://github.com/zTree/zTree_v3
- VPS、云主机 and 服务器集群、云计算 的区别
VPS:(virtual private server)虚拟专用服务器,将一台服务器分割成多个虚拟专享服务器的优质服务.实现VPS的技术分为容器技术和虚拟化技术.在容器或虚拟机中,每个VPS都可分配独 ...
- 一个不错的过TP思路,转载CSDN
也许大家也是研究腾讯游戏的爱好者,对腾讯的游戏都有过这样的体会 例如OD与CE无法进行如以下操作: 无法附加进程, 无法打开进程, 游戏进程被隐藏无法在工具中查看到,内存无法读取代码 内存修改后游 ...
- 获取汉字首字母并分组排列 PHP
1.代码class Character{ /** * 数组根据首首字母排序 */ /** * 二维数组根据首字母分组排序 * @param array $data 二维数组 * @param stri ...
- 检查dtd和Xschema文件限制下的xml文件是否符合的Java文件
先来xml文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE orders SY ...
- 这次我好像才真的明白了CSS Rem字体计算的原理
背景 如何按照设计稿中标注的尺寸,直接写页面的样式,不再需要px2rem这样的工具或者人工转换 ? 只要你明白了rem的计算原理,这个问题的答案超级简单. 根字体大小计算核心原理 设备的根字体大小 * ...
- Java 进行时间处理
Java 进行时间处理 一.Calendar (1).Calender介绍 Calendar的中文翻译是日历,实际上,在历史上有着许多种计时的方法.所以为了计时的统一,必需指定一个日历的选择.那现在最 ...
- 分布式RPC框架Dubbo实现服务治理:集成Kryo实现高速序列化,集成Hystrix实现熔断器
Dubbo+Kryo实现高速序列化 Dubbo RPC是Dubbo体系中最核心的一种高性能,高吞吐量的远程调用方式,是一种多路复用的TCP长连接调用: 长连接: 避免每次调用新建TCP连接,提高调用的 ...