Feat-Calibr | 一款实用的开源激光雷达到车体外参的标定工具

简介: 对于拥有惯导的自动驾驶车辆而言,激光雷达到惯导/车体(以下简称激光雷达外参自标定)的方法对后续的感知、定位等下游应用具有非常重要的意义。对于这一问题,最容易想到的办法是同时跑激光里程计与惯导的里程计,并使用手眼标定的方法寻找这外参。这个方法最主要的问题是标定精度受制于激光雷达里程计的精度,对于当前量产的固态激光雷达而言,受制于有限的FOV,测距精度较差,抖动,以及多变的标定场景等问题,难以适配鲁棒且高精度的激光里程计用于外参标定。

1. 导言:动机与这项成果的优势

对于拥有惯导的自动驾驶车辆而言,激光雷达到惯导/车体(以下简称激光雷达外参自标定)的方法对后续的感知、定位等下游应用具有非常重要的意义。对于这一问题,最容易想到的办法是同时跑激光里程计与惯导的里程计,并使用手眼标定的方法寻找这外参。这个方法最主要的问题是标定精度受制于激光雷达里程计的精度,对于当前量产的固态激光雷达而言,受制于有限的FOV,测距精度较差,抖动,以及多变的标定场景等问题,难以适配鲁棒且高精度的激光里程计用于外参标定。

此外还有另一类激光雷达外参自标定的工具,它们将所有单帧点云通过外参和惯导里程计投影回世界坐标系。假设惯导里程计和激光雷达外参都非常精准,那么投影回世界坐标系得到的局部地图应该拥有相当高的质量,并且最大限度得反映真实世界的场景。当然前提是只能在惯导状态好的场景下使用才能完成对外参的优化。这个想法的代表作的有2015年发布的开源项目lidar align。然而这项成果对激励轨迹有非常高的要求,仅适合无人机、手持式设备的激光雷达自标定场景,而并不适合在自动驾驶车辆上使用。本文介绍2019年发布在《Remote Sensing》上的一项激光雷达外参自标定成果:FeatCalibr,也是属于这一类。在作者的实践中也是一款比较实用的激光雷达外参自标定基线方案。此外它提供了MATLAB代码,到手改改数据接口即可使用,非常值得学习和应用。这项工作的主要优点包括

  • 对标定场景没有设定,可以在自然场景下执行激光雷达标到车体(惯导)等位姿传感器
  • 通过三维几何特征的使用,可以充分激励各个标定参数,解决自动驾驶车辆运动受限,传感器自标定激励困难的问题
  • 通过多尺度方法的引入,提升了标定算法对初始参数的鲁棒性的同时不损失标定精度。在仿真数据以及较大的初始化误差的条件下仍然可以达到平移量毫米级,旋转量0.1deg级别的精度。同时实验表明这款标定算法的结果也具有较好的一致性。是一款值得研究的激光雷达到位姿传感器自标定的算法基线。

2. 方法与流程:


程序输入:


  • 激光雷达单帧点云image.png,其中image.png代表第个index的点云在雷达坐标系image.png下的位置,m代表一帧中的点云个数,代表点云帧数。

  • 惯导/车体姿态数据image.png,其中image.png代表世界坐标系,image.png代表惯导或者车体坐标系。这个输入需要尽可能保证精度(比如GNSS无遮挡,RTK状态佳),否则优化过程中误差会被吃进外参
  • 初始激光雷达到车体(或惯导)的外参image.png(需要一定程度得接近,比如从数模中获取。因为优化局部地图的这类自标定方法需要借助邻近点云的信息,有点像ICP,对初始化比较敏感)
  • 其他配置参数:降采样尺度,最大循环次数,tolerance等优化器设置

计算流程:如论文中的图片所示

640.png


程序输出:优化的外参(可以支持spatial-temporal标定)


2.1. 局部地图构建:



局部地图的构建非常简单,直接把每一帧雷达坐标系下所有点image.png都投影到世界坐标系下获得image.png就可以了。一般以起始时间的车体坐标系作为世界坐标系。首先对于每一帧点云中的每一个点,获取它的时间戳,然后使用这个时间戳对惯导/车体姿态数据进行插值,获取当前时刻惯导在世界坐标系下的位姿image.png,根据当前外参image.png可以得到image.png

这样不仅可以将temporal作为变量引入标定流程,同时排除了运动畸变对激光雷达外参标定的影响。通过单纯堆叠点云,就可以获得局部地图:image.png

这样局部地图也就成为了受外参控制的变量。外参的变化会对局部地图的质量造成影响。那么接下来的问题就变成了如何量化得评估地图的质量并构建损失函数


2.2. 特征构建与局部地图质量的评估:


对地图质量评估的基本思路是基于采样点的邻近点计算出的局部特征构建损失函数,通过非线性优化器优化外参,从而最小化损失函数,使地图质量达到最优。


2.2.1. 降采样


本文使用体素滤波的方式对局部地图进行降采样。对局部地图进行降采样的目的主要有以下几点


  • 使得采样更加均匀,避免因为单帧点云远近分布不均以及不规则的运动使得地图某些地方稠密,其他地方稀疏,对局部地图质量的量化评估造成不良影响
  • 降采样去除微小的目标,避免其对标定过程造成影响
  • 可以为标定的流程提速,减少需要处理的点数


记原始的局部地图进行体素滤波降采样之后的地图为image.png。整个标定过程都是对降采样后的地图进行评估以及优化外参。


2.2.2. 基于局部特征的损失函数构建


为了描述被采样的点image.png的局部特征,基于该点领域image.png计算三维协方差矩阵(文中也称三维结构张量),并计算它们的特征值image.pngimage.png 。特征值可以辨别出以下的特征:


  • 一维(直线)特征:image.png,这表明该点邻域中的点云朝一个主轴分布

  • 二维(平面)特征:image.png, 这表明该点邻域中的点云朝两个主轴分布

  • 三维特征:image.png,这表明该点领域中的点云在三维空间中随机,均匀分布


基于三维结构张量的特征值,本文提出了以下一些损失函数构建方法:

  • 线性:image.png
  • 平面度:image.png
  • 圆柱度:image.png
  • 各向同性:image.png
  • 各向异性:image.png
  • 特征熵:image.png
  • 曲率变化:image.png


根据标定场景的不同,选择不同的损失函数,比如对于平面特征较多的场景选用平面度作为损失函数,对于拥有较多连续平面的场景选用曲率变化与圆柱度。文中认为通用的选择为圆柱度,各向同性与特征熵,不过一般标定都会选择比较有利的场景进行,还是要根据实际情况进行调整和测试来达到最好的标定效果。假设可供选择的特征集合记作image.png,对降采样后的局部地图构建损失函数

image.png

通过最小化损失函数我们可以最大化构建的局部地图质量,获得对应的优化的外参。


2.3. 影响鲁棒性的问题与对应的tricks:


原文认为两大因素会影响对算法鲁棒性的影响


  1. 当外参得到优化的过程中,局部地图的质量也在逐渐提高,地图变得越来越清晰和“紧凑”,导致降采样后的点数量会随着优化的循环数量变得越来越少,尤其在最初的几轮优化
  2. 标定场景和选择的特征不完全符合。比如选择用平面度来构建局部地图质量的损失函数,而场景中出现了很多圆柱形的杆子。此外,点云中的一些噪点也有可能会对标定造成影响。
  3. 由于初始化和体素滤波降采样的引入带来的问题:如果采样率很高但是标定参数的初始估计很差,那么程序容易像ICP一样容易陷入局部最优,对不同的初始化不鲁棒;但是当采样率很低,地图比较稀疏时,标定结果可能会更加鲁棒,但是损失一定的精度


针对这两个问题,文中提出以下三个tricks:


  1. 要在每一个循环中都确保采样点的数量都相同:通过对每个点的特征值进行排序并选取排序靠前的若干个点来计算损失函数。以此来保证每次优化时采样点的个数都是相同的,并且去除场景中不那么符合预设的特征物
  2. 为了增强鲁棒性,降低噪点和不符合场景预设的点带来的影响,我们可以使用鲁棒核函数构建M-estimator。当标定场景不是那么符合我们的预设的损失函数时,M-estimator可以对离群特征点进行过滤并压制离群点带来的影响。比如原文中使用的Huber-loss


640.png

其中是一个优化参数。以此构建鲁棒的损失函数

image.png

这在各大优化库中也是非常容易实现的,也可以作为程序的一项可调参数进行调节和测试。

  1. 采用多尺度方法应对降采样带来的问题。文中对尺度的定义为降采样过程中单个体素的大小。顾名思义,也就是换个采样率多标几次:每次优化器收敛之后,就降低采样时的体素大小(提升采样率)再开启新一轮优化。这样就实现了初期不那么容易陷入局部最优,后期可以提升精度的效果。文中实验表明一般固定优化了几次降采样率之后标定结果将不再提升,整个标定过程可以收敛并结束。

3. 实验设计与结果



本文的实验同时具有仿真和实际的户外场景测试。设计仿真实验来分析不同损失函数对于自标定任务的适应程度,标定算法的边界(初始值应该给的多近),以及测试多尺度方法应对初始化与降采样带来问题的可行性。其次在KITTI数据集的自然场景下尝试进行了自标定实验,并与数据集中自带的Reference Calibration进行对比。在仿真和自然场景下作者都设计了对局部地图质量的评判标准作为标定结果好坏的评判标准。


3.1 仿真实验


仿真实验的数据通过Gazebo生成,由于仿真数据拥有ground truth,可以初步验证算法的精度,算法容忍误差的边界以及文中提出的多尺度方法的有效性。


3.1.1. 同一场景下不同三维几何特征标定结果评估


如图中所示,作者使用了不同三维几何特征构建损失函数进行了多次标定测试,并与基于RQE的自标定方法进行比较。结果可以发现使用采样点三维特征评估局部地图质量构建损失函数的方法拥有远好于基于RQE的自标定方法的性能,无论是精度方面还是一致性方面。同时各向异性&特征熵这俩个大特征表现出了非常好的标定性能。这也是为什么作者在前文推荐使用这两个作为通用配置的原因。

640.png


3.1.2. 算法边界


对于一个标定算法而言,“初始估计该给的多好”是一个非常有价值的话题。在量产车项目中一般机械加工精度比较有保障,算法能容忍的初始值误差边界可以小一些;而在商用车项目中有时候安装方式比较随意,如果算法不能容忍那么大的初始值误差就会没有什么意义,需要寻找其他的初始化方法带到真值附近然后再进行refine。

640.png


从图中可以看出,当初始值平移量差2m,旋转量差30度以下时,这个标定算法依然具有一定的精度。这个对大多数的激光雷达外参自标定需求来说相信应该都是足够的了。当然现实有传感器误差的时候还是要比仿真数据差不少的,这个看看就好。


3.1.3. 降采样与多尺度方法带来的提升


为了更加直观的展示降采样尺度对标定过程带来的影响,以及多尺度方法带来的裨益:

640.png


从图中可以看出:当降采样幅度比较剧烈的时候,算法可以容忍很大的初始化误差,但是会损失标定精度;当降采样率比较低的时候,算法的精度会更高,但是就不能容忍很大的初始误差了。而文中提出的多尺度方法却完美解决了这个问题:它同时保证了算法能容忍较大的初始化误差的同时,保证了标定结果的准确性。


3.2. 真实场景测试


本文在室内场景和KITTI数据集的户外大场景进行了测试,将标定结果和基于标志物的激光相机联合标定方法(TC)[1]/基于RQE的自标定方法(RQE)[2]进行对比。作者设计了一个评价标准:当外参完成优化之后生成最终的局部地图,并选取不同方向的六个平面(地上,天花板以及四周),来评价哪个方法产生的外参拥有最薄的平面(也即最佳的局部地图质量)。为了量化得进行评估,作者选取这些平面附近的点计算平均点面误差作为标定精度的评估方式。


3.2.1. 室内,小规模数据


在室内场景中使用手持式设备采集数据并进行标定。可以发现线性度与平面度两个特征基本无法用于标定;在所有特征中使用各向异性和特征熵的表现较好;同时在室内场景标定成功的情况下,Feat Calibr生产出来的外参构建的局部地图质量要远远超过TC与RQE的方法。

640.png


除此之外作者挑选了表现最优秀的各向异性特征,与基于RQE的自标定方法一起评估了标定结果的精度和一致性,如下图所示:

640.png


结果可以发现,FeatCalibr对比RQE的方法具有很高的一致性。


3.2.2. 户外,大场景自标定测试


文章还在KITTI数据集上进行了测试,在数据集中的Reference Calibration (RC)的基础上在三个旋转方向注入了5°的误差,以及在平移量上手动添加了5cm的误差。最后的标定结果对比RC以及同场景下使用基于RQE的自标定方法跑出来的结果进行对比的结果如下图所示:

640.png


可以发现基于各向异性特征获得的标定结果产生的局部地图质量评估获得了和Reference Calibration接近的局部地图质量,并远超基于RQE的自标定方法。但是局部地图质量并不是一个值得被认可的评估方式。作者还是单独展示了标定结果:如下图所示,可视化多次的标定结果可以发现,基于RQE的方法在Y方向(高度方向)误差很大。可能是因为缺乏激励的原因,而本文的方法可以获得这个方向的标定结果。roll和pitch的标定结果和KITTI数据集有较大的不同,但是多组标定值的中位数和KITTI的reference差不超过1°。由此说明了这款自标定算法的可用性。而且从论文中看的局部地图质量也是足够感知,建图与激光定位等下游在多数场景下使用了。

640.png


参考



[1] Hillemann, M.; Jutzi, B. UCalMiCeL–Unified intrinsic and extrinsic calibration of a Multi-Camera-System and a Laserscanner. ISPRS Ann. Photogramm. Remote Sens. Spat. Inf. Sci. 2017, 4, 17–24.

[2] Sheehan, M.; Harrison, A.; Newman, P. Self-calibration for a 3D laser. Int. J. Robot. Res. 2012, 31, 675–687.


原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA

相关文章
|
8月前
|
小程序 数据处理
主流测绘仪器以及数据后处理软件教程
主流测绘仪器以及数据后处理软件教程
150 1
|
1月前
|
机器学习/深度学习 存储 数据采集
智能光栅光片显微成像技术的LabVIEW解决方案
智能光栅光片显微成像技术的LabVIEW解决方案
21 4
|
前端开发 计算机视觉
开源人体动作识别OpenPose的安装与测试
人体关键点检测对于描述人体姿态,预测人体行为至关重要。因此人体关键点检测是诸多计算机视觉任务的基础。其在动作分类,异常行为检测,以及人机交互等领域有着很广阔的应用前景,是计算机视觉领域中一个既具有研究价值、同时又极具挑战性的热门课题。
2645 0
|
9月前
|
传感器 机器学习/深度学习 算法
【姿态解算】基于扩展卡尔曼滤波九轴传感器姿态解算研究附代码
【姿态解算】基于扩展卡尔曼滤波九轴传感器姿态解算研究附代码
|
传感器 机器学习/深度学习 人工智能
CVPR 2023 | 多车协作让纯视觉3D目标探测媲美激光雷达
CVPR 2023 | 多车协作让纯视觉3D目标探测媲美激光雷达
171 0
|
定位技术
高分、环境等国产遥感卫星影像的获取方法
本文介绍高分(GF)与环境(HJ)等主要国产卫星遥感数据的免费下载(包括批量下载)方法~
682 2
高分、环境等国产遥感卫星影像的获取方法
|
传感器 机器学习/深度学习 编解码
激光雷达与视觉联合标定综述!(系统介绍/标定板选择/在线离线标定等)
由于2D识别的成功,论文引入了一个大型基准,称为OMNI3D,重新审视了3D目标检测的任务。OMNI3D对现有数据集进行了重新利用和组合,生成了234k张图像,标注了300多万个实例和97个类别。由于相机内参的变化以及场景和目标类型的丰富多样性,这种规模的3D检测具有挑战性。论文提出了一个名为Cube R-CNN的模型,旨在通过统一的方法在摄像机和场景类型之间进行泛化。结果表明,在更大的OMNI3D和现有基准上,Cube R-CNN优于先前的工作。最后,论文证明了OMNI3D是一个强大的3D目标识别数据集,表明它提高了单个数据集的性能,并可以通过预训练加速对新的较小数据集的学习。
激光雷达与视觉联合标定综述!(系统介绍/标定板选择/在线离线标定等)
|
机器学习/深度学习 传感器 存储
2022最新!视觉SLAM综述(多传感器/姿态估计/动态环境/视觉里程计)(下)
论文调查的主要目的是介绍VSLAM系统的最新进展,并讨论现有的挑战和未来趋势。论文对在VSLAM领域发表的45篇有影响力的论文进行了深入的调查,并根据不同的特点对这些方法进行了分类,包括novelty domain、目标、采用的算法和语义水平。最后论文讨论了当前的趋势和未来的方向,有助于研究人员进行研究。
2022最新!视觉SLAM综述(多传感器/姿态估计/动态环境/视觉里程计)(下)
|
传感器 机器学习/深度学习 数据采集
2022最新!视觉SLAM综述(多传感器/姿态估计/动态环境/视觉里程计)(上)
论文调查的主要目的是介绍VSLAM系统的最新进展,并讨论现有的挑战和未来趋势。论文对在VSLAM领域发表的45篇有影响力的论文进行了深入的调查,并根据不同的特点对这些方法进行了分类,包括novelty domain、目标、采用的算法和语义水平。最后论文讨论了当前的趋势和未来的方向,有助于研究人员进行研究。
2022最新!视觉SLAM综述(多传感器/姿态估计/动态环境/视觉里程计)(上)
|
机器学习/深度学习 传感器 存储
最新综述!分析用于实时车载激光雷达感知的点云深度学习表示(空间结构/光栅化/坐标系)
随着帧速率、点云大小和传感器分辨率的增加,这些点云的实时处理仍必须从车辆环境的这张日益精确的图片中提取语义。在这些点云上运行的深度神经网络性能和准确性的一个决定因素是底层数据表示及其计算方式。本文调查了神经网络中使用的计算表示与其性能特征之间的关系,提出了现代深度神经网络中用于3D点云处理的LiDAR点云表示的新计算分类法。使用这种分类法,对不同的方法家族进行结构化分析,论文揭示了在计算效率、内存需求和表示能力方面的共同优势和局限性,这些都是通过语义分割性能来衡量的。最后,论文为基于神经网络的点云处理方法的未来发展提供了一些见解和指导。
最新综述!分析用于实时车载激光雷达感知的点云深度学习表示(空间结构/光栅化/坐标系)