Skip to content

目前使用过的针对livox激光雷达和相机联合标定最好最方便的方法! #36

@xiehao-ai

Description

@xiehao-ai

感谢作者的开源代码!

曾经尝试过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 _thread

Line40、41: 将第41行注释掉,并将第40行取消注释

Line 310: 将该行注释掉

Line328: thread.start_new_thread 修改为 _thread.start_new_thread

Line344: 将此行注释掉

修改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组数据左右

最后放一张标定效果图像:
Uploading 0.jpg…

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions