使用MATLAB 2022 中的Lidar Camera Calibrator 实现16线LiDAR 与相机的联合标定

在自动驾驶车辆的多传感器系统中,建立激光雷达点云数据与相机图像之间的精确对应关系是至关重要的。这种对应关系是实现高质量感知融合和精确环境建模的基础。为此,需要对车载激光雷达和相机进行严格的联合标定。

1. 标定核心原理

标定的核心原理可以概括为以下坐标系转换流程:

  1. 激光雷达坐标系到相机坐标系的转换: 这是标定过程中最关键的一步。它涉及一个刚体变换,包括旋转矩阵R和平移向量t。这个变换将激光雷达坐标系下的三维点云数据转换到以相机光心为原点的相机坐标系中。
  2. 相机坐标系到图像坐标系的转换: 使用相机的内参矩阵,将三维空间中的点通过透视投影映射到二维图像平面上。这个过程涉及相机的内部参数,如焦距、主点坐标等。
  3. 图像坐标系到像素坐标系的转换: 这一步将图像平面上的连续坐标转换为离散的像素坐标,考虑了图像传感器的物理特性,如像素大小和分辨率。

通过这个转换链,我们可以将激光雷达捕获的每个三维点精确地对应到相机图像的特定像素上。这种对应关系使得我们能够融合激光雷达的精确深度信息与相机的丰富视觉信息,从而实现更全面、准确的环境感知。

让我们来详细说明一下:

  1. 外参数(Extrinsic Parameters):
    • 这是Lidar Camera Calibrator的主要目标。
    • 外参数描述了LiDAR坐标系相对于相机坐标系的空间关系。
    • 包括旋转矩阵(R)和平移向量(t)。
    • 这些参数允许我们将LiDAR点云数据转换到相机坐标系中。
  2. 内参数(Intrinsic Parameters):
    • 对于相机,内参数通常在此之前已经通过单独的相机标定过程获得。
    • 相机的内参数包括焦距、主点坐标、畸变系数等。
    • Lidar Camera Calibrator通常假设相机内参数已知,并在标定过程中使用这些参数。
  3. LiDAR Camera Calibrator的工作原理:
    • 它使用已知的相机内参数。
    • 通过观察特定的标定板(通常是棋盘格图案),同时使用LiDAR和相机采集数据。
    • 然后,它寻找LiDAR点云和相机图像中标定板的对应关系。
    • 基于这些对应关系,计算出LiDAR相对于相机的精确位置和方向(即外参数)。
  4. 为什么主要关注外参数:
    • LiDAR本身不需要传统意义上的内参数标定。
    • 相机的内参数通常在之前就已经通过专门的相机标定程序确定。
    • LiDAR和相机之间的空间关系(外参数)是实现两者数据融合的关键。

2. 棋盘格设计(有LiDAR参与标定,建议使用无白边的标定板)

  1. 棋盘图案的结构 :棋盘图案是由多个小正方形组成的网格,其中一条边包含偶数个正方形,另一条边包含奇数个正方形。这种设计确保了棋盘图案在不同方向上的非对称性,从而可以唯一地确定图案的方向。

  2. 避免方形图案的不确定性 :如果棋盘是正方形的(即两条边的正方形数量相等),那么在拍摄时可能会产生方向上的不确定性,因为图案在旋转90度后看起来是一样的。通过使用一条边为偶数,另一条边为奇数的非正方形棋盘,可以避免这种不确定性。

  3. 黑白角的特征 :棋盘图案的一侧包含两个黑色角,另一侧包含两个白色角。这种设计提供了一种简单的方法来确定棋盘图案的方向。当看到图案时,可以通过识别黑色角和白色角的位置来判断图案的朝向。

  4. 确定图案的方向和原点:通过识别黑色角和白色角的位置,可以确定图案的方向,并且可以明确棋盘格的原点(通常是棋盘图案的某个特定角)。这对于校准过程非常重要,因为需要知道每个传感器看到的棋盘图案的准确位置和方向。

  5. 校准器的x方向:在校准过程中,通常需要指定坐标系。这里提到的校准器将x方向指定给较长的一侧。这意味着在构建坐标系时,较长的一条边会被定义为x轴方向。这有助于在后续处理过程中一致地解释和使用坐标系。

3. 数据采集过程

在进行激光雷达与相机的联合标定时,以下是数据采集过程中的关键注意事项:

3.1 标定板的握法:

低线数激光雷达(如16线和32线):应倾斜45°握持标定板。完全水平或竖直放置标定板可能导致标定软件难以识别标定板的边沿,因为雷达扫描线之间存在间隙。

高分辨率激光雷达(如HDL-64和Ouster OS1-64):可以水平或垂直握住标定板,但为了获得最佳数据捕获效果,建议将标定板倾斜45度。这有助于确保激光雷达更好地捕获标定板上的特征点。

3.2 标定板的举法:

双手伸直,将标定板举在身体前方,避免身体平面被误识别为标定板平面。 手指尽量握住标定板侧面,不能遮挡标定板正面的格点。

3.3 移除干扰物:

确保标定板周围没有其他物体与目标物体处于同一平面,以免干扰校准过程。

3.4 数据帧的捕获:

捕获至少10帧数据以进行适当校准,确保数据的充分性和准确性。

3.5 数据格式:

点云数据必须以PCD(Point Cloud Data)或PLY(Polygon File Format)格式保存。这些格式支持高精度点云数据的存储和读取。

4. 在 2022b版本中,Lidar Camera Calibrator 工具箱

标定界面要求15-20张图片:

4.1 标定产生的矩阵

*激光雷达点云向相机坐标系转换(包含旋转矩阵、平移矩阵)

tform.T 矩阵由 tform.Translation 和 tform.Rotation 组成;

*相机的内部参数矩阵(使用拍摄的图片完成内部参数标定即可,外部参数每一张图片都会有一个外参,不需要进行考虑,除非单目测距)

其中,相机内参矩阵转置后,需要添加一列元素[0,0,0]',从而形成[34]矩阵

4.2 点云向图像转换的矩阵

最终,用于点云向图像转换的矩阵为: 以上两个矩阵相乘:[34] * [44] = [34]
cam_IntrinsicMatrix' × tform.T' (注意转置)

则对于点云相机标定矩阵来说:

K [R T] 已经得到,转换矩阵左边只剩下 Zc [u v 1]' , 右边为 [x y z 1]' ;

则我们可以通过设置虚拟的空间坐标点(原点为激光雷达处)进行矩阵正确性的验证:

----------------------标定的可视化结果后面添上-------------------------

参考文献

matlab Lidar Camara Calibrator使用方法及雷达点云对相机的标定_matlab lidar camera calibrator-CSDN博客

2022使用MATLAB进行相机和激光雷达的标定(有重大更新)_matlab2022 相机与雷达标定-CSDN博客

相关推荐
hongel1103 天前
基于机器视觉的表面缺陷检测
数码相机
code bean5 天前
【工控】线扫相机小结 第四篇
数码相机·工控·工业相机
那就举个栗子!5 天前
多传感器融合slam过程解析【大白话版】
数码相机
xy189906 天前
相机触发模式
数码相机
yunfanleo7 天前
代替Spinnaker 的 POINTGREY工业级相机 FLIR相机 Python编程案例
c++·python·数码相机
摆烂仙君8 天前
《Camera-free Image to PanoramaGeneration with Diffusion Model》论文解析——CamFreeDiff
人工智能·数码相机·计算机视觉
weixin_Todd_Wong20108 天前
【海思Hi3519DV500】双目网络相机套板硬件规划方案
数码相机
isyoungboy8 天前
普通单片机为什么无法直接驱动dcmi接口相机
单片机·嵌入式硬件·数码相机
爱煲汤的夏二8 天前
摄影:相机控色
数码相机
OAK中国_官方8 天前
‘视’不可挡:OAK相机助力无人机智控飞行!
数码相机·无人机