Förmågekarta: vad Kshana gör, delvis gör och inte gör
Kshana är en evidensmotor för prestanda och resiliens inom PNT (positionering, navigering och tidssynkronisering), inte ett fullständigt verktyg för rymdsystem. Den leder med tidssynkronisering och holdover, sitt bäst validerade område (se POSITIONING.md). Den här sidan är den ärliga omfattningskartan: för varje förmågeområde som en upphandlare eller forskningsgranskare kan kontrollera anges status, vad som faktiskt finns i koden, vad som saknas och var det står på färdplanen. Status är en av:
- full: implementerad från ände till ände och validerad till en nivå som anges på raden;
- partial: en verklig men begränsad modell (omfattningen är uttryckligen begränsad nedan);
- none: inte modellerad (utanför omfattningen i dag).
Dessa tre är de enda värden som statuskolumnen tar. De graderar förmågans mognad, vilket är en annan axel än graden VALIDATED / MODELLED / PARTNER i VERIFICATION-MATRIX.md. Den graderar evidensens ursprung, rad för rad, och kontrolleras maskinellt från src/verification.rs.
Inget här är ambitiöst: "partial" betyder aldrig "nästan klart", det betyder "så här mycket och inte mer". Se även VALIDATION.md, INTEGRITY.md, QUANTUM-MODELS.md och registret över avslutade överdrifter CLAIMS-VS-REALITY.md (varje historisk överdrift, hur den löstes och en CI-spärr (kontinuerlig integration) som håller den löst).
Kärn-PNT (där Kshana faktiskt spelar)#
| Förmåga | Status | Vad som finns | Vad som saknas | Färdplan |
|---|---|---|---|---|
| Banbestämning och propagering | partial | SGP4/SDP4 utan beroenden (SGP4: Simplified General Perturbations 4; SDP4: Simplified Deep-space Perturbations 4), validerad till 4,12 mm mot alla 666 AIAA (American Institute of Aeronautics and Astronautics) 2006-6753-vektorer (position och hastighet, den senare till 1 mm/s); analytisk keplersk + J2-sekulär; tröghetshastighet exponeras och görs tillgänglig från ände till ände via det körbara scenariot ephemeris (src/ephemeris.rs, nåbart från CLI/Python/WASM/MCP (CLI: kommandoradsgränssnitt; WASM: WebAssembly; MCP: Model Context Protocol)). Per steg ger det TEME-tillståndet (true equator, mean equinox) och GCRS-tillståndet (Geocentric Celestial Reference System) (position + hastighet), ITRF/ECEF-positionen (ITRF: International Terrestrial Reference Frame; ECEF: Earth-centred, Earth-fixed), WGS-84:s (WGS: World Geodetic System) markspår under satelliten (lat/lon/höjd) och stationens azimut/elevation/avstånd + avståndshastighet/Doppler (den radiella avståndshastigheten stämmer med den sanna positionsderivatan, JD-brusfritt (JD: Julian date), till 6e-9 m/s), och via CCSDS (Consultative Committee for Space Data Systems) OEM-exporten (Orbit Ephemeris Message) av efemeriden med hastighet (--export-oem). En numerisk (Cowell) propagator (src/propagator.rs) integrerar en konfigurerbar kraftmodell med zonal gravitation, det fullständiga zonala jordfältet till och med grad 6 (forces::zonal_accel, de publicerade EGM-96 (EGM: Earth Gravitational Model) J2..J6), med ett val av adaptiv drivare: RK4 (Runge–Kutta av fjärde ordningen) stegfördubbling eller det inbäddade paret Dormand–Prince RK5(4) (integrate_dopri / propagate_dopri, en billigare inbäddad felskattning med 7 utvärderingar som klarar samma Kepler-spärr och stämmer med RK4-vägen till <1 m på en J2..J6-bana), fastlåst mot analytisk referens som är starkare än ett numeriskt verktyg mot verktyg: den ostörda banan reproducerar den exakta Kepler-lösningen med universella variabler till under en meter över 24 h (en snävare spärr än milstolpens "mot referens < 10 m"), energi och rörelsemängdsmoment bevaras till ~1e-9 relativt, J2-nodregressionen stämmer med den slutna sekulära takten till förstaordningsteorin, den zonala accelerationen är verifierad som den exakta gradienten av sin egen potential (och att reduceras till den J2-form som validerats mot 666 vektorer), och solve_kepler_checked returnerar Err i stället för ett felaktigt svar när Newton inte konvergerar (till exempel nära perigeum vid e = 0,999). Gravitation från tredje kropp (Sol och Måne) styrd av epok är kopplad in i den tidsvarierande integratorn (ForceModel::third_body / accel_at, med de lågprecisa efemeriderna för Sol och Måne i src/ephem.rs av Montenbruck & Gill, ingen DE/SPK (DE: Development Ephemeris; SPK: planetary ephemeris kernel) behövs): varje utvärdering av högerledet (RHS) samplar störkropparnas positioner vid den framskridna epoken epoch_jd_tt + t/86400, så att Solen och Månen rör sig längs sina banor under integrationen. Störningen är verifierad som den exakta gradienten av sin störande potential, försvinner i geocentrum och har de lärobokens storleksordningar för LEO (låg jordbana) (~5e-7 m/s² Solen, ~1.1e-6 m/s² Månen). Solefemeriden träffar handhärledda J2000-ankare (perihelavstånd, ~−23° solståndsdeklination, ~1°/dygn rörelse) och månefemeriden sitt perigeum/apogeum-hölje, ~384 400 km medelavstånd, gränsen ≤ 5,3° lutning och återgång av riktningen efter en sidurisk månad. Integrationens inkoppling är bevisad bit-exakt (RHS-termen är lika med third_body_accel vid den samplade positionen vid t = 0 och t = 1 dygn), och ett epokskifte på ett kvarts år ger en annorlunda bana. Solstrålningstryck (SRP) går med i samma epokstyrda RHS (forces::srp_accel / ForceModel::solar_radiation): kanonkulemodellen ν·P☉·cᵣ·(A/m)·(AU/d)²·d̂ med en forces::conical_shadow-förmörkelsefaktor för umbra + penumbra (jämn ν ∈ [0 1], verifierad att avta genom en monoton penumbra som sträcker sig bortom umbracylindern), verifierad mot det lärobokens 1-AU-trycket (AU: astronomisk enhet) (≈ 4.54e-6 N/m²), storleksordningen ~1.36e-7 m/s² i LEO som trycker bort från Solen, den omvänt kvadratiska avtagningen (dubbelt solavstånd ger en fjärdedel), en exakt noll acceleration i umbracylindern och en propagerad förskjutning som skalar ~linjärt med A/m. Atmosfäriskt luftmotstånd är den första hastighetsberoende termen (forces::drag_accel / ForceModel::drag + den nya RHS som för med hastigheten accel_rv): kvadratiskt luftmotstånd −½·ρ(h)·(C_D·A/m)·|v_rel|·v_rel mot den medroterande atmosfären v_rel = v − ωₑ ẑ × r, där ρ är Vallados styckvis exponentiella forces::atmospheric_density, verifierat med ankaret 1,225 kg/m³ vid havsnivå, ett strikt monotont LEO-avtagande med en fysikalisk skalhöjd på ~58 km, storleksordningen ~2e-6 m/s² för luftmotståndet som motverkar den relativa hastigheten och dissipationssignaturen (en bana på 300 km förlorar specifik energi monotont och dess halva storaxel avtar med ett begränsat ~km/dygn, medan vakuumbanan bevarar energin). Den post-newtonska (Schwarzschild) relativistiska korrektionen är den andra hastighetsberoende termen (forces::relativistic_accel / ForceModel::relativity): IERS-formen (International Earth Rotation and Reference Systems Service) β = γ = 1 a = (μ/c²r³)·{[4μ/r − v²]·r + 4(r·v)·v}, den ledande drivkraften bakom den relativistiska perigeumrörelsen, verifierad mot sitt slutna cirkulära värde 3μ²/(c²r³)·r̂ (radiellt, utåt), sitt läroboksförhållande ≈1.9e-9 i LEO till tvåkroppsaccelerationen, den handförenklade formen för radiell hastighet och den konservativa signaturen (den stör banan men håller halva storaxeln till under en meter per dygn, den strukturella motsatsen till luftmotstånd). Termen för rampdragning Lense–Thirring (forces::lense_thirring_accel / ForceModel::lense_thirring, IERS 2010 §10) är den gravitomagnetiska korrektionen bortom Schwarzschild: valfri, ~1–2 storleksordningar under den i LEO, verifierad att försvinna utan jordrotation och att ligga under Schwarzschild-storleken. Banbestämning (OD, src/orbit_determination.rs) sluter slingan från observationer tillbaka till ett tillstånd: en Gauss–Newton-batch-korrigerare (src/batch_ls.rs) driver en kandidat [r, v] till bästa anpassning av markstationsavstånd propagerade över bågen (under en meter / mm·s⁻¹ från brusfria avstånd; ~2 m med en residual efter anpassningen vid brusgolvet på 5 m, signaturen för en konsekvent minsta kvadrat-anpassning), med en sekventiell rekursiv variant på det unscented-filtret |
Standardkraftmodellen Cowell innehåller bara det zonala fältet: det höggradiga tesserala fältet i EGM2008 (Earth Gravitational Model 2008) (src/gravity_sh.rs, grad och ordning 70, med en laddare from_gfc för ICGEM-filer (International Centre for Global Earth Models)) ingår bara i motorn för precis efemeridanpassning (src/precise_od.rs, se AGENCY-ORBIT-VALIDATION.md). Luftmotståndets täthet är den statiska styckvis exponentiella modellen av Vallado (oberoende av solaktivitet), inte NRLMSISE-00 (Naval Research Laboratory Mass Spectrometer and Incoherent Scatter Radar Extended, en atmosfärmodell; klausulen om termosfärens täthet på < 5 %). SRP är kanonkulemodellen med en geometrisk konisk umbra + penumbra-skugga (ingen kantmörkning av solskivan, ingen skugga från en tillplattad jord, ingen satellitform eller attityd). Relativiteten omfattar termerna Schwarzschild och Lense–Thirring (rampdragning), båda valfria, men ingen justering av PPN-parametrar (PPN: parametriserad post-newtonsk). Tredje kropp och SRP använder de lågprecisa efemeriderna (~0,005° Solen, ~0,3° Månen), inte noggrannheten hos DE/SPK-kärnor. De konservativa nivåerna i kraftmodellen (tvåkropps → J2–J6 → Sol/Måne → SRP) är VALIDATED mot Orekit 12,2 (värsta 0,08 m över 24 h, tests/numerical_cowell_propagator_reference.rs), och banbestämning med batch och sekventiellt är VALIDATED mot Orekit 12,2s estimatorer (tests/batch_sequential_orbit_determination_reference.rs). Nivån för luftmotstånd och den absoluta noggrannheten hos efemerid- och tätheterna som indata förblir MODELLED. Det finns ingen korskontroll mot GMAT (General Mission Analysis Tool) |
tesseral gravitation i standardmodellen Cowell + luftmotstånd med NRLMSISE-00 + kantmörkning av solskivan + efemerid av DE-klass + korsvalidering mot GMAT + OD-mätningar av avståndshastighet och vinkel och analytisk STM (tillståndsövergångsmatris): P2+ |
| Tidssystem | partial | src/timescales.rs: API för juliansk dag (civil↔JD, MJD (modifierad juliansk dag)), UTC↔TAI (UTC: Coordinated Universal Time; TAI: International Atomic Time) via hela IERS-tabellen över skottsekunder (10→37 s, 1972→2017), TAI→TT (TT: Terrestrial Time), UT1 (Universal Time 1, jordrotationstid) via DUT1 (jordrotationstiden minus Coordinated Universal Time) och IAU-2000 (IAU: International Astronomical Union) jordrotationsvinkel (ERA, validerad bit för bit mot SOFA (Standards of Fundamental Astronomy)-vektorn eraEra00). Approximationen DUT1≈0 i SGP4-vägen är uttryckligen dokumenterad vid anropsstället gstime (ett GMST-fel (Greenwich mean sidereal time) på ≤ ~13″, väl inom SGP4:s eget modellfel), och scenariot ephemeris tar uttryckliga reglage dut1_s/xp_arcsec/yp_arcsec eller en infogad verklig IERS-serie finals2000A (eop_finals2000a / kshana --eop <file>, interpolerad via samma EopSeries som precise_od använder) så att markspåret reduceras genom verklig IERS UT1 / polrörelse, inte bara de nominella skalärerna |
Jordbanevägarna använder fortfarande en JD med enkel f64 (~50 µs upplösning nära 2020; detta, inte algoritmen, är golvet för en korskontroll med finita differenser). En tvådelad JD finns (timescales::TwoPartJd, används av de radiometriska vägarna, CCSDS-TDM, marksegmentssimulatorn och solsystemsvägarna, samt src/jd2.rs Jd2) och förs genom SGP4 (Sgp4::propagate_at(Jd2)), passprediktion, geometri och Walker-utformningar (validerade mot SOFA, tests/jd2_sofa_time_oracle.rs) och genom jordrotationen på banvägen (jd2::gmst82, cio::gcrs_to_itrs_matrix_jd2, orbit::Propagator::position_in_frame_jd2, den valfria two_part_jd i efemeridscenariot, VALIDATED mot ERFA, tests/jd2_earth_rotation_erfa_oracle.rs), med förlustfria omvandlingar mellan Jd2 och TwoPartJd. Standardvägarna för jordbanor behåller datumet med enkel f64 om inte two_part_jd är satt, och epoken för Cowell-kraftmodellen förblir med enkel f64 med flit (dess analytiska Sol/Måne-fel överskuggar en avrundning på 40 µs). UTC med gummisekunder före 1972 (1960–1971) är modellerad på den tvådelade vägen (jd2, timescales::tai_minus_utc_on_date, VALIDATED mot ERFA, tests/jd2_pre1972_sofa_oracle.rs), men timescales::tai_minus_utc med enkel f64 klampar fortfarande till 10 s före 1972. En prediktor för jordorientering med minsta kvadrat + autoregression (src/eop_ls_ar.rs, jämförd med IERS Bulletin A som ett resultat) kan nu förlänga en EOP-serie bortom dess sista rad (EopSeries::with_ls_ar_prediction, valfri, tests/eop_prediction_beyond_table.rs), så att ramargumenten bortom tabellen följer prognosen i stället för att klampas. Standardserien klampas fortfarande, och ingen scenarionyckel slår på prediktionen än |
klart (grund); tvådelad JD genom jordrotationen på banvägen: klart (valfri i efemeridscenariot); EOP-prediktion bortom tabellen: klart (bibliotek, valfri); UTC före 1972 på den tvådelade vägen: klart |
| Referenssystem | full | src/frames.rs: GMST-baserad TEME↔ECEF, WGS-84 geodetisk↔ECEF (exakt + iterativ invers, maskinprecision på alla höjder) och en geodetisk markstationsobservatör (azimut/elevation/avstånd). IAU 2006 precession (src/precession.rs: Fukushima–Williams-vinklarna (γ̄, φ̄, ψ̄, ε̄_A) + bias-precessionsmatrisen GCRS↔medelvärde för datumet). IAU 2000A/2000B-nutation + fullständig kedja TEME→GCRS (src/nutation.rs: den fullständiga IAU 2000A-serien med 678 lunisolära + 687 planetära termer, nutation_iau2000a / nutation_matrix_2000a, tabellen maskingenererad ur ERFA (Essential Routines for Fundamental Astronomy)-referensen nut00a av tools/gen_nut00a.py, vid sidan av serien 2000B med 77 termer, Delaunay-argument, SOFA-nutationsmatrisen iauNumat, ekvinoktieekvationen och teme_to_gcrs(r, v, jd_tt) via TEME→TOD→MOD→GCRS (true of date, mean of date); båda serierna validerade bit för bit mot SOFA/ERFA-referensvektorerna nut00a/nut00b, Δψ/Δε till 1e-13 rad). IERS polrörelse PEF→ITRF (pseudo-Earth-fixed till terrestrisk) (teme_to_itrf / polar_motion_matrix, SOFA iauPom00, x_p/y_p anges av anroparen; en effekt på tiotals meter vid banradien). CIO-baserad (CIO: Celestial Intermediate Origin) IAU 2006/2000A-reduktion (src/cio.rs: den ekvinoxfria kedjan GCRS↔CIRS↔ITRS (CIRS: Celestial Intermediate Reference System; ITRS: International Terrestrial Reference System), CIP (Celestial Intermediate Pole) X,Y ur NPB-matrisen (nutation-precession-bias) 2006/2000A, serien s för CIO-lokalisatorn med 66 termer, gcrs_to_cirs_matrix, jordrotationsvinkeln och hela gcrs_to_itrs_matrix, validerad bit för bit mot SOFA-vektorerna eraXys06a/eraC2ixys/eraEra00). Transformationerna från ände till ände är nu fastlåsta mot ett publicerat auktoritativt genomarbetat exempel, inte bara intern konsekvens: mot Vallados AIAA 2006-6753-tillstånd (2004-04-06, med dess IERS EOP (jordorienteringsparametrar); tests/frame_reference_vectors.rs) stämmer TEME→PEF till 0,1 mm, TEME→ITRF till 0,6 mm, hela CIO GCRS→ITRS till 4 mm, och ECEF→geodetisk reproducerar Vallados exempel 3-3 lat/lon/höjd till sista publicerade siffran. Hela kedjan är nåbar för användaren via scenariot ephemeris (ITRF/ECEF-position + WGS-84 markspår under satelliten per steg) |
Standardkedjan TEME→GCRS använder 2000B (~1 mas, under sin egen förenkling av hastighetsramens rotation). Vägen med < 0,1 mas och full 2000A finns via nutation_matrix_2000a, och den stränga CIO (X, Y, s)-reduktionen finns via src/cio.rs. Den äldre TEME-vägen använder IAU-1982 GMST (SGP4-konvention). Den oberoende numeriska korskontrollen mot ANISE/SPICE (ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris, ett rent Rust-verktyg för planetgeometri; SPICE: Spacecraft, Planet, Instrument, C-matrix, Events) är levererad (xval/anise-frames/: gcrs_to_itrs_matrix mot ANISE:s GCRF→ITRF93 (GCRF: Geocentric Celestial Reference Frame; ITRF93: International Terrestrial Reference Frame 1993) över åtta epoker 2020–2023, ≤ 0,86 m på marken, ≤ 3,6 m vid GNSS-bana (global navigation satellite system)). Den är en fristående crate utanför standardspärrarna i CI. precession_matrix och teme_to_gcrs_matrix kontrolleras också direkt mot ERFA vid 40 epoker 1950–2100, och CIO-kedjan tar IERS himmelspolsförskjutningar dX, dY (cio::gcrs_to_cirs_matrix_with_offsets; tests/frames_erfa_vector_oracle.rs). Standardvägarna försummar fortfarande dX, dY. Verifieringsmatrisen graderar den här raden VALIDATED (SOFA/ERFA-vektorer + Vallado) |
TEME↔ECEF + geodetisk: klart (verifierad mot Vallado); tröghets-TEME→GCRS: klart (2000B + full 2000A); polrörelse-ITRF: klart (verifierad mot Vallado); CIO GCRS→ITRS: klart (verifierad mot Vallado) |
| Tidssynkronisering och frekvens | partial | Exakt Kalman-klocka med två tillstånd och van-Loan-Q (NIST (National Institute of Standards and Technology) SP (Special Publication) 1065) med en Joseph-stabiliserad kovariansuppdatering (positivt semidefinit vid extrema Q/R-förhållanden, Cholesky-kontrollerad i CI) och en hälsoövervakare för filterkonsekvens (src/filter_health.rs): en Monte Carlo-bedömning av NIS/NEES (NIS: normaliserad innovation i kvadrat; NEES: normaliserat skattningsfel i kvadrat) mot χ²-konfidensband, som görs tillgänglig som filter_health i resultat-JSON (JavaScript Object Notation) och som ett grönt/gult kort på lekplatsen, med ett svepatest av Q/R-felmatchning som visar att övervakaren slår om till inkonsekvent när trimningen är fel (Bar-Shalom §5,4); överlappande estimatorer för ADEV (Allan-deviation), MDEV (modifierad Allan-deviation), TDEV (tidsdeviation), HDEV (Hadamard-deviation) + χ²-baserade konfidensintervall med brustypspecifika effektiva frihetsgrader (slutna former ur NIST SP 1065 tabell 5 för WPM/FPM/WFM/FFM/RWFM (WPM: white phase modulation; FPM: flicker phase modulation; WFM: white frequency modulation; FFM: flicker frequency modulation; RWFM: random-walk frequency modulation), den uppsättning som Stable32 använder; den exporterade ADEV-kurvan identifierar postens potenslagstyp ur sin MDEV-lutning och lägger på ett band på 95 % per τ, src/allan.rs), numeriskt validerad mot Stable32:s referensdeviationer för den kanoniska datamängden NBS14 till 1e-4 (tests/allan_reference.rs) och edf korskontrollerad med en Monte Carlo-ensemble av vit FM (FM: frekvensmodulation); ärligt rastergränsat holdover-mått (figure of merit); klockensembler; modell för tvåvägs tidsöverföring med upphävning av reciproka fördröjningar + ett icke-reciprokt golv av differentiell fördröjning med slumpvandring i FM (src/timetransfer.rs, Allan-signaturen redovisas); en kalkylator för klockans holdover utan GNSS (src/holdover.rs) som visar den slutna van-Loan-tillväxten av glidfelet σ_x²(t) = q_wf·t + q_rw·t³/3 + q_drift·t⁵/20 som en för användaren synlig inversion holdover till tröskel (hur länge en klocka går fritt innan tidsfelet överstiger budgeten), med representativa kvantklockklasser (optiskt gitter/jonfälla/kvicksilverjon), modellerad, inte externt validerad: korskontrollerad mot flerstegsrekursionen av kovarians i clock_state och ärligt angiven så att för en mycket stabil klocka holdover till en snäv tröskel styrs av det antagna röda brusgolvet vid långt tau, inte den citerade ADEV (använd uppmätta golv för ett försvarbart tal). En villkorad tidsskyddsnivå (src/tpl.rs) bygger på samma holdover-maskineri för spoofing-fallet: en gräns för det oupptäckta tidsfelet givet en oberoende korskontroll, ett k-σ-golv för övervakaren plus van-Loan-glidvariansen över detektionslatensen plus en tid till larm med CUSUM (kumulativ summa), kalibrerad på en verklig inspelad spoof (JammerTest 2024, Zenodo 15911589) och reproducerbar via cargo run --example tpl_jammertest. Modellerad sammansättning, villkorad av detektion: det finns ingen ändlig ovillkorad gräns (en tillräckligt långsam ramp undgår en enskild klockstödd övervakare). Maximalt tidsintervallfel (MTIE) och TDEV är VALIDATED mot allantools (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs), och inversionen av holdover-glidvariansen är VALIDATED mot SciPy (tests/gnss_denied_clock_holdover_reference.rs). Typen telecom-timing tillämpar dem på maskerna ITU-T (International Telecommunication Union Telecommunication Standardization Sector) G.8272 / G.8272.1 / G.8273.2 / G.8271.1, se TELECOM-TIMING.md |
fullständig edf med Greenhall-algoritmen (de enkla slutna formerna är biasbegränsade men grövre än den exakta BasicSum) och identifiering av blandning av flera brustyper | exakt edf + identifiering av blandat brus: P2 |
| GNSS- / PNT-bearbetning | partial | En pseudoavståndssimulering i mätdomänen (typen gnss-sim, src/gnss_sim.rs): per synlig satellit syntetiseras ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath och L1-Doppler, med den enfrekventa jonosfären enligt Klobuchar (IS-GPS-200 (IS: Interface Specification; GPS: Global Positioning System) §20.3.3.5.2.5) och den zenitala troposfären enligt Saastamoinen (Davis 1985) projicerad med avbildningsfunktionen enligt Niell (1996), varje modell enhetstestad mot handberäkning. Därefter matas residualerna till snapshot-RAIM (receiver autonomous integrity monitoring) för HPL/VPL per epok (HPL: horisontell skyddsnivå; VPL: vertikal skyddsnivå) och en array gnss_measurements[] skrivs ut (pseudoavstånd, Doppler, C/N₀, jono-/tropokorrektioner per SV (space vehicle, det vill säga en satellit)). Dessutom DOP/tillgänglighet (DOP: dilution of precision) och RAIM med lösningsseparation ur banor; inläsning av RINEX (Receiver Independent Exchange Format) 3 NAV för flera GNSS (GPS/Galileo/QZSS/BeiDou (QZSS: Japans Quasi-Zenith Satellite System) via IS-GPS-200, GLONASS (Rysslands Global Navigation Satellite System) tillståndsvektor) tolkad → SV ECEF-position och klockbias, användbar som en förstklassig källa av typen Propagator OCH som ett infogat konstellationsblock rinex (scenarios/orbit-rinex.toml); inläsning av RINEX 3 OBSERVATION (observationslayouten 4,00 förväntas tolkas men ingen 4,00-fil har provats; RINEX 4 NAVIGATION-filer avvisas med namn i stället för att avkodas fel); en lösare för enpunktspositionering (typen pvt, src/pvt.rs) som gör verkliga RINEX-kodpseudoavstånd + broadcast-efemerid till en mottagarposition med iterativ viktad minsta kvadrat: Sagnac-/jordrotationskorrektion, broadcast-satellitklocka med −TGD, den tvåfrekventa jonosfärsfria kombinationen L1/L2 (eller enfrekvent Klobuchar), troposfär enligt Saastamoinen/Niell, elevationsviktning, DOP och snapshot-RAIM, validerad på verkliga IGS-data (International GNSS Service) (station ABMF, Guadeloupe, 2018-05-13) till 5,7 m 3D-RMS (root mean square) / 1,1 m horisontellt mot stationens uppmätta koordinat (tests/pvt_abmf.rs, scenarios/pvt-abmf.toml); och läsning/skrivning av precisa banor i SP3 (Standard Product 3, formatet för precisa banor) |
En positioneringsmotor för kod plus, från 0,36, bärvågsfasbearbetning på verkliga observationer: lösaren pvt beräknar en verklig position ur verkliga kodmätningar (enpunktspositionering, meternivå, med den tvåfrekventa jonosfärsfria kombinationen). rtk_real::run_rtk gör RTK på kort baslinje på verklig tvåfrekvent GPS-kod och -fas (dubbla differenser, ett Kalman-filter med flyttal, fastställande av heltalsosäkerhet med LAMBDA och kvottest, src/lambda.rs), och ett statiskt PPP-filter med flyttal körs på verklig kod och fas med IGS slutliga banor och klockor. Båda är VALIDATED mot publicerade ITRF2020-koordinater för IGS-stationer (WTZR/WTZZ, tests/rtk_real_wettzell_oracle.rs, tests/ppp_real_wettzell_oracle.rs, trösklar fastställda i förväg). Det som fortfarande saknas är PPP-fastställande av heltalsosäkerhet, kinematisk RTK eller nätverks-RTK och realtidsdrift. Hatch-bärvågsutjämning är ett fastlåst MODELLED-resultat (dess trösklar som fastställdes i förväg missades). Typen leo-ppp kör ett PPP-filter med flyttal på mätningar som den själv simulerar, för konvergensstudier. Det framåtriktade paketet gnss-sim förblir en simulator utifrån referens. BeiDou-GEO (GEO: geostationär bana) undantagen |
PPP-fastställande av heltalsosäkerhet, kinematisk RTK eller nätverks-RTK, realtidsdrift: använd RTKLIB/gLAB (RTKLIB: ett programbibliotek med öppen källkod för kinematisk positionering i realtid) |
| Sensorfusion / dödräkning med INS (tröghetsnavigeringssystem) | full | Strapdown-bibliotek med 3 axlar (src/inertial/{attitude,mechanization,imu_errors}.rs): kvaternionattityd med kompensation för coning/sculling, full NED-mekanisering (north-east-down) (jordrotation + transporthastighet, WGS-84 Somigliana-gravitation) och en deterministisk IMU-felmodell (inertial measurement unit) (skalfaktor, felinriktning, g-känslighet, kvantisering, hastighetsramp modellerade). Strapdown-navigatorn är nu inkopplad i ett körbart löst kopplat GNSS/INS-paket med ett kvalitetsmått (src/fusion/pack.rs, kind = "gnss-ins"): den treaxliga mekaniseringen styrs av EKF med 15 felstillstånd (extended Kalman filter) (src/fusion/{gnss_ins_ekf,closed_loop}.rs, återkoppling av position/hastighet/attityd/bias) så länge GNSS är uppe och glider sedan genom avbrottet. Det ersätter återställningen med referensen och ger verklig fusion, och redovisar det fuserade horisontella felet mot den öppna slingans fria INS-glidning. Det separata äldre paketet inertial kör fortfarande budgeten med skalär 1-DOF (DOF: frihetsgrad) med återställning mot referensen. En tätt kopplad pseudoavståndsuppdatering (update_tightly_coupled / fuse_tightly_coupled) är också implementerad: den bildar innovationen i avståndsdomänen (siktlinjens jakobian på δp) och fortsätter att korrigera med färre än fyra satelliter, där en löst kopplad PVT-positionsbestämning (position, hastighet och tid) inte finns. En fullständig tätt kopplad GNSS/INS-UKF med 17 tillstånd (unscented Kalman filter) (src/fusion/tightly_coupled17.rs) bär position, hastighet, attitydfel, accelerometer- och gyrobias samt mottagarklockan (bias + drift), med dödräkning med kvant-CAI (CAI: kall-atom-interferometer): processbruset för hastighetens slumpvandring är kallatomsaccelerometerns härledda q_va. Det glider ett avbrott på 120 sekunder begränsat till några hundra meter (mot kilometrarna för ett fritt INS av navigeringsklass). Denna UKF med 17 tillstånd är nu gjord tillgänglig som ett körbart scenario (src/fusion/hybrid_ukf.rs, kind = "hybrid-ukf", nåbart från CLI/Python/WASM/MCP): de 15 INS-felstillstånden utökas med den CAI-härledda korrektionen av accelerometerbias (kallatomsinterferometern sätter golvet för hastighetens slumpvandring q_va) och en klocka med 2 tillstånd, fas + frekvens, vars processbrus kommer från klockmotorn med q-parametrar (clock_state::q_from_allan, Allan-profil → q_wf/q_rw), driven av den inom parentes angivna CAI-felmodellen så att körningen visar hybridisering av klassisk IMU på kort sikt och kvant på lång sikt. Dess kvalitetsmått är filtrets självkonsistens: sammanslagen NEES + innovationsvithet (NIS) över en Monte Carlo-ensemble mot deras χ²-band på 95 % (det matchade filtret hamnar inom banden, ett feljusterat filter flaggas, en objektivt kontrollerbar spärr). Detta är ett uttalande om SJÄLVKONSISTENS under det modellerade bruset, INTE en garanti för noggrannhet i verkligheten: CAI- och klockindata är angivna med intervall/modellerade, CAI-hårdvaran ägs av partner, och ingenting här antyder TRL (teknikmognadsnivå)>3, flygarv eller extern validering. Den deterministiska IMU-felmodellen är konfigurerbar per sensor från TOML-scenariofilen gnss-ins (Tom's Obvious Minimal Language) ([imu_*.error_model]: skalfaktor, felinriktning, g-känslighet, kvantisering, hastighetsramp), med en ren källa med konstant bias som standard när den utelämnas |
Tät koppling är endast pseudoavstånd (bärvågsfas finns på färdplanen). Scenariot hybrid-ukf använder en enda bana med konstant hastighet i plan där attityd- och IMU-biasfelstillstånden bara är svagt observerbara, så NEES-konsistensen bedöms över den skattbara delmängden (position, hastighet, klocka = 8 tillstånd). Full observerbarhet av alla 17 kräver en manövrerande bana (färdplan). Paret accelerometerbias/lutning i den löst kopplade varianten är svagt separerbart, så kalibrering per bias görs inte gällande. IMU-felmodellen utelämnar vibrationsrektifiering och temperaturgradientdrift. UKF:en med 17 tillstånd och de tätt kopplade vägarna är självvaliderade (analytisk integration med konstant hastighet, konvergens med GNSS-stöd, återvinning av bias, den CAI-begränsade gränsen för ett avbrott på 120 s och orakel för NEES/NIS χ²-konsistens). Strapdown-mekaniseringen i sig är VALIDATED mot NaveGo v1.4 (tests/classical_strapdown_ins_reference.rs: attityd bitidentisk, hastighet/position inom namngivna analytiska gränser), men ingen korsvalidering på filternivå (NaveGo eller fordonsdatamängden KF-GINS) har körts |
bärvågsfasens täta koppling, full observerbarhet av alla 17 på manövrerande bana, banbibliotek, korsvalidering på filternivå mot NaveGo/KF-GINS: P2 |
| Integritet / RAIM / ARAIM (avancerad receiver autonomous integrity monitoring) | partial | Verklig snapshot-RAIM i src/raim.rs: minsta kvadrat-lösning + χ²-feldetektering av residualer (exakt tröskel ur en χ² med ofullständig gamma utan beroenden) och lutningsbaserad HPL/VPL (pbias ur en icke-central χ² för de konfigurerade P_fa/P_md). RAIM med lösningsseparation (MHSS) med feldetektering/felidentifiering. ARAIM-budget för integritetsrisk (P_HMI) (araim_raim) som löser ut den minsta HPL/VPL vars summerade P_HMI = Σ_k p_fault,k·Q((PL−T_k)/σ_k) uppfyller en uttrycklig allokering av integritetsrisk, det felläge för hela konstellationen med två eller flera konstellationer (araim_dual_raim, EU (Europeiska unionen) ARAIM TN (teknisk not) / DO-316; P_const = 0 ⇒ bit för bit araim_raim), ett uttryckligt integritetsstödmeddelande (IntegritySupportMessage: σ_URA/σ_URE/b_nom/P_sat/P_const, med referensvärdena för GPS+Galileo från WG-C (WG: arbetsgrupp)), plus ett Stanford(-ESA, European Space Agency)-integritetsdiagram (scenariotypen integrity, och en fristående renderare stanford_svg av de fyra zonerna + gränsen PL=error). Dokumenterat från ände till ände i ARAIM_REFERENCE.md. Dessutom scenariots filterkonsistens (k-σ-gräns) i kvalitetsmåttet |
RAIM är nåbar via scenariotypen integrity och (0,36, valfri) vid sidan av kvalitetsmåttet för klocka/holdover som ett separat block integrity_fom ([integrity]: snapshot-RAIM på en förinställd himmel från en angiven plats, otillgänglig medan GNSS är nekat; MODELLED), aldrig inblandad i holdover-måttet, som fortfarande redovisar självkonsistens. Snapshot-RAIM har FDE för en enda satellit (feldetektering och uteslutning, raim::snapshot_raim_fde, VALIDATED mot RTKLIB raim_fde i tests/integrity_snapshot_raim_rtklib_oracle.rs). ARAIM ADD v4.2, flerhypotesig lösningsseparation med bestämning av delmängder av flera satelliter, finns i src/araim_reference.rs (VALIDATED mot Stanford MAAST, tests/integrity_araim_stanford_oracle.rs), men budgeten raim::araim_raim med enhetlig sigma täcker fortfarande bara fel hos en enda SV och hela konstellationen och är inte ADD-konform (0,36, valfri: samtidiga fel i flera SV-delmängder genom ADD v4.2-regeln för delmängder generaliserad bortom par, araim_subset_raim, add_v42_protection_levels_to_order; MODELLED, ingen MAAST-körning bortom par), och uteslutning av flera SV är inte modellerad. araim_dual_raim är kopplad in i TOML-scenariokörningen via flaggan araim_dual (scenarios/araim-gps-galileo.toml), med en tillgänglighetsväg per epok araim_dual_constellation_availability. Kärnorna för snapshot/MHSS/ARAIM provas på verklig geometri från IGS precisa banor (SP3) (tests/igs_real_data.rs) och på verkliga Celestrak GPS+Galileo-TLE:er (tests/araim_dual_real_data.rs, varje satellit propagerad till en gemensam UTC-epok, den senaste TLE-epoken (tvåradig elementmängd) i mängden, 2026-06-07T07:21:04, för en användare på 400 km med 45° lutning över 24 h: tillgängligheten under en VAL (vertikal larmgräns) på 12 m / HAL (horisontell larmgräns) på 10 m är 0,993 enbart GPS, 1,000 GPS+Galileo sammanslagna och 0,990 i det dubbla läget som är robust mot konstellationsfel. Den siffra som tidigare publicerades här, 0,21→0,67 med det robusta läget "begränsat", kom från att varje satellit propagerats från sin egen TLE-epok, en himmel som aldrig funnits, och är återkallad). Den tidigare jämförelsen med "EU-ARAIM-TN Table A-3" är återkallad (ingen publik källa), och en reproduktion av posterna för maximal URA i EU-US WG-C ARAIM Milestone 3 (tabellerna 5 till 7, raderna Depleted och Baseline) görs i xval/araim-m3/ under angivna avvikelser (MODELLED, se INTEGRITY.md). inte certifierad för DO-229/ARAIM |
ARAIM med flera fel (ADD v4.2): klart; delmängder av flera SV i raim + paritet med gLAB i mottagardomänen + inkoppling i kvalitetsmåttet: P2 (se INTEGRITY.md) |
| Hotmodellering av spoofing / jamming | partial | En stokastisk detektor för tidsspoofing (typen spoof, src/spoof.rs + src/detection.rs): fyra injektionsformer (linjär ramp, stegsprång, meaconing, replay) mot en klockstödd övervakare med ett tvåsidigt χ²₁-energitest / Neyman–Pearson-test, med detektionströskeln satt utifrån en målbudget för falsklarm P_fa och sannolikheten för missad detektion P_md redovisad både i sluten form och med Monte Carlo (de två stämmer till några ×1/√N). Säkerhetsmåttet är 1 − P_md. Dessutom en jamming-modell med länkbudget (typen jamming, src/jamming.rs): förhållandet mellan störsändare och signal ur geometri (fri rymdförlust + antennförstärkning vid mottagning per riktning), den vanliga ekvationen för effektivt C/N₀ vid anti-jam (processvinst vid despreading + spektralseparationsfaktor Q; Kaplan & Hegarty §9,4), förlust av låsning per satellit vid en konfigurerbar spårningströskel och ett kvalitetsmått availability_under_jamming över en Walker-konstellation. Dessutom en flerlagers svit av RF-/mätövervakare för spoofing (RF: radiofrekvens) (src/spoof_monitors.rs): ett paritetstest för konsistens i RAIM över flera satelliter (parity_raim_test, viktad residualkvadratsumma (SOS) mot en χ²(m−4)-tröskel, och det flaggar korrekt att en gemensam bias är osynlig för RAIM), en AGC-övervakare (automatisk förstärkningsreglering) (AgcMonitor, mottagen effekt över det förväntade golvet), en övervakare av signalkvalitet / SQM (signal-quality monitoring) (SqmMonitor, obalans mellan Early/Late-korrelatorer) och en kombinerare för lagerfusion (fuse_spoof_layers). Dessa sätts ihop till en integrerad CombinedSpoofDetector vars evaluate tar emot en epok av observabler (geometri + residualer, AGC-effekt, Early/Late-uttag) och kör alla tre lagren genom den viktade fusionen i ett enda anrop och returnerar diagnostiken per lager. Den görs tillgänglig som det körbara scenariot spoof-detect (src/spoof_detect.rs, nåbart från CLI / Python / lekplatsen, JSON + SVG (Scalable Vector Graphics)) och är karakteriserad mot de publicerade scenarieparametrarna i TEXBAT (Texas Spoofing Test Battery) (Humphreys m.fl., ION (Institute of Navigation) GNSS 2012; tests/spoof_texbat_validation.rs), och reproducerar det dokumenterade detekterbarhetsmönstret, inklusive de negativa resultaten: överstark ds2 fångas av AGC + SQM, ds3 med matchad effekt av enbart SQM, positionsknuffen ds4 av RAIM, och ds7 med matchad effekt och bärvågsfasinriktning lämnas (korrekt) åt den klockstödda detektorn |
Typen jamming är en länkbudget: den har ingen flervägsutbredning och ingen AGC-dynamik i tiden. Sedan 0,36 tar den fyra valfria sektioner: [crpa], en adaptiv gruppstråle per kanal (nollstyrning eller MVDR från src/crpa.rs, kontrollerad mot en oberoende omräkning med numpy; MODELLED), och [terrain], den enkla knivseggsdiffraktionsförlusten på störsändarens väg över en SRTM-ruta (src/jamming_terrain.rs, ITU-R P.526-15 §4,1, kontrollerad mot en oberoende omräkning med numpy på en verklig ruta; MODELLED, bara en knivsegg), [acquisition], hysteres mellan förvärv och spårning, och [front_end], den inställda AGC-avläsningen och ADC:ns kvantiseringsförlust för gaussiska insignaler (src/jamming_rx.rs; flaggad som ogiltig för icke-gaussiska störsändare; MODELLED). Spegelreflekterad flervägsutbredning, fädning för landmobil och AGC finns i IQ-lagret (src/iq/channel/multipath.rs, src/iq/channel/land_mobile.rs, src/iq/frontend/agc.rs) och är inte inkopplade i typen jamming. Tabellen Q för spektralseparation innehåller läroboksvärdena per typ (CW och smalband 1, bredband och svepande 2 sedan 0,36), fastlåsta mot koefficienterna som härleds ur effektspektraltätheterna (PSD) i navsignal (se raden för navigeringssignaler). Den klockstödda spoofing-detektorn gäller en enda klocka. RF-/mätövervakarna är nu integrerade (CombinedSpoofDetector) och karakteriserade mot de publicerade parametrarna i TEXBAT-scenariot (Humphreys m.fl.). Det som återstår är validering mot de råa vektorerna: TEXBAT IQ-prover (in-phase/quadrature) (som kräver en förvärvs-/spårningsfrontände för SDR (software-defined radio) som kshana inte har, eftersom det är en simulator och inte en mottagare) eller ett licensierat Spirent-scenario, en dokumenterad uppföljning |
klockstödd + integrerad kombinerad detektor av multi-SV-RAIM-konsistens + AGC + SQM + karakterisering av TEXBAT-parametrar: klart; validering på råvektorer (TEXBAT IQ / licensierad Spirent): uppföljning |
| Signalmodulering och prestanda för kodspårning av navigeringssignaler | partial | src/navsignal.rs: signalnivån mellan länkbudgeten och mätdomänen. Effektspektraltätheter med enhetsarea för BPSK-R(n) (binary phase-shift keying, rektangulära chips) och sinus-BOC(m,n) (binary offset carrier) (CI-validerade till enhetsarea, till den slutna formen för BPSK:s egen spektralseparationskoefficient (SSC) κ = 2/(3R_c) och till BOC:s spektrala uppdelning: nollställe vid bärvågen, toppar vid ±f_s). Spektralseparationskoefficienten κ = ∫ G_s(f)G_i(f) df, som nu härleder anti-jam-värdet Q som jamming använder ur de faktiska signal- och störsändarspektra (Q = 1/(R_c·κ)) i stället för en representativ konstant (breddbandsreferensen korskontrolleras i CI). RMS-bandbredden (Gabor) (BOC > BPSK, måttet på avståndsinformation / Cramér–Rao). Det termiska bruset i jittern för kodspårning med koherent early–late DLL (delay-locked loop) (Kaplan & Hegarty §8, ~under en meter för C/A vid 45 dB-Hz, monotont i C/N₀). Och flervägsfelets hölje (koherent EML (early-minus-late), funnet genom att lokalisera kompositdiskriminatorns nollställe, undertryckning med smal korrelator verifierad). Ett lager för utformningsavvägning av avståndskoder (CodeFamily) lägger till sidolobsnivån i periodisk autokorrelation för m-sekvens/Gold (1/L för en m-sekvens) och den trevärdiga korskorrelationsgränsen för Gold t(n)/L, som reproducerar den publicerade GPS C/A −23,9 dB Gold-korskorrelationen (ett externt ankare) och antalet m-sekvenser φ(2ⁿ−1)/n, plus inversionen mellan kodlängd och entydigt avstånd. Garantierna för Gold returnerar ärligt None där inget föredraget par finns (n mod 4 = 0), i stället för att redovisa en gräns som inte gäller. |
Sedan 0.31.0 lägger det separata IQ-lagret (src/iq/, kommandona kshana iq, utformning i design/GNSS-IQ-PLAN.md) till en mottagarkedja i programvara: FFT-förvärv (fast Fourier transform), en spårningsbank med flera kanaler med DLL/PLL/FLL (delay-, phase- och frequency-locked loop), frontändsfiltrering och kvantisering till 1 till 14 bitar samt strömning av inspelade datamängder. En oberoende programvarumottagare återvinner referensen som injicerats i sina scener, och GPS L1 C/A-koderna och LNAV-bitarna (legacy navigation message) är bitexakta mot gps-sdr-sim. Det som fortfarande saknas: slingornas diskriminatorer antar den ideala korrelationstriangeln för BPSK, så det finns ingen upplösning av BOC:s spårningsosäkerhet. Kanal- och slingmodellerna är MODELLED, kontrollerade mot slutna former och injicerad referens, inte mot uppmätt IQ från fält. Endast skalära slingor (ingen vektorspårning). Utformning av hårdvara för antenn/RF-nyttolast (strålningsdiagram, frontände) ligger medvetet utanför omfattningen, det är en nyttolastpartners roll. |
BOC-osäkerhet + validering av IQ-lagret mot fältens IQ: P2+ |
| Fysik för kvant-PNT-sensorer | partial | De flesta sensorer är publicerade Allan-/brusbudgetkoefficienter (CSAC, optisk), plus en accelerometer med kall-atom-interferometer (CAI) från första principer i src/inertial/quantum_imu.rs: Mach–Zehnder-fasen med tre pulser Φ = k_eff·a·T², kvantprojektionsbrus (skottbrus) σ_Φ = 1/(C√N), den härledda PSD:n för hastighetens slumpvandring q_va som tröghetsstacken förbrukar, kontrastavtagande, vibrationsöverföringsfunktionen |H(ω)| + varians för vit PSD, och nu systematiska fel från Coriolis/rotation (coriolis_phase, ekvivalent bias 2Ω×v) och ljusskift av AC-Stark (AC: växelström) (ac_stark_phase, symmetrisk upphävning) + ett svep av drift över cykeltiden (cai_drift_sweep), och en sammansatt felbudget för kvant-tröghetsbaserad dödräkning (QuantumNavBudget) som viker ihop CAI:ns vita brus i hastighetens slumpvandring med kvarvarande bias (½·b·t², korskontrollerad mot den oberoende Euler-integratorn AccelModel), skalfaktorfel och en valfri långsiktig försämring av stabiliteten (skild från dekoherens per skott) till ett enda mått på positionsdrift över holdover plus ett tröghetsbaserat holdover till tröskel, dödräkningens tvilling till klockans holdover. Det modellerade kvantgolvet är inringat (inte matchat i paritet) mot 96 nm/s²/√Hz för den mobila gravimetern av Freier m.fl. 2016 (arXiv:1512,05660): det ligger under och inom ~2 storleksordningar från den. Dokumenterat i QUANTUM.md |
Systematiska fel från vågfront/strålpekning är inte modellerade. Gränsen för Mach–Zehnder-fransosäkerhet är modellerad (max_unambiguous_accel, dynamic_range_cells i src/inertial/quantum_imu.rs), men att lösa osäkerheten är det inte. De exakta flygtestbudgetarna för CARIOQA-PMP (CARIOQA: Cold Atom Rubidium Interferometer in Orbit for Quantum Accelerometry) / Boeing-AOSense (de kräver publicerade plattforms-PSD:er + signal-brusförhållande (SNR) per skott) och en förinställning för JS (JavaScript) på lekplatsen återstår |
systematiska fel från vågfront + reproduktion av flygtest: P2+ (QUANTUM-MODELS.md) |
| Konstellationsutformning | partial | Syntetisk Walker (både analytisk keplersk och SGP4 med medelelement, den senare propagerad genom den med 4,12 mm validerade kärnan, src/walker.rs) + synlighet och DOP för verkliga TLE:er och flera konstellationer (GPS+Galileo till 100 %), validerad mot en verklig ögonblicksbild av Celestrak gps-ops (tests/igs_real_data.rs). Ett PDOP-svep (position dilution of precision) av utformningar över rutnätet {planes × sats × inclination} och kvalitetsmått för täckningsandel / återbesökstid. Den körbara typen constellation-design (Walker delta- och stjärnmönster i konventionen i: T/P/F, uttryckliga elementlistor, utformningar med flera skal och publicerade förinställningar, runt jorden, månen, Mars eller vilken annan katalogiserad kropp som helst) vars Walker-geometri och publicerade GPS-, Galileo- och GLONASS-platser är VALIDATED mot de publicerade tabellerna och vars globala GPS-baslinje för dilution of precision är VALIDATED mot prestandastandarden för GPS Standard Positioning Service, medan täckningskartorna för godtyckliga utformningar förblir MODELLED. En gradientfri optimerare av utformningar (optimize_walker_design) som söker i rutnätet efter den bästa utformningen under ett valt mål (MinSatellitesForCoverage / MaxCoverage / MinWorstPdop), validerad att returnera vinnaren enligt brute force. Och analytisk geometri för täckningsgator (coverage_half_angle_rad, street_half_width_rad; slutna former av Rider/Beste, handverifierade; GPS vid en mask på 5°: λ ≈ 71,2°, halv gatubredd för 4 satelliter ≈ 62,8°) |
En idealiserad dimensionering av minsta antal satelliter för täckningsgator finns (walker::StreetsCoverageDesign). Den sömexakta Rider-korrektionen vid gränsen mellan motroterande plan är inte implementerad. Lekplatsen ritar en 3D-banvy utan beroenden (web/studio/lib/orbit3d.mjs), och en CZML-export (Cesium Language), --export czml, laddar geometrin i CesiumJS-jordklotet. DOP-kärnan är VALIDATED mot gnss_lib_py (tests/dop_reference.rs), och hela synlighetskedjan för flera konstellationer är korskontrollerad från ände till ände mot Orekit 12,2 + gnss_lib_py (tests/coverage_dop_full_oracle.rs): jordens utformningar klarar varje tröskel, men utformningarna för månen och Mars missar DOP-tröskeln på numeriskt singulär geometri, så raden förblir MODELLED. Geodetisk kontra geocentrisk "uppåt" i DOP-systemet |
dimensionering av täckningsgator + 3D-banvy + korskontroll av jorden från ände till ände: klart; sömexakt Rider-korrektion + dåligt konditionerad DOP utanför jorden: P2 |
| Verifiering och validering | partial | Kontroller mot externa orakel i hela motorn (SGP4 mot 666 AIAA-vektorer, Allan-familjen mot Stable32 och allantools, system mot SOFA/ERFA, kraftmodell och banbestämning mot Orekit, ARAIM mot det genomarbetade exemplet från WG-C och mer därtill; det aktuella antalet står i den genererade rubriken i VERIFICATION-MATRIX.md); deterministiska Allan-kontroller; en maskinkontrollerad verifieringsmatris (src/verification.rs), en korsreferens krav→modul→test→orakel→status vars ärlighetsinvarianter är enhetstestade: en rad får märkas validated bara om den bär ett oberoende externt orakel (NIST/AIAA/SOFA/IGS/publicerat värde), så att en intern självkonsistenskontroll inte kan utge sig för att vara en validering. Matrisen renderas till Markdown/CSV (CSV: kommaseparerade värden) för en korsreferens för verifiering enligt ECSS-E-ST-10-02 (ECSS: European Cooperation for Space Standardization), och registrerar de fyra luckorna i partnerägd hårdvara/PA (PA: produktsäkring) som just sådana |
Kalibreringsensembler täcker hittills tre kontroller med ett enda frö (CALIBRATION-ENSEMBLES.md, fastställda i förväg: Monte Carlo-bootstrapintervallet täcker i 96 % av 200 frön; en percentiltolerans är skör mot frö, NOT MET vid 91,5 %). De andra raderna kalibreras fortfarande på enskilda frön. Matrisen upprätthåller klassificeringen av rader, och CI kontrollerar nu också att varje test, fil och post i crate som en rad hänvisar till finns (tests/verification_rows_name_a_test_that_exists.rs, tests/verification_rows_cite_evidence_that_exists.rs) och att publicerade siffror fortfarande reproduceras (tests/published_figures_still_reproduce.rs). Den graderar inte själva oraklet, vilket en granskare fortfarande läser |
kalibreringsensembler: P1 |
| LEO-PNT (positionering, navigering och tidssynkronisering från låg jordbana) | partial | Sju typer, systemoberoende med namngivna publika förinställningar: leo-signal (signalutformningar för valfritt band och valfri struktur: BPSK-, BOC-, MBOC- (multiplexed BOC) eller platta OFDM-liknande (orthogonal frequency-division multiplexing) komponenter, kodspårning, förvärv, GNSS-kompatibilitet, bandavvägning), leo-pass (ett utformat, element-, TLE- eller Walker-pass med en länkbudget per band: regn, scintillation och byggnadsintrångsförlust enligt ITU-R (International Telecommunication Union Radiocommunication Sector), jonosfär, antenn, Doppler, mot de MEO-GNSS-satelliter (medelhög jordbana) som är i sikte), leo-navmsg (broadcast-efemerid och klocka på den keplerska basen i Galileo ICD (interface control document) eller valbara LEO-modeller, anpassade och kodade med en ramkontroll med CRC-24Q (24-bitars cyklisk redundanskontroll)), leo-pvt (fusionerad positionering med MEO + LEO av pseudoavstånd och Doppler över valfria konstellationer), leo-ppp (PPP-konvergens med och utan LEO-förstärkning, på simulerade mätningar), ntn-positioning (gränser för positionering med 5G NTN, icke-terrestra nätverk, utifrån signalbandbredd) och leo-pnt-chain (ett system från ände till ände, där varje stegs utdata lämnas till nästa). VALIDATED delar: ITU-R:s länktermer mot rekommendationernas tabeller och valideringsexempel, maximal Doppler mot en publicerad tabell, användaralgoritmen för Galileo mot RTKLIB till 1 mm, CRC-24Q, SISRE-vikterna (signal-in-space range error) |
Inga fältdata eller inspelade signaler. Siffrorna för positionering, PPP, NTN och tidssynkronisering är MODELLED (slutna former, filterkonsistens, jämförelser med publicerade trender). Förinställningarna är från offentliga källor eller härledda, inte operatörsdata | validering mot verkliga inspelade signaler: P3 |
| Spektrum / RF-miljö | partial | Typen spectrum (src/spectrum.rs): GNSS L-bandet (och multibandsutformningar för ultrahög frekvens (UHF), S- och C-band) som en enda effektspektraltäthet, frekvens på tvären och tid nedåt, under en skriptad tidslinje för störsändare (störsändare med kontinuerlig våg, smalband, chirp och matchat breddband), med J/S (förhållandet mellan störsändare och signal) och effektivt C/N₀ (förhållandet mellan bärvåg och brustäthet) per band. SigMF-inspelningar in och ut samt spektralskattningar med Welch av komplexa prover. De slutna signalspektrumen och spektralseparationskoefficienterna är VALIDATED. Vattenfallet är MODELLED |
Signaler för GLONASS, BeiDou och Galileo E6 är inte modellerade. Ingen mottagarfrontände och ingen validering mot inspelad IQ (in-phase/quadrature) | jämförelse med inspelade signaler: P3 |
| Förtroende för mottagarloggar (fartyg och allmänt) | partial | src/receiver_trust/: övervakare över en mottagares egen logg (bärvåg-till-brustäthet, konsistens i position, fart och kurs, tid) med händelser och prediktioner angivna före körningen. På en fartygsplattform en poäng på 0–100 med skäl. Live-läge på en ström med meningen $PKSHT och en valfri spärr. MODELLED; rådgivande, inte typgodkänd navigationsutrustning |
Trösklarna är angivna standardvärden, inte uppmätta mot mottagare i drift. En logg poängsätter bara den loggen. Ingen radiofrekvent indata eller utdata. Inte typgodkänd navigationsutrustning | docs/RECEIVER-TRUST.md, docs/MARITIME-TRUST.md |
| Bevispaket och förtroendetelemetri | partial | src/evidence/: ett signerat, hashkedjat paket av ett loggfönster, dess konfiguration och motorns resultat, verifierbart offline, med en valfri tidsstämpeltoken enligt RFC 3161. src/telemetry/: förtroendeströmmen som Prometheus-mått, syslog-händelser (CEF eller LEEF) och valfri OpenTelemetry, med en exempelpanel i Grafana |
Ett paket är en teknisk handling, inte ett juridiskt utlåtande, och säger inte vad som orsakade en händelse. Tidsstämpelmyndighetens signatur verifieras inte. Telemetri skickar bara telemetri | docs/EVIDENCE-PACKS.md, docs/TRUST-TELEMETRY.md |
| Träningsströmmar för besättning och störningskartor | partial | src/nmea_synth/: syntetisk NMEA från brygga med skriptade händelser för jamming, drag-off, tidsspoofing och replay samt en instruktörslogg (endast text). src/interference_map/: sammanställda kartor över försämrad navigering från öppet licensierade rapporter från flygplan och fartyg och en rutts exponering, från lokala filer |
Strömmarna är träningsdata, aldrig för ett fartygs levande navigationssystem. Kartorna är sammanställda, inte en prognos, och beror på de rapporter som lämnats | docs/NMEA-TRAINING.md, docs/INTERFERENCE-MAP.md |
| Export för testbänk | partial | src/interop/testbench.rs: ett scenarios av typen gnss-ins, jamming eller gnss-sim fordonsrörelse och händelser som en rörelse-CSV, NMEA, waypoint-text och händelsefiler för en GNSS-simulator i laboratorium |
Ingen signal skrivs. Ingen prestanda hos simulator eller mottagare görs gällande. Filerna kontrolleras som de läses tillbaka av en simulators rörelseläsare med öppen källkod (gps-sdr-sim), men fysiken i scenariots egen referensbana är inte externt kontrollerad | docs/TEST-BENCH.md |
| Verifiering av Galileo OSNMA | partial | src/osnma/ och kshana osnma verify: läser Galileo I/NAV-sidor eller en UBX-ström och redovisar, per satellit och epok, om navigeringsdatan är autentiserad (signerad nyckel med Merkle-rot, TESLA-kedja, MAC-värden), med anledningen till att en kontroll misslyckades och en valfri oberoende referenstid för färskhet. Även osnma_verify i Python och WebAssembly |
Autentiserar data mot nycklar som användaren anger. Gör inte anspråk på prestanda mot spoofing och är inte en tjänst för navigeringsintegritet eller typgodkänd utrustning. Kontrollerad på syntetiska vektorer, de officiella ICD-testvektorerna är en extern nedladdning | docs/OSNMA.md |
| Compliance-koppling till publika ramverk | partial | src/compliance/ och kshana compliance-report: utdata från Kshana kopplade till sex publika ramverk och standarder för resiliens med källor och en lucka på varje rad. En körning räknas bara när dess resultat bär de fält som dess typ skriver |
En koppling är en bedömning. Rapporten säger vad en uppsättning körningar ger belägg för, aldrig att ett ramverk är uppfyllt eller att en produkt är godkänd. EN 16803 citeras bara ur katalogtext | docs/compliance/README.md |
| Marina integrationer | partial | Ett Signal K-plugin, OpenCPN via NMEA i gate-läge över TCP och ett referensbygge för en liten dator bredvid mottagaren (integrations/, deploy/) |
Provat på inspelad syntetisk utdata. Pluginet är inte publicerat på npm. Rådgivande, inte typgodkänd navigationsutrustning | docs/MARINE-INTEGRATIONS.md |
Bredare domäner för rymdsystem (utanför omfattningen i dag)#
Flera av dessa är none. Andra är nu förstaordningens partial modeller (typerna för uppdragsanalys / miljö som lades till i serien v0.17.0). De listas så att omfattningen är otvetydig och inte antyds av tystnad. Kshana är en PNT-simulator, inte GMAT/STK/Orekit (STK: Systems Tool Kit). Dessa angränsande modeller är medvetet av första ordningen och MODELLED, aldrig validerade flygverktyg.
| Förmåga | Status | Anmärkning / färdplan |
|---|---|---|
| Uppdragsutformning / banoptimering | partial | src/maneuver.rs: impulsiva ΔV-noder med kovariansutbredning på 6×6 (ECI/LVLH (ECI: Earth-centred inertial; LVLH: local vertical, local horizontal) ramar för utförandefel), integration av ändliga brännpådrag kontrollerad mot den slutna Tsiolkovskij-ekvationen till < 0,01 %, en Lambert-lösare med ett varv enligt Izzo-2015 + en exakt Kepler-propagator med universella variabler (Lambert-utdata rundtursprövade mot tvåkroppsreferens) och ett porkchop-svep (uppskjutning × ankomst) av C3 / ankomst-V∞ som ges som ett JSON-konturrutnät vars minimum kontrolleras mot det analytiska Hohmann-golvet. Ingen banoptimerare. En Lambert-lösare med flera varv (maneuver::lambert_multirev, upp till tre varv, båda grenarna) är VALIDATED mot pykep 3.0.1 (tests/lambert_multirev_oracle.rs). Porkchop körs på den syntetiska koplanära cirkulära modellen eller, med maneuver::porkchop_kernel, på en DE440 SPK (VALIDATED mot SPICE-tillstånd + pykeps Lambert, tests/porkchop_de440_oracle.rs). maneuver::optimise_transfer_kernel hittar det kontinuerliga datumoptimumet (minsta C3 eller minsta ankomst-V∞, typ I eller II) på DE440, VALIDATED mot en oberoende optimerare med SPICE + pykep + SciPy (tests/transfer_optimiser_oracle.rs). Mot de publicerade minima för Jorden–Mars i NASA/TM-2010-216764 2026 stämmer den med värdena för typ II och missar minsta C3 för typ I med −5,18 % (registrerat). GMAT i sig kördes inte, pykep är bibliotekets orakel. En söm för planetefemerider för djupt rymden (src/ephem_provider.rs) och en korskontroll mot DE440 (Development Ephemeris 440) (xval/anise-mars-od, 137 m @ 1-dygns Marsbåge) finns nu, se raden för PNT i djupt rymden / interplanetärt. Prestandasimuleringslagret ovanför GMAT/Orekit, inte en ersättning. P3 |
| AOCS (system för attityd- och banstyrning) / GNC (styrning, navigering och reglering) / attityd | partial | Typen attitude-budget (src/attitude_budget.rs): gravitationsgradientmoment i värsta fall 1.5·(μ/R³)·ΔI + RSS-budget (root-sum-square) för pekfel över termer på 1σ per bidragsgivare, en MODELLED skalär budget för pekning/störningar före hårdvara. Stelkroppsdynamik för attityd utan moment med kvaternionstillstånd (src/attitude_dynamics.rs: Eulers ekvationer + kvaternionkinematik, RK4) är VALIDATED mot rymdfarkostens nav i Basilisk 2.9.1 (tests/attitude_dynamics_basilisk_oracle.rs, kvaternion inom 1e-9 över 1e4 s), och toppen av gravitationsgradientmomentet mot Basilisks GravityGradientEffector (tests/attitude_gg_torque_basilisk_oracle.rs). Attitydbestämning med Wahba finns i src/wahba.rs. Typen aocs (src/aocs.rs, src/aocs_kind.rs, AOCS.md): en tröghetspekande vridning med balanserade reaktionshjul under MRP-återkoppling, hjulmoment med minsta norm och motorgränser. Den slutna slingan är VALIDATED mot Basilisk 2.9.1 på tre fall som fastställts i förväg, till avrundningsfel. Ett MEKF från ett gyro och en stjärnföljare (src/aocs_mekf.rs) kan sluta slingan på sin skattning (MODELLED, filterkonsistens). Ingen spårningsstyrning, ingen integralåterkoppling, ingen rörelsemängdshantering, inga magnetmomentgivare, inga thrusters, ingen hjulfriktion eller hastighetsgränser. Ingen yttre momentmiljö i attitydsdynamiken. Inte en flygstyrenhet. P3 |
| Referenssystem → jordfasta | full | Klart: TEME→ECEF/ITRF, polrörelse och den CIO-baserade kedjan GCRS→ITRS är implementerade och VALIDATED (bit för bit mot SOFA/ERFA; 4 mm från ände till ände mot Vallado). Se raden Referenssystem ovan |
| Kommunikation och länkbudgetar | partial | src/linkbudget.rs: en Friis-länkbudget för djupt rymden (sändareffekt · antennförstärkning · brus → C/N₀ · Eb/N₀ · marginal) som matar den radiometriska vägen/GSE (GSE: marksupportutrustning), plus de optiska länkarna och RF-länkarna för tidsöverföring (src/timetransfer*.rs), och den körbara typen link-budget, enkelriktad länkekvation enligt CCSDS-401/DSN-810-005 (DSN: Deep Space Network) C/N₀ = EIRP − FSPL − L_other + G/T − k med EIRP (effektiv isotropiskt utstrålad effekt) / G-T som indata och val av S/X/Ka-band (MODELLED teknisk länkbudget, inte ett kalibrerat terminaldatablad). Ingen åtkomstschemaläggning, ingen adaptiv kodning. P2 |
| Marksegment och drift | partial | Scenariotyp passes (src/passes.rs): prediktion av marknära stationspass (uppgång/nedgång) — AOS/TCA/LOS (AOS: acquisition of signal, signalförvärv; TCA: time of closest approach, tidpunkt för närmaste passage; LOS: loss of signal, signalförlust), maximal elevation, varaktighet per pass och total åtkomsttid över en horisont, från en SGP4-elementuppsättning i det jordfasta systemet IAU 2006/2000A med ITU-R P.834-9-refraktion och ljustid — VALIDATED mot Orekit 13.1.8 vid stationer på havsnivå (60 fall / 1210 pass, tests/pass_predictor_on_path_orekit_oracle.rs); den geometriska passes::predict_passes är VALIDATED mot elevationsdetektorn i Orekit 12,2 (22 scenarier / 129 pass, tests/ground_station_pass_prediction_reference.rs); ingen schemaläggningsoptimerare eller konfliktlösning. P3 |
| Telemetri / TT&C / CCSDS | partial | skräddarsydd TOML-in/JSON-ut; CCSDS OEM-export (Orbit Ephemeris Message) och -import (502.0-B KVN (keyword-value notation), GMAT/Orekit/STK) via den körbara typen oem-interop (src/oem.rs parse_oem, tur-och-retur-brygga; det standardenliga utbytet av ett enskilt objekt är VALIDATED mot den oberoende oem 0.4.5-parsern); CCSDS-TDM (503) Tracking-Data-Message, tolkning och skrivning (src/ccsds_tdm.rs, utbytesformatet för radiometriska data i djupa rymden); och typen space-packet (src/space_packet.rs): CCSDS 133.0-B Space Packet, kodning och avkodning av primärhuvudet med bitexakt tur-och-retur. En skrivare för CCSDS OMM (Orbit Mean-Elements Message, 502.0-B-2, en del av ODM-familjen) (src/omm.rs) publicerar SGP4-medelelement i KVN, och en NAIF SPICE-kernelläsare i ren Rust (src/naif_kernel.rs: DAF-behållare, SPK typ 2, binär PCK typ 2) ligger bakom ephem_provider::KernelEphemeris. Övriga CCSDS-meddelandetyper (OPM, OCM, AEM (AEM: Attitude Ephemeris Message)) och skrivning av SPICE finns kvar som en punkt på färdplanen (P2) |
| Interoperabilitet och standarder (RINEX/SP3/SPICE/CCSDS) | partial | RINEX 3 NAV för flera GNSS — GPS, Galileo, QZSS, BeiDou MEO/IGSO (IS-GPS-200) och GLONASS (PZ-90 (PZ: Parametry Zemli, det ryska geodetiska datumet) tillståndsvektor med RK4) — inläst, propagerad och körbar som en blandad konstellation; RINEX 3 OBSERVATION-parser (pseudoavstånd/bärvåg/Doppler/SNR per observationskod, med LLI/SSI-flaggor (LLI: loss-of-lock indicator, indikator för förlorad låsning; SSI: signal strength indicator, indikator för signalstyrka); 4,00 förväntas kunna tolkas, otestat); SP3-c/d precisa efemerider, läsning ↔ skrivning i tur och retur (tolkning och export för Ginan/RTKLIB/gLAB) och en Lagrange-propagator av 10:e ordningen (11 punkter) (Propagator::Sp3Precise); SP3-exporten är tillgänglig i CLI (kshana <orbit.toml> --export-sp3 out.sp3, eller export_sp3 = true) och validerad i tur och retur mot den verkliga GPS-konstellationen till <0,5 m över 24 h (tests/sp3_export_roundtrip.rs); CCSDS OEM 2,0-skrivare för efemerider — TEME-tillståndsexporten med hastighet för flygdynamikverktyg — nu tillgänglig i CLI (kshana <orbit.toml> --export-oem out.oem, eller export_oem = true) och kontrollerad i tur och retur mot propagatorns tillstånd (tests/sp3_export_roundtrip.rs). RINEX-observationsparsern matar nu en lösning för enpunktspositionering (pvt, validerad på verkliga IGS-data — se raden GNSS / PNT). Dessutom CCSDS-TDM (503) tracking-data-message, tolkning och skrivning (src/ccsds_tdm.rs). Geometriexporter för visningsverktyg och verktyg för uppdragsanalys: CZML, KML (Keyhole Markup Language), GeoJSON och STK-efemerider (--export, src/interop/), var och en inläst tillbaka av en validerare skriven utifrån formatets specifikation (tests/interop_formats.rs), en GeoJSON-ruttimport (--import-route), SigMF-inspelningar (Signal Metadata Format) in och ut för typen spectrum, samt text i RINEX-4-stil / CSV för LEO-navigeringsmeddelandet (INTEROP.md, STANDARDS.md). Inget BeiDou-GEO, ingen PPP med heltalsosäkerhet eller kinematisk RTK (statisk PPP med flyttal och RTK på korta baslinjer finns på verkliga data, se raden GNSS / PNT), ingen SPICE-skrivare och inget OPM/AEM ännu (OEM-läsaren finns via typen oem-interop, OMM-skrivaren i src/omm.rs och en SPICE SPK/PCK-läsare i src/naif_kernel.rs) — P2 "annex adjacent domains via standard formats" |
| Rymdväder / miljö (jonosfär/atmosfär/strålning) | partial | Typen space-weather (src/space_weather.rs): sol- och geomagnetiska index (Kp↔ap IAGA-tabell (International Association of Geomagnetism and Aeronomy) med 28 steg, dagligt Ap, centrerad 81-dagars F10.7a), exosfärstemperatur enligt Jacchia-71 och en aktivitetsdriven koppling av termosfärens densitet över en statisk atmosfär — MODELLED av första ordningen, INTE en absolut densitetsmodell av typen NRLMSISE. Jonosfär: sändningsmodellen Klobuchar (VALIDATED mot RTKLIB) och en läsare för IONEX-kartor (IONosphere map EXchange format) med TEC (total electron content) (src/ionex.rs, enhetstestad). En verklig global jonosfärskarta från CODE (CODG1330.18I) är den uppmätta referensen för raden om geometrifri sned TEC (tests/geometry_free_tec_gim_oracle.rs), men det testet utvärderar kartan i sin egen fixturgenerator, så själva läsaren src/ionex.rs är ännu inte korskontrollerad mot en verklig produkt; ingen fysikbaserad eller rymdvädersdriven jonosfärsmodell; P2+ |
| Gravitationskarta / alt-PNT-navigering | partial | src/gravimeter.rs: en mätmodell för gravimeter med kalla atomer vars vitbrusgolv härleds ur ASD för CAI-accelerometern (σ = ASD/√τ), ett fullt normaliserat gravitationsanomalifält i sfäriska harmoniska av låg grad (validerat mot de slutna uttrycken för Legendre-funktioner och en handhärledd anomali med en enda term) samt syntetiska mascons, och ett partikelfilter för matchning mot gravitationskarta (sammansatt av mapmatch + particle_filter) som återskapar ett GPS-fritt spår ur den anomalisekvens det flyger igenom. Riktmärket på 60 minuter utan GPS (run_gps_denied_gravity_nav, scenarios/gps-denied-gravity-nav.toml) flyger ett avbrott på ~700 km / en timme där tröghetslösningen driver till ≈ 70 km, och en hierarkisk grov-till-fin-matchare med gravimeterns deterministiska, seedade vita brus återskapar den till ≈ 145 m (< 500 m) — stabilt över brusrealiseringar och bevisligen begränsat av förfiningen (ett enda grovt rutnät stannar vid ~2 km). Dessutom ett fullständigt geomagnetiskt huvudfältsmodell IGRF-14 (IGRF: International Geomagnetic Reference Field) (src/igrf.rs: IAGA:s Schmidt-normaliserade sfäriska harmoniska fält till grad/ordning 13, 2025,0 + sekulär variation, koefficienter maskingenererade från den officiella igrf14coeffs.txt; validerad mot den slutna lutande dipolen, en finita differenser av den skalära potentialen och den kända geomagnetiska polen/styrkan) — det magnetfält en plattform kan matcha mot en karta för navigering med magnetiska anomalier. Dessutom terrängreferensnavigering (TERCOM/SITAN (TERCOM: terrain contour matching; SITAN: Sandia Inertial Terrain-Aided Navigation)) och den kombinerade gravitations-, magnet- och terrängnavigatorn (src/altpnt/terrain.rs): en handskriven parser för SRTM (Shuttle Radar Topography Mission) .hgt digitala höjdmodeller (DEM) (16-bitars med tecken, big-endian, radvis, nordraden först, void -32768; validerad mot specifikationen för GDAL-drivrutinen SRTMHGT (Geospatial Data Abstraction Library; Shuttle Radar Topography Mission height-file format) och ett slutet bilinjärt mittpunktsorakel), en modell för radar-/barohöjdmätare (altimeter) och en run_terrain_nav-matchare som återskapar ett GPS-fritt spår ur markhöjdsprofilen mot DEM, och run_combined_altpnt som sammanför tre skalära fältkanaler per vägpunkt (Δg mGal · |B| nT anomali i jordskorpan · höjd m) så att den gemensamma posteriorn blir skarpare (lägre CRLB (Cramér–Rao lower bound)) än något enskilt fält — begränsad < 500 m över avbrottet på 60 minuter och, i väntevärde, inte sämre än den bästa enskilda kanalen. Dessutom sekventiell (rekursiv) terrängreferensnavigering — SITAN som löpande filter (src/altpnt/sequential.rs, run_sequential_trn): samma mätmodell för altimeter mot DEM körs epok för epok genom SIR-motorn (sampling importance resampling) i particle_filter (prediktera med INS-ökningen + processbrus → omvikta med terrängmatchningen → omsampla vid degenerering), så att en tidsvarierande INS-drift följs längs spåret där batchmatcharen bara återskapar en enda konstant förskjutning — den rekursiva skattningen förblir begränsad och konvergerar på nytt (slutvärde ≈ 70 m) medan den ostödda lösningen divergerar obegränsat till ≈ 5 km, med fel per epok som följer terrängens särprägel och en övervakare av effektiv urvalsstorlek. Ärlig omfattning: kartan är känd och fast — rekursiv lokalisering mot en lagrad DEM (lokaliseringsdelen av terräng-SLAM (simultaneous localisation and mapping)); gemensam kartskattning är den separata RBPF som beskrivs nedan. Alla fyra är nu kopplade till scenariomotorn kind= (gravity-map, terrain-nav, combined-altpnt, terrain-slam) med ett SVG-diagram över driften (scenarios/terrain-nav.toml, scenarios/combined-altpnt.toml, scenarios/terrain-slam.toml). 0,36 (WP-10): navigatorn gravity-map tar ett valfritt verkligt referensfält ([reference]: medföljande EGM2008 till grad 70, eller en ICGEM-fil .gfc), vars anomalisyntes stämmer med ICGEM Calculation Service till omkring 1e-8 mGal (VALIDATED, xval/icgem-egm2008/); på det fältet av grad 70 slutar riktmärket på 60 minuter på 3106 m, så tröskeln < 500 m är NOT MET (förhandsregistrerad och förutsagd: grad 70 är för jämn). En valfri Monte Carlo-körning av kartfel ([map_error_mc], scenarios/gravity-map-error-mc.toml) visar att den syntetiska positionsbestämningen på 144 m förutsätter en exakt karta (1 av 20 realiseringar inom 500 m vid ett korrelerat fel på 2 mGal; exploratory). combined-altpnt tar ett valfritt magnetiskt jordskorpsrutnät från EMAG2v3 ([magnetic_grid]; EMAG2 hämtas, ingår inte i förvaret, och inget navigeringsresultat hävdas för det). terrain-nav förblir avsiktligt enbart DEM: det är den enkanaliga TERCOM/SITAN-matcharen, och magnetisk matchning finns i combined-altpnt, som sammanför terräng med magnet- och gravitationskanalerna; en magnetkanal i terrain-nav skulle dubblera den, så revisionspunkten "EMAG2 into terrain-nav" täcks av kopplingen i combined-altpnt (RM-16). Kontrollerna mot verklig SRTM körs i CI på två incheckade beskärningar i full upplösning (nod för nod lika med GDAL 3.8.4, xval/srtm-ungate/). Gemensam kartskattning finns (run_sequential_trn_on_map, en RBPF i FastSLAM-stil): vid ett enda pass vinner den 1,5 % över SITAN med känd karta på en felaktig karta och missar sin förhandsregistrerade tröskel på 10 % (xval/terrain-slam-rbpf/). Saknas fortfarande: en gravitationsmodell av hög grad i en navigeringskörning (kräver en ny förhandsregistrering), ett navigeringsresultat med magnetiskt verkligt rutnät och ett SLAM-fall med återbesök (loop closure). P3 |
| Återinträde / EDL (entry, descent and landing), uppskjutningsanalys, EO/nyttolast (EO: Earth observation) | partial | Geometri av första ordningen, MODELLED, via tre körbara typer: reentry (src/reentry.rs, ballistisk korridor enligt Allen-Eggers — maximal retardation, hastigheter vid maximal g-kraft och maximal uppvärmning, höjd vid maximal g-kraft), launch-window (src/launch.rs, uppskjutningsazimut för två kroppar sin Az = cos i/cos lat, Δv för planbyte, bonus från platsens rotation, dagliga möjligheter) och eo-coverage (src/eo_payload.rs, SMAD-geometri (Space Mission Analysis and Design) för EO med rymdtriangel: svepbredd / GSD (ground sample distance) / åtkomst / återbesök). Ingen 6-DoF-simulering av EDL/aerotermik, ingen banoptimerare, ingen sensorradiometri/MTF (MTF: modulation transfer function). P3 |
| PNT på månen och i cislunart rum (LunaNet) | partial | src/lunar.rs: en ARAIM-motor för månen som återanvänder MHSS-kärnan för jorden med LunaNet LNIS-parametrar (LunaNet Interoperability Specification) (σ_URE ≈ 30 m, P_sat ≈ 1e-4), reduktionen av cislunart system MCI↔MCMF (MCI: Moon-centred inertial; MCMF: Moon-centred, Moon-fixed) (mci_to_mcmf / mcmf_to_mci, en förenklad medelrotationsmodell med den sideriska hastigheten) och selenografisk lat/lon/höjd (mcmf_to_selenographic), samt ett pass för skyddsnivå vid sydpolen (south_pole_hpl_pass) som kvantifierar integritetsgapet — med 30 m avståndsmätning är HPL ändlig men överstiger en larmgräns på 50 m för yttre operationer. src/cr3bp.rs lägger till CR3BP för jord–måne (circular restricted three-body problem) (dynamik i roterande system + RK4-propagator + Jacobi-konstant + de fem Lagrange-punkterna, validerad mot de publicerade värdena för L1/L2/L3 och de exakta L4/L5) — den trekroppskärna som en verklig NRHO (near-rectilinear halo orbit) behöver — och en tillståndsövergångsmatris + differentialkorrigerare med enkel skjutning (cr3bp_jacobian, propagate_state_stm, differential_correct_halo) som ger genuint periodiska halo-/NRHO-banor kring L2: STM är validerad mot finita differenser, korrigerade halobanor sluter sig själva till maskinprecision (Jacobi-bevarande), och när det publicerade apolun-tillståndet används som frö återges södra 9:2 NRHO kring L2 (Gateway-banan) med period ≈ 6,57 d och perilun ≈ 3 250 km — i linje med de publicerade ≈ 6,56 d / ≈ 3 370 km | De differentialkorrigerade begynnelsevillkoren (IC) för NRHO är nu inkopplade, men den denormaliserade selenocentriska transformen (MCI/MCMF) av den korrigerade banan och familjefortsättning är fortfarande kommande arbete; huvudaxelorienteringen för månen enligt DE440 med verklig fysisk libration finns (src/lunar_orientation.rs, från PCK moon_pa_de440, kontrollerad mot SPICE pxform i tests/lunar_pa_orientation_spice_oracle.rs), men den äldre sökvägen lunar::mci_to_mcmf använder fortfarande medelrotationen utan libration eller precesserande pol; NRHO är en CR3BP-lösning (cirkulär, utan Solen), inte validerad mot en verklig LANS-/Gateway-efemerid (LANS: Lunar Augmented Navigation Service); en körbar scenariotyp lunar-integrity (scenarios/lunanet-araim.toml) gör passet vid sydpolen tillgängligt från CLI | selenocentrisk transform + familjefortsättning + gränssnitt mot SPICE/LunaNet: P3 |
| PNT i djupa rymden / interplanetärt (Mars, radiometriskt) | partial | Levererad v0.17.0. En radiometrisk navigeringsmotor: iterativ ljustid + Shapiro-fördröjning, dubbelriktad/enkelriktad/trevägs Doppler och avstånd (Moyer, två ben), koherent transponderomvändning, regenerativ/PN-avståndsmätning (PN: pseudo-noise) (CCSDS 414), Δ-DOR (CCSDS 506), media för solplasma/tropo/jono (src/radiometric.rs); CCSDS-TDM (503), tolkning och skrivning (src/ccsds_tdm.rs); ett reducerat dynamiskt SRIF (square-root information filter) med empiriska accelerationer i RTN (radiell, transversell, normal) + en onboard-klocka med 3 tillstånd + Marsmotstånd (src/deepspace_od.rs, clock_state.rs, mars_atmos.rs) som ger banbestämning kring Mars-LMO (LMO: low Mars orbit) ≈ 0,2 m i en syntetisk sluten slinga; fusion av enkelriktat och dubbelriktat; en dynamikkärna för flera kroppar (src/body.rs, Mars GMM-3 (GMM: Goddard Mars Model), IAU:s Marssystem src/mars_frame.rs, en EphemerisProvider-söm src/ephem_provider.rs, tvådelat JD + TT↔TDB (TDB: Barycentric Dynamical Time)); och reläscenariot mars-pnt för PNT (MARCONI, areostationär konstellation, src/mars_pnt.rs) + en heltäckande prestandasimulator för GSE (src/gse_sim.rs). Validerad genom simulering (kovarians/sluten slinga, kvalitetsmått); solcentrisk dynamik korskontrollerad mot JPL (Jet Propulsion Laboratory) DE440 (137 m @ 1-dagsbåge, xval/anise-mars-od). Saknas: validering mot verkliga spårningsdata från DSN/ESTRACK (ESTRACK: European Space Tracking network); Marsgravitation i sitt eget system (GMM-3-fältet av grad/ordning 120 läses in från PDS SHADR-tabellen, from_shadr, VALIDATED mot pyshtools, och kopplas in via Body::with_gravity_field, men utvärderas i IAU-systemet i stället för sitt eget Konopliv-2006-system); efemerider av DE-klass i kärnan (kernelgrindade i xval). P3 |
| Solsystemet och PNT kring valfri kropp | partial | Typen solar-system: positioner, hastigheter och fysikaliska konstanter för Solen, planeterna, Pluto, Månen och sju stora månar vid en epok, med ljustid mellan kropparna; planeternas positioner (JPL Standish-element) och ljustiden är VALIDATED mot JPL Horizons (tests/solar_system_horizons_reference.rs), medan månarna, Pluto och tabellen för de yttre planeterna förblir MODELLED. Typen body-pnt: en farkost i omloppsbana eller en landare kring valfri katalogiserad kropp (Mars, Månen, Europa, Ganymedes, Titan och övriga) som navigerar på enkelriktade pseudoavstånd från en lokal Walker-konstellation plus ett valfritt dubbelriktat avstånd från jorden — MODELLED. Ingen planetefemeridkernel i kärnan (analytiska element), reläbanor för body-pnt använder bara J2 (fullständiga fält för Mars GMM-3 grad/ordning 120 och månens GRAIL GL0660B grad/ordning 660 läses in från PDS SHADR-tabeller och kopplas till en Body för propagatorn, src/gravity_pds.rs). P3 |
| Kampanjer / uppdragssammansättning | partial | Typen campaign (src/campaign.rs): befintliga typer kedjade på en gemensam tidslinje (till exempel jamming, sedan spoofing, sedan holdover med en INS i frirullning, sedan ett integritetslarm, sedan återhämtning), parametersvep och seedade Monte Carlo-ensembler över valfri typ, samt flera scenarier under gemensamma villkor med en sammanfattning; varje tal läses från en verklig körning av medlemstypen. Kompositionsidentiteter är testade (tests/campaign_composition_reference.rs: en kampanj med en fas återger den fristående körningen byte för byte); MODELLED. Ett avsnitt [optimize] (rutnät eller begränsad Nelder–Mead över en till tre nycklar, ett mått, minimera, maximera eller träffa ett mål) uppfyller sina förhandsregistrerade trösklar i sluten form och med brute force (tests/campaign_optimize_reference.rs); MODELLED, en lokal sökning utan anspråk på globalt optimum, och ingen gradient- eller bayesiansk metod. P3 |
| Rapporter, animering och utdata | partial | Varje körning skriver result.json, ett diagram och en rapport (report.html, report.json) vars etiketter läses från verifieringsmatrisen och vars registrerade kommando återger resultatet byte för byte (tests/advanced_report_cli.rs); --animate (svg, html eller bildrutor) återger en tidsserie som animering (src/animation.rs, ANIMATION.md); --export skriver utbytesformaten på raden om interoperabilitet. Det här är återgivningar av körningen, inte evidens om fysiken. |
Ekosystem och beredskap (följs upp ärligt, inte en kodförmåga)#
| Område | Status | Anmärkning |
|---|---|---|
| Språkbindningar och paketering | partial | Rust + Python (abi3) + WASM i tre register. Typade gränssnitt (0,36, CAP-34): Python RunOutput med NumPy-åtkomstfunktioner (array, columns, series) och stubbtypade ScenarioKind / ErrorKind / KindMeta; JavaScript run_typed (ett typat RunOutput-objekt) och scenario_kinds, med samma ordförråd i TypeScript-deklarationerna. Resultatdokument förblir JSON per typ, typade endast genom sitt gemensamma kuvert (units, versioner) |
| Utbildning / introduktion (UX, användarupplevelse) | partial | Webbläsarbaserad lekplats med guidat läge levererat: scenarioanpassade guidade reglage (web/studio/lib/guided.mjs, upp till sex rattar per scenario) och en interaktiv guidad rundtur (web/studio/lib/tour.mjs, kan spelas upp igen från lekplatsen). Varje körning får också en mening på vanligt språk och sina nyckeltal, lästa från resultatdokumentet (web/studio/lib/meaning.mjs, med mallar per typ i meaning-kinds.mjs; en typ utan mall får sitt första huvudtal angivet enkelt). Saknas: guidade förklaringar per tal utöver den meningen (den lättförståeliga GLOSSARY.md täcker dem) |
| Community / styrning | partial | Ramverk för styrning finns — GOVERNANCE.md (modell med välvillig underhållare + teknisk tröskel + gräns mellan öppet och slutet), CODE_OF_CONDUCT.md, CONTRIBUTING.md, SECURITY.md, mallar för ärenden/PR (PR: pull request), FUNDING.yml, dependabot. En ensam grundare; en aktiv extern community (bidragsgivare, citeringar) beror på människor och tid och är fortfarande under uppbyggnad (uppsökande arbete väntar på granskning) |
| Beredskap för finansiering och upphandling | ingen | TRL ~3; inga citeringar eller kontrakt från rymdorganisationer ännu (se strategianteckningarna) |
Uppdaterad 2026-10-29 för motor 0.40.0 (92 scenariotyper, från kshana kinds --json; nya i 0.40.0: mission-thread, lunar-orbit-rendezvous, lunar-descent, lunar-surface och lunar-ascent). 2026-10-22: motor 0.39.0, 87 typer, ingen ny typ. 2026-10-19: motor 0.38.0, 87 typer (nya i 0.38.0: holdover-test, gnss-ssv och lunar-infrastructure). 2026-10-18: 84 typer (ny i 0,37: optical-atmosphere). 2026-10-16: 83 typer (nya i 0,36: acm-link, aocs, ascent-losses, contact-schedule, entry-heating, eo-radiometry, lunar-station-coverage och time-transfer-budget). 2026-10-10: motor 0.35.0, 75 typer, ingen ny typ. 2026-10-09 och 2026-10-08: tidigare revisioner. 2026-10-04: raden Nav-signal noterar IQ-lagret 0.31.0. 2026-09-29: rader för LEO-PNT, spektrum, PNT för solsystemet och valfri himlakropp, kampanj och utdata tillagda. Tidigare: i linje med den stora granskningen 2026-06-02 och dess kapabilitetsmatris med 27 rader; raden för PNT i djuprymd och på Mars tillagd i v0.17.0. Tillägg för kvant-PNT (GNSS-nekad klock-holdover src/holdover.rs, sammansatt budget för kvanttröghets-dödräkning QuantumNavBudget, avvägning vid utformning av avståndskoder CodeFamily, maskinkontrollerad verifieringsmatris src/verification.rs) infogade i raderna Tidssynkronisering, Kvant-PNT-sensor, Nav-signal och V&V, var och en märkt validerad eller modellerad efter sin faktiska oberoende referens.
Tillägg till demonstratorn FutureNAV (modellerade, internt korskontrollerade — inte externt validerade): (1) Testbädd för utvärdering av maskininlärningsbaserad detektering av RF-störningar src/impairment_eval.rs — en märkt syntetisk (parameterförankrad, inte IQ) korpus av störningar + en detektoragnostisk ROC/AUC/förväxlings-/Pfa-Pmd-testmiljö (ROC: receiver operating characteristic; AUC: area under the curve) med läckageskydd och stratifierad delning; de medföljande detektorerna är genomskinliga baslinjer från publicerade metoder, inte SOTA (state of the art), och en hög AUC här visar rörledningen, inte prestanda i fält. (2) Avvägningsmotor för kvant-PNT mot klassisk PNT src/quantum_trade.rs — inläsning av uppmätt ADEV (NNLS-anpassning (non-negative least squares) av σ_y²(τ)=q_wf/τ + q_rw·τ/3 + q_drift·τ³/20, kontrollerad i tur och retur mot q_from_allan), en tabell över nyttan av timing/tröghets-holdover som bär förbehållet om golvantagandet på själva artefakten, och en envelopp för GNSS-fri resiliens mot tid; den kvantifierar en partners kvantnytta och validerar aldrig enheten. Båda är granskade i motstridigt syfte (ett fel i driftbasen τ²→τ³ och ett felaktigt påstående om resiliens "begränsad på obestämd tid" upptäcktes och rättades). 911 biblioteksteter vid tidpunkten för det tillägget, fmt+clippy rena.
Tillägg för utbyte / standardformat (src/interchange.rs): Kshana Interchange Format (KIF) — ett neutralt, versionerat, självbeskrivande Envelope som omsluter valfri artefakt (scenario, resultat, avvägningsstudie) med en igenkännbar format-tagg, den enda sanningskällan SCHEMA_VERSION (schemaversionen, som tidigare kopierades som literal på 15 ställen, ägs nu av en enda konstant som hela craten refererar till), den producerande engine_version och ett uttryckligt, testat kompatibilitetskontrakt (compatibility(): samma huvudversion / lika eller äldre underversion går att läsa enligt disciplinen med additiva fält; en nyare underversion eller en annan huvudversion avvisas vid gränsen av Envelope::parse i stället för att felaktigt tolkas i tysthet). Kan gå i tur och retur (wrap→to_json→parse→payload_as::<T>()) för valfri Deserialize-last; avsiktligt utan tidsstämplar för att bevara Kshanas bit-för-bit-reproducerbarhet. Dokumenterad i SCHEMA.md så att formatet är citerbart, inte bara utskrivet — positioneringen "standard-in-waiting" för open core. 923 biblioteksteter vid tidpunkten för det tillägget, fmt+clippy rena.
Tillägg i FutureNAV dominance-build (modellerade, internt korskontrollerade — inte externt validerade): (1) Frugal kostnad per täckning / ROI-lager (return on investment) src/frugal.rs — ett nyttoramverk ovanpå motorn för konstellationsdimensionering (walker) som redovisar kostnad per procentenhet täckning och täckning per euro (ROI) mot en baslinje; kostnaden per satellit är ett av anroparen angivet, belagt intervall med lågt/nominellt/högt värde (inga påhittade punktpriser), så utdata är intervall, inte skenbara punkter; en modellerad ekonomisk inramning av ett modellerat täckningstal, inte en offert. (2) Kartläggning av integritetspåverkan vid missad detektering src/integrity_impact.rs — kartlägger en oupptäckt spoof- eller jam-inducerad positionsbias till dess effektiva fel → Stanford-region (tillgänglig / systemet otillgängligt / vilseledande / farligt vilseledande) mot kontextspecifika larmgränser (öppen himmel mot stad, HAL mot VAL), sammansatt med den externt förankrade RAIM-funktionen classify_stanford; bryggan från missad detektering till larmgräns är modellerad, inte en certifierad integritetsallokering. Båda är kartlagda i den maskinkontrollerade verifieringsmatrisen (src/verification.rs, invarianten Validated⇒ExternalDataset intakt; det aktuella radantalet står i det genererade huvudet i VERIFICATION-MATRIX.md). Korsvalidering / läckageskydd / parameterstratifierad delning för utvärderingsmiljön för AI levererades redan i src/impairment_eval.rs (stratified_split, Split::has_leakage). 951 biblioteksteter vid tidpunkten för det tillägget, fmt+clippy rena.
Tillägg i FutureNAV, studie av optimismgapet (modellerade, internt korskontrollerade mot slutna uttryck — inte externt validerade, inte ett påstående om överföring från simulering till fält): en kontrollerad syntetisk studie av optimismgapet i AUC mellan fördelningen i träning och utanför den för detektorer av RF-störningar. (1) Inlärda detektorer src/impairment_ml.rs — en fast särdragskarta + en standardiserare anpassad på träningsdata, en baslinje med logistisk regression (deterministisk gradientnedstigning över hela batchen) och en MLP (multilayer perceptron) med ett dolt lager (seedad backpropagation med SGD (stochastic gradient descent)) bakom samma trait ImpairmentDetector som baslinjerna från publicerade metoder använder. (2) Handhärledd statistik src/eval_stats.rs — percentil-bootstrap av konfidensintervall (CI), DeLong-varians/CI för AUC, Spearman ρ och ridge-regression, var och en kontrollerad mot ett slutet uttryck (binormal AUC Φ(d′/√2), en handräknad DeLong-varians, ett lärobokens ρ med rangbindningar, exakt återskapande med OLS (ordinary least squares)). (3) Studien src/impairment_study.rs — AUC per klass, trenden för skalningslagen per (detector,class) (gap mot 1−allvarlighetsgrad) och en ridge-prediktor för gapet som bara använder ID och skattar optimismgapet enbart ur diagnostik inom fördelningen, bedömd med leave-one-detector-out och leave-one-class-out mot en baslinje som förutsäger medelvärdet. Artefakt med ett kommando via cargo run --release --example optimism_study. Varje tal är en AUC över modellhärledda etiketter på en syntetisk, parameterförankrad korpus; gapet är ett syntetiskt→syntetiskt skifte i allvarlighetsgrad, aldrig ett resultat av detektering i fält. Kartlagd i den maskinkontrollerade verifieringsmatrisen (src/verification.rs, invarianten Validated⇒ExternalDataset intakt).