Sensor Calibration
Lidar to lidar
使用Livox Viewer标定外参,具体步骤参考https://github.com/Livox-SDK/Livox-SDK/wiki/Calibrate-extrinsic-and-display-under-ros-cn
需要说明的是,Bunker_mini前面拼了三个AVIA,均安装在定制的支架。
外参标定需要给一个初始的标定数据,由于我们的支架有三维模型,所以可以通过CAD算出来
根据CAD计算出的初始标定结果:
<Device roll="0" pitch="0" yaw="-45" x="-0.234" y="-0.067" z="0">3JEDL9L00102891</Device>
<Device roll="0" pitch="0" yaw="45" x="-0.234" y="0.067" z="0">3JEDL9L001ML931</Device>
<Device roll="0" pitch="0" yaw="0" x="0" y="0" z="0">3JEDL9L001P4551</Device>
然后找一个特征明显且多,范围够大的场景,例如电线杆、铁架、树、楼梯
利用Livox Viewer慢慢调,一共六个参数。填好最后拼接显示的点云信息
最后标定结果:
可以看到用CAD算出的标定结果还是很准确的,如果定制的支架制作误差足够小,完全可以直接用初始标定参数
<Device roll="0" pitch="0.73" yaw="-45.18" x="-0.234" y="-0.067" z="0">3JEDL9L00102891</Device>
<Device roll="0" pitch="-0.84" yaw="45.05" x="-0.234" y="0.067" z="0">3JEDL9L001ML931</Device>
<Device roll="0" pitch="0" yaw="0" x="0" y="0" z="0">3JEDL9L001P4551</Device>
Lidar to camera
使用OpenCalib进行雷达到相机的外参手动标定
https://github.com/PJLab-ADG/SensorsCalibration
https://github.com/PJLab-ADG/SensorsCalibration/tree/master/lidar2camera
README文件说要用opencv 2.4 eigen 3 PCL 1.9 Pangolin
实测Ubuntu1804,装好ros后只需要安装Pangolin即可,最好安装0.8版
https://github.com/stevenlovegrove/Pangolin
网上有很多安装Pangolin教程,安装好依赖,然后
cd Pandolin
mkdir build
build
cmake ..
make -j4 # 多线程,编译更快
sudo make install
下载好OpenCalib包后编译
cd lidar2camera
cd manual_calib
mkdir build && cd build
cmake ..
make -j4
这时候会报错,会提示PCL或者Pangolin版本不对,修改CMakeList.txt
find_package(Pangolin 0.8 REQUIRED)
改为
find_package(Pangolin REQUIRED)
find_package(PCL 1.9 EXACT REQUIRED)
改为
find_package(PCL REQUIRED)
重新编译即可,然后运行一下示例,如报错OpenGL等显示不出来窗体,应该是Docker运行的,请修改docker run ,具体参考Environment(Quick Start)
cd ~./manual_calib/
./bin/run_lidar2camera data/0.png data/0.pcd data/center_camera-intrinsic.json data/top_center_lidar-to-center_camera-extrinsic.json
这个标定也是要一个初始的外参标定信息和相机的内参信息,相机的内参信息可以通过tostopic可以查到camera/info,外参的旋转矩阵要看一下相机和雷达的坐标系,比如我们的是奥比中光astar2,找到用户手册坐标系
大疆AVIA的
所以我们要做一个坐标转换,lidar2camera 是雷达到相机的坐标系,本文中,AVIA需要绕着相机坐标系y轴转-90°,然后再绕x轴转90°,一定要注意旋转的正方向和负方向,一般是对着轴方向看顺时针旋转是正方向,顺着轴看逆时针旋转是正方向,反之为负方向。根据以下公式
最后得出:
0 -1 0
0 0 -1
1 0 0
修改data/center_camera-intrinsic.json 替换为自己相机的内参,top_center_lidar-to-center-extrinsic.json 修改旋转矩阵,三轴的偏移量给一个测量出来的就可以,然后找一个特征多场景大的场地录制雷达和相机数据,bag格式转为image 和pcd可参考我上篇。
然后和雷达到雷达标定一样,自己慢慢调就可以了,最后save一下终端会输出标定结果
Transfromation Matrix:
-0.0209424 -0.999781 8.67362e-19 -0.00408393
0 0 -1 0.18
0.999781 -0.0209424 8.67362e-19 0.0399679
0 0 0 1
Lidar to IMU
这个最简单,直接固定在AVIA上,三轴无旋转,旋转矩阵为单位阵。这样应该能满足大部分需求,相信IMU和AVIA的工艺。(主要是偷个懒)
1 0 0
0 1 0
0 0 1
文章来源:https://www.toymoban.com/news/detail-812244.html
文章来源地址https://www.toymoban.com/news/detail-812244.html
到了这里,关于Bunker_mini多传感器外参标定,雷达相机IMU的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!