1、SLAM
SLAM(Simultaneous localization and mapping)即同时定位与地图构建 ,希望机器人从未知环境的未知地点出发,在运动过程中通过重复观测到的地图特征定位自身位置和姿态,再根据自身位置增量式的构建地图,从而达到同时定位和地图构建的目的。
1.1、视觉SLAM(VSLAM)
通常的 VSLAM 系统的架构,主要由前端(视觉里程计VO、视觉惯性里程计VIO)、后端(过滤、图优化)、环回检测和 Mapping 四个模块组成。
- 前端也称为视觉里程计 (VO),它估计相机帧之间的运动和路标的位置。在VO中,根据传感器运动得到的图像信息,估计相应传感器的方位和轨迹,将图像信息转化为矩阵,然后求解得到传感器的运动状态矩阵。
- 后端接受视觉里程计估计的相机位姿和环境信息,并优化这些信息以获得全局一致的运动轨迹和环境地图,这是基于从噪声数据中优化轨迹和地图状态估计问题。VSLAM系统的后端优化主要有两种方法:(i)以扩展卡尔曼滤波器(EKF)为代表的滤波方法和(ii)以图优化为代表的非线性优化方法。
- 环回检测的主要方法是使用词袋模型,即对从图像中提取的局部特征进行k均值聚类,构建包含k个词的词表。根据每个词在词表中出现的次数,将图像表示为 ak 维向量,用于判断场景的差异和识别访问的场景。
- 根据摄像头轨迹和图像,建立任务需求对应的地图,可以分为稠密地图、半稠密地图和稀疏地图。
1.2、激光SLAM(LSLAM)
2、Fusion
不同于SLAM强调定位的特性,Fusion技术更专注于重建本身,其旨在构建稠密准确的高质量地图,这种高质量地图也可以提供给SLAM算法定位使用。主要计算模型为:
- TSDF模型(Truncated Signed Distance Function),即为截断符号距离函数,通常需要先设定需要重建的空间大小与分辨率,例如1mx1mx1m,256x256x256,其中最小的空间单位称为体素。每个体素存储的是该空间与其最近的物体表面的距离,如果在物体表面的前方则为正值,反之则为负值,距离过的为1或-1,而通过计算 TSDF 为0的地方就是需要重建表面。
- Surfel模型,每一个点都会保存一下要素:空间坐标、法向量、颜色、权重(距离越远,权重越小)、半径(距离越大,半径越大)、获取时间戳。ElasticFusion应用该模型进行重建与优化。
目前的工作可以范围两大类,1、对于静止场景进行三维重建。2、对于动态物体进行三维重建。其中动态场景的三维重建的难度远大于基于静态场景的三维重建。
2.1、静态重建算法
- KinectFusion:经典的开山之作,将相机的深度信息实时融入TSDF中,并使用 ICP 算法得到当前帧与全局的位姿关系。由于没有优化与闭环,误差会累计导致大场景漂移大。代码
- Kintinuous:在KinectFusion的基础上,融合了回环检测和回环优化,还在实时三维刚体重建中使用了deformation graph做非刚体变换,使得算法能够适应大场景重建的要求。代码
- ElasticFusion:使用面元(Surfel)表示方法,结合局部闭环与全局闭环在一起,保证了重建的全局一致性。代码
- ElasticReconstruction:将RGBD帧流分为若干的场景片段,基于此进行深度信息的融合来有效的去除点云中的噪点,从而提高重建质量。代码
- InfiniTAM:能够实时大范围的深度信息融合与跟踪技术框架,采用了哈希表来存储隐式的体积表示,极大地节省了内存空间的消耗。代码
- BundleFusion👍:目前静态场景重建效果最佳的方案,利用了基于稀疏特征以及稠密几何和光度匹配提取的对应关系,实时地估计了BA优化的姿态,并具有从追踪失败中恢复(即重定位)的鲁棒追踪能力。代码
2.2、动态重建算法
暂无精力学习
评论区