基于ROS机器人的3D物体识别与三维重建(六)ElasticFusion实时重建

相关的代码资料:
https://github.com/Rayso777(后续会陆续整理上传)
视频:
1、ElasticFusion TUM数据集&buntu16.04+kinect2演示流程.
2、RTAB-MAP实时三维重建-Kinect2
3、RTAB-MAP三维重建-基于gazebo仿真
4、ORB-SLAM2室内稀疏三维重建-基于gazebo仿真
5、ORB-SLAM2室外三维重建-gezebo仿真
6、三维重建视频集锦-视觉SLAM

1 引言

在上节,已经对稀疏重建和稠密重建的代表性视觉SLAM算法进行了研究,并且通过ROS的各个工具套件完成了三维重建仿真系统的搭建。这一章,将介绍一类不同方向的实时三维重建算法。在视觉SLAM过程中,虽然同时包括定位和建图,但通常更希望的是准确了解机器人在环境中的位置和姿态,所建地图是为机器人的定位服务的,因此对定位质量的要求远大于建图。然而,根据机器人应用的环境不同,像在虚拟现实和户外勘测领域,便对地图精度和质量的要求更高,往往需要获取重建环境具体的纹理信息等。这便涉及到了和视觉SLAM建图类似但也存在一定区别一类技术领域—三维重建。这类技术不局限于机器人上,只通过相机也可以完成,像通过SFM将一系列的无序图片恢复成三维模型等。

2015年微软的 KinectFusion 是首个实时纹理表面三维重建的算法,这是基于TSDF和网格的重建方法,对计算机GPU性能要求比较高。随后提出的 ElasticFusion 算法是基于前者改进的通过SURFEL环境重建,具有更好的性能。本章将对该算法进行详细的探讨,并通过实验完成对室内环境的三维重建。

2 ElasticFusion方法介绍

在这里插入图片描述
ElasticFusion的实现原理如上图所示,与传统的网格模型建图不同, 该算法利用SURFEL面圆的方式进行模型建立的。而且,SLAM大多过程是优化位姿从而对地图路标点进行优化,而在Elasticfusion中使用优化地图的方式进行的。

首先,获取RGB图像和深度图像,对于RGB彩色图像采用直接法,对深度图构建点云的法向量进行ICP配准,融合两种方法进行位姿估计。得到位姿后计算相机位姿误差与阈值的大小关系,如果误差过大则进入重定位环节重新计算相机位姿,如果误差在允许范围内则通过Random Ferms进行全局的回环检测或者单纯的局部回环检测。若检测到回环便将该帧下的点云匹配到Surfel 模型中,主要通过Deformation Graph 对空间路标和位姿进行优化。若没有检测到回环便继续进入相机追踪环节进行位姿估计。在通过变形图对地图点进行优化后,便用OpenGL进行点云融合,得到新的地图,这些地图会继续用于相机位姿配准,如此迭代循环。

该算法的大部分内容在第四章中的基础理论有所提及,接下来将主要对改进优化之处进行详细的探讨研究。该算法融合直接法和ICP两种方法进行位姿估计,不同于帧到帧之间的配准,而是引入了帧与地图点之间的配准,如下图所示,将建好的静态地图点定义为INACTIVE ,当前帧的点云数据定义为ACTIVE。通过当前帧的点云与建好的地图配准,而非上一帧。

在这里插入图片描述
并且,在回环检测中没有采用词袋模型,而是引入了一种新的方法Random Ferms。该方法的原理如下图,将一幅图像构建M个块,每个块构建N个ferms,每个fern也就是像素点有以下RGBD四个通通道,每个通道的数值与各自的阈值进行比较,若大于阈值则为1,小于则为0。每个像素便得到了四位的二进制编码,将其存储在列表中。对新图像,计算每个Block个码值,与列表中的的帧进行对比便可计算相似度。

在这里插入图片描述
在判断回环与否后会进入Surfel模型融合环节,该模型是面圆构成的,如下图所示,包括了空间点的三维坐标、面圆的半径、法向量、RGB三通道值和观测到该点的时间。该模型是基于点的,因此可以将其传入OpenGL直接进行融合、渲染等处理,而不必关心底层的实现细节,加速开发。
在这里插入图片描述
在对地图路标点进行优化的过程中,引入了Deformation Graph(变形图),它是在建好的Surfel地图模型中进行均匀采样得到的,如下图所示,采样点取一半左右,各个节点按照时间关系建立连接,地图中黑色的点会依据时间、空间的先后顺序与节点建立连接。节点包含待优化的参数R和t,主要由局部和全局的回环检测构成约束对其优化。
在这里插入图片描述

3 室内三维重建实验

3.1 ElasitcFusion配置

该算法的运行主要基于Ubuntu16.04、Core-i5处理器、GeForce 920M显卡。并且,需要额外安装的是CUDA8.0,英文名称是Compute Unified Device Architecture,这是NVIDIA开发的用于GPU并行运算的通用处理平台。随后安装相关依赖项如下:
在这里插入图片描述
运行该算法需要用到Kinect2相机,进行标定,后续编译ElasticFusion算法,通过后直接启动bin文件便可以进行重建了。

3.2 实时重建结果

ElasticFusion的法线地图如下:
在这里插入图片描述
Surfel地图如下图所示,可以看出实时重建过程中,以面圆的方式进行地图扩散重建。

在这里插入图片描述
RGB-D重建
在这里插入图片描述

下篇博客节进行总结

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ray Song

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值