Lidar与imu外参标定

目录

网上资料

方案1

方案2

Lidar与IMU的相对旋转

实现

总结

附录:


最近由于工作需要,花了几天时间了解激光与imu的标定方法;因为项目需要,且这里是个人认识的一个整理,所以并不会很深入很细致的进行公式或原理推导。由于个人水平有限,所以可能会存在一些认知的错误,可以留言交流学习一下。

网上资料

方案1

瑞士苏黎世联邦理工大学------自动驾驶实验室开源的Lidar_align。

在使用该方法时,纯IMU积分,无法得到准确的Odom数据,所以无法进行纯imu与lidar 的标定。

方案2

浙大开源的Lidar_IMU_calib ,标定精度很高。

Lidar与imu外参标定_第1张图片

从粗到细的,实现高精度的lidar-imu标定,具体可以看一下论文和代码哈!我这里也测试了一下,由于一些原因,一直没有标定成功。

在学习以上两种方法时,结合网上的一些资料,自己做了一版Lidar-imu的旋转矩阵的标定;由于我的使用需求,平移部分可以不予考虑。

Lidar与IMU的相对旋转

这种方式,属于Linear Rotation Calibration;精度还可以。

Lidar与imu外参标定_第2张图片

简单来说,如上图所示,为相邻两个时刻的Lidar与IMU之间的坐标关系 ,假设c为Lidar某一时刻的坐标系,b为对应的imu坐标系,这里下标k,k+1为对应时间。

这里bk与ck为同一时间,bk+1与ck+1为同一时间,假设imu到lidar的旋转矩阵为R_b_c,k时刻到k+1时刻的Lidar的旋转矩阵为R_ck_ck+1,而假设知道imu和lidar的旋转矩阵R_b_c,则k到k+1时刻的Lidar旋转可以由[R_ck_bk] * [R_bk_bk+1 ] * [R_bk+1_ck+1]计算得到,即

用四元数表示为:

Lidar与imu外参标定_第3张图片

这里由四元数的左乘,右乘可得:

Lidar与imu外参标定_第4张图片

假设有多组lidar和imu的对应关系,则联立可得超定方程:

Lidar与imu外参标定_第5张图片

w是每组转换方程的权重,可以由相邻两个Lidar之间的变换向量和结合imu推导的变换向量的角度差来确定,而Q为的缩写。

最后用SVD分解,然后取最小奇异值对应的特征向量,即为R_b_c的结果。

实现

写了一版线性旋转标定的代码,相邻Lidar的运动量,可以用ndt计算,而imu的位姿,可以直接使用imu输出的姿态,最后使用时间戳对齐即可。

代码仓库,有用的话给个小星星

没有考虑激光的畸变,以及时间戳对齐也很粗暴,所以精度不会很高;但是相对使用来说,已经比手动测量要准确很多了,一般场景也足够使用了。

update2021-09-06:增加使用gtsam优化的方式求解旋转。

我的一个测试结果如下:

Lidar与imu外参标定_第6张图片

Lidar与imu外参标定_第7张图片

NDT计算Lidar运动量拼接而成的点云数据。

总结

整体而言,简单的实现,也能满足一定的需要;并且还有比较大的提升空间。

后续可以考虑:

①提高激光里程计的精度,譬如参考点到线,点到面的方式;或者使用一些靶标,这样精度会高很多;

②结合lidar的畸变;

③考虑lidar与imu的时序对齐;

④考虑imu陀螺仪的噪声等。

最后,附上论文中对此种线性旋转矩阵标定的测试。

Lidar与imu外参标定_第8张图片Lidar与imu外参标定_第9张图片

Lidar与imu外参标定_第10张图片

附录:

2017-Monocular Visual–Inertial State Estimation With Online Initialization and Camera–IMU Extrinsic Calibration

https://www.cnblogs.com/chenlinchong/p/14048969.html

你可能感兴趣的:(SLAM学习,标定,slam,imu,lidar-imu)