在手持3D扫描和机器人导航领域,SLAM(同步定位与建图)算法的选择直接决定了建图精度、实时性能和硬件成本。来自香港大学MARS实验室(HKU-MARS)的三个算法——FAST-LIO2、R3LIVE、Point-LIO——是目前开源社区最受欢迎的LiDAR惯性里程计算法。
本文将逐一拆解它们的原理、优劣势和最佳使用场景,并附上实操配置经验,帮你快速做出选型决策。
三大算法一览
| 对比维度 | FAST-LIO2 | R3LIVE | Point-LIO |
|---|---|---|---|
| 传感器输入 | LiDAR + IMU | LiDAR + IMU + 摄像头 | LiDAR + IMU |
| 输出类型 | 点云地图(单色) | 点云地图(彩色)+ 位姿 | 点云地图(单色) |
| 里程计频率 | LiDAR帧率(通常10Hz) | LiDAR帧率(10Hz) | 4-8 kHz(逐点处理) |
| 回环检测 | ❌ 无(需外接模块) | ❌ 无(需外接模块) | ❌ 无 |
| RGB彩色重建 | ❌ 不支持 | ✅ 实时上色 | ❌ 不支持 |
| IMU饱和处理 | 基于模型补偿 | 基于模型补偿 | 逐点自适应 |
| 运动畸变校正 | 帧内插值 | 帧内插值 | 无需(逐点处理) |
| 计算需求 | 低(~15%单核ARM) | 中高(FAST-LIO2的2-3倍) | 低 |
| M360配置难度 | ⭐ 简单 | ⭐⭐⭐ 中等偏难 | ⭐⭐ 简单 |
| 社区资源 | 丰富(8k+ stars) | 中等 | 较少 |
| GitHub Stars | 8,000+ | 1,500+ | 800+ |
| 最佳场景 | 通用建图、资源受限平台 | 彩色点云、LiDAR退化环境 | 快速运动、高振动环境 |
FAST-LIO2:大多数项目的默认选择
FAST-LIO2 是目前最主流的开源紧耦合LiDAR惯性里程计算法,GitHub 上拥有超过 8000 颗星,社区活跃、文档完善。
核心原理
FAST-LIO2 采用紧耦合迭代扩展卡尔曼滤波(IEKF)架构,直接对原始点云进行扫描配准,无需特征提取(不提取角点、面点等),这一点大大简化了算法流程。地图管理使用 ikd-Tree(增量式k-d树),支持高效的动态点插入和删除。
关键优势
- 参数少、调试简单:核心可调参数仅几个,开箱即用
- 适配非重复扫描雷达:支持 Livox MID-360 等固态雷达(非旋转式),兼容性强
- 计算量极低:在ARM平台上仅占用约15%的单核算力,适合嵌入式部署
- 精度高:在19个公开数据集上表现优异,定位精度稳定
致命短板
- 无回环检测:长时间运行会出现漂移累积,需要外接回环检测模块(如 Scan Context)
- 无RGB信息:输出的是单色点云,无法直接生成彩色3D模型
- LiDAR退化环境失效:在长走廊、空旷大平面等几何特征匮乏的场景中,精度显著下降
M360 配置参数
使用 Livox MID-360 时,关键参数为:
cut_frame_num × orig_odom_freq = 50
例如 orig_odom_freq = 10Hz,则 cut_frame_num = 5。这意味着算法每收集5帧原始数据后执行一次里程计更新。
R3LIVE:需要彩色点云时的进阶选择
R3LIVE(Robust Real-time Renderable 3D LiDAR-Inertial-Visual Odometry)在 FAST-LIO2 的基础上引入了视觉子系统,是目前最完善的紧耦合 LiDAR-IMU-Visual 三传感器融合方案之一。
核心原理
R3LIVE 采用双子系统架构:
- LIO子系统:类似 FAST-LIO2,负责LiDAR-IMU紧耦合定位建图
- VIO子系统:从摄像头图像提取特征,一方面为点云实时上色,另一方面在LiDAR退化时提供额外的位姿约束
两个子系统通过状态传递机制紧密耦合,VIO的位姿估计可以补偿LIO在退化环境下的精度损失。
性能数据
在 NTU-VIRAL 数据集上的 RMSE 达到 0.185m,精度表现优秀。
关键优势
- 实时RGB点云:扫描同时生成带颜色信息的3D点云,视觉效果好,适合展示和数字孪生
- 退化环境鲁棒:视觉信息的引入显著提升了在长走廊、玻璃幕墙等场景下的鲁棒性
使用代价
- 额外硬件成本:需要额外摄像头(约$100-300),增加了硬件复杂度
- 三次标定:LiDAR-IMU标定、相机-IMU标定、LiDAR-相机标定,标定流程繁琐
- 算力翻倍:计算量约为FAST-LIO2的2-3倍,在低功耗嵌入式平台上可能吃力
Point-LIO:快速运动与高振动场景的利器
Point-LIO 是三个算法中最独特的——它打破了"以帧为单位"的处理范式,改为逐点处理。
核心原理
与 FAST-LIO2 和 R3LIVE 每收到一帧完整点云后才进行一次状态更新不同,Point-LIO 在每收到一个LiDAR点时就执行一次状态估计。这使得里程计输出频率高达 4-8 kHz,远远超过帧级处理方案的10Hz。
关键优势
- 抗振动最强:官方测试在 75 rad/s 的极端角速度下仍能稳定工作
- 无运动畸变:逐点处理天然消除了帧内运动畸变问题,无需额外的畸变校正
- 快速运动场景表现优异:高速运动时的定位精度明显优于帧级方案
局限性
- 无RGB支持:纯LiDAR-IMU融合,无法生成彩色点云
- 无回环检测:长时间运行同样存在漂移累积
- 社区资源少:GitHub stars 仅800+,遇到问题可参考的资料较少
选型决策树
根据实际项目需求,选择建议如下:
你的项目需要彩色点云吗?
├── 是 → 预算和算力充足吗?
│ ├── 是 → R3LIVE
│ └── 否 → FAST-LIO2 + 后处理上色
└── 否 → 工作环境有高振动或快速运动?
├── 是 → Point-LIO
└── 否 → FAST-LIO2(推荐)
总结一句话:大多数项目直接从 FAST-LIO2 开始就对了。 只有在明确需要彩色点云或应对极端动态场景时,才考虑升级到 R3LIVE 或 Point-LIO。
M360 + FAST-LIO2 实操要点
对于使用 Livox MID-360 的手持扫描仪项目,以下是 FAST-LIO2 的快速部署清单:
硬件配置
| 组件 | 推荐型号 | 用途 |
|---|---|---|
| LiDAR | Livox MID-360 | 主传感器 |
| 计算平台 | Jetson Orin Nano | 实时SLAM处理 |
| IMU | M360内置(BMI088) | 惯性测量 |
| 电池 | 12V移动电源 | 供电 |
ROS Workspace 配置
在 Jetson Orin Nano 上搭建 FAST-LIO2 的工作空间,核心依赖包括:ROS Noetic(或 ROS2 Humble)、PCL、Eigen 3.3+、ikd-Tree。克隆仓库后直接 catkin_make 编译即可。
关键参数调优
M360 的配置核心是确保数据采集率与里程计更新率的匹配:
orig_odom_freq:设为 10Hzcut_frame_num:设为 5cut_frame_num × orig_odom_freq = 50(固定值)
如果发现建图效果不理想,可以尝试调整 max_iter(默认2-3)和 filter_size_map(建图分辨率)。
结语
三个算法各有侧重:FAST-LIO2 是"万金油",R3LIVE 是"锦上添花",Point-LIO 是"极限运动选手"。在手持3D扫描仪的开发实践中,建议先用 FAST-LIO2 跑通全流程,再根据实际痛点决定是否升级。
本文基于 HKU-MARS 实验室开源项目及实测经验整理,如有遗漏欢迎交流讨论。