点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

1 前言

LOAM, 即Lidar Odometry and Mapping,是 Ji Zhang 博士于2014年提出的使用激光雷达完成定位与三维建图的算法。其算法流程如下:

LOAM算法中主要包含两个模块,一个是Lidar Odometry:基于输入点云提取出角点与平面点作为特征点进行关联匹配,计算出两次扫描之间的位姿变换,计算频率为10HZ;

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

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

2 基于LOAM框架的开源激光SLAM算法

(1) loam_velodyne

代码链接如下:

laboshinl/loam_velodyne: Laser Odometry and Mapping (Loam) is a realtime method for state estimation and mapping using a 3D lidar. (github.com):https://github.com/laboshinl/loam_velodyne

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

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

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

cuitaixiang/LOAM_NOTED: loam code noted in Chinese(loam中文注解版) (github.com):https://github.com/cuitaixiang/LOAM_NOTED

(2) A-LOAM

代码链接如下:

HKUST-Aerial-Robotics/A-LOAM: Advanced implementation of LOAM (github.com):https://github.com/HKUST-Aerial-Robotics/A-LOAM

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

(3)oh_my_loam

代码链接如下:

feixyz10/oh_my_loam: ROS-free implementation of LOAM (github.com):https://github.com/feixyz10/oh_my_loam

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

(4) loam_livox

代码链接如下:

hku-mars/loam_livox: A robust LiDAR Odometry and Mapping (LOAM) package for Livox-LiDAR (github.com):https://github.com/hku-mars/loam_livox

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

(5) LEGO-LOAM

代码链接如下:

irapkaist/SC-LeGO-LOAM: LiDAR SLAM: Scan Context + LeGO-LOAM (github.com):https://github.com/irapkaist/SC-LeGO-LOAM

在LOAM的基础上,做了很大的优化。其算法流程为:

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

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

相应的,网上也存在着其中文注释版本

wykxwyc/LeGO-LOAM_NOTED: LeGO-LOAM代码注释与学习 (github.com):https://github.com/wykxwyc/LeGO-LOAM_NOTED

(6) SC-LEGO-LOAM

代码链接如下:

irapkaist/SC-LeGO-LOAM: LiDAR SLAM: Scan Context + LeGO-LOAM (github.com):https://github.com/irapkaist/SC-LeGO-LOAM

SC-LEGO-LOAM 融合了ScanContext 与 LEGO-LOAM,其中ScanContext是一种点云数据的全局描述符,其提取方法如下:

由于回环检测(场景识别)= 场景描述 + 搜索, Scan context 的作用是作为描述符来描述点云数据,其搜索算法可以保证回环能够被快速检测出来。因此将ScanContext应用到LEGO-LOAM的回环检测部分,提高回环的速度和准确性。

3 一些学习建议

对于初学者而言,为了掌握LOAM的框架算法,可以在阅读论文了解原理后,优先对A-LOAM代码进行阅读和理解,快速掌握算法实现的流程。在熟悉LOAM算法框架后,工程实践中,LEGO-LOAM在自动驾驶领域的建图中应用较多,因此可以重点对LEGO-LOAM进行学习,并再此基础上提出自己的改进并进行实验。

编者注:

这里也推荐下本文作者精心筹备的彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化视频课程

▲微信扫码可查看、购买、学习课程

基于LOAM框架的激光SLAM开源程序汇总相关推荐

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

    一.前言 LOAM, 即Lidar Odometry and Mapping,是 Ji Zhang 博士于2014年提出的使用激光雷达完成定位与三维建图的算法.其算法流程如下: LOAM算法中主要包含 ...

  2. java网上商城学年论文_基于java框架的网上购物商城程序(毕业设计)+论文

    这是一份网上购物商城程序毕业设计开发语言是java,数据库是mysql 摘 要 随着现在社会信息化的高度发展,中国的互联网迎来了新一轮的发展高潮,人们选择上网的方式更加多样化了,同时网上购物作为电子商 ...

  3. 激光slam学习笔记——基于图优化的激光slam方法

    激光slam学习笔记--基于图优化的激光slam方法 1.slam基础 整体来说,在激光slam中,滤波器的误差要小于图优化的误差. 图优化通俗点说就是里程计计算的位姿与观测到的位姿之间会形成一个误差 ...

  4. 彻底搞懂基于LOAM框架的3D激光SLAM全套学习资料汇总!

    地图定位算法是自动驾驶模块的核心,而激光SLAM则是地图定位算法的关键技术,其重要性不言而喻,在许多AI产品中应用非常多(包括但不限于自动驾驶.移动机器人.扫地机等).相比于传统的视觉传感器,激光传感 ...

  5. 视觉SLAM开源方案汇总及设备选型建议

    作者I Mega_Li 编辑I 3D视觉开发者社区 文章目录 一.SLAM的引入 1.1定义 1.2开发背景 二.视觉SLAM 2.1 经典视觉SLAM框架 2.2视觉SLAM方案的分类 2.3 开源 ...

  6. 微信小程序 |基于Flask框架实现智能菜谱小程序

    文章目录 一.效果预览 1.1 首页推荐图 1.2 菜谱智能识别页面 1.3 菜谱类别列表 1.4 步骤详情 二.需求背景 三.技术架构 3.1 系统整体架构图 3.2 系统技术栈 3.3 系统数据流 ...

  7. 一个很酷的基于OpenGL + C#的Wince界面开源程序

    前些时间在微软开源网站发现了Silvermoon.花了一个多星期的研究.解决了分辨率的问题,然而在中文显示上费了很大功夫至今无果. 看了作者上面的讨论,需重写StringShape这个类.看了下Ope ...

  8. 基于SSM框架食堂订餐微信小程序

    随着我国经济迅速发展,人们对网络管理的需求越来越大,各种系统也越来越多,由于微信的发展,微信的功能越来越齐全,越来越多的人开始使用微信,使用微信微信订餐的人也在不断增加.因此,特开发了本微信小程序-- ...

  9. 安装运行symfony框架编写的edusoho开源程序

    mac电脑. ×××地址: http://www.github.com/edusoho/edusoho 官网: http://www.edusoho.com/ 按此教程先安装和设置symfony: h ...

  10. 语义SLAM开源代码汇总

    作者丨Moonkissu@知乎 来源丨https://zhuanlan.zhihu.com/p/64825421 编辑丨3D视觉工坊 之前做的深度学习闭环检测 这方面,最近想了解下语义这方面,于是总结 ...

最新文章

  1. 自动识别口罩佩戴模型在线教学,抗疫在家涨知识!
  2. PPP协议详解(转载)
  3. 一种解决 MacBook 里的 App Store 无法登录的问题
  4. 助理来也胡一川:用数据驱动打造智能行业助理(技术+业务)
  5. Pattern-No.07 设计模式之单例模式
  6. 机器学习之线性回归 损失函数、代价函数、目标函数
  7. wordpress主题Z-blog拓源纯净版
  8. (best!)JAVA中文字符编码问题详解
  9. 分享Silverlight/WPF/Windows Phone一周学习导读(11月6日-11月12日)
  10. 正则表达式去掉文件路径中的特殊字符
  11. Hbase的安装与测试
  12. 证明3-SAT问题是NP-complete
  13. Qt的QDataStream
  14. 教你用报表工具搭建企业考核系统
  15. 计算机考试打字小作文,打字练习作文(通用5篇)
  16. 华为S5700交换机升级记录
  17. Android软件开发用什么语言?
  18. [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量安装eclipse
  19. 7-10 公路村村通 (最小生成树Prim算法) | PTA数据结构与算法——C语言实现
  20. Windows删除流氓软件方法记录

热门文章

  1. Ubuntu下RabbitMQ安装
  2. chrome浏览器再次打开黑屏一段时间
  3. YTU 2553: 谁是赢家
  4. PowerDesigner中Table视图同时显示Code和Name
  5. Apache Mina框架自身实现的过滤器
  6. 如何让遮罩层悬浮在object标签中
  7. MySQL数据库优化的几种方式
  8. Linux 安装 safe-rm 工具(转载)
  9. C++11 regex库
  10. 27. 使用distance和advance将容器的const_iterator转换成iterator