网站建设有几块,郑州新站网站推广工具,网络热词的利弊,房产cms系统文章目录 简介算法概述1.点云去畸变1.1 主要功能1.2 主要流程 2.特征提取3.IMU预积分4.地图优化5.算法评估 简介
LIO-SAM在lego-loam的基础上新增了对IMU和GPS的紧耦合#xff0c;采用一个因子图对位姿进行优化#xff0c;包括IMU因子#xff0c;激光里程计因子#xff0c… 文章目录 简介算法概述1.点云去畸变1.1 主要功能1.2 主要流程 2.特征提取3.IMU预积分4.地图优化5.算法评估 简介
LIO-SAM在lego-loam的基础上新增了对IMU和GPS的紧耦合采用一个因子图对位姿进行优化包括IMU因子激光里程计因子GPS因子、回环因子。
虽然在创新点上没什么让人觉得有趣的东西但是在性能上相比Lego-Loam因为加入了高频的IMU在一些不好的场景下表现要更鲁棒回环处的漂移也更小。
不过虽然加入了IMU但似乎连松耦合都称不上IMU预积分在LIO-SAM中的作用仅用来对激光点云做运动补偿去畸变以及在scan-2-map时提供优化的初始位姿
综上算是一个比较不错的入门算法吧。
参考链接 https://zhuanlan.zhihu.com/p/614039247
算法概述
算法输入 激光点云IMU原始数据GPS(可选) 主要模块
点云去畸变对应imageProjection.cpp特征提取对应featureExtraction.cppIMU预积分对应imuPreintegration.cpp地图优化对应mapOptmization.cpp 1.点云去畸变
相比于Lego-Loam这里没有对点云进行分割和聚类操作而是直接去畸变后将点云以及对应的位姿发布给特征提取模块。
1.1 主要功能
imageProjecttion的主要功能是订阅原始点云数据和imu数据根据高频的imu信息对点云成像时雷达的位移和旋转造成的畸变进行校正同时在发布去畸变点云的时候加入IMU输出的角度和IMU里程计imuPreintegration的角度和位姿作为该帧的初始位姿作为图优化的初始估计并且要对点云的Range进行计算同时记录每个点的行列以便在特征提取中被使用
1.2 主要流程
接收到一帧点云从IMU原始数据队列找到该帧点云时间戳对应的数据将IMU的roll、pitch、yaw塞进准备发布的该帧点云信息提取该帧点云的起止时间戳激光雷达点云的每个点都有相对于该帧起始时间的时间间隔对起止时间内的IMU数据进行角度积分得到该帧点云每个时刻对应的旋转。 注意这里算法使用的是简单的角度累加实际上是积分的近似但是在很短的时间内10Hz雷达对应100ms的扫描时间近似的累加可以代替角度积分。 猜想这里是因为点云去畸变是整个SLAM流程的入口要保证足够的实时性因此用累加代替真正的角度积分遍历该帧点云每个点旋转到起始点坐标系从IMU里程计提取该帧点云对应的位姿包括位置和旋转塞进准备发布的该帧点云信息发布该帧点云信息
2.特征提取
接收到从imageProjection中发布出的一个去畸变点云信息cloudInfo(自定义格式)对每个点计算曲率。计算时是计算周围点的平均距离用来作为曲率的替代标记遮挡点和与激光平行的点后续这些点不能采纳为特征点特征提取。分别做角点曲率大和平面点曲率小特征点提取整合信息发布完整数据包
过程同Lego-Loam,详细见博客《Lego-Laom算法深度解析》
3.IMU预积分
和VIO常见算法不同LIO-SAM是通过激光里程计矫正IMU的累计误差然后对IMU原始数据进行连续积分得到关于IMU的里程计然后根据IMU的实时积分结果对激光点云进行运动补偿实现对点云的去畸变。
4.地图优化
读取特征提取模块的线特征和平面特征以及由IMU预积分提供的初始位姿基于初始位姿和局部地图进行scan-2-map的匹配得到矫正后位姿将矫正后位姿加入因子图进行优化得到里程计位姿同时会进行回环检测检测到回环后作为新的因子加入优化更新局部地图关键帧位姿同时如果存在GPS信息会将其加入因子图一起进行优化
5.算法评估
论文中的对标基线是LOAM下面的链接对LOAM系列的几个算法做了比较详细的评测整体上LIO-SAM的稳定性较好因为加入了IMU回环处的漂移较小 https://github.com/Tompson11/SLAM_comparison