📚 激光 SLAM :从 LOAM 到 LVI-SAM 🚀(浅学)
📚 激光 SLAM :从 LOAM 到 LVI-SAM 🚀(浅学)
参考视频
1. LOAM (LiDAR Odometry and Mapping) 🌟
1.1 简介 📖

- 发表时间:2014 年,刊登于机器人顶刊 RSS。
- 作者:卡内基梅隆大学(CMU)张继博士。
- 全称:LiDAR Odometry and Mapping in Real-Time(实时激光雷达里程计与建图)。
- 影响力:
- 引用量超 2000 次,经典之作!🏆
- 在 KITTI 里程计榜单中,激光 SLAM 算法排名第一,总榜第三(前两名与视觉相关)。🎯
- 代码:未开源,但香港科技大学(HKUST)的 ELOAM 复现版本常用于对比。
1.2 算法框架 🔧
- 输入:激光雷达点云数据。
- 点云配准:特征提取 + 运动补偿。
- 激光里程计 (LiDAR Odometry):以 10 Hz 输出位姿。
- 激光建图 (LiDAR Mapping):将点云与全局地图匹配,频率 1 Hz。
- 变换整合 (Transform Integration):输出世界坐标系下的位姿。
1.3 优点 ✅
- 创新点:首次提出基于曲率的特征提取方法,领先当时技术。📈
- 运动补偿:针对机械式激光雷达扫描时间不一致问题进行校正。⏱️
- 混合策略:结合 scan-to-map(里程计)和 map-to-map(建图)思想。🗺️
1.4 缺点 ❌
- 无回环检测:缺乏闭环机制,易累积漂移。🔄
- 旋转问题:难以处理大幅旋转变换。
- 适用场景:在 KITTI 城市道路数据集表现优异,因旋转变化少,平移为主,适合 LOAM 优势发挥。🚗
2. LEGO-LOAM 🌱

2.1 简介 📖
- 发表时间:2018 年,刊登于 IROS。
- 作者:MIT 团队,Tixiao Shan(继承 LOAM,称为“接力棒”)。
- 全称:Lightweight and Ground-Optimized LiDAR Odometry and Mapping on Variable Terrain。
- 影响力:引用量超 1000 次,代码已开源。
2.2 算法框架 🔧
- 输入:激光雷达点云数据。
- 地面分割:区分地面点与非地面点。
- 特征提取:分为边缘点和面点,细化特征分类。
- 激光里程计与建图:频率分别为 10 Hz 和 2 Hz。
- 变换整合:输出世界坐标系位姿。
- 创新:轻量化设计,地面优化,新增回环检测模块。
2.3 优点 ✅
- 轻量化:可在 NVIDIA Jetson TX 2 嵌入式平台实时运行。
- 地面优化:处理城市化道路和非平整道路表现优于 LOAM。
- 回环检测:新增回环检测模块,提升长期精度。
- 因子图优化:引入 GTSAM 因子图优化框架。
2.4 缺点 ❌
- 地面分割依赖:算法效果依赖地面分割的准确性。
- IMU 作用有限:松耦合的 IMU 系统作用不显著。
- 回环检测简单:仅在偏移较小时有效,缺乏重定位能力。
3. LIO-SAM 🌍

3.1 简介 📖
- 发表时间:2020 年,刊登于 IROS。
- 作者:Tixiao Shan 团队。
- 全称:Tightly-Coupled LiDAR Inertial Odometry via Smoothing and Mapping。
- 特点:成熟的多传感器融合算法,代码已开源,引用量超 700 次。
- 适用场景:手持设备、车辆、无人船等多种场景。
3.2 算法框架 🔧
- 输入:激光雷达、IMU、GPS(可选)。
- 因子图优化:基于 GTSAM,包含以下因子:
- 🟠 IMU 预积分因子:加速度、角速度、噪声等。
- 🟢 激光里程计因子:关键帧与体素地图匹配。
- 🟡 GPS 因子:在估计协方差较大时插入。
- ⚫ 回环检测因子:搜索 15 米内历史关键帧进行匹配。
- 关键帧:基于距离(1 米)和角度(10 度)阈值选择。
3.3 优点 ✅
- 多传感器融合:激光雷达与 IMU 互补,降低退化场景误差。
- 紧耦合:传感器输入与优化量紧密结合。
- 因子图优化:增量平滑与建图,减少误差。
- 鲁棒性:在激光退化场景表现优异。
3.4 缺点 ❌
- 关键帧特征丢失:未充分利用关键帧间特征。
- 退化场景局限:严重退化场景未针对性优化。
4. LVI-SAM 📸
4.1 简介 📖
- 背景:基于 LEGO-LOAM 和 LIO-SAM,融合视觉、激光雷达、IMU。
- 特点:视觉子系统与激光雷达子系统交互,提升鲁棒性。
- 代码框架:结合视觉里程计与激光里程计,互补优化。
4.2 算法框架 🔧
- 输入:
- 📷 相机:视觉子系统提供回环检测。
- 📡 激光雷达:提供深度信息。
- 📍 IMU:增强紧耦合优化。
- 子系统交互:
- 激光雷达为视觉提供深度信息。
- 视觉为激光雷达提供回环检测。
- 因子图优化:综合多传感器数据,输出高精度位姿。
4.3 优点 ✅
- 多模态融合:视觉与激光雷达互补,提升鲁棒性。
- 紧耦合优化:IMU 在急剧变化场景中提供强约束。
- 全局一致性:建图效果优于 LOAM、LEGO-LOAM,漂移少。
4.4 缺点 ❌
- 复杂性:多传感器融合增加计算复杂性。
- 依赖性:视觉子系统对环境光照敏感。
5. 算法横向对比 🔍
5.1 LOAM 🛠️

- 输入流:从 LiDAR 点云 ( $P_k$) 开始,进入点云配准模块。
- 数据流:
- 点云配准 → 里程计 (10 Hz 更新) → 建图 (1 Hz 输出)。
- 里程计与建图共同 feeding 变换整合模块。
- 频率对比:
- 里程计和变换整合的高频 (10 Hz) 保证实时性。
- 建图的低频 (1 Hz) 优化计算资源。
- 关键点:运动补偿是框架的基础,确保点云数据的一致性。🌟
5.2 框架详细分解 🔧
5.2.1 点云配准 (Point Cloud Registration) 🌱
- 位置:图像中绿色部分。
- 功能:
- 运动补偿:由于机械式激光雷达在扫描过程中,点云并非同一时刻获取(不同点采样时间不一致),需进行校正。
- 方法:通过每个点的时间戳进行插值,投影到同一时刻。
- 特征提取:基于曲率提取特征点,为后续匹配提供基础。
- 运动补偿:由于机械式激光雷达在扫描过程中,点云并非同一时刻获取(不同点采样时间不一致),需进行校正。
- 输出:校正后的点云数据 ( P_k )(1 Hz 未失真点云)。
5.2.2 激光里程计 (LiDAR Odometry) 🌐
- 位置:图像中紫色部分。
- 功能:
- 估计两帧点云之间的相对位姿 (Pose),通过 scan-to-scan 匹配。
- 频率:10 Hz,高频更新确保实时性。
- 输出:两帧间的位置变换数据,传递给变换整合模块。
5.2.3 激光建图 (LiDAR Mapping) 🗺️
- 位置:图像中橙色部分。
- 功能:
- 将连续10帧点云数据与全局地图匹配(scan-to-map),生成世界坐标系下的位置。
- 频率:1 Hz,相对较低以减少计算负担。
- 输出:1 Hz Map Output,更新全局地图。
- 变换更新:提供 1 Hz Transform Update 给变换整合模块。
5.2.4 变换整合 (Transform Integration) 🔗
- 位置:图像中蓝色部分。
- 功能:
- 实时利用世界坐标系下的位置及两时刻间的相对位姿,更新每个时刻的世界坐标系位姿。
- 频率:10 Hz,与里程计保持一致,确保实时输出。
- 输出:10 Hz Transform Output,提供连续位姿估计。
5.3 总结 🎯
- LOAM 框架通过分层设计(配准 → 里程计 → 建图 → 整合)实现高效的实时 SLAM。
- 其创新在于运动补偿和曲率特征提取,但缺乏回环检测,适合平移为主的场景(如城市道路)。
- 频率分配(10 Hz vs 1 Hz)体现了里程计实时性与建图稳定性的平衡。
5.2 📚 LEGO-LOAM 框架分析 🚀
1. LEGO-LOAM 框架概览 🌱

- 输入:激光雷达点云数据 (Point Cloud)。
- 目标:轻量化设计,优化地面分割,实时计算里程计 (Odometry) 和建图 (Mapping),输出世界坐标系下的位姿。
- 频率:
- 里程计更新:10 Hz。
- 建图输出:2 Hz。
- 变换整合更新:10 Hz。
- 核心创新:地面分割 (Segmentation) 和轻量化 (Lightweight) 设计。🌟
2. 框架详细分解 🔧
2.1 点云输入与分割 🌍
- 位置:图像中黄色部分 (Point Cloud)。
- 功能:
- 地面分割 (Segmentation):将点云投影为距离图像(例如16线激光雷达,竖直分辨率16,水平分辨率0.2°,生成1800×16图像,像素值表示到传感器的欧式距离),区分地面点和非地面点。
- 目的:优化非平整或颠簸路段的性能。
- 输出:分割后的点云数据,传递至特征提取。
2.2 特征提取 📈
- 位置:图像中灰色部分 (Feature Extraction)。
- 功能:
- 基于分割结果,从非地面点提取边缘特征 (Edge Features, ( $F_e$ )) 和平面特征 (Planar Features, ( $F_p$))。
- 历史特征 (如 ( $F_e^{t-1}, F_p^{t-1}$ )) 用于匹配。
- 输出:提取的特征点,输入至里程计模块。📍
2.3 激光里程计 (LiDAR Odometry) 🌐
⚠️upload failed, check dev console
- 位置:图像中左侧灰色部分 (Lidar Odometry)。
- 功能:
- 基于提取的特征点,使用两次 LM 优化,计算两帧点云间的相对位姿 (Pose Estimation)。
- 频率:10 Hz,高频确保实时性。
- 输出:相对位姿数据,传递至变换整合。
2.4 激光建图 (LiDAR Mapping) 🗺️
- 位置:图像中右侧灰色部分 (Lidar Mapping)。
- 功能:
- 通过 scan-to-map 匹配,构建全局地图或世界坐标系下的位姿。
- 频率:2 Hz,较低频率优化计算资源。
- 输出:2 Hz 地图更新,传递至变换整合。
- 变换更新:提供位姿数据给变换整合模块。
2.5 变换整合 (Transform Integration) 🔗
- 位置:图像中蓝色部分 (Transform Integration)。
- 功能:
- 实时利用世界坐标系下的位置及两时刻间的相对位姿,更新整体位姿。
- 频率:10 Hz,与里程计保持一致。
- 输出:连续的位姿估计 (Lidar Mapping)。
- 附加输出:变换参数 $( t_x, t_y, t_z, \theta_{roll}, \theta_{pitch}, \theta_{yaw})$
4. 与 LOAM 的对比 🔍
- 相似点:均包含点云配准、里程计、建图和变换整合模块。✅
- 不同点:
- LEGO-LOAM 增加地面分割,提升非平整道路适应性。🌍
- 建图频率从 LOAM 的 1 Hz 提高到 2 Hz,响应更快。⏩
- 轻量化设计是主要改进,适合资源受限设备。💡
5. 总结 🎯
- LEGO-LOAM 在 LOAM 基础上通过地面分割和轻量化实现优化,特别适合非平整路段。
5.3 📚 LIO-SAM 框架分析
1. LIO-SAM 框架概览 🌍

- 输入:激光雷达帧 (LiDAR Frames)、IMU 测量 (IMU Measurements)、GPS 测量 (GPS Measurement, 可选)。
- 目标:通过紧耦合的多传感器融合和因子图优化,实时计算高精度里程计和建图,输出机器人状态节点 (Robot State Node)。
- 核心特点:基于因子图优化的框架,使用关键帧进行匹配。
2. 框架详细分解 🔧
2.1 关键帧与数据输入
- 关键帧:蓝色圆点 (如 $( X_0, X_1, X_2, \ldots, X_j, X_{j+1} )$ )。
- 选择标准:基于距离 (1米) 和角度 (10°) 阈值,超过阈值即为关键帧,丢弃非关键帧以优化计算。📏
- 匹配:关键帧间进行特征匹配。🔗
- 输入数据:
- LiDAR 帧 (LiDAR Frames):蓝色菱形 (如 $( F_0, F_1, F_2, \ldots, F_j, F_{j+1} )$ 。
- LiDAR 子关键帧 (LiDAR Sub-keyframes):辅助匹配。
- IMU 测量:橙色曲线,提供预积分因子。
- GPS 测量:黄色圆点,辅助定位 (使用较少)。
2.2 因子图优化 📊
- 因子类型 (四种因子):
- 🟠 IMU 预积分因子 (IMU Preintegration Factor):
- 包含加速度、角速度及 IMU 噪声 (偏差随机游走、高斯白噪声)。
- 形成两个位置间的约束,作为连接部分。
- 🟢 激光里程计因子 (LiDAR Odometry Factor):
- 基于关键帧与前 N+1 关键帧的体素地图匹配,计算两帧间的位姿变换。
- 与 LOAM 和 LEGO-LOAM 不同,仅使用关键帧特征。
- 🟡 GPS 因子 (GPS Factor):
- 仅在估计位姿协方差大于 GPS 协方差时插入,频率较低。
- ⚫ 回环检测因子 (Loop Closure Factor):
- 搜索当前位置 15 米内历史位置,匹配前后 12 个关键帧特征,构建约束。
- 方法类似 LEGO-LOAM 的回环检测。
- 🟠 IMU 预积分因子 (IMU Preintegration Factor):
2.3 数据流与输出 🌐
- 流程:
- IMU 测量 → 预积分因子 → 约束关键帧位姿。
- LiDAR 帧 → 里程计因子 → 更新关键帧位姿。
- GPS 测量 → GPS 因子 → 辅助校正 (条件触发)。
- 回环检测 → 闭环约束 → 全局优化。
- 输出:机器人状态节点 (如 ( X_j )),通过扫描匹配 (Scan Matching) 优化。
3. 与 LOAM/LEGO-LOAM 的对比 🔍
- 相似点:均处理 LiDAR 数据,包含里程计和建图功能。
- 不同点:
- LIO-SAM 使用关键帧和因子图优化,而 LOAM 和 LEGO-LOAM 依赖帧间直接匹配。
- 引入IMU和GPS因子,增强鲁棒性;LEGO-LOAM 仅靠 LiDAR 优化地面。
- 回环检测更复杂,支持全局闭合。
4. 总结 🌟
- LIO-SAM 通过因子图优化和多传感器融合,显著提升精度和鲁棒性,特别适合退化场景。
5.4 📚 LVI-SAM 框架分析 🚀
1. LVI-SAM 框架概览 📸

- 输入:相机图像 (Camera)、激光雷达点云 (LiDAR)、IMU 测量 (IMU)
- 目标:通过视觉-惯性子系统和激光雷达-惯性子系统的协同,实时计算高精度里程计和建图,输出 IMU-rate 位姿。
- 核心特点:双子系统融合 (视觉 + 激光雷达),互助通信增强鲁棒性。
2. 框架详细分解 🔧
2.1 子系统结构 🌐
- 视觉-惯性子系统 (Visual-Inertial System):
- 输入:相机图像。
- 流程:
- 特征跟踪 (Feature Tracker):提取图像特征(含深度或无深度)。
- 深度配准 (Depth Registration):利用激光雷达提供的深度信息校准特征。
- 激光雷达辅助视觉-惯性里程计 (LiDAR-aided Visual-Inertial Odometry):结合视觉和 IMU 数据计算位姿。
- 输出:视觉里程计数据及回环检测。
- 激光雷达-惯性子系统 (LiDAR-Inertial System):
- 输入:激光雷达点云。
- 流程:
- 去畸变点云 (De-skewed Point Cloud):校正点云运动畸变。
- 特征提取 (Feature Extraction):提取边缘和平面特征。
- 特征匹配 (Feature Matching):匹配当前帧与历史帧特征。
- 激光雷达里程计 (LiDAR Odometry):计算相对位姿。
- 输出:激光雷达里程计数据及深度信息。
2.2 子系统交互 🤝
- 通信机制:
- 激光雷达子系统为视觉子系统提供深度先验,增强特征配准。
- 视觉子系统为激光雷达子系统提供回环检测,优化全局一致性。
- 状态:两个子系统实时交互,互相穿插使用。🔄
2.3 多传感器优化
- 多传感器图优化 (Multi-sensor Graph Optimization):
- 融合视觉和激光雷达里程计数据。
- 利用 IMU 测量进行紧耦合优化。
- 输出:IMU-rate 位姿 (IMU-rate Pose),实现高频更新。
4. 与前述框架的对比 🔍
- 与 LOAM:新增视觉输入和多传感器融合,解决 LOAM 无回环检测的局限。
- 与 LEGO-LOAM:增加视觉子系统,增强非平整路段和退化场景表现。
- 与 LIO-SAM:引入视觉维度,优化回环检测和全局一致性

浙公网安备 33010602011771号