📚 激光 SLAM :从 LOAM 到 LVI-SAM 🚀(浅学)

📚 激光 SLAM :从 LOAM 到 LVI-SAM 🚀(浅学)
参考视频

1. LOAM (LiDAR Odometry and Mapping) 🌟

1.1 简介 📖

image.png|500

  • 发表时间: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 🌱

image.png|500

2.1 简介 📖

  • 发表时间:2018 年,刊登于 IROS
  • 作者:MIT 团队,Tixiao Shan(继承 LOAM,称为“接力棒”)。
  • 全称Lightweight and Ground-Optimized LiDAR Odometry and Mapping on Variable Terrain
  • 影响力:引用量超 1000 次,代码已开源。

2.2 算法框架 🔧

  • 输入:激光雷达点云数据。
  • 地面分割:区分地面点与非地面点。
  • 特征提取:分为边缘点和面点,细化特征分类。
  • 激光里程计与建图:频率分别为 10 Hz2 Hz
  • 变换整合:输出世界坐标系位姿。
  • 创新:轻量化设计,地面优化,新增回环检测模块。

2.3 优点 ✅

  • 轻量化:可在 NVIDIA Jetson TX 2 嵌入式平台实时运行。
  • 地面优化:处理城市化道路和非平整道路表现优于 LOAM。
  • 回环检测:新增回环检测模块,提升长期精度。
  • 因子图优化:引入 GTSAM 因子图优化框架。

2.4 缺点 ❌

  • 地面分割依赖:算法效果依赖地面分割的准确性。
  • IMU 作用有限:松耦合的 IMU 系统作用不显著。
  • 回环检测简单:仅在偏移较小时有效,缺乏重定位能力。

3. LIO-SAM 🌍

image.png|500

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 🛠️

image.png|800

  • 输入流:从 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 框架概览 🌱

image.png|800

  • 输入:激光雷达点云数据 (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 框架概览 🌍

image.png|800

  • 输入:激光雷达帧 (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 的回环检测。
2.3 数据流与输出 🌐
  • 流程
    • IMU 测量 → 预积分因子 → 约束关键帧位姿。
    • LiDAR 帧 → 里程计因子 → 更新关键帧位姿。
    • GPS 测量 → GPS 因子 → 辅助校正 (条件触发)。
    • 回环检测 → 闭环约束 → 全局优化。
  • 输出:机器人状态节点 (如 ( X_j )),通过扫描匹配 (Scan Matching) 优化。

3. 与 LOAM/LEGO-LOAM 的对比 🔍

  • 相似点:均处理 LiDAR 数据,包含里程计和建图功能。
  • 不同点
    • LIO-SAM 使用关键帧因子图优化,而 LOAM 和 LEGO-LOAM 依赖帧间直接匹配。
    • 引入IMUGPS因子,增强鲁棒性;LEGO-LOAM 仅靠 LiDAR 优化地面。
    • 回环检测更复杂,支持全局闭合。

4. 总结 🌟

  • LIO-SAM 通过因子图优化和多传感器融合,显著提升精度和鲁棒性,特别适合退化场景。

5.4 📚 LVI-SAM 框架分析 🚀

1. LVI-SAM 框架概览 📸

image.png|800

  • 输入:相机图像 (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:引入视觉维度,优化回环检测和全局一致性
posted @ 2025-06-29 17:22  边走边唱如诗如理想  阅读(10)  评论(0)    收藏  举报