This project is the software implementation for a publicly available, open-source, client/server VN-DGNSS implementation with global coverage. The server receives real-time information in SSR format and provides each client with virtual base station RTCM OSR formatted messages applicable to their local vicinity for BeiDou B1, GALILEO E1, and GPS L1. This approach eliminates the need for the client to have physical access to a local reference station.
keywords: PPP, Differential GNSS, Lane-level positioning, Virtual Base Station
Contact: whu027@ucr.edu
Copyright (c) 2020 UC Regents
W. Hu, A. Neupane and J. A. Farrell, "Using PPP Information to Implement a Global Real-Time Virtual Network DGNSS Approach," in IEEE Transactions on Vehicular Technology, 2022, doi: 10.1109/TVT.2022.3187416.
Ubuntu 18.04
Attention: The executable file provided here was compiled from X86 Linux. If you are using ARM or other architecture, you should compile this project before using it.
Compiling packages are needed: gcc, g++, cmake. If not, do "sudo apt install xxx".
- Install packages (If you use Ubuntu 20. LTS, do 'sudo add-apt-repository ppa:rock-core/qt4' first)
sudo apt update
sudo apt install libcurl4-openssl-dev libqtwebkit4 libqt4-svg
sudo apt-get install zlib1g-dev
sudo ldconfig
- Compile VN-DGNSS server Go to Virtual-Network-DGNSS-Project/VN_DGNSS_Server, then
mkdir build
cd build/
cmake ..
make
Run VN-DGNSS server: Set the IP address and port
./server (IP) (Port)
If you would like to connect it to external network. You may use 'ifconfig' to find your internal IP address. in your router 'port forwarding' setup, forward your internal IP address&port to external port.
- Install BKG Ntrip Client
Download the BKG software version at 'https://igs.bkg.bund.de/root_ftp/NTRIP/software/'. For example: In a new terminal,
sudo apt-get install libcanberra-gtk-module
wget https://igs.bkg.bund.de/root_ftp/NTRIP/software/bnc-2.12.17-ubuntu-64bit-shared.zip
Unzip the folder
unzip bnc-2.12.17-ubuntu-shared.zip
Move to ./bnc-2.12.17-ubuntu-shared/ directory and run BNC.
cd bnc-2.12.17-ubuntu-shared
./bnc-2.12.17-ubuntu-shared
- BNC software setup
- setup the local IP port. Port number 6699 for the Broadcast Corrections and 3536 for RINEX Ephemeris. Please select the 'version 3' in the RINEX Ephemeris tab page. If you would like to change the port numbers, the port numbers configured in the server are also need to be changed.
- setup the stream: click Add Stream -> Caster
- The recommended NTRIP Caster: Caster host (products.igs-ip.net), Caster port (2101), Ntrip Version (2)
- Fill in "User" and "Password". (You may need an account for SSR stream usage. Please check http://www.igs-ip.net/home for registration.)
- Click Get table
- Click an navigation message stream (Defaul: BCEP00BKG0) then click select.
- Click an SSR message stream (Defaul: SSR00CNE0) then click select.
- Run (click Start) the BNC software.
The excutable file "VN_DGNSS_Client" for Linux (generated from Ubuntu 18.04) is located at VN_DGNSS_Client/bin. The excutable file "VN_DGNSS_Client.exe" for Windows (generated from Windows 10) is located at VN_DGNSS_Client/app.
Please check 'VN_DGNSS_Client/README' for details.
PPP model usage:
- Satellite orbit and clock corrections: SSR orbit and clock products
- Satellite hardware bias correction: CAS GIPP Observable-specific Code Biases (OSB) product
- Ionosphere correction model: SSR VTEC using Spherical Harmonic expansion
- Troposphere correction model: IGGtrop_SH
For detailed descriptions and conclusions, please check Sec. VI in the VN-DGNSS paper.
- Wang Hu - GitHub
- Xiaojun Dong - GitHub
- Ashim Neupane - GitHub
- Dan Vyenielo - GitHub
- Farzana Rahman - GitHub
- Jay Farrell - GitHub
- The BKG data stream will provide both I/NAV and F/NAV for Galileo. In terms of IGS SSR standard, this VN-DGNSS server will only support I/NAV ephemeris.
- The RTCM message function originally referred from RTKLIB but modified to our specific purpose.
- No Cycle-Slip function needed since VN-DGNSS only generates the GNSS code measurements.
- Note: In terms of RINEX 3.04. BDS System Time week has a roll-over after 8191. Galileo System Time (GST) week has a roll-over after 4095. currently this code doesn't consider thie roll-over since it valid to after many years. GAL week = GST week + 1024 + n*4096 (n: number of GST roll-overs).
The ideas reported herein originated during a project supported by SiriusXM. The client-server implementation project was supported by Caltrans under agreement number 65A0767. IGGtrop_SH model data and origianl MATLAB functions are provided by the author of IGGtrop Dr. Wei Li, liwei@whigg.ac.cn. Some portions of the VN-DGNSS (e.g., RTCM message generator) are modifications of open-source functions in RTKLIB (https://github.com/tomojitakasu/RTKLIB). Functions of Spherical Harmonic expansion ionosphere correction model are modifications of functions in BNC (https://igs.bkg.bund.de/ntrip/download).