越野导航的多摄像机视觉SLAM
1. 发展
- 目前,全景视觉系统可分为三大类:折反射视觉系统、鱼眼视觉系统和多摄像机视觉系统。相应的SLAM系统被分为三类。前两种类型的全景系统出现得比较早,对SLAM的相关研究也比较多。作为每个类别的示例,Scaramuzza等人使用折反射系统来估计车辆的二维运动;Cremer和同事提出了一种全方位鱼眼相机的实时直接单目SLAM算法。
- Pless等人提出了广义摄像机模型、相应的广义极线约束和广义点重构。Stewénnius等人提出了广义本质矩阵的一个极小解,它可以得到一个具有六对匹配点系统的6自由度姿态。为了进一步减少计算系统姿态时对匹配点数的要求,并结合RANSAC算法得到更合适的方法,Gim等人提出了一种基于地面车辆Ackermann约束的两点算法。他们还以此为基础设计了一个SLAM系统,并实现了无人地面车辆的SLAM系统。
- 最新的SLAM系统估计是基于非线性优化,间接SLAM系统的相应算法是bundle adjustment(BA)。
- Sharf group使用了多个超广角摄像头来协助无人机在空中的视觉定位,使其适应纹理稀疏的复杂环境。他们对多摄像机系统的PTAM进行了改进,提出了MCPTAM。他们在系统中引入了Taylor相机模型,设计了多关键帧结构和相应的束平差图结构,并改进了PTAM算法框架中的部分细节。MCPTAM可用于无重叠视场的多摄像机系统定位。如果多摄像机系统同时触发,并且摄像机之间存在重叠的视场,MCPTAM还可以实现具有度量尺度的定位和地图构建。利用棋盘等先验信息,MCPTAM还可以对多摄像机系统的内外参数进行标定。在他们的后续工作中,MCPTAM的框架得到了进一步改进[26]。之后,他们改进了MCPTAM的规模恢复。即使摄像机具有非重叠的视场,改进的MCPTAM也可以用尺度估计非退化运动的状态。然而,MCPTAM的初始化对环境做了一些很强的假设,严格限制了它的应用。
- Yang等人提出了一种高效的全景SLAM方案,以降低对计算机性能的要求。他们在一架无人驾驶飞机上安装了一个前置摄像头和一个下行摄像头。为了减少匹配的计算量,摄像机的地图被完全分离。该系统不匹配来自不同摄像机的图像点,而该SLAM系统中摄像机之间唯一的关系就是它们的姿态变换关系。与MCPTAM相比,它们在PTAM的各个方面都有了较大的改进。他们采用快速角点检测和简单描述子相结合的方法,提高了点匹配的精度,使系统具有更强的鲁棒性。在[29]中,他们引入了基于BoW的SLAM系统环路检测,使得系统状态估计具有全局一致性。由于对摄像机信息的分离处理,SLAM系统无法在未知环境下用米制尺度估计无人机和周围环境的状态。实际上,SLAM系统在标准直升机着陆垫的帮助下初始化公制地图。
- Seok等人提出了一种使用大视场宽基线多摄像机系统的全向视觉里程测量系统[30]。多摄像头系统安装在一辆汽车的车顶上。提出了一种混合投影模型,使扭曲图像连续、平滑,并将混合模型、球检测器和匹配器相结合,对相邻摄像机捕捉到的不同图像进行特征匹配。他们使用KLT跟踪算法来进行视内特征处理,这比描述符匹配方法更有效。他们还提出了一种多视角P3P-RANSAC鲁棒姿态估计算法。为了解决相机因冲击、振动和热而引起的变形和运动,他们在优化过程中进行了在线外标定。由于基线较宽,其系统能够在大尺度环境下高精度地估计系统姿态
- Urban等人将ORB-SLAM扩展到多摄像机系统版本,并提出了Multicol-SLAM [31]。该系统在初始化过程中,利用摄像机之间的重叠视场,以米制尺度重建部分场景。与杨教授提出的MCPTAM和SLAM系统相比,MulticolSLAM具有更强的鲁棒性,对环境和车辆运动的假设更少。但是,要在越野环境中使用,系统仍需要一些升级。由于BoW用于环路检测,在越野环境下环路检测效果不好,影响了系统的全局一致性和鲁棒性。此外,系统在跟踪过程中不使用重叠视场进行尺度恢复,这会造成尺度漂移。
- 为了使位置识别能够适应复杂的环境,获得更高的精度,研究人员利用CNN提取图像的深层特征,并取得了相当的成果[12-17],NetVLAD[17]是一个杰出的特征提取器。参考局部聚集描述符的向量表示[18],NetVLAD在CNN中**添加了一个通用的VLAD层**,将聚集图像的所有CNN特征表示为固定长度的压缩向量,用于匹配场景。
2. 多相机模型
2.1 相机成像模型
为了使多摄像机系统空间感知模型适用于不同类型的摄像机,利用Scaramuzza提出的通用摄像机模型对成像过程进行建模:
由于摄像机处理技术的限制,成像平面将无法与传感器平面对齐。因此考虑成像平面上的点与像素平面上的点之间的关系:
2.2 多相机模型
定义了 body coordinate system ,通过这个body coordinate system映射多相机坐标系。
得到多相机映射模型:
3. 系统模块
如图所示,包括三个处理线程。
3.1 Tracking thread
初始化 在获取第一帧图像时,提取摄像机之间重叠视场中的ORB特征,并根据外部摄像机参数缩小匹配范围。当匹配点数达到阈值时,初始化开始,否则终止当前帧,直到匹配点数满足要求为止。利用三角剖分技术估计重叠区域内三维点的深度,然后将初始点云插入到局部地图中。
初始化完成后,然后根据三维点与二维点的匹配关系估计系统姿态。考虑到可能的不匹配和地图点的测量噪声,首先使用**MLPnP算法**,可以有效的粗略地求解姿态,然后基于BA对结果进行优化重投影误差。
重投影误差:
Levenberg-Marquart算法对多摄像机系统进行姿态优化:
3.2 mapping thread
关键帧的选择准则: 避免地图尺寸过大和系统资源浪费
(1) 初始化或重新定位后的间隔需要大于15帧
(2) 从当前帧到最后一个关键帧的间隔需要大于10帧
(3) 当前帧中与映射点匹配的点数应小于与最后一个关键帧关联的映射点的80%
(4) 当前帧中未匹配映射点数需要大于100
(5) 当前帧与最后一个关键帧对应的系统位置之间的距离需要大于基线长度的10倍
映射过程包括同步映射和异步映射。同步映射使用任意一对摄影机来参与三维构建过程。由于重叠视场只存在于相邻的摄像机之间,因此同步映射过程总共有5个组合(5个相机)。异步映射利用共视图中当前的关键帧和以前的关键帧来生成映射点。使用10个与共视图中当前关键帧相关度最高的关键帧与当前关键帧进行匹配,异步映射组合的总数可以达到100组,并使用BoW来匹配特征点。
由于图像分辨率有限,在弱动态越野环境下,当视角差异较大时,特征点的描述子不能用于匹配。因此将角度极限设置为3°到60°之间,方向向量表示为gmax和gmin。
得出深度:
3.3 Loop closure detection and correction
利用NetVLAD提取拼接图像的特征,并将其转化为4096维向量。为判断场景的相似性,计算了两个向量之间的曼哈顿距离:
Sim(x,y) 是两个场景的相似信息,值越接近1,场景的相似性越高,出现循环的可能性就越大。
轨迹和地图修正
将映射点匹配得到的相似变换矩阵Sim3变成St,将关键帧之间的相对姿态变换△Tij变换为相似变换△Sij。
变换误差:
通过调整Si和Sj使关键帧之间的变换保持不变来最小化误差。经过多次迭代,得到最优值,并将循环的相似变换误差传播到所有关键帧的姿态上,以修正轨迹,然后得到相应的姿态变换矩阵。
4. 实验对比
4.1 环路闭合检测精度
在实验中,3840关键帧处是对应于第一帧的循环闭合帧。基于BoW方法计算的相似度信息高于平均值,但不是最高的相似度信息,且曲线中含有多个峰值,会导致较高的假阳性率。其性能差的原因是实验环境中稳定的可识别特征稀疏,识别率不高。
使用NetVLAD方法下,曲线在3840帧处仅包含一个峰值,并且该帧的值远高于任何其他帧。实验表明,该方法可以在33hz下运行,满足SLAM系统对环路闭合检测的实时性要求。
4.2 图像序列
实验运行了5个摄像机模式下的multical SLAM和ORB-SLAM的单目视觉,为了突出大视场的优点,在使用越野序列时,我们将每台摄像机提取的特征点数量限制在2000个,或者在使用半越野序列时限制在1500个。
实验结果 在越野环境下,系统可以在4摄像机模式和5摄像机模式下基于环路闭合检测来修正轨迹,有效地定位车辆,但系统无法在3摄像机模式下定位,multical-SLAM,ORB-SLAM都无法成功;在半越野环境下,系统在3摄像机模式和5摄像机模式下表现良好,multical-SLAM也表现良好,而ORB-SLAM无法定位。
原因:系统通过对所有关键帧进行三角剖分,利用摄像机之间的重叠视场生成额外的地图点。这不仅有利于比例尺的恢复,而且使得多摄像机系统周围局部地图点的分布更加均匀。
结论:视场越大,特征跟踪越稳定,系统提供的轨迹越接近地面真实。同时也表明,即使某些摄像机的功能由于内部或环境因素而损坏,系统也能在一定程度上正常处理信息。