实测对比:FAST-LIO2在无人机(UAV)与地面机器人(UGV)场景下的资源消耗与建图效果

张开发
2026/4/21 13:56:22 15 分钟阅读

分享文章

实测对比:FAST-LIO2在无人机(UAV)与地面机器人(UGV)场景下的资源消耗与建图效果
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.02. 计算资源消耗对比分析在连续2小时的测试中我们使用Linux的top工具记录资源占用情况采样间隔为1秒。测试数据揭示了一些有趣的现象2.1 CPU占用率表现平台类型运动状态平均CPU占用(%)峰值CPU占用(%)UAV1m/s匀速飞行62.389.7UAV3m/s变速飞行78.5132.4UAV5m/s急转飞行85.2158.9UGV平坦路面行驶45.867.3UGV复杂地形行驶53.682.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)RMSEUAV_1m/s0.180.070.09UAV_5m_s0.430.210.25UGV_平坦0.120.050.07UGV_复杂地形0.270.130.163.2 地图一致性评估通过人工检查点云地图发现两个典型现象无人机场景高速运动时建筑物边缘会出现轻微重影(约5-10cm偏移)地面机器人场景在碎石路面会出现零星噪点但主要结构保持清晰建图质量评分(1-5分)结构完整性UAV 4.2 / UGV 4.5细节保留度UAV 3.8 / UGV 4.3实时性UAV 4.5 / UGV 4.74. 参数调优实战经验经过数十次参数调整测试总结出以下优化建议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的组合找到的——太严格的过滤会导致特征不足而过多的迭代又会增加计算负担。

更多文章