OpenCalib是一个专为自动驾驶设计的多传感器标定工具箱,涵盖了从手动到自动的多种标定方法。它提供了高效、灵活的标定工具,如标定板设定工具,支持多种标定板检测,如棋盘、圆板等,并减少了OpenCV库的依赖。OpenCalib还实现了摄像头、激光雷达、IMU等传感器的精确标定,支持工厂标定和售后标定,并提供了在线标定工具。此外,通过Carla平台仿真生成多传感器标定基准数据集,以低成本获得复杂场景数据,验证标定算法准确性。OpenCalib在自动驾驶领域的应用,提高了标定效率和精度,促进了自动驾驶技术的发展。
2022年5月30日上传arXiv的论文“OpenCalib:AMulti-sensorCalibrationToolboxforAutonomousDriving“,作者来自商汤科技和上海AI实验室。
已经介绍了手动标定、无目标标定、基于目标的标定和自动标定等。
工厂标定通常是车辆生产的最后一道工序。标定设备主要由多个标定板和四轮定位组成。车辆四轮定位完成后,标定开始,并通过标定板计算传感器之间的姿态关系。这里提供了六种类型的标定板,标定板识别程序消除了OpenCV库的依赖性。不同的环境下的识别性能非常高。
1)标定板的设定工具
标定板的姿态与车辆传感器安装的位置和角度有关,因此开发一种工具,可以自动生成标定板放置的最佳位置和角度。同时,该工具还可以根据车辆的传感器方案生成标定板有效的放置姿态范围。此外,如果已确定生产线环境,该工具还可以自动确定车辆的传感器方案是否适合当前标定设置。
下图显示了该工具的操作界面:
2)标定板检测
主要介绍可用于生产线的五种标定板的角点检测过程。五种标定板是棋盘、圆板、竖板、aruco标记板和圆孔板。
对于生产线上的(水平校准板)棋盘(通常2.5米宽),角点检测过程首先选择初始阈值对图像进行自适应二值化。然后执行扩张操作,分离每个黑色四边形(quadrilateral)的连接。由于图像边缘没有棋盘转角,因此图像的边缘设置为白色。遍历图像,黑点设置为0,白色为255,如果八个区域的点为黑色,将获得黑色块的边线。然后将多边形拟合到黑色边界。
通过面积约束、矩形判断、正方形判断等一系列过滤条件过滤出候选棋盘区域,对候选正方形进行聚类得到粗糙的角点,最后对检测的角点进行结构化判断。例如,是否形成面积相同的等腰(isosceles)直角三角形,判断两点的斜率等,并输出最终的角点检测结果。下面两个图显示了棋盘标定板的检测过程和检测结果:
圆形标定板可以非常精确,因为可以使用圆上的所有像素,减少图像噪声的影响。在多个角点漏检的情况下,冗余角点信息可用于补全不完整的角点,不影响标定过程。
标定过程:首先对标定图像执行自适应阈值二值化,然后检测校准二值图像的轮廓,从图像轮廓集中提取圆,并获得一组多个圆。通过判断轮廓像素到轮廓中心的距离,如果最大距离和最小距离之间的差值满足阈值,则认为轮廓是一个圆。圆中心点的颜色记录检测圆是黑还是白。通过Ransac提取所有圆心的线段,提取垂直线,并根据斜率范围获得垂直线。根据四个约束过滤条件,得到黑色圆的线段去确定标定板中心的位置。
平行的黑色线很好地确定了模式的位置。根据黑色圆的半径,预测白色圆的半径和线段的圆间距,最后得到标定板上所有圆的中心。
垂直板对多个角点未命中也具有鲁棒性。首先对标定图像进行灰度化,然后检测图像中的所有角点,并通过随机选择点建立包含角点的线模型。根据点的密度对每个线模型进行聚类和分割。然后找到三条平行且间距相等的线组合。对于每条线组合,将左右线的角点投影到中间线上,并通过投影线的角点位置与标定板的模式特征之间的距离进行筛选和分割,获得正确的角点。
ArUco标记板的角点检测过程:首先对RGB图像进行灰度化,然后使用局部自适应阈值的方法对图像进行二值化。然后,通过连通域搜索找到候选轮廓,并根据边缘数限制的过滤条件对轮廓进行筛选。然后,完成基于轮廓点集的多边形拟合。拟合后的多边形符合凸四边形,与图像边缘有一定距离,轮廓不重复。
在此筛选之后,对凸四边形的角点进行排序可以防止交叉顺序(cross-order)的发生。过滤距离过近的四边形。然后,通过径向变换(radialtransformation)从四边形中提取外矩形,用灰度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个点(两个在左边,两个在右边)。根据这四个选择点,可以拟合出两条直线,然后计算出这两条直线交点作为消失点。单应矩阵的计算,可以通过摄像头测距模型计算实际物理坐标,然后进行计算。
然而,这种方法有一个缺点,因为rollangle的影响将导致横向物理距离的计算错误。为了纠正这一错误,引入了rollangle评估线。用户拖动两个点使直线比地面短。可通过平行于具有相同垂直距离的直线来确定rollangle。可以通过rollangle来修正摄像头模型的误差,最后计算出所选4个像素的实际物理距离,计算摄像头到地面的单应矩阵。
如图所示是标定工具的操作界面和需要输入的信息:
如果要验证标定的准确性,可以将选定点的实际测量距离与测量结果进行比较。如果差值很小,则认为标定合格。
传统的标定方法往往是离线的,需要用手持标定板进行一系列的操作,耗时费力。在线标定方法是指在系统运行开始时或系统运行期间完成标定。该方法不需要手持式标定板,也可以确保足够的精度。
因此,calibrationtoolbox为用户提供了三种在线标定工具,用于在驾驶过程中自动标定车辆。同样,具有强烈且易于识别的特征(如树木和交通标志)的道路场景将产生更好的校准结果。
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平台(Carlaplatform)传感器仿真库的传感器特征集开发,Carla平台是一个用于自动驾驶的开源仿真框架。以激光雷达为例,根据评价实验的结果,按照实际数据总结出的规律,模拟不同场景中传感器的检测性能、定时特性和harness分布。此外,天气条件也会对不同的激光雷达模型产生不同的点损失和噪声影响,这也会反映在模拟生成的点云数据中。
基于建立的传感器仿真库,完成不同标定场景下的多传感器数据仿真,并最终生成标定基准数据集。在仿真框架中,控制自车在具有明显周边参考物(如车道线、路灯、墙和汽车)的环境中沿特定轨迹行驶,同时记录特定标定所需的数据。不同传感器的数据生成频率也不同,如下表所示。
为保证数据的正常记录,仿真平台的系统频率应高于任何传感器的记录频率。
多标定场景仿真图如下图所示:(a)摄像机内参标定仿真场景,图(b)在线标定仿真场景,图(c)为雷达外参标定仿真场景。
仿真数据集的优点是,可以以很低的成本获得复杂场景的多传感器数据,并可以提供高精度真值来验证标定算法的准确性。
实验结果如下:
摄像头-激光雷达标定
激光雷达-IMU标定
激光雷达-激光雷达标定
以上内容由58汽车提供。如有任何买车、用车、养车、玩车相关问题,欢迎在下方表单填写您的信息,我们将第一时间与您联系,为您提供快捷、实用、全面的解决方案。
原创文章,作者:58汽车,如若转载,请注明出处:https://car.58.com/7184636/