多激光雷达标定multi_LiDAR_calibration
对于多激光雷达的标定主要采用ICP、NDT等配准方法进行估计多个激光雷达的外参变换矩阵 T T T。在这里先介绍一些先前关于多激光雷达外参标定的工作:
- M-LOAM:采用多个激光雷达固定到一个机器人上进行一起SLAM建图,在线标定得到外参矩阵。
- multi_lidar_calibration:代码地址https://github.com/AbangLZU/multi_lidar_calibration,博文说明https://zhuanlan.zhihu.com/p/362709744,作者原版的博文需要收费。该算法采用的是NDT配准,需要提供初始变换矩阵,launch文件设置的是 ( x , y , z , r o l l , p i t c h , y a w ) (x,y,z,roll,pitch,yaw) (x,y,z,roll,pitch,yaw),但该方法我个人认为NDT的配准方法是假设了所有的3D体素栅格成正态分布形式,但实际中这个假设不一定成立。想比较而言ICP的配准方式会比NDT配准更好一些,但也不绝对。
- calibration_kit:该算法包由深蓝学院提供,包含了单双目相机标定、相机-激光雷达标定、激光雷达-激光雷达标定、激光雷达-IMU标定。这里抽取多激光雷达标定的例子来说明,该方案是采用ICP的配准方式,只选取了各自的一帧点云pcd数据,效果来说总体会比基于NDT的配准算法好一些,但也有偏差。
- LiDAR-Automatic-Calibration:代码地址https://github.com/AlienCat-K/LiDAR-Automatic-Calibration,该方法基于ICP的配准,同时采用了LOAM的建图来提供初始值。
- MULTI_LIDARs_CALIBRATE:代码地址https://github.com/GDUT-Kyle/MULTI_LIDARs_CALIBRATE,用来标定固态激光雷达Livox的外参矩阵。
本文参考了前面几个的方案,进行了LOAM建图,然后将地图进行ICP配准得到变换矩阵,完成外参标定过程。以双雷达为例子,该算法流程:
该算法包的具体使用详见https://github.com/Xujianhong123Allen/sensor_calibration/tree/master/multi_LiDAR_calibration,只在velodyne VLP16上进行测试过,需要该定一个初始值 ( x , y , z , r o l l , p i t c h , y a w ) (x,y,z,roll,pitch,yaw) (x,y,z,roll,pitch,yaw)
ICP的原理详见https://blog.csdn.net/qq_34782535/article/details/103835250。大致就是两帧点云,要计算它们的相对位姿关系。
标定出来的的效果如下:
图一实际激光雷达
标定前后的点云地图:
到这里可能会有许多人会问什么我会从A-LOAM建立的点云地图进行ICP匹配,而没有直接采用单帧的激光点云进行配准。该方法从A-LOAM中建立的点云地图进行配准会使得匹配度更高,因为A-LOAM所建立的点云地图是经过线、面特征提取后多帧数据组成,这样的点云特征更明显,尽管该过程都是静止状态。用下面两个动图来说:
-
利用单帧激光点云进行ICP配准结果
-
利用A-LOAM点云地图的匹配结果
可以看到该算法包的效果会明显由于使用普通的激光点云扫描帧直接进行配准的稳定性和精确度会高一些。
该算法包也可以展现多机协同效果