2022年5月30日上传arXiv的论文“OpenCalib: A Multi-sensor Calibration Toolbox for Autonomous Driving“,作者来自商汤科技和上海AI实验室。
准确的传感器标定是实现智能车辆多传感器感知和定位系统的先决条件。传感器的内参标定是获取传感器内部的映射关系,外参标定是将两个或多个传感器转换为一个统一的空间坐标系。大多数传感器在安装后需要进行标定,以确保传感器测量的准确性。
为此,OpenCalib,一个calibration toolbox,其中包含一组丰富的各种传感器标定方法。OpenCalib涵盖手动标定工具、自动标定工具、工厂标定工具以及针对不同应用场景的在线标定工具。同时,为了评估标定精度,进而提高提高算法精度,发布了相应的基准数据集。
本文介绍该toolbox的各种特点和标定方法。估计这是第一个开源的自动驾驶标定代码库,其中包含相关的全套标定方法。GitHub上公开代码:https://github.com/PJLab-ADG/SensorsCalibration。
自动驾驶作为一个复杂的系统,它需要许多模块协同工作。由于不同传感器各有优缺点,融合多个异构传感器成为实现鲁棒、准确感知和定位能力的关键。IMU(惯性测量单元)、GNSS(全球导航卫星系统)、激光雷达(光检测和测距)、摄像头、毫米波雷达和轮速计是自动驾驶系统最常用的传感器。
IMU是一种惯导传感器,可以在短时间内提供高置信度的相对位移和航向角变化。众所周知,GNSS可以为车辆提供米级精度的绝对定位。然而,GNSS信号的质量不能始终得到保证。因此,在自动驾驶领域,GNSS的输出通常与IMU和汽车传感器(如轮速计、方向盘角传感器等)融合。
摄像头具有提取环境详细信息的强大能力。除了颜色,还可以提供纹理和对比度数据,可靠地识别道路标记或交通标志,准确检测和识别静止和移动目标。因此,无论使用哪种传感器方案,通常都会使用摄像头。依靠功能强大的处理器、算法和神经网络进行图像处理的技术相对成熟。尽管有这么多优势,但摄像头无法在自动驾驶感知系统中“做老大”。
不仅是照明环境限制,即在恶劣的环境条件下,如大雪、大雾和黑暗中,摄像头的可靠性受到限制;而且获得的数据或图像是2D,没有直接的深度信息。图像算法获得的信息深度不够准确。
激光雷达具有精度高、测距远(相比深度传感器)、实时性好、信息收集丰富等突出优点。同时,具有较好的环境适应性,不受光照的影响。然而,激光雷达的成本相对较高,而且通常很昂贵。另一方面,缺乏颜色信息,并且对于可能产生反射或透明度的目标无法准确检测。采集的数据需要极高的算力,扫描速度相对较慢。
毫米波雷达也是一类技术相对成熟的环境传感器。由于其已经大规模生产,相对便宜,对周围车辆的检测精度高,并且对某些材料敏感。同时,它反应迅速,操作方便,能适应恶劣天气。然而,雷达的分辨率相对较低。它不能判断被识别目标的大小(特别是高度),也不能很好感知行人。毫米波雷达无法精确做到对所有周围的障碍物建模。
由于单个传感器的优缺点,多传感器融合系统的目的是提高信息冗余度和信息互补性,从而充分保证自主驾驶的安全性。
一辆车会安装多个传感器,需要通过传感器标定来确定相互之间的坐标关系。因此,传感器标定是自动驾驶的基本要求。传感器标定可分为两部分:内参标定和外参标定。内参决定传感器的内部映射关系。例如,摄像头标定内参是焦距和镜头畸变;利用陀螺仪(gyroscope)和加速度计(accelerometer)的零偏、尺度因子和安装误差对IMU内参进行标定;激光雷达内参是内部激光发射器坐标与激光雷达坐标装置之间的转换关系。外参确定传感器与外部坐标系之间的转换关系,包括用于旋转和平移的6自由度参数。
在自动驾驶的研究和开发中,传感器之间外参标定是常见的。因为获得的数据类型不同,不同传感器之间标定的最大问题是如何测量最佳值。传感器对的不同,标定误差最小化的目标函数也会不同。外参标定方法通常可分为无目标(targetless)标定和基于目标(target-based)标定。前者是在自然环境中进行的,几乎没有限制,不需要特殊目标;后者需要一个特殊的控制场,并有一个真实值(GT)目标。
目前,有一些与传感器标定相关的开源项目,如Kalibr、Autoware等,还有更多特定标定类型的开源项目,如激光雷达之间和激光雷达-IMU的标定。OpenCV还提供了一些标定工具。然而,目前还没有针对自动驾驶不同应用场景的完整calibration toolbox。
基于目标的标定方法广泛应用于传感器标定过程中。基于目标的方法通常需要手动标定目标,如棋盘、多边形棋盘,这两种模式传感器都可以轻松检测。此外,基于目标的方法可以使用有关目标的先验知识,增强标定结果。目标方法比无目标方法更精确。
传感器的内参标定通常采用目标法。常用的摄像头内参标定方法是Zhang的棋盘法。除了棋盘格图案外,还有一个常见的圆网格,用于标定摄像头内参。一些激光雷达内参标定方法是通过框或面墙执行的。多个传感器之间的外参标定必定常通过基于目标的方法进行,如工厂标定、标定屋。
在某些情况下,基于目标的标定方法是不切实际的,这导致了无目标标定方法的发展。无目标方法比基于目标方法更方便,因为不需要设定特定目标。这些方法使用环境特征来完成传感器数据的对应。根据信息提取方法的不同,多传感器在线标定的研究方向可分为三种方法:边缘配准法、互信息法(mutual information)和分割法。一些方法利用道路特征对多个传感器进行自动标定。
基于运动的标定方法将传感器外参标定视为手眼校定(hand-eye calibration)问题。该方法不需要传感器之间的视场重叠,通常对初始值具有较好的鲁棒性,但精度较低。只要传感器有里程计信息,这个问题就可以转化为求解齐次线性方程组问题。
这个问题有不同形式的解决方案,如四元数形式、对偶四元数(dual quaternion)形式以及螺旋(helical)运动和螺旋轴(helical axis)形式。不同形式解对应相同的方法,但与只能获得旋转标定的其他形式解相比,对偶四元数形式可以额外获得平移标定。然而,这些方法没有充分考虑测量的不确定性,导致标定精度容易受到传感器噪声的影响。
时域标定也是基于运动标定方法的一个重要组成部分。一般来说,时域标定有三种方法,包括硬件同步、双向通信软件同步和单向通信软件同步。第三种方法,通过两种方式完成,即使用每个传感器的里程计数据,通过优化的解决方案获得时域标定,或通过数据关联获得标定结果。
近年来,深度学习在处理2D和3D计算机视觉任务(如定位、目标检测和分割)方面显示出了高效性。一些工作将深度学习应用于传感器标定任务,特别是适应摄像头-激光雷达的标定问题。第一个用于激光雷达-摄像头标定的深卷积神经网络叫RegNet,基于一个监督网络回归标定参数,该网络直接推断外参。
为进一步考虑空域信息并消除内参的影响,一种几何监督网络Calibnet,通过减少密集光度误差和密集点云距离误差来进行激光雷达-摄像头标定。RGGNet则考虑黎曼(Riemannian)几何,并利用深度生成模型学习用于激光雷达-摄像头标定的隐式容差(tolerance)模型。
相比之下,针对内参标定问题,基于学习的方法要少得多。DeepCalib提出一种基于CNN的方法,利用自动生成的大规模内参数据集对宽视野摄像机进行内参标定。由于摄像机内参标定问题和高精度需求之间缺乏直观的空间关系,基于学习的方法显示出较少的优势。
除了用于传感器标定的端到端深度学习网络外,相关视觉任务的一些工作可以调整为标定过程的关键部分,例如消失点检测、车辆航向预测和相机姿态估计。虽然基于学习的方法利用深度学习的优势,在模型训练后无需人机交互即可更有效地进行空间特征提取和匹配,但这些方法仅限于某些传感器的标定,尤其是摄像头和激光雷达。
与非学习方法相比,大多数基于学习的方法稳定性较差,精度较低,而精度在标定任务中至关重要。因此,一般来说,深度网络通常不用于多传感器标定问题。
手工无目标标定工具
手动标定是自动驾驶车辆最简单的标定方法。虽然与其他方法相比,其原理和实现过程相当简单,但如果在这些方法上花费足够的时间,则可以获得高精度和可靠性的标定结果。早期的手动标定方法依赖于棋盘格或普通边框等目标,校准过程通常在定制的标定屋中进行。然而,这种复杂的设置对于小型自动驾驶公司和个体来说成本显得高昂。
这个标定toolbox在无目标和任意道路场景中的自动驾驶车辆提供了四种手动标定工具。显然,具有强烈且公认特征(如树木和交通标志)的道路场景将产生更好的标定结果。外参可以在用户友好的控制面板中进行调整,或者可以将键盘作为控制输入来实现标定。
1)激光雷达-摄像头标定
标定良好的场景示例如图所示(附外参、内参调整的键盘控制键表1-2):左边是外参控制板,手动完成摄像头-激光雷达标定
值得一提的是,IntensityColor按钮可以将显示模式更改为ntensity map显示模式,OverlappFilter按钮用于消除0.4m深度内的重叠激光雷达点。
2)激光雷达-激光雷达标定
3)雷达-激光雷达标定
4)雷达-摄像头标定
雷达是一种2D设备,在安装过程中尽量使其与地面平行。对于摄像头,需要找到与地面对应的单应矩阵。然后,在图像和鸟瞰图对其可视化,当对齐显示在两幅图像上时,认为校准完成。上图显示如何计算摄像头到地面的单应矩阵,在左车道和右车道各选择两个点。下图显示了雷达在图像和鸟瞰图中的投影结果。鸟瞰图中的平行线,表示车道线的方向。
基于目标的自动标定
1)摄像头标定
Zhang的方法放置不同姿势的校准板提取棋盘格的角点,并计算摄像头的内参和畸变参数。针孔模型通常用于标定摄像头的内参,但只是摄像头投影过程的简化模型。实际的摄像头镜头组更为复杂,没有绝对的光学中心。由于摄像机内部结构复杂,缺乏一种有效的摄像头内参标定的定量评价方法。
由于每个摄像头镜头的畸变程度不同,因此可以通过摄像头标定来校正镜头畸变,以生成校正的图像。校正的图像对于后续感知或与其他传感器的联合标定至关重要。因此,有必要开发一种失真的定量评估方法,以确保失真标定的准确性。提供一个定量评估摄像头失真的程序(参考论文“High-precision camera distortion measurements with a “calibration harp“),易于实现,自动化,用于执行摄像头畸变评估。
失真评估的目标由钓鱼线和半透明纸组成。畸变参数评估流程图如图所示:首先,摄像头用于捕获目标的图像,目标填充整个图像。接着基于摄像头标定参数对该图像进行去失真,以获得校正的图像。然后,直线段检测算法使用Canny描述符在校正的图像中提取直线段。由于用NMS的原因,线段是不连续的,线性插值用于获得连续直线。高斯采样后,得到多个线性采样点。最后,用LS法得到拟合直线。
根据如下公式,得到采样点到拟合直线的均方根距离和最大误差距离,即评价畸变参数质量的度量指标。回归线可以表示为α∗x+β∗y−γ = 0,这里假设给定L条直线。
2)激光雷达-摄像头标定
基于目标的激光雷达和摄像头标定方法依赖于观测放置在传感器系统前面的人工标定目标,同时由两个传感器获取特征点的位置。对于激光雷达和摄像头的标定,现有的方法一般是先标定摄像头的内参,然后标定激光雷达和摄像头的外参。
如果在第一阶段没有正确校准摄像头的内参,则很难精确校准激光雷达-摄像头的外参。为了解决现有方法中摄像机内参标定不准确对激光雷达到摄像机外禀参数的影响,提出一种联合标定方法,细节见论文“Joint camera intrinsic and lidar-camera extrinsic calibration”,arXiv 2202.13708,Feb,2022,开源代码位于https://github.com/OpenCalib/JointCalib.
设计了一种新的标定板图案,如图所示:其中包含一个用于标定内参的棋盘和几个用于定位激光雷达点云的圆孔。
首先用Zhang的方法校准摄像头初始内参和摄像头初始外参;然后,根据这些参数和标定板尺寸计算图像的2D圆中心点。通过提取圆心在激光雷达的位置,利用激光雷达-摄像头的标定参数将圆心3D点投影到图像平面上。计算的2D点和投影的2D点形成多个2D点对。用这些点对之间的欧氏距离来细化标定参数。同时,在优化过程中加入棋盘角点的3D-2D点重投影约束条件。
其目标函数定义如下:
无目标的自动标定
1)IMU 航向标定
IMU航向标定旨在纠正IMU与车辆之间的前向安装误差。因此,我们仅标定IMU的偏航角补偿以对齐方向,表示为γoffset。从每个时间戳的行驶路线导出车辆的方向,即γgd。估计的驾驶方向和测量的IMU偏航角γIMU之间的偏移量就是标定结果。
基于传感器定位数据,采用b-spline方法对驾驶路线进行平滑处理。此外,并非使用一次行驶行程的所有数据,仅选择直线行驶路线进行以下标定。删除快速改变驾驶方向(如U形转弯)的数据,可以获得实时真实偏航角的精确近似值。
标定公式即
建议如图所示录取直线驾驶数据做标定:
2)激光雷达-摄像头标定
激光雷达和摄像头的精确标定是自动驾驶中最常见的标定之一。基于单目视觉的感知系统以较低的成本获得令人满意的性能,但不能提供可靠的3D几何信息。摄像头-激光雷达融合感知是为了提高性能和可靠性。摄像头与激光雷达融合的前提和假设是摄像头与激光雷达之间的精确标定,包括摄像头内参和摄像头与激光雷达的外参。
激光雷达和摄像头精确标定后,由于车辆的长期运动以及温度等其他因素的影响,标定参数将逐渐变得不准确。由于感知融合算法对标定参数的准确性非常敏感,会严重降低感知融合算法的性能和可靠性。在这一点上,通过标定室或手动进行重新标定既麻烦又不切实际,因此开发一种工具来自动标定道路场景中的激光雷达和摄像头,这种方法的具体细节见论文“CRLF: Automatic Calibration and Refinement based on Line Feature for LiDAR and Camera in Road Scenes”,arXiv 2103.04558,Mar,2021。
文章提出一种在常见道路场景中对激光雷达和摄像头进行外参标定的方法。该方法完全自动化,效率和准确度也相对较高。首先,利用激光雷达和摄像机采集一组道路场景数据,然后分别从图像和点云中提取车道线和路标等线性特征。如图所示:通过BiSeNet-V2从图像中提取车道线和道路标杆,这些同时通过灰度图和几何方法从点云中提取。
随后,设计一个成本函数来优化初始标定外参,并确保误差在可接受的范围内。可以直接从类别标签“pole”和“road lane”获取来自杆子Qpole和道路车道线 Qlane的像素。结合分割结果,可以得到在像素坐标上两个二值掩码Mline,定义如下:
从图像和点云中提取线特征后,给出几个成本函数,在给定外部参数(r,t)的情况下,衡量图像和点云的相关性。对掩模Mline应用距离逆变换(IDT,inverse distance transformation),避免在后续优化过程中重复的局部极大值。生成的高度图Hline如下:
投影成本函数如下:
该成本函数越大,两个数据域的语义特征匹配越好。如图示出掩模和图像的标定投影结果:
3)激光雷达- IMU标定
激光雷达和IMU的标定也是自动驾驶常用的标定方法之一,其标定精度对激光雷达测绘和定位模块有很大影响。通常,激光雷达的外参标定到IMU时,通过判断激光雷达的局部地图是否良好来判断校准精度。标定过程是通过滑动窗构造的局部地图,求解从激光雷达到IMU的外参。
该标定工具的开发是根据论文“Balm: Bundle adjustment for lidar mapping,” IEEE RAL, 2021。通过最小化协方差矩阵特征值,特征点分布在局部地图的同一条边或平面。该方法通过最小化协方差矩阵的特征值来最小化特征点到特征平面或边线的距离和,并进行优化达到从激光雷达到IMU的外参标定目的。BA算法最小化每个平面特征点到平面的距离,其公式如下:
优化后的特征点位置和特征法向量(方向向量)可以写为姿态T的函数,因此只有姿态T需要优化。adaptive voxelization可以加速搜索特征对应。假设不同扫描的粗略初始姿态可用(例如,从LOAM里程计得到),从默认大小(例如1m)重复对3D空间进行体素化:如果当前体素的所有特征点(来自所有扫描)位于平面或边上(例如,通过检查点协方差矩阵的特征值),则当前体素将与包含的特征点一起保存在内存中;否则,当前体素将分成八份,并继续检查每个八分之一,直到达到最小尺寸(例如,0.125m)。adaptive voxelization生成体素图,其中不同的体素可能具有适应环境的不同大小。
该方法可以获得激光雷达在世界坐标系中任何时间t的姿态,并且可以通过以下公式获得所需的粗略初始外参:
由于偏移量对系统的影响随时间而逐渐增大,因此局部制图(local mapping)优化进一步校正偏移量。滑动窗的第一个帧表示为P帧,当前帧表示为O帧。根据坐标链规则,激光雷达坐标之间的转换关系为
据此构建局部地图。建立局部地图后,进一步搜索,每个激光点云帧与当前帧到后续帧局部地图之间的对应关系。
建议根据下图收集数据:标定的自动驾驶车,按照8字轨迹驾驶
标定场景有几个要求:a)确保地面足够平坦;b) 确保周围有足够的特征,如墙壁、车道线、电线杆、静止车辆等;c) 标定的车辆按图所示轨迹循环三次,车速保持在10km/h;d) 尽量不要周围有动态目标,如车辆等。
如图显示了激光雷达到IMU映射的特征提取结果:
4)激光雷达-激光雷达标定
在自动驾驶中,激光雷达扮演着重要的角色。激光雷达可以实时获取周围环境的3D结构信息。它一般可以构建自动驾驶的高精度地图,定位、障碍物检测、跟踪和预测。在自动驾驶汽车上安装单个激光雷达有时无法覆盖汽车周围区域,或者无法满足盲点监控的需要。
因此,有必要适当增加激光雷达的数量以增加可视范围(FOV)。多个激光雷达的数据融合,需要对多个激光雷达的坐标系进行外参标定,获得每个坐标的精确旋转和平移参数,以便后续数据处理。
这里给出一个多激光雷达标定工具。两台激光雷达之间的外参标定分两步实现,即地平面配准和非地面特征点的校准。首先,从地面和非地面点云中提取并分割点云。利用地面法线进行地面配准,得到转角(roll)、俯仰角(pitch)和z轴平移作为初始外参。
然后遍历变换后非地面点云的偏航角(yaw),计算两个激光雷达的最近点距离,得到最小距离的偏航角。随后,通过常规ICP(NICP)算法和基于八叉树(octree)的优化,继续提高标定精度。
在粗略标定中,激光雷达很容易在道路上采集大量的地平面信息。因此,算法的第一步是利用该特征进行粗配准。假设包含最多点的最大平面被视为地平面GP:{a,b,c,d}:
地平面用于将从属(slave)激光雷达地平面GPs与主(master)激光雷达地平面GPm对齐:
变换矩阵可用罗德里格斯公式计算。值得注意的是,当估计俯仰/横滚(pitch/roll)与实际俯仰/横滚之间的差值为±π时,可能会出现极端情况。因此,该方法需要在标定后检查平面PCs的大多数点是否在地平面上。通过上述措施,可以粗略估计pitch、roll和z。下一步是标定yaw、x和y。这样,成本函数可以简化为:
参数数量从6个减少到3个。更重要的是,可以忽略地面点。
在细化标定中,采用NICP,ICP的一种变型,可以获得更好的性能。假设由于点云的稀疏性,点云特征不明确,难以提取。NICP包含每个点的法线和扩展每个点的感受野,可以丰富点特征。此外,继续使用基于八叉树的优化来最小化姿态误差,如图所示:无点的立方体标记为绿色,反复切割立方体,蓝色/绿色立方体的体积可以测量标定的质量。
开始时,有两个点云平面PC包在一个立方体oC中。然后,用基于八叉树的方法将立方体迭代地等分为八个小立方体
立方体oC的体积计算为:
当小立方体的边长足够短时,可以近似地将点云占据的空间体积表示为蓝色立方体体积。当两个点云精确对齐时,点云占用的空间体积达到最小,蓝色立方体的体积同时达到最小。因此,问题可以转化为:
工厂标定
工厂标定通常是车辆生产的最后一道工序。标定设备主要由多个标定板和四轮定位组成。车辆四轮定位完成后,标定开始,并通过标定板计算传感器之间的姿态关系。这里提供了六种类型的标定板,标定板识别程序消除了OpenCV库的依赖性。不同的环境下的识别性能非常高。
1)标定板的设定工具
标定板的姿态与车辆传感器安装的位置和角度有关,因此开发一种工具,可以自动生成标定板放置的最佳位置和角度。同时,该工具还可以根据车辆的传感器方案生成标定板有效的放置姿态范围。此外,如果已确定生产线环境,该工具还可以自动确定车辆的传感器方案是否适合当前标定设置。
下图显示了该工具的操作界面:
2)标定板检测
主要介绍可用于生产线的五种标定板的角点检测过程。五种标定板是棋盘、圆板、竖板、aruco标记板和圆孔板。
对于生产线上的(水平校准板)棋盘(通常2.5米宽),角点检测过程首先选择初始阈值对图像进行自适应二值化。然后执行扩张操作,分离每个黑色四边形(quadrilateral)的连接。由于图像边缘没有棋盘转角,因此图像的边缘设置为白色。遍历图像,黑点设置为0,白色为255,如果八个区域的点为黑色,将获得黑色块的边线。
然后将多边形拟合到黑色边界。通过面积约束、矩形判断、正方形判断等一系列过滤条件过滤出候选棋盘区域,对候选正方形进行聚类得到粗糙的角点,最后对检测的角点进行结构化判断。例如,是否形成面积相同的等腰(isosceles)直角三角形,判断两点的斜率等,并输出最终的角点检测结果。下面两个图显示了棋盘标定板的检测过程和检测结果:
圆形标定板可以非常精确,因为可以使用圆上的所有像素,减少图像噪声的影响。在多个角点漏检的情况下,冗余角点信息可用于补全不完整的角点,不影响标定过程。
标定过程:首先对标定图像执行自适应阈值二值化,然后检测校准二值图像的轮廓,从图像轮廓集中提取圆,并获得一组多个圆。通过判断轮廓像素到轮廓中心的距离,如果最大距离和最小距离之间的差值满足阈值,则认为轮廓是一个圆。圆中心点的颜色记录检测圆是黑还是白。通过Ransac提取所有圆心的线段,提取垂直线,并根据斜率范围获得垂直线。根据四个约束过滤条件,得到黑色圆的线段去确定标定板中心的位置。
1、两条线段应平行;
2、对应的黑色圆半径相似;
3、对应黑色圆到对面直线的投影是重合的;
4、两条线段间距和黑色圆半径大小的约束。
平行的黑色线很好地确定了模式的位置。根据黑色圆的半径,预测白色圆的半径和线段的圆间距,最后得到标定板上所有圆的中心。
垂直板对多个角点未命中也具有鲁棒性。首先对标定图像进行灰度化,然后检测图像中的所有角点,并通过随机选择点建立包含角点的线模型。根据点的密度对每个线模型进行聚类和分割。然后找到三条平行且间距相等的线组合。对于每条线组合,将左右线的角点投影到中间线上,并通过投影线的角点位置与标定板的模式特征之间的距离进行筛选和分割,获得正确的角点。
ArUco标记板的角点检测过程:首先对RGB图像进行灰度化,然后使用局部自适应阈值的方法对图像进行二值化。然后,通过连通域搜索找到候选轮廓,并根据边缘数限制的过滤条件对轮廓进行筛选。然后,完成基于轮廓点集的多边形拟合。拟合后的多边形符合凸四边形,与图像边缘有一定距离,轮廓不重复。
在此筛选之后,对凸四边形的角点进行排序可以防止交叉顺序(cross-order)的发生。过滤距离过近的四边形。然后,通过径向变换(radial transformation)从四边形中提取外矩形,用灰度127的阈值对图像进行去二值化,切割图像以获得QR码区域,并用6*6网格划分QR码。最后,对相应的QR码区域进行编码,匹配基础库的QR码码本,识别相应的QR码 ID,并在标定板上获取角坐标。
圆孔板的角点检测过程主要依靠标定板上的模式匹配来提取圆。首先,根据标定板的尺寸,设计了圆孔的几何匹配掩模。然后进行二维搜索和匹配,最终得到孔内点云数最少的圆和圆心。根据标定板的位置对点云进行ROI滤波,得到标定板附近的点云。
利用有方向约束的RANSAC算法提取标定板平面。根据标定板的大小预设标定板边框,然后提取2D边框并拟合到点云中。孔掩码的初始位置是从掩码相对于边框的大小获得。在初始位置附近执行掩码2D搜索。最后,获得掩码上点数最少的圆心坐标。
AprilTag是一个视觉参照系统,可用于各种任务,包括增强现实、机器人和摄像头标定。AprilTag检测可以计算标定板相对于摄像头的精确3D位置、方向和ID。AprilTag库是用C编程语言实现的,无外部依赖关系。该库可以轻松地包含在其他应用程序中,或移植到嵌入式设备。
3)摄像头标定
在汽车生产线上批量标定的方法称为工厂标定。当车辆售出后,ADAS设备因其他原因无法正常工作时,需要对摄像头进行售后标定。通常,摄像头标定包括摄像头的消失点标定和摄像头相对地面的单应矩阵标定,以及摄像头外参标定。
标定消失点是与车身对齐的平行线视觉交点。在工厂标定中,标定板和摄像头位置是固定的。工厂标定前,需要标定的车辆与四个车轮对齐。四轮定位后,标定板相对于车身中心的坐标固定,然后用摄像头识别标定板并进行标定。然后,可以获得摄像头相对于车身坐标的姿态,这通常由PnP算法解决。
下面主要介绍消失点和摄像头对地单应矩阵的标定方法。由于寻找的消失点是平行于车身坐标的平行线交点,因此消失点的计算方法是摄像头通过标定板的直线,该直线保持与车身平行,如图所示。
根据标定板的单应矩阵,以及摄像头相对于标定板中心的水平偏移和垂直偏移,可以通过以下公式计算消失点的像素坐标
如图所示:根据标定板的实际尺寸和检测的角点,获得标定板到摄像机的单应矩阵,然后根据标定板到地面的距离获得点A和B。
下一步连接AB点和消失点,因为A-VP和B-VP是平行线,所以横坐标是相同的,纵坐标可以通过测距公式得到,然后根据4个点的像素坐标和世界物理坐标,求解地面相对于摄像头的H矩阵。
假设(px,py)是随机车道点p的投影像素坐标。根据透视原理,点p的纵向和横向摄像头测距可分别定义如下:
由于知道A点和B点之间的实际距离,可以通过上述测距公式优化焦距fx和fy,然后计算C和D的纵向坐标。最后,得到四个地面点的像素点和实际物理距离,就可以计算摄像头到地面的单应矩阵。
4)激光雷达标定
检测激光雷达圆心的3D坐标,同时知道标定板相对于车身坐标的位置。因此,可以通过三组非共线点对获得激光雷达相对于车身坐标的姿态。所以在求解时对位移参数进行约束,然后通过优化方法获得多对点。
由于激光雷达相对于车体的坐标位置相对准确,可以添加以下约束
5)售后标定
售后标定可以像生产线标定一样放置标定板,但更复杂。另一种是使用一些环境特征进行标定。首先需要两个平行于车身的参考目标,例如车道线或其他参考目标。另一种方法是放置4个参考点来模拟两条平行线。然后在平行线上有4个点(两个在左边,两个在右边)。根据这四个选择点,可以拟合出两条直线,然后计算出这两条直线交点作为消失点。单应矩阵的计算,可以通过摄像头测距模型计算实际物理坐标,然后进行计算。
然而,这种方法有一个缺点,因为roll angle的影响将导致横向物理距离的计算错误。为了纠正这一错误,引入了roll angle评估线。用户拖动两个点使直线比地面短。可通过平行于具有相同垂直距离的直线来确定roll angle。可以通过roll angle来修正摄像头模型的误差,最后计算出所选4个像素的实际物理距离,计算摄像头到地面的单应矩阵。
如图所示是标定工具的操作界面和需要输入的信息:
如果要验证标定的准确性,可以将选定点的实际测量距离与测量结果进行比较。如果差值很小,则认为标定合格。
在线标定
传统的标定方法往往是离线的,需要用手持标定板进行一系列的操作,耗时费力。在线标定方法是指在系统运行开始时或系统运行期间完成标定。该方法不需要手持式标定板,也可以确保足够的精度。
因此,calibration toolbox为用户提供了三种在线标定工具,用于在驾驶过程中自动标定车辆。同样,具有强烈且易于识别的特征(如树木和交通标志)的道路场景将产生更好的校准结果。
1)摄像头-IMU标定
摄像机和IMU之间的在线标定包括时域标定和外参标定。在线标定过程中,需要一组车辆行驶过程中的图像帧数据和IMU测量数据。在第一组帧,用跟踪相关方法执行时域标定。然后,摄像机和IMU之间的时域标定可以表示为:
在获得时域标定结果后,进行数据对齐。下一步是旋转标定,摄像头从i帧到i+1帧的旋转表示为RCi+1,IMU从i帧到i+1帧的旋转表示为RIi+1,摄像头和IMU之间的旋转表示为RIC。然后,旋转标定可以表示为:
最后一步是平移标定。将摄像头从i帧到i+1帧的平移表示为tci+1,将IMU从i帧到i+1帧的平移表示为tii+1,而摄像头和IMU之间的平移表示为tic。那么平移标定可以表示为:
2)激光雷达- IMU标定
激光雷达对IMU的在线标定类似于摄像头机对IMU的标定,用LOAM的前端作为激光雷达里程计,然后将激光雷达数据与IMU数据对齐,最后,使用类似的方法得到激光雷达对IMU的在线标定结果。激光雷达从i帧到i+1帧的旋转表示为RLi+1,IMU从i帧到i+1帧的旋转表示为RIi+1,摄像头和IMU之间的i旋转表示为RIL。然后,旋转标定可以表示为:
最后一步是平移标定。将摄像头从i帧到i+1帧的平移表示为tli+1,将IMU从i帧到i+1帧的平移表示为tii+1,而摄像头和IMU之间的平移表示为til。那么平移标定可以表示为:
3)雷达-车中心标定
主要是对雷达的偏航角进行标定。该问题分为三个步骤:粗略标定、静态目标识别和曲线拟合。在第一步中。将雷达测量数据表示为{Vi,anglei,distancei},其中Vi表示目标相对于多普勒原理测量的雷达径向速度,anglei表示目标与雷达坐标系之间的角度,distancei表示目标与汽车之间的距离。
直接在车辆前方找到目标进行粗略标定,然后雷达测量角度i就是偏航的结果。下一步是检测静态目标,因为静态目标满足以下等式
在找到所有帧的静态目标后,最后一步是拟合cos函数曲线,这样可以得到更精确的标定结果。
标定基准数据集
在对当前主流型号的激光雷达、摄像头等传感器进行大量评估实验和研究的基础上,建立传感器特征集,包括自动驾驶传感器不同技术路线和型号的检测性能和特征表达。
已经完成基于Carla平台(Carla platform)传感器仿真库的传感器特征集开发,Carla平台是一个用于自动驾驶的开源仿真框架。以激光雷达为例,根据评价实验的结果,按照实际数据总结出的规律,模拟不同场景中传感器的检测性能、定时特性和harness分布。此外,天气条件也会对不同的激光雷达模型产生不同的点损失和噪声影响,这也会反映在模拟生成的点云数据中。
基于建立的传感器仿真库,完成不同标定场景下的多传感器数据仿真,并最终生成标定基准数据集。在仿真框架中,控制自车在具有明显周边参考物(如车道线、路灯、墙和汽车)的环境中沿特定轨迹行驶,同时记录特定标定所需的数据。不同传感器的数据生成频率也不同,如下表所示。
为保证数据的正常记录,仿真平台的系统频率应高于任何传感器的记录频率。
多标定场景仿真图如下图所示:(a)摄像机内参标定仿真场景,图(b)在线标定仿真场景,图(c)为雷达外参标定仿真场景。
仿真数据集的优点是,可以以很低的成本获得复杂场景的多传感器数据,并可以提供高精度真值来验证标定算法的准确性。
实验结果
摄像头-激光雷达标定
激光雷达-IMU标定
激光雷达-激光雷达标定
本文仅做学术分享,如有侵权,请联系删文。