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. 深度 | ICCV研讨会:实时SLAM的未来以及深度学习与SLAM的比较(附论文和PPT)

    选自 Computer Vison Blog 作者:Tomasz Malisiewicz 机器之心编译 参与:吴攀.杜夏德 深度学习.计算机视觉和算法正在塑造人工智能的未来. 上一届「国际计算机视觉大 ...

  2. 【阅读文献】单目视觉SLAM方法综述【1】~单目视觉SLAM分类方法

    目录 1 单目视觉SLAM分类方法 1.1 基于概率框架的单目视觉SLAM 1.2 基于非概率框架的单目视觉SLAM方法 SLAM最先由Smith Self 和 Cheeseman于1987年提出,被 ...

  3. Towards Real-time Semantic RGB-D SLAM in Dynamic Environments(动态语义SLAM)

    动态环境下的实时语义SLAM 简介 摘要 系统流程 实验结果 总结 简介 在ICRA 2021上看到这样一篇论文:Towards Real-time Semantic RGB-D SLAM in Dy ...

  4. 实时SLAM的未来及深度学习与SLAM对比

    第一部分:为什么SLAM重要 vSALM(Visual SLAM)能够在跟踪摄像机(用于AR的手持或者头盔,或者装备在机器人上)位置和方位的同时构建三维地图. SLAM算法与ConvNets和深度学习 ...

  5. SLAM综述(4)激光与视觉融合SLAM

    分享 SLAM包含了两个主要的任务:定位与构图,在移动机器人或者自动驾驶中,这是一个十分重要的问题:机器人要精确的移动,就必须要有一个环境的地图,那么要构建环境的地图就需要知道机器人的位置. 本系列文 ...

  6. 视觉slam十四讲 pdf_《视觉SLAM十四讲》学习笔记+关键知识点汇总(一)

    刚体运动的分解:旋转+平移 旋转:旋转矩阵Rotation Matrix,是行列式为1的正交矩阵(逆为自身转置的矩阵),SO(n)表示特殊正交群 因此变化可表示为:A' = RA+t 在三维向量末尾加 ...

  7. 深度学习在slam的应用Deep Learning Applications in SLAM

    2022 摘要 同时定位与映射(SLAM)是近年来智能机器人领域的研究热点.其处理对象是视觉图像.深度学习在计算机视觉领域取得了巨大成功,这使得深度学习与slam技术的结合成为一个可行的方案.本文总结 ...

  8. 激光SLAM | SuMa++:基于激光雷达的语义SLAM

    论文题目:SuMa++:Efficient LiDAR-based Semantic SLAM 可参考此文 一.摘要 可靠的高精度定位和建图是自动驾驶系统的关键环节.除了高精度的几何信息以外,地图中还 ...

  9. 《视觉SLAM十四讲》笔记——初识SLAM

    自主运动能力 1.我在什么地方 -- 定位 2.周围环境是什么样子的 -- 建图 两类传感器 1.携带于机器人本体上的:例如轮式编码器,相机,激光等等. 2.安装于环境中的:例如导轨,二维码标志等等. ...

最新文章

  1. fatal: Unsupported SSL backend ‘“openssl”‘. Supported SSL backends:
  2. 我的头上碧空晴朗——数据库存datetime问题
  3. Java中获取数据库中两个时间的相差秒数
  4. 【Python】Python字典的高级用法-统计计数
  5. POJ - 2400 Supervisor, Supervisee(KM+打印方案)
  6. 如何删除数据库中的所有用户表(表与表之间有外键关系)
  7. 天池 在线编程 捡胡萝卜(模拟)
  8. jni java返回数组_Android开发实践:Java层与Jni层的数组传递
  9. 单词翻转(信息学奥赛一本通-T1144)
  10. .net framework4与其client profile版本的区别
  11. Kubernetes学习总结(13)—— Kubernetes 各个组件的概念
  12. 交互设计实用指南系列(8)—深广度平衡
  13. java单点登录需求分析与代码实现
  14. python round用法_Python round 函数
  15. SPI 读取不同长度 寄存器_几种常用的总线设计:UART/SPI/I2C
  16. java-php-python-ssm-民航售票管理系统-计算机毕业设计
  17. Unity Monetization 3.0 部分接入文档内容
  18. 数字格式化、大数据BigDecimal、随机数生成方法random()
  19. 苹果Mac电脑开机启动时的声音如何关闭?
  20. 阿里云ecs服务器(Ubuntu)配置图形界面并远程桌面连接

热门文章

  1. Reject: HTTP ‘DELETE‘ is not allowed, Not injecting HSTS.....DELETE请求PUT请求跨域问题
  2. 十大算法,描述+代码+演示+分析+改进(赶紧收藏!)
  3. 【解决方法】你已从聊天服务器断开,正在尝试重新连接
  4. 你听说过反摩尔定律吗?
  5. 数据算法算力知识反绎学习
  6. pytorch版的bilstm+crf实现sequence label
  7. torch.nn.Linear()函数的理解
  8. 编写可调模板并使用自动调谐器
  9. 自动驾驶开发云平台业务分析
  10. 目标检测coco数据集点滴介绍