GVINS数据集评测:用自录ROS Bag在室内外验证GNSS拒止下的定位恢复能力

张开发
2026/4/21 21:40:52 15 分钟阅读

分享文章

GVINS数据集评测:用自录ROS Bag在室内外验证GNSS拒止下的定位恢复能力
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 SNR40dB系统初始化基准城市峡谷高楼遮挡GNSS SNR波动大信号断续时的稳定性室内环境完全无GNSS信号纯视觉惯性里程计性能采集过程中保持ROS bag记录以下topic/gnss/raw(RTCM格式)/camera/image_raw/imu/data/tf_static2. GVINS系统部署与参数调优2.1 关键依赖项配置GVINS对第三方库版本极其敏感我们使用Docker容器确保环境一致性FROM ros:melodic RUN apt-get update apt-get install -y \ libeigen3-dev3.3.4-4 \ libceres-dev1.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 nameenable_gnss typebool valuefalse/ param nameenable_relocalization typebool valuetrue/3. 实测数据分析与性能对比3.1 轨迹精度评估方法我们采用EVO工具进行定量分析评估指标包括ATE绝对轨迹误差RPE相对位姿误差重定位成功次数测试数据来自三个典型场景的20次重复实验场景ATE均值(m)RPE均值(%)重定位成功率开阔场地0.821.2100%城市峡谷1.352.187%室内环境3.473.865%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%这可能是未来优化的一个方向。

更多文章