相机和激光雷达联合标定(附代码)

相机和激光雷达联合标定(附代码)

https://github.com/Aaron20127/Camera-lidar-joint-calibration

Camera-lidar-joint-calibration

网上找了很多方法,但不太靠谱,自己结合网上方法写了个标定代码,效果还不错,适合16,32,64线激光雷达,下边是代码连接和效果图。只要照着说明做,应该与没问题哈。

如果觉得有用的话,请记得在gtihub上收藏一下哦!

https://github.com/Aaron20127/Camera-lidar-joint-calibration

Aaron20127/Camera-lidar-joint-calibration

1. 所需软件

  • PolyWorks 2019.
  • Matlab 2019a.

2.程序

卸载此代码并执行以下步骤。

•基本要求

1.所有图像必须不失真。这件事至关重要。

2.校准板需要黑白棋盘格,一侧为奇数,一侧为偶数。

3.棋盘的短边应位于图像的顶部。棋盘的边缘不能与图像的边缘平行。图片中的棋盘姿势必须看起来像下面显示的第一排(第二排是错误的姿势):

4.点云棋盘的短边应位于激光雷达z轴方向的顶部。点云棋盘的边缘不能平行于激光雷达的z轴。

数据存储

1.将相机图像(.png)放入数据/图像中,必须用数字命名。

2.将激光雷达数据(.txt)放入data/pointcloud中,文件的每一行都只有xyz坐标,例如:

    0.5363237262 -0.3014609218 -0.1039963961

    0.5608119369 -0.3181324303 -0.1093295515

    0.5810572505 -0.3322938681 -0.1137738377

    0.6180613041 -0.3567755520 -0.1217735633

    ...

3.可以使用下面的命令,将.pcd文件转换为linux中的.txt文件。

$ pcl_converter -f ascii 1.pcd dst.pcd

$ cat dst.pcd | grep -v [A-Z] | grep -v [a-z] | cut -f 1,2,3 -d ' ' > 1.txt

•将棋盘调整为点云中的正方形

1.打开PolyWorks2019->工具->PolyWorks|inspector。

2.文件->输入->点云,选择.txt文件

3.只选择“毫米”和“空间”,单击“确定”。

4.选择->单元->交互

5.选择背景点,按delete键删除这些点,只保存棋盘点。

6.测量->特性->创建

7.选择正方形

8.选择配件

9.修改参数

10.选择最大值

11.选择->单元->交互,选择所有点

12.创作

13.平方->输出

1.将“.igs”文件保存到data/chesborard_pointcloud_igs。请注意,前缀名称必须是一个数字,并且其前缀名称必须与data/images中图像的前缀名称匹配。

2.重复上述步骤,直到棋盘上的所有点云都拟合好为止。

•配置

1.打开matlab2019,将matlab文件夹更改为根目录Camera-lidar joint calibration/。

2.打开joint_calibration.m文件,需要修改以下选项。

x_grids=5;%棋盘短边格数

y_grids=8;%棋盘长边格数

    imageType = 'png'; % image format

    % camera parameters

    focalLength    = [2525.9, 2528.1]; % fx, fy

    principalPoint = [942.9102, 584.8342]; % cx, cy

imageSize = [1080, 1920]; % image size

•检查图像角点检测结果

1.如果是第一次运行此代码,应该仔细检查图像角点检测的结果。如果未成功检测到某些图像的角点,则需要调整MinCornerMetric参数。因此,应该按如下方式修改配置。

MinCornerMetric=0.4;%调整此参数可以更好地检测角点onlyShowDetection=“true”;%仅显示图像角点检测的结果

2.运行joint_calibration.m检查结果。绿色表示第一个检测到的角点。

•联合校准

1.如果角点检测成功,则应将共同图形修改为onlyShowDetection='false',以开始联合校准。

2.重投影错误将显示在图像中,十字符号表示重投影点。

3.所有的点云都将被预投影到相应的图像中。

4.校准结果R和T在命令窗口中。

•注意事项

  1. 从点云到图像的投影公式如下

Pc = K * R * (Pw - T)

2.为了获得更好的结果,应该使用至少20对点云和图像。校准板应尽可能覆盖图像的所有位置。

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2024-02-27 03:41  吴建明wujianming  阅读(68)  评论(0编辑  收藏  举报