ElasticFusion: Dense SLAM Without A Pose Graph 论文笔记

ElasticFusion: Dense SLAM Without A Pose Graph

2015 年,戴森实验室, 帝国理工Andrew Davison实验室 ,基于RGB-D,dense slam

相关论文:Kinetcfusion,DynamicFusion,Real-time large scale dense RGB-D SLAM with volumetric fusion

benchmark : J. Sturm, N. Engelhard, F. Endres, W. Burgard, and D. Cremers. A benchmark for RGB-D SLAM evaluation. In Proceedings of the IEEE/RSJ Conference on Intelligent Robots and Systems (IROS), 2012.

http://www.doc.ic.ac.uk/∼ahanda/VaFRIC/iclnuim.html

背景介绍:

现有3D建图方法为了理解场景语义,会将尽可能多的数据融合到地图中。但是当传感器运行时间较长并且经常交错交叉运动时不能很好地工作。

slam针对的两个典型问题:

  1. 在狭小区域的回环运动(原地回环)
  2. 在宽阔区域的直线运动(回环较少)

在基于特征的稀疏slam中,问题1可以用概率滤波或者环内位姿和特征联合优化来解决( Real-Time Simultaneous Localisation and Mapping with a Single Camera),(Parallel Tracking and Mapping for Small AR Workspaces),问题2可以通过将地图分割成局部地图或关键帧并应用姿态图优化来解决( FrameSLAM: From Bundle Adjustment to Real-Time Visual Mapping)

对于既有很长的延展性(直线运动)又有很多回环的相机运动,即使是稀疏slam也很少有工作针对这种场景(言下之意是稠密slam更少?)

对稠密slam而言,每一帧点云数量很多,联合滤波和最小化重投影误差( bundle adjustment) 不能实时。因此稠密slam一般改作逐面元的独立滤波来代替点云。但是实际观测到的结果是巨大的数据权重淹没了联合滤波的逼近分布(?),论文以此为切入点,指出在稠密slam任务中像稀疏slam一样维护一个稀疏的位姿图(pose graph slam system)是不合适的。 Pose graph SLAM systems 着重于优化相机轨迹,而本文工作放弃优化相机轨迹的思路,采用以地图为核心的方法来更优雅的确定模型预测特征。(利用一个deformation graph来优化地图(without a pose graph))

相关工作

Real-time large scale dense RGB-D SLAM with volumetric fusion:在宽阔区域表现不错但是在多回环时性能不佳,因为不可以对重返的区域数据进行利用(本文工作基于该篇论文)

DVO SLAM: 将基于关键帧的姿势图优化原则应用于密集跟踪前端,但不执行显式的地图重建,仅对原始关键帧执行功能

。。。。。。

总结:

可能是刚接触SlAM的论文,感觉就是:God,好复杂 。。。

第一个实时的、能够:

  • 在基于稠密面元地图中使用光度(RGB)和几何(深度)的 frame-to-model 模型进行预测追踪
  • 在无网格的deformation graph 中运行 model-to-model的局部回环检测
  • 利用基于预测surface外观的方法运行全局回环检测,从而在没有位姿图的情况下捕获全局一致的稠密面元地图

的稠密SLAM建图方法!

论文方法概述:
  1. 基于RGBD的稠密3D重建,使用了没有网格的surfel模型来表示(通常会使用网格模型)
  2. 没有相机位姿图的预测,没有任何预处理步骤
  3. 追踪融合最近观测到的数据的同时,对出现在时间窗之前的数据进行分割。
  4. 传统的 SLAM 算法一般通过不断优化相机轨迹或者特征点的方式,来提高轨迹估计或者重建的精度,这篇文章采用不断优化重建的 map 的方式,提高重建和位姿估计的精度。
  5. 优化采用 deformation graph 的形式,和 DynamicFusion 中优化的方式如出一辙
  6. 每一帧都运行闭环检测(局部或全局),全局闭环检测用到 randomised fern encoding database
  7. 算法使用 OpenGL 对点云进行更新、融合、显示和投影
  8. 算法融合 RGB-D 图像进行位姿估计,对于 RGB 图像通过颜色一致性约束计算位姿,对于点云通过 ICP 算法计算位姿,ElasticFusion 融合了二者

论文介绍

算法流程简介:

  1. 使用RGBD数据计算相机位姿
  2. 位姿误差如果大于阈值,追踪失败启用重定位算法;否则进行下一步
  3. 利用 Random Ferns database 进行全局回环检测, 如果存在全局回环,假设当前帧为 I_cur, 检测到和第 i 帧存在回环,再利用第一部中的跟踪算法计算当前帧和第 i 帧之间的位姿,计算得到位姿变换后,在图像中均匀抽取一些点,建立约束,优化 node 参数;否则进行下一步
  4. 检测是否存在局部回环,若存在局部回环则同3一样优化Node参数
  5. 得到相机位姿后,将当前帧的点云和重建好的做融合, 融合使用 openGL 的 shading language,如果在存在局部的或者全局的回环,在使用 openGL 进行点的融合时候,将优化之后的节点变量,作用于全部的点。
  6. 融合到全局模型中后,再用 openGL 投影得到当前视角下可以看到的点,用来对下一帧图像配准。

融合预测追踪:

surfel 面元模型M :

面元模型基于 Real-time large scale。。。中的设定:

对于每个点,存储了:

  • 点的位置信息:P(x,y,z)
  • 面片的半径: r
  • 法向量: n
  • 颜色信息:C(R,G,B)
  • 权重: w
  • 点的初始化时间和获取时间:t0 , t

此外还做了两点改进:

  1. 不仅仅预测深度图,还预测色度图(颜色信息),“photometric and geometric ”
  2. 定义时间窗Delta t,将面元集合M分为activate 和 inactivate, 只有activate的面元被纳入相机姿态估计和深度图估计的计算

优化当前帧与根据上一帧预测的下一帧的距离,来求解最优运动参数epsilon,求解的error函数由几个部分组成:

1.几何位姿估计(geometric)

在这里插入图片描述

2.色度位姿估计(photometric)

在这里插入图片描述

最终的ERROE函数为:(联合优化)

在这里插入图片描述

使用高斯牛顿非线性最小二乘法为优化算法来优化:
在这里插入图片描述
寻找的最优参数eplison:

在这里插入图片描述

deformation graph:


是一个GRAPH,由边和nodes构成, 每个 node 包含了本身的位置信息 Gng,包含待优化的参数 GnR 和 Gnt(旋转矩阵和平移向量,初始化为单位阵和 0向量),利用局部回环检测和全局回环检测建立的约束优化参数 GnR 和 Gnt,优化后,将求解得到的 GnR 和 Gnt 作用于模型中的其它点。

将deformation graph 应用到一个surface后的变换结果:

面元position:

在这里插入图片描述

面元normal:

在这里插入图片描述

节点对面元的影响(权重):

在这里插入图片描述

其次论文介绍了如何建graph,应用graph,以及优化graph

局部回环检测算法


为了保证建图的一致性,算法运行局部回环检测,:把重建好的点,按照时间窗划分成 ACTIVE 和 INACTIVE,ACTIVE 是最近时间内重建好的点,INACTIVE 是以前重建好的点,根据第一步计算得到的位姿,将点云向相平面做投影,可以计算得到两帧点云,将这两帧点云配准。

如果两幅点云有交叠,存在回环,那么投影得到的两帧点云可以配准上(第一步计算的误差小于一定阈值,Hessian 矩阵特征值大于一定阈值,详见论文)

如果可以配准上,存在回环,则抽取一些点建立约束
建立的约束如下表达式所示:
在这里插入图片描述

全局回环检测


当相机移动距离或者角度较大时,因为累积误差的作用,当存在回环时,ACTIVE 和 INACTIVE 对应点不能交叠,从 ACTIVE 和 INACTIVE 投影出的点也解算不出来位姿变换来(两帧配准误差大于阈值),所以,这个时候需要全局的回环检测

使用randomised fern encoding 的方法。

同样全局的回环检测建立约束:

在这里插入图片描述

优化后的 deformation graph 参数,再用 GPU shader 作用于模型中其它点。

此外,在优化graph时用到了新的ERROR函数:

在这里插入图片描述

其中

函数

在这里插入图片描述

保持 R 是单位正交的 。

函数
在这里插入图片描述
保持相邻的 node 间参数的连续性

函数

在这里插入图片描述

将 source 点向 destination 点做优化,将两次重建好的点对齐

函数
在这里插入图片描述

表示 AVTIVE 点向 INACTIVE 点对齐,更新之后点的位置坐标应该相同

## 实验

轨迹估计

数据集: RGB-D benchmark of Sturm

对比工作: DVO SLAM [10], RGB-D SLAM [5], MRSMap [21] and Kintinuous [25].

指标: absolute trajectory (ATE) root-mean-square error metric (RMSE)

在这里插入图片描述

面元重建精度

数据集:[ICL-NUIM dataset of Handa]( http://www.doc.ic.ac.uk/∼ahanda/ VaFRIC/iclnuim.html)

评估标准: mean distances from each point to the nearest surface in the ground truth 3D model

先在这个数据集上评估了轨迹精度(ATE RMSE):

在这里插入图片描述

面元评估结果:

在这里插入图片描述

其中轨迹Kt1没有回环,所以和fame-to-model的结果相同

文章对自己工作的评价:轨迹跟踪等于或由于现有最好模型,面元重建精度超越现有模型

具体效果:
在这里插入图片描述

计算复杂度

Intel Core i7-4930K CPU at 3.4GHz, 32GB of RAM and an nVidia GeForce GTX 780 Ti GPU with 3GB of memory. (我的小新pro13 + mx250请求出战!!!)
在这里插入图片描述
​ 平均帧率22~31Hz,够用了

引用

https://www.2cto.com/kf/201605/509969.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值