A virtual network Differential GNSS server-client project using Precise Point Positioning (PPP). Global coverage. Without physical base station construction needed. An open-source virtual base station approach.

Virtual-Network-DGNSS-Project

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: [email protected]

Copyright (c) 2020 UC Regents

I. Paper

(under review)

II. Server Setup

System Requirement

Ubuntu 18.04

Setup

Compiling packages are needed: gcc, g++, cmake. If not, do "sudo apt install xxx".

  1. 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
  1. 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.

  1. 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  
  1. 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.

III. Client Setup

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.

IV. System Architecture

Server-client

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

V. Experimental results

For detailed descriptions and conclusions, please check Sec. VI in the VN-DGNSS paper.

Screen Shot 2021-09-02 at 11 53 19 PM

Stationary platform results

stationary_all

Moving platform results

  • With single-band antenna moving_SF_err

  • With dual-band antenna moving_DF_err

VI. Contributor

VII. Implementation Notes

  1. 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.
  2. The RTCM message function originally referred from RTKLIB but modified to our specific purpose.
  3. No Cycle-Slip function needed since VN-DGNSS only generates the GNSS code measurements.
  4. 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).

VIII. Acknowledge

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, [email protected]. 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).

Owner
Ph.D. Candidate Dept. of Electrical and Computer Engineering
null
Similar Resources

This is a MQTT-enabled, compact weather station powered by a Wemos D1 minicontroller and built with 3D-printed parts

This is a MQTT-enabled, compact weather station powered by a Wemos D1 minicontroller and built with 3D-printed parts

This is a MQTT-enabled, compact weather station powered by a Wemos D1 minicontroller and built with 3D-printed parts. It supports OTA updates.

Feb 10, 2022

The project consists in a client/server architecture voice over IP application, similar to Skype or TeamSpeak.

Babel The project consists in a client/server architecture voice over IP application, similar to Skype or TeamSpeak. Build and Run the Project First y

Jan 17, 2022

A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols.

A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols.

evpp Introduction 中文说明 evpp is a modern C++ network library for developing high performance network services using TCP/UDP/HTTP protocols. evpp provid

Jan 5, 2023

XMap is a fast network scanner designed for performing Internet-wide IPv6 & IPv4 network research scanning.

XMap is reimplemented and improved thoroughly from ZMap and is fully compatible with ZMap, armed with the "5 minutes" probing speed and novel scanning techniques. XMap is capable of scanning the 32-bits address space in under 45 minutes.

Dec 24, 2022

zMonkey is an open-source 200G network impairment emulator tool

zMonkey is an open-source 200G network impairment emulator tool to emulate the real-world WAN/DC conditions for your applications. it can supp

Nov 11, 2022

A project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server.

A project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server.

PS4 Server 9.00 This is a project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server. this is fo

Nov 28, 2022

Simple server and client using python socket and declarative programming

Socket-programming Simple server and client using python socket and declarative programming How to use? open cmd and navigate to the location of the s

Dec 17, 2022

A very simple, fast, multithreaded, platform independent WebSocket (WS) and WebSocket Secure (WSS) server and client library implemented using C++11, Boost.Asio and OpenSSL. Created to be an easy way to make WebSocket endpoints in C++.

This project has moved to https://gitlab.com/eidheim/Simple-WebSocket-Server. Simple-WebSocket-Server A very simple, fast, multithreaded, platform ind

Dec 27, 2022

Built a client-server application using TCP and UDP sockets, in which the clients can subscribe/unsubscribe to various topics.

Built a client-server application using TCP and UDP sockets, in which the clients can subscribe/unsubscribe to various topics.

Jun 22, 2022
Comments
  • Testing your work with zed f9

    Testing your work with zed f9

    Hi my freind, I am testing your work with a f9p however I obtain [2022-05-05 12:09:41]: Start read pos info (NMEA $GxGNS) from rover. [2022-05-05 12:11:42]: Can't get position info from rover, please check if the NMEA protocol GNS massage is enabled., GNSS is enable and the frame is output by USB, I double check this. I am testing everything in the same pc. I tried to test in a RPI 4 and I have problems with qt4 and the bnc client and DGNSS client too. Can you share your configurations file to compare with me?

Netif - Header-only C++14 library for getting network addresses associated with network interface without name lookups on Windows, macOS, Linux, and FreeBSD

NetIF Get addresses associated with network interfaces on a system without using name lookups. Header-only, requires C++14. Usage Add the header file

Oct 17, 2022
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

Welcome! The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design

Dec 30, 2022
Apache Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation
Apache Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation

Apache Thrift Introduction Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation. Thrift provides clean a

Jan 7, 2023
Parca-agent - eBPF based always-on profiler auto-discovering targets in Kubernetes and systemd, zero code changes or restarts needed!
Parca-agent - eBPF based always-on profiler auto-discovering targets in Kubernetes and systemd, zero code changes or restarts needed!

Parca Agent Parca Agent is an always-on sampling profiler that uses eBPF to capture raw profiling data with very low overhead. It observes user-space

Jan 1, 2023
A network library for client/server games written in C++

yojimbo yojimbo is a network library for client/server games written in C++. It's designed around the networking requirements of competitive multiplay

Jan 1, 2023
Realtime Client/Server app for Linux allowing joystick (and other HID) data to be transferred over a local network

netstick What is it? Netstick enables HID devices to be remotely connected between a "client" and "server" over a network connection. It allows the ke

Nov 6, 2022
single header C(99) library to implement client-server network code for games

single header C(99) library to implement client-server network code for games

Jan 5, 2023
Source-code based coverage for eBPF programs actually running in the Linux kernel
Source-code based coverage for eBPF programs actually running in the Linux kernel

bpfcov Source-code based coverage for eBPF programs actually running in the Linux kernel This project provides 2 main components: libBPFCov.so - an ou

Nov 23, 2022
Side-channel file transfer between independent VM executed on the same physical host
Side-channel file transfer between independent VM executed on the same physical host

Inter-process or cross-VM data exchange via CPU load modulation What is this I made this PoC as a visual aid for an online discussion about M1RACLES -

Dec 28, 2022
GTOS (Growtopia Private Server)'s latest source, everyone started selling so I decided to releasing it on github, enjoy it without spending your dls on that.

GTOSLatest GTOS (Growtopia Private Server)'s latest source, everyone started selling so we (Erben#1337 and Kaan#1337) decided to releasing it on githu

Sep 9, 2022