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 |
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#
- Family page: GNSS measurements, positioning and integrity
- All kinds: KINDS.md
- Topic page: REAL_TLE_GUIDE.md
- Topic page: SKYLINE.md