LeGO-LOAM在LOAM的基础上,通过一系列精巧的工程设计(地面提取、两步优化、标签匹配),牺牲了部分通用性,换取了在特定场景下无与伦比的性能和效率,作为地面机器人激光SLAM的一个高效、实用、鲁棒的解决方案,在于它深刻理解了地面车辆的应用场景的约束,并针对这些约束做出了最有效的优化,这是工程实践的典范。
这是LeGO-LOAM实现轻量化的第一个关键步骤,将3D点云投影到一个2D矩阵上,极大地简化了后续的邻域搜索操作。
数学映射:对于一个点 P(x,y,z),计算其在图像中的坐标 (u,v):

其中:
rr 是点到雷达原点的距离。
uu 是水平方向像素坐标,由水平角决定。
vv 是垂直方向像素坐标,直接对应激光雷达的扫描线索引。
实现: 这个映射关系在 imageProjection.cpp 的 projectPointCloud() 函数中完成,结果存储在 cv::Mat rangeMat 中,这是一个OpenCV的Mat对象,其大小为(扫描线数, 水平分辨率)。
核心思想: 在同一列(同一u值)的相邻扫描线(v和v+1)上取两个点A和B,计算向量AB与水平面的夹角α,如果α接近雷达的安装仰角(θ),则认为A和B 都是地面点。
数学表达:

实现: 在 groundRemoval() 函数中,算法只遍历靠近地面的几根扫描线(例如 groundScanIndex=7),对每一列从上到下进行比较,并将地面点在 groundMat 中标记为 1。
对非地面点进行聚类,以过滤掉噪声(如树叶、草地)。
方法: 使用基于深度图像的广度优先搜索(BFS) 算法,比较相邻像素点的距离 rr,如果两点距离在3D空间中很近,则属于同一物体。 在图像上,比较像素 (u,v)和其邻域像素 (u′,v′) 的雷达距离值 r 和 r′,如果 ∣r−r′∣<距离阈值,则认为两点属于同一个聚类。
过滤: 为每个聚类分配一个标签(Label),点数过少(如 < 30)的聚类被标记为噪声并被剔除。
特征提取的逻辑与LOAM类似,但是在分割和标记后的点云上进行的。
平滑度计算: 对于每个点 ii,在其所在扫描线上计算一定邻域内点的平滑度(粗糙度):

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

面点残差(用于地面优化): 找到当前帧面点 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,最终得到最优解。
原理: 在第一步已经纠正了姿态倾斜和高度后,角点特征对水平平移(x, y) 和偏航角(yaw) 的变化最为敏感。
优化变量:

残差方程:构建一个包含所有角点残差 dLk的残差向量 f2(ξ2)。
求解:同样使用LM算法求解:

最终,将两步的结果合并,得到完整的6自由度位姿变换估计 TT,这种解耦策略显著降低了每次LM优化的维度,减少了计算量,并提高了在特定维度(尤其是地面相关维度)上的估计精度和稳定性。
为了更清晰地定位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优化,支持多地图 | 精度高、回环检测非常强大 | 对动态物体、快速运动、光照变化鲁棒性差 | 室内小尺度静态环境 |