前端检测用于估计相机位姿与特征点,后端检测用于优化上述估计,回环检测使建图闭合程度更好。但上述过程得到的都是较为稀疏的地图,建图这一部分讲述了如何建立一个稠密地图。
建图与展望
建图
地图的功能包括定位、导航、避障、重建以及交互,稀疏地图只建模特征点,而稠密地图建模所有看到过的部分。
单目稠密重建
核心点在于估计深度,在室外、大场景中适用。主要运用的是极限搜索和块匹配技术,即确定点所在的一条直线,通过像素块的相似程度来匹配。为估计深度,这里假设深度服从高斯分布,不断计算深度及其不确定性,收敛时停止计算。
存在以下问题及改进:
- 要求像素具有梯度且尽量与极线夹角大(最好垂直)
- 像素深度的倒数假设为高斯分布更有效
- 上述深度估计要求相机平移,但可以通过相机的位姿关系对像素进行变换
- 多线程计算每个像素的深度可以提高计算速度
- 可以假设相邻像素深度变化不大,以便获得更为平滑的深度图
- 均匀-高斯混合分布下的滤波器可以区分外点和内点
RGB-D稠密建图
此时已通过相机获得了深度信息,将点云进行拼接可获得地图,关键在于对地图的进一步处理。统计滤波器可以去除孤立点,提速滤波器可以进行降采样(保证每个立方体只有一个点)。
泊松重建可获得物体表面信息,Surfel重建同理。八叉树地图可节省地图储存空间。实时三维重建领域常用到TSDF地图。
SLAM的发展与展望
方案名称 | 传感器形式 | 地址 |
---|---|---|
MonoSLAM | 单目 | https://github.com/hanmekim/SceneLib2 |
PTAM | 单目 | http://www.robots.ox.ac.uk/~gk/PTAM/ |
ORB-SLAM | 单目为主 | http://webdiis.unizar.es/~raulmur/orbslam/ |
LSD-SLAM | 单目为主 | http://vision.in.tum.de/research/vslam/lsdslam |
SVO | 单目 | https://github.com/uzh-rpg/rpg_svo |
DTAM | RGB-D | https://github.com/anuranbaka/OpenDTAM |
DVO | RGB-D | https://github.com/tum-vision/dvo_slam |
DSO | 单目 | https://github.com/JakobEngel/dso |
RTAB-MAP | 双目/RGB-D | https://github.com/introlab/rtabmap |
RGBD-SLAM-V2 | RGB-D | https://github.com/felixendres/rgbdslam_v2 |
Elastic Fusion | RGB-D | https://github.com/mp3guy/ElasticFusion |
Hector SLAM | 激光 | http://wiki.ros.org/hector_slam |
GMapping | 激光 | http://wiki.ros.org/gmapping |
OKVIS | 多目 +IMU | https://github.com/ethz-asl/okvis |
ROVIO | 单目 +IMU | https://github.com/ethz-asl/rovio |
未来SLAM有两种可能的发展方向,一是更轻量级、小型化,二是利用高性能设备实现精密的三维重建和场景理解。
目前也可以采用视觉融合惯导进行SLAM,语义SLAM也是一个发展方向。