文章:Design and Evaluation of a Generic Visual SLAM Framework for Multi-Camera Systems
作者:Pushyami Kaveti, Arvind Thamil Chelvan Hanumant Singh
编辑:点云PCL
来源:https://arxiv.org/pdf/2210.07315.pdf
代码:https://github.com/neufieldrobotics/MultiCamSLAM
欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。
公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。
摘要
多相机系统已被证明可以提高SLAM估计的准确性和鲁棒性,但是目前最先进的SLAM系统主要支持单目或双目配置。本文提出了一个通用的稀疏视觉的SLAM框架,能够在任意数量和任意配置的相机上运行,我们的SLAM系统使用广义相机模型,它允许我们将任意多相机系统表示为单个成像设备。此外,它利用视场重叠(FoV)提取了相机组中跨相机匹配的特征。这限制了随着相机数量线性增加而产生的特征数量的上升,并使计算负载得到控制,同时能够精确地表示场景。在包括狭窄走廊、无特征空间和动态物体等挑战性真实场景的室内和室外数据集上评估了我们的方法,从准确性、鲁棒性和运行时间三个方面进行了评估,展示了我们的系统可以适应不同的相机配置,并允许典型机器人应用的实时运行,最后,我们对关键设计参数—相机数量和它们的视场重叠进行了基准测试,这些参数定义了SLAM的相机配置,我们的所有软件和数据集都可供进一步研究免费使用。
主要贡献
许多早期的多摄像头SLAM研究都是针对特定的摄像头架构设计的,没有充分利用摄像头布局的优势,本文研究了更为普遍的情况,即多个重叠和非重叠的摄像头,使用广义摄像机模型将多摄像头系统表示为一组不受约束的光线,而不做任何特定几何假设,多摄像头的另一个挑战是有效且高效地利用传感器提供的增加信息量。计算摄像头组件之间的重叠区域,并通过交叉匹配提取3D特征,这利用了摄像头配置来融合多视角数据,避免了重复特征,并且控制了计算成本。实际应用需要设计传感器系统以及算法开发,选择摄像头和感知平台的系统配置会影响SLAM结果。虽然已经有很多针对不同传感器开发SLAM算法,但对于感知平台的系统设计方面缺乏关注。为了解决这一问题,我们确定了摄像头数量和它们视野重叠程度为两个关键设计参数,这些参数影响摄像头收集的信息和SLAM估计结果,我们在使用我们自己构建的多摄像头系统收集的几个真实世界数据集上评估了我们的SLAM系统的定位精度和稳健性。
本文的主要贡献包括:
一个开源的通用视觉SLAM框架,具有精心设计的前端和后端,适用于任意摄像头配置。
一组六个真实世界的室内和室外数据集,用于评估开发的SLAM系统,这些数据集是与现有数据集互补的,并且专门收集以突出当前VSLAM实现中存在的问题。
系统的实验评估,包括跟踪精度、稳健性和计算约束。
对单目、双目和多摄像头配置,针对有和没有重叠视野的情况下,摄像头配置对SLAM的影响进行了详细分析。
主要内容
本文的目标是开发一个统一的SLAM框架,独立于相机系统配置,轻量级且能够在移动机器人上实时运行,通用视觉SLAM流程的块图如图1所示。在本研究中,不仅考虑了重叠(OV)或非重叠(N-OV)情况(如图1a所示),尽管该方法通常适用于混合重叠和非重叠的摄像机配置,无论配置如何,多摄像机系统被视为一个捕捉通过多个针孔穿过的射线集合的单个广义摄像机。
图1:(a)本文评估的各种重叠(OV)和非重叠(NOV)相机配置的示意图。(b)通用视觉SLAM框架的块图,显示其子模块。特征提取模块计算两种类型的特征-多视角内部匹配特征和常规单目特征。注意,为适应通用多相机系统而进行的初始化、跟踪和关键帧表示的变化。
前端
SLAM系统的前端旨在估计机器人的姿态和每个时间步骤观察到的地标特征。这里主要讨论了特征提取和表示,初始化,跟踪和建图模块的关键方面,使我们能够无缝地使用任意多相机系统。
图2:显示了两个示例的多相机图像帧,显示了从(a)重叠(OV)设置的正面摄像头和(b)非重叠(N-OV)配置的三个摄像头中提取的图像特征相同场景。彩色点是多视点特征,其中较近的点为红色,较远的点为蓝色。白色点是单视点特征,没有任何3D信息。注意,N-OV设置只有单视点特征,而OV设置在图像的重叠和非重叠区域中均具有分布的多视点和单视点特征。
A. 特征提取
使用两种类型的特征进行稀疏特征跟踪—多视图特征和单视图特征。根据它们的位置,组成摄像机组的摄像机可以具有重叠的视场,利用了重叠的图像来计算强度特征,将重叠的图像区域关联到属于场景中特定3D点的特征组,而不是独立地使用组成摄像机的特征,这与大多数现有的摄像机系统不同,后者除了计算双目视觉外,不利用摄像机之间的重叠区域,本文多视图特征使我们能够使用更少的特征准确地表示场景,并避免在 SLAM 过程中创建冗余的地标特征。
确定重叠区域:这是有效计算多视图特征所需的第一步。对于每个组件相机c_i,我们找到与c_i具有共同 FoV 的相机集合 C中的公共图像区域,从相机对 (c_i, c_j) 开始,我们首先将 c_i 的图像分成 2D 网格。对于每个网格单元 g_k,使用相机对之间的外参标定计算其中心对应的极线e,如下所示:
确定了epipolar line后,就可以找到它穿过的另一个相机的格子。如果epipolar line没有穿过另一个相机的图像平面,我们就知道这个相机对是没有重叠的,这个计算只在初始化时执行一次,然后在执行SLAM框架时一直使用。
多视角特征:这些本质上是相机之间的交叉匹配,首先,在所有图像中提取多尺度ORB特征,并将它们分配到2D网格中,这个过程是为了加快速度而并行化的,然后迭代地计算每对相机之间的特征对应关系,总共有NcC2个组合,其中Nc是相机的数量。对于相机对(ci;cj),不是将ci中的每个特征与cj中的每个特征都进行匹配,而是基于重叠区域按单元格匹配特征,以减少计算量。对于一组特征F1,它们属于ci图像中的一个单元格,得到了与重叠区域相应的单元格中的特征集F2,然后在F1和F2之间进行暴力匹配。然后,将每个匹配通过epipolar约束,检查第二个视图中的对应特征是否在epipolar线的一定距离内,从第一对相机中创建了一组匹配M。对于随后的图像对,如果找到了两个未匹配的特征之间的对应关系,就将新的匹配添加到匹配集M中,如果为已匹配的特征找到了匹配,就将新特征添加到现有匹配中。每个多视角匹配表示场景中的一个三维特征,它包括一组由一组二维关键点给出的光束,这些关键点是组成相机的三维特征的投影,通过三角测量获得的三维坐标,以及计算出来以促进跟踪的代表性描述子。请注意,不需要在所有相机中观察到三维点,可观察性取决于重叠和场景结构。
单目特征:在单目相机或非重叠相机配置的情况下,不存在多视图匹配,即使在重叠相机配置中,也可能存在一些不重叠的区域,这取决于3D场景的结构,使用单个2D关键点及其描述符表示不重叠区域的单目特征。
B. 初始化
此步骤创建用于跟踪后续帧的初始地标特征,根据摄像头配置执行初始化,提取特征后,如果度量多视图特征的数量大于某个阈值,则将它们用作初始地图,否则必须选择两个初始帧并计算它们之间的相对姿态,使用广义相机模型,该模型允许非中心投影,适用于表示多摄像头系统[14],表示相机c中图像中的像素u的关键点表示为Plucker线L = [q q0],它是由线方向q和矩q0组成的6维向量。
确定两个帧之间的对应关系,并解决广义极线约束以获得相对位姿。
确定两个帧之间的对应关系并解决广义本质矩阵约束以获取相对位姿,其中[q1 q10]和[q2 q20]是匹配特征的Plucker射线,E=[t]×R是基本矩阵,其中R和t是两个广义相机帧之间的旋转和平移。在单目相机的情况下,与关键点相对应的Plucker射线是从eq(3)得到的[u 0]。因此,广义本质矩阵约束自然地减少到经典本质矩阵约束,对于单目相机应用5点算法,对于具有RANSAC的多相机系统应用17点算法来进行相对位姿估计,确保两个帧之间有足够的视差,并三角化对应关系,这些对应关系作为我们的初始地标点,并进行非线性优化以获得我们的最终地标点估计。
C. 跟踪和建图
初始化之后,每个新的输入帧都会相对于上一个关键帧进行跟踪,通过词袋匹配算法计算上一个关键帧和当前帧之间的帧间对应关系,由于多视图特征包含来自不同相机的多个描述子,因此使用描述子的中值进行匹配。如果在上一个关键帧中的地图点wPi和当前帧的观测zk之间找到足够的3D-2D匹配,我们使用方程(3)计算zk的 Plucker 坐标[qk qk0],并通过广义 PnP求解一组约束条件来估计当前帧的绝对姿态。
如果估计的姿态表明自上一个关键帧以来存在显着运动,进一步将当前帧相对于局部地图进行定位,这类似于ORBSLAM,我们找到最初跟踪的地标共享的一组相邻关键帧K,然后计算在K中跟踪的地标与当前帧之间的新匹配,这能够获得局部地图支持,并有助于在存在遮挡动态物体的情况下找到稳定的地标,最后,如果自上一个关键帧以来跟踪的地标比例小于某个阈值,则将当前帧插入为关键帧。当做出新的关键帧决策时,将观测结果添加到现有地标中,并三角测量对应于非地图点的新的帧间匹配,以创建新的地图点。
后端
后端对应于通过最大化关于变量的后验概率给出观测值Z来优化关键帧位姿 X 和地标 L 的初始估计的优化框架。在一般的多摄像机系统中,观测值不仅取决于系统的位姿 X 和地标 L,还取决于它所在的组件摄像机 C,最大后验估计(MAP)问题由下式给出:
其中,P(Z|X;L;C) 是观测的似然函数,由于独立同分布假设,它分解成单独概率的乘积,P(x_0)是初始机器人姿态的先验概率,图3中的因子图表示了变量之间的单独概率约束(因子),假设观测 z_k的误差服从均值为零的正态分布,并将先验概率建模为高斯分布,则方程(6)采取最小二乘形式。
在这里,测量函数hk通过一系列转换将地标映射到预测观测值z^k,首先,使用车身姿态和组件相机的相对位姿,通过SE(3合成得到相机在世界坐标系中的姿态wTc,三维地标从世界坐标系变换到相机坐标系下,最后,Pc被投影到二维图像坐标系中,使用内参矩阵计算,这个公式方便地模拟了多视图特征,使得后端可以灵活地处理不同的相机配置,并通过估计轨迹和地标来优化组件相机的外参。
图3:多摄像头后端的因子图,姿态Xi,地标lj和相对相机姿态Cp是要进行优化的变量,因子以黑色方块节点显示,表示对变量的约束。
实验
实验设置
这里描述了硬件配置、相机标定以及收集多个室内和室外数据集所需的实验评估。
A. 硬件配置和相机标定
本文使用一个刚性多相机架,由七个摄像头组成,其中五个摄像头面向前方,两个摄像头面向侧面,以及一个惯性测量单元(IMU),摄像头的布置可以容纳具有重叠(OV)和非重叠(N-OV)视场的配置,如图4所示。
图4:用于收集数据以评估SLAM流水线的自定义多摄像头架,图中显示了重叠和非重叠配置,以及安装在架子上的IMU,IMU用于计算两个相邻相机之间的基线,相邻相机的基线为165mm。
前置摄像头(红色虚线框)用于运行单目、双目和重叠多摄像头设置的实验,前置中心摄像头和侧面摄像头(蓝色框)用作非重叠多摄像头设置,使用FLIR BlackFly S 1.3 MP彩色摄像机,分辨率为720 x 540,视场为57度,以及运行在200 HZ的Vectornav IMU,所有摄像头都进行硬件触发以在20 fps下进行同步捕获,使用Kalibr 使用标定板获取具有重叠视场的摄像机的内参和外参。对于非重叠摄像机,基于目标的标定不起作用,因为我们需要摄像机观察静止目标以解决相对变换,因此,我们为每个非重叠摄像机执行IMU-相机标定,并将相机间转换链接在一起,这给出了相机外参的良好初始估计值,在优化过程中进行了更精确的估计。
B. 数据集
使用装有 32GB RAM 的 DELL XPS 笔记本电脑将多相机装置安装在 Clearpath Ridgeback 机器人平台上,并在东北大学的校园内进行数据收集,其中一个数据集是在 NUANCE 自动车辆在野外环境中收集的,收集了一组包含多个具有挑战性但自然的场景的室内和室外序列,包括狭窄的走廊、没有特征的空间、颠簸和快速运动、突然转弯和动态物体,这些场景是移动机器人在城市环境中经常遇到的情况。在室外序列中使用 GPS 作为真值,室内序列的地面真值采用精度高达毫米级的 Optitrack 设置获取,在无法使用 Optitrack 时,使用视觉标签进行地面真值和漂移计算,数据集的详细信息,包括位置、轨迹长度和地面真值,见表 I。
实验结果
展示了对几个具有挑战性的室内和室外轨迹的定性和定量结果,对于定量分析,使用绝对平移误差(ATE),通过将估计轨迹与地面真实轨迹对齐并计算对应位姿之间的平均误差来计算,如表II所示。当没有真实轨迹可用时,使用一个视觉目标来估计机器人的初始和最终位姿,并计算积累漂移。
A. 与现有技术算法的比较
将本文的方法与流行的稀疏视觉SLAM系统ORBSLAM3进行性能比较。
定性结果:图5(a)和5(b)显示ISEC Ground1和ISEC Lab1序列的估计轨迹。
定量结果:从表II可以观察到,与ORBSLAM3相比,本文的方法在五个数据集中的四个中,用双目配置表现出更高的准确性。
图5:ISEC Ground1(a)和ISEC Lab1(b)序列的所提出的通用SLAM系统和ORBSLAM3的估计轨迹。在(b)中,虚线表示真值。对于ISEC Ground1序列(a),机器人的起点和终点相同,这有助于我们衡量性能。在双目配置中,该方法胜过ORBSLAM3,后者在沿着轨迹遇到的动态对象引起的跟踪错误,本文的方法的实验表明,在增加重叠摄像机数量的情况下,估计轨迹的精度得到改善。
B. 相机配置的影响
除了与最先进的SLAM系统进行比较外,还评估和讨论以下参数对所提出的SLAM流程性能的影响。
1)精度:相机数量 在重叠配置内,通过选择一组摄像机并增加每个试验的摄像机数量来评估该方法,我们从具有最小基线的两个摄像机开始,直到五个前置摄像机,表II显示,每个序列内的ATE随着重叠摄像机数量的增加而减少。
重叠与非重叠:在这里将一组重叠摄像机(从前向阵列中选择)和一组朝不同方向的不重叠摄像机(具有相同的摄像机数量N=3)进行跟踪准确性比较,如图4所示。从表II中可以看出,对于具有相同数量的摄像机的非重叠配置,误差始终大于重叠配置,这是因为非重叠设置很快就会累积比例漂移,在ISEC Lab1序列中误差尤其高,因为其具有狭窄的无特征通道和反光玻璃墙壁,使得侧向看的摄像机无法用于跟踪。
2)鲁棒性:除了测量准确性之外,还研究了不同相机配置下跟踪的鲁棒性,为此仔细研究了Curry center序列的多次SLAM运行,该序列是一个具有大量动态内容的大型数据集(597m),如图6所示。
图6:Curry center序列的估计轨迹,该序列包含具有重度动态内容的室外数据,星号表示轨迹估计的最终位置,使用重叠的相机配置,随着相机数量的增加,SLAM估计的精度增加,最终位置的累积漂移表明了这一点,通过突出显示这些点的图像来展示由于遮挡动态物体而导致的轨迹跟踪失败,红色和蓝色框表示,与具有相同数量相机的OV配置相比,非重叠配置显示出尺度问题,但对于动态内容具有稳健性。
C. 运行时间性能
我们通过测量处理单个多相机帧的平均时间来完成评估,表III显示了Curry中心序列不同相机配置的平均处理时间。每个特征提取、跟踪和建图、后端优化模块和每帧总处理时间的单独处理时间以毫秒为单位报告。结果显示与预期相同,在重叠配置中,处理时间随着相机数量的增加而增加,因为我们需要在前端计算组件相机之间的多视图特征,由于观测增加,后端的计算负载也会增加,在双目配置下,可以实现最大的处理速度为19.1 fps,在重叠配置下,五个相机的最小处理速度为11.45 fps。
总结
本文介绍了一种通用的多摄像头 SLAM 框架,可适应任意摄像头系统配置,本文的核心贡献在于相机配置独立的设计和在完整的 SLAM 流程中的实时实现,利用了相机几何来提取分布均匀的多视角特征,有效利用相机之间重叠的视场,对使用自定义相机架收集的真实世界数据集进行了广泛的评估,这些数据集具有各种具有挑战性的条件。还基于定义相机配置的摄像头数量和重叠信息对 SLAM 的性能进行了基准测试。这种分析可以用于设计多摄像头系统,以实现准确和稳健的 SLAM方案。
后面博主将对此开源代码和数据集进行编译测试,欢迎交流。
更多详细内容后台发送“知识星球”加入知识星球查看更多。
3D视觉与点云学习星球:主要针对智能驾驶全栈相关技术,3D/2D视觉技术学习分享的知识星球,将持续进行干货技术分享,知识点总结,代码解惑,最新paper分享,解疑答惑等等。星球邀请各个领域有持续分享能力的大佬加入我们,对入门者进行技术指导,对提问者知无不答。同时,星球将联合各知名企业发布自动驾驶,机器视觉等相关招聘信息和内推机会,创造一个在学习和就业上能够相互分享,互帮互助的技术人才聚集群。
资源
自动驾驶及定位相关分享
【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法
自动驾驶中基于光流的运动物体检测
基于语义分割的相机外参标定
综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍
高速场景下自动驾驶车辆定位方法综述
Patchwork++:基于点云的快速、稳健的地面分割方法
PaGO-LOAM:基于地面优化的激光雷达里程计
多模态路沿检测与滤波方法
多个激光雷达同时校准、定位和建图的框架
动态的城市环境中杆状物的提取建图与长期定位
非重复型扫描激光雷达的运动畸变矫正
快速紧耦合的稀疏直接雷达-惯性-视觉里程计
基于相机和低分辨率激光雷达的三维车辆检测
用于三维点云语义分割的标注工具和城市数据集
ROS2入门之基本介绍
固态激光雷达和相机系统的自动标定
激光雷达+GPS+IMU+轮速计的传感器融合定位方案
基于稀疏语义视觉特征的道路场景的建图与定位
自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)
用于三维点云语义分割的标注工具和城市数据集
更多文章可查看:点云学习历史文章大汇总
SLAM及AR相关分享
TOF相机原理介绍
TOF飞行时间深度相机介绍
结构化PLP-SLAM:单目、RGB-D和双目相机使用点线面的高效稀疏建图与定位方案
开源又优化的F-LOAM方案:基于优化的SC-F-LOAM
【开源方案共享】ORB-SLAM3开源啦!
【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM
【点云论文速读】StructSLAM:结构化线特征SLAM
SLAM和AR综述
常用的3D深度相机
AR设备单目视觉惯导SLAM算法综述与评价
SLAM综述(4)激光与视觉融合SLAM
Kimera实时重建的语义SLAM系统
SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM
易扩展的SLAM框架-OpenVSLAM
高翔:非结构化道路激光SLAM中的挑战
基于鱼眼相机的SLAM方法介绍
以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除
扫描二维码
关注我们
让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。
分享与合作方式:微信“cloudpoint9527”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。
为开源的伙伴们点赞吧!