Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >一文详解激光SLAM框架LeGO-LOAM

一文详解激光SLAM框架LeGO-LOAM

作者头像
3D视觉工坊
发布于 2021-11-04 07:27:57
发布于 2021-11-04 07:27:57
1.8K0
举报

作者介绍:Zach,移动机器人从业者,热爱移动机器人行业,立志于科技助力美好生活。

LOAM存在的问题

LeGO-LOAM全称为:Lightweight and Groud-Optimized Lidar Odometry and Mapping on Variable Terrain,从标题可以看出 LeGO-LOAM 为应对可变地面进行了地面优化,同时保证了轻量级。

LeGO-LOAM是专门为地面车辆设计的SLAM算法,要求在安装的时候Lidar能以水平方式安装在车辆上;如果是倾斜安装的话,也要进行位姿转换到车辆上。而LOAM对Lidar的安装方式没有要求,即使手持都没有关系。

作者的实验平台是一个移动小车(UGA),挂载了一个Velodyne VLP-16 线激光雷达,还配有一个低精度的 IMU;选用的硬件平台是 Nvidia Jetson TX2(ARM Cortex-A57 CPU);整体负载是 20Kg;移动速度为:2.0m/s;测试场景为:地面不平(比较颠簸)的草地

图1 硬件平台

LOAM框架在这样的硬件环境和使用场景中会存在一些问题:

  1. 由于搭载的是嵌入式系统,计算能力将会受限,LOAM的计算需要将难以满足,致使无法做到实时;
  2. 如果使用LOAM框架,系统计算每个点曲率的处理频率(数据量很大,VLP-16一条线是1800个点)将难以跟上传感器的更新频率;
  3. UGA行驶的路面是非平滑连续的(运动是颠簸的),采集的数据将会失真(运动畸变,匀速运动模型无法适用于颠簸场景),使用LOAM很难在两帧之间找到可靠的特征对应。
  4. 在噪杂的环境中操作UGV也会给LOAM带来一些挑战,例如:浮动的草丛和摆动的树叶的点云将被误提取为角点或面点,这些特征是不可靠的,难以在连续帧之间获取准确的匹配,从而会造成较大的漂移。

LeGO-LOAM的设计思路

对地面点云的配准主要使用的是面点特征;在分割后的点云配准主要使用的是边缘点和面点特征。从中可以看出使用边缘点的数量是要远小于平面点的数量,这也是能实现加速的主要原因。

LeGO_LOAM的软件系统输入 3D Lidar 的点云,输出 6 DOF 的位姿估计。整个软件系统分为 5 个部分:

  • 第一部分:Segmentation: 这一部分的主要操作是分离出地面点云;同时对剩下的点云进行聚类,滤除数量较少的点云簇。
  • 第二部分:Feature Extraction: 对分割后的点云(已经分离出地面点云)进行边缘点和面点特征提取,这一步和LOAM里面的操作一样。
  • 第三部分:Lidar 里程计: 在连续帧之间进行(边缘点和面点)特征匹配找到连续帧之间的位姿变换矩阵。
  • 第四部分:Lidar Mapping: 对feature进一步处理,然后在全局的 point cloud map 中进行配准。
  • 第五部分:Transform Integration: Transform Integration 融合了来自 Lidar Odometry 和 Lidar Mapping 的 pose estimation 进行输出最终的 pose estimate。

LeGO-LOAM的算法细节

图3 噪声环境中一条scan的特征提取过程

A. Segmentation

提取地面点之后,再对剩下的距离图像进行聚类(分簇),过滤掉点云数量小于 30 的点云簇,对保留下来的点云簇分配不同的标签。地面点云属于特殊的一类点云簇(一开始我们就提取出来了)。对点云进行聚类再处理,可以提高运行效率和提取更稳定的特征。例如,小车运行于嘈杂的环境,树叶将会产生不可靠的特征,相同的叶子不太可能在连续两帧扫描中看到。图3(a)是原始点云,包含了很多植被点云;经过处理之后变成了图3(b),只剩下大物体点云,例如:树干。地面点云将被保留以作进一步处理。此时,保留下来的每个点将具备三种属性:(1)点云的标签;(2)在距离图像中的行列数;(3)距离值。

B. Feature Extraction

这一步主要是从地面点云和分割出来的点云中提取特征,与LOAM中的操作一样。主要要搞清楚几个特征点集合的概念。

为了从各个方向均匀地提取特征,我们将距离图像水平分割成几个相等的子图像,将360°均匀分成6等分,每一等分的精度是 300 \times 16(因为VLP-16线Lidar,一条scan是1800个点)。

计算子图中每一行的点的曲率值,对曲率值进行排序分类,> Cth,分为边缘点特征;< Cth 分为面点特征。设置以下几个集合(论文中这部分语句相近,以下是我个人的理解,可能不准确):

C. Lidar Odometry

1)Label Matching:LeGO-LOAM对点云进行了聚类分簇,不同的点云簇具有不同的Label。Label 信息可以作为两帧匹配的约束条件,连续两帧之间只有同类标签点云簇才能进行配准。这种方式可以提高配准的精度和效率。

D. Lidar Mapping

LeGO-LOAM的性能表现

作者为测试LeGO-LOAM的性能,设计了一系列的实验来对比LeGO-LOAM和LOAM的表现性能。

作者在户外的小场景和大场景中,分别对LeGO-LOAM和LOAM测试平台执行激烈和平缓的控制,来查看两者的建图效果和效率。

在小场景的激烈运动过程中:LOAM 会把草丛、树叶提取为边缘点特征(草丛和树叶是不稳定特征的主要来源);而LeGOU-LOAM会过滤掉这些不稳定的特征,只会在树干,地面,台阶等上提取稳定特征。如下图所示(绿色是边缘点,粉色是面点):

在LOAM框架中,剧烈的运动容易造成点云地图的发散,如下图中(a)LOAM,有三个树干。

作者在大场景的都市环境(是一个学校,不同地点的海拔误差在19m之内)里也进行多种测试以验证建图的精度,有人行道,水泥路,土路和草丛。

LOAM 在人行道上的建图效果并不好,可能是一端存在树木叶子的干扰,如下图所示:

在其他三种场景中,LeGO-LOAM的偏差(终点相对于初始位置的偏差)表现都要优于LOAM。

整个测试的结果如下:

  • 特征点数量对比:LeGO-LOAM特征点整体下降幅度超过:29%,40%,68%,72%。
  • 迭代次数对比:里程计的迭代次数降低了34%,48%。
  • 运行时间对比:降低了 60%
  • 位姿误差对比:LeGOLOAM可以用更少的计算时间实现可比或更好的位置估计精度。

参考资料

  1. https://github.com/RobustFieldAutonomyLab/LeGO-LOAM

备注:作者也是我们「3D视觉从入门到精通」特邀嘉宾:一个超干货的3D视觉学习社区

本文仅做学术分享,如有侵权,请联系删文。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3D视觉工坊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别
本文为我在浙江省北大信研院-智能计算中心-情感智能机器人实验室-科技委员会所做的一个分享汇报,现在我把它搬运到博客中。
全栈程序员站长
2022/09/25
5.6K0
SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别
基于激光雷达强度信息的实时SLAM方案
文章:Real-Time Simultaneous Localization and Mapping with LiDAR intensity
点云PCL博主
2023/08/21
6050
基于激光雷达强度信息的实时SLAM方案
代码实战 | 用LeGO-LOAM实现BFS点云聚类和噪点剔除
作者介绍:Zach,移动机器人从业者,热爱移动机器人行业,立志于科技助力美好生活。他也是我们课程学员:基于LiDAR的多传感器融合SLAM:LOAM、LeGO-LOAM、LIO-SAM
用户1150922
2021/12/07
1.1K0
代码实战 | 用LeGO-LOAM实现BFS点云聚类和噪点剔除
基于LOAM的激光SLAM汇总
本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈分享快乐。
点云PCL博主
2021/07/23
1.7K0
基于LOAM的激光SLAM汇总
具有在线外参校准的多激光雷达系统的里程计和地图绘制系统
文章:Robust Odometry and Mapping for Multi-LiDAR Systems with Online Extrinsic Calibration
点云PCL博主
2022/02/10
5590
具有在线外参校准的多激光雷达系统的里程计和地图绘制系统
RailLoMer-V:适用于铁轨系统的多传感器融合SLAM(RAL 2022)
监测铁路安全运营需要精确的轨道车辆定位和长期的铁路环境。国内现行铁道系统的定位策略仍以轨旁系统为主,不仅实时性和准确率都差,而且需要大量的前期投资和后续维护。
3D视觉工坊
2023/04/29
5740
RailLoMer-V:适用于铁轨系统的多传感器融合SLAM(RAL 2022)
一文详解固态激光雷达的里程计(loam_livox)
介绍: 大疆出品,必属精品。 固态激光雷达里程计的工作现阶段还是比较少的,大疆自己出了固态激光雷达后在LOAM的基础上改进了一个适用于固态激光雷达的里程计,该系统可以用在小视场角和非重复性扫描的雷达上。
3D视觉工坊
2020/11/11
1.2K0
一文详解固态激光雷达的里程计(loam_livox)
一文详解SLAM的主要任务和开源框架
SLAM是Simultaneous localization and mapping缩写,意为“同步定位与建图”.
3D视觉工坊
2021/04/13
2.8K0
一文详解SLAM的主要任务和开源框架
LOAM, ALOAM, LegoLOAM, hdl graph slam比较
另外,下面的算法都使用hdl_graph_slam给到的室外数据集做了结果的测试,建模的图像如下所示。由于没有找到轨迹的真实值,没有对轨迹误差做比较分析。
全栈程序员站长
2022/11/15
1.9K0
LOAM, ALOAM, LegoLOAM, hdl graph slam比较
代码实战 | 用LeGO-LOAM实现地面提取
作者介绍:Zach,移动机器人从业者,热爱移动机器人行业,立志于科技助力美好生活。也是我们课程学员:基于LiDAR的多传感器融合SLAM:LOAM、LeGO-LOAM、LIO-SAM
用户1150922
2021/12/07
5840
代码实战 | 用LeGO-LOAM实现地面提取
F-LOAM:基于激光雷达的快速里程计和建图
文章:F-LOAM : Fast LiDAR Odometry and Mapping
点云PCL博主
2022/02/10
1.4K0
F-LOAM:基于激光雷达的快速里程计和建图
PaGO-LOAM:基于地面优化的激光雷达里程计
文章:PaGO-LOAM: Robust Ground-Optimized LiDAR Odometry
点云PCL博主
2022/09/13
3910
PaGO-LOAM:基于地面优化的激光雷达里程计
【SLAM】开源 | 麻省理工开源—Lego-LOAM:在嵌入式设备上达到实时,且精度接近LOAM的激光SLAM算法
论文地址: https://www.researchgate.net/publication/330592017_LeGO-LOAM_Lightweight_and_Ground-Optimized_Lidar_Odometry_and_Mapping_on_Variable_Terrain
CNNer
2020/09/14
2.3K0
LiTAMIN:基于正态分布几何近似的SLAM
声明: 本文只是个人学习记录,侵权可删。论文版权与著作权等全归原作者所有,小王自觉遵守《中华人民共和国著作权法》与《伯尔尼公约》等国内外相关法律,本文禁止转载!!
3D视觉工坊
2021/03/19
1K0
LiTAMIN:基于正态分布几何近似的SLAM
激光slam与视觉slam优缺点_摄影光学与镜头
Slam:同步定位与建图,就是在定位的同时,建立环境地图。 主要思路是根据运动学模型计算位姿,并通过传感得到的环境信息,对估计位姿调整优化,从而得到准确位姿,根据定位及感知数据绘制地图。 下图为slam主流框架:
全栈程序员站长
2022/09/23
3.3K0
激光slam与视觉slam优缺点_摄影光学与镜头
LOAM论文和程序代码的解读
文章:LOAM: Lidar Odometry and Mapping in Real-time
点云PCL博主
2022/12/27
8970
LOAM论文和程序代码的解读
LOAM论文介绍与A-LOAM代码简介
LOAM[1]是Ji Zhang于2014年提出的使用激光雷达完成定位与三维建图的算法,即Lidar Odometry and Mapping。之后许多激光SLAM算法借鉴了LOAM中的一些思想,可以说学习LOAM对学习3D激光SLAM很有帮助。本文对LOAM算法,以及简化版的开源代码A-LOAM进行简单介绍。
3D视觉工坊
2020/12/11
1.7K0
代码实战 | 用LeGO-LOAM实现地面提取
作者介绍:Zach,移动机器人从业者,热爱移动机器人行业,立志于科技助力美好生活。
3D视觉工坊
2021/11/19
1.3K0
代码实战 | 用LeGO-LOAM实现地面提取
Light-LOAM: 基于图匹配的轻量级激光雷达里程计和地图构建
文章:Light-LOAM: A Lightweight LiDAR Odometry and Mapping based on Graph-Matching
点云PCL博主
2023/10/25
6260
Light-LOAM: 基于图匹配的轻量级激光雷达里程计和地图构建
LOAM 论文及原理分析「建议收藏」
由于对三维激光SLAM比较感兴趣,并且最近也在找无人驾驶激光SLAM算法的岗位,所以花了一个多月把LOAM的论文和源码好好看了一遍。发现论文还是比较容易明白,但一看代码全是坑。看论文懂了,看代码似懂非懂。为了尽快把这坑填上,所以诚邀读者一起探讨。作者始终认为填坑最好的方法是拉别人和你一起填坑。由于三千多行的源码不是一篇博客能够讲明白的,所以这篇博客主要讲一下我对LOAM论文的理解,后续会有代码的介绍,希望对大家能有帮助。
全栈程序员站长
2022/08/26
1.1K0
LOAM 论文及原理分析「建议收藏」
推荐阅读
相关推荐
SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档