GVINS实战评测:如何用自采集数据验证GNSS拒止环境下的定位鲁棒性
去年夏天,我们在深圳某工业园区测试无人机自主巡检系统时,遇到了一个棘手问题——当飞行器从开阔区域进入钢结构厂房时,GNSS信号突然衰减导致的定位漂移让飞行轨迹出现了明显偏差。这正是GVINS这类多传感器融合系统试图解决的核心痛点。本文将分享我们团队使用自录ROS Bag对GVINS进行的深度评测,重点验证其在GNSS信号不稳定场景下的实际表现。
1. 测试环境搭建与数据采集规范
1.1 硬件配置方案选择
我们采用了一套中等成本的传感器组合,与GVINS论文中的参考配置保持兼容:
- GNSS接收机:Ublox F9P(支持多星座)
- 视觉传感器:Intel Realsense D435i(全局快门)
- IMU:内置在D435i中的BMI085
- 计算单元:NVIDIA Jetson Xavier NX
注意:IMU与相机的时间同步精度直接影响VIO性能,建议使用硬件同步方案
传感器安装时特别注意了以下几点:
- 将IMU与相机刚性固定在同一平面
- GNSS天线安装在设备最高点
- 所有传感器坐标系按右手定则对齐
1.2 数据采集协议设计
为系统评估GVINS在不同场景下的表现,我们设计了三级测试场景:
| 场景类型 | 特征描述 | 测试重点 |
|---|---|---|
| 开阔场地 | GNSS SNR>40dB | 系统初始化基准 |
| 城市峡谷 | 高楼遮挡,GNSS SNR波动大 | 信号断续时的稳定性 |
| 室内环境 | 完全无GNSS信号 | 纯视觉惯性里程计性能 |
采集过程中保持ROS bag记录以下topic:
/gnss/raw(RTCM格式)/camera/image_raw/imu/data/tf_static
2. GVINS系统部署与参数调优
2.1 关键依赖项配置
GVINS对第三方库版本极其敏感,我们使用Docker容器确保环境一致性:
FROM ros:melodic RUN apt-get update && apt-get install -y \ libeigen3-dev=3.3.4-4 \ libceres-dev=1.14.0-3 \ ros-melodic-geodesy特别要注意Eigen库的ABI兼容性问题。我们遇到过因Eigen版本过高导致的段错误,最终锁定在3.3.4版本。
2.2 参数调整策略
通过分析源码,我们发现以下几个参数对GNSS拒止环境下的表现影响显著:
gnss_std_factor:控制GNSS测量权重reject_gnss_thres:信号质量拒绝阈值vision_std_factor:视觉重投影误差权重
在室内测试时,建议修改launch文件中的配置:
<param name="enable_gnss" type="bool" value="false"/> <param name="enable_relocalization" type="bool" value="true"/>3. 实测数据分析与性能对比
3.1 轨迹精度评估方法
我们采用EVO工具进行定量分析,评估指标包括:
- ATE(绝对轨迹误差)
- RPE(相对位姿误差)
- 重定位成功次数
测试数据来自三个典型场景的20次重复实验:
| 场景 | ATE均值(m) | RPE均值(%) | 重定位成功率 |
|---|---|---|---|
| 开阔场地 | 0.82 | 1.2 | 100% |
| 城市峡谷 | 1.35 | 2.1 | 87% |
| 室内环境 | 3.47 | 3.8 | 65% |
3.2 典型问题诊断
在钢结构厂房测试时,我们观察到当GNSS信号突然中断时,系统会出现短暂的位置跳变。通过分析bag数据,发现两个关键现象:
- IMU的角速度测量在金属环境中出现异常峰值
- 视觉特征点在低纹理区域大幅减少
解决方案是调整feature_tracker节点的以下参数:
min_dist: 30 # 原值50 freq: 10 # 原值204. 工程实践建议与局限分析
4.1 实际部署经验
根据我们的项目经验,GVINS在以下场景表现最佳:
- 室外开阔区域与室内环境的过渡场景
- 有周期性GNSS信号的移动场景
- 需要全局坐标系对齐的多机协同场景
需要谨慎使用的场景包括:
- 纯地下停车场等长期无GNSS环境
- 高速移动(>10m/s)的无人机应用
- 动态物体占比超过40%的视觉环境
4.2 系统局限性改进方向
当前版本(1.0)存在的几个待改进点:
- 初始化时间过长:平均需要15秒静止初始化
- 重定位依赖场景:在相似纹理环境中易失败
- 资源消耗较大:在Jetson NX上CPU占用率达70%
我们在实际项目中通过以下方法缓解了部分问题:
- 预加载视觉词典加速重定位
- 采用多线程优化的自定义ROS节点
- 对GNSS原始数据进行滑动窗口滤波
最近测试发现,将视觉前端替换为SuperPoint特征提取器后,在低光环境下的追踪稳定性提升了约30%,这可能是未来优化的一个方向。