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 在机器人技术.摄影测量学和计算机视觉等领域,鲁棒相机位姿估计是许多视觉应用的核心.近年来,在复杂.大规模的室内外环境中,人们越来越关注相机位姿估计方法的实时性.通用性和可操作性.其 ...
随机推荐
- hdu4882 水贪心
题意: 给你n个任务,每个任务有两个权值,t[i],b[i],前面的是完成任务所需时间,后面的那个是个参数,每个任务完成的代价是完成当前任务总时间(之前的+现在的) sumt * b[i], ...
- PHP 上传文件至阿里云OSS对象存储
简述 1.阿里云开通对象存储服务 OSS 并创建Bucket 2.下载PHP SDK至框架扩展目录,点我下载 3.码上code 阿里云操作 开通对象存储服务 OSS 创建 Bucket 配置Acces ...
- thinkphp 中区块block和模板继承extend用法举例
1.介绍 模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义 ...
- 基于蒙特卡洛树搜索(MCTS)的多维可加性指标的异常根因定位
摘要:本文是我在从事AIOps研发工作中做的基于MCTS的多维可加性指标的异常根因定位方案,方案基于清华大学AIOPs实验室提出的Hotspot算法,在此基础上做了适当的修改. 1 概述 ...
- 【一】kubernetes学习笔记-Pod概念
一.Pod 控制器类型 Pod概念 当一个 Pod 创建后,Pause 容器就会随着 Pod 启动,只要是有 Pod,Pause 容器就要被启动. 在同一个 Pod 里面的容器不能出现端口冲突,否则这 ...
- Django(6)自定义路由转换器
自定义路径转换器 有时候上面的内置的url转换器并不能满足我们的需求,因此django给我们提供了一个接口可以让我们自己定义自己的url转换器 django内置的路径转换器源码解析 在我们自定义路由转 ...
- .NET 在信创常用软件适配清单之中?
2020年8月份写了一篇文章<.NET Core也是国产化信息系统开发的重要选项>, 这又过去了大半年了,在信创领域发生了很大的变化,今天写这篇文章主要是想从信创常用软件适配清单 看一看. ...
- Alpha事后分析
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件的功能主要是让一些基于表单识别的项目(如微软智能表单识别项目)减少在数据生成方面上浪费的 ...
- traefik: 基础入门总结
traefik介绍 traefik-现代反向代理,也可称为现代边缘路由:traefik原声兼容主流集群,Kubernetes,Docker,AWS等.官方的定位traefik是一个让开发人员将时间花费 ...
- 保存 yum 下载的软件包并制作成本地 yum 源
保存 yum 下载的软件包并制作成本地 yum 源 实验对象 CentOS 7 yum 安装 nginx (nginx必须使用第三源才能安装:redhat8版本的则不需要,官网源自带nginx软件包) ...