DC-GVINS is a fully distributed, tightly coupled collaborative positioning framework that integrates infrastructure-free double-difference (DD) GNSS constraints into GNSS-visual-inertial state estimation. By exploiting common-satellite observations between nearby agents, DC-GVINS removes common-mode clock and short-baseline atmospheric errors without requiring static base stations or pre-surveyed anchors, improving both absolute and relative positioning accuracy in GNSS-challenged urban environments.
- Infrastructure-Free DD-GNSS: No fixed base station, pre-surveyed anchor, or ground reference receiver is required. Moving agents tracking common satellites provide the geometry needed for DD processing.
- Tightly Coupled Factor Graph: DD pseudorange constraints are integrated as factors within a unified GVINS optimization framework together with IMU, visual, and GNSS measurements.
- Distributed Architecture: Each agent maintains an independent local factor graph and exchanges only lightweight peer-to-peer messages.
- Quality-Aware Optimization: DD covariance is adjusted using satellite elevation, C/N0, communication state, peer-position uncertainty, and MAD-based outlier screening.
- Graceful Degradation: When communication is degraded or disconnected, DD factors are down-weighted or removed, allowing each agent to fall back to independent GVINS operation.
| Dependency | Version | Notes |
|---|---|---|
| ROS | Kinetic | ros-kinetic-perception meta-package |
| Eigen | 3.3.3 | Built from source |
| Ceres Solver | 1.12.0 | Built from source |
| OpenCV | Included with ROS | Via cv_bridge |
| gnss_comm | latest | GNSS message definitions |
Additional ROS packages:
cv-bridge image-transport message-filters tf- Monocular or stereo camera
- IMU, recommended at 200 Hz or higher
- Multi-constellation GNSS receiver, such as u-blox F9P
- Peer-to-peer wireless link between agents
Native installation has been tested on Ubuntu 16.04 with ROS Kinetic.
sudo apt-get update && sudo apt-get install -y \
git cmake libatlas-base-dev libgoogle-glog-dev \
libsuitesparse-dev python-catkin-tools \
ros-kinetic-cv-bridge ros-kinetic-image-transport \
ros-kinetic-message-filters ros-kinetic-tfgit clone https://gitlab.com/libeigen/eigen.git
cd eigen && git checkout tags/3.3.3
mkdir build && cd build
cmake .. && sudo make install
cd ../.. && rm -rf eigengit clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver && git checkout tags/1.12.0
mkdir build && cd build
cmake .. && make -j$(nproc) && sudo make install
cd ../.. && rm -rf ceres-solver# Create workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
# Clone gnss_comm
git clone https://github.com/HKUST-Aerial-Robotics/gnss_comm.git
# Clone DC-GVINS
git clone https://github.com/PolyU-TASLAB/DC-GVINS.git
# Configure and build
cd ~/catkin_ws
catkin config \
--extend /opt/ros/kinetic \
--cmake-args \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=14 \
-DCMAKE_CXX_FLAGS="-std=c++14"
# Build gnss_comm first, then remaining packages
catkin build gnss_comm
catkin build
# Source workspace
source ~/catkin_ws/devel/setup.bashNote: If a
D2Rredefinition error occurs during compilation, comment out the duplicate definition inestimator/src/estimator_node.cpp.
Detailed run instructions and example commands will be provided after the dataset release.
Datasets collected in Hong Kong urban environments will be released.
| Dataset | Platform | Duration | Environment | Status |
|---|---|---|---|---|
| HK Harbourfront | Handheld | 530 s | Dense urban canyon | Coming soon |
| UAV Flight | Quadcopter | 190 s | Semi-open campus | Coming soon |
If you find this work useful, please cite:
@article{qiu2026dcgvins,
title = {Tightly-Coupled Double-Difference GNSS for Cooperative Visual-Inertial Positioning of Connected Transportation Agents in Urban Environments},
author = {Qiu, Shaoting and Wen, Weisong and Hu, Jiahao and Zhao, Jiaqi and Wang, Yingying},
year = {2026},
note = {Manuscript under review}
}The citation information will be updated after publication.
This project is released under the GNU General Public License v3.0 (GPL-3.0).
You may use, modify, and redistribute this software under the terms of GPL-3.0. If you redistribute this software or release derivative works based on it, you must preserve the original copyright and license notices and distribute the derivative work under GPL-3.0 as well.
Commercial use is not prohibited by GPL-3.0, but any distribution of modified or derivative software must comply with the GPL-3.0 terms. For details, please see the LICENSE file.
For academic use, please cite the corresponding paper listed above.
Please keep the following notice in source files when redistributing or modifying this project:
DC-GVINS: Tightly-Coupled Double-Difference GNSS for Collaborative Visual-Inertial Positioning
Copyright (C) 2025-2026 PolyU TASLAB
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. See the GNU General Public License for more details.
This repository is provided for research and educational purposes. The software is not certified for safety-critical navigation, autonomous driving, aviation, or other mission-critical applications. Users are responsible for validating the system in their own environments before any deployment.
This work was supported by the Smart Traffic Fund under the project "Development of an Assisted Navigation and Collision Avoidance System using AI and Location-based Service" (project no. PSRI/73/2309/PR).
