LIO_SAM框架的一些学习记录和细节
开源代码地址:https://github.com/TixiaoShan/LIO-SAM
1. imageProjection部分:
这部分的主要功能是是将每一帧的点云去畸变,其中的关键就在于计算每一个点相对于这一帧第一个点的坐标变换,这就需要拿到这一帧点云前后的坐标变换,然后利用差值,计算每一个点对应的位姿。具体流程如下:提取每个雷达帧的收尾imu和odom消息。
这里一个细节是为什么有了full_cloud还要在转化一步成extract_cloud,我猜测是因为原始的雷达一帧可能不止360度,所以这里多了一步可以保证多余的部分可以删掉。
2、imuPreintegration部分
这一部分主要构造了两个对象,一个是Transfusion,一个是IMUPreintegration。transfusion。Transfusion对象的主要作用是发布一些轨迹和odom。
IMUPreintegration对象是imu预积分的主要对象,该对象订阅imu的原始消息以及lio_sam/mapping/odometry_incremental。整个模块包含一个因子图部分和两个imu预积分部分。因子图每100个因子重新构建,构建的因子是低频的mapping的odom,一个imu预积分模块产生的因子。当当前帧的优化完成后,得到新的imu的偏置,这部分会继续由另一个imu预积分部分传播。具体效果如下: