Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,47 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

# [4.1] 2026-01-30

## Added

Ginan SouthPAN SBAS capabilities:
- Separate SBAS processing modes
- Choice of running L1 SBAS, DFMC (dual-frequency multi-constellation) and PVS (Precise Point Positioning Via SouthPAN)
- SBF (Septentrio) input
- Included sanity check configurations for SBAS, DFMC and PVS

Additional features and fixes to the GinanUI:
- "Constellations" config tab for managing code priorities for the selected PPP provider/series/project
- "Output" config tab for specifying PEA output files
- "Reset Config" button to reset the UI and configuration to a blank state
- Support for downloading products from the REPRO3 directory for older RINEX files
- Verification of PPP product constellations against RINEX constellations using the corresponding .SP3 file
- Detection of supported code priorities for PPP products using the corresponding .BIA file
- Button to open the Ginan-UI user manual from the interface

## Changed

GinanUI changes:
- UI panels are now resizable
- Disabled plot visualisation when the corresponding output file is not enabled

## Fixed

Ginan fixes:
- Fixed SSR uploading issues - RTCM message codes were incorrectly assigned
- Fixed Code bias state errors - Force state errors to zero if corresponding states are fully constrained (zero variances).

GinanUI fixes:
- Fixed detecting available dynamic products when version identifier is not "0". Will now search for the lowest valid version identifier
- Fixed input locking while processing is running to prevent post-hoc configuration changes

## Deprecated

## Removed

## Security

# [4.0] 2025-12-16

## Added
Expand Down
15 changes: 15 additions & 0 deletions Docs/announcements.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,19 @@

> **30 Jan 2026** - the Ginan team is pleased to release Ginan update v4.1.0
>
> **Highlights**:
>
> * Introduction of SouthPAN SBAS capabilities into Ginan:
> * Choice of running L1 SBAS, DFMC (dual-frequency multi-constellation) and PVS (Precise Point Positioning Via SouthPAN)
> * Includes SBF (Septentrio) input
> * Included sanity check configurations for SBAS, DFMC and PVS
> * Additions to the Graphical User Interface (GUI) for Ginan - GinanUI:
> * "Constellations" config tab for managing code priorities for the selected PPP provider/series/project
> * Support for downloading products from the REPRO3 directory for older RINEX files
> * Detection of supported code priorities for PPP products using the corresponding .BIA file
> * Verification of PPP product constellations using the corresponding .SP3 file
>

> **16 Dec 2025** - the Ginan team is pleased to release v4.0.0 of the toolkit.
>
> **Main Highlights**:
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Ginan: GNSS Analysis Software Toolkit

[![Version](https://img.shields.io/badge/version-v4.0.0-blue.svg)](https://github.com/GeoscienceAustralia/ginan/releases)
[![Version](https://img.shields.io/badge/version-v4.1.0-blue.svg)](https://github.com/GeoscienceAustralia/ginan/releases)
[![License](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE.md)
[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey.svg)](#supported-platforms)
[![Docker](https://img.shields.io/badge/docker-available-blue.svg)](https://hub.docker.com/r/gnssanalysis/ginan)
Expand Down Expand Up @@ -57,7 +57,7 @@ The fastest way to get started with Ginan is using Docker:

```bash
# Pull and run the latest Ginan container
docker run -it -v $(pwd):/data gnssanalysis/ginan:v4.0.0 bash
docker run -it -v $(pwd):/data gnssanalysis/ginan:v4.1.0 bash

# Verify installation
pea --help
Expand Down Expand Up @@ -120,7 +120,7 @@ Choose the installation method that best fits your needs:

```bash
# Run Ginan container with data volume mounting
docker run -it -v ${pwd}:/data gnssanalysis/ginan:v4.0.0 bash
docker run -it -v ${pwd}:/data gnssanalysis/ginan:v4.1.0 bash
```

This command:
Expand Down Expand Up @@ -294,7 +294,7 @@ cd ../../exampleConfigs

Expected output:
```
PEA starting... (main ginan-v4.0.0 from ...)
PEA starting... (main ginan-v4.1.0 from ...)
Options:
-h [ --help ] Help
-q [ --quiet ] Less output
Expand Down Expand Up @@ -462,4 +462,4 @@ All incorporated code has been preserved with appropriate modifications in the `

---

**Developed by [Geoscience Australia](https://www.ga.gov.au/)** | **Version 4.0.0** | **[GitHub Repository](https://github.com/GeoscienceAustralia/ginan)**
**Developed by [Geoscience Australia](https://www.ga.gov.au/)** | **Version 4.1.0** | **[GitHub Repository](https://github.com/GeoscienceAustralia/ginan)**
1 change: 1 addition & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ WORKDIR /tmp/
RUN python3 -m pip install -r requirements.txt --no-cache-dir --break-system-packages

ADD scripts /ginan/scripts
ADD exampleConfigs /ginan/exampleConfigs

# Copy the built PEA binary from the build stage
COPY --from=ginan-build /ginan/bin/ /usr/bin/
Expand Down
54 changes: 54 additions & 0 deletions exampleConfigs/sbas_example_dfmc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# DFMC SBAS
inputs:
inputs_root: ./products/
atx_files: [igs20.atx]
snx_files:
- igs_satellite_metadata.snx
- tables/sat_yaw_bias_rate.snx
- AUS23907.SNX
satellite_data:
satellite_data_root: sbas/
nav_files:
- "*.rnx"
sbas_inputs:
ems_files:
- "uraL5/*.ems"
sbas_prn: 122
sbas_message_0: 65 # prn=65 for dfmc translates into messages type (34~36)
use_do259: true
gnss_observations:
gnss_observations_root: ../data/sbas/
rnx_inputs:
- "*.rnx"

outputs:
metadata:
config_description: sbas_example_<BRANCH>
outputs_root: ./outputs/<CONFIG>/dfmc/
spp:
output: true
filename: <RECEIVER>-<YYYY><DDD>.SPP

receiver_options:
HOB2:
antenna_type: "LEIAR25.R4 NONE"
NEBO:
antenna_type: "TRM59800.00 NONE"
OUS2:
antenna_type: "SEPCHOKE_B3E6 NONE"
TID1:
antenna_type: "AOAD/M_T NONE"

processing_options:
process_modes:
sbas: true
epoch_control:
wait_next_epoch: 3600
gnss_general:
sys_options:
gps:
process: true
gal:
process: true
sbas:
mode: DFMC
56 changes: 56 additions & 0 deletions exampleConfigs/sbas_example_l1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# L1 SBAS
inputs:
inputs_root: ./products/
atx_files: [igs20.atx]
snx_files:
- igs_satellite_metadata.snx
- tables/sat_yaw_bias_rate.snx
- AUS23907.SNX
satellite_data:
satellite_data_root: sbas/
nav_files:
- "*.rnx"
sbas_inputs:
ems_files:
- "uraL1/*.ems"
sbas_prn: 122
sbas_message_0: 2 # Expected format for message type 0, if set to -1 (default) it will block use of SBAS corrections
prec_aproach: true
gnss_observations:
gnss_observations_root: ../data/sbas/
rnx_inputs:
- "*.rnx"

outputs:
metadata:
config_description: sbas_example_<BRANCH>
outputs_root: ./outputs/<CONFIG>/l1/
spp:
output: true
filename: <RECEIVER>-<YYYY><DDD>.SPP

receiver_options:
HOB2:
antenna_type: "LEIAR25.R4 NONE"
NEBO:
antenna_type: "TRM59800.00 NONE"
OUS2:
antenna_type: "SEPCHOKE_B3E6 NONE"
TID1:
antenna_type: "AOAD/M_T NONE"

processing_options:
process_modes:
sbas: true
epoch_control:
wait_next_epoch: 3600
gnss_general:
sys_options:
gps:
process: true
# glo:
# process: true
# sbs:
# process: true
sbas:
mode: L1
86 changes: 86 additions & 0 deletions exampleConfigs/sbas_example_pvs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# PPP via SouthPAN
inputs:
inputs_root: ./products/
atx_files: [igs20.atx]
snx_files:
- igs_satellite_metadata.snx
- tables/sat_yaw_bias_rate.snx
- AUS23907.SNX
troposphere:
gpt2grid_files: [tables/gpt_25.grd]
satellite_data:
satellite_data_root: sbas/
nav_files:
- "*.rnx"
sbas_inputs:
ems_files:
- "uraL5/*.ems"
sbas_prn: 122
sbas_frequency: 5
sbas_message_0: 65 # prn=65 for dfmc translates into messages type (34~36)
use_do259: true
pvs_on_dfmc: true
gnss_observations:
gnss_observations_root: ../data/sbas/
rnx_inputs:
- "*.rnx"

outputs:
metadata:
config_description: sbas_example_<BRANCH>
outputs_root: ./outputs/<CONFIG>/pvs/
pos:
output: true
filename: <RECEIVER>-<YYYY><DDD>.POS

receiver_options:
global:
code_sigma: 0.5
phase_sigma: 0.005
HOB2:
antenna_type: "LEIAR25.R4 NONE"
NEBO:
antenna_type: "TRM59800.00 NONE"
OUS2:
antenna_type: "SEPCHOKE_B3E6 NONE"
TID1:
antenna_type: "AOAD/M_T NONE"

processing_options:
process_modes:
sbas: true
epoch_control:
wait_next_epoch: 3600
sbas:
mode: PVS

estimation_parameters:
receivers:
global:
pos:
estimated: [true]
sigma: [1000]
process_noise: [100]
clock:
estimated: [true]
sigma: [1000.0]
process_noise: [100.0]
ambiguities:
estimated: [true]
sigma: [1000]
process_noise: [0]
outage_limit: [120]
ion_stec:
estimated: [true]
sigma: [200]
process_noise: [10]
outage_limit: [120]
sigma_limit: [1000]
trop:
estimated: [true]
sigma: [0.15]
process_noise: [0.0001]
code_bias:
estimated: [true]
sigma: [200]
process_noise: [0]
Loading
Loading