首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeGO-LOAM 核心技术原理与数学推导详解

LeGO-LOAM 核心技术原理与数学推导详解

作者头像
用户2423478
发布2025-10-31 19:08:00
发布2025-10-31 19:08:00
140
举报
文章被收录于专栏:具身小站具身小站

LeGO-LOAM在LOAM的基础上,通过一系列精巧的工程设计(地面提取、两步优化、标签匹配),牺牲了部分通用性,换取了在特定场景下无与伦比的性能和效率,作为地面机器人激光SLAM的一个高效、实用、鲁棒的解决方案,在于它深刻理解了地面车辆的应用场景的约束,并针对这些约束做出了最有效的优化,这是工程实践的典范。

1. 点云分割与地面提取的数学原理

1.1 点云到距离图像的投影

这是LeGO-LOAM实现轻量化的第一个关键步骤,将3D点云投影到一个2D矩阵上,极大地简化了后续的邻域搜索操作。

数学映射:对于一个点 P(x,y,z),计算其在图像中的坐标 (u,v):

其中:

rr 是点到雷达原点的距离。

uu 是水平方向像素坐标,由水平角决定。

vv 是垂直方向像素坐标,直接对应激光雷达的扫描线索引。

实现: 这个映射关系在 imageProjection.cpp 的 projectPointCloud() 函数中完成,结果存储在 cv::Mat rangeMat 中,这是一个OpenCV的Mat对象,其大小为(扫描线数, 水平分辨率)。

1.2 地面点标记

核心思想: 在同一列(同一u值)的相邻扫描线(v和v+1)上取两个点A和B,计算向量AB与水平面的夹角α,如果α接近雷达的安装仰角(θ),则认为A和B 都是地面点。

数学表达:

实现: 在 groundRemoval() 函数中,算法只遍历靠近地面的几根扫描线(例如 groundScanIndex=7),对每一列从上到下进行比较,并将地面点在 groundMat 中标记为 1。

1.3 点云聚类

对非地面点进行聚类,以过滤掉噪声(如树叶、草地)。

方法: 使用基于深度图像的广度优先搜索(BFS) 算法,比较相邻像素点的距离 rr,如果两点距离在3D空间中很近,则属于同一物体。 在图像上,比较像素 (u,v)和其邻域像素 (u′,v′) 的雷达距离值 r 和 r′,如果 ∣r−r′∣<距离阈值,则认为两点属于同一个聚类。

过滤: 为每个聚类分配一个标签(Label),点数过少(如 < 30)的聚类被标记为噪声并被剔除。

2. 特征提取

特征提取的逻辑与LOAM类似,但是在分割和标记后的点云上进行的。

平滑度计算: 对于每个点 ii,在其所在扫描线上计算一定邻域内点的平滑度(粗糙度):

其中 S 是点 i 前后连续的点集。

  • 角点:平滑度 cc 最大的点,通常位于物体边缘或转角。
  • 面点:平滑度 cc 最小的点,通常位于平面表面。
  • 额外约束:避免选择被遮挡区域附近的点(类似LOAM),并且只从具有相同聚类标签的点中选取特征,这大大提高了特征匹配的鲁棒性。

3. 两步LM优化的数学推导

这是LeGO-LOAM最核心的创新,它将6自由度的位姿变换的解耦优化变成了两个更简单、更稳定的3自由度优化问题。

3.1 问题建模:点到面和点到线的距离残差

面点残差(用于地面优化): 找到当前帧面点 Xi 在全局地图中对应的平面,一个平面可以由一个点 Xj 和其法向量 n 确定,点到面的距离残差为:

其中 T 是待求的位姿变换。

角点残差(用于偏航优化): 找到当前帧角点 Xi 在全局地图中对应的直线。一条直线可以由两个点 Xj, Xl 确定。点到线的距离残差为:

3.2 第一步:通过地面面点优化 [θₓ, θᵧ, t_z]

原理: 地面点云对机器人的俯仰(pitch)、滚动(roll) 和高度(z) 变化极为敏感,而对水平平移(x, y)和偏航(yaw)的变化不敏感。

优化变量:

残差方程:构建一个包含所有地面面点残差 dSk的残差向量 f1(ξ1)。

求解:使用(LM) 算法求解非线性最小二乘问题:

LM算法的核心是迭代求解线性方程:

其中 J1 是残差 f1 关于优化变量 ξ1 的雅可比矩阵,λ 是阻尼因子,通过迭代求解 δξ1 并更新 ξ1,最终得到最优解。

3.3 第二步:通过角点优化 [tₓ, t_y, θ_z]

原理: 在第一步已经纠正了姿态倾斜和高度后,角点特征对水平平移(x, y) 和偏航角(yaw) 的变化最为敏感。

优化变量:

残差方程:构建一个包含所有角点残差 dLk的残差向量 f2(ξ2)。

求解:同样使用LM算法求解:

最终,将两步的结果合并,得到完整的6自由度位姿变换估计 TT,这种解耦策略显著降低了每次LM优化的维度,减少了计算量,并提高了在特定维度(尤其是地面相关维度)上的估计精度和稳定性。

4. LeGO-LOAM 与其他SLAM算法的横向对比

为了更清晰地定位LeGO-LOAM在SLAM技术生态中的位置,将其与具有代表性的其他几类SLAM算法进行对比。

算法类别

代表性算法

传感器

核心原理

优势

劣势

适用场景

激光SLAM(基于特性)

ALOAM

3D Lidar

提取角点、面点特征,进行帧间匹配与地图匹配优化

高精度、开创性工作

计算量大、无回环、对运动畸变敏感

无人机、实验环境

LeGO-LOAM

3D Lidar (+IMU)

在LOAM基础上:点云分割、地面优化、两步LM优化、标签匹配

轻量化、地面场景鲁棒性强、计算效率高、可集成回环

性能依赖于地面存在、非地面场景优势减弱

地面移动机器人(AGV、UGV)、户外导航

激光SLAM (基于面元/NDT)

Cartographer

2D/3D Lidar

基于子图的图优化,使用分支定界法进行扫描匹配

回环检测能力强、累计误差控制优秀、非常稳定

配置复杂、计算资源消耗较大

室内大尺度场景建图(扫地机器人、仓储物流)

紧耦合激光惯性里程计

LIO-SAM

3D Lidar + IMU

因子图优化,紧耦合融合IMU预积分、激光里程计、GPS、回环

精度极高、IMU有效补偿运动畸变、全局一致性最好

系统复杂、对IMU质量要求高、计算量最大

高精度定位与建图、剧烈运动场景(无人机、自动驾驶)

视觉惯性里程计(SLAM)

VINS-Mono

Mono Camera + IMU

基于视觉特征点,与IMU进行紧耦合非线性优化

传感器便宜、信息丰富(纹理)

对光照、纹理敏感、易丢失、尺度不确定性(单目)

计算资源受限、轻量级应用(AR/VR、手机机器人)

纯视觉SLAM

ORB-SLAM3

Mono/RGB-D Camera

基于ORB特征点,共视图、本质图、Sim3优化,支持多地图

精度高、回环检测非常强大

对动态物体、快速运动、光照变化鲁棒性差

室内小尺度静态环境

  • 如果是地面机器人(如巡检车、农业机器人)、主要运行在户外或有地面的环境、计算资源有限(Jetson TX2等):LeGO-LOAM是首选,提供了精度、效率和鲁棒性的最佳平衡。
  • 如果机器人运动剧烈(如无人机)或需要极高的精度:选择 LIO-SAM 等紧耦合激光惯性方案。
  • 如果需要构建大规模室内地图且对回环要求极高:Cartographer 可能是更稳妥的选择。
  • 如果平台没有激光雷达,或者成本敏感:考虑 VINS 等视觉惯性方案。
  • 如果在学术研究,追求高精度且环境静态:ORB-SLAM3 是视觉领域的标杆。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 具身小站 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 点云分割与地面提取的数学原理
    • 1.1 点云到距离图像的投影
    • 1.2 地面点标记
    • 1.3 点云聚类
  • 2. 特征提取
  • 3. 两步LM优化的数学推导
    • 3.1 问题建模:点到面和点到线的距离残差
    • 3.3 第二步:通过角点优化 [tₓ, t_y, θ_z]
  • 4. LeGO-LOAM 与其他SLAM算法的横向对比
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档