CamMap:基于SLAM地图对不共视相机进行外参标定

文章:CamMap: Extrinsic Calibration of Non-Overlapping Cameras Based on SLAM Map Alignment

作者:Jie Xu , Ruifeng Li , Lijun Zhao , Wenlu Yu , Zhiheng Liu , Bo Zhang , and Yuchen Li

编辑:点云PCL

代码:https://github.com/Rick0514/orbcalib

欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。

摘要

由于多相机之间通常存在有限或无重叠的视场,因此在估计外参相机参数时面临着一定的挑战,为了解决这个问题,本文提出了CamMap:一种新颖的6自由度外参标定流程。根据三个操作规则,使一个多相机系统单独捕捉一些类似的图像序列,以使用SLAM系统创建基于稀疏特征的地图。我们构建了一个两阶段的优化问题来对齐这些地图,并基于双向投影得到它们之间的变换,这些变换即为外参参数。该方案支持各种相机类型,在任何纹理丰富的环境中都可以使用。它可以同时标定任意数量的相机,无需标定板、同步、相同分辨率和频率。我们对具有有限和无重叠视场的相机进行了实验评估,结果显示我们的方法具有较高的准确性和效率。Kalibr和CamMap之间的绝对姿态误差(APE)小于0.025。

主要贡献

准确估计相机外参对于关联多个相机的信息至关重要。然而,如图1(a)所示,重叠视场通常很小或不存在,这给外参标定带来了重大挑战。为了让标定板能够被同时捕捉到,标定板必须远离相机放置。由于角点提取像素误差的增加,标定精度会降低,对于没有重叠视场的情况,需要一个充满已知相对位置模式的标定房间,这既昂贵又不方便。

de8b4db0968f041c155e2d45d41f40c7.png

图1. 非重叠相机的组合示例。(a) 配备两个RealSense D455和两个L515的TurtleBot。我们移除了连接线以清晰显示。(b) RealSense D455的组成,右侧图像传感器和左侧图像传感器可以组合成立体摄像头,并且左侧图像传感器的坐标系被用作参考,中间的RGB模块可以单独用作单目摄像头。(c) RealSense L515的结构,它可以用作RGB-D或单目摄像头。

针对解决上述问题并充分利用ORB-SLAM3,本文提出了CamMap:一种6自由度外参标定流程,它可以对非重叠相机进行高精度的外参标定,并可应用于多种类型的相机,如单目、立体和RGB-D相机。该标定方法CamMap通过对ORB-SLAM3创建的地图进行对齐来实现,换句话说,自然场景可以用作标定模式。在分别使用两个相机构建两个相似地图并找到所有匹配的地图点后,外参参数正好是地图之间的变换关系。标定过程仅耗费几十秒时间。所提出的方法的应用要求在表I中可以找到。

eadc46b1c3c285acb1c8f687ddf561bf.png

本文的主要贡献如下:

  • 提出了一种相机外参标定流程,将ORB-SLAM3系统集成到不重叠视场的各种相机类型中,在任何纹理丰富的自然环境中都可以使用,无需标定板,并且可以同时标定任意数量的相机。并将所提出的方法开源。

  • 为不同位置的多相机提出了三个操作规则,这旨在消除相机不同步时的理论误差,并减少SLAM漂移引起的误差。

  • 我们在两阶段优化问题中引入了基于双向投影的代价函数来计算外参参数,然后提供了一种用于确定标定是否成功的SLAM漂移评估方法。

主要内容

概述

这里详细描述了所提出的方法,如图2所示,一个装有两个刚性连接相机A和B的支架,在支架上进行一系列规定的运动后,相机捕捉图像流,这些图像流将由ORB-SLAM3处理,用于创建地图,包括关键帧Ai、Bj(其中i = 1,...,m,j = 1,...,n)和地图点P,值得注意的是地图坐标系与相机的第一个关键帧坐标系重合,这意味着地图之间的变换TMap_BA实际上是A1和B1之间的变换TB1A1,也即是外参参数。然后执行类似关键帧检测以在两个地图中找到匹配的关键帧。最后使用两阶段优化通过对所有匹配地图点对(PkA1,PkB1)进行对齐来估计外参参数(其中k ∈ N,N = {1,...,l})。CamMap的流程包括以下步骤:

  • 通过相机捕捉一些图像序列,当多相机支架进行一组固定运动时,例如在小圆圈上旋转,这应该根据相机的相对位置进行规划,在标定开始和结束时,支架应保持静止。

  • 使用ORB-SLAM3系统处理图像序列,以创建基于ORB特征的地图。

  • 使用词袋(BoW)模块对两个地图之间的所有关键帧进行相似性检测,找到相似关键帧并匹配地图点。

  • 对相似关键帧捕捉的尺度和局部地图进行对齐,以估计外参参数,这个过程是“帧到帧”的对齐,是第一个优化阶段。同时,使用卡方检验来删除错误匹配的地图点对。

  • 对于第二阶段的优化,使用所有正确匹配的地图点对来优化外参参数,这是“地图对地图”的对齐。卡方检验用于获得内点的数量。最后根据内点数量和T_A1_B1与T_Am_Bn之间的差异判断标定是否成功。

012691572f9fe60641ea775aed0864df.png

图2. 所提出的标定流程的系统概述,值得注意的是地图坐标系与第一个帧的相机坐标系重合,因此T_MapA_MapB = TBA1。

图像序列捕获与地图创建 

在纹理丰富的场景中执行SLAM之前,应预先校准内参数,这将深刻影响SLAM和标定的准确性。在这种方法中,地图坐标系与第一幅图像的相机坐标系重合,因此相机可以以不同的频率进行拍摄,如果第一幅图像中的特征点很少,ORB-SLAM3系统将拒绝创建关键帧,因此,建议在开始时将相机放置在具有相对丰富特征的方向上。

在外参标定过程中,相机可能不会同步。因此,如果相机在SLAM开始时移动,假设t0和t1分别是两个相机捕获第一幅图像的时刻,则外参数TB1A1将产生一个误差TBt0_Bt1:

aa121f4ec368f6cf9de980663639ac9f.png

其中,TAt0_Bt0是实际的外参数,而TBt0_Bt1是相机B从时刻t1到时刻t0的变换。因此,如果相机B移动速度较快,并且以较低的频率捕获图像,误差将更大。因此,建议在开始时保持相机静止,使TBt0_Bt1成为单位矩阵,从而避免理论误差。

从理论上讲如果相机在SLAM结束时保持静止,TBm_An也将等同于外参数,但在SLAM系统中,姿态估计是一个递归过程,累积误差会逐渐增加,如图3所示。因此,在完成标定时我们可以通过将TB1A1与TAm_Bn进行比较来判断标定是否成功。

eecbd03664819619773389ba056795f5.png

图3. 累积误差对标定结果的影响,由于SLAM的漂移SLAM结束时会出现累积误差,因此TB1_A1是比TAm_Bn更准确的相机外参估计结果。

降低误差的有效方法是回环检测,回环检测确定机器人是否返回到先前经过的位置。如果检测到回环,它将优化所有SLAM姿态和地图点以提高准确性。此外,ORB-SLAM3根据关键帧之间的连接关系优化局部地图,因此如果它们之间有重叠的视角,则累积误差将较小。综上所述,提出了三条操作规则:

1)在SLAM的开始和结束时,机器应保持静止。

2)如果相机之间有重叠的视野,建议将机器移动一小段距离,但不要转动过多,例如图7(a)中的运动轨迹。

3)否则,最好使机器在环形轨迹中移动,以便系统检测到回环闭合,例如图8(b)中的运动轨迹。

为了更容易检测回环,我们修改了ORB-SLAM3的回环检测模块,例如增加了关键帧的数量。总体上,这些操作规则不仅旨在使机器捕获足够相似的图像,而且还要保持累积误差较小。值得注意的是,如果相机中有一个是单目相机,则必须移动机器,而不仅仅是旋转,否则单目SLAM无法估计此情况下的姿态。由于相机的精度会随着距离的变化而改变,我们移除比相机基线深10倍的地图点,在SLAM结束时,进行全局捆绑调整(BA)以优化地图点的位置和关键帧的姿态。

相似关键帧检测 

与回环检测类似,需要找到所有相似关键帧对(Ai, Bj)对应的(i, j) ∈ M,以及两个地图中的匹配地图点(PkAi, PkBj),我们使用词袋(BoW)模块来找到匹配的关键帧和地图点,该模块可以将特征点转换为向量,因此我们可以通过比较向量之间的距离来找到相似的图像。然后可以通过它们的ORB描述子来匹配地图点, 用于验证匹配关系,我们可以通过以下公式获得关键帧Ai和Bj之间的相似变换SAiBj:

bdc3dae99f1374fe7c311cf3ef7526f4.png

其中,R是一个正交旋转矩阵,描述了两个参考帧之间的相对方向关系,t是两个参考帧之间的平移向量,λ代表两个坐标系之间的尺度因子,当所有相机都是立体相机或RGB-D相机时,λ = 1。相似变换SBAji可以通过式(3)中的双向重投影方法进行优化。

a05d98ad7936e1611e448643f5578306.png

图4. 一对匹配地图点在对应关键帧上的双向重投影。

如图4所示,它将匹配地图点PkAi、PkBj一起投影到关键帧Ai、Bj上的像素点,像素误差分别在Ai和Bj中由马氏距离来描述,如果相机具有不同的视场和分辨率,则重投影误差的权重将不相同。带有协方差的马氏距离比欧氏距离更准确地描述了误差

af8abbf7fe58eee6caaa0b3444f68669.png

ρ(·)是鲁棒核函数,用于减少异常值的影响,使用卡方检验来消除异常值,如果正确匹配的地图点数超过阈值,我们认为相似的关键帧匹配成功,这是“帧对帧”对齐,也是第一阶段的优化,在非线性优化问题中,初始值非常重要,所以我们选择TA1_B1作为第二阶段优化的初始值:

c9610af672aa455ee6477cf883ae6c8b.png

其中,SAi_Bj 是通过大多数匹配地图点计算得出的。

外参数优化

对于第二阶段的优化,将所有匹配地图点(PkAi,PkBj)转换为(PkA1,PkB1)。然后,通过双向重投影,将外参标定转换为非线性优化问题:

49f16f85435c8a771197f6388216dc86.png

经过几次非线性优化迭代和卡方检验去除异常值,可以估计出外部参数 TB1_A1 以及通过卡方检验的匹配地图点的数量,最后可以得到变换矩阵TAm_Bn。“地图对齐”信息的优化方法比“帧对齐”信息的方法更好。影响校准精度的主要因素是SLAM系统中的漂移,因此我们从以下两个方面判断校准是否成功。一方面,TB1_A1和TBm_An在理论上都是外参数;由于SLAM漂移的影响,TBm_An与实际值有一定偏差。因此,建议在TA1_B1 和 TBm_An 之间存在较大差异时重新进行校准。另一方面,如果只有少数地图点通过卡方检验,结果与“帧对齐”校准相同,这样的结果不够精确。特别地,对于相机A是立体或RGB-D相机,相机B是单目相机的情况,TB1A_1是带有尺度因子λ的相似变换,如下所示:

06d74e5887c4499580a0ea40245dc60b.png

由于旋转矩阵RB1A1的正交性,可以轻松得到实际的外部参数RB1_A1和tA1_B1。对于两个相机都是单目相机的情况,考虑到在单目SLAM的过程中无法获取真实的尺度信息,我们只能计算3个自由度的旋转RA1_B1。

实验

我们的工程在Ubuntu 20.04上运行,使用Intel Core i7-1165G7@2.8 GHz CPU。在实验中使用了两种类型的相机,RealSense D455和L515,它们可以作为RGB-D或单目相机使用。D455还可以用作立体相机,可以通过仅对架构进行一次规划的移动,并在rosbag中记录图像序列,同时校准多个相机之间的外参数。

303dd88b7d32d7e29e058d682cf23b8f.png

具有重叠视场的三个相机

图5显示了三个相机的布置以及相应的视场,我们使用提出的校准流程进行校准,并将Kalibr 的结果作为标准参考,经典的开源校准工具Kalibr要求校准模式应该出现在视场的所有角落和边缘。但在图5中,相机A和C只有一个很小的重叠视场。因此,在这种情况下,Kalibr不能直接用于校准。幸运的是,相机A和B之间以及B和C之间的重叠视场较大。因此,可以通过TCA = TBA · TCB间接获得A和C之间的外参矩阵。

e2b91c821053e6827c582de89ae29117.png

图5. 具有重叠视场的三个相机和每个相机所看到的AprilTag校准模式。

我们在展板、办公室和停车场进行了实验,如图6所示。相机A的分辨率为848×480,而B和C均为640×480。三个相机的拍摄频率分别为15 Hz、30 Hz和5 Hz,它们在这里都被用作RGB-D相机,使用绝对姿态误差(APE)进行准确性评估

7a70ca022bf04f622e0e6086a83dc925.png

图6. 三种实验环境:(a) 展板; (b) 办公室; (c) 停车场,绿色框表示ORB-SLAM3提取的ORB特征点。

从前两个实验可以推断,在校准开始时进行移动会产生额外的误差,而对于频率较低的相机影响更为显著。展板1和展板3的地图如图7所示。在ORB-SLAM3中,如果几个关键帧共享重叠的视野,这些关键帧和相应的地图点都是活动的。巧合的是,在图7(a)中可以看到所有的地图点都是活动的,在局部BA模块中会进行优化以减少漂移。因此,它的APE小于展板3上的结果。

由于相机L515 B的深度模块容易受光照影响,在停车场无法建立地图,因此我们无法在户外校准外参数,特征质量表示地图点的准确性,当地图点位于物体的边缘或远处时,根据测距原理,其深度值不准确,我们发现,校准的准确性与室内特征的质量正相关,因此强烈建议在室内使用CamMap,并且特征质量要高,例如使用展板等。

2930737caae5c90b8afe1cc523cc66ab.png

图7. CamMap在图6(a)中展板上构建的地图,红色点表示当前活跃的地图点,它们的位置通过ORB-SLAM3的局部BA进行优化,地图点之间的累积误差较小,黑色点表示历史地图点,累积误差较大,蓝色框表示关键帧,绿色线表示关键帧之间的连接关系,(a)代表表II中展板1上的实验。(b)代表展板2上的实验,以及底盘的长距离移动。

无重叠视场的四台摄像机

我们在图8(a)所示的办公室进行校准实验,为了减小累积误差,我们使用操作规则(3),让图1(a)中的TurtleBot自动旋转一圈。在这个实验中,相机A和D被用作单目相机,B是RGB-D相机,而C是立体相机。我们将相机A视为主相机,其他相机视为从相机,ORB-SLAM3创建的地图之一显示在图8(b)中。相机的运动构成了一个闭环。ORB-SLAM3检测到闭环,并校正了关键帧的姿态和地图点的位置,需要注意的是,由于SLAM无法使用单目相机A和D估计平移,因此运动不能是纯旋转。

16f036f121f66749b3b794c62d2dd909.png

图8. 办公室中的实验,(a) 一个自动旋转的TurtleBot实验设置,(b) 四个相机构建的地图。

CamMap无法直接估计两个单目相机A和D之间的实际平移,但可以通过先校准相机A、C和C、D之间的外参来间接获得。我们将校准结果与手动设置进行比较,结果显示在表III中。由于手动设置误差较大,此处没有计算APE。

40b7bf6c0d9e9be829fd8809a1d8bbca.png

总结

当摄像机之间存在有限或没有重叠的视场时,传统的方法如Kalibr在这些情况下无法工作,我们提出的方法CamMap专门针对上述问题进行设计,并且可以实现与Kalibr相似的准确性。此外,我们的方法易于使用且耗时较少,校准过程可以自动化,非常适合工业应用,我们的方法适用于各种场景,不受同步的约束。此外,相机的频率和分辨率也没有要求必须相同。然而,我们的方法也有一些限制。首先由于设备的限制,我们没有对鱼眼模型相机进行校准实验。其次,该方法不适用于两个相机无法捕获相同图像的情况。例如,如果其中一个相机安装在汽车的顶部,另一个相机安装在底部,它们将无法拍摄相同的图像。第三,当两个相机都是单目相机且无法形成立体相机时,我们的方法只能校准3-DoF旋转。幸运的是,在ORB-SLAM3中,我们可以使用带有惯性测量单元(IMU)的单目相机创建具有绝对尺度的地图,并优化3-DoF平移,这将成为我们未来工作的一部分。

资源

自动驾驶及定位相关分享

【点云论文速读】基于激光雷达的里程计及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方法介绍

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

38638637afb5bb6b98508e1ec498806c.png

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享与合作方式:微信“cloudpoint9527”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。

为分享的伙伴们点赞吧!

a3218565c2257e1a3403b543a2dcf7e3.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云PCL公众号博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值