Lio-sam代码分析(1)-基本框架说明
- 概述
- LIO-SAM整体框架
- imageProjecion图像映射节点
- FeatureExtraction 特征提取
- mapOptmization 图优化节点
- imuPreintergration IMU预积分
概述
LIO-SAM是Tixiao又一次的升级,主要是加入了IMU进行了紧耦合(而gps和loop可有可无,不是主要更新部分).本着学习为目的对整个工程进行了分析.但实际上这并不是一个SLAM工程,其主要是输出一个高频率的里程计信息.工程较为简单仅包含以下四个文件:
- imageProjecion
- FeatureExtraction
- mapOptmization
- imuPreintergration
这四个文件
LIO-SAM整体框架
整个工程包含四个文件,同时也是4个功能模块,其功能框架和topic 输入输出如下图所示.与之前开源的lego-slam其主要区别在于增加了IMU预积分功能,而预积分模块也是输出高频率odom核心节点.
在这里插入图片描述
imageProjecion图像映射节点
此节点主要是对接收的原始点云进行去畸变处理,而logo-loam假设了匀速处理,没有进行畸变处理,直接进行了特征提取,而LIO-SAM框架弥补了这不足,从而适应能力更强.
该节点订阅了3个消息,分别是imu原数据, imu预计分提供的odom数据和cloud原始数据,通过imu和imu_odom进行点云去畸变处理然后进行特征提取.
注意,由于预积分进程较为特殊,需要经过一段时间后才能输出稳定的imu_odom,因此在开始时,即初始化时,仅采用imu原始数据进行去畸变处理.
FeatureExtraction 特征提取
此节点仅是对去畸变后的点云进行了角点和平面点进行特征提取,并将处理后的点云发布出去,此节点功能和代码内容延续了lego-slam.
mapOptmization 图优化节点
slam的主要流程,根据预处理后的点云数据进行点云匹配,并增加闭环处理,(采用了因子图优化功能),输出lidar odom.此节点实际上就是一个完整的基于优化思想slam过程.最后输出基于map坐标系的全局lidar odom,用于预积分节点.
imuPreintergration IMU预积分
根据imu原始数据和lidar odom进行因子图优化,估计IMU的零偏,最后积分输出高频率的IMU odom.此节点也是作者最重要的更新的部分.