您现在所在的位置:主页 > www.0504.cc >

基于LOAM框架的激光SLAM开源程序集合

发布日期:2022-08-11 01:37   来源:未知   阅读:

  为了减缓单帧点云位姿变换产生的累计误差设计了Lidar Mapping 的部分。即将与前一帧配准后的点云与生成的地图进行二次配准消除漂移。

  由于作者编写的LOAM代码已经闭源目前网上存在着一些代码的复现版本本文对这些复现版本进行了汇总并概括说明了各个版本代码的特点供正在学习LOAM相关算法的同学进行参考。

  该代码程序为按照LOAM论文复现的原生代码特点是基于ROS框架可直接适用于velodyne-16线激光雷达的建图。对于想学习ROS使用的同学可以从中了解到如何利用ROS进行消息的接收与发布如何通过ROS中的tf完成坐标系之间的转换。

  算法中涉及到的数学公式如非线c;并未采用已有的开源库而是手工一步步推导需要一定数学基础理解代码。但通过代码的学习可以加深对公式的理解。

  对于上述代码网上也存在含有中文注释的版本代码链接如下

  利用了Ceres库提供的非线c;完成了L-M算法中雅克比的推导去除了IMU数据的引入。整体代码更加规范整洁非常适合学习LOAM思想也适合新手入门3D激光SLAM。

  脱离了ROS环境实现了LOAM数据通过函数参数进行传入传出整体代码设计十分整洁适合想要搭建属于自己的激光SLAM程序的同学进行借鉴。

  利用livox固态激光雷达基于LOAM的思想设计出的算法。因此同样地基于livox数据进行了特征点提取特征点的匹配和残差计算与LOAM一致。同时利用Ceres库优化了残差。

  整个算法分为五个模块。首先对单帧点云进行Segmentation将其投影为一副1800*16的图像上每一个收到的点代表一个像素。提取出地面点聚类并将非地面点分组为多个聚类每个聚类的点云具有一致的标签。

  与LOAM近似的方式提取出角点和平面点。在Lidar Odometry的环节中选取具有一致标签的点云进行匹配。例如平面点只考虑标记为地面点的点边缘点只考虑其他标记大物体的点以此提升匹配速度。采用两步L-M优化得到前后帧点云的位姿变换。通过配准平面点得到[tz, roll, pitch], 通过配准角点来估计[tx, ty, yaw]。在Lidar Mapping 环节将特征点与周围点云图配准同时增添了图优化和回环检测进一步优化位姿变换减少漂移。