点击下方
卡片
,关注
「3D视觉工坊」
公众号
选择
星标
,干货第一时间送达
一 相机内参标定
-
相机内参标定建议使用matlab工具箱,简单易用,鲁棒性高。
-
相机内参标定的标定板自行打印,打印材质需要硬质材质,不容易弯曲变形,建议用雪弗板,打印店很多。matlab识别不了中间带aruco码的板子,需要打印黑白棋盘格标定板,类似下图:
-
ubuntu系统的matlab安装教程:https://www.cnblogs.com/lvchaoshun/p/9746155.html
-
其中:fx fy 为焦距, cx cy 为光心位置。
畸变系数填写顺序为:K1 K2 P1 P2 K3
二 相机到激光的外参标定
2.1 采集数据
-
-
打印好标定板,放置在相机和激光都能扫描到的地方,如下图所示:
1、windows系统,相机采集数据方式是USB直连, 用自带的相机打开,选则USB相机,点击拍照即可。
2、激光需要在多线激光雷达官网下载软件,按照说明文档打开激光录制软件:
3、激光和相机都可以采集数据后,将标定板摆放到合适位置,依次采集激光和图像文件。多采集几组,采集10组左右备用。数据如下图所示,红色框是原始点云, 下面同名的 以pcd结尾的是转成pcd文件格式的电云, 转换脚本是conv_csv_to_pcd.py ,(不知道是速腾软件问题还是我电脑问题,我保存不了pcd文件格式,保存的csv格式,后续用脚本转以下,如果可以保存pcd格式,就不用转。) 绿色框是图像,注意点云和图像采集时候要一一对应好,不能错乱。
2.2 运行标定程序
2.2.1 环境配置:
-
标定程序是在ubuntu和docker环境下运行的,docker 有易于使用,环境统一的特点,不用折腾编译、环境配置等问题,开箱即用。
-
docker 安装和命令行:
a)安装: sudo apt install docker.io
b) 加载镜像:docker load < calib.tar 其中calib.tar是镜像文件,会提供。
c) docker run -it -d -v /home/xxxxx/workspace/:/workspace --name calib calib:v0.1 第一次启动镜像,相当于配置一个虚拟电脑,只需要做一次,宿主机关机也没事, -v /home/xxxxx/workspace/:/workspace 是配置宿主机和docker环境的文件夹挂载,可以自由的往环境内拷入拷出文件。例如代码文件夹calib_tools 在 /home/somebody/workspace 下, 就 -v /home/somebody/workspace:/workspace ,在docker环境中,有/workspace路径,里面内容和外面是一样的,里面修改了文件,外面同样也会被修改。
d) docker start/stop calib
e) docker exec -it calib bash
f) docker ps -a 查看docker环境状态。
a) 第一步,生成标定板关键点的2d检测:
①配置run_calib.sh 文件的 stage=1, image_path = 采集标定板的图像文件路径。这里是docker内部运行,所以要将文件拷贝到docker 内能访问的位置,即docker挂载文件夹的位置。
-
进入docker 后,cd 到 标定程序路径,例如/workspace/calib_tools
②在命令行运行 ./run_calib.sh , 挨个jpg文件运行一遍,生成的检测图像如下图所示,是检测的角点和其像素坐标。
③具体逻辑可以看代码实现,比较简单。
b) 第二步,使用CloudCompare 软件打开点云,CloudCompare安装方式简单,windows官网下载安装, linux 下用snap安装,两行命令: