3d激光SLAMLIO-SAM框架介绍

描述

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节点,对应着下图的四个模块

SAM

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里程计。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分