-
Notifications
You must be signed in to change notification settings - Fork 66
Description
感谢作者的开源代码!
曾经尝试过6种方法进行livox雷达和相机的联合标定,包括livox官方开源的那两个。从效果上看,还是基于标定板的方法靠谱,很多自动标定的方法对采集环境的要求太高,现实很难找到理想的场地去完成标定;matlab高版本中也有集成的激光雷达相机联合标定方法,但是使用起来稍微繁琐一点,而且标定效果也不稳定。
由于作者的开源代码标定的效果太好了,完美解决了我遇到的问题,欣喜之余分享一下我使用作者代码标定的一些经验。
使用多台设备多次标定,结果都是一次成功。
如果使用该方法标定结果稍有差异(很少出现),可以将代码中生成的标定板3d点和2d点存下来,使用livox官方提供的手工标定方法,直接替换那两个存储3d和2d点的txt文件,使用同时优化外参和内参的方法,可以达到理想的标定效果。
系统环境:ubuntu20.04,pothon3.8,ROS1-noetic
激光雷达: Livox-AVIA
相机:1200W/800W像素
高质量黑白棋盘格标定板及单杆立式固定支架
我配置的环境:
pip install numpy==1.23
pip install scipy
pip install scikit-learn
pip install rospy
pip install rospkg
pip install pyyaml
pip install transforms3d
sudo apt-get install ros-noetic-ros-numpy
建立链接:
ln -s /usr/bin/python3 /usr/bin/python
由于使用的为python3,相关源码需要进行修改:
我使用的相机没有对应的ROS驱动,因此图像采集使用cheese,代码中图像采集相关的代码被我注释掉了
cd /path/to/your/ACSC/ros/livox_calibration_ws/src/calibration_data_collection/scripts
打开文件夹下唯一的py文件,修改第11、40、41、310、328、344行
Line11:
import thread修改为import _threadLine40、41: 将第41行注释掉,并将第40行取消注释
Line 310: 将该行注释掉
Line328:
thread.start_new_thread修改为_thread.start_new_threadLine344: 将此行注释掉
修改ros中的launch文件
cd path/to/your/ACSC/ros/livox_calibration_ws/src/calibration_data_collection/launch/lidar_camera_calibration.launch
将config-path 设置为 data_collection.yaml 的路径
之后catkin_make编译,按照作者的教程就可以进行标定了,我采集了30组数据左右