Improvements to Target-Based 3D LiDAR to Camera Calibration

在paper with code上发现了这篇文章,在GitHub上搜索lidar camera calibration也是高star量的仓库,先读下他的文章。 原文链接.
简洁概要:
将雷达当作一个相机,有点类似双目标定,将雷达看作一个相机幅面作为雷达坐标系,只是除去了相机坐标系到图像坐标系的映射,在本文中将雷达点云用类 L 1 L_1 L1范数方法估计雷达坐标系下的顶点坐标(先定义4个顶点求解点云到雷达变换,将求得的点云到雷达的变换求逆代入定义的顶点获得真正的顶点),注意看II.B方法即该方法,获得点云与雷达的变换关系获得雷达坐标系顶点坐标,获得图像角点后用PnP或本文提出的IoU方法获得两传感器的外参变换关系,用RMS来定量评价。在文章中目标与点云是一致的。

摘要

对于像SLAM这样的传感器融合任务,激光雷达和单目相机之间需要进行刚体变换,确定这种变换对许多自动驾驶系统而言十分重要。当雷达图像投影在相机图像上时,旋转变换的几度偏差或者百分之几的平移变换误差可能导致在5米测距情况下近20cm的投影误差。确定准确变换关系的最大障碍其实来源于雷达点云的相对稀疏性和雷达测量时的系统误差。这篇文章提出了(1)使用已知的尺寸和几何形状来改善目标的位姿估计来应对目标雷达图像内在的量化和系统误差,(2)一种拟合方法来求解雷达到单目相机的变换关系,从而避免了从点云中提取目标边界这一繁琐的任务,(3)并基于投影三维雷达中的目标顶点到相机图像中对应的角点进行“交叉验证实验”。最终结果显示与baseline方法相比投影误差减少了50%,方差减少了70%。

I. 引言和相关工作

本文中假设两个传感器的内参已经进行过标定只关注雷达和相机的刚性变换,例如旋转矩阵和平移变换。先前的文献依据是否需要目标分两类。基于目标的方法已经实现的很好了,主要问题是引入的人工操作过多,像仔细测量目标们不同的部分,分割边界点以及边缘点配对检查。我们的方法避免了这些手动步骤而且对多种平面多边形目标都适用。
在基于目标标定的方法中,人们试图在雷达点云和相机图像平面中估计出一组对应的目标特征点(例如边界线,法向量,顶点)。如果特征独立对应足够多,该变换可由n点透视法(PnP)进行求解,即通过优化这个式子的问题
在这里插入图片描述
X i X_i Xi 是雷达特征点的(齐次)坐标, Y i Y_i Yi是相机特征点的坐标, P P P经常被称为投影映射, H L C H^C_L HLC是用旋转矩阵 R L C R^C_L RLC和平移矩阵 T L C T^C_L TLC表示的从雷达幅面到相机幅面的其次变换矩阵,以及 d i s t dist dist是一个距离或测量误差。

A. 基于目标标定方法的概述

在标定是应将正方形目标旋转,使其呈现为一个钻石,可以帮助消除由于环形线的间距造成的不确定性。
如果平行放置,上下边界线将与雷达环形线平行,将会丢失很多点不利于边界的确定
两类常用的特征几何(a)矩形或三角形平面目标顶点的3D坐标,(b)目标平面的法向量和目标平面顶点连线。数学上这两组数据是等价的:知道其中一组可以确定另一组。在实际使用中,使用(b)将利用SVD来寻找法向量,更广泛地用于最小二乘线拟合问题,而(a)打开了其他视角。

在这里插入图片描述在这里插入图片描述

图2a显示了工厂校准的32束Velodyne ULTRA Puck激光雷达在菱形平面目标上的25次扫描的3D视图。图2b显示了一些环校准很差,其“噪音水平”比制造商的规格高三倍。 平均而言,这些环接近LiDAR的规格(在小于50 m时±5 cm),这意味着同一环上的点之间最大相差10厘米。距离(或深度)测量中的系统误差会影响目标质心(通常用于确定目标相对于激光雷达的平移)和目标法向量(用于定义目标平面)的估计如图2c显示。随后,将点云正交投影到此平面,并通过执行RANSAC在适当的一组环边缘找到目标的线边界如图2d。沿着目标边界的线,然后定义它在平面上的顶点,我们将在后面指出,这些顶点不受目标几何形状的约束。

一旦确定了目标平面中的顶点,就可以知道目标的法线向量,从而将这些顶点提回点云的坐标。 这个过程可以通过对单个目标进行多次重复扫描,整合一个目标或多个目标的多次扫描,从而得出目标顶点的列表 { X i } i = 1 4 n {\{X_i\}}^{4n}_{i=1} {Xi}i=14n,从而得出目标姿态的数量。

目标通常设计为在相机图像中很容易辨认的顶点。 { Y i } i = 1 4 n {\{Y_i\}}^{4n}_{i=1} {Yi}i=14n表示在相机平面中对应的坐标,公式(1)中的概念拟合问题即可实现。尽管要最小化这个代价函数是一个非线性且非凸优化问题,但这通常不是一个问题因为CAD数据可以为局部求解提供一个恰当的初始猜测值,例如LM(Levenberg-Marquardt)算法。

B. 我们的贡献

(a)介绍了一种新方法来估计目标到雷达的刚体变换, H T L H^L_T HTL。通过当前的变换估计将点云投回雷达帧的原点,其代价函数定义为一个点到已知的雷达幅面中的几何的3D参考点的距离总和,对于落在参考目标之外的点为0。我们用 L 1 L_1 L1-inspired范数定义距离。与引文[23]一致,我们发现其对界外点敏感效果不如 L 2 L_2 L2-line用RANSAC拟合的边界点。
指的是l1,l2范数吗,横杠后是什么意思

(b)当估计顶点时通过使用整个目标点云避免识别边界点并将其解析成目标单个边缘的重复工作,其中一些边缘上的少量点因为雷达点云的稀疏性增强了量化效应。
没看懂

(c)我们做了循环验证实验,以将我们的方法与SOTA(最先进)的方法进行比较。我们验证实验的一个新特点是用相机图像作为真值替代;在3D语义映射上下文中,这很明显。除了用标准的PnP方法求解刚性变换,我们还研究了利用最大交并比(IoU)的方法进行估计。我们的算法在多种目标上进行了验证。
我个人认为就是引用了一些深度学习的概念来处理问题,像素作为真值其实不是他们最先提出的《CalibNet: Geometrically Supervised Extrinsic Calibration using 3D Spatial Transformer Networks》就是这么作几何约束的

(d)提供了开源代码,对应的开源代码地址

II. 找出雷达目标顶点

我们假设每个目标都是平面的,正方形的,并且在LiDAR的框架中旋转了大约45°,从而在图2a中形成菱形。 如引文[23],[24]提到的,如果使LiDAR的环平行于目标边缘延伸,由于环的间距将导致竖直方向上的模糊。 我们假设已使用标准方法自动分离出目标的点云[27],该课题组研发的LidarTag技术,本文不赘述。
我们把四个顶点作为目标特征点,用 { X i } i = 1 4 {\{X_i\}}^{4}_{i=1} {Xi}i=14表示在雷达幅面的坐标;当使用时,我们没有注意区别普通坐标和其次坐标而是滥用了表示法。顶点 { X i } i = 1 4 {\{X_i\}}^{4}_{i=1} {Xi}i=14在点云中无法直接观察到。本节将用类似L1范数的新方法估计这些顶点在雷达幅面的坐标。
也许这就是 L 1 L_1 L1-inspired norm方法

A. 雷达点云上的标记

在图2c中,沿着z轴方向雷达有稠密的区域也有稀疏的区域。对于32线的elodyne UltraPuck,我们估计其z轴相对分辨率在稠密区 0.33 ° 0.33\degree 0.33°,在稀疏区 1.36 ° 1.36\degree 1.36°。一个点的沿y轴的距离分辨率大概 0.1 ° 0.1\degree 0.1°。在d米远的点,其量化误差大概为 d s i n θ dsin\theta dsinθ。所以如果目标特别远那么量化误差就会很大。图3a展示每个轴偏差 1 ° 1\degree 1°,平移变换偏差5%将会导致校正效果急剧下降。正如引文[23][24]提到的应该选择正确的角度放置目标利用已知的几何关系减小y轴,z轴的量化误差。
在这里插入图片描述

B. 确定目标顶点的新方法

用PC表示目标的雷达点云, χ i \chi_i χi表示3D点,雷达点云可以表示为
在这里插入图片描述,N表示目标点的个数。
我们需要得到雷达幅面的目标顶点,如图4,让 H L T H^T_L HLT表示从雷达帧中的参考目标顶点 { X i ˉ } i = 1 4 \{\bar{X_i}\}^4_{i=1} {Xiˉ}i=14变换到点云上。我们用反变换 H T L : = ( H L T ) − 1 H^L_T:=(H^T_L)^{-1} HTL:=(HLT)1表示目标点云到雷达原点的变换,并在雷达原点出测量误差。
在这里插入图片描述

定义了一个c函数,对于 a ≥ 0 a\geq0 a0 λ ∈ R \lambda \in R λR
在这里插入图片描述
引文[23]中称为“软 L 1 L_1 L1范数”。让 { χ ~ i } i = 1 N : = H T L ( P C ) : = { H T L ( χ i ) } i = 1 N \{\widetilde \chi_i\}^N_{i=1}:=H^L_T(PC):=\{H^L_T(\chi_i)\}^N_{i = 1} {χ i}i=1N:=HTL(PC):={HTL(χi)}i=1N表示用 H T L H^L_T HTL从点云映射回雷达,用 ( x ~ i , y ~ i , z ~ i ) (\widetilde x_i,\widetilde y_i,\widetilde z_i) (x i,y i,z i)表示一个点的笛卡尔坐标。代价函数可以定义为
在这里插入图片描述
d是(正方形)目标尺寸,唯一的可优化参数 ϵ > 0 \epsilon >0 ϵ>0,代表理想目标的厚度。 ϵ \epsilon ϵ的值基于目标投影点的标准偏差,可以反应深度测量时的误差水平,如图2f。
我们提出了用旋转矩阵 R T L R^L_T RTL和平移向量 T T L T^L_T TTL确定最优刚体变换的方法,通过
在这里插入图片描述
并且定义估计的目标顶点通过下式获得
在这里插入图片描述
备注1.需要强调的是,确定目标顶点时不用提取边缘点和分配关系到目标一侧。 此时不需要估计的顶点与目标的顶部,底部和左侧或右侧的物理对应关系。
备注2.(3)式中的代价函数是针对立方体的。明确地说,我们寻求的是在激光雷达幅面中对目标顶点的最佳估计,而不是变换本身。我们的方法时间接的,我们估计一个最好的雷达到目标的变换关系 H L T ∗ H^{T^*}_L HLT,并且用(5)式来定义顶点。

III. 图像平面的角点和雷达顶点的对应点

对于给定的雷达目标相机图像,用 { C Y i } i = 1 4 \{_CY_i\}^4_{i=1} {CYi}i=14表示相机图像中的角点。我们假设已经获得这些点,这些点将用在我们的方法和baseline方法中。这部分在标定问题中是比较简繁的,为了获得简单对应关系 X i ⟷ c Y i X_i\longleftrightarrow_cY_i XicYi,顶点 { X i } i = 1 4 \{X_i\}^4_{i=1} {Xi}i=14顺序可能需要排列;我们用竖直水平位置进行排列。
一旦我们有了对应点,下一步就是把雷达目标投影到图像坐标中,关系式为
在这里插入图片描述
(6)式包含了相机内参矩阵和外参矩阵。
为了后续的使用,我们把(6)(7)定义一个雷达坐标到图像坐标的映射关系
在这里插入图片描述
注意这里的函数包含外参变量也包括雷达顶点坐标。

IV. 外部变换关系的优化

本节假设已经通过雷达帧的目标顶点与相机图像平面的对应关系已经确定,这个外部变化可以当作是一个标准的PnP问题:最小化对应角点的欧几里得距离。我们还提出了利用映射的多边形获得最大交并比方法。

A. 欧几里得距离

标准的PnP公式
在这里插入图片描述
c Y i ∈ R 2 _cY_i\in R^2 cYiR2是相机角点, ) L Y i ∈ R 2 )_LY_i\in R^2 )LYiR2由(8)式定义,n为目标的位姿数目。

B. IOU优化

对于给定的多边形,用N逆时针顺序定义的N顶点表示为在这里插入图片描述
通过Shoelace算法计算多边形面积
在这里插入图片描述
且点是循环的N+1号点就是第一个点。如果顶点为空面积为0。利用该面积公式给出一个基于交并比的代价函数。
L ν : = {   L Y i ] i = 1 4 n _L\nu:=\{\ _LY_i]^{4n}_{i=1} Lν:={ LYi]i=14n表示利用(8)式从雷达幅面映射的目标多边形,令 C ν : = {   C Y i ] i = 1 4 n _C\nu:=\{\ _CY_i]^{4n}_{i=1} Cν:={ CYi]i=14n表示相机图像对应的顶点,如图5a。如果他们的交集不为空,我们可以利用已知的坐标定义多边形表示为 I ν : = {   I Y i ] i = 1 M _I\nu:=\{\ _IY_i]^{M}_{i=1} Iν:={ IYi]i=1M, M ≥ 0 M\geq 0 M0是交差点的个数如图5b。本文采用Graham扫描算法对多边形的三组顶点进行了逆时针排序,这是一种在[38]、[39]平面上寻找有限点集凸包的方法。这两个多边形的交并比是
在这里插入图片描述
在这里插入图片描述
因此优化问题变为
在这里插入图片描述
(8)明显作为变换依赖。

V.实验结果

在本节中,我们通过“交叉验证”形式在七个不同场景上广泛评估我们提出的方法:以循环方式,我们用一个或多个场景中的数据估计外参变换,然后在其余场景上对其进行评价。 定量评价包括计算每个角点的像素误差,其中我们将图像角点作为真值。 通过将雷达扫描投影到相机图像上,我们还展示了定性验证结果。

A. 数据采集

场景包括室外和室内设置。每个场景包括两个目标,一个约80.5平方厘米,另一个约15.8平方厘米,较小的目标放置的更靠近相机-激光雷达。我们使用intel RealSense深度相机d435和Velodyne ULTRA Puck激光雷达,这些传感器安装在内部设计的cassie系列双足机器人的躯干上。从CAD文件来看,相机大约在激光雷达下面20厘米,在它前面10厘米。照相机的角度是可调的。在激光雷达帧幅面中,其俯仰角近似为零。
一次扫描包括雷达32线的光束旋转一圈收集的点,单光束对应的数据叫做环。对于每个场景,我们收集了大概10s的同步数据,大概100对扫描图像和相机图像。
对于每个目标,选择连续的5对雷达扫描图和相机图像作为数据集。我们对每个数据集都使用了两种方法(baseline和类L1范数)进行顶点估计,然后我们用PnP和IoU优化找出变换。

B. 对雷达顶点采用baseline

对每次扫描,从背景中分别提取出两个目标。对每个目标所在的5组扫描,我们计算点云质心并将点云围绕原点居中。利用SVD方法找到目标法线,并将点云正交投影到质心和法线定义的平面。将每次扫描中命中目标的环选择其左右端点与目标四个边线关联。用最小二乘法和RANSAC把边缘点拟合为直线。顶点是通过目标法线和质心点定义的平面上的线交点获得的。四个顶点投回3D空间如图2d。

C. 相机角点及其关联

点击图像中角点附近进行角点确定,本文唯一手工干预部分,未来将实现自动。如图6a显示。在任意两个点击点之间即目标边缘,围绕这两点绘制一个边界框。一旦我们定位了角点位置,我们可以使用Canny算子进行边界检测来找到边界框中的点。通过边缘点用RANSAC进行拟合并将所得线的交点定义为目标角点如图6b。一个视频和这个过程的实现随代码一起发布。
在这里插入图片描述

D. 外参标定

在相关目标顶点和相机图像角点的基础上,采用PnP和IoU方法求解从激光雷达到相机的刚体变换。由于结果相似,我们只报告表1中的PnP方法,然后将它们都包含在总结表中(表2)。SVD和RANSAC是使用相应的MATLAB命令计算的,而(4)、(9)和(12)公式中的优化是使用fmincon进行的。

E. 计算性能

校准是离线完成的。 表1中给出的循环交叉验证研究是在不到一个小时的时间内在MATLAB中生成的。 每个数据集(包括基线和建议的方法)在MATLAB中大约需要1.5分钟。

F. 定量结果和循环分析

在表1中,我们展示了雷达顶点投影到相机平面的RMS,baseline称为RN,本文方法成为GL1。在两个目标的情况下,进行了一个完整的循环研究即:从激光雷达到相机的刚体转拟合从两个目标的8个顶点的集合,然后在其余6个场景的每个顶点上验证。
一个场景做拟合一个场景8个顶点,剩余6个做验证
对于两个场景中的四个目标进行完整轮循研究需要21个验证,而对于六个目标和八个目标,则每个都需要35个验证。 由于文章空间问题,我们仅报告这些可能性的一部分。
两场景共4目标需要 C 7 2 = 21 C_7^2 = 21 C72=21,实际指的是联合两个场景做拟合
我们以像素为单位
在这里插入图片描述
4n目标角点总个数。在单场景两目标情况下,n=2。三场景六目标n=6。图7展示了几个点云投影到相应的相机图像。汇总数据见表2。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值