最近在跑lio_sam紧耦合的slam框架,中间需要进行lida_imu的标定。当前搜索的结果来看常用的开源标定包有两个:lidar_align、li_cailb。最近看了一下后一种的原文,总结下按钮功能与相关注意事项。
标定过程分4部分:initialization of extrinsic rotation、surfels map and data association 、continuous-time batch optimization、refinement。
1、initialization of extrinsic rotation:用来初始化lidar_imu间的旋转参数。此处采用手眼标定的算法实现。初始化阶段没有考虑平移参数,这部分涉及读取加速度的值,由于加速度融合的重力,所以结果不切实际,但作者认为平移的初始化在本文的方法中对后续的标定结果产生的影响比较小。
2、surfels map and data association:点云去畸变、提取平面。在去畸变部分用到步骤1的旋转初始化结果,采用内插的方式去除一个scan中点云的旋转畸变。提取平面是从点云中识别平面点,做法是将点云划分到三维格网中,通过特征值间的关系判断格网中是否存在平面点。
3、continuous-time batch optimization:采用MAP计算标定参数。在目标函数中结合imu测量残差与点到平面距离残差。
4、refinement:迭代优化使得参数收敛。
以上是算法实现的大致流程,后续结合实践有结果的话,再跟大家分享~