激光雷达相机校准器入门
激光雷达相机校准器入门
激光雷达相机校准器应用程序,能够通过估计激光雷达传感器和相机之间的刚性变换,在它们之间交互执行校准。
本主题展示激光雷达相机校准器应用程序的工作流程,以及可用于分析和改进结果的功能。校准过程的第一个也是最重要的部分是获得准确和有用的数据。有关获取数据的指南和提示,请参阅校准指南。
加载数据
要打开激光雷达相机校准器应用程序,请在MATLAB®命令提示符下输入此命令。
lidarCamera校准器
或者,可以从“应用程序”选项卡的“图像处理和计算机视觉”下打开该应用程序。
应用程序将打开一个空会话。该应用程序读取PLY和点云数据(PCD)格式的点云数据,以及imformats支持的任何格式的图像。如果数据存储在rosbag文件中,请参阅从rosbag文件读取激光雷达和相机数据教程以进行相应的转换。
将校准数据加载到应用程序中。
在应用程序工具栏上,选择导入>导入数据,这将打开导入数据对话框。
在图像文件夹框中,输入包含要加载的图像文件的文件夹的路径。或者,选择“浏览”导航到包含图像的文件夹,然后单击“选择文件夹”。
在“点云的文件夹”框中,输入包含要加载的PCD或PLY文件序列的文件夹的路径。或者,选择“浏览”导航到包含文件的文件夹,然后单击“选择文件夹”。
在棋盘设置部分,输入校准棋盘参数。在“方形大小”框中指定每个棋盘格的大小,然后从该框旁边的列表中选择测量单位。
在“填充”框中,输入棋盘的填充值。有关填充的详细信息,请参见棋盘填充。单击“确定”导入数据。
提示
要在会话中的任意点向会话添加更多图像和点云,请选择“导入”>“将数据添加到会话”。
检测功能
加载图像和点云数据后,应用程序会对它们执行自动特征检测。该应用程序使用指定的棋盘参数,从图像数据检测棋盘角,从点云数据检测棋盘平面。
当应用程序在图像和点云中检测到棋盘功能时,它会在“接受的数据”窗格中显示这些功能,并接受图像和点云数据对进行校准。
当应用程序未检测到图像、点云或两者中的特征时,它会在“拒绝的数据”窗格中显示这些特征。可以使用“选择感兴趣区域”或“选择棋盘区域”工具来检测拒绝数据中的特征。
从数据浏览器的“接受的数据”或“拒绝的数据”窗格中选择一个数据对,以将其显示在可视化窗格中。
可以在应用工具之旅的“操作”部分使用这些工具来处理接受和拒绝的数据对。
移动到接受数据--将数据对从拒绝的数据移动到接受的数据。
移动到拒绝的数据--将数据对从接受的数据移动到拒绝数据。
删除--删除选定的数据对。
有关要在数据浏览器中使用的键盘快捷键的列表,请参见数据浏览器。
加载相机内部参数
默认情况下,应用程序从输入图像数据中内部计算相机固有参数,以执行特征检测。也可以通过在应用程序工具之旅的“相机内部”部分中选择“使用固定内部”,将相机内部参数加载到应用程序中。在打开的对话框中,指定相机内部参数的位置,并将其加载到应用程序中。可以从文件或MATLAB工作空间加载内部参数。然后,在“检测特征”部分,选择“检测”以使用新的内在参数重新检测输入数据中的特征。
要将相机内部参数重置为应用程序计算的默认值,请选择计算内部参数。要加载不同的内部值,请选择“使用固定内部”,然后选择“加载内部”。
在编辑ROI选项卡中,应用程序显示具有ROI长方体的点云数据。调整ROI长方体以更紧密地匹配包含棋盘的区域。这通过将特征检测包含到特定区域来减少数据拒绝并提高性能。
使用这些步骤可以使用Edit ROI微调点云数据中的棋盘检测。
选择任意数据对。您可以选择一个被拒绝的数据对来调整ROI。
要调整ROI,请在编辑ROI选项卡上的点云窗格中,暂停ROI长方体。指针变为手形符号。单击ROI的任意一侧并拖动以调整长方体大小。要锁定长方体尺寸,请在长方体上单击鼠标右键,然后选择“锁定尺寸”。还可以撤消和重做对ROI的修改。
选择“捕捉到ROI”以可视化ROI长方体内的棋盘点,并相应地调整长方体的大小。要查看整个点云,请清除“捕捉到ROI”。
可以一次更新每个单独帧或所有帧的ROI。
选择“应用”保存更改,或选择“取消”放弃更改。
更新点云帧的ROI后,在应用程序toolstrip的Calibration(校准)选项卡上的Detect Features(检测特征)部分,选择Detect(检测)以在所选ROI内重新检测输入数据中的特征。
提示
使用键盘快捷键可以更交互式地执行这些任务。有关编辑ROI键盘快捷键,请参阅编辑ROI。
选择棋盘区域
要进一步优化功能检测,请单击应用程序工具栏上的“选择棋盘”。该应用程序打开“选择棋盘”选项卡,可以在其中手动选择任何点云帧中的棋盘点。
在“选择棋盘”选项卡中,选择任意数据对。可以选择一个被拒绝的数据对,然后在点云中找到棋盘。
使用点云显示的轴工具栏中的缩放和旋转选项来定位棋盘。
单击“选择棋盘”,光标将变为十字光标。
在棋盘上单击并拖动光标。此时会出现一个选择矩形,其中的点以红色突出显示。或者,也可以在轴工具栏上选择“笔刷/选择数据”。
选择点后,旋转点云以检查是否已选择任何背景点。如果您的选择包含不需要的点,请选择“擦除”重新开始。
选择“应用”保存选定的点,或选择“取消”放弃选定的点。
此棋盘式选择仅适用于选定的点云。更新棋盘点后,选择“检测”以使用更新的棋盘点重新检测输入数据中的特征。
特征检测设置
该应用程序提供了这些功能检测设置,可以使用这些设置来调整检测参数。
移除接地点--从点云中移除接地点。该应用程序使用pcfitplane函数来估计地平面。默认情况下,移除接地功能处于启用状态。选择Remove Ground(移除接地)将其清除。
群集阈值--点云中两个相邻点的群集阈值,以米为单位指定。聚类过程基于相邻点之间的欧几里得距离。如果两个相邻点之间的距离小于聚类阈值,则两个点属于同一聚类。低分辨率的激光雷达传感器需要更高的集群阈值,而高分辨率激光雷达传感器受益于更低的集群阈值。
尺寸公差——矩形平面尺寸的不确定度公差,在[0,1]范围内规定。尺寸公差越高,表示矩形平面尺寸的公差范围越大。
更新新的检测参数后,选择“检测”以重新检测输入数据中的特征。
标定
当对检测结果感到满意时,选择Calibrate(校准)按钮来校准传感器。如果有估计的变换矩阵,请选择“初始变换”从文件或工作空间加载变换矩阵。该应用程序假设激光雷达传感器和相机之间的旋转角度在[-45 45]范围内,沿每个轴以度为单位。对于超出此范围的旋转角度,请使用“初始变换”指定初始变换以提高校准精度。
校准后,应用程序界面显示图像,其中点云中的棋盘点投影到图像上。该应用程序使用projectLidarPointsOnImage功能将激光雷达点投影到该图像上。使用fuseCameraToLidar功能将图像的颜色信息与点云数据融合。
该应用程序还使用误差图提供转换矩阵的不准确度度量。绘图指定了每个数据对中的这些错误:
平移误差——点云中棋盘平面的质心坐标与相应图像中的质心坐标之差。应用程序以米为单位返回错误值。
旋转误差——点云中棋盘平面定义的法线角度与相应图像中的法线角度之间的差异。该应用程序使用棋盘角坐标来估计图像中的平面。该应用程序以度为单位返回错误值。
重投影误差——点云中棋盘平面的投影(变换)质心坐标与相应图像中的质心坐标之间的差异。应用程序返回以像素为单位的错误值。
在数据浏览器中选择数据对时,错误图中相应的条形图将高亮显示为深蓝色。可以通过删除异常值来调整校准结果。垂直拖动每个绘图上的红线以设置误差限制。该应用程序选择所有错误值大于错误限制的数据对作为异常值,并在数据浏览器中以蓝色突出显示错误条及其对应的数据对。右键单击数据浏览器上的任何选定数据对,然后选择“删除并重新校准”以删除异常值并重新校准传感器。删除异常值可以提高校准精度。有关用于错误图的键盘快捷键列表,请参阅错误图。
导出结果
可以将转换矩阵和误差度量作为变量导出到工作空间或MAT文件中。可以生成完整应用程序工作流的MATLAB脚本,用于您的项目。
键盘快捷键和鼠标操作
笔记
在Macintosh平台上,请使用命令键而不是Ctrl键。
使用激光雷达相机校准器应用程序时,使用键盘快捷键和鼠标操作可以提高生产力。
数据浏览器
任务 |
实现 |
在“接受的数据”或“拒绝的数据”窗格中浏览数据对 |
向上或向下箭头 |
在数据浏览器中选择所有数据对 |
Ctrl+A |
选择当前所选数据对上方或下方的多个数据对 |
按住Shift键并按下向上箭头或向下箭头 |
选择多个数据对 |
按住Ctrl键并单击数据对 |
从数据浏览器中删除选定的数据对 |
此时将显示一个对话框以进行删除 |
选择当前所选数据对上方的数据对N。N是当前时间在数据浏览器中完全显示的数据对的数量 |
|
选择当前所选数据对下方的数据对N。N是当前时间在数据浏览器中完全显示的数据对的数量 |
|
在数据浏览器中选择第一个数据对 |
|
在数据浏览器中选择最后一个数据对 |
|
错误图
使用错误图上的这些快捷方式来分析数据。对三个误差图中任何一个的操作,都会影响所有三个图上相应的误差条。
任务 |
实现 |
选择当前所选错误栏左侧的错误栏 |
向左箭头 |
选择当前所选错误栏右侧的错误栏 |
向右箭头 |
除了当前选择的错误栏外,还可以选择当前选择错误栏的右侧或左侧的错误栏 |
按住Shift键并按下向左箭头或向右箭头
|
选择多个错误栏 |
按住Ctrl键并单击错误栏 |
选择所有错误栏 |
Ctrl+A |
从数据浏览器中删除选定的错误栏和相应的数据对。然后应用程序会重新校准传感器。 |
此时会出现一个对话框以确认删除 |
编辑ROI
在编辑ROI选项卡上使用的快捷方式。
任务 |
实现 |
撤消ROI大小更改。 笔记 该应用程序只存储ROI的最后三个大小,因此您不能连续撤消三次以上。 |
Ctrl+Z |
重做ROI大小更改。 |
Ctrl+Y |
清除ROI选择 |
Esc |
局限性
激光雷达相机校准器应用程序有以下限制:
从“导出”>“生成MATLAB脚本”生成的脚本不包括使用“选择棋盘”功能手动选择的任何棋盘区域。在脚本中,在指定的ROI中检测到棋盘区域。
使用“选择棋盘”功能手动选择棋盘区域后,当返回“校准”选项卡时,只有在查看整个点云时(清除SnapToROI时),才能看到选定的点(以红色突出显示)。