当前位置: 首页 > news >正文

SLAM文献之-LOAM: Lidar Odometry and Mapping in Real-time

LOAM(Lidar Odometry and Mapping in Real-time)是由Ji Zhang等人在 2014 年 IROS 发表的一篇经典 LiDAR SLAM 算法,其论文标题为:

“LOAM: Lidar Odometry and Mapping in Real-time”
J. Zhang and S. Singh, IROS 2014

它被认为是实时激光雷达 SLAM 的奠基性工作之一,广泛应用于无人车、机器人与三维重建等领域。
在这里插入图片描述


一、算法目标与基本思路

LOAM 的目标是利用激光雷达点云在不依赖IMU的条件下,实现高精度、实时的六自由度位姿估计与稠密地图构建。其关键思想是将 SLAM 问题分为两部分并行执行

  1. Lidar Odometry(前端):快速估计当前帧相对于上一帧的位姿,频率高(如 10Hz~20Hz),追求实时性。
  2. Mapping(后端):将多个帧融合构图,频率较低(如 1Hz~2Hz),追求精度。

这种分层异步设计兼顾了实时性与精度。


二、算法流程概述

LOAM 算法流程如下:

                  +----------------+|   Raw LiDAR    ||   Point Cloud  |+-------+--------+|+-------------+----------------+|                              |+------+-----+               +--------+--------+| Feature     |              |   Feature        || Extraction  |              |  Extraction      |+------+-----+               +--------+--------+|                              |+--------+--------+             +-------+--------+| Lidar Odometry  |             |    Mapping     ||   (high-rate)   |             |   (low-rate)   |+--------+--------+             +-------+--------+|                              |+--------------+---------------+|+--------v--------+|   Global Pose   |+----------------+

三、关键算法细节与公式推导

1. 特征提取(Feature Extraction)

特征分类:
  • 边缘点(Edge / Sharp points)
  • 面点(Planar / Flat points)
原理:使用局部曲率(Curvature)来识别点的几何性质。

设一个点为 p i \mathbf{p}_i pi,它的局部邻域为 N i \mathcal{N}_i Ni,则曲率定义为:

c i = 1 ∣ N i ∣ ∥ p i − 1 ∣ N i ∣ ∑ p j ∈ N i p j ∥ 2 c_i = \frac{1}{|\mathcal{N}_i|} \left\| \mathbf{p}_i - \frac{1}{|\mathcal{N}_i|} \sum_{\mathbf{p}_j \in \mathcal{N}_i} \mathbf{p}_j \right\|^2 ci=Ni1 piNi1pjNipj 2

  • 曲率较大:边缘点
  • 曲率较小:平面点

并按照曲率排序,筛选出前 N 个为“边缘强特征”,最后 M 个为“平面强特征”。


2. 前端:Lidar Odometry(LO)

目标:估计相邻帧之间的相对位姿 T k , k − 1 ∈ S E ( 3 ) \mathbf{T}_{k,k-1} \in SE(3) Tk,k1SE(3)

匹配方式:
  • 边缘点 ↔ 直线
    在上一帧中找两个最近邻边缘点,构成一条线段,用当前帧的边缘点去拟合直线最短距离。

  • 平面点 ↔ 平面
    在上一帧中找三个共面点,用当前帧的平面点匹配平面最短距离。

误差模型:
  • 对于一个边缘点 p \mathbf{p} p,其对应线段由点 l 1 , l 2 \mathbf{l}_1, \mathbf{l}_2 l1,l2 构成,残差为点到线的距离:

r edge = ∥ ( p ′ − l 1 ) × ( p ′ − l 2 ) ∥ ∥ l 1 − l 2 ∥ r_{\text{edge}} = \frac{\| (\mathbf{p}' - \mathbf{l}_1) \times (\mathbf{p}' - \mathbf{l}_2) \|}{\| \mathbf{l}_1 - \mathbf{l}_2 \|} redge=l1l2(pl1)×(pl2)

其中 p ′ = R p + t \mathbf{p}' = \mathbf{R} \mathbf{p} + \mathbf{t} p=Rp+t

  • 对于一个平面点 q \mathbf{q} q,其对应平面由三点 p 1 , p 2 , p 3 \mathbf{p}_1, \mathbf{p}_2, \mathbf{p}_3 p1,p2,p3 构成,法向量为:

n = ( p 2 − p 1 ) × ( p 3 − p 1 ) \mathbf{n} = (\mathbf{p}_2 - \mathbf{p}_1) \times (\mathbf{p}_3 - \mathbf{p}_1) n=(p2p1)×(p3p1)

归一化后,点到面的残差为:

r plane = n ⊤ ( R q + t − p 1 ) r_{\text{plane}} = \mathbf{n}^\top (\mathbf{R} \mathbf{q} + \mathbf{t} - \mathbf{p}_1) rplane=n(Rq+tp1)

优化:

组合残差,使用非线性优化(如 Gauss-Newton)求解 ( R , t ) (\mathbf{R}, \mathbf{t}) (R,t)


3. 后端:Mapping

后端以较低频率运行,但使用局部地图(局部体素网格)作为目标,进一步精炼估计。

  • 使用当前帧的特征点与局部地图中的特征点做 ICP 类似的匹配(仍然是点到线/点到面),
  • 优化当前帧相对于全局的位姿 T w , k ∈ S E ( 3 ) \mathbf{T}_{w,k} \in SE(3) Tw,kSE(3),提高精度。

4. 地图管理

  • 地图以滑动窗口方式维护,只保留固定范围内的点云。
  • 地图点云使用 Voxel Grid 下采样,提高效率。

四、主要创新点总结

  1. 将 LiDAR SLAM 拆分为两个异步模块(Odometry + Mapping)

    • 提高实时性与鲁棒性。
  2. 特征点筛选机制:基于曲率挑选边缘与平面点

    • 提升匹配鲁棒性和精度,避免对全部点使用 ICP。
  3. 基于几何残差的快速位姿估计

    • 点到直线、点到平面残差优化,效率高于传统点到点 ICP。
  4. 滑动局部地图管理策略

    • 控制内存和计算复杂度,便于大规模运行。
  5. 去 IMU 化设计(不依赖IMU)

    • 仅使用 LiDAR 实现高精度姿态估计,是早期纯 LiDAR-SLAM 成功代表。

五、与 LOAM 相关的改进版本(如 LeGO-LOAM、LIO-SAM)对比分析

以下是 LOAM 及其代表性改进版本 LeGO-LOAMLIO-SAM 的对比分析,从系统结构、使用传感器、特征提取、地图构建、后端优化等方面进行全面总结,便于理解三者在 SLAM 技术发展中的演进关系。


1、基本信息对比总览

特性LOAM (2014)LeGO-LOAM (2018)LIO-SAM (2020)
输入LiDARLiDAR + IMU(可选)LiDAR + IMU + GNSS(可选)
特征提取边缘点、平面点分段提取,平整地面点优先同 LOAM,但与因子图联合使用
地形适应普通场景地面平整场景(如机器人)通用场景,支持6D运动
后端优化线性 ICP 式优化回环检测 + 基于姿态图局部优化GTSAM 因子图优化(IMU预积分 + 回环 + GPS)
里程计精度中-高高(IMU 强辅助)
实时性高(但依赖更强算力)
是否闭环支持(简单距离检测)支持(Scan Context + 因子图闭环优化)
实现语言C++(原始未开源)C++ + ROS(开源)C++ + ROS2 + GTSAM(开源)
发布平台无正式版本ROS 机器人平台ROS/ROS2,适用于多传感器系统

2、核心改进点详解对比

1️.LOAM(Lidar Odometry and Mapping)
优点:
  • 实时性好:前后端分离设计。
  • 创新特征提取:曲率+几何分类用于高效配准。
  • 架构简单,适合基础教学和入门研究。
缺点:
  • 不支持闭环检测
  • 不处理 IMU、GPS 数据
  • 点云特征匹配鲁棒性一般,易受环境影响。

2️.LeGO-LOAM(Lightweight and Ground-Optimized LOAM)

论文:“LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain”
IEEE IROS 2018

创新点:
  • 分段特征提取:将点云分成若干段(垂直角度通道),独立提取特征点。
  • 利用地面平面性:优先提取地面点(低曲率平面点)进行配准。
  • 支持低速机器人:优化移动地面场景(如无人车、机器人)。
架构改进:
  • IMU 使用可选:增强了旋转估计(IMU 与 LiDAR 融合)
  • 回环检测:加入简单的回环闭环处理机制(基于距离和位姿阈值)
缺点:
  • 地面依赖较强,不适用于空中/无地形特征环境。
  • 后端优化仍较为粗糙(无因子图建模)。

3️.LIO-SAM(Lidar-Inertial Odometry via Smoothing and Mapping)

论文:“LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping”
IEEE/RSJ IROS 2020

创新点:
  • 紧耦合 Lidar-Inertial 融合:IMU 预积分 + LiDAR 特征残差共同构建因子图。
  • 使用 GTSAM:滑动窗口因子图优化,提高全局一致性。
  • 支持 GNSS + 回环:将 GPS、回环信息作为额外因子约束,长期建图精度高。
架构组成:
                +------------------+|   IMU Pre-integ  |+--------+---------+|+-------------v-------------+|       Factor Graph        || (GTSAM: LiDAR + IMU + GPS)|+-------------+-------------+|+----------v---------+| Pose Optimization |+----------+--------+|+---------v---------+| Local Map / Poses |+------------------+
模块特性:
  • 特征提取和 LOAM 类似(边缘/平面点)
  • 将每一帧 LiDAR 点云与滑窗内历史帧构建约束
  • IMU 作为强力初值和约束项,有效提升估计稳定性
优势:
  • 精度大幅提升,适用于无人车等动态场景
  • 可扩展性强(GNSS、回环、视觉)

3、对比实验结果(摘自原论文)

方法KITTI Pose RMSE(m)闭环支持IMU 融合地面优化后端优化
LOAM0.78点云配准
LeGO-LOAM0.67可选点云配准 + 闭环
LIO-SAM0.26滑窗因子图优化

4、总结建议

应用场景推荐方法理由
教学/原理研究LOAM结构清晰,便于学习
地面机器人导航LeGO-LOAM对地面优化,轻量高效
高精度无人车/自动驾驶LIO-SAM精度高,融合能力强

六 、总结

项目描述
输入激光雷达点云(实时)
输出实时 6D 位姿 + 稠密地图
特征点类型边缘点、平面点(基于曲率)
匹配类型点到线、点到面
前端频率高(~10Hz)
后端频率低(~1Hz)
优化方法非线性最小二乘,6D pose
地图管理滑动窗口 + 下采样
创新点双线程结构、几何特征提取与优化、无 IMU 依赖

七 、相关资料

1. 原文下载地址

官方论文链接(PDF)可以通过 CMU 或 RSS 官网访问:

  • https://www.roboticsproceedings.org/rss10/p08.pdf

2. 官方开源代码(非官方原始作者)

原作者未正式开源原版 LOAM,但以下是一个高度还原论文的社区版本:

  • 开源项目名loam_velodyne

  • 作者:laboshinl(GitHub 用户)

  • 地址:https://github.com/laboshinl/loam_velodyne

  • 说明

    • 基于 ROS 实现;
    • 支持 Velodyne 16/32/64 雷达;
    • 特征提取、前后端分离、实时建图均完整实现;
    • 已被广泛引用和扩展(如 LeGO-LOAM 就基于它)。

衍生与改进开源版本

名称简介地址
LeGO-LOAM针对地面车辆优化的轻量版,加入地面约束与回环检测https://github.com/RobustFieldAutonomyLab/LeGO-LOAM
A-LOAM精简且维护良好的 LOAM 实现,方便扩展https://github.com/HKUST-Aerial-Robotics/A-LOAM
LIO-SAMLOAM + IMU + GTSAM(因子图优化)https://github.com/TixiaoShan/LIO-SAM

相关文章:

  • 2025-06-14【视觉】视频转化为图集
  • 2.4.1 ASPICE的编码与单元测试
  • 新能源汽车电子架构革命:深度解析AUTOSAR标准与实践
  • leetcode_49 字母异位分组
  • 写出优秀的 Git 提交信息:一份详尽指南(Angular 风格)
  • 板凳-------Mysql cookbook学习 (十--6)
  • 1 Studying《Arm A715 Software Optimization Guide》
  • Vue 事件修饰符详解
  • Java相关-链表-设计链表-力扣707
  • JavaScript基础-阻止事件冒泡
  • Linux 系统目录结构概述-linux024
  • 实现回显服务器(基于UDP)
  • 自定义 eslint 规则
  • PDF转Markdown基准测试
  • SKUA-GOCAD入门教程-第八节 线的创建与编辑3
  • uniapp的app项目,在华为pad上运行,页面显示异常
  • Odoo 如何系统地管理产品从概念设计到废弃淘汰的全过程
  • pycharm 2025.1.1-专业版jupyter notebook远程连接
  • 从STM32到NXP:GPIO就像装修房子,多了个“智能开关”
  • RabbitMQ的交换机和队列概念
  • 网站代理登录网址/网络销售怎么才能找到客户
  • 做qq群头像网站/百度搜索历史记录
  • 网站的类别/百度广告服务商
  • 怎样可以免费做网站/看网站搜索什么关键词
  • 网站建设作用/优秀的营销策划案例
  • 饰品网站设计方案/海淀区seo引擎优化