- 目前在SLAM上的传感器主要分为两大类:激光雷达和摄像头
激光雷达:单线、多线
摄像头:单目相机(普通USB相机)、双目相机(2个普通的USB相机)、单目结构光(深度相机)、双目结构光(深度相机)、TOF(深度相机)
视觉slam-vslam综述总结(以下信息是2010-1016年):
- 基于特征的方法:对特征点的跟踪和映射
- 直接方法:为了应对无纹理或无特征的环境,提出了不检测特征点而直接使用整幅图像进行跟踪和映射的vslam方法
- 基于RGB-D相机的方法:随着低成本RGB-D传感器如微软Kinect的出现,单目RGB图像和深度图像结合的vSLAM算法已经被提出(输入为两张图像,RGB的二维彩色图像和具有深度信息的depth图像)
vslam算法的基本框架:
为了启动vSLAM,需要定义一定的坐标系,用于未知环境下的摄像机姿态估计和三维重建。
- 初始化:在初始化时,首先要定义全局坐标系,将环境的一部分重构为全局坐标系中的初始地图。
- 跟踪和映射:初始化后,进行跟踪和映射,连续估计相机姿态。在跟踪中,在图像中跟踪重建的地图,以估计图像相对于该地图的相机姿态。(目的是通过图像中的特征匹配或特征跟踪获得图像和地图之间的2D-3D对应关系)
- 重新定位:当由于相机快速运动或某些干扰导致跟踪失败时,需要重新定位。在这种情况下,有必要再次计算相机相对于地图的姿态。如果不将重新定位纳入到vSLAM系统中,系统在跟踪丢失后就不再工作,。这样的系统就没有实际用途。
- 全局地图优化:考虑整个地图信息的一致性,计算从开始到当前的累计误差(可参考闭环技术:在闭环闭合中,首先通过将当前图像与先前获取的图像进行匹配来搜索闭环。如果检测到循环,则意味着相机捕获了先前观察到的视图之一。在这种情况下,可以估计相机运动过程中发生的累积误差。)
vslam、视觉里程计和在线运动结构的关系:
- 视觉里程计VO:基于摄像机的里程计称为视觉里程计(visual odometry,VO). 里程计是指利用传感器来估计传感器位置随时间的顺序变化. Vslam = VO + 全局地图优化
- 关系:在VO中,仅在地图的一小部分中考虑地图的局部几何一致性,或者仅计算相对相机运动而不进行映射。另一方面,在vSLAM中,通常考虑地图的全局几何一致性。因此,为了构建几何上一致的映射,在最近的vSLAM算法中进行了全局优化。
- SFM:批量估计摄像机运动和环境三维结构的技术,在线运行的SFM方法和vSLAM没有区别。
基于特征的方法展开描述:
- 基于过滤器的方法:MonoSLAM2003(使用扩展卡尔曼滤波(EKF)同时估计未知环境的摄像机运动和三维结构),在EKF中,自由度(DoF)相机运动和三维位置特征点被表示为状态向量。在预测模型中假定均匀运动,将特征点跟踪的结果作为观测值。根据相机的移动,新的特征点被添加到状态向量中。初始映射是通过观察定义了全局坐标系的已知对象而创建。总结:Map初始化是通过使用已知对象完成的,利用EKF估计相机运动和特征点的三维位置。遇到的问题:在大型环境中,由于特征点的数量很大,所以稳态向量的尺寸也会变大,很难实现实时计算。PTAM2007:为了解决MonoSLAM的计算成本问题,PTAM[15]在CPU上将跟踪和映射拆分为不同的线程。这两个线程并行执行,因此映射的计算成本不会影响跟踪。因此,在优化中需要计算成本的BA可以用于映射。这意味着跟踪实时估计相机运动,映射以计算成本估计特征点的精确3D位置。在PTAM中,使用五点算法重构初始映射[28]。在跟踪中,映射的点被投影到图像上,使用纹理匹配进行2D-3D对应。从这些通信中,可以计算出相机的姿势。在映射中,新特征点的三维位置在某些帧(称为关键帧)使用三角剖分计算。PTAM的一个重要贡献是在vSLAM中引入了这种基于关键帧的映射。当测量到输入帧与其中一个关键帧之间的较大差异时,选择一个输入帧作为关键帧。准确的三角测量基本上需要大的视差。与MonoSLAM相比,特征点的3D点使用局部关键帧的全局BA和所有关键帧的全局BA与地图进行优化。此外,在跟踪过程中,新版本的PTAM采用了一种重新定位算法[29]。它使用基于随机树的特征分类器来搜索输入帧的最近关键帧。总结:Map初始化由五点算法完成,从地图点与输入图像之间匹配的特征点估计相机姿态,利用三角剖分法估计特征点的三维位置,并利用BA对估计的三维位置进行优化,跟踪过程通过基于随机树的搜索恢复。由于PTAM只能重建环境的稀疏3D结构,因此第三个线程可以用来重建环境的密集3D结构。总结:MonoSLAM中基于ekf的映射与PTAM中基于ba的关键帧映射,其中基于ba的方法可以比基于ekf的方法处理更多的点。
- 基于BA的方法:在单目vSLAM情况下,如果不进行全局BA,则存在尺度模糊,并且在摄像机运动期间尺度可能发生变化。在这种情况下,会出现尺度漂移问题,每帧坐标系的尺度可能不一致。为了纠正尺度漂移,相机的姿势应该是优化到7DOF.Strasdat等人[37]提出了一种基于相似性变换的7自由度相机位姿优化方法。ORB-SLAM2015作为PTAM的扩展[38],包括BA、基于视觉的闭环检测和7自由度posegraph优化。据我们所知,ORB-SLAM是目前最完整的基于特征的单目slam系统。orb - slam扩展到立体vSLAM和RGB-D vSLAM[39]。
- 总结:MonoSLAM2003(跟踪和映射都是顺序的,同时使用EKF)、PTAM2007(跟踪和映射都是顺序的,同时使用EKF,在大环境下也就是特征点较多的时候,由于BA算法存在局部最小问题,难以得到地图和摄像机姿态的全局最优。为了避免这个问题,可以在BA之前使用闭环检测和姿态图优化)、ORB-SLAM2015(多线程跟踪、映射和闭环检测,地图优化采用位图优化和BA)。其中ORB-SLAM是一个开源系统,可以很容易地在本地环境中使用整个vSLAM系统。
- 基于特征点的vSLAM算法通常采用手工制作的特征检测器和描述符,可以在纹理丰富的环境中提供稳定的估计结果。然而,通过使用这种手工制作的特征,很难处理弯曲的边缘和其他复杂的线索。
基于直接方法的展开描述:
直接使用输入图像,无特征方法,光度一致性在直接方法中被用作误差测量,而几何一致性(如图像中特征点的位置)在基于特征的方法误差测量中被使用
- DTAM:通过将输入图像与重建地图生成的合成视图图像进行比较来完成跟踪,等同于图像和地图的3D模型之间的配准,在GPU上实现。步骤:首先采用多基线立体模型进行映射,然后考虑空间连续性对地图进行优化,计算出所有像素点的三维坐标。初始深度图是使用类似PTAM这样的立体测量来创建的。组成:地图初始化由立体测量完成、由重建的地图生成合成视图来估计相机运动、利用多基线立体图像估计每个像素的深度信息,然后考虑空间连续性对深度信息进行优化。
- LSD-SLAM:继承了半密集VO的思想[20]。在该方法中,重建目标被限制在具有强度梯度的区域,而dtam则重建整个区域。这意味着它忽略了无纹理区域,因为很难从图像中估计准确的深度信息。在映射中,首先设置随机值作为每个像素的初始深度值,然后根据光度一致性对这些值进行优化。由于这种方法不考虑整个地图的几何一致性,所以这种方法被称为视觉里程计。组成:随机值被设置为每个像素的初始深度值、由重建的地图生成合成视图来估计相机运动、重建区域仅限于高强度梯度区域、采用7自由度位图优化,获得几何一致性图。
- SVO:半直接VO,跟踪是通过特征点匹配完成的,但映射是通过直接方法完成的。在基于特征的方法中,使用特征描述符和Lucas-Kanade跟踪器[52]来寻找对应关系。与基于特征的方法相比,通过最小化特征点周围的光度误差来估计相机运动。这种方法可以看作是DTAM和LSD-SLAM的稀疏版本。
- DSO:直接稀疏里程法,为了抑制累积误差,DSO尽可能地从几何和光度角度去除误差因素。在DSO中,输入图像被分成若干块,然后进行高强度分割点作为重要候选点。DSO同时使用几何和光度相机校准结果。值得注意的是,DSO只考虑局部几何一致性。因此,DSO属于VO,而不是vSLAM。
- 总结:直接方法可以根据地图密度进行分类。密集的方法[43,47]生成密集的地图,计算出每个关键帧中每个像素的深度值。这些方法可用于GPU实时三维建模。与密集方法相比,半密集[21]和稀疏[51,53]方法侧重于基于传感器姿态跟踪的应用。这些方法可以在cpu上实时运行。
基于结构光的RGB-D相机方法展开描述:
可以实时的提供3D信息
- 与单目SLAM的区别:可以知道坐标系的尺度
- 基于深度的VSLAM框架如下:迭代最近点(ICP)算法、结合多个深度图重构环境的三维结构
KinectFusion:用体素空间用于表示环境的3D结构,结合体素空间中获得的深度图重构环境的三维结构,利用估计的三维结构和输入的深度图(基于深度的vSLAM),通过ICP算法估计摄像机的运动。
SLAM++:对象级RGB-D vSLAM算法,预先将多个三维物体注册到数据库中,并在线识别这些物体。通过对三维物体的识别,对估计的地图进行细化,将三维点替换为三维物体,减少数据量。
RGB-D VO和全局地图优化技术:使用了RGB图像,通过跟踪连续帧之间的特征点来估计相对摄像机运动。然后使用跟踪的特征点估计翻译矩阵,并使用深度图通过ICP算法对该翻译矩阵进行细化。另一方面,基于光度一致性的摄像机运动跟踪方法也被提出[22,23,64]。这种基于光度一致性的摄像机运动跟踪也采用了基于单目摄像机的密集vslam方法。·为了获得几何上一致的地图,在RGB-D可视化算法中采用了位姿图优化和变形图优化。通过RGB-D图像和重建模型之间的匹配来估计摄像机的运动。他们展示了几何上一致的模型,可以尽可能多地使用变形图优化来获得。
视觉SLAM遇到的问题:
- 纯旋转运动:
- 地图初始化:
- 估计固有相机参数:
- 滚动快门失真:
- 比例模糊: