LIO-SAM的全称是:Tightly-coupled Lidar Inertial Odometry via Smoothing and
Mapping
从全称上可以看出,该算法是一个紧耦合的雷达惯导里程计(Tightly-coupled Lidar Inertial
Odometry),借助的手段就是利用GT-SAM库中的方法。
LIO-SAM 提出了一个利用GT-SAM的紧耦合激光雷达惯导里程计的框架。
实现了高精度、实时的移动机器人的轨迹估计和建图。
本篇博客重点解读LIO-SAM框架下IMU预积分功能数据初始化代码部分
LIO-SAM 的代码主要在其主目录内的src文件夹下的四个cpp文件,分别是:
featureExtraction.cpp
imageProjection.cpp
imuPreintegration.cpp
mapOptmization.cpp
每个cpp文件是一个独立的ROS节点,对应着下图的四个模块
lio-sam的所有文件即对应功能在下面做了如下总结:
lio-sam:│ CMakeLists.txt #项目工程配置文件,可以知道作者用了哪些第三方库及cpp生成了什么执行文件
│ LICENSE #软件版权
│ package.xml #ROS包配置文件
│ README.md #项目工程说明文件:文件构成、依赖、运行等
│ ├─config│ │ params.yaml #参数文件
│ │ │ └─doc #存储效果图、流程图、论文等
│ │ │ └─kitti2bag #将kitti数据集转换成bag格式
│ kitti2bag.py│ README.md│ ├─include│ utility.h #参数服务器类,初始化参数;各类公用函数
│ ├─launch│ │ run.launch #总运行launch文件
│ │ │ └─include #分模块运行文件
│ │ module_loam.launch│ │ module_navsat.launch│ │
module_robot_state_publisher.launch│ │ module_rviz.launch│ │ │ ├─config
#存储rviz参数文件和机器人坐标系参数
│ │ rviz.rviz│ │ robot.urdf.xacro│ ├─msg│ cloud_info.msg #自定义ROS数据格式
│ ├─src #源文件
│ featureExtraction.cpp #提取雷达线面特征,发布雷达点云
│ imageProjection.cpp#订阅提取的雷达点云、IMU数据和IMU里程计数据,对雷达做畸变矫正,进行雷达前端里程计位姿粗估计的发布(以IMU频率)
│ imuPreintegration.cpp#IMU预积分,订阅雷达里程计和IMU数据,估计IMU偏置,进行雷达里程计、IMU预积分因子的图优化,输出IMU里程计。
│ mapOptmization.cpp #订阅雷达前端信息、GPS信息,进行点云配准,进行雷达里程计、全局GPS、回环检测因子的图优化。
│ └─srv save_map.srv
本篇主要解读 IMU预积分部分代码,也就是
imuPreintegration.cpp#IMU预积分,订阅雷达里程计和IMU数据,估计IMU偏置,进行雷达里程计、IMU预积分因子的图优化,输出IMU里程计。
全部0条评论
快来发表一下你的评论吧 !