Scenario kind pagesEdit on GitHubSource: docs/kinds/by-kind/gnss-sim.md

gnss-sim (scenario kind)

Scenario kind of the engine v0.38.0, family GNSS measurements, positioning and integrity. Advisory: analysis output from a research and engineering tool, not type-approved navigation equipment and not a safety-of-life service. Every label here is the engine's or the verification matrix's; a kind is MODELLED unless the matrix says otherwise (how a label is earned: the README's Evidence section).

What it does#

Measurement-domain pseudorange simulation (Klobuchar iono, Saastamoinen/Niell tropo) + RAIM.

One run of scenarios/gnss-sim-raim.toml summarises as: scenario ab854d9d7886 | gnss-sim | mean iono 19.9m tropo 6.8m | RAIM avail 0.82 mean HPL 22.2m VPL 39.9m fault-rate 0.000

Inputs#

From the schema (kshana kinds --json):

  • Required fields: seed, time, receiver, constellation
  • Optional fields: iono, tropo, mask_deg, noise_sigma_m, multipath_m, sat_clock_rms_m, uere_m, p_fa, p_md, alert_limit_h_m, alert_limit_v_m, skyline

The example scenarios/gnss-sim-raim.toml sets, among others:

Field Value Unit
alert_limit_h_m 40 m
alert_limit_v_m 50 m
constellation.altitude_km 20200 km
constellation.inclination_deg 55 deg
constellation.phasing_f 1 not stated
constellation.planes 6 not stated
constellation.sats_per_plane 4 not stated
iono.alpha [3.8200e-8, 1.4900e-8, -1.7900e-7, 0] not stated
iono.beta [143000, 0, -328000, 113000] not stated
iono.gps_seconds_of_day 50400 d
kind gnss-sim text
mask_deg 5 deg

Run it#

kshana scenarios/gnss-sim-raim.toml

2 bundled scenarios use this kind; the others are in scenarios/.

What it gives#

The scalar results of that run, with the units the engine states:

Result Value Unit
fom.fault_rate 0 1
fom.mean_hpl_m 22.201883 m
fom.mean_iono_m 19.861204 m
fom.mean_tropo_m 6.762787 m
fom.mean_vpl_m 39.923459 m
fom.raim_availability 0.819672 1
seed 7 1
The chart the engine writes for scenarios/gnss-sim-raim.toml, kind gnss-sim

Evidence#

VALIDATED: the verification matrix rows that name this kind.

  • VALIDATED Klobuchar single-frequency L1 slant ionospheric group delay from the eight broadcast α/β coefficients Tests: klobuchar_reference.rs.

The rows the run itself exercised, with the oracle the matrix gives each (the public sources are named there):

  • VALIDATED ARAIM multiple-hypothesis solution separation per the ARAIM Airborne Design Document (ADD) v4.2 (araim_reference::add_v42_protection_levels and add_v42_protecti. Oracle (ExternalDataset): Three independent tools, pre-registered (0123cee1) before any fixture or oracle output existed, tolerances fixed then. (1) ARAIM: Stanford MAAST for ARAIM 2 (commit ab70e2a3, BSD-3) mhss_raim_baseline_v5.m, run as a separate program under GNU Octave 8.4 with a driver-side unique() compatibility shim (disclosed, no algorithm change), at the ADD TOL_PL of 0.05 m: the Rust reproduces the ADD reference implementation on
  • VALIDATED GDOP/PDOP/HDOP/VDOP/TDOP from line-of-sight geometry via Q=(HᵀH)⁻¹ with a local ENU split. Oracle (ExternalDataset): gnss_lib_py 1.0.4 (Stanford NAV Lab) DOP — independent library, matched to 1e-6 relative
  • VALIDATED Klobuchar single-frequency L1 slant ionospheric group delay from the eight broadcast α/β coefficients. Oracle (ExternalDataset): RTKLIB ionmodel (tomojitakasu/RTKLIB, src/rtkcmn.c) — independent reference implementation compiled from source; matched to < 1e-4 m
  • VALIDATED The distributional core every protection level rests on: the snapshot fault-detection threshold χ²₁₋ₚfₐ(dof), the missed-detection non-centrality pbias=√λ, and . Oracle (ExternalDataset): SciPy 1.17.0 (scipy.stats.chi2/.norm/.ncx2 + optimize.brentq) — independent library (Cephes/Boost), a different algorithm from Kshana's incomplete-gamma series; matched to ≤1e-6 rel. Kernel only. The ARAIM MHSS P_HMI budget allocation is no longer without a published numeric oracle — the WG-C ARAIM Technical Subgroup's own worked example now backs the separate 'ARAIM MHSS protection levels against published referen
  • MODELLED Deterministic, scenario-hashed, SBOM + cross-platform golden gates. Oracle (ExternalDataset): SBOM conformance to the official CycloneDX 1.5 JSON Schema (+ valid SPDX identifiers) — an external published standard, zero validation errors over the full dependency graph; the FoM-determinism / byte-reproducibility part remains a pinned self-consistency check, so the row stays MODELLED

Limitations#

What the run's own report says is not modelled or not validated:

  • Reproducibility & software assurance is MODELLED, not validated: a sub-claim is externally checked, but the whole capability composes modelled pieces, so the capability stays Modelled. (verification matrix (docs/MODELLED-RATIONALE.md))

See also#