FAST-LIO2在无人机与地面机器人场景下的实战性能评测
当第一次在无人机上部署FAST-LIO2时,最让我惊讶的是它在高速飞行状态下依然能保持地图的连贯性——没有出现常见的点云撕裂现象。这种稳定性让我决定系统地测试它在不同移动平台上的表现。本文将分享在无人机(UAV)和地面机器人(UGV)两种典型场景下,FAST-LIO2的资源消耗与建图效果对比数据。
1. 测试环境设计与基准建立
为了确保对比实验的科学性,我们搭建了可重复的测试环境。测试平台选用大疆Matrice 300 RTK无人机和Clearpath Robotics的Jackal地面机器人,两者都搭载了Velodyne VLP-16激光雷达和Intel NUC11迷你工控机(i7-1165G7/16GB RAM)。
注意:所有测试均在封闭场地进行,无人机飞行高度控制在5米以内,地面机器人测试区域包含水泥地面、碎石路和草地三种典型地形。
传感器配置采用统一参数:
# velodyne.yaml 通用配置 lidar: scan_rate: 10 point_filter_num: 1 max_range: 100.0 min_range: 1.0测试场景设计包含两个维度:
- 运动模式:无人机测试3种速度档位(1m/s、3m/s、5m/s),地面机器人测试2种地形(平坦水泥地、复杂碎石路)
- 建图参数:固定FAST-LIO2的以下核心参数:
mapping/point_filter_num: 1 mapping/max_iteration: 3 mapping/cube_side_length: 1000.0
2. 计算资源消耗对比分析
在连续2小时的测试中,我们使用Linux的top工具记录资源占用情况,采样间隔为1秒。测试数据揭示了一些有趣的现象:
2.1 CPU占用率表现
| 平台类型 | 运动状态 | 平均CPU占用(%) | 峰值CPU占用(%) |
|---|---|---|---|
| UAV | 1m/s匀速飞行 | 62.3 | 89.7 |
| UAV | 3m/s变速飞行 | 78.5 | 132.4 |
| UAV | 5m/s急转飞行 | 85.2 | 158.9 |
| UGV | 平坦路面行驶 | 45.8 | 67.3 |
| UGV | 复杂地形行驶 | 53.6 | 82.1 |
关键发现:
- 无人机场景下CPU负载与运动速度呈正相关,5m/s时的峰值占用达到单核158%
- 地面机器人在颠簸地形会导致CPU占用上升约15%,但整体仍低于无人机场景
- FAST-LIO2的ikd-Tree确实有效控制了计算量,同等条件下比LOAM系算法节省30-40%CPU资源
2.2 内存占用特性
内存使用表现出不同特征:
# 内存占用监测代码片段 import psutil def get_memory_usage(): process = psutil.Process() return process.memory_info().rss / 1024 / 1024 # MB测试期间内存占用稳定在以下范围:
- 初始化阶段:约450MB
- 稳定运行阶段:520-580MB(UGV)、600-680MB(UAV)
- 峰值时刻:无人机高速转弯时短暂达到720MB
提示:内存占用增长主要来自ikd-Tree的动态更新,建议部署时预留至少1.5GB内存余量
3. 建图质量与轨迹精度评测
我们采用高精度RTK定位设备作为真值参考,对比分析了不同场景下的建图效果。
3.1 绝对轨迹误差(ATE)
使用evo工具评估的结果如下:
| 场景 | 最大ATE(m) | 平均ATE(m) | RMSE |
|---|---|---|---|
| UAV_1m/s | 0.18 | 0.07 | 0.09 |
| UAV_5m_s | 0.43 | 0.21 | 0.25 |
| UGV_平坦 | 0.12 | 0.05 | 0.07 |
| UGV_复杂地形 | 0.27 | 0.13 | 0.16 |
3.2 地图一致性评估
通过人工检查点云地图,发现两个典型现象:
- 无人机场景:高速运动时建筑物边缘会出现轻微"重影"(约5-10cm偏移)
- 地面机器人场景:在碎石路面会出现零星噪点,但主要结构保持清晰
建图质量评分(1-5分):
- 结构完整性:UAV 4.2 / UGV 4.5
- 细节保留度:UAV 3.8 / UGV 4.3
- 实时性:UAV 4.5 / UGV 4.7
4. 参数调优实战经验
经过数十次参数调整测试,总结出以下优化建议:
4.1 无人机场景关键参数
# 适用于高速飞行的参数配置 mapping: max_iteration: 4 # 增加迭代次数应对快速运动 cube_side_length: 1500 # 扩大地图范围 filter_size_surf: 0.5 # 适当放宽面特征过滤4.2 地面机器人推荐配置
# 复杂地形优化配置 mapping: point_filter_num: 2 # 增加点云过滤 filter_size_surf: 0.3 # 严格面特征过滤 cube_side_length: 800 # 适中地图范围4.3 通用调试技巧
CPU负载过高时:
- 尝试增加
point_filter_num - 减小
cube_side_length(但需大于运动范围)
- 尝试增加
建图出现断裂时:
- 检查
max_iteration是否足够 - 确认雷达安装稳固,避免振动干扰
- 检查
内存持续增长时:
- 启用
runtime_pos_log_enable监控ikd-Tree状态 - 考虑定期保存地图并重启节点
- 启用
在Matrice 300上的最终优化配置使CPU占用降低了22%,而建图RMSE保持在0.2m以内。这个平衡点是通过反复测试filter_size_surf和max_iteration的组合找到的——太严格的过滤会导致特征不足,而过多的迭代又会增加计算负担。