参考博客:
ubuntu18.04使用calibration_toolkit进行相机和三维激光雷达的联合标定_ubuntu18.04 安装calibration__╰︶ ̄ 莫等闲۩۩۩的博客-CSDN博客
环境:ubuntu18.04。
autoware1.10以上的版本都不包含这个标定方法,因此需要单独编译安装标定工具箱。
一、安装
nlopt安装
git clone git://github.com/stevengj/nlopt.git
cd nlopt
mkdir build
cd build
cmake ..
make
sudo make install
calibration_camera_lidar安装
mkdir calibration&&cd calibration
mkdir src&&cd src
git clone https://github.com/XidianLemon/calibration_camera_lidar.git
cd ..
catkin_make
source devel/setup.bash
安装过程中有几点问题需要注意:
1)ros-melodic版本编译之前需要修改~/calibration/src/calibration_camera_lidar/ls_calibration/calibration_camera_lidar 目录下的CMakeLists.txt文件。
将文件中所有的if ("${ROS_VERSION}" MATCHES "(indigo|jade|kinetic)")修改为if ("${ROS_VERSION}" MATCHES "(indigo|jade|kinetic|melodic)"),因为默认的是不支持melodic的。否则编译出来会没有calibration_toolkit节点。
2) 若编译报错Could not find the required component ‘jsk_recognition_msgs’
则直接执行sudo apt-get install ros-kinetic-jsk-recognition-msgs进行安装。
二、测试
roscore
rosrun calibration_camera_lidar calibration_toolkit
能正常启动说明安装正确。若报错,通过sudo apt install指令,缺什么就装什么。
三、标定
通过rosbag play播放录制好的数据包。通过rostopic list查看激光雷达和相机的对应topic。然后在标定工具包的初始化界面选择对应topic。
模式则选择camera -> velodyne。
就会打开标定界面,此时需要我们手动设置标定板的角点长宽与棋盘格最小边长。
设置好后关闭重启,所有参数更新。此时播放bag包就可以进入标定步骤。
空格space键控制bag包的播放与暂停。暂停时点击右上角的grab,会得到此时相机与激光雷达的对应帧,并显示相机图像的角点检测情况。此时需要我们手动选取标定板在点云中的位置平面。被选取部分会出现一个红色圆点,圆点形状完整说明选取较为准确。调整点云视角和位置可以通过以下按键(有些按键功能可能会不一致,需要自己尝试一下):
如果觉得某一帧数据选的不好,可以通过右上角remove移除这帧数据。当数据选取标注大概15个以上的时候可以点击calibrate进行标定参数的计算,计算完成后点击project,软件会将每帧手动选取的点云通过计算得到的外参参数进行重投影并显示在对应图像帧。当大多数帧的投影都是正确地出现在标定板上时说明标定结果较为准确,否则需要删除误差较大的数据帧并继续选取添加新的数据帧。
四、保存结果
点击左上角的save可以保存标定结果,结果会自动保存成yaml文件格式,如下:
至此,相机-激光雷达外参标定完成。