【学习总结】Lidar与IMU标定

本文仅用于自己学习雷达与IMU标定过程中的一些记录。

最近项目需要入手了镭神智能的“镭神C32”激光雷达,和KVH的1750IMU模块。在调用驱动完成初步数据读取之后,现在需要对雷达IMU系统进行标定。查阅了一些资料,发现并没有太多关于Lidar+IMU标定的资料。大多数论文中只是提到一句“我们认为雷达和IMU已经完成了标定”或者“Lidar与IMU采用离线的方式完成标定”。真的让人摸不着头脑。

标定需要标什么?

参考文献[1]中指出 “the LiDAR-IMU calibration mainly includes the LiDAR extrinsic parameters calibration, IMU intrinsic parameters calibration, and coordinate transformation between LiDAR and IMU”,即需要标定三个:Lidar的外参、IMU内参、Lidar与IMU之间的变换。

Lidar外参是什么鬼,我也没搞清楚,好像和Lidar探测时球坐标系有关,但一般厂商都做了标定,所以不用管。

IMU的内参,首先需要给出IMU的测量模型: a m = R G I ( a − g ) + b a ( t ) + n a a_m = R_G^I(a-g)+b_a(t)+n_a am=RGI(ag)+ba(t)+na w m = w + b g ( t ) + n g w_m=w+b_g(t)+n_g wm=w+bg(t)+ng 等号左侧是测量值, a , w a, w a,w是实际的真值, g g g是重力加速度(可以看出IMU在z轴正方时会有一个 + g +g +g的输出,而且是归一化的,表示“几个 g g g”), b a , b g b_a, b_g ba,bg 是随机游走噪声,随时间变化,而 n g , n a n_g,n_a ng,na是测量高斯白噪声。在IMU启动后,需要确定到世界系/大地系/地球系的旋转矩阵 R R R,并需要实时估计两个bias。

Lidar与IMU之间的变换,包括两部分:6DoF的刚体变换,与传感器延迟的时间差。首先说这个时间差,参考文献[2]中指出,由于传感器在测量(采样)时并不是同步的,同时由于传感器到系统有一个延迟,两者信号之间具有时差,这影响了测量值插值的精度。如图, t a , t b t_a, t_b ta,tb分别是IMU和camera的延迟,延迟后相差一个 t d t_d td,所以对于采样到的camera需要加上这个 t d t_d td才能得到在IMU时间系统中采样的时刻(一般论文都将IMU时间作为系统参考时间)。

在这里插入图片描述
再说刚体变换,即计算Lidar到IMU的刚体变换,一般论文中为了方便,多将IMU系作为机器人机体系,而将Lidar的点云数据变换到IMU系,因此需要得到从Lidar到IMU的刚体变换。论文[1]采用多种特征进行计算,论文[3]采用因子图优化的方式得到一段儿时间内优化的 R , t R,t R,t参数。

在这里插入图片描述

Lidar+IMU标定工具:lidar_align

发现ETHZ在github的一个lidar和IMU标定的代码,lidar_align:https://github.com/ethz-asl/lidar_align

自己学习这个代码做的总结:https://blog.csdn.net/tfb760/article/details/108581092

后续补充:这种方法如果拿不到IMU准确的数据,效果可能不好。所以可以看到代码里面命名都是Odom而不是IMU。IMU的准确数据可以由GPS或轮式里程计纠偏,否则漂移太过于严重。

再次补充:lidar_align不适用于纯IMU与Lidar进行标定! 纯IMU进行积分,无法得到准确的Odom数据。所以无法使用纯IMU获得odom,进行与Lidar标定。

来自lidar_align代码维护者Alex:
Unfortunately our toolbox is not suitable for pure imu-to-lidar calibration. I have seen other papers about this problem, but to be honest I’m not up to date with that literature so I don’t know if there is an open-source toolbox available.
Our typical use case is one where we have a camera-imu-lidar system. We typically perform visual-inertial odometry and use this as the odom transform to which you’re referring. If you don’t have an option for obtaining odometry in a similar manner you might be out of luck with this toolbox…

参考文献

[1]. A Novel Multifeature Based On-Site Calibration Method for LiDAR-IMU System
[2]. Online temporal calibration for camera–IMU systems: Theory and algorithms
[3]. 3D Lidar-IMU Calibration based on Upsampled Preintegrated Measurements for Motion Distortion Correction

### Lidar-IMU标定方法及相关文献 Lidar-IMU系统的标定是一个复杂的过程,主要目标是确定两者之间的外参矩阵(旋转和平移关系),并校正时间偏差。以下是关于此主题的一些重要方法和参考资料: #### 1. 标定的主要内容 Lidar-IMU标定通常需要解决以下几个方面的问题: - **外参数标定**:确定Lidar传感器IMU传感器之间的确切空间位置关系,即它们的相对姿态(旋转矩阵R)和平移向量T[^1]。 - **时间同步**:由于两种设备的时间戳可能不同步,因此需要调整两者的采样频率或通过插值等方式实现精确的时间匹配[^2]。 #### 2. 开源工具及其原理 一些现有的开源框架可以用于简化这一过程。例如,“GRIL-Calib”利用地平面运动约束来自动完成LiDAR-IMU间的标定工作;它不仅考虑到了静态场景下的几何特性,还加入了动态环境中的惯性信息作为辅助条件。 另一方面,在Ubuntu平台上也有专门针对该问题设计好的软件包如`lidar_align`, 它能够帮助研究者快速搭建实验平台并对齐两个模组的数据流[^4]. #### 3. 自适应优化策略 为了提高精度,部分学者提出了基于自适应机制的方法论, 这种方式可以根据当前估计误差大小动态调节迭代步长或是权重分配方案从而达到更快收敛速度的同时保持较高的鲁棒性能.[^3] ```python import numpy as np def calibrate_lidar_imu(lidar_data, imu_data): """ Perform LiDAR-IMU Calibration. Args: lidar_data (np.ndarray): Point cloud data from the LiDAR sensor. imu_data (np.ndarray): Inertial measurement unit readings. Returns: tuple[np.ndarray, float]: Rotation matrix R and translation vector T between sensors, along with time offset delta_t. """ # Placeholder implementation; actual algorithm would involve complex optimization techniques R = np.eye(3) # Identity rotation initially assumed t = np.zeros((3,)) # Zero translation initially assumed dt = 0 # No initial time delay considered return R, t, dt ``` 上述函数只是一个示意性的定义,并未包含具体的计算逻辑。实际应用中需结合特定硬件特性和采集到的真实世界样本进行深入分析。 ---
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值