mars-pnt (scenario kind)
Scenario kind of the engine v0.38.0, family Constellations, coverage and geometry. 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#
Deep-space Mars PNT: a simulated MARCONI relay constellation (areostationary + inclined relays broadcasting one-way + relaying two-way to a deep-space station) navigates a reference user (transfer | lmo | surface) through the joint one-way/two-way radiometric fusion estimator. Reports per-epoch geometry/visibility, achieved RMS vs truth, and the formal covariance (1σ / 3σ position) — an honest simulated FoM, NOT a certified protection level.
One run of scenarios/mars-pnt-lmo.toml summarises as: mars-pnt 5aad87fcc94a | lmo user, uso clock | 5 relays (mean 3.1 in view) | converged pos RMS 0.25 m, formal 1σ 0.31 m (3σ 0.93 m — covariance FoM, not a certified PL) | clock-freq σ 3.71e-13 | cov-PD true
Inputs#
From the schema (kshana kinds --json):
- Required fields: none
- Optional fields:
user,clock_class,step_s,duration_s,nmax,range_sigma_m,doppler_sigma_mps,dynamic_tightness,two_way_period_s,seed
The example scenarios/mars-pnt-lmo.toml sets, among others:
| Field | Value | Unit |
|---|---|---|
clock_class |
uso | text |
doppler_sigma_mps |
1.0000e-4 | m/s |
duration_s |
7200 | s |
dynamic_tightness |
0.1 | not stated |
kind |
mars-pnt | text |
nmax |
4 | not stated |
range_sigma_m |
1 | m |
seed |
331514052 | not stated |
step_s |
60 | s |
two_way_period_s |
1800 | s |
user |
lmo | text |
Run it#
kshana scenarios/mars-pnt-lmo.toml
3 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 |
|---|---|---|
areostationary_radius_m |
2.0428e7 | m |
clock_class |
uso | text |
fom.converged_pos_3sigma_m |
0.927387 | m |
fom.converged_pos_rms_m |
0.245604 | m |
fom.converged_pos_sigma_m |
0.309129 | m |
fom.covariance_pd_throughout |
true | flag |
fom.epochs |
120 | count |
fom.final_clock_freq_sigma |
3.7072e-13 | 1 |
fom.initial_pos_error_m |
2692.582404 | m |
fom.mean_relays_in_view |
3.066667 | count |
Evidence#
MODELLED: the verification matrix rows that name this kind.
- MODELLED The
body-pntkind: an orbiter or a surface lander around a body chosen by name navigates with one-way pseudoranges from a Walker navigation constellation around the body (two-body orbits with the body's J2 secular drift, an unknown user c
The rows the run itself exercised, with the oracle the matrix gives each (the public sources are named there):
- VALIDATED Recover an epoch state [r,v] from ground-station ranges via a Gauss–Newton batch differential corrector and a sequential filter, over a two-body+J2 force model. Oracle (ExternalDataset): Orekit 12.2 (CS GROUP, Apache-2.0) BatchLSEstimator (Levenberg–Marquardt) + KalmanEstimator (EKF) — an independent third-party estimation library on a matched force model; recovered epoch state + post-fit residual RMS agree to <1e-3 m noiseless and <3 m at a 5 m noise floor
- MODELLED 3-state (phase/freq/drift) van-Loan Kalman clock, Joseph-stabilised. Oracle (ReferenceImpl): filterpy 1.4.5 KalmanFilter (R. Labbe, MIT), with F via scipy.linalg.expm and Q via the Van-Loan 1978 block-matrix — an independent reference implementation reproducing kshana's full filter trajectory. Cross-implementation consistency: the clock physics / Allan calibration are not externally validated, so this stays MODELLED. 0.30 external comparison, a finding (stays MODELLED): on IGS final 30 s clocks of 11 GPS Blo
- 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:
- Onboard clock state estimation is MODELLED, not validated: checked against a separate implementation in this same codebase — independent of the unit under test, but not externally authoritative. (verification matrix (docs/MODELLED-RATIONALE.md))
- 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: Constellations, coverage and geometry
- All kinds: KINDS.md
- Topic page: SOLAR-SYSTEM.md