GVINS 系统概述
GVINS 是一种基于非线性优化的系统,用于实现实时、无漂移的状态估计。该系统通过将GNSS 原始测量值(如伪距和多普勒)与视觉和惯性信息进行紧耦合,以提供准确的全局 6-DoF(六自由度)估计。
1. 系统核心特点
| 特点 | 描述 |
|---|---|
| 紧耦合设计 | 将 GNSS 原始观测值直接融入优化过程,而非仅使用 GNSS 定位结果 |
| 多传感器融合 | 融合 GNSS、视觉和 IMU 数据,充分利用各传感器的优势 |
| 滑窗优化框架 | 采用 VINS-Mono 的体系结构,结合因子图优化方法 |
| 初始化流程 | 分为三步:单点定位、4 自由度对齐、轨迹因子构建 |
2. 初始化流程详解
GVINS 的初始化分为以下三个步骤:
单点定位
利用 GNSS 单点定位计算大致基准点,用于转换坐标系。4 自由度对齐
- 利用多普勒观测值计算速度,从而得到航向差异和接收机钟差。
- 对齐航向后,再次优化对齐轨迹因子。
轨迹因子构建
构建三种因子:- 伪距因子:位置层面的约束。
- 多普勒因子:速度层面的约束。
- 接收机钟差钟漂因子:连续状态转移的约束。
3. 系统优势
| 优势 | 描述 |
|---|---|
| 消除漂移 | 通过 GNSS 的全局约束,显著减少 VIO 的漂移问题 |
| 鲁棒性 | 在复杂环境中(如城市峡谷、隧道出入口)表现稳定 |
| 无缝切换 | 能够处理室内到室外环境的过渡,包括卫星信号丢失和重新获取 |
| 高精度 | 在长时间运行中保持局部精度,即使 GNSS 测量噪声较大 |
4. 实验验证
GVINS 通过仿真和真实实验进行了广泛验证,结果表明:
- 显著抑制了 VIO 的漂移。
- 在城市驾驶和室内外混合环境中表现出良好的可用性和鲁棒性。
- 在需要厘米级精度的测绘应用中表现优异。
5. 技术实现
5.1 系统框架
- VIO 部分:采用 VINS-Mono 的框架。
- 相机建模:使用
camodocal进行相机标定。 - 优化器:使用
Ceres进行非线性优化。
5.2 依赖库
- Ubuntu 18.04 + ROS Melodic:推荐的开发环境。
- C++ 11 或更高版本:支持 C++11 的编译器。
5.3 示例代码片段
// 伪距因子构建示例 FactorGraph::addFactor(new PseudorangeFactor( gnss_measurement, camera_pose, imu_state, noise_model::Isotropic::Sigma(3, 0.1) ));6. 应用场景
GVINS 适用于以下场景:
- 城市峡谷环境:GNSS 信号易受遮挡和反射。
- 隧道出入口:GNSS 信号频繁切换。
- 长时间运行的无人机/机器人定位:需要高精度和稳定性。
- 需要厘米级精度的测绘应用:如地形建模、建筑扫描等。
7. 参考资料
- GVINS: Tightly Coupled GNSS-Visual-Inertial Fusion for Smooth and Consistent State Estimation
- GVINS 论文解读
- 从零部署 GVINS
参考来源
- GVINS: Tightly Coupled GNSS-Visual-Inertial Fusion for Smooth and Consistent State Estimation - 科研通
- GVINS论文阅读(VINS-MONO + gnss 紧耦合)_gvins 论文解读-CSDN博客
- GVINS: Tightly Coupled GNSS–Visual–Inertial Fusion for Smooth and Consistent State Estimation - 科研通
- 从零部署GVINS:手把手教你搭建港科大多源融合定位系统-CSDN博客
- 2021年开源SLAM算法_ikfom csdn-CSDN博客