下面把 **LOAM 系列(LOAM / LeGO-LOAM / LIO-SAM)**讲成一套“算法结构 → 关键模块 → 各版本差异 → 核心问题(为什么选边缘点和平面点)”的完整体系。
一、LOAM的核心思想(总览)
LOAM(Lidar Odometry and Mapping)的核心设计是:
通过提取少量稳定的几何特征(边缘点 + 平面点),实现高效且精确的点云配准,并将里程计与建图解耦为两个线程。
两个关键思想(必须记住)
1️⃣ 特征驱动(Feature-based)
- 不用全部点云
- 只用“最有信息量的点”(边缘 + 平面)
2️⃣ 两步优化(Two-stage optimization)
| 模块 | 作用 | 频率 |
|---|---|---|
| 里程计 | 快速估计位姿 | 高频 |
| 建图 | 精细优化 | 低频 |
二、LOAM原始算法详解
1. 整体流程
- 点云预处理(去畸变)
- 特征提取(边缘点 + 平面点)
- 里程计(scan-to-scan)
- 建图(scan-to-map)
2. 特征提取(核心)
每一帧点云:
- 计算曲率
- 排序
- 选取:
- 曲率大的 → 边缘点(edge)
- 曲率小的 → 平面点(plane)
3. 里程计(Odometry)
输入:
- 当前帧特征
- 上一帧特征
方法:
- 边缘点 → 匹配直线
- 平面点 → 匹配平面
输出:
- 当前帧位姿(快速但粗)
4. 建图(Mapping)
输入:
- 当前帧
- 全局地图
方法:
- scan-to-map ICP优化
特点:
- 更精确
- 频率低(降低计算)
三、LeGO-LOAM(轻量级LOAM)
1. 核心改进
针对地面场景优化,引入地面分割
2. 关键模块
1️⃣ 地面分割(Ground Segmentation)
- 利用 ring(扫描线)
- 根据高度变化判断地面
2️⃣ 分离点云
- 地面点
- 非地面点
3️⃣ 特征提取优化
- 在非地面点中提取边缘
- 在地面点中提取平面
4️⃣ 点云聚类
- 提高结构稳定性
3. 优点
- 计算量更小
- 更适合自动驾驶(地面场景)
4. 局限
- 依赖地面假设
- 不适合复杂地形
四、LIO-SAM(紧耦合IMU)
1. 核心思想
将IMU与LiDAR进行紧耦合融合,引入因子图优化
2. 关键模块
1️⃣ IMU预积分(Preintegration)
- 提供高频位姿预测
- 用于去畸变(deskew)
2️⃣ 点云特征提取
- 类似LOAM(边缘 + 平面)
3️⃣ 因子图优化(Factor Graph)
使用图优化(如GTSAM):
节点:
- 位姿
约束:
- LiDAR因子(点云匹配)
- IMU因子(运动约束)
4️⃣ 回环检测(Loop Closure)
- 减少漂移
3. 优点
- 精度高
- 鲁棒性强
- 抗快速运动
4. 本质区别
| 方法 | 特点 |
|---|---|
| LOAM | 松耦合 |
| LIO-SAM | 紧耦合(IMU + LiDAR) |
五、三者对比总结(重点)
| 方法 | 特点 | 优势 | 场景 |
|---|---|---|---|
| LOAM | 特征 + 两步优化 | 实时性好 | 通用SLAM |
| LeGO-LOAM | 地面优化 | 轻量、稳定 | 自动驾驶 |
| LIO-SAM | 紧耦合IMU + 图优化 | 高精度、高鲁棒 | 高动态环境 |
六、核心问题:为什么LOAM只提取边缘点和平面点?
这是必问。
标准回答逻辑(建议背)
1️⃣ 降低计算量(最直接)
- 原始点云:10万级
- 特征点:几千个
结论:
用少量点替代全部点 → 提高实时性
2️⃣ 提供稳定约束(核心原因)
边缘点(Edge)
- 提供“方向约束”
- 对应直线特征
平面点(Plane)
- 提供“面约束”
- 限制位姿自由度
3️⃣ 避免退化(关键)
如果只用平面点:
- 无法约束某些方向(滑动)
如果只用边缘点:
- 不稳定
结论:
边缘 + 平面 = 完整约束6自由度
4️⃣ 提升匹配精度
- 特征点更稳定
- 减少错误匹配
5️⃣ 抗噪能力强
- 平面点:平滑
- 边缘点:结构明显
七、从数学角度理解(加分)
- 位姿有6自由度(3平移 + 3旋转)
- 不同特征提供不同约束:
| 特征 | 约束类型 |
|---|---|
| 边缘 | 线约束 |
| 平面 | 面约束 |
八、标准回答(必背)
问:LOAM为什么提取边缘点和平面点?
建议回答:
LOAM选择边缘点和平面点作为特征,主要有三个原因: 第一,可以显著减少点云数量,从而提高实时性; 第二,这两类特征具有稳定的几何结构,边缘点提供方向约束,平面点提供面约束,可以有效约束位姿的6自由度; 第三,相比随机点,这些特征点更具有代表性,可以提高匹配精度并降低噪声影响。
九、结合你项目的加分表达
你可以这样说:
在我的项目中,如果需要进行点云配准或SLAM,会优先提取边缘和平面特征点,以减少计算量并提高匹配稳定性,同时结合IMU或其他传感器进一步提升系统鲁棒性。
十、一句话总结
LOAM通过“特征提取 + 两步优化”实现高效SLAM,而边缘点和平面点的选择本质上是为了在保证几何约束的同时降低计算复杂度。