多相机系统通用视觉 SLAM 框架的设计与评估

Design and Evaluation of a Generic Visual SLAM Framework for Multi-Camera Systems

PDF https://arxiv.org/abs/2210.07315
Code https://github.com/neufieldrobotics/MultiCamSLAM
Data https://tinyurl.com/mwfkrj8k

程序设置

主要目标是开发一个与摄像头系统配置无关的统一框架,该框架轻便易用,并能实时运行。

  • 多摄像头模型采用一组广义的摄像头模型,该模型将多个摄像头视为一个统一的成像系统。这种方法的优点是它允许使用单一的数学框架来处理来自不同摄像头的图像,而无需考虑摄像头的具体配置。广义摄像头模型的基本原理是,它将每个摄像头视为一个针孔相机,并使用一个共同的坐标系来表示所有摄像头的图像。这样,可以将来自不同摄像头的图像投影到同一个平面上,并使用相同的算法来处理这些图像。

  • 区分重叠 (OV) 或不重叠 (N-OV) 场景。

  • 摄像头配置根据摄像头的数量和它们之间的 FoV 重叠情况进行区分。

(a)评估各种重叠 (OV) 和不重叠 (N-OV) 相机配置。
(b)通用视觉 SLAM 框架的框图,显示了其子模块。
特征提取计算两种类型的特征------多视图内部匹配和常规单目特征。
注意,为了适应通用多摄像头系统,对初始化、跟踪和关键帧表示进行了更改。

前端

SLAM 系统的前端旨在估计机器人在每个时间步长的位姿和观测到的地标。本节讨论了特征提取、初始化、跟踪和建图模块的关键方面,这些方面能与任意的多摄像头系统无缝协作。

A. 特征提取

本文的方法使用两种类型的特征来进行 SLAM:多视图特征和单目特征。

  • 多视图特征: 多视图特征是出现在多个相机图像中的特征。它们可以用来表示场景中的 3D 点。本文的方法首先在所有图像中提取多尺度的 ORB 特征,并将它们分配到一个 2D 网格中。然后,本文的方法在每个独特的相机对之间迭代计算特征对应关系。对于每个相机对,本文的方法只匹配属于重叠区域的特征,以减少计算量。匹配的特征通过极线约束进行验证。从第一对相机创建一组匹配。对于随后的图像对,如果在两个未匹配的特征之间找到对应关系,则将一个新匹配添加到匹配集。如果为已匹配的特征找到匹配,则将新特征添加到现有匹配。
  • 单目特征: 单目特征是只出现在一个相机图像中的特征。它们可以用来表示场景中的 3D 点,但不如多视图特征准确。本文的方法使用具有单个 2D 关键点及其描述符的单目特征来表示非重叠区域。

本文的方法使用这两种类型的特征来构建地图和估计相机位姿。

两个样本多摄像头帧,显示了从(a)重叠OV装置中的前置摄像头以及(b)相同场景中的三个不在重叠N-OV装置中的摄像头中提取的图像特征。彩色点是多视图特征,其中较近的点为红色,较远的点为蓝色。白色点是没有任何 3D 信息的单目特征。注意,N-OV 装置只有单目特征,而 OV 装置在图像的重叠和不重叠区域中分布有单目特征和多视图特征。

B. 初始化

本文使用的是广义相机模型来表示多相机系统,并使用 17 点算法来估计相对姿态。
一般 SLAM 通常使用单应矩阵或基本矩阵来估计相对姿态。
广义相机模型和 17 点算法更适合于处理多相机系统的数据。

C. Tracking and Mapping

在初始化之后,每个传入帧都将相对于最后一个关键帧进行跟踪。通过词袋匹配在最后一个关键帧和当前帧之间计算帧间对应关系。由于多视图特征包含不同相机中的多个描述符,因此使用描述符的中位数进行匹配。如果最后一个关键帧中的地图点与当前帧中的观测值之间找到足够的 3D-2D 匹配, 可以通过找到地图点和当前帧观测值之间的对应关系来估计当前帧的位姿。具体来说,可以通过以下步骤来完成:

  1. 找到地图点和当前帧观测值之间的对应关系。
  2. 使用这些对应关系来计算当前帧观测值的普吕克坐标。
  3. 使用广义 PnP 算法来估计当前帧的位姿。广义 PnP 算法是一种求解相机位姿的算法,它可以处理带有噪声的测量值。
  4. 估计的相机位姿可以用来将地图点投影到当前帧中。如果投影的点与实际观测值匹配良好,则说明估计的相机位姿是准确的,即计算重投影误差。

通俗地说,就是通过找到地图点和当前帧观测值之间的对应关系,然后使用这些对应关系来计算当前帧的位姿,这个过程类似于三角测量,但它使用的是普吕克坐标而不是角度。

PS:

  • 普吕克坐标是一种表示线或平面在空间中的方式。对于一个点,它的普吕克坐标由两个三维向量组成。第一个向量是从相机中心到该点的方向向量,第二个向量是该点上的法向量。
  • 广义 PnP 算法是一种求解相机位姿的算法,它可以处理带有噪声的测量值。要使用广义 PnP 算法,需要提供一组观测值及其对应的普吕克坐标,以及一组地图点的 3D 坐标。广义 PnP 将使用这些信息来估计相机位姿。

如果估计的位姿表明自最后一个关键帧以来存在较大运动,则会以类似于 ORBSLAM 的方式进一步定位当前帧相对于局部地图。查找最初跟踪的地标共享的一组相邻关键帧 K。然后,在 K 中跟踪的地标与当前帧之间计算新的匹配。这使得能够获得局部地图支持,并有助于在存在遮挡动态物体的情况下找到稳定的地标。最后,如果自最后一个关键帧以来跟踪的地标的比率小于某个阈值,则将当前帧插入为一个关键帧。当做出新的关键帧决策时,会将观测值添加到现有地标中,并将与非地图点对应的新帧间匹配进行三角测量以创建新的地图点。

后端

在本文中,后端优化还同时优化了组件相机的外部校准参数。这使得本文的方法可以处理不同的相机配置,并提高多相机系统的定位精度。

后端对应着优化框架,通过极大化给定观测信息,对它们初始估计进行优化。在一个普通的多摄像头系统里,观测信息不仅取决于设备的位姿 X 和地标 L,还取决于观测信息被感知到的摄像头 C。最大后验概率 (MAP) 问题由以下公式给出:

其中 P (Z|X, L, C) 是观测信息的似然函数,由于独立同分布的假设而分解成多个单独的概率。

P (x0) 是初始机器人位姿的先验概率。

因子图表示法展示了变量之间的各个概率约束(因子)。

多相机后端的因子图,待优化变量为位姿 Xi、地标 lj 和相对相机位姿 Cp,因子显示为黑色方块节点,表示对变量的约束条件。

假设观测信息 zk 服从均值为零的正态分布,且先验也建模为高斯分布,则采用最小二乘法进行优化,具体形式如下所示:


其中,测量函数 hk 通过一系列变换将地标映射到预测的观测值 zk 。

懒得手敲推导过程了,直接截图如下。

这个公式很便于对多视角特征进行建模,它为后端提供了灵活性,可以使用不同的摄像头配置,并优化组件摄像机的外部校准参数 C,以及估计轨迹和地标。

实验设置

本节中介绍硬件设置、相机校准以及进行实验评估所需的几个室内和室外数据集的收集情况。

A. 硬件设置和相机校准

使用一个由七台相机组成的刚性多相机设备,其中五台相机朝前,两台相机朝侧面,还有一个惯性测量单元 (IMU),如图所示。


图 4
用于收集数据以评估 SLAM 管道的定制多相机设备。图中显示了重叠和不重叠的配置,以及安装在设备上的 IMU。IMU 用于计算连续两个相机之间的基线。连续两个相机之间的基线是 165 毫米。

相机的排列方式考虑了具有重叠 (OV) 和不重叠 (N-OV) 视野范围的配置。朝前的相机(红色虚线框)用于运行单目、双目和重叠多相机设置的实验。朝前的中心相机和朝侧面的相机(蓝色框)用作不重叠多相机设置。

使用 FLIR BlackFly S 1.3 MP 彩色相机,其分辨率为 720 x 540,FOV 为 57°,Vectornav 的 IMU 运行频率为 200 Hz。所有相机都已的硬触发,以便以 20 fps 的速度进行同步捕获。

使用 Kalibr 获取具有重叠 FOV 的相机的内参和外参,并使用校准目标。

对于不重叠的相机,基于目标的校准不起作用,因此需要相机观察静止目标来求解相对变换。
ps:对于不重叠的相机,使用惯性测量单元相机校准来获取它们的位姿。 惯性测量单元相机校准是一种使用惯性测量单元 (IMU) 和相机来估计相机位姿的方法。IMU 可以测量加速度和角速度,而相机可以测量图像。通过结合这两种信息,可以估计相机的位姿关系。

将相机间变换串联在一起,以获得所有相机的位姿,构建一个多相机系统,其中所有相机都具有已知的位姿。

PS:在后端优化过程中同时优化外参估计,这有助于提高多相机系统的精度。

B. 数据集

多相机设备和一台具有 32GB RAM 的戴尔 XPS 笔记本电脑安装在一个 Clearpath Ridgeback 机器人平台上,并沿着东北大学的校园行驶以收集数据。其中一个数据集是使用 NUANCE 自动驾驶汽车在越野环境中收集的。

共收集了六组室内和室外序列。这些序列包括几个具有挑战性但自然的场景,包括狭窄的走廊、没有特征的空间、急促和快速的运动、突然的转弯,以及移动机器人通常在城市环境中遇到的动态物体。

在室外序列中使用 GPS 作为真值。室内序列的真值是使用 Optitrack 设置获得的,其精度可达毫米级。在无法使用 Optitrack 的情况下,使用视觉标签用于真值和计算漂移。

表 I 中汇总了数据集的详细信息,包括位置、轨迹长度和真值。

结果

在几个具有挑战性的室内和室外轨迹中展示了定性和定量结果。

对于定量分析,使用绝对平移误差 (ATE),该误差是通过将估计的轨迹与真值对齐并计算相应位姿之间的平均误差获得的,如表 II 所示。

当没有真值轨迹时,使用一个视觉目标来估计机器人的初始和最终位姿并计算累积漂移。

A. 与最先进算法的比较

本节将与 ORBSLAM3(一种流行的稀疏视觉 SLAM 系统)的性能进行比较。

定性结果

图 5:本文通用 SLAM 系统和 ORBSLAM3 对 ISEC Ground1(a) 和 ISEC Lab1 (b) 序列的估计轨迹,在 (b) 中,真值是虚线。
对于 ISEC Ground1 序列 (a),机器人的起始位置和结束位置是相同的,这有助于衡量性能。在双目设置中,本文优于 ORBSLAM3,后者会因沿轨迹遇到的动态对象而导致跟踪不正确。随着增加重叠摄像头的数量,与我们的方法相关的试验显示估计轨迹的准确性有所提高。

图 5(a) 和 5(b) 显示了 ISEC Ground1 和 ISEC Lab1 序列的估计轨迹。ISEC Lab1 轨迹在轨迹的开始和结束时具有 Optitrack 真值(显示为虚线),因为要穿越多个房间。ISEC Ground 轨迹没有真值位姿,但机器人从同一位置开始和结束。请注意,在这两个序列中,本文在双目模式下优于 ORBSLAM3。在轨迹中的几个地方,由于存在动态特征,ORBSLAM3 在估计的位姿中显示出伪影。由于本文从分布在整个视野中的特征获得了更多支持,并且不局限于匹配的双目特征,因此本文可以更好地处理动态对象。

定量结果

表 II:所提出的方法和 ORBSLAM3 相对于不同序列真值的绝对平移误差 (ATE),ORBSLAM3 在双目设置上执行,使用图 4 两个具有最小基线的中心摄像头。
而本文的方法在图 4 重叠 (OV) 和非重叠 (N-OV) 配置上执行。
OV 配置结果显示为绿色,从面向正面的阵列中选择摄像头,从用于 ORBSLAM3 的双目设置开始,并为每次运行添加一个摄像头。
对于图 4 中显示的蓝色框中包含的三个摄像头,测试结果即粉红色的 N-OV 配置,对于 ISEC Ground2 和 Falmouth 序列,没有非重叠数据。

从表 II 中可以观察到,与 ORBSLAM3 相比,在五个数据集中的四个数据集中,本文的方法在双目设置下表现出更高的精度。

虽然对于 ISEC Lab1、ISEC Ground1 和 ISEC Ground2 轨迹来说,误差差异不大,但对于 Curry Center轨迹来说,差异却很显著,该轨迹更长,并且在东北大学校园里有很多动态内容,人们四处走动。

在 Falmouth 序列中,该序列具有带有干枯树叶的越野户外图像,与双目配置中的 ORBSLAM3 相比,本文的表现很差。

在比较中禁用了 ORBSLAM3 中的回路闭合,以准确计算累积漂移。通过回路闭合,ORBSLAM3 的估计得到了改进。然而,对于像 Falmouth 序列这样非常长的轨迹,观察到即使启用了回路闭合,ORBSLAM3 也无法从累积漂移中恢复过来。

B. 相机配置的影响

除了将本文的方法与最先进的 SLAM 系统进行比较之外,本文还评估并讨论了以下参数对所提出的 SLAM 管道的性能的影响。

准确性
  • 摄像机数量:

在重叠配置中,通过选择一个子集的摄像机来评估本文的方法,并为每次试验增加摄像机数量。我们从基线最小的 2 个摄像机开始,最多增加到前置摄像头阵列中的 5 个摄像机。表 II 显示,在每个序列中,ATE 随着重叠摄像机数量的增加而减小。我们可以在图 5(a)、图 5(b) 和图 6 中显示的轨迹图中看到同样的趋势。随着我们增加摄像机数量,估计的轨迹更接近地面实况。这可以在图 5(b) 中轨迹的放大部分中清楚地观察到。

  • 重叠与非重叠:

将从前置摄像头阵列中选择的一组重叠摄像头与一组朝不同方向的具有相同数量摄像机(N=3)的非重叠摄像机之间的跟踪精度进行比较,如图 4 所示。从表 II 中可以看出,对于具有相同数量摄像机的非重叠配置,误差总是大于重叠配置。这是因为非重叠设置会迅速积累尺度漂移。在 ISEC Lab1 序列中,误差尤其高,该序列具有狭窄的无特征走廊和反光玻璃墙,使侧视摄像头无法用于跟踪。

鲁棒性

图6:具有大量动态内容的Curry center室外数据的估计轨迹。
星号表示轨迹估计的最终位置。在重叠相机配置中,随着相机数量的增加,SLAM估计的准确性提高,这体现在最终位置的累积漂移上。
突出显示那些因遮挡动态物体而导致的跟踪失败的轨迹上的图像,用红色和蓝色框表示。
非重叠配置在对比相同数量的相机OV配置时显示出尺度问题,但对于动态内容具有鲁棒性。

除了测量准确性之外,本文还研究了不同相机配置下的跟踪鲁棒性。为此,我们在Curry center序列的多次运行 SLAM仔细观察 ,这是一个大型数据集(597 米),具有大量动态内容,如图 6 所示。这些数据是通过在正常工作日的东北大学校园周围导航机器人来收集的,当时有很多人类活动。图 6 显示了每个相机配置的最佳运行。红色和蓝色框表示我们遇到跟踪失败时轨迹上的位置,并显示了其中一个摄像头获取的相应图像。
在运行中,我们在两摄像头重叠配置中遇到最多的跟踪失败。三摄像头重叠配置中也发生跟踪失败,但不像两摄像头情况那样频繁。
具有 4 个和 5 个摄像机的重叠配置成功运行,非常紧密地相互跟随。
非重叠 3 摄像头配置在存在动态对象时不会失败,因为当一个视图被遮挡时,它有其他视图的支持来跟踪特征。然而,轨迹估计不准确,并且表现出严重的尺度误差。

C. 运行时性能

表III:本文方法的运行时间性能。我们展示了pipiline中不同步骤的平均耗时:特征提取、跟踪和建图、优化以及每帧的总时间。处理时间明显随着相机数量的增加而增加。我们可以在五个相机的配置下以11 fps的速度运行,这接近实时。

通过测量处理单个多摄像头帧的平均时间来结束评估。表 III 显示了 Curry center中各种相机配置的平均时间。分别以毫秒为单位报告了特征提取、跟踪和映射、后端优化模块以及每个帧的总处理时间的单独处理时间。结果表明,正如预期的那样,重叠配置中处理时间随着摄像头数量的增加而增加,因为我们在前端组件摄像头之间计算多视图特征时增加了额外负担。后端的计算负载也因观测值的增加而增加。

对于双目配置,我们可以最高实现 19.1 fps 的处理速度,对于重叠配置中的五个摄像头,我们可以实现最低 11.45 fps 的处理速度。

结论

提出了一种通用的多摄像头 SLAM 框架,可以适应任何任意相机系统配置。
本文的核心贡献是相机配置独立的设计和完整 SLAM 的实时实现。
利用相机几何形状提取分布良好的多视图特征,通过有效利用摄像头之间的重叠视场来实现。

对使用定制摄像头装置收集的包含各种挑战性条件的真实世界数据集进行了广泛的评估。

还根据定义相机配置的摄像头数量和重叠信息来对 SLAM 管道的性能进行基准测试。此分析可用于设计用于准确和鲁棒 SLAM 的多摄像头系统。

这项工作解决了最先进的视觉 SLAM 算法与其在多摄像头系统实际部署中的适用性之间的差距。

我们将代码和数据集公开,以促进这一方向的研究。

相关推荐
我搞slam2 天前
Cartographer源码理解
算法·slam·cartographer
杀生丸学AI15 天前
【三维重建】近期进展(完善中)
3d·aigc·slam·三维重建·nerf·视觉大模型
WHAT81621 天前
【Orb-Slam3学习】 特征匹配函数的目的与分类
c++·人工智能·算法·slam
Chris·Bosh23 天前
intel RealSense D435i自制数据集跑SLAM
linux·slam
Johaden1 个月前
视觉SLAM ch3补充——在Linux中配置VScode以及CMakeLists如何添加Eigen库
linux·c++·ide·vscode·编辑器·slam
风与铃的约定1 个月前
2.2 视觉SLAM 实践:Eigen
c++·机器人·slam·视觉slam·eigen·机器人运动学
Johaden2 个月前
在C++程序中新建并使用库
linux·运维·服务器·c++·slam
WHAT8162 个月前
【视觉SLAM】 G2O库编写步骤介绍
算法·slam·g2o
什么都不会的小澎友2 个月前
(秋招复习)自动驾驶与机器人中的SLAM技术(一)
自动驾驶·秋招·slam
sinat_164231712 个月前
alike-cpp 编译
slam