重点:
- 理解单目 SLAM 中稠密深度估计的原理。
- 通过实验了解单目稠密重建的过程。
- 了解几种 RGB-D 重建中的地图形式。
各种地图示意:
1. 单目稠密重建
首先,我们对图像提取特征,并根据描述子计算了特征之间的匹配。换言之,通过特征,我们对某一个空间点进行了跟踪,知道了它在各个图像之间的位置。
然后,由于我们无法仅用一张图像确定特征点的位置,所以必须通过不同视角下的观测,估计它的深度,原理即前面讲过的三角测量。
用到知识:极限搜索和快匹配技术+深度滤波器技术。
单目稠密重建实践:
数据集: http://rpg.ifi.uzh.ch/datasets/remode_test_data.zip
数据集中包含0-200张图象;文本文档对应每张图像的位姿。
视差计算
当迭代次数达到一定次数,视差图趋于收敛几乎无变化。
2. RGB-D稠密建图实践
利用 RGB-D 进行稠密建图是相对容易的。不过,根据地图形式不同,也存在着若干种不同的主流建图方式。最直观最简单的方法,就是根据估算的相机位姿,将 RGB-D 数据转化为点云(Point Cloud),然后进行拼接,最后得到一个由离散的点组成的点云地图(Point Cloud Map)。在此基础上,如果我们对外观有进一步的要求,希望估计物体的表面,可以使用三角网格(Mesh),面片(Surfel)进行建图。另一方面,如果希望知道地图的障碍物信息并在地图上导航,亦可通过体素(Voxel)建立占据网格地图(Occupancy Map)。
实践点云地图
Ch5中演示了点云的拼接(意图主要是讲相机的内外参数),在实践中通常会对点云加一些滤波处理,获得更好的视觉效果。
在本程序中,我们主要使用两种滤波器:外点去除滤波器以及降采样滤波器。
新建终端打开ch5中未滤波的点云进行比较:
3. 八叉树地图
安装Octomap 库,主要包含 octomap 地图与 octovis (一个可视化程序)。
链接:https://github.com/OctoMap/octomap
Cmake工程,进行编译安装即可,注: make sudo install (装载到计算机)
安装依赖:sudo apt-get install doxygen
安装octomap 和 octovis直接在各自文件夹下编译即可,
(cmake … make -j8 sudo make install)。
配置完成,编译octomap_mapping.cpp文件
保存后,代表已经更新了octmap.bt文件,大小只有56K。
打开octmap.bt文件
显示结果:
可视化界面简单,按下1键,可根据高度信息着色,