1.为什么要进行激光雷达和相机的联合标定?
激光雷达和相机的联合标定是为了将两种传感器的数据统一到同一坐标系中,从而实现更准确的环境感知。激光雷达提供精准的三维距离信息,而相机捕捉丰富的纹理和颜色,通过联合标定可以结合两者优势,弥补单一传感器的不足。标定过程确定激光雷达与相机之间的相对位置和姿态,支持多传感器融合任务,如目标检测、三维重建和语义分割,提高系统的感知精度和鲁棒性,是自动驾驶和机器人导航中不可或缺的一环。
2.激光雷达和相机联合标定的原理是什么?
所以一般相机和激光雷达的联合标定就是要求其旋转矩阵和平移矩阵。大概就是这个过程,如果有不太清楚的,同时又想进一步研究的可以参考这个博客:激光雷达和相机联合标定_相机激光雷达联合标定-CSDN博客
3.该如何实现呢?首先打开MATLAB,点击APP-图像处理和计算机视觉-Lidar Camera Calibrator
4.关于标定板的制作 ,可以参考以下网址:Camera Calibration Pattern Generator -- calib.iohttps://calib.io/pages/camera-calibration-pattern-generator
这里面可以设置标定板的格式以及大小:
- 关于数据的选择,这里以bag包为例首先将bag包转换成png图片和pcd点云文件,怎么转换可以参考另一篇博客:(二)利用Tools_RosBag2KITTI软件包将ubuntu当中自己录制的.bag文件转成.bin文件和.png文件(附修改后的代码)
6.接着点击 import data选择准换好的png和bin文件,这俩可以放在一个文件夹。
7.之后选择文件夹的路径以及标定板的大小:
8, 之后开始自动加载相应的文件内容:
9, 之后会提示找不到标定板数据,不要慌,这是正常的,裁剪设置之后就可以了。
10, 一方面可以降低DimensionTolerance'的值(即点云检测边框精度)来提高标定板检测成功率。
11.也可以点击Edit ROI编辑点云图像,只保留标定板,编辑好了一定要保存。
12.操作可能有点不习惯,右上角第一个是旋转,第二个是移动,当两者都不亮时才是默认的拉伸,保存后退出,如下图所示:
13.接下来呢,选择Select Checkerboard进行标定板的选择,每一张图片都需要按照上以下步骤重复所有的操作
14.之后 点击手动选择标定板的区域保存,所有点云都需要这样操作:
- 我标注的比较随意,大家好好标,因为标注的不行的系统识别不到,会拒绝,比如:
16.正确标注后,会在中间出现相应的图片和右侧的点云图:
- 之后点击上面的calibrate会进行标定,如下为几个相应的重投影结果,以及三个误差分布图:
18.标定的结果怎么看呢, 点击export导出到工作空间:
19,打开该变量,其包含的4个参数如下:
20.参数含义为:
-
Dimensionality维度,表示该刚体变换是针对几维空间的,说明是一个三维空间中的变换。
-
T变换矩阵(4x4 double),是刚体变换的齐次矩阵形式,包含旋转和平移信息。t3x1: 平移向量,表示物体在三维空间的平移,R3x3: 旋转矩阵,表示物体在三维空间的旋转。
-
Rotation 旋转矩阵(
3x3
),表示刚体的旋转部分,是一个正交矩阵,满足旋转矩阵将一个三维点绕原点旋转到新的位置。 -
Translation 平移向量(
1x3
),表示刚体在三维空间中的平移量。例如,这里的值为表示沿 x,y,z 轴的平移。
21.我们需要的也就是旋转矩阵和平移矩阵:
22.至此,终于标定完了,附上一张自己标定一晚上的结果,眼都花了。