Kshana · क्षण · det præcise øjeblik
En open source-simulator til PNT-robusthed (positionering, navigation og tidssynkronisering).
Status for kontinuerlig integration på main
Linjedækning nær 95 % af src/, målt i docs/COVERAGE.md og med en grænse på 85 % i kontinuerlig integration
176 af 401 funktioner VALIDATED mod en uafhængig ekstern reference, fra verifikationsmatricen
Status for kvalitetsgrænsen i SonarQube Cloud
Udgave v0.40.0
Licens: AGPL-3.0-only
DOI 10.5281/zenodo.20528627, Zenodos conceptpost for hver udgave
En kommerciel licens fås fra Ashforde® OÜ, se Udgaver
kshana på crates.io, den aktuelle udgivne version
kshana på PyPI, den aktuelle udgivne version
kshana på npm, den aktuelle udgivne version
Åbn Kshana Studio · Installation · Funktioner · Evidens · Forskning · Dokumentation · Citér
Indhold
- Øv det minut, hvor GNSS går i sort
- Nyt i 0,40, Nyt i 0,39, Nyt i 0,38 og 0,38 i dybden: jammertest-scoring, modtagerens egne flag, maskininput, tidssynkronisering og holdover, standardpakker, LunaNet AFS, rundturen i laboratoriet, kshana-bench, observatoriet, eksportører, optik, navigation for rumbrugere og månens infrastruktur
- Kshana Studio og hver Studio-side
- Funktioner: tabellen over områder, hver scenarietype efter familie, hver kommando, hver flade
- Hvordan en kørsel virker, Missioner
- Evidens: registeret, funktionsområder
- Installation, Arkitektur (og diagrammerne), AI-assistent
- Udgaver, Forskning, Citér, Licens
- Reference: brug, scenarieformat, output, repositoriets opbygning, FAQ, fejlfinding, versionering, køreplan, bidrag, dokumentation
Øv det minut, hvor GNSS går i sort#
Kshana afspiller jamming, spoofing og urets holdover, når GNSS-signaler (Global Navigation Satellite System) svigter, og fortæller dig, hvor længe et system holder tid og position inden for sit budget, og hvilket ur eller hvilken sensor der giver mest margin. Det er én Rust-motor. Den kører i en terminal, en notebook, et IDE (integreret udviklingsmiljø), en AI-assistent (kunstig intelligens) eller i din browser.
Hver kørsel kan gengives bit for bit ud fra scenariet, seedet og motorversionen. Hver funktion bærer ét af tre mærker i et maskinkontrolleret register: VALIDATED (en uafhængig ekstern reference er enig), MODELLED (internt konsistent, og det siges åbent) eller PARTNER (en hardwarepartner ejer den).
Status: v0.40.0. Et valideret, gengiveligt simulationsgrundlag for PNT-robusthed. Tidssynkronisering og holdover kommer først, fordi det område er det bedst validerede. Kshana er et studie- og afvejningsinstrument: ikke radiofrekvenshardware (RF) til signalgenerering (den styrer ingen radio og udsender intet; dens output på signalniveau er IQ-sampelfiler i basisbånd til softwaremodtagere), ikke en hardware- eller certificeret GNSS-modtager (dens softwaremodtager er et analyseværktøj) og ikke et flyvningsprodukt. Ny på området? Start med den letforståelige introduktion og ordlisten.
Nyt i 0,40#
0,40 tilføjer et fejlbudget på missionsniveau, mærker hvert tal og hver tabel med dets evidensniveau, læser målte urlogs, kontrollerer indsendelser fra datapartnere, estimerer, hvor en interferenssender kan være, og taler sytten sprog ved siden af engelsk. Registeret er nu på 401 rækker: 176 VALIDATED, 221 MODELLED, 4 PARTNER. Ingen række blev opgraderet til VALIDATED, og hver miss nedenfor er fastholdt af en test.
- Missionstråd. Typen
mission-threadkæder faser sammen fra opsendelse til indflyvning (launch-ascent,leo-rendezvous,tli-and-cruise,entryog fire månetyper) med angivne overdragelsesregler, en margin mod angivne krav og det svageste led; et Artemis-eksempel i hele forløbet over 11 faser (jord- og månesegmenter), i alt 92 scenarietyper. Hvert tal er MODELLED. Den cislunare propagering mod den offentlige bane for Artemis I misser sin præregistrerede tærskel (45,3 km og 0,25 m/s mod 5 km og 0,05 m/s; årsagen er små manøvrer, modellen ikke indeholder), og månepropagatoren mod CAPSTONE-banen misser (136,8 km mod 25 km ved slutningen af ét omløb); sammenligningen med LRO er nået. Rækkerne forbliver MODELLED (Missionstråd, månesegment). I Studio læses tråden på/studio/mission-thread/. - Evidensetiketter. Hvert tal og hver tabel, en kørsel skriver, bærer det niveau og de registerrække-id'er, det hviler på, læst fra matricen.
- Målte ure. Otte urlogformater læses (
docs/CLOCK-LOG-FORMATS.md), og en tilpasset serie kan drive holdoveren. Mod præregistrerede tærskler misser tilpasningen F1(a) på fem af seks optagelser og F2 på én; begge forbliver MODELLED (Ændringslog). - Datapartnere.
kshana partner checkkontrollerer formatet på en indsendelse og scorer intet (docs/PARTNER-DATA.md). - Senderområde.
kshana interference-map locategiver et område og en ellipse, aldrig et bart punkt, ud fra ADS-B- eller AIS-rapporter. Sammenlignet én gang med senderpladserne i Jammertest 2025 er resultatet NOT ASSESSABLE for begge kilder (for få planlagte sessioner i de åbne data), så rækken forbliver MODELLED (Interferenskort). - Benchmark. Gen-kampagnen 0,40 når A3, D3 (begge EXPLORATORY), R3 og R4; A2, D1 og R1 forbliver NOT MET (Bench).
- Sprog. nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja og zh-Hans, som maskinoversættelser, ingen modersmålstalende har gennemgået; engelsk er referencen, og kørsler på andre sprog end engelsk tager omkring dobbelt så lang tid (
docs/i18n.md).
Nyt i 0,39#
0,39 tilføjer ingen funktion og ændrer intet resultat; motorens output er 0,38-outputtet. Den retter én ting på kommandolinjen, opdaterer afhængigheder i værktøjet til krydsvalidering og angiver benchmarkens afgørelser i sin helhed.
- Kommandolinje.
kshana kinds | head(enhver lukket standardoutput) går ikke længere i panik: programmet afslutter stille med status 141, som andre værktøjer gør ved en lukket pipe. Andre skrivefejl rapporterer sig stadig selv. - Dependencies.
memmap20.9.11 i de to ANISE-krydskontrollåse ogpillow13.0.0 ogcertifi2026.10.19 i de fastlåste versioner i miljøet for den uafhængige reference, alt underxval/: intet, der leveres, ændrede sig. - kshana-bench, alle afgørelser. Mod de præregistrerede tærskler er tre NOT MET, hver fastholdt af en test: A2 (
agc_k_sigmaAUC 0,766 mod mindst 0,80), D1 (største hul 0,0301) og opgave (b) R1 (ført videre, ikke kørt igen). Ingen tærskel blev lempet (Bench).
Nyt i 0,38#
0,38 gør den neutrale dommer målbar: den bedømmer modtagerlogs mod en offentliggjort testplan, læser flere modtagere og sensorer, tester tidssynkroniseringssystemer og leverer en benchmark og et interferensobservatorium. Den forbliver vejledende: intet her er certificeret, intet resultat er en typegodkendelse, og intet sender. Hver række angiver, hvad registeret har for den (hvordan et mærke tjenes); en status nævner kun det, der blev kontrolleret, og registerrækken og den linkede side siger, hvad der ikke blev.
| Nyt i 0,38 | Hvad den gør, og hvorfor | Registerstatus | Læst |
|---|---|---|---|
| Scoring af jammertest | kshana jammertest import læser NPRA's offentliggjorte testkatalog og transmissionsplan som planlagt sandhed; jammertest score bedømmer en modtagerlog pr. test (detektionsforsinkelse, oversete alarmer, falske alarmer, tid til genopretning), som en signeret bevispakke, hvis du giver en nøgle |
MODELLED: én registerrække. Tærsklerne blev præregistreret før nogen bedømt kørsel; på JammerTest 2024-dataene fejlede reglen om mindste datamængde i begge kørsler (4 og 7 bedømmelige vinduer mod 10 krævede), så ingen tærskel kan vurderes, og intet hævdes | Jammertest |
| Modtagerens egne flag | UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG og NovAtel RXSTATUS læst ind i en self_report pr. epoke og sammenlignet med Kshanas alarmer (begge, kun modtager, kun Kshana, ingen af dem); en Septentrio SBF-læser og skrivebeskyttet --serial-input |
MODELLED; enighed mellem en modtagers detektor og Kshanas er ikke validering | Modtagertillid |
| Flere modtagere og sensorer | RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0 (fra de BSD-licenserede pyrtcm-tabeller, ikke RTCM-teksten), GNSS-SDR-monitorstrømme, en IMU-log som en anden sensor, en ROS 2-pakke, en gnss_lib_py-bro og imu-fit til hybride sensorparametre |
MODELLED: seks registerrækker; kun selvskrevne fixtures, ingen optagelse fra en rigtig modtager, IMU, GNSS-SDR-kørsel eller ROS-graf blev læst | Maskininput |
| Tests af tidssynkronisering og holdover | typen holdover-test bedømmer en holdover-test (GNSS fjernet af operatøren, holdover, genopretning) ud fra en målt tidsfejlregistrering mod ITU-T-masker, "målt mod masken"; læsere af linuxptp- og chrony-logs; hardwaretrinnene og feltet lab-attestation |
MODELLED: to registerrækker; tidspunkterne er operatørens udsagn, ikke verificeret | Tidssynkronisering HIL, Hardwaresikkerhed |
| Standardpakker, LunaNet AFS, laboratorierundtur | bedømte pakker for DHS RPCF, IMO MSC.1/Circ.1575 og ICAO Doc 9849 Appendix F mod tærskler angivet før kørslen, "leverer belæg for"; en NIST IR 8323r1-krydsreference; en LunaNet AFS-kodegenerator og -kontrol; en signeret pakke, der forbinder en laboratoriekørsels scenarie, testbetingelser, modtagerlog og score | MODELLED for pakkerne og rundturen; AFS-kodekontrollen er VALIDATED mod sine trykte kontrolkolonner (se registerrækkerne) | Standarder, LunaNet AFS |
| kshana-bench og observatoriet | faste opgaver, opdelinger og mål for interferensdetektion, IQ-detektion, prædiktion af holdover og optimismegabet, med et forseglet tilbageholdt datasæt og en statisk rangliste; et gengiveligt dagligt interferensprodukt med 24 t forsinkelse, grove celler og ingen tilskrivning | ingen egen registerrække: den scorer indsendelser, og dens baselines er mærket MODELLED i resultatfilerne; mod de på forhånd registrerede tærskler er scoreren, C1 til C3 og D2 nået, og tre tærskler er NOT MET (fastholdt af tests): A2 (agc_k_sigma AUC 0,766 mod mindst 0,80 på testopdelingen), D1 (største afstand 0,0301) og opgave (b) R1 (overført, ikke kørt igen); se xval/bench/RESULTS-v2.md |
Bench, Observatorium |
| Eksportører | tillidstelemetri som Home Assistant MQTT-discovery- og tilstandsmeddelelser (kun udgivelse, ingen legitimationsoplysninger) ved siden af Prometheus, CEF, LEEF og OTLP | MODELLED: én registerrække | Tillidstelemetri |
| Optisk linkmargen over tid | typen optical-atmosphere kan skrive én seedet realisering af et steds vejr som en linkmargenserie |
MODELLED: én registerrække; ét træk fra modellen, ikke klimaet | Optisk atmosfære |
Højdepunkter i 0,37: changelog. Hele listen for 0,38 står i changelog.
0,38 i dybden#
Hver funktion fra tabellen ovenfor i få linjer: hvad den gør, én kommando til at køre den, ét billede tegnet ud fra en egentlig kørsel af motoren, og hvad registret har om den. Billederne skrives af tools/gen_figures_038.py ind i docs/figures/0.38/ (aldrig tegnet i hånden): python3 tools/gen_figures_038.py skriver dem igen fra en bygget motor, og --check fejler, hvis et er forældet, eller hvis dets billedtekst her afviger. Hvor et input er en log, er det en opdigtet log, som scriptet skriver, fordi de egentlige tredjepartslogge aldrig medleveres, og billedteksten siger det. Alt nedenfor er vejledende: ikke certificeret, ikke en typegodkendelse, og intet udsendes. En status angiver, hvad der blev kontrolleret, og intet andet; hvordan en etiket optjenes.
Scoring af jammertest#
kshana jammertest import omsætter den offentliggjorte NPRA-testkatalog og transmissionsplan til planlagt reference, og kshana jammertest score scorer en modtagerlog mod den: for hver planlagt test, om den blev detekteret, hvor sent, og hvor lang tid modtageren om at komme sig, plus falske alarmer uden for alle tidsvinduer. Kataloget hentes, aldrig medleveret.
xval/jammertest-plan/fetch.sh ../jammertest-plan
kshana jammertest score session.toml --catalog ../jammertest-plan/testcatalog2025.json \
--plan ../jammertest-plan/plan-tuesday-2025-09-16.json --location 1 --json
Registerstatus: MODELLED. Tærsklerne blev fastsat før nogen scoret kørsel; på JammerTest-data fra 2024 svigtede reglen om minimumsdata i begge kørsler, så ingen tærskel kan vurderes, og intet hævdes. Jammertest.
Modtagerens egne flag#
UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG og NovAtel RXSTATUS læses ind i en self_report pr. epoke og stilles ved siden af Kshanas alarmer: begge, kun modtageren, kun Kshana eller ingen af dem. En Septentrio SBF-læser og et skrivebeskyttet input via --serial føder den samme sammenligning. Ingen af siderne er en reference.
kshana receiver-trust session.toml # [log] format = "ubx", path = "receiver.ubx"
Registerstatus: MODELLED. Enighed mellem en modtagers detektor og Kshanas er ikke validering. Modtagertillid.
Flere modtagere og sensorer#
RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0, GNSS-SDR-monitorstrømme, en IMU-log som anden sensor, en pakke til ROS 2 og en bro til gnss_lib_py ender alle i den samme tidslinje for modtagertillid. imu-fit læser de sensorparametre, som hybrid- og fusionsscenarierne har brug for, ud fra en stationær IMU-log, så et scenarie kan køres med den sensor, du faktisk har.
kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
Registerstatus: MODELLED. Kun selvskrevne testdata; der blev ikke læst nogen optagelse fra en egentlig modtager, IMU, GNSS-SDR-kørsel eller ROS-graf. Maskininput.
Tests af tidssynkronisering og holdover#
Typen holdover-test scorer en holdover-test (GNSS fjernet af operatøren, holdover, genoprettelse) ud fra en målt tidsfejlsoptegnelse mod ITU-T-masker og siger det med de ord: målt mod masken. Læsere af linuxptp- og chrony-logge føder den; hardwaretrinnene og feltet lab-attestation siger, hvem der har angivet hvad.
kshana scenarios/holdover-test-example.toml
Registerstatus: MODELLED. Tidspunkterne, hvor GNSS blev fjernet og genoprettet, er operatørens angivelse og ikke verificeret. HIL-test af tidssynkronisering, Hardwaresikkerhed.
Standardpakker#
Scorede pakker til DHS Resilient PNT-testprofilerne, IMO MSC.1/Circ.1575 og ICAO Doc 9849 Appendix F, plus en krydsreference til NIST IR 8323r1 i compliance-report. Hver test kører et medfølgende scenarie og sammenligner et resultatfelt med en tærskel angivet før kørslen; en test, der kræver en modtagerlog, er opført som værende afhængig af et input og er ikke scoret. Formuleringen er "leverer belæg for".
kshana standards-pack list
kshana standards-pack run imo-circ-1575
Registerstatus: MODELLED. En nået tærskel siger, at et modelleret scenarie nåede en angivet tærskel, intet om et produkt; hvert svigt bevares og fastholdes af en test. Standarder.
LunaNet AFS#
LunaNet Augmented Forward Signal-kodegeneratoren (Gold-, Weil- og tertiærkoder, meddelelsesrammen og dens fejlkodning) og en kontrol for en optaget eller genereret symbolstrøm, fastholdt til én udgave af specifikationen.
kshana lunanet-afs-check spec
kshana lunanet-afs-check generate --frames 2 --out afs.sym
kshana lunanet-afs-check symbols afs.sym
Registerstatus: VALIDATED for kode- og synkroniseringskontrollerne, mod de værdier, specifikationen trykker (som den markerer TBC); én kontrol er NOT MET, bevaret og fastholdt (én trykt tertiærkodekolonne afviger: dokumentet trykker den samme værdi for to PRN'er). LDPC- og CRC-ordene i delrammerne 2 til 4 kontrolleres ikke. Registerrækkerne angiver præcis hvilke. LunaNet AFS.
Round trip med laboratorium#
kshana.test-conditions/1 er en offentliggjort beskrivelse af, hvad et laboratorium gjorde (hændelser, tidspunkter, effekter). kshana evidence round-trip forbinder scenariets hash, testforholdenes hash, modtagerlogens hash og scoren i én signeret pakke og afviser en pakke, hvis forhold og scoringsscenarie er uenige om hændelserne. Kshana frembringer eller afspiller aldrig et signal: hvordan et scenarie nåede frem til en modtager, er operatørens ansvar.
kshana evidence --help
Billedet viser en pakkes opbygning. Registerstatus: MODELLED. Testforhold, Testbench.
kshana-bench#
Faste opgaver, opdelinger og målinger til interferensdetektion, IQ-detektion, holdover-forudsigelse og optimismegabet, med et forseglet tilbageholdt datasæt og en statisk rangliste. Den scorer indsendelser; den er ikke en rangering af modtagere.
kshana bench baseline --task d --split test --out results/
Registerstatus: ingen egen registerrække; baselines er mærket MODELLED i resultatfilerne. Mod de på forhånd registrerede tærskler er scoreren, C1 til C3 og D2 nået, og tre tærskler er NOT MET, hver fastholdt af en test: A2 (agc_k_sigma AUC 0,766 mod mindst 0,80 på testopdelingen), D1 (største afstand 0,0301) og opgave (b) R1 (overført fra den tidligere kampagne, ikke kørt igen). Tallene står i xval/bench/RESULTS-v2.md. Bench.
Interferensobservatorium#
Ét produkt pr. UTC-dag og region fra et åbent arkiv med flypositioner, på et fast groft gitter: hver celle er forringet, ikke forringet eller ikke observeret (hvilket ikke er "fri"). Udgivet tidligst 24 h efter dagens slutning, med små celler undertrykt og uden angivelse af årsag.
kshana interference-map daily /path/to/extracted/2026-09-15 \
--dataset adsb-lol --day 2026-09-15 --bbox 53.5,9.0,66.0,31.0 --out products/
Billedet viser de indlagte eksempeldage, ikke et observatorieprodukt. Registerstatus: MODELLED: ingen ekstern uafhængig reference, ingen reference for den faktiske tilstand og ingen angivelse af årsag; en celle, der ikke er observeret, blev ikke vurderet, hvilket ikke er det samme som fri. Observatoriets metode.
Eksportører#
Tillidstelemetri som Prometheus-tekst, CEF, LEEF, OTLP og Home Assistant MQTT-discovery- og tilstandsmeddelelser. Kommandoen udgiver kun til en destination, du giver den, og rummer ingen legitimationsoplysninger.
kshana trust-telemetry --result session.result.json --print-metrics
kshana trust-telemetry --result session.result.json --print-syslog --format cef
Registerstatus: MODELLED. Tillidstelemetri.
Optisk linkmargen over tid#
Typen optical-atmosphere kan skrive én seedet realisering af et steds vejr som en linkmargenserie: skyepisoder, en søjle af flydende vand for hver og ét scintillationssample pr. trin. Studios side Optisk PNT åbner scenarierne for optical-atmosphere.
kshana scenarios/optical-atmosphere-network.toml
Registerstatus: MODELLED. Ét træk fra modellen, ikke klimaet. Optisk atmosfære.
Nye Studio-visninger#
kshana.dev/studio får en Bridge-afspilning (to kørsler side om side på ét missionsur, på /studio/replay/), en side for optisk PNT (/studio/optical/), en side for holdover-test (/studio/holdover/) og en observatorievisning (/studio/observatory/). De kører den samme motor i browseren, intet uploades, og de bærer den samme vejledende erklæring. Billederne ovenfor er tegnet af et script ud fra motorens eget output; de er ikke skærmbilleder af disse sider.
Rumbrugernavigation (gnss-ssv)#
Til et rumfartøj over, omkring eller langt forbi GNSS-banerne: hvor mange GNSS-signaler det kan bruge, hvor stærke de er, hvor god geometrien er, og hvad et filter om bord kan gøre med dem. Én type, fire tilstande, valgt af scenariets tabeller: et skal af brugere (andelen af tiden med ét og fire signaler, pr. konstellation), en bane (signaler, C/N0, præcisionsfortynding (DOP) og limb-stråle-mediet langs en bane), en navigationskørsel (et filter med ni tilstande på pseudoafstande, til Månen) og en formation (relativ navigation af deputies om en chief). Den offentlige kilde til tilgængelighedssammenligningen er hæftet Interoperable GNSS Space Service Volume (UN OOSA ST/SPACE/75, fra International Committee on GNSS), som selv er en simulering; det hentes, medleveres aldrig. Fuld side: docs/SSV.md.
kshana scenarios/gnss-ssv-shell.toml # shell: the upper space service volume, reduced size
kshana scenarios/gnss-ssv-heo.toml # trajectory: a high Earth orbit, limb medium
kshana scenarios/gnss-ssv-nav-lunar.toml # navigation: an onboard filter toward the Moon
kshana scenarios/gnss-ssv-formation-heo.toml # formation: relative navigation
Registerstatus: MODELLED, og sammenligningen med hæftet fejler for det meste. Tærsklerne blev fastsat før kørslen. Af otte er kun S0 (det omvendte linkbudget, 13 af 13 værdier) og S6 (månemissionen) nået. S1 til S5 og S7 er NOT MET: geometrien for øvre og nedre servicevolumen (43 af 52 og 48 af 52 celler), den øvre servicevolumen ved 15/20/25 dB-Hz, de seks GEO-missioner, HEO-missionen og det parametriske sidelobemønster mod målte GPS-panelmønstre. Næsten alle svigt i S1 til S5 involverer GLONASS, og hæftet trykker to forskellige referencevinkler for det; en diagnostisk variant, der bruger det andet par, bringer S1, S2 og S4 til alle celler, men den erstatter ikke den registrerede kørsel, og ingen række er VALIDATED. Formationskørslens absolutte filter er også overmodigt (middel af normaliseret fejl i anden langt over værdien på omkring 3, som et konsistent filter giver).
Rumbrugernavigation, hvad sammenligningen viser.
Månens infrastruktur (lunar-infrastructure)#
Månens bane og overflade som navigations- og geodætisk infrastruktur, i fem undersøgelser valgt af study: od-consistency (en banebestemmelse om bord ud fra Jord-GNSS i en halobane mod en uafhængig jordbaseret), carrier-phase (fastlæggelse af heltalsmultiplicitet mellem overfladestationer og en orbiter), frame-coestimation (månens datum ud fra afstandsmåling fra jordstationer med og uden orbiterlinks), space-tie (laser-, VLBI- og GNSS-forskydninger på ét rumfartøj mod fejlen i den lokale forbindelse) og geodesy-sensitivity (hvilken observabelfamilie der ser Love-tallene h2, k2 og l2). Modellen er en begrænset trelegemesmodel med angivne forenklinger og illustrative input. Fuld side: docs/LUNAR-INFRASTRUCTURE.md.
kshana scenarios/lunar-infrastructure-od-consistency.toml
kshana scenarios/lunar-infrastructure-carrier-phase.toml # quick; the scored run takes about eight minutes
kshana scenarios/lunar-infrastructure-frame-coestimation.toml
kshana scenarios/lunar-infrastructure-space-tie.toml
kshana scenarios/lunar-infrastructure-geodesy-sensitivity.toml
Registerstatus: MODELLED, og tre tærskler er NOT MET. Numerikken er kontrolleret mod uafhængige numpy- og scipy-programmer; intet sammenlignes med en måling af en størrelse på Månen, og intet er VALIDATED. Nået: de to banerløsninger er konsistente (middel q 5,81 mod 6 forventet), og orbiterlinks hæver den mindste datum-egenværdi omkring 111 gange, forudsat en kendt bane. Ikke nået: den påførte modelfejl på 3e-10 m/s2 bliver ikke detekteret (C3: løsningen om bord er kendt til omkring 350 m, så omkring ti meter skjuler sig i dens kovarians); fastlæggelse af heltal opnås ikke (1 til 3 % succes ved 25 dBi, og ved de registrerede 12 dBi kan problemet ikke opstilles); og sporhalvdelen af G3 for tilføjelse af en observabelfamilie (sporet steg i 12 af 28 tilføjelser, hver gang fordi familien hævede rangen). Hvert svigt er fastholdt af en test. Månens infrastruktur.
Kshana Studio#
Åbn kshana.dev/studio, og hele motoren kører i din browser, kompileret til WebAssembly. Intet at installere, og intet uploades. Studio har to visninger af den samme motor, og en kontakt i overskriften skifter mellem dem og beholder scenariet, visningen og alle indstillinger, du har ændret.
Den enkle visning er der, hvor Studio åbner. Den starter fra spørgsmål (hvor mange satellitter kan jeg se, kan jeg stole på min positionsbestemmelse, hvor længe kan et ur holde tiden, hvad gør en jammer ved min modtager) og fra et kort over alt, motoren kan, hvert område med sin andel af validerede metoder. Åbn et scenarie, og svaret kommer først: én almindelig sætning, skrevet til det, scenariet måler, derefter dets nøgletal og et diagram. Højst fem indstillinger vises, dem der ændrer svaret mest; resten venter under Avancerede indstillinger. Sådan beregnes det forklarer metoden, og Til forskere giver motorens egne tal, scenariefilen, koden til at køre det fra Python og citationen.

Den avancerede visning er det fulde dashboard: scenariebiblioteket, fem nummererede trin (Vælg, Indstil, Kør, Læs resultater, Del eller eksportér), nøgletallene med PASS- og FAIL-chips, hvor kørslen angiver en tærskel, og alle paneler: oversigt, diagrammer, kort, afspilning, motorens rapport og eksport. Ét søgefelt når scenarier, domæner og felterne i dem, og du kan fastgøre op til fire kørsler og sammenligne dem side om side.
Den enkle visnings åbningsskærm og den avancerede visning efter en kørsel


Studios kildekode og dens byggenoter findes i web/README.md.
Webstedet#
Resten af kshana.dev er bygget af dette repositorys egne filer og motorkørsler: missioner, funktioner, evidensregistret, den udgivne forskning og udgaverne.

Funktioner#
Én motor dækker hele fejlkæden, fra den første jammede satellit til den sidste nanosekund af ur-holdover. Motoren har 92 scenarietyper; kshana kinds viser dem, og docs/SCENARIOS.md dokumenterer hvert felt.
| Funktion | Hvad den besvarer |
|---|---|
| Spektrum | hvordan en jammer tager GNSS' L-bånd, bånd for bånd, sekund for sekund |
| Ure og tidssynkronisering | hvor længe hvert ur holder tiden, efter GNSS er tabt |
| Konstellationer omkring ethvert legeme | dækning, præcisionsfortynding og tilgængelighed rundt om Jorden, Månen eller Mars |
| Solsystemet | hvor hver planet er, og lystiden for ethvert link |
| Navigation i lav jordbane | en overflyvning, et link, en navigationsmeddelelse og en fusioneret positionsbestemmelse, trin for trin |
| Kampagner | en kædet mission, en sweep eller et Monte Carlo-ensemble i ét scenarie |
| Animation | en kørsels tidsserie som en animeret tegning, en afspiller eller billeder |
| Rapporter | hvert tal med sin enhed og sin etiket, i HTML (HyperText Markup Language) og JSON (JavaScript Object Notation) |
| Interoperabilitetseksporter | baner og geometri til andre værktøjer: SP3, CCSDS OMM og OEM, CZML, KML, GeoJSON, STK og SigMF |
| Maritim tillid | kan broen stole på denne positionsbestemmelse: en score fra 0-100 og begrundelser for et fartøjs NMEA, live eller fra en log (vejledende, ikke typegodkendt navigationsudstyr) |
| NMEA-træningsstrømme | syntetisk NMEA fra broen med scriptet jamming og spoofing og en instruktørlog, til besætningstræning (kun tekst; aldrig til et fartøjs levende navigationssystemer; vejledende, ikke typegodkendt navigationsudstyr) |
| Interferenskort | hvor fly og skibe har rapporteret forringede navigationsdata, og hvor meget af en rute det berører |
| Senderområde | hvor en kilde til forringede positionsrapporter under angivne antagelser kan være: områder ved angivet konfidens, et tyngdepunkt med dets ellipse, aldrig et punkt (MODELLED; kshana interference-map locate) |
| Bevispakker | en signeret teknisk registrering, der kan verificeres offline, af et fartøjs logvindue og af, hvad motoren beregnede ud fra det, til en hændelsesrapport (vejledende, ikke typegodkendt navigationsudstyr) |
| Tillidstelemetri | tillidsstrømmen som Prometheus-målinger, SIEM-hændelser og valgfri OpenTelemetry, med et eksempel på et Grafana-dashboard (deploy/grafana/kshana-gnss-trust.json) |
| Signal K og OpenCPN | tillidsscoren på en bådes Signal K-server og i OpenCPN, med en referencebuild til en lille computer ved siden af modtageren (vejledende, ikke typegodkendt navigationsudstyr) |
| Eksport til testbænk | kshana bench-export: et scenaries køretøjsbevægelse og hændelser til en GNSS-simulator i laboratoriet (intet signal skrives), og hvordan modtagerens log bagefter scores |
| Compliance-kortlægning og rapport | kshana compliance-report: hvilke rækker i offentlige resiliensrammer et sæt kørsler leverer belæg for, og det hul, der er tilbage |
| Notebooks | kørbare vejledninger: fartøjstillid og træningsstrømme, ruteeksponering for interferenskort, compliance-kortlægning og testbench, kvante mod klassisk GDOP |
| Verifikator for Galileo OSNMA | hvilke satellitters navigationsdata en modtager kan autentificere kryptografisk, og hvorfor en kontrol fejler; Kshana giver ingen rettigheder under EU's OSNMA ICD IPR'er (se NOTICE på siden) |
Eksportformaterne i fuld form: SP3 er Standard Product 3; CCSDS OMM og OEM er Orbit Mean-elements Message og Orbit Ephemeris Message fra Consultative Committee for Space Data Systems; CZML og KML er Cesium- og Keyhole Markup Language; STK er Systems Tool Kit; SigMF er Signal Metadata Format.
Hver funktion, tegnet ud fra en egentlig kørsel: L-bånds-vandfaldet, dækningskortet, solsystemet og en overflyvning i lav jordbane
Kør en hvilken som helst af dem med kshana example <scenario> > s.toml && kshana s.toml: scenarierne er l-band-waterfall-jamming, constellation-multi-gnss-coverage, solar-system-tour og leo-pass-iridium.
De maritime og interferensrelaterede funktioner, tegnet ud fra indlagte syntetiske input: en tillidsscore, et interferenskort med ruteeksponering, en træningsstrøm og en bevispakke
Alle fire er opdigtede data og vejledende: de viser softwarens format og adfærd, ikke hvordan nogen modtager eller noget system klarer sig mod interferens. Kør den første med kshana receiver-trust examples/maritime-trust/session.toml, den anden med kshana route-exposure på eksemplerne i examples/interference-map/, den tredje med kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea (kun til træning: før den aldrig ind i levende navigationsudstyr) og den fjerde som i docs/EVIDENCE-PACKS.md.
Den fulde funktionstabel, domæne for domæne
Den fulde detalje domæne for domæne følger; for et modenhedsregister pr. funktion se docs/CAPABILITY.md og docs/VALIDATION.md.
| Domæne | Funktion |
|---|---|
| Bane og geometri | SGP4/SDP4-propagering (valideret til 4,12 mm mod alle 666 AIAA 2006-6753-vektorer); egentlige two-line elements (et indlagt, datostemplet øjebliksbillede fra Celestrak (gps-ops)) eller syntetiske Walker-delta-konstellationer, hvis middelelementer realiserer formlen i:T/P/F til under 1 km over en propagering på 24 h; multikonstellationssynlighed, præcisionsfortynding — geometrisk, position, horisontal, vertikal og tid (GDOP/PDOP/HDOP/VDOP/TDOP), valideret til 1e-6 mod gnss_lib_py 1.0.4, Stanford NAV Lab (Navigation and Autonomous Vehicles Laboratory), og GNSS-tilgængelighed; et gradientfrit optimeringsværktøj til konstellationsudformning, dimensionering af minimumsantal satellitter efter streets-of-coverage, et værktøj til sammenligning af flere konstellationer og en Walker-udformningssweep, der tabulerer dækning / PDOP / gensynstid over et gitter af planer × satellitter og rapporterer de Pareto-optimale udformninger. |
| Numerisk propagator | En numerisk propagator af typen Cowell (src/propagator.rs), der supplerer den analytiske SGP4/SDP4-vej, med en hierarkisk kraftmodel med syv forstyrrelser (src/forces.rs): tolegeme + det fulde J2–J6 zonale felt (de zonale harmoniske koefficienter for Jordens fladtrykthed J2 til J6; den nøjagtige analytiske gradient af dets forstyrrende potentiale), et valgfrit EGM2008 tesseralt kuglefunktions-geopotentiale til grad/orden 70 (Earth Gravitational Model 2008; src/gravity_sh.rs; egentlige koefficienter fra NGA — US (United States) National Geospatial-Intelligence Agency —, Holmes–Featherstone normaliseret Legendre-rekursion, krydskontrolleret mod de lukkede Legendre-funktioner og den analytiske ∇V-identitet), epokestyret tredjelegemegravitation fra Solen og Månen (en indbygget efemeride med lav præcision, ingen DE/SPK — Development Ephemeris / SPICE Spacecraft and Planet Kernel — kerne), strålingstryk fra Solen (kanonkuglemodel med en konisk umbra+penumbra-skygge), atmosfærisk modstand (Vallados stykvis eksponentielle tæthed, medroterende atmosfære), den post-newtonske relativistiske Schwarzschild-korrektion og leddet for Lense–Thirring frame-dragging (IERS — International Earth Rotation and Reference Systems Service — Conventions 2010 §10, lineært i Jordens impulsmoment, ~1–2 størrelsesordener under Schwarzschild) — drevet af et valg mellem to adaptive integratorer (RK4 — fjerdeordens Runge–Kutta — med trindobling eller det indlejrede par Dormand–Prince RK5(4)). Valideret mod Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — 278 epoker på tværs af LEO (lav jordbane) + GTO (geostationær transferbane), hvor de konservative kraftniveauer stemmer til en værste-tilfælde |Δr| 0,08 m over 24 h (tests/numerical_cowell_propagator_reference.rs); niveauet for atmosfærisk modstand karakteriseres separat (≈ 333 m / 24 h), og de absolutte input for efemeriderne for Solen og Månen og for tætheden forbliver ærligt modelleret. Yderligere intern evidens (ikke ekstern validering): den uforstyrrede bane er kontrolleret mod den nøjagtige universal-variable Kepler-løsning til under en meter over 24 h, energi/impulsmoment bevares til ~1e-9, og hver forstyrrelse svarer til en håndudledt lukket signatur. |
| Manøvrer og banedesign | Impulsive ΔV-knuder med 6×6 kovariansudbredelse (ECI — Earth-centred inertial — / LVLH — local vertical, local horizontal — udførelsesfejlsystemer), integration af endelig brænding kontrolleret mod den lukkede raketligning af Tsiolkovsky til < 0,01 %, en løser af typen Lambert baseret på Izzo-2015 for enkelt omløb, en nøjagtig propagator med universal-variable af typen Kepler og en sweep af typen porkchop (opsendelse × ankomst) af C3 (opsendelsesenergi) / ankomst-V∞, udgivet som et JSON-konturgitter — præstationssimuleringslaget over GMAT/Orekit, hvor hvert Lambert-output er kørt rundt mod tolegemereference og porkchop-minimummet er kontrolleret mod det analytiske Hohmann-gulv. |
| Tidssystemer og referencesystemer | IERS-skudsekund-skalaerne UTC / TAI / TT / UT1 (Coordinated Universal Time, International Atomic Time, Terrestrial Time og jordrotationstiden Universal Time 1), et API til Julian-datoer (application programming interface), den Earth Rotation Angle (ERA) fra IAU-2000 (International Astronomical Union), GMST-baseret (Greenwich Mean Sidereal Time) TEME ↔ ECEF (true equator, mean equinox ↔ Earth-centred, Earth-fixed) med geodætiske systemer fra WGS-84 (World Geodetic System 1984), præcession ifølge IAU 2006 (Fukushima–Williams), den fulde IAU 2000A/2000B-nutation, IERS polbevægelse og den ækvinoksfrie CIO-baserede IAU 2006/2000A GCRS↔ITRS-reduktion (CIO = Celestial Intermediate Origin) — alt valideret bit for bit mod SOFA/ERFA-vektorerne og uafhængigt krydskontrolleret mod ANISE (den rene Rust-genimplementering af NAIF/SPICE; NAIF = Navigation and Ancillary Information Facility hos NASA, den amerikanske National Aeronautics and Space Administration): Kshanas GCRS→ITRS mod ANISEs ITRF93 (International Terrestrial Reference Frame 1993) fra JPLs earth_latest_high_prec.bpc, med de samme IERS-jordorienteringsparametre givet til begge, stemmer til ≤ 0,86 m på jorden / ≤ 3,6 m ved GNSS-bane (maks. 0,028″) på tværs af otte epoker 2020–2023. |
| Inertial | Tre-akset strapdown-INS — kvaternionattitude, WGS-84 NED-mekanisering (north-east-down), coning/sculling-kompensation og en deterministisk IMU-fejlmodel (skalafaktor, fejlretning, g-følsomhed, kvantisering, drift); et førsteprincip-baseret accelerometer med koldatom-interferometer (Mach–Zehnder-fase, kvanteprojektionsstøj, kontrastaftagning, vibrationskobling), der udleder koefficienten for hastighedsrandomwalk; og et partikelfilter med sekventiel vigtighedsresampling til kortstøttet (terræn-/tyngdereferencet) navigation uden GPS. |
| Alt-PNT (uden GPS) | En målemodel for et koldatom-gravimeter, hvis hvidstøjsgulv (σ = ASD/√τ, ASD = amplitude spectral density) er udledt af fysikken i CAI-accelerometeret; et fuldt normaliseret kuglefunktions-tyngdeanomalifelt af lav grad (kontrolleret mod de lukkede Legendre-funktioner og en håndudledt anomali med ét led) plus syntetiske mascons; kernen til syntese af tyngdefunktionaler (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — "kortlæseren", som en tyngdestøttet navigator matcher mod — er valideret mod GRS80-normaltyngdestandarden (Geodetic Reference System 1980), idet den gengiver den lukkede Somigliana-normaltyngde og de offentliggjorte γ_e / γ_p til 3.5e-12 og frembringer et fysisk afgrænset forstyrrelseskort ud fra det egentlige ICGEM-felt (International Centre for Global Earth Models) EGM2008 (RMS — root mean square — ≈ 26 mGal, maks. ≈ 89 mGal ved d/o 70; tests/icgem_gravity_reference.rs); og et partikelfilter til tyngdekortmatchning, der genfinder et spor uden GPS ud fra den anomalisekvens, det flyver igennem. Det udvides til terrænreferencet navigation (TERCOM/SITAN — terrain contour matching / Sandia Inertial Terrain-Aided Navigation — mod en SRTM (Shuttle Radar Topography Mission) .hgt DEM (digital elevation model), src/altpnt/terrain.rs), et geomagnetisk IGRF-14-hovedfelt (14. generation af International Geomagnetic Reference Field) til grad/orden 13 (src/igrf.rs, kontrolleret mod den lukkede form for den skrå dipol og ∇V-finitte differenser), og en kombineret tyngde- + magnet- + terræn-navigator, der fusionerer alle tre skalare kanaler gennem ét partikelfilter (information er additiv — ingen kanal gør positionsbestemmelsen dårligere). Et 60-minutters benchmark uden GPS (et udfald på ~700 km / én time, hvor den inertielle løsning driver til ~70 km) genfindes til ~145 m (< 500 m) af en hierarkisk grov-til-fin matcher — målet for ESA NAVISP (Navigation Innovation and Support Programme) Quantum Wayfarer. |
| Fusion | Løst koblet 15-tilstands GNSS/INS-fejltilstands-EKF (extended Kalman filter) med lukket feedback (pakken gnss-ins); en tæt koblet pseudoafstandsopdatering, der bliver ved med at korrigere med færre end fire satellitter; et koblet filter for ur + position; en generel estimator af typen unscented (sigma-punkt) Kalman til stærkt ikke-lineære målinger; en tæt koblet GNSS/INS-UKF-navigator (pseudoafstand + Doppler), hvis baneoverbrygning med kraftmodel er selvkonsistenskontrolleret til 0,77 m RMS over en 30-minutters krummende LEO-passage med et GNSS-udfald på 120 sekunder (et tal for filterkonsistens, ikke en validering mod en ekstern reference — denne navigator forbliver MODELLED); og en fuld 17-tilstands tæt koblet GNSS/INS-UKF (position, hastighed, attitudefejl, accelerometer- og gyrobiaser, urbias og -drift), hvis kvante-CAI-dødregning overbryger et udfald på 120 sekunder på det udledte hastighedsrandomwalk for koldatom-accelerometeret. |
| Banebestemmelse | Genfinding af en banetilstand [r, v] ud fra afstandssporing fra jordstationer, sammensat af tolegeme- + J2-kraftmodellen og RK4-integratoren med en korrektor af typen Gauss–Newton batch (determine_orbit_batch, under en meter / mm·s⁻¹ ud fra støjfri afstande, ~2 m ved et støjgulv på 5 m) og en sekventiel variant med unscented-filter (determine_orbit_sequential). |
| Observerbarhed og estimationsteori | Et generelt, genanvendeligt lag for Fisher-information / Cramér–Rao (src/fim.rs): informationsmatricen M = HᵀWH, den nedre Cramér–Rao-grænse, observabilitetens rang og nulrum for datumdefekt (Moore–Penrose-pseudoinvers) og D/A/E/T-optimale skalarer til forsøgsudformning fra en symmetrisk Jacobi-egenværdiløser. Valideret — egenværdier mod numpy.linalg.eigh, CRLB-kovariansen mod σ²(XᵀX)⁻¹ via numpy.linalg.inv, og GNSS-DOP ud fra informationsmatricen, alle matchet til 1e-9 (tests/fim_observability_reference.rs), og desuden krydskontrolleret mod de lukkede grænser fra Kay (1993) med Monte Carlo-opnåelse af CRLB. Det ligger under DOP-motoren, CRLB for passiv geolokalisering og observabilitetssætningen for absolutte stationer på Månen (nedenfor). |
| Måne og cislunart rum | En propagator for det cirkulære begrænsede trelegemeproblem (CR3BP) Jord–Måne i det roterende system — bevaret Jacobi-konstant og alle fem Lagrange-punkter (src/cr3bp.rs) — nu med en 6×6 tilstandsovergangsmatrix (STM) og en differentialkorrektor med enkelt skydning (cr3bp_jacobian, propagate_state_stm, differential_correct_halo), der frembringer ægte periodiske baner af typen halo / NRHO (near-rectilinear halo orbit): STM'en er valideret mod finitte differenser, korrigerede baner lukker til maskinpræcision, og såning med den offentliggjorte apolun-tilstand gengiver L2 sydlig 9:2 NRHO (L2 = det andet Lagrange-punkt Jord–Måne; Gateway-banen) ved periode ≈ 6,57 d / perilun ≈ 3.250 km, i tråd med de offentliggjorte ≈ 6,56 d / ≈ 3.370 km (en CR3BP-løsning — cirkulær, uden Solen —, ikke valideret mod en egentlig LANS (Lunar Augmented Navigation Service)-/Gateway-efemeride; den selenocentriske MCI/MCMF-transformation (Moon-centred inertial / Moon-centred, Moon-fixed) af den korrigerede bane følger senere); plus LunaNet / LNIS (LunaNet Interoperability Specification) cislunar PNT-geometri (MCI↔MCMF-reduktion, selenografiske koordinater) med en ARAIM-passage ved Månens sydpol, der ærligt bringer integritetshullet frem: en σ_URE (user range error) på ~30 m driver beskyttelsesniveauet langt over en alarmgrænse på 50 m (src/lunar.rs, scenarios/lunanet-araim.toml); og en DOP-forøgelse med overfladebeacons (src/lunar_beacon.rs), der viser, hvordan nogle få opmålte afstandsmålende overfladebeacons leverer de rækker af sigtelinjer med lav elevation og bredt azimut, som et sæt med kun baner og alt overhead mangler — hvilket får den dårligt konditionerede GDOP ved sydpolen til at falde og, via et rod-sum-kvadrat-fejlbudget, den realiserede positionsnøjagtighed i meter (genbruger den med gnss_lib_py validerede DOP-kerne og den lukkede form for synlighed ved en luftløs horisont; analysen af præcisionsfortynding er skrevet op i arXiv:2607,06212). |
| Månens PNT-pakke | En navigationspakke for Månen og det cislunare rum lagt oven på CR3BP-kernen, hver en kørbar kind: Lunar Coordinate Time (lunar-time-offset, src/lunar_time.rs — den sekulære rate LTC/TCL − TT (LTC = Lunar Coordinate Time; TCL = dens franske form, Temps-Coordonnée Lunaire) ud fra forskellen i selvpotentiale + et kinetisk led, rapporteret med det offentliggjorte bånd på 56–59 µs/dag); en geodætisk observabel for lunar VLBI-forsinkelse (very-long-baseline interferometry) (lunar-vlbi, src/lunar_vlbi.rs — en nærfelts forsinkelse + rate for to afstandsforskelle over en Jordbaseline, krydskontrolleret mod Δ-DOR (delta differential one-way ranging) for plane bølger i samme kodebase i fjernfeltsgrænsen, partielle afledte kontrolleret med finitte differenser); en fælles batchestimator for OD + ur med flere teknikker (lunar-joint-od-clock, src/lunar_combination.rs — en Gauss–Newton-tilpasning, der fusionerer VLBI + lokale afstandsmålinger på Månen + afstandsmålinger mellem satellitter) med et resultat om Fisher-information-observabilitet: intern afstandsmåling alene efterlader en datumdefekt for et stift legeme med seks frihedsgrader, så en overfladestations absolutte position er uobserverbar, indtil en forbindelse til Jordsystemet tilføjes — en VLBI-forsinkelse over en Jordbaseline genopretter observabilitet for en spredt konstellation og skærper Cramér–Rao-grænsen for en rig, idet det absolutte datum lukker ved tre ikke-kollineære jordstationer (observabilitetsresultatet er skrevet op i arXiv:2607,02566); realisering af referencesystem (lunar-frame-realisation, src/lunar_frame_realise.rs — en datumtilpasning med 7 Helmert-parametre + orienteringsforbindelse ifølge IAU 2015 WGCCRE — WGCCRE = IAU Working Group on Cartographic Coordinates and Rotational Elements); en analyse af servicevolumen af typen Moonlight/LCNS (LCNS = Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs — DOP / dækning / tilgængelighed + en generaliseret ARAIM HPL/VPL-envelope for Månen (horisontalt/vertikalt beskyttelsesniveau), der genbruger den med gnss_lib_py validerede DOP-kerne og LunaNet-maskineriet med σ_URE≈30 m); differentiel PNT på Månen (lunar-differential-pnt, src/lunar_dpnt.rs — en analogi til differentiel GNSS / satellitbaseret forstærkningssystem (SBAS) på Månen: nøjagtig udligning af fællesmodus-ur + førsteordens rumlig dekorrelation mod baseline, der genbruger DO-229E SBAS-beskyttelsesniveauet — DO-229E er RTCA's (tidligere Radio Technical Commission for Aeronautics) minimumsstandard for ydeevne for SBAS-modtagere); og en eksport til interoperabilitet på linje med LunaNet/IOAG (IOAG = Interagency Operations Advisory Group; lunar-interop-export, src/lunar_interop.rs — CCSDS-OEM (Orbit Ephemeris Message) + rundtur for månetidsskala i månelegemesystemet ifølge IAU 2015, pakket ind i KIF-konvolutten). Evidensniveauerne pr. del står i verifikationsmatrixen: Lunar Coordinate Time, den fælles OD + ur-estimator, realiseringen af referencesystemet og geometrien for servicevolumen er VALIDATED (hver mod den uafhængige reference, som dens række nævner, og det samme gælder kernestien for VLBI-forsinkelsen); VLBI-observablen, resultatet om observabilitet for datumdefekt, differentiel PNT og eksporten til interoperabilitet er MODELLED. Parametrene er illustrative værdier fra offentlige kilder — ikke valideret mod egentlig VLBI-/Gateway-sporing, ikke tilknyttet eller støttet af nogen myndighed, ingen påstand om TRL (technology readiness level) / arv. |
| PNT i dybt rum og på Mars | En åben radiometrisk navigationsmotor: iterativ lystid + relativistisk Shapiro-forsinkelse, to-/en-/treveis Doppler & afstand (Moyer med to ben), koherente omsætningsforhold for transpondere, regenerativ/PN-afstandsmåling (pseudo-noise) (CCSDS 414, standarden for pseudo-støj-afstandsmåling) og Δ-DOR i himmelplanet (CCSDS 506, Delta-DOR-standarden), med medier for solplasma/troposfære/ionosfære; parsing og udsendelse af sporingsdatameddelelser i CCSDS-TDM (503); et reduceret-dynamisk Square-Root Information Filter (RTN — radial, transversal, normal — empiriske accelerationer + et ur om bord med 3 tilstande + atmosfærisk modstand på Mars), der foretager banebestemmelse i Mars-LMO til ≈ 0,2 m i en syntetisk lukket sløjfe; en fælles estimator til fusion af envejs + tovejs; en dynamikkerne for flere legemer (Body{μ, re, zonals, gravity, IAU-pole}, tyngde fra Mars GMM-3 (Goddard Mars Model 3), et IAU-legemefast Mars-system, en tilslutningsbar grænseflade EphemerisProvider, todelte Julian-datoer + TT↔TDB (Barycentric Dynamical Time)); og relæ-PNT-scenariet mars-pnt (en MARCONI-konstellation af areostationære relæer) med en ende-til-ende-GSE-præstationssimulator (GSE = ground-support equipment) (geometri → linkbudget → observabler → SRIF → kovarians). Simulationsvalideret (kovarians / kvalitetsmål for lukket sløjfe); Mars-dynamikken med Solen som centrum er krydskontrolleret mod JPL DE440 (137 m @ 1-dags bue, xval/anise-mars-od). Validering mod egentlige DSN/ESTRACK-sporingsdata står på køreplanen. |
| Solsystemet og PNT omkring et vilkårligt legeme | En efemeride for hele solsystemet uden kerner (src/ephem.rs, src/ephem_provider.rs): hver planet ud fra JPL's Standish' Kepler-elementer (Tabel 1, 1800–2050 e.Kr.; Tabel 2a/2b, 3000 f.Kr.–3000 e.Kr.) med hver planets offentliggjorte nominelle fejl, Jorden og Månen adskilt af månerækken og Phobos, Deimos, Io, Europa, Ganymedes, Callisto og Titan ud fra JPL's middelelementer og IAU's rotationsmodel; ethvert legeme i forhold til ethvert andet i ICRF (International Celestial Reference Frame). Body rummer nu GM (gravitationsparameter), radier, J2 (den anden zonale harmoniske), hvor den er offentliggjort, og IAU-pol og nulmeridian for atten legemer. Typen solar-system rapporterer positioner, hastigheder, konstanter, lystid og envejs-/tovejsafstand mellem to vilkårlige legemer (den eksisterende radiometriske lystidsløser med Shapiro-forsinkelse fra Solen) og et sporingsforløb pr. legeme — nok til at tegne et interaktivt solsystem; typen body-pnt placerer en orbiter eller en lander omkring ethvert legeme (scenarios/mars-orbit-pnt.toml, scenarios/europa-surface-pnt.toml) med en lokal Walker-konstellation, maskineriet for præcisionsfortynding og Gauss–Newton og en afstand til dybt rum fra Jorden. Valideret mod JPL Horizons (DE441, JPL Development Ephemeris 441): Merkur–Saturn og Jorden fra Tabel 1 inden for to gange den nominelle fejl (værst 1,87×), alle otte planeter fra Tabel 2a/2b (værst 1,71×) og lystiden Jorden–Mars/Jupiter. Modelleret: Uranus og Neptun fra Tabel 1 (2,0× og 5,2× den angivne fejl mod DE441), Pluto, månerne og navigationsresultaterne fra body-pnt. |
| Fusioneret MEO + LEO PNT | src/leo_fusion/: systemuafhængig LEO-positionering, -navigation og -tidssynkronisering over en vilkårlig konstellation (Walker-skaller, elementsæt, GNSS-forudindstillinger) og et vilkårligt signal (bærebølge, chiprate, C/N0-envelope, signal-i-rummet-afstandsfejl), med valgfrie forudindstillinger i én fil, der bærer deres kilder (Xona Pulsar X1/X5, Iridium STL, Starlink-opportunistiske signaler, CentiSpace, et repræsentativt C-bånds-system, ATOMIC-efemeridemodellen med nulur). leo-pvt: batch-Doppler-positionering ud fra afstandsrate (enkelt- og flersatellit, tilstande for urdrift og hastighed, geometri for enkelt passage langs/på tværs af sporet og spejlløsningen), fælles GNSS + LEO vægtede mindste kvadrater med intersystembiaser pr. system og sigmaer pr. signal givet af kalderen, DOP mod antallet af LEO-satellitter, dækning ved polerne og i Arktis og LEO-tidsoverførsel til UTC mod C/N0 og oscillatoren. leo-ppp: et float-EKF til PPP (precise point positioning; EKF = extended Kalman filter) kun med GNSS og med LEO, dets konvergenstid og en chi-i-anden-NEES-konsistenstest. ntn-positioning: 5G-positionering i ikke-terrestriske net ud fra Cramér–Rao-grænsen for båndbredden. Valideret: LEO-Doppler-envelopen mod de offentliggjorte Iridium- og Xona-tal. Modelleret: resten, med PPP-trenden sammenlignet med Li et al. (2019) — se docs/LEO-PNT-FUSION.md. |
| Integritet | Snapshot- og løsningsseparations-RAIM (i ARAIM-stil) — receiver autonomous integrity monitoring — med horisontale/vertikale beskyttelsesniveauer (HPL/VPL), fejldetektion og -udelukkelse og Stanford-integritetsdiagrammer; et beskyttelsesniveau med eksplicit integritetsrisikobudget og multiple-hypothesis solution separation (MHSS), herunder fejltilstanden på tværs af hele konstellationen for dual-/multikonstellation (EU (Den Europæiske Union) ARAIM / DO-316, RTCA's præstationsstandard for GPS-udstyr i fly med flybaseret forstærkning), afprøvet på et egentligt GPS + Galileo-snapshot (scenarios/araim-gps-galileo.toml). Beskyttelsesniveauet anvender den ensidige projektion af nominel bias b_k = Σ_i|s_i|·b_nom pr. fejltilstand og integritets-sigmaet σ_URA (user range accuracy; adskilt fra nøjagtighedssigmaet σ_URE, user range error) fra Integrity Support Message — se docs/ARAIM_REFERENCE.md. Detektionskernen (tærsklerne for χ²/ikke-central χ²/normal og K-multiplikatorerne) er eksternt valideret mod SciPy på tværs af 171 tilfælde (tests/raim_reference.rs); geometrien genbruger den med gnss_lib_py validerede DOP-kerne. Selve ARAIM MHSS-fordelingen af integritetsrisikobudgettet har ingen offentliggjort numerisk uafhængig reference og forbliver ærligt modelleret. |
| Augmentation (SBAS) | SBAS / WAAS-beskyttelsesniveauer (WAAS = Wide Area Augmentation System) i DO-229E-formen med vægtede mindste kvadrater (K-faktorer for præcisionsindflyvning og en route) og den ionosfærefri L1/L5-tofrekvenskombination (L1 og L5 er to civile GPS-signalbånd; IS-GPS-705, GPS-grænsefladespecifikationen for L5-signalet, γ₁₅ ≈ 1,793), der ligger under DO-316 — src/sbas.rs. Algoritmen for beskyttelsesniveauer er eksternt valideret mod RTKLIB's SBAS-PL-fork (RTKLIB = det åbne bibliotek til realtidskinematisk positionering; PL = protection level) (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, DO-229D — den foregående revision af DO-229 — App. J) kørt på egentlige EGNOS-data (European Geostationary Navigation Overlay Service), og den gengiver dens HPL til < 2e-3 m (tests/sbas_reference.rs); gLAB (GNSS Laboratory-værktøjspakken) v6.0.0 bekræftede den identiske konvention. |
| Ur og tidssynkronisering | Holdover med Kalman-filter med to tilstande (kovarians i Joseph-form, NIS/NEES — normaliseret innovation i anden / normaliseret estimeringsfejl i anden — konsistenssundhed); stabilitet i Allan-familien (ADEV / MDEV / TDEV / HDEV / MTIE — Allan-, modificeret Allan-, tids- og Hadamard-afvigelse og maksimal tidsintervalfejl) med støjtypespecifikke konfidensintervaller og en fuld IEEE-1139 potenslovstilpasning med fem koefficienter (IEEE Std 1139, definitionerne af frekvens- og tidsmetrologi fra Institute of Electrical and Electronics Engineers) — estimatorerne er valideret på rigtig hardware mod Stable32: en egentlig 5071A-cæsiumprimærstandard mod en brintmaser (556.990 fasesamples, 16 midlingsfaktorer, OADEV/OHDEV — overlappende Allan-/Hadamard-afvigelse — til 1e-3; tests/cs5071a_reference.rs) og den kanoniske Stable32 PHASE.DAT-regressionsserie (139 midlingsfaktorer, OADEV/MDEV/TDEV til 1e-3; tests/phasedat_reference.rs); estimatorerne ADEV/MDEV/TDEV og telekom-målet for wander MTIE er desuden krydskontrolleret mod det uafhængige bibliotek allantools 2024,06 til < 1e-9 på NIST SP 1065-serien (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); geometriske korrektioner (Sagnac, GNSS common-view); og de operationelle overførselsmetoder — TWSTFT (two-way satellite time and frequency transfer) med den lukkede Sagnac-form fra BIPM (Det Internationale Bureau for Mål og Vægt), GNSS common-view, ionosfærefri tidsoverførsel med PPP (precise point positioning), et optisk frirumslink med turbulensscintillation og en inverse-variance-urensemble-(papir-)tidsskala under det bedste bidragende ur. En beregner for holdover af ur uden GNSS (src/holdover.rs) viser den lukkede van Loan-vækst i fejl under overbrygning som en holdover-til-tærskel-inversion — hvor længe et ur kører frit, før dets tidsfejl overstiger budgettet — på tværs af repræsentative klasser af klassiske ure og kvanteure; modelleret (krydskontrolleret mod kovariansrekursionen clock_state med flere trin) og ærlig om, at holdover til en stram tærskel for et meget stabilt ur fastsættes af det antagne støjgulv ved lang tau, ikke af den citerede ADEV. Et betinget Timing Protection Level (src/tpl.rs) udvider holdover til spoofing: en grænse for den ikke-detekterede tidsfejl, givet en uafhængig krydskontrol, der sammensætter et k-sigma-monitorgulv, van Loan-overbrygningsvariansen over detektionsforsinkelsen og en CUSUM-tid-til-alarm (cumulative-sum). Kalibreret på en egentlig optaget spoof (JammerTest 2024) og reproducerbar via cargo run --example tpl_jammertest; MODELLED sammensætning (intet budget for integritetsrisiko pr. time), betinget af detektion — der findes ingen endelig ubetinget grænse. |
| GNSS-måledomæne | Fremadrettet syntese af pseudoafstand / Doppler med ionosfære fra Klobuchar (broadcast) og IONEX / TEC-gitter (IONosphere map EXchange format / total electron content; målt) — herunder en IONEX-filparser, tidsinterpolation mellem kort og tyndskal-afbildningen af skråobliquitet — troposfæren fra Saastamoinen + Niell og snapshot-RAIM (HPL/VPL). |
| Robusthed | Jamming i linkbudgettet (J/S → effektiv C/N₀ → tab af lås — jammer-til-signal-forhold, bærebølge-til-støj-tæthedsforhold — med anti-jam-spektralseparationsfaktoren Q nu udledt af de faktiske effektspektre for signal og jammer via src/navsignal.rs — Q = 1/(R_c·κ), krydskontrolleret i CI mod den tidligere repræsentative konstant); en stokastisk detektor for tidsspoofing (Neyman–Pearson / χ²₁-energitest med lukket form og Monte Carlo P_fa/P_md og et sikkerhedskvalitetsmål (FoM) på 1 − P_md); og en flerlags spoofingdetektor, der fusionerer en RAIM-konsistens-paritetstest (med den blinde vinkel for fællesmodus modelleret ærligt), en RF-monitor for AGC-effekt (automatic gain control) og en monitor for signalkvalitet (SQM — signal-quality monitoring, early-minus-late); og et fejlbudget for kvante-inertiel dødregning (QuantumNavBudget, src/inertial/quantum_imu.rs), der sammensætter hvidstøjshastighedsrandomwalk for koldatom-interferometeret med residual bias (krydskontrolleret mod den uafhængige integrator AccelModel) og skalafaktorfejl til et tal for positionsdrift over holdover — den inertielle tvilling til urets holdover. En resiliensscoremotor på linje med et rammeværk (src/resilience/) kortlægger en arkitekturs simulerede adfærd til delscorer pr. dimension på tværs af Kshanas egne syv resilienskategorier (ikke DHS-termer), på linje med US Department of Homeland Security Resilient PNT Conformance Framework, og undersøger derefter beslutningsstabiliteten af en enkelt sammensat score eller et modenhedsniveau under en Dirichlet-vægtningssimplex og et ensemble med fem trusler — Kendall-τ-rangustabilitet, hyppighed af skift af vinderen i top-1 og diversitetskollaps i fællesmodus (Hill-N2), med en integritets-hashet assurance-rapport (35 håndudledte tests mod uafhængig reference). Reproducerbar via cargo run --example resilience_report; MODELLED syntetiske arkitekturer, en selvvurdering på linje med RPCF v2.0, ikke en certificering. Se docs/RESILIENCE-CROSSWALK.md. |
| Passiv RF-geolokalisering | TDOA/FDOA-geolokalisering af sendere (time-/frequency-difference of arrival; src/geolocation.rs) — find en jammer eller spoofer (eller en opportunistisk kilde til reverse-PNT) ud fra hyperboloider for time-difference-of-arrival på tværs af et netværk af modtagere, løst med Gauss–Newton mindste kvadrater; ved at tilføje frequency-difference-of-arrival med bevægelige modtagere genfindes senderens position og hastighed i fællesskab, med grænsen fra Cramér–Rao for positionskovariansen udledt af netværkets geometri. MODELLED (interne konsistensreferencer: fremad→invers-rundture, identiteten J·CRLB = I, monotoni af GDOP og estimatoren, der når sin egen CRLB under Monte Carlo) — en punktkildemodel med sigtelinje, uden led for multipath / NLOS (non-line-of-sight), modtagerurbias eller refraktion. |
| Navigationssignal og kodesporing | Signalniveauet mellem linkbudgettet og måledomænet (src/navsignal.rs): effektspektraltætheder (PSD'er) med enhedsareal for BPSK-R(n) (binær faseskift med rektangulære chips) og sinus-BOC(m,n) (binær offset-bærebølge); den spektrale separationskoefficient (SSC) κ = ∫ G_s·G_i df, som udleder anti-jam-størrelsen Q, som jamming-modellen bruger (Q = 1/(R_c·κ)), ud fra de faktiske signal-/jammerspektre i stedet for en repræsentativ konstant; RMS-båndbredden (Gabor) (BOC > BPSK — målet for afstandsinformation / Cramér–Rao); den termiske støjjitter for kohærent early–late DLL-kodesporing (DLL = delay-lock loop; Kaplan & Hegarty; ~under en meter for C/A — GPS' grov-/erhvervelseskode — ved 45 dB-Hz); og envelopen for multipath-fejl (kohærent EML, early-minus-late — undertrykkelse med smal korrelator). Valideret mod lukkede ankre (BPSK-selv-SSC = 2/(3·R_c), PSD'er med enhedsareal, C/A-jitter under en meter). Dette er analyse af signal-ydeevne, ikke design af antenne- / RF-nyttelasthardware (en nyttelastpartners rolle). |
| Interoperabilitet | Indlæsning af multi-GNSS broadcast-efemeride i RINEX-3 (GPS, Galileo, QZSS — Japans Quasi-Zenith Satellite System —, BeiDou MEO/IGSO — medium Earth orbit / inclined geosynchronous orbit — via IS-GPS-200, GPS-grænsefladespecifikationen; GLONASS, Ruslands Global Navigation Satellite System, via tilstandsvektor-RK4 i PZ-90 — det russiske datum Parametry Zemli 1990 —), der kan bruges som konstellationskilde (RINEX ind, PNT-geometri ud); en parser for observationer i RINEX-3 (pseudoafstand, bærebølgefase, Doppler, signalstyrke; observationslayoutet 4,00 forventes at kunne parses, men er utestet, og navigationsfiler i RINEX 4 afvises ved navn i stedet for at blive afkodet forkert), der nu føder en løser for single-point positioning (SPP) (pvt) — egentlige kodeobservationer ind, en egentlig modtagerposition ud, valideret på IGS-data; en læser/skriver af præcise efemerider i SP3-c/d med 9.-ordens Lagrange-interpolation; og eksport af CCSDS OEM 2,0 + OMM (Orbit Mean-elements Message) til flyvedynamikværktøjer (GMAT, Orekit, STK — Systems Tool Kit); og parsing og udsendelse af sporingsdatameddelelser i CCSDS-TDM (503) til radiometrisk sporing i dybt rum. |
| Missionsanalyse (systemteknik) | Førsteordens budgetter for missionsudformning, hver en kørbar type: tolegeme-opsendelses- og opstigningsgeometri (launch-window — opsendelsesazimut sin Az = cos i/cos lat, minimumsinklination, bonus fra Jordens rotation, plandrejnings-ΔV ved dogleg, daglige muligheder; src/launch.rs); en ballistisk genindtrængningskorridor efter Allen–Eggers (reentry — maksimal deceleration, hastighed/højde ved maksimal g, hastighed ved maksimal opvarmning; src/reentry.rs); geometri for jordobservationsdækning (eo-coverage — swath / nadir-GSD (ground sample distance) / adgang uden for nadir / gensynstid via SMAD-rumtrekanten (Space Mission Analysis and Design); src/eo_payload.rs); et 3-DOF-fejlbudget for attitude og pegning (tre frihedsgrader; attitude-budget — værste-tilfælde-tyngdegradientmoment + RSS-pegebudget (root-sum-square); src/attitude_budget.rs); forudsigelse af passager over jordstationer (passes — AOS/TCA/LOS, acquisition of signal / time of closest approach / loss of signal, maksimal elevation, adgangstid; src/passes.rs); og et envejs linkbudget over linkligningen i CCSDS 401 / DSN 810-005 (CCSDS' standard for radiofrekvens og modulation / Deep Space Networks håndbog for linkdesign; link-budget — FSPL (free-space path loss), C/N₀, Eb/N₀ (energi pr. bit til støjtæthedsforhold), margen, lukning; src/linkbudget.rs). MODELLED analytiske førsteordensbudgetter — laget før hardware under STK/GMAT/Basilisk, ikke en erstatning for 6-DoF eller radiometri. |
| Beslutningsanalyse og afvejning (MCDA) | En fuld pakke til multikriterie-beslutningsanalyse (MCDA) (src/mcda/), der spænder over alle fire metodefamilier — værdiaggregering (WSM, WPM, WASPAS — weighted sum model, weighted product model, weighted aggregated sum product assessment), afstand til idealet (TOPSIS, Technique for Order of Preference by Similarity to Ideal Solution), kompromisprogrammering (VIKOR, fra serbisk for multikriterieoptimering og kompromisløsning) og outranking (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I, fra fransk for elimination og valg, der udtrykker virkeligheden), plus forholdssystemet MOORA (Multi-Objective Optimization on the basis of Ratio Analysis) og den proportionale COPRAS (Complex Proportional Assessment) — med prioritetsvægtning ved parvis sammenligning efter AHP (Analytic Hierarchy Process) (Consistency Ratio), en ikke-domineret front efter Pareto, følsomhedsanalyse af vægte og nyttescore for flere attributter. De ni aggregatorer gengiver de uafhængige tredjepartsbiblioteker pymcdm (WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II) og pyDecision (ELECTRE I, COPRAS) til < 1e-9, og AHP-prioritetsvektoren + Consistency Ratio svarer til Saatys tabel over Random Index og SciPy/LAPACK's egenløser for hovedegenværdi til < 1e-9 (tests/mcda_*_reference.rs). VALIDATED — beslutningslaget under motoren til afvejningsstudier. |
| Rummiljø | En miljømodel for rumvejr (space-weather, src/space_weather.rs): indekser for sol- (F10.7 / 81-dages centreret F10.7a — solradiofluxen på 10,7 cm) og geomagnetisk (Kp, det planetariske K-indeks, med den definitoriske Kp↔ap-tabel — ap er dets lineære planetariske amplitude) aktivitet, den eksosfæriske temperatur fra Jacchia-1971, som de driver (valideret mod offentliggjort solminimum/-middel/-maksimum), og den aktivitetskorrigerede mod den statiske termosfæriske neutraltæthed i højden — afhængigheden af tætheden af solcyklussen, som den statiske USSA76-atmosfære (US Standard Atmosphere 1976) udelader. MODELLED: en kalibreret førsteordens kobling af skalahøjde, ikke en datavalideret (NRLMSISE — US Naval Research Laboratory Mass Spectrometer and Incoherent Scatter Radar Exosphere-modellen) atmosfære. |
| Evaluering og afvejning med maskinlæring | Et testmiljø til evaluering af detektion af RF-forringelser (impairment-eval, src/impairment_eval.rs): et mærket, parameterforankret syntetisk korpus (nominel / jamming / spoof-tid / spoof-position / multipath), en detektoragnostisk ramme for ROC/AUC (receiver operating characteristic / area under the curve), der scorer enhver detektor (energy | agc | sqm | parity | fused) med Pd pr. klasse (probability of detection) ved en mål-Pfa (probability of false alarm), og optimismegabet mellem fordelingen i og uden for træning (tilstand for fordelingsskift). Plus en afvejning mellem kvante og klassisk PNT (quantum-trade, src/quantum_trade.rs), der kvantificerer et kandidatburs fordel for tids-/inertiel holdover ud fra en kurve for målt ADEV mod en klassisk baseline, med forbeholdet om gulvet ved lang τ medsendt på artefaktet og en kurve for resiliens uden GNSS mod tid. De målinger for evaluering (AUC / forvekslingsmatrix / Pd-Pmd, Pmd er sandsynligheden for manglende detektion) er valideret til nøjagtigt match mod scikit-learn 1.9.0 — også på egentlig ESA OPS-SAT-telemetri (anomalidetektionsdatasættet OPSSAT-AD, Ruszczak et al. 2025, CC BY 4,0 — Creative Commons Attribution 4,0), hvor Kshanas Mann–Whitney ROC AUC gengiver scikit-learns roc_auc_score til < 1e-9 på den tilbageholdte testopdeling, og en gennemsigtig detektor, der tæller toppe, adskiller de mærkede anomalier ved AUC ≈ 0,85 (tests/opssat_ad_reference.rs) — og de numeriske kerner i afvejningsmotoren (ADEV NNLS — non-negative least squares — tilpasning, χ²-konsistensbånd, van Loan-ur-Q) mod scipy 1.17.1; de tal for enhedsfordel, der bygger ovenpå, forbliver MODELLED operationelle karakteristika — aldrig felt-/IQ-data (in-phase/quadrature sample), ingen god/dårlig-afgørelse. Ovenpå testmiljøet scorer en dybere undersøgelse af optimismegabet (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) et panel med 13 detektorer (energy/AGC/SQM/parity plus seedede detektorer med logistisk regression og et skjult lag MLP — multi-layer perceptron), tilpasser skaleringslove i og uden for fordelingen med en permutationsnul og lærer en leave-one-out-prædiktor for forringelse uden for fordelingen ud fra statistik i fordelingen (cargo run --example optimism_study). En front end til software-defined receiver (src/sdr.rs — rå IQ/IF (intermediate-frequency) → korrelatorernes early/prompt/late-taps → SQM) og adaptere til indlæsning af egentlige data (src/realdata/ — RINEX, u-blox UBX (u-blox' binære protokol), GnssLogger, JammerTest, Yunnan, SatGrid) lader de samme detektorer køre over optagelser, der leveres lokalt (ingen datasæt er indlagt). Det resiliens-krydsningskort mellem kvante og klassisk under parameterusikkerhed (src/crossover.rs; cargo run --bin crossover_study) genererer igen de inertielle studier og urstudier af krydsning bag figurerne under Resultater. |
| Demonstrator for kvanteunderstøttet PNT | Tre kørbare, MODELLED anvendelsesområder bag den åbne motor, der hver udsender ærlige TradeEvidence + en registrering af repræsentativitet / huller til flyvning (src/representativeness.rs): pålidelig kvantetidsoverførsel (quantum-time-transfer, src/timetransfer_chain.rs — et ende-til-ende-budget med optisk gitterur + fotonisk link mod CSAC (chip-scale atomic clock) + RF-tovejs, med et genbrugt tidsbeskyttelsesniveau, et sikkerhedskvalitetsmål for angreb med forsinkelse/genafspilning (1 − P_md) og detektion af uranomalier + CUSUM-latens); kvantenavigation uden GNSS (quantum-gnss-free-nav, src/quantum_nav_od.rs — en inertiel overbrygning med koldatom-interferometer mod et INS af navigationskvalitet over et GNSS-udfald, ærligt om, at accelerometerbiasen uden en ekstern positionsbestemmelse er uobserverbar, så fejlen stadig vokser); og detektion af fejl/anomalier i kvantesystemer (quantum-anomaly-detect, src/quantum_faults.rs — et mærket fejlkatalog med en bootstrap-CI (konfidensinterval) ROC AUC fra den eksternt validerede eval_stats og en mindste detekterbar fejl ved en fast falsk-alarm-rate). Et delt bibliotek med fejlmodeller for kvanteenheder (src/quantum_devices.rs) og en samlet ramme til afvejning mellem kvante og klassisk (src/qtrade.rs) ligger under dem. De validerede kerner, de kører på (evalueringsmål mod scikit-learn, kerner til afvejning mod scipy), genbruges; de tal for enhedsfordel, der bygger ovenpå, forbliver MODELLED — illustrative parametre fra offentlige kilder for enhed/link, modellerer klassen, ingen TRL / flyvearv / certificering, ingen støtte fra nogen myndighed. |
| Sparsommelig ingeniørkunst og integritetspåvirkning | Et perspektiv på omkostning pr. dækning (ROI — return on investment) (src/frugal.rs) — omkostning pr. enhed leveret dækning ved en afvejning af arkitektur — og en kortlægning fra manglende detektion → integritetspåvirkning (src/integrity_impact.rs), der omsætter en monitors rate for manglende detektion til dens bidrag til integritetsrisikoen. MODELLED budgetter til beslutningsstøtte, additive. |
| Udveksling af artefakter | Kshana Interchange Format (KIF) (src/interchange.rs) — en versioneret, selvbeskrivende konvolut, der omslutter et scenarieresultat med dets type, skemaversion og etiketterne MODELLED/VALIDATED, så et gemt artefakt forbliver selvdokumenterende, og ældre konvolutter forbliver læsbare fremadkompatibelt. |
Hver funktion kan nås som et Rust-API, som en kørbar scenarietype kind eller begge dele. Modenhed pr. funktion — valideret, kørbar eller bibliotek — følges i docs/CAPABILITY.md. En maskinkontrolleret verifikationsmatrix (src/verification.rs) gengiver krydsreferencen krav → modul → test → uafhængig reference → status, med enhedstestede ærlighedsinvarianter, der kun tillader en valideret-etiket, hvor en uafhængig ekstern reference bakker den op — og som registrerer de hardware-/PA-funktioner (product assurance), som Kshana bevidst ikke leverer.
De fire sensorpakker, som første gang offentliggjort (resultater)
Resultater#
Hvert scenarie sammenligner en kvantesensor med dens klassiske modstykke gennem et GNSS-udfald på ~1,8 h. Tallene er reproducerbare (scenario + seed + version).
Hvad kvantesensorer giver, når GNSS er væk — clock-holdover · seed 42 · tegnet ved motor 0.40.0, og hvert tal ovenfor kontrolleres igen mod den aktuelle motor ved hver build af tests/published_figures_still_reproduce.rs · SVG
Fordelen afhænger af udfaldets længde og vibration med et eksplicit break-even-punkt, hvor klassisk vinder — vist ærligt på tværs af stigen for teknologisk modenhed (tal for optiske ure er mål for jordbaserede demonstratorer; intet optisk strontiumur har fløjet):
Krydsning i resiliens mellem kvante og klassisk — TRL-stige for urholdover (øverst) · kort over inertiel fordel med break-even-kontur (nederst). Kan genereres igen via cargo run --release --bin crossover_study.
Positionsfejl ved dødregning under et GNSS-udfald: kvantesensoren (blå) forbliver flad nær specifikationen; den klassiske sensor (rød) divergerer til titusindvis af kilometer. Genereret af Kshana ud fra scenarios/imu-deadreckoning.toml.
| Pakke | Scenarie | Kvante | Klassisk |
|---|---|---|---|
| 1 — Urholdover | clock-holdover.toml (20 ns specifikation) |
optisk ur holder hele udfaldet | CSAC overskrider specifikationen midt i udfaldet |
| 2 — Inertiel dødregning | imu-deadreckoning.toml (100 m specifikation) |
koldatom: ~41 m, holder hele udfaldet | navigationskvalitet: overskrider ved ~350 s → titusindvis af km |
| 3 — Tidsoverførsel (optisk link mellem satellitter) | timetransfer.toml |
optisk: ~0,3 mm afstandsmåling | RF (TWSTFT): ~150 mm afstandsmåling |
| 4 — Hybridfusion (afslutning) | hybrid-pnt.toml |
fuld position + tid for hele udfaldet | positionsbegrænset ved ~350 s |
Afslutningen viser fusionstesen: optisk tidsoverførsel mellem satellitter holder selv et klassisk ur låst, så den inertielle sensor isoleres som den klassiske pakkes svage led — dvs. kvanteinertiel + optisk tidtagning sammen.
Urholdover gennem et GNSS-udfald: det optiske ur (blå) holder sig inden for specifikationen på 20 ns under hele overbrygningen; chip-scale-uret (rød) overskrider den undervejs. Genereret af Kshana ud fra scenarios/clock-holdover.toml.
Et yderligere scenarie, orbit-gnss-challenged.toml, udleder GNSS-tilgængelighed ud fra banegeometri i stedet for manuelt forfattede vinduer: et rumfartøj inden for GNSS-skallen propageres mod en GPS-lignende Walker-konstellation, og antallet af synlige satellitter (sigtelinje, jordokkultation, elevationsmaske) fastsætter tilstanden for positionsbestemmelse i hvert trin. Over et døgn har brugeren kun positionsbestemmelse ~59% af tiden; kvanteuret holder en tidsløsning på 5 ns gennem hvert hul (tilgængelighed 1.0), chip-scale-uret kun ~0.83.
Tidsfejl over et døgn med GNSS-tilgængelighed udledt af banegeometri: antallet af synlige satellitter (sigtelinje, jordokkultation, elevationsmaske) fastsætter tilstanden for positionsbestemmelse i hvert trin, så uret må overbryge hvert hul — det optiske ur holder specifikationen på 5 ns, mens chip-scale-uret overskrider den. Genereret af Kshana ud fra scenarios/orbit-gnss-challenged.toml.
Konstellationen kan også gives som egentlige two-line element sets (TLE'er). Et fuldt TLE (linje 1 + linje 2) propageres med den fulde SGP4/SDP4-model — herunder atmosfærisk modstand og de dybrumsled for måne og sol og resonansled på 12 h / 24 h, som har betydning for GNSS-baner på ~12 h — valideret mod de officielle AIAA 2006-6753-vektorer til en værste-tilfælde ≈ 4 mm. scenarios/orbit-sgp4-gps.toml indeholder et egentligt øjebliksbillede fra Celestrak gps-ops af den operationelle GPS-konstellation (2021-07-28, 30 satellitter) og kræver gyldige TLE-kontrolsummer — two-line element sets er åbne data fra kataloget hos US Space Force / 18th Space Defense Squadron, videredistribueret af Celestrak (Dr T. S. Kelso, celestrak.org); opdatér med scripts/fetch_tles.sh. En blok med kun linje 2 beholder den analytiske tolegemepropagering (scenarios/orbit-real-tle.toml); de to former kan blandes i én konstellation. En konstellation kan lige så vel bygges af en blok med poster af typen RINEX-3 GPS broadcast-efemeride — formatet, en modtager afkoder — propageret med brugeralgoritmen i IS-GPS-200 og ført gennem den samme geometri (scenarios/orbit-rinex.toml).
Hvad det er / ikke er, i fuld form
Hvad det er / ikke er#
Det er: en deterministisk motor med få afhængigheder, der spænder over hele PNT-stakken — banegeometri, inertialnavigation, GNSS/INS-fusion, integritet, ure og tidssynkronisering. Den kører et scenarie (ofte et GNSS-udfald), lader kalibrerede sensorfejlmodeller udvikle sig gennem den passende estimator og scorer resultatet mod de operationelle kvalitetsmål — og udsender et reproducerbart JSON-resultat (JavaScript Object Notation) og et SVG-diagram, fra et Rust-bibliotek, en kommandolinjegrænseflade (CLI), en Python-udvidelse, et WebAssembly-modul i browseren, en Model Context Protocol (MCP)-server til AI-agenter eller et plugin til JetBrains IDE (integrated development environment).
Det er ikke: flyvehardware, et design af en kvantenyttelast, en fuld GNSS-signalmodtager, en simulator for radiofrekvenssignaler (RF) eller en hardware-in-the-loop-opstilling eller et certificeret avionikprodukt — og det erstatter ikke MATLAB/Simulink, STK (Systems Tool Kit) eller Orekit; det står ved siden af dem og udveksler filer med dem. Troværdighed for kvantehardware kommer fra offentliggjorte fejlmodeller, ikke fra dette værktøj. Den detaljerede modenhed af hver funktion er dokumenteret i docs/CAPABILITY.md.
Det er (endnu) ikke: en fuld fysikmotor for atominterferometri (de fleste kvantesensorer bruger offentliggjorte Allan-/støjbudgetkoefficienter; CAI-accelerometeret (cold-atom interferometer) har et lag fra første principper — Mach–Zehnder-fase, projektionsstøj, kontrastaftagning og vibrationskobling, plus systematiske effekter fra Coriolis og lysskift — men systematiske effekter fra bølgefronten og opløsning af interferensstribers heltalsmultiplicitet er fortsat et P2-lag på køreplanen (fase 2 på køreplanen, kvantefysiklaget), se ROADMAP.md og docs/QUANTUM-MODELS.md); en certificeret eller hardwarebaseret GNSS-modtager (den løser en positionsbestemmelse med enkeltpunkts-PVT (position, hastighed og tid) ud fra egentlige RINEX-kodeobservationer (Receiver Independent Exchange Format) — valideret på egentlige IGS-data (International GNSS Service) — og dens IQ-lag (kshana iq, siden 0.31.0) opfanger og sporer optagne eller genererede basisbåndssamples i software som en analysemodtager: den styrer ikke radiohardware og udsender ikke, er ikke en certificeret modtager og foretager ikke positionering på bærebølgefase (RTK eller PPP)); eller en fuld pakke til missionsudformning (den har byggeklodser til Lambert / porkchop / manøvre / banebestemmelse, men er laget for præstationssimulering over GMAT (General Mission Analysis Tool)/Orekit, ikke en erstatning). At eje dette omfang er bevidst. Hvis du har brug for fejlbudgetter for koldatom-interferometre fra første principper (f.eks. af kvalitet som CARIOQA-PMP — Cold Atom Rubidium Interferometry in Orbit for Quantum Accelerometry, Pathfinder Mission Preparation — eller validering i stil med X-37B), se køreplanen for P2 og tag kontakt for at samarbejde.
Navigation i lav jordbane#
Satellitter i lav jordbane (LEO) passerer hurtigt og højlydt. Typen leo-pnt-chain følger ét system gennem hvert trin: signalet, passagen og dens link, navigationsmeddelelsen og den fusionerede PVT-positionsbestemmelse (position, hastighed og tid) og precise point positioning (PPP). Hvert trin giver sine tal videre til det næste. Se docs/LEO-PNT.md.
Alle scenarietyper efter familie#
Motorens scenarietyper, ordnet under familier. Hver familie har en side med én post pr. type (motorens beskrivelse og felter, en eksempelkommando, overskrifttal fra en kørsel, de rækker i verifikationsmatrixen, der nævner den, og det diagram, motoren selv skriver) og et kontaktark med disse diagrammer; docs/KINDS.md indekserer dem alle. Tabellen skrives af tools/gen_readme_blocks.py og siderne af tools/gen_kinds_index.py, og begge fejler, hvis motoren får en type, som ingen familie nævner.
| Familie | Hvad den besvarer | Typer | Kør én |
|---|---|---|---|
| Ure, tidssynkronisering og holdover | hvor længe et ur holder tiden uden GNSS, og hvordan et system til tidssynkronisering klarer sig mod sine masker | clock, sweep, sweep-nd, telecom-timing, slot-timing, timetransfer, time-transfer-budget, holdover-test, quantum-time-transfer |
kshana scenarios/clock-holdover.toml |
| Inertial, fusion og kvantesensorer | dødregning og sensorfusion gennem et GNSS-udfald, med klassiske sensorer og kvantesensorer | inertial, hybrid, fusion, hybrid-ukf, gnss-ins, ins-trn-coast, quantum-gnss-free-nav, quantum-anomaly-detect, quantum-trade |
kshana scenarios/gnss-ins.toml |
| GPS-nægtet alternativ PNT | navigation ud fra tyngde, terræn og andre felter, når GNSS er væk | gravity-map, terrain-nav, terrain-slam, combined-altpnt, conflict-resilience |
kshana scenarios/combined-altpnt.toml |
| Konstellationer, dækning og geometri | hvor satellitterne er, hvem der ser dem, og hvor god geometrien er, rundt om Jorden, Månen eller Mars | orbit, ephemeris, constellation-design, solar-system, body-pnt, mars-pnt, passes |
kshana scenarios/orbit-gnss-challenged.toml |
| GNSS-målinger, positionering og integritet | pseudoafstande, positionsbestemmelser, beskyttelsesniveauer og rummiljøet | integrity, gnss-sim, pvt, araim-reference-check, space-weather, realtime-frame-eop |
kshana scenarios/integrity-raim.toml |
| Jamming, spoofing og spektret | hvordan interferens når en modtager, og om den detekteres | jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval |
kshana scenarios/jamming-demo.toml |
| Navigation i lav jordbane | en overflyvning, et link, en navigationsmeddelelse og en fusioneret positionsbestemmelse, trin for trin | leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain |
kshana scenarios/leo-pnt-end-to-end.toml |
| Måne og cislunart rum | navigation, tid, referencesystemer og geodæsi ved Månen | lunar-integrity, lunar-time-offset, lunar-time-budget, lunar-ascent, lunar-surface, lunar-descent, lunar-orbit-rendezvous, lunar-vlbi, lunar-vlbi-fim, lunar-joint-od-clock, lunar-frame-realisation, lunar-frame-campaign, lunar-llr-datum, moonlight-service-volume, lunar-differential-pnt, lunar-station-coverage, lunar-beacon, lunar-interop-export, cislunar-observability, cislunar-arc-recovery, lunar-attack-surface, lunar-jamming, earth-gnss-lunar, lunar-infrastructure |
kshana scenarios/lunar-infrastructure-od-consistency.toml |
| Navigation for rumbrugere | GNSS-signaler til rumfartøjer over, omkring og hinsides GNSS-banerne | gnss-ssv |
kshana scenarios/gnss-ssv-shell.toml |
| Optisk PNT | optiske links gennem atmosfæren og kvalitetsmål for optisk-plus-RF | optical-atmosphere, hybrid-optical-rf |
kshana scenarios/optical-atmosphere-network.toml |
| Missionsanalyse, forbindelser og rumoperationer | opsendelse, opstigning, genindtrængning, attitude, links, kontaktplanlægning og filformater | launch-window, ascent-losses, reentry, entry-heating, eo-coverage, eo-radiometry, attitude-budget, aocs, link-budget, acm-link, contact-schedule, aperture-duty-cycle, space-packet, oem-interop |
kshana scenarios/launch-window.toml |
| Missionstråde | fejlbudgettet for navigation og tidssynkronisering for en kæde af faser fra opsendelse til indflyvning | mission-thread |
kshana scenarios/mission-thread-artemis-class.toml |
| Kampagner | kædede missioner, sweeps og ensembler bygget af de andre typer | campaign |
kshana scenarios/campaign-jam-spoof-holdover-integrity.toml |
Alle kommandoer#
kshana <scenario.toml> kører et scenarie; hver anden kommando er en underkommando, og kshana --help udskriver brugen af dem alle. Kommandoerne er --study, --validate, kinds, example, receiver-trust (med live og evidence), evidence (keygen, verify, attach-timestamp, round-trip), jammertest (import, score), trust-telemetry, imu-fit, nmea-scenario, interference-map (adsb, ais, daily, sensitivity, fetch-land), route-exposure, bench (spec, truth, cases, score, baseline, seal, reveal-check, manifest, verify-manifest, validate, leaderboard), bench-export, compliance-report, lunanet-afs-check, standards-pack, partner (check), osnma, iq (scene, acquire, track, sweep, labfit, campaign, conditions, frontend, monitor, inventory, info, extract, convert, decimate), sky og skyline. docs/COMMANDS.md giver hver enkelts formål, et kontrolleret eksempel og dens dokumentationsside.
Alle flader#
Én motor, de samme resultater overalt: kommandolinjen, Rust-biblioteket, Python, JavaScript og WebAssembly, MCP-serveren med dens plugin-kommandoer og skills, Kshana Studio (hver side kører i browseren, uden installation, intet uploades), integrationerne med ROS 2, Signal K, OpenCPN, GNSS-SDR og gnss_lib_py, udrulningspakkerne til systemd, Docker og Grafana og JetBrains-pluginet. docs/ALL-SURFACES.md viser dem med, hvordan man får fat i hver, og navnene på alle plugin-kommandoer, skills og Studio-sider; docs/SURFACES.md siger for hver kommando og type, hvilken flade der bærer den, og hvilke der ikke gør, med begrundelsen.
Sådan fungerer en kørsel#
Et scenarie er en TOML-fil (Tom's Obvious, Minimal Language): en type, et seed og parametrene. Motoren kører den og skriver resultatet, et diagram og en rapport ved siden af samt de eksporter, du beder om.
Dette medfølgende scenarie kører 2 h: 10 min med GNSS, derefter omkring 1,8 h uden GNSS. Det spørger, hvor længe et optisk strontium-gitterur og et chip-scale atomur (CSAC) hver holder tiden inden for 20 ns.
kshana example clock-holdover > clock-holdover.toml
kshana clock-holdover.toml
scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote clock-holdover.result.json, clock-holdover.chart.svg, clock-holdover.report.html, and clock-holdover.report.json
Det optiske ur holder budgettet på 20 ns under hele udfaldet på 6600 s; CSAC holder det i 2610 s og er inden for budgettet i 95,6% af kørslen mod 100% for det optiske ur. kshana example viser hvert medfølgende scenarie.
Missioner#
Ti sektorer stiller ti forskellige spørgsmål til den samme motor. Hver har medfølgende scenarier at starte med.
| Sektor | Start med |
|---|---|
| Forsvar og sikkerhed | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Rummet, Jordens bane | orbit-gnss-challenged, leo-pnt-end-to-end |
| Månen, Mars og dybt rum | lunar-relay-constellation, mars-orbit-pnt |
| Luftfart og droner | small-uas-jammed-nav, araim-gps-galileo |
| Maritim | maritime-strait-jamming, maritime-port-approach-coast |
| Vej | automotive-urban-canyon |
| Jernbane | rail-tunnel-coast |
| Kritisk infrastruktur og tidssynkronisering | clock-holdover, clock-ensemble |
| Telekom og 5G (femte generation af mobilnet) | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Videnskab og forskning | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Det spørgsmål, hver sektor stiller
| Sektor | Det spørgsmål, den stiller | Start med |
|---|---|---|
| Forsvar og sikkerhed | Hvor længe forbliver vores navigation og tidssynkronisering pålidelige under jamming og spoofing, og hvilke lag holder os inden for specifikationen? | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Rummet: Jordens bane | Ser mit rumfartøj nok navigationssatellitter, hvor længe holder dets ur tiden mellem positionsbestemmelser, og hvad ville et navigationslag i lav bane tilføje? | orbit-gnss-challenged, leo-pnt-end-to-end |
| Månen og dybt rum | Får en lander, en rover eller en orbiter ved Månen, ved Mars eller længere ude en pålidelig position og tid? | lunar-relay-constellation, mars-orbit-pnt |
| Luftfart og droner | Når en jammer har taget GNSS fra mig, hvor længe forbliver mit ubemandede luftfartøjssystem (UAS) inden for sit positionsbudget, og er integritet tilgængelig på min rute? | small-uas-jammed-nav, araim-gps-galileo |
| Maritim | Hvor langt henover vandet rækker en jammer, ville et positionsskub blive fanget, og hvor længe kan et skib klare sig ind til havn på dødregning? | maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast |
| Vej og bil | Hvor langt driver en bil under et viadukt eller forbi en jammer ved vejen? | automotive-urban-canyon |
| Jernbane | Hvor mange sekunder inde i en tunnel kan et tog stadig afgøre, hvilket spor det er på? | rail-tunnel-coast |
| Kritisk infrastruktur og tidssynkronisering | Hvis GNSS-tiden går tabt eller spoofes, hvor længe bevarer et elnet, et handelssted eller et datacenter sporbar tid? | clock-holdover, clock-ensemble |
| Telekom og 5G | Hvis GNSS-tidsreferencen går tabt, holder mit netværksur sig så inden for ITU-T-maskerne, og i hvor lang tid? | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Videnskab og forskning | Kan jeg gengive, udvide og citere et PNT-resultat, helt ned til seedet? | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Evidens#
SGP4 kontrolleret mod alle 666 referencevektorer i AIAA 2006-6753, værste positionsfejl 4,12 mm
176 af 401 funktioner valideret mod uafhængige eksterne referencer; 221 ærligt betegnet modelleret. Hver række i verifikationsmatricen nævner en funktion, den uafhængige reference, den kontrolleres mod, den test, der kører kontrollen, og den etiket, der følger. Kontinuerlig integration (CI) gør det umuligt at kalde en funktion VALIDATED uden en uafhængig ekstern reference.
| Mærkat | Rækker | Betydning |
|---|---|---|
| VALIDATED | 176 | en uafhængig ekstern reference er enig: egentlige data, en uafhængig implementering eller offentliggjorte referencevektorer |
| MODELLED | 221 | kontrolleret mod analytisk sandhed eller konsistens i simulationen, og sagt højt |
| PARTNER | 4 | ejet af en hardwarepartner; Kshana har ingen uafhængig reference for den |
Nogle af kontrollerne: alle 666 AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 SGP4-vektorer (Simplified General Perturbations 4) til 4,12 mm; Cowell-kraftmodellen til 0,08 m mod Orekit 12,2; Galileo til 0,61 m og Swarm-A til 0,10 m mod virkelige præcise efemerider fra Den Europæiske Rumorganisation (ESA). Testene dækker omkring 95 % af linjerne i src/, med en grænse på 85 % i CI. Registeret er docs/VERIFICATION-MATRIX.md, genereret fra src/verification.rs: den fulde matrix med 401 rækker og hvorfor hver modellerede række ikke har nogen ekstern uafhængig reference i docs/MODELLED-RATIONALE.md.
Sådan fungerer validering, den kuraterede højdepunktstabel og evidensfigurerne
Validering, reproducerbarhed og ærlighed#
- Hvert støjled er kalibreret til et offentliggjort, citeret tal og valideret mod den gængse relation (Allan-afvigelse for ure; Groves' vækst i dødregningsfejl for inertial; omregningen fra tidssynkronisering til afstandsmåling for tidsoverførsel). Status pr. led følges i
docs/VALIDATION.mdsomvalidatedellernot modeled— intet præsenteres som valideret, som ikke er det. - Reproducerbar ved konstruktion:
scenario + seed + engine version → identical bits.scripts/check-reproducible.shhåndhæver det; kørsler med kvante og klassisk bruger uafhængige seeds, så deres støj er ukorreleret. - Modenhed angives ærligt: tal for optiske ure og optiske links er resultater af mål / jordbaserede demonstratorer, ikke fløjet.
Evidensetiketten på hvert tal#
Hvert tal og hver tabel, en kørsel skriver, siger, hvor meget det kan stoles på, og hvilke registerrækker det hviler på. Resultat-JSON har en nøgle evidence, diagram-SVG en linje under diagrammet (og et element <metadata id="kshana-evidence">), og CSV-tabellen # evidence: kommentarlinjer foran (læst med comment='#'). Den nævner et niveau, VALIDATED, MODELLED eller PARTNER, og id'erne (VM- og otte hex-cifre) på de verifikationsmatrixrækker, kørslen brugte. Niveauet er det svageste af disse rækker, så en kørsel, der læner sig op ad én modelleret række, er betegnet MODELLED, uanset hvor mange validerede rækker der står ved siden af; etiketten kan aldrig hævde mere end registeret. Rækker, statusser og id'er læses fra matricen og er ikke skrevet ind (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), og tests/evidence_labels_doc_sync.rs fejler, hvis et tal ikke har en etiket, eller en etiket er uenig med matricen.
Validering i overblik#
Hver række håndhæves af en navngiven test i CI. Denne tabel er et udvalgt højdepunkt; den fulde maskinkontrollerede matrix er på 401 rækker — 176 VALIDATED, 221 MODELLED, 4 PARTNER (src/verification.rs), med den komplette evidens (og hvad der ærligt talt ikke endnu er valideret) i docs/VALIDATION.md og artefaktet kshana-validation-summary.html for hver udgivelse (genereret af cargo run --bin validation_report, SLSA-attesteret — Supply-chain Levels for Software Artifacts).
Kolonnen Status angiver evidensens art, svarende til valideringsstigen ovenfor: VALIDATED = kontrolleret mod en uafhængig ekstern reference (egentlige data, et uafhængigt bibliotek eller offentliggjorte referencevektorer); MODELLED = kontrolleret mod analytisk sandhed eller konsistens i simulationen (intet uafhængigt eksternt datasæt). VALIDATED beskriver metoden for kontrol, ikke bestået/ikke bestået — et ærligt svigt mod en egentlig ekstern reference forbliver VALIDATED, mens en sammenligning, som ingen matrixrække nævner som reference (LRO — Lunar Reconnaissance Orbiter — tilpasningen ovenfor), vises som MODELLED. Rækkerne for CI er procesværn, ikke kvalitetsmål. Nogle få øer med egentlige data (det målte cæsiumur, Stable32 PHASE.DAT og kontrollerne for OPS-SAT/ICGEM, hvor de rå input ikke har nogen licens til videredistribution) er datastyrede: testen udskriver en overspringsmeddelelse og forbliver grøn, når inputtet mangler, og de offentlige referencetal er indlagt under tests/fixtures/. Gengiv de rå input med den tilsvarende scripts/fetch_*.sh.
| Status | Funktion | Enighed | Reference / uafhængig reference |
|---|---|---|---|
| VALIDATED | SGP4/SDP4-propagering | 666/666 vektorer, værst 4,12 mm | AIAA 2006-6753 (Vallado tcppver.out) + direkte sammenligning med den uafhængige crate sgp4 |
| VALIDATED | Referencesystemer — IAU 2000A/B-nutation, IAU 2006/2000A CIO-kæde, ERA | bit for bit (X,Y til 1e-14, s til 1e-18, ERA til 1e-12) | ERFA/SOFA eraXys06a · eraC2ixys · eraEra00 · eraNut00a/b |
| MODELLED | GCRS→ITRS mod en uafhængig SPICE-motor | maks. 0.028″ → ≤ 0,86 m på jorden, ≤ 3,6 m i GNSS-bane | ANISE (ren Rust NAIF/SPICE), samme IERS finals2000A EOP, 8 epoker 2020–2023 (sammenlignet med denne reference; ingen række i verifikationsmatrixen nævner den som ekstern reference, så den er ikke mærket VALIDATED) |
| MODELLED | EGM2008-geopotentiale (grad/orden 70) | acceleration = ∇V til < 1e-6; zonal kollaps til valideret J2 | NGA EGM2008-koefficienter + analytisk ∇V-identitet |
| VALIDATED | Syntese af tyngdefunktionaler (tyngdestøttet / GNSS-frit navigationskort) | GRS80 Somigliana + γ_e/γ_p til 3.5e-12; egentligt EGM2008-forstyrrelseskort fysisk (RMS ≈ 26 mGal, d/o 70) | GRS80 (Moritz 1980, IAG — International Association of Geodesy) Somigliana-normaltyngde + egentlig ICGEM EGM2008 (tests/icgem_gravity_reference.rs) |
| VALIDATED | Allan-estimatorer (ADEV/MDEV/TDEV/HDEV) + konfidensbånd | gengiver referenceafvigelser; χ²-bånd stemmer | NIST SP 1065 (Riley), tabel 31/32 med 1000 punkter |
| VALIDATED | Allan-estimatorer på et egentligt målt cæsiumur | OADEV/OHDEV til 1e-3 (observeret ≤ 3e-5), 16 midlingsfaktorer | Stable32 på en egentlig 5071A Cs mod H-maser, 556.990 punkter (tests/cs5071a_reference.rs, datastyret) |
| VALIDATED | Allan-estimatorer på den kanoniske Stable32 PHASE.DAT | OADEV/MDEV/TDEV til 1e-3 (observeret ≤ 5e-5), 139 midlingsfaktorer | Stable32-referenceafvigelser for PHASE.DAT (tests/phasedat_reference.rs, datastyret) |
| MODELLED | IMU-fejlmodel — ARW / VRW / bias-ustabilitet | genfundet til < 5 % (bias-ustabilitet < 15 %) | Analog Devices ADIS16465-datablad; NaveGo-referenceprofil |
| VALIDATED | Numerisk Cowell-propagator + kraftmodel (konservative niveauer) | værste positionsfejl 0,08 m over 24 h, 278 epoker (LEO + GTO) | Orekit 12,2 NumericalPropagator/DormandPrince853 (CS GROUP), tests/numerical_cowell_propagator_reference.rs |
| MODELLED | Cowell-niveau for modstand + absolutte input for efemeride for Sol/Måne og tæthed | modstandsniveauet karakteriseret ≈ 333 m / 24 h; uforstyrret matcher universal-variable Kepler under en meter, energi/impulsmoment ~1e-9 | indbygget efemeride med lav præcision + analytisk Kepler |
| MODELLED | Lambert · Tsiolkovsky · porkchop | rundtur til tolegemereference; ΔV < 0.01 % | Izzo 2015 · raketligningen · analytisk Hohmann-gulv |
| MODELLED | Banebestemmelse (Gauss–Newton-batch) | under en meter / mm·s⁻¹ uden støj; ~2 m ved et støjgulv på 5 m | tolegeme + J2 over en RK4-bue |
| MODELLED | Tilpasning af kraftmodel mod præcis efemeride for Galileo (fuld bue) | 0,61 m 3D-RMS, 24 h, d/o-70, kun kraft | ESA/ESOC's endelige bane ESA0MGNFIN (E11), egentlige finals2000A EOP (sammenlignet med denne reference; ingen række i verifikationsmatrixen nævner den som ekstern reference, så den er ikke mærket VALIDATED) |
| MODELLED | Tilpasning af kraftmodel mod præcis efemeride for Swarm-A (reduceret-dynamisk) | 0,10 m 3D-RMS (grænse for empirisk niveau, ikke et mål) | ESA's præcise bane SW_OPER_SP3ACOM_2_ (sammenlignet med denne reference; ingen række i verifikationsmatrixen nævner den som ekstern reference, så den er ikke mærket VALIDATED) |
| MODELLED | Tilpasning af kraftmodel mod LRO ved Månen (ærligt svigt) | 6,67 m reduceret-dynamisk, over målet på 5 m | JPL Horizons LRO (NAIF −85) + GRAIL (Gravity Recovery and Interior Laboratory) GRGM660PRIM (sammenlignet med denne reference; ingen række i verifikationsmatrixen nævner den som ekstern reference, så den er ikke mærket VALIDATED) |
| MODELLED | Mars-OD i dybt rum (reduceret-dynamisk SRIF) | ≈ 0,2 m Mars-LMO (kvalitetsmål i simulation, ikke egentlig mission) | syntetisk lukket-sløjfe-OD — validering af estimatormaskineriet |
| MODELLED | Mars-dynamik med Solen som centrum mod JPL DE440 | 137 m @ 1-dags bue (vokser med buen = ikke modelleret n-legeme) | JPL DE440 via ANISE (xval/anise-mars-od, kernestyret) (sammenlignet med denne reference; ingen række i verifikationsmatrixen nævner den som ekstern reference, så den er ikke mærket VALIDATED) |
| VALIDATED | Enkeltpunktspositionering mod en opmålt IGS-koordinat (egentlige observationer) | 5,7 m 3D-RMS / 1,1 m horisontalt, SPP med tofrekvens ionosfærefri kode | IGS-station ABMF-opmåling + GPS-broadcast-efemeride, 2018-05-13 (tests/pvt_abmf.rs) |
| MODELLED | Tæt koblet GNSS/INS-UKF | 0,77 m RMS over en LEO-passage på 30 min inkl. et udfald på 120 s | overbrygning med kraftmodel, håndudledt |
| MODELLED | Tyngdekortnavigation uden GPS | ~70 km INS-drift → ~145 m genfundet | ESA NAVISP-mål Quantum Wayfarer |
| MODELLED | Terrænreferencenavigation (TERCOM/SITAN) | 70 km drift → < 500 m (gitteropløsningens bundgrænse ~140 m) | SRTM .hgt DEM; manuelt tilført drift (ikke-cirkulær kontrol) |
| MODELLED | IGRF-14-hovedfelt (grad/orden 13) | pol ~80,7°N, dipol ~29,7 µT, fysisk bånd på 22–67 µT | IAGA (International Association of Geomagnetism and Aeronomy) igrf14coeffs.txt (Schmidt-seminormaliseret) |
| MODELLED | Modulation af navigationssignal og kodesporing | BPSK-egen-SSC = 2/(3·R_c); PSD'er pr. enhedsareal; submeter-jitter i C/A-DLL ved 45 dB-Hz | Lukkede SSC/PSD-ankre samt Kaplan & Hegartys formel for DLL's termiske støj |
| MODELLED | CR3BP-differentialkorrektor til halo/NRHO | STM = differenskvotienter; banen lukker sig til maskinpræcision; L2 9:2 NRHO ≈ 6,57 d / perilune ≈ 3.250 km | kontrol af STM med differenskvotienter samt den publicerede sydlige L2 9:2 NRHO (≈ 6,56 d / ≈ 3.370 km) — CR3BP, ikke en reel Gateway-efemeride |
| MODELLED | ARAIM-integritet med to konstellationer | fejltilstand for hele konstellationen på reelle GPS + Galileo | EU ARAIM TR (teknisk rapport) / DO-316; Celestrak gps-ops 2021-07-28 (sammenlignet med denne reference; ingen række i verifikationsmatrixen nævner den som en ekstern uafhængig reference, så den er ikke mærket VALIDATED) |
| VALIDATED | GNSS-geometri / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) | stemmer overens til 1e-6 relativt på tværs af 8 geometrier (veltilpasset → næsten singulær) | gnss_lib_py 1.0.4 (Stanford NAV Lab) — uafhængigt bibliotek (tests/dop_reference.rs) |
| VALIDATED | Evalueringsmål for ML-detektorer (AUC/ROC/forvekslingsmatrix/Pd-Pmd/præcision/F1) | nøjagtige antal + < 1e-9 over 5 datasæt × 24 tærskler | scikit-learn 1.9.0 (Pedregosa et al., JMLR — Journal of Machine Learning Research — 2011) — uafhængigt bibliotek (tests/eval_metrics_reference.rs) |
| VALIDATED | ROC AUC for anomalidetektion på reel ESA OPS-SAT-telemetri | AUC gengiver scikit-learn til < 1e-9; AUC for detektoren baseret på antal toppe ≈ 0.85 på den mærkede testdel | scikit-learn roc_auc_score på OPSSAT-AD-testdelen (Ruszczak et al. 2025, CC BY 4,0) — reel OPS-SAT-telemetri (tests/opssat_ad_reference.rs) |
| VALIDATED | Numeriske kerner til kvante-afvejning (ADEV NNLS-tilpasning · χ²-konsistensbånd · van-Loan-ur-Q) | NNLS + Q nøjagtige; χ² < 5e-4 ved driftsfrihedsgrader ≥ 48 | scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm (tests/scipy_reference.rs) |
| VALIDATED | MTIE / MDEV / TDEV-mål for telekommunikationens wander (ITU-T G.810/G.823/G.8261/G.811 — anbefalinger fra International Telecommunication Unions standardiseringssektor for telekommunikation) | MTIE (9 middelværdifaktorer, bit-for-bit) og MDEV + TDEV (8 faktorer, < 1e-9 relativt) på NIST SP 1065-LCG-serien (lineær kongruensgenerator) | allantools 2024,06 mtie / mdev / tdev — uafhængigt bibliotek (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs) |
| VALIDATED | MCDA-metoder til afvejningsstudier — alle fire beslutningsfamilier, ni eksternt validerede aggregatorer (WSM · WPM · WASPAS · MOORA · COPRAS · TOPSIS · VIKOR · PROMETHEE II · ELECTRE I) samt AHP-prioritetsvægtning ved parvis sammenligning | scorer / rangeringer / konkordansmatricer gengivet til < 1e-9 | pymcdm + pyDecision (uafhængige MCDA-biblioteker fra tredjepart) + Saaty RI (Random Index) / SciPy-LAPACK eig (tests/mcda_*_reference.rs) |
| VALIDATED | LEO-Doppler-envelope ud fra bane og bærebølge | Iridium-maksimum inden for 5 % af de publicerede ±36 kHz; Xona Pulsar X1 inden for de publicerede 32–34 kHz | RNTF LEO PNT-testresultater; Leclère, Marathe & Reid, arXiv:2509,19551 (tests/leo_doppler_reference.rs) |
| MODELLED | PPP-konvergens med LEO-augmentering | 7,4 → 4,8 / 3,2 / 2,7 / 2,3 min med 60 / 96 / 192 / 288 LEO-satellitter, monotont; filterets NEES inden for χ²-båndet | tendens sammenlignet med Li et al., J. Geod. 93:749 (2019) (9,6 → 7,0 / 3,2 / 2,1 / 1,3 min); konstellationer og støj er ikke gengivet |
| MODELLED | Betinget beskyttelsesniveau for tid (holdover-begrænset uopdaget tidsfejl under spoofing) | sammensætningen gengiver den flertrins clock_state-kovariansrekursion; kalibreret på en reel optaget spoof |
JammerTest 2024 (Zenodo 15911589) skalarer + van-Loan / CUSUM på lukket form (examples/tpl_jammertest) |
| MODELLED | Scoring af PNT-robusthed + beslutningsustabilitet | 35 håndudledte tests mod uafhængig reference; byte-deterministisk studieartefakt (fast seed) | DHS RPCF v2.0-afbildning + Dirichlet / Kendall-τ / Hill-N2 på lukket form — syntetiske arkitekturer, ikke en certificering |
| MODELLED | Studie af optimismegabet ved RF-forstyrrelser (skaleringslove + leave-one-out-prædiktor) | signifikans ved permutationsnul; byte-deterministisk artefakt (5 seeds) | syntetisk, parameterforankret korpus — evalueringens mål er VALIDATED mod scikit-learn (ovenfor); studiet er MODELLED |
| CI | Reproducerbarhed på tværs af platforme | bit-identisk input + facitfiler for form på 3 operativsystemer | CI-matrix for Linux / macOS / Windows, SHA-256-facitfiler |
| CI | Testdækning | ~95 % linjer på src/ uden src/*_data.rs og src/main.rs, med krav om ≥ 85 % |
cargo-tarpaulin (LLVM-motor) |
Hvordan en funktion opnår sin mærkning — den CI-håndhævede invariant: ingen ekstern uafhængig reference ⇒ kan ikke være valideret · SVG
Øverst: hver valideret række understøttes af et eksternt datasæt, pr. konstruktion. Nederst: SGP4 stemmer overens med den officielle reference i hvert område (værst 4,12 mm). SVG · SVG
176 Valideret · 221 Modelleret · 4 Partner — SVG
Funktionsområder#
Alle funktioner i det offentlige kort, fordelt på område, med deres registermærkning. Områdetabellen skrives af tools/gen_readme_blocks.py ud fra web/capabilities.json, den samme fil som Studios kort over alt læser.
Den fulde tabel, område for område med hver funktion og dens mærkning, findes i docs/CAPABILITY-DOMAINS.md.
Installation#
Én linje henter kommandolinjeværktøjet: cargo install kshana. Hver kanal leverer v0.40.0 fra den samme mærkede commit.
| Kanal | Installation | Vejledning |
|---|---|---|
| Prøv i browseren | åbn https://kshana.dev | Guide til Studio |
| Kommandolinje (Rust) | cargo install kshana |
Brug af kommandolinjen |
| Rust-bibliotek | cargo add kshana |
API-reference på docs.rs |
| Python | pip install kshana |
Guide til Python-API'et |
| JavaScript og WebAssembly | npm install kshana |
Guide til npm og WebAssembly |
| AI-assistent (MCP-server, cargo) | cargo install kshana-mcp |
Guide til MCP-serveren |
| Docker-image | docker run --rm -i ghcr.io/ashfordeou/kshana-mcp |
Guide til MCP-serveren: Docker |
| Cursor (ét klik) | Føj til Cursor (npx) · Føj til Cursor (Docker) · npx -y kshana-mcp@0.40.0 |
Alle MCP-installationsuddrag |
| VS Code (ét klik) | Installér i VS Code (npx) · Installér i VS Code (Docker) · npx -y kshana-mcp@0.40.0 |
Alle MCP-installationsuddrag |
| npx | npx -y kshana-mcp@0.40.0 |
Alle MCP-installationsuddrag |
| uvx / pipx | uvx kshana-mcp==0.40.0 |
Alle MCP-installationsuddrag |
| Homebrew | brew install ashfordeOU/tap/kshana-mcp |
Alle MCP-installationsuddrag |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp |
Alle MCP-installationsuddrag |
| winget | winget install AshfordeOU.KshanaMcp |
Alle MCP-installationsuddrag |
| Færdigbygget binær fil | download kshana-mcp-<target> fra udgivelsen, og kontrollér den mod SHA256SUMS | Alle MCP-installationsuddrag |
| Officielt MCP-register | søg efter io.github.ashfordeOU/kshana-mcp | Alle MCP-installationsuddrag |
| Fjernadgang (streamable HTTP), selvhostet | kshana-mcp --http 127.0.0.1:8080 |
Vejledning til selvhosting |
| JetBrains IDE-plugin | Settings → Plugins → Marketplace → søg efter "Kshana" (plugin-ID dev.kshana.ide) | Guide til pluginet |
| Signal K-plugin | npm install signalk-kshana-trust |
Vejledning til Signal K-plugin |
| OpenCPN-plugin | download plugin-tarballen fra udgivelsen | Indsendelse til OpenCPN-kataloget |
| Grafana-dashboard | importér kshana-grafana-*.json fra udgivelsen | Dashboardets kilde |
| Image til referencebuild | docker pull ghcr.io/ashfordeou/kshana-reference-build |
Maritime integrationer |
Kshana på JetBrains Marketplace Bygger med Rust 1,88 eller nyere, rust-version i Cargo.toml
MCP er Model Context Protocol. Fastlås en udgivelse med cargo install kshana --version 0.40.0, pip install kshana==0.40.0 eller npm install kshana@0.40.0. Hvis du vil bygge fra kildekode, se Installation og bygning under Reference.
Kør et scenarie fra Python og fra WebAssembly
import json, kshana
toml = open("clock-holdover.toml").read()
result = json.loads(kshana.run(toml))
print(kshana.version(), result["quantum"]["fom"]["holdover_s"], result["classical"]["fom"]["holdover_s"])
# 0.40.0 6600.0 2610.0
Ud over run udstiller modulet run_full (JSON, SVG og enlinjesammenfatningen på én gang), run_typed, validate_toml, list_kinds / scenario_kinds og error_kind; se docs/PYTHON_API.md.
npm-pakken er hele motoren kompileret til WebAssembly. I Node.js skal du give binærfilen til initSync; i en browser henter await init() den (se README.npm.md).
import { readFileSync } from "node:fs";
import { createRequire } from "node:module";
import { initSync, run, summary, version } from "kshana";
const wasm = createRequire(import.meta.url).resolve("kshana/kshana_bg.wasm");
initSync({ module: readFileSync(wasm) });
const toml = readFileSync("clock-holdover.toml", "utf8");
const result = JSON.parse(run(toml));
console.log(version(), result.quantum.fom.holdover_s, result.classical.fom.holdover_s);
// 0.40.0 6600 2610
console.log(summary(toml));
Arkitektur#
Én åben motor sidder i midten, og hver flade kører den: kommandolinjen, Rust-biblioteket, Python, WebAssembly og Kshana Studio, MCP-serveren, Docker-billedet og JetBrains-pluginnet. Den samme scenariefil giver de samme bytes på hver. Kshana Pro sidder ovenpå som et separat overlay, der afhænger af motoren og aldrig forgrener den.
Inde i motoren: domænelagene og verifikationsregistret
Én motor, mange indgange. En enkelt Rust-kerne (kshana) kører hvert scenarie, nået gennem en CLI, en Python-udvidelse, et WebAssembly-modul i browseren, en MCP-server til AI-agenter og et JetBrains IDE-plugin — alle samlet i én api::run_toml-fordeling. Indeni tilsluttes sensorpakkerne en fælles fejlmodelgrænseflade; ved siden af ligger et referencesystemlag (IAU 2006/2000A-præcession–nutation og den CIO-baserede GCRS↔ITRS-reduktion), et astrodynamisk/numerisk lag (analytisk SGP4/SDP4 og en numerisk Cowell-propagator med sin EGM2008/perturbationskraftmodel, manøvreudformning og banebestemmelse), et integritets-/GNSS-lag (RAIM/ARAIM, SBAS, måledomænet, jamming, cislunar), et fusions-/alt-PNT-lag (GNSS/INS-estimatorerne og tyngde-/terræn-/magnetkortmatcherne), et lag for dybt rum og Månen (radiometrisk Mars-PNT og Månens PNT-suite, med evidensniveau pr. del i matrixen — LTC-tid, VLBI, fælles OD+ur, realisering af referencesystem, servicevolumen, differentiel PNT, interoperabilitet), et missionsanalyselag (opsendelse / genindtrængning / dækning / pegning / passage / linkbudgetter og rumvejrmiljøet) og det åbne studielag for robusthed og maskinlæring (RPCF-robusthedsscoring, optimismegabet ved RF-forstyrrelser og den kvanteunderstøttede PNT-demonstrator), hvis reproducerbare artefakter bygger på de validerede kerner.
To selvstændige workspace-ekskluderede crates ligger ved siden af kernen — mcp/kshana-mcp (MCP-serveren, bygget på edition-2024-SDK'en rmcp) og xval/anise-frames (ANISE/SPICE-krydskontrollen af referencesystemer, som trækker MPL-2.0-afhængigheder (Mozilla Public License 2,0) ind) — holdt uden for den publicerede crates afhængighedsgraf, Cargo.lock, licensport og MSRV-bygning (minimum supported Rust version) af rodens Cargo.toml-liste exclude. JetBrains-pluginnet (ide/jetbrains) er et separat Kotlin-projekt. Se docs/ARCHITECTURE.md for hele sættet af diagrammer.
De gengivne diagrammer (motorflow, modulkort, distribution) findes i docs/ARCHITECTURE.md.
Diagrammer#
Diagrammerne er Mermaid-kilder i docs/diagrams/, gengivet til SVG og PNG i docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> på Linux, de to andre render-diagram-scripts andre steder), og en post binder hver PNG til den nøjagtige SVG, den stammer fra. Tests fastlåser de antal, de angiver. Diagrammerne i afsnittene ovenfor er tegnet af værktøjer ud fra motorkørsler; disse viser, hvordan delene hænger sammen.

Én fordeling, én motor, reproducerbart output · SVG · kilde system-overview.mmd

Hver flade, fra den samme motor · SVG · kilde surfaces.mmd

Den indre løkke i en kørsel · SVG · kilde engine-flow.mmd

Fra en modtagerlog til en tillidsscore og det, der bruger den · SVG · kilde trust-flow.mmd

Scenarie til signeret pakke; Kshana frembringer eller afspiller aldrig et signal · SVG · kilde lab-round-trip.mmd

Sådan kører Studio, lokalt · SVG · kilde studio-flow.mmd

Test- og udgivelsesflow, fra lokale porte til en verificeret udgivelse og stien kun til sitet · SVG · kilde release-flow.mmd · docs/RELEASING.md

Hvor koden bor · SVG · kilde module-map.mmd

Hvad der leveres hvor, og hvad der kontrollerer det · SVG · kilde distribution.mmd
AI-assistent#
kshana-mcp er en MCP-server: din assistent kører den faktiske motor og læser dens JSON tilbage i stedet for at gætte på matematikken. Hvert af dens 49 værktøjer er en tynd indpakning om en offentlig funktion i kshana-biblioteket, så ingen simuleringslogik bor i serveren.
Installér MCP-serveren#
Vejledende, ikke typegodkendt navigationsudstyr: operatøren er fortsat ansvarlig for navigationen. Serveren kører på din computer; intet sendes til Ashforde OÜ.
En passage, der nævner AI-klienter fra tredjepart, er udeladt her; den findes i README.md på GitHub.
| Kanal | Kommando eller knap | Kræver | Fastlåst form |
|---|---|---|---|
| Cursor (ét klik) | npx (Node) · Docker | Node eller Docker | kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| VS Code (ét klik) | npx (Node) · Docker · Insiders (npx) | Node eller Docker | kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| npx | npx -y kshana-mcp@0.40.0 |
Node 18+ | kshana-mcp@0.40.0 |
| uvx / pipx | uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 |
Python 3,9+ med uv eller pipx | kshana-mcp==0.40.0 |
| Docker | docker run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
Docker | ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| Homebrew | brew install ashfordeOU/tap/kshana-mcp |
brew | formel for v0.40.0 |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket og derefter scoop install kshana-mcp |
Scoop (Windows) | manifest for v0.40.0 |
| winget | winget install AshfordeOU.KshanaMcp |
winget (Windows) | --version 0.40.0 |
| cargo | cargo install kshana-mcp --version 0.40.0 |
Rust 1,88+ | kshana-mcp 0.40.0 |
| Færdigbygget binær fil | udgivelsessiden: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], kontrolleret med SHA256SUMS og gh attestation verify |
ingen | v0.40.0 |
| MCP-register | io.github.ashfordeOU/kshana-mcp (findes af klienter, der kender registret) |
en klient, der kender registret | 0.40.0 |
| Fjernadgang (streamable HTTP) | kshana-mcp --http 127.0.0.1:8080, selvhostet: se docs/deploy/mcp-http.md |
din egen vært | v0.40.0 |
kshana-mcp på Glama, dens kvalitetsscore for MCP-servere
En passage, der nævner AI-klienter fra tredjepart, er udeladt her; den findes i README.md på GitHub.
Opsætning pr. klient findes i docs/integrations.md. Serveren er opført i det officielle MCP-register som io.github.ashfordeOU/kshana-mcp.
De 49 værktøjer
Scenarier og rapporter
| Værktøj | Hvad det gør |
|---|---|
run_scenario |
Kør et scenarie ud fra en TOML-definition (Tom's Obvious, Minimal Language) |
list_scenario_kinds |
De 92 indbyggede scenarietyper med beskrivelser + obligatoriske/valgfrie felter — så agenten kan konstruere et gyldigt scenarie |
validate_scenario |
Kontrol før kørsel: parse TOML'en og find dens kind uden at køre |
list_example_scenarios |
De medfølgende referencescenarier som JSON |
get_example_scenario |
TOML-teksten for ét medfølgende referencescenarie, byte for byte filen under scenarios/ |
report_scenario |
Kør et scenarie og returnér dets rapport |
animate_scenario |
Kør et scenarie og returnér dets tidsserie som en animation |
sky_geometry |
Himmelgeometri under en azimutafhængig horisontlinje: de synlige og skjulte satellitter, DOP, øst-nord-op-kovariansen og den vandrette fejlellipse; eller en forudindstilling af horisontlinje med dens proveniens |
Eksport og interoperabilitet
| Værktøj | Hvad det gør |
|---|---|
list_export_formats |
Hvilke interoperabilitetsformater der gælder for et scenarie (czml, kml, geojson, stk, sigmf), årsagen, når et ikke gør det, og den specifikation, hver skriver følger |
export_interop |
Eksportér et scenarie som CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, STK (Systems Tool Kit)-efemeride .e eller SigMF (Signal Metadata |
import_route |
Skriv en GeoJSON-LineString-rute ind i et scenarie, der flyver et sporpunktsspor (terrain-nav, terrain-slam, gravity-map, combined-altpnt), og returnér den nye TOML |
export_sp3 |
Eksportér konstellationen i et orbit-scenarie som præcis SP3-c-efemeride (Standard Product 3, revision c) |
export_omm |
Eksportér elementerne i et orbit-scenarie som et CCSDS-katalog (Consultative Committee for Space Data Systems) 502.0-B-2 OMM (Orbit Mean-elements Message) |
export_oem |
Eksportér tilstandsserien i et orbit-scenarie som CCSDS OEM-efemeride (Orbit Ephemeris Message) 2,0 — TEME-positionen (true equator, mean equinox) og |
export_table_csv |
Kør et scenarie og returnér dets reproducerbarhedstabel som CSV (kommasepareret) — den byte-stabile tabel, CLI'en (kommandolinjegrænsefladen) skriver som <scenario>.table.csv |
export_test_bench |
Et scenaries køretøjsbevægelse og hændelser til en GNSS-laboratoriesimulator (kshana bench-export) |
Modtager- og fartøjstillid
| Værktøj | Hvad det gør |
|---|---|
assess_receiver_log |
Vurdér en reel GNSS-modtagerlog (global navigation satellite system) for tillid |
assess_vessel_stream |
Score et afgrænset NMEA 0183-udsnit (højst 2 MiB og 20.000 epoker |
assess_vessel_log |
Et fartøjs NMEA 0183-log (højst 4 MiB) som batchkørsel, hvor sessions-TOML'en angiver fartøjets grænser |
create_evidence_pack |
En signeret bevispakke for et vindue af et fartøjs log (kshana receiver-trust evidence) |
attach_evidence_timestamp |
Bind et RFC 3161-tidsstempeltoken (base64 af .tsr-bytes) til en pakke, i hukommelsen (kshana evidence attach-timestamp) |
verify_evidence_pack |
Verificér en pakke (kshana evidence verify) |
generate_training_nmea |
Syntetisk bro-NMEA 0183 til besætningstræning ud fra en nmea-scenario-TOML (jamming, positionsafdrift, tidsspoofing, replay-forsinkelse) med instruktørloggen (kshana-nmea-training/1) |
build_interference_map |
Et kort over GNSS-interferens ud fra ADS-B- eller AIS-positionsrapporter som CSV-tekst (højst 4 MiB) |
route_exposure |
Andelen af en rutes længde i degraded, ikke-degraded, ikke-vurderede og ikke-observerede celler i et eller flere interferenskort, eventuelt inden for et datointerval |
trust_telemetry |
En tillidsstrøm (JSON-linjer) eller et receiver-trust-resultat gengivet som Prometheus-tekst, CEF- eller LEEF-syslog-linjer eller en OTLP-JSON-nyttelast, med kshana trust-telemetry-kodererne |
jammertest_import |
Læs den publicerede Jammertest-testkatalog og transmissionsplan (NPRA/jammertest-plan, MIT) som planlagt reference (kshana jammertest import): ét testområdes slots bliver til modtagertillidshændelser med katalog-id og år i hver etiket. Planlagte slots, ikke optagne sendetider; intet kontaktfelt i planen læses. MODELLED. Se docs/JAMMERTEST.md. |
jammertest_score |
Scor en modtagerlog mod den tidsplan (kshana jammertest score): pr. test detektionsforsinkelse, oversete alarmer og tid til genopretning samt de falske alarmer uden for ethvert slot. Tekstlogs som log, binære (ubx, sbf) som log_base64. En signeret pakke kræver en nøgle: kommandolinje. Kun vejledende; MODELLED. |
fit_imu_log |
Accelerometer- og gyroparametre for scenarierne hybrid og fusion, tilpasset ud fra en stationær IMU-log (CSV eller EuRoC) ved hjælp af Allan-deviation, med en klar til indsætning [accel_classical]-tabel og logens SHA-256 (kshana imu-fit). Tekst ind, JSON ud; MODELLED. |
GNSS IQ (filer i arbejdsmappen; slået fra i HTTP-tilstand)
| Værktøj | Hvad det gør |
|---|---|
iq_signals |
Opsætningen af GNSS IQ-laget |
iq_info |
Beskriv én IQ-optagelse (in-phase og quadrature) i arbejdsmappen uden at behandle den |
iq_scene |
Generér en GNSS IQ-scene med flere satellitter i arbejdsmappen (kshana iq scene) |
iq_acquire |
FFT-erhvervelse (fast Fourier transform) af en eller flere PRN'er (pseudo-random noise codes) over en optagelse (kshana iq acquire), eventuelt bag front-end-trin |
iq_track |
Erhverv, og spor derefter med DLL/PLL/FLL-banken (delay-, phase- og frequency-locked loop) (kshana iq track), med løkkerne fra en `kshana.loop-desig |
iq_frontend |
Anvend modtagerens front-end og DSP til afhjælpning af interferens (digital signal processing |
iq_sweep |
Afspil én IQ-optagelse i arbejdsmappen på tværs af flere udformninger af sporingsløkker (kshana iq sweep) |
iq_monitor |
Kør overvågningerne for interferens og spoofing over en IQ-optagelse i arbejdsmappen (kshana iq monitor) |
iq_labfit |
Tilpas modellen for tab af lås i sporingsløkken til laboratoriekørsler (kshana iq labfit) ud fra et iq-labfit-scenarie, hvis logfiler er inline (text eller base64 |
iq_test_conditions |
Validér en kshana.test-conditions/1-fil givet som tekst, og returnér de opløste betingelser med deres hash |
iq_campaign |
Kør en kampagne med laboratoriereplay (kshana iq campaign) |
iq_campaign_status |
Fremdriften i en kampagnes outputmappe |
Compliance-kortlægning
| Værktøj | Hvad det gør |
|---|---|
compliance_report |
Kortlægningen til de offentlige rammeværker udfyldt ud fra resultatdokumenter givet som tekst (kshana compliance-report) |
compliance_mapping |
De statiske kortlægningstabeller (eller, med sources, de kildedokumenter, de citerer, med versioner og URL'er) som Markdown, indledt af den samme erklæring |
list_standards_packs |
Standardpakkerne (kshana standards-pack list): scorede scenariesæt til testprofilerne i DHS Resilient PNT-rammeværket, IMO MSC.1/Circ.1575 og ICAO Doc 9849 bilag F |
run_standards_pack |
Én pakke kørt mod tærskler fastsat på forhånd før kørslen: hver test MET, NOT MET eller NEEDS INPUT; MODELLED, vurderer intet produkt |
lunanet_afs_check |
LunaNet Augmented Forward Signal kontrolleret mod LNIS V5 AD1 bind A (LSIS-AFS V1.0): kodene mod de trykte tabeller, eller en symbolstrøm mod rammeformatet; LDPC og CRC-24Q for delrammer 2 til 4 er ikke verificeret |
create_round_trip_pack |
Den signerede rundturspakke fra laboratoriet: scenarie, kshana.test-conditions/1-dokument, modtagerlog og score bundet sammen med hash |
Benchmark
| Værktøj | Hvad det gør |
|---|---|
score_benchmark |
En indsendelse til kshana-bench scoret mod en referencefil, begge som JSON-tekst (kshana bench score, bench/SPEC.md): resultatfilen med specifikationsversion, opdeling, inputhashes og opgavens målinger. MODELLED; beskriver en log eller et korpus, aldrig et produkt. |
render_leaderboard |
kshana-bench-resultatfiler gengivet som den statiske leaderboard-side (HTML-tekst), hver især valideret først. |
Udgaver#
Hele motoren er gratis. Kshana Pro og skræddersyede studier er til programmer, der har brug for mere, og hver betalt vej starter med en henvendelse: her er ingen priser.
| Gratis | Kshana Pro | Skræddersyet undersøgelse | |
|---|---|---|---|
| Hvad det er | hele den åbne motor, alle 92 scenarietyper, ingen funktionsspærring | et proprietært overlay på den samme motor, under kontrakt | et MODELLED studie af dit systems PNT-robusthed, udført for dig |
| Licens | AGPL-3.0 (GNU Affero General Public License, version 3) eller en kommerciel licens | proprietær | kontrakt |
| Sådan kommer du i gang | installér eller åbn kshana.dev | anmod om en Pro-evaluering | anmod om et studie |
Hvad Pro er, med ordene fra docs/PRO.md:
En streng overmængde af åbne Kshana. Pro afhænger af den åbne motor som bibliotek og forgrener den aldrig. Hver åben scenariekind kører uændret i Pro, og et åbent scenarie kører i Pro helt uden licens.
Ingen ny fysik. Pro tilføjer ingen fysisk model og ændrer ingen. Hvert Pro-tal kommer fra kørsler af den åbne motor, så et Pro-tal er lige så troværdigt som den åbne scenariekind, det stammer fra, og aldrig mere.
Pro besvarer et programs næste spørgsmål: hvilken udformning der skal flyve (en udformningsoptimerer og dens Pareto-front), hvor sikkert svaret er (usikkerhed og følsomhed), og om missionen lever op til sine krav (et missionsdossier, sporbarhed af krav, afvejningsstudier, en regressionskontrol af scenarier, digitale tvillinger af ure, et studiedossier og en service i egne lokaler). Den holder også øje med en kampagne af tal og lader en pipeline fejle, når et tal bliver dårligere, afprøver kandidater til signalplaner mod de åbne satellitnavigationssignaler i begge retninger (spektrumkoeksistens) og sætter studier i kø i en jobservice i egne lokaler med et hashkædet leveringsregister. Hver af dem er beskrevet, med hvad den frembringer, og hvad den ikke gør, i docs/PRO.md. Intet, Pro frembringer, er en certificering, og et skræddersyet studie er heller ikke en certificering.
Hvad Kshana Pro læser fra den åbne motor, og support fra Ashforde® OÜ
Hvad Kshana Pro bygger på. Hver del af Pro arbejder ud fra den åbne motor og lader den være uændret:
- Udformningsoptimereren, usikkerhedsstudiet og missionsdossieret kører scenarier fra den åbne motor gennem motorens offentlige grænseflade og beregner hvert tal ud fra kørslernes resultater. Hvert output beholder det evidensniveau, VALIDATED, MODELLED eller PARTNER, som den åbne motor gav hvert tal, aldrig et højere.
- Digitale tvillinger af ure bruger den åbne motors urmodel og dens estimator af Allan-deviation: en tvilling kalibreres til enhedens publicerede Allan-budget og kontrolleres derefter ved at estimere tvillingens Allan-deviation med den åbne estimator.
- Afvejningsstudier kører hver arkitekturmulighed som et scenarie i den åbne motor, uændret, og rangerer mulighederne efter et kvalitetsmål læst fra hver kørsels resultat.
- Kampagneovervågning læser sine tal fra resultaterne af kørsler i den åbne motor af scenarierne i en pakke og sammenligner dem med den foregående bestående kørsel.
- Spektrumkoeksistens læser hvert fysisk tal fra kørsler i den åbne motor af kinds
leo-signalogconstellation-designog tilføjer kun summen over de satellitter, der er i sigte, og rangeringen af planerne. - Jobservicen i egne lokaler kører åbne scenarier og Pro-scenarier gennem den samme motor og gemmer hvert resultat, som kørslen returnerede det.
- Bevispakker registrerer for hver kørsel den scenariehash, som den åbne motor stempler på sit resultat, så et tal i en pakke kan gengives ved at køre dens scenarie igen.
- Systemudvikling og programværktøjer. Kshana Pros modelbaserede systemudvikling (MBSE) og programværktøjer kontrollerer et programs krav mod kørsler af den åbne motor: de importerer krav som kommaseparerede værdier (CSV) eller som en dokumenteret delmængde af Requirements Interchange Format (ReqIF) eller af tekst i Systems Modeling Language version 2 (SysML v2), evaluerer hvert acceptkriterium med dets enhed mod de værdier, en kørsel skrev, og frembringer en verifikationskrydsreferencematrix (VCRM), en SysML v2-model, en ændringspåvirkningsrapport og en offline bevispakke. De kører intet igen og genberegner intet, og læser kun det, den åbne motor publicerer: hver kørsels
result.json(de felter, et kriterium nævner, deres enheder, reproducerbarhedsstemplet med scenariehash, seed, motorversion og skemaversion samt kørslens mærkning og tal-niveauer), densreport.json(kind, reproducerbarhedspost og funktionsmærkninger), scenariefilen (dens hash, kind, seed og parametre), skemaet for feltenheder (hvert felts enhed, proveniens og evidensniveau) og verifikationsmatrixen (hver funktions mærkning VALIDATED, MODELLED eller PARTNER).
Support og professionelle tjenester#
Kshana er gratis og open source under AGPL-3.0 og professionelt udviklet og vedligeholdt af Ashforde® OÜ (Estland). Den åbne motor er komplet og kan bruges alene. Til organisationer, der har brug for mere, tilbyder Ashforde® OÜ:
- Kommerciel support og integration — indlejring af Kshana i din værktøjskæde, skræddersyede scenarier og prioriterede rettelser.
- Skræddersyede sensormodeller — kalibreret til din hardware, herunder eksportfølsomme robusthedsmodeller, der vedligeholdes i et privat overlay.
- Kshana Pro — proprietær modelbaseret systemudvikling (MBSE) og programværktøjer, der kontrollerer et programs krav mod kørsler af den åbne motor og frembringer en verifikationskrydsreferencematrix (VCRM), en model i Systems Modeling Language version 2 (SysML v2), en ændringspåvirkningsrapport og en offline bevispakke. De kører intet igen og læser kun motorens publicerede output: hver kørsels
result.jsonogreport.json, scenariefilen, skemaet for feltenheder og verifikationsmatrixens mærkninger (den fulde liste findes under Udgaver). - Kshana Pro-værktøjer til udformning, usikkerhed og mission — Pareto-fronten for et udformningsrum, usikkerhed og følsomhed over tusindvis af kørsler og et missionsdossier med én kommando med en verifikationsmatrix og en PDF; se
docs/PRO.md. - Kshana Pro: kampagneovervågning, spektrumkoeksistens og jobservice — en pipeline, der fejler, når et overvåget tal bliver dårligere, signalplaner afprøvet mod de åbne satellitnavigationssignaler i begge retninger og en jobkø i egne lokaler med et hashkædet leveringsregister; se
docs/PRO.md. - Undervisning og rådgivning om analyse af kvante-/klassisk PNT-ydeevne.
Dette er open core-modellen: motoren er og forbliver åbent licenseret; den bærende forretning er ekspertise, support og de proprietære udvidelser — ikke licensgebyrer. Kontakt contact@ashforde.org · ashforde.org.
Forskning#
Studier bygget på den åbne motor publiceres på arXiv. Hvert nævner den motorkommando, der ligger bag, så dets tal kan genskabes ud fra et committet scenarie eller studieeksempel.
| Artikel | Hvad den viser | Motorkommando |
|---|---|---|
| Anticipating the Optimism Gap: Predicting Distribution-Shift Degradation of RF-Impairment Detectors from In-Distribution Statistics arXiv:2606,22054 · doi:10.48550/arXiv.2606.22054 |
Faldet i en GNSS-interferensdetektors score, når forholdene skifter, kan forudsiges alene ud fra statistik inden for fordelingen, på en åben syntetisk testbænk og derefter på åbne feltoptagelser. | cargo run --release --example optimism_study -- paper-artifacts/optimism-study.json |
| A Conditional Timing Protection Level: Holdover-Limited Undetected Time Error Under GNSS Spoofing arXiv:2606,24210 · doi:10.48550/arXiv.2606.24210 |
En GNSS-modtager til tidssynkronisering under spoofing har ingen endelig ubetinget grænse for uopdaget tidsfejl, så artiklen angiver en betinget grænse, kalibreret på en optaget spoof over luften fra den offentlige JammerTest 2024-kampagne. | cargo run --release --example tpl_jammertest |
| How Stable Is a PNT Resilience Score? Decision-Instability of Single-Number Resilience Ratings under Framework-Aligned Weighting arXiv:2607,05415 · doi:10.48550/arXiv.2607.05415 |
En enkelt sammensat robusthedsscore er kun et stabilt grundlag for en beslutning, hvor én udformning dominerer; hvor udformninger konkurrerer, kan ændret vægtning alene ændre vinderen. | cargo run --release --example resilience_report -- paper-artifacts/resilience-study.json |
| Earth-baseline VLBI restores the observability of a lunar surface station in joint orbit-and-clock determination arXiv:2607,02566 · doi:10.48550/arXiv.2607.02566 |
Afstandsmåling inde i en månekonstellation efterlader en overfladestations absolutte position uobserverbar; en forsinkelse fra interferometri med meget lang baseline (VLBI) fra Jorden genopretter den, når konstellationen er tynd, og skærper den, når den er rig. | lunar-joint-od-clock-kind: kshana example lunar-joint-od-clock > s.toml && kshana s.toml |
| The Cost of Lunar South-Polar Geometry, and Surface Beacons as the Efficient Fix: A Dilution-of-Precision Analysis arXiv:2607,06212 · doi:10.48550/arXiv.2607.06212 |
Planlagte konstellationer på fire til seks satellitter giver dårlig geometri ved Månens sydpol, og nogle få afstandsmålende overfladebeacons afhjælper det langt billigere end flere satellitter. | lunar-beacon-kind: kshana example lunar-beacon > s.toml && kshana s.toml |
| Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever arXiv:2610,23871 · doi:10.48550/arXiv.2610.23871 |
Dilution of precision er udefineret for cislunar sporing med kun afstandsmåling, fordi hastigheden ikke kan observeres i et øjebliksbillede, så artiklen bruger observerbarhedsgrammatrixen på fire plane fjerne retrograde baner: kun afstandsmåling har rang 2 af 4 i et øjebliksbillede og kræver en bue på omkring 2,09 h for at blive fuldt observerbar, hvor konditioneringen forbedres, jo længere buen er; afstandsrate (Doppler) giver straks rang 4; og samtidig estimering af en station sammen med satellitternes tilstande og ure forbliver rangdeficient med én, medmindre en ekstern interferometrisk observabel tilføjes. Krav hører hjemme i budgetter for buelængde, konditionering og målingstype, ikke i DOP. | cislunar-observability-kind: kshana scenarios/cislunar-observability.toml (dens søsterkind cislunar-arc-recovery afprøver tærsklen med en uafhængig estimator med differenskvotienter) |
De tre studieeksempler skriver byte-deterministiske artefakter (faste seeds), der registrerer deres motorversion, seeds og en konfigurationshash. De tre artikler om Månen og cislunar bygger på månesuiten (hver dels evidensniveau står i verifikationsmatrixen); deres påstande om geometri og dilution of precision er desuden krydskontrolleret mod separate uafhængige referencer i tests/validate_p*.rs. Mere under Reproducerbare studieartefakter under Reference.
Citér#
Hvis du bruger Kshana i akademisk eller teknisk arbejde, bedes du citere den version, du brugte, med scenarie og seed. CITATION.cff rummer de maskinlæsbare metadata, og GitHub viser en knap "Cite this repository" ud fra dem. Hver udgivelse arkiveres på Zenodo; koncept-DOI'en (Digital Object Identifier) 10.5281/zenodo.20528627 peger altid på den seneste version.
Baweja, C. (2026). Kshana — a PNT-resilience simulator with quantum-sensor performance models. Ashforde OÜ. https://doi.org/10.5281/zenodo.20528627
Artiklerne ovenfor:
Baweja, C. (2026). Anticipating the Optimism Gap: Predicting Distribution-Shift Degradation of RF-Impairment Detectors from In-Distribution Statistics. arXiv:2606,22054. https://doi.org/10.48550/arXiv.2606.22054
Baweja, C. (2026). A Conditional Timing Protection Level: Holdover-Limited Undetected Time Error Under GNSS Spoofing. arXiv:2606,24210. https://doi.org/10.48550/arXiv.2606.24210
Baweja, C. (2026). How Stable Is a PNT Resilience Score? Decision-Instability of Single-Number Resilience Ratings under Framework-Aligned Weighting. arXiv:2607,05415. https://doi.org/10.48550/arXiv.2607.05415
Baweja, C. (2026). Earth-baseline VLBI restores the observability of a lunar surface station in joint orbit-and-clock determination. arXiv:2607,02566. https://doi.org/10.48550/arXiv.2607.02566
Baweja, C. (2026). The Cost of Lunar South-Polar Geometry, and Surface Beacons as the Efficient Fix: A Dilution-of-Precision Analysis. arXiv:2607,06212. https://doi.org/10.48550/arXiv.2607.06212
Baweja, C. (2026). Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever. arXiv:2610,23871. https://doi.org/10.48550/arXiv.2610.23871
Licens#
Kshana er dobbeltlicenseret: GNU AGPL-3.0-only (LICENSE) eller en kommerciel licens fra Ashforde® OÜ til lukket integration, som AGPL ikke passer til. LICENSING.md forklarer, hvilken der gælder. Bidrag licenseres indgående under AGPL og giver også Ashforde® OÜ ret til at medtage dem i den kommercielle udgave; underskriv hver commit med git commit -s (se CONTRIBUTING.md). "Kshana" og dets mærker er varemærker tilhørende Ashforde® OÜ: licensen dækker koden, ikke navnet, så omdøb venligst forks.
Reference#
Det lange stof, foldet sammen. Hvert dokument er opført i Dokumentation.
Installation og bygning fra kildekode
Installation og bygning#
Kræver en Rust-værktøjskæde (≥ 1,88, rust-version i Cargo.toml; udviklet på 1,93).
git clone https://github.com/ashfordeOU/kshana
cd kshana
cargo build --release
cargo test # all tests pass
Brug: kommandolinjen i sin helhed
Brug#
Kør et vilkårligt scenarie; CLI'en fordeler efter scenariets kind-felt og skriver <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html og <scenario>.report.json ved siden af det — plus <scenario>.table.csv for de kinds, der publicerer en tabel. Rapporten (en HyperText Markup Language (HTML)-side og et JSON-dokument med samme indhold) indeholder et resumé for ledelsen, hvert input med sin enhed, resultaterne og diagrammerne, en kampagnes sweep-, Monte Carlo- eller kædetabeller, en tidslinje over hændelser, mærkningen VALIDATED / MODELLED / PARTNER og kilden for hver funktion, kørslen brugte, hvad der ikke er modelleret, og en reproducerbarhedspost (motorversion, Secure Hash Algorithm 256-bit (SHA-256)-digests, seed, platform og den nøjagtige kommando). Den udskrives til en ren PDF-fil (Portable Document Format) fra browseren på A4- eller Letter-papir; motoren skriver ingen PDF selv. Se docs/REPORTS.md.
cargo run -- scenarios/clock-holdover.toml
cargo run -- scenarios/imu-deadreckoning.toml
cargo run -- scenarios/timetransfer.toml
cargo run -- scenarios/hybrid-pnt.toml
cargo run -- scenarios/orbit-gnss-challenged.toml
cargo run -- scenarios/orbit-sgp4-gps.toml
cargo run -- scenarios/orbit-rinex.toml
cargo run -- scenarios/integrity-raim.toml
# Export a propagated constellation to an SP3-c precise-ephemeris file:
cargo run -- scenarios/orbit-sgp4-gps.toml --export-sp3 gps.sp3
# Export the constellation's mean elements to a CCSDS OMM catalogue (one OMM
# message per TLE-defined satellite, with its real NORAD id / COSPAR designator):
cargo run -- scenarios/orbit-sgp4-gps.toml --export-omm gps.omm
# Export the velocity-carrying state to a CCSDS OEM 2.0 ephemeris (GMAT/Orekit/STK):
cargo run -- scenarios/orbit-sgp4-gps.toml --export-oem gps.oem
# Export the geometry for a globe, a map or a mission-analysis tool: CZML, KML,
# GeoJSON, STK .e, or SigMF for the spectrum kind (every format that applies):
cargo run -- scenarios/jamming-demo.toml --export all
--export <czml|kml|geojson|stk|sigmf|all|list> skriver CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON (Request for Comments 7946), Ansys STK (Systems Tool Kit) .e-efemerider og SigMF-optagelser (Signal Metadata Format) ved siden af scenariet, og --import-route <route.geojson> fører en GeoJSON-linje ind i de kinds, der flyver et spor. Hvert format valideres mod sin publicerede specifikation, og et scenarie, et format ikke gælder for, siger hvorfor: se docs/INTEROP.md.
Andre CLI-tilstande — lint et scenarie, tilfør reelle jordorienteringsdata eller kør en hel suite:
# Lint a scenario without running it (checks the kind + required fields):
cargo run -- --validate scenarios/integrity-raim.toml
# Feed a real IERS Earth-orientation file (finals2000A) for frame precision:
cargo run -- scenarios/orbit-sgp4-gps.toml --eop tests/fixtures/agency/eop/finals2000A_2022001.txt
# Run a SUITE of scenarios into one aggregated, stamped study artifact
# (writes <suite>.study.json + <suite>.study.html next to the manifest):
cargo run -- --study scenarios/quantum-pnt-demonstrator.suite.toml
# Animate a run's time series: an animated SVG, a self-contained HTML player, and a
# numbered SVG frame sequence with manifest.json (see docs/ANIMATION.md):
cargo run -- scenarios/campaign-jam-spoof-holdover-integrity.toml --animate all
Animationseksport. --animate svg|html|frames|all skriver <scenario>.animation.svg (Cascading Style Sheets (CSS)-keyframes, intet script), <scenario>.animation.html (afspil, pause, scrub, hastighed og synkroniserede paneler, uden eksterne aktiver) og <scenario>.frames/ (frame_0000.svg, … plus manifest.json med billeder pr. sekund og varighed). En kampagne afspiller sine faser og alarmer, en spektrumkørsel sit vandfald; temaet følger prefers-color-scheme, og prefers-reduced-motion viser det færdige billede. Den gengiver kørslens egne sampler, byte-identisk ved ny kørsel, og tilføjer ingen evidens. Se docs/ANIMATION.md.
Et suite-manifest er en lille TOML-fil (Tom's Obvious, Minimal Language) — et title og et scenarios = [ … ]-array af scenariestier — som motoren kører efter hinanden, idet hvert resultat (med dets mærkning MODELLED / VALIDATED) samles i ét selvbeskrivende studieartefakt. Se scenarios/quantum-pnt-demonstrator.suite.toml.
Rolle i interoperabilitet. Kshana er ydeevnesimuleringslaget, der sidder ved siden af efterbehandlingsværktøjskæden og ikke erstatter den: før dens RINEX-output ind i RTKLIB eller gLAB for en positionsløsning, og brug dens SP3-output som præcist banedataprodukt til værktøjer som Ginan — Kshana svarer på hvilken robusthed en given PNT-arkitektur giver, før du har reelle signaler, i formater, som disse værktøjer allerede indlæser (--export-sp3, eller export_sp3 = true i et orbit-scenarie, skriver <scenario>.sp3). Den samme bane kan udgives som standardsporets CCSDS OMM-middelelementer (--export-omm, eller export_omm = true, skriver <scenario>.omm) — én OMM 502,0 KVN-meddelelse (keyword = value notation) pr. TLE-defineret satellit, med hvert objekts reelle NORAD-katalognummer (North American Aerospace Defense Command), COSPAR-internationale betegnelse (Committee on Space Research) og epoke, til enhver OMM-bevidst forbruger i stedet for et specialbygget to-linjers elementsæt.
Eksempel på output (urets holdover — bemærk, hvordan kvalitetsmålene for integritet og sikkerhed rapporteres):
scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote scenarios/clock-holdover.result.json, scenarios/clock-holdover.chart.svg, scenarios/clock-holdover.report.html, and scenarios/clock-holdover.report.json
Det optiske urs 95. percentil (p95) af tidsfejl er 1.20e-4 ns: oversigten udskriver små værdier med betydende cifre i stedet for at afrunde dem til 0.0. security viser n/a (no attack), fordi dette scenarie ikke konfigurerer noget angreb, så der intet er at opdage. JSON-resultatet rummer stadig hvert urs analytiske grænse for spoof-detekterbarhed i fom.security (0,997 for det optiske ur, 0,000 for det chipskala-atomur, hvis egen støj over overvågningsvinduet overstiger specifikationen på 20 ns), og dets figure_tiers-blok markerer dette tal applicable: false. Scenariekinden spoof scorer detektion mod et indsprøjtet angreb. figure_tiers giver også hvert rapporteret tal dets verifikationsniveau — VALIDATED (kontrolleret mod en ekstern uafhængig reference) eller MODELLED — og den række i verifikationsmatrixen, niveauet læses fra. Bane-scenariet rapporterer desuden en geometriblok — andelen af sampler med en positionsbestemmelse og bedste/median position dilution of precision (PDOP) og positionsnøjagtighed — ved siden af urets resultat.
Læs disse to tal omhyggeligt.
securityer en analytisk grænse for spoof-detekterbarhed udledt af hvert urs stabilitet — den har kun mening over for et konfigureret spoofingscenarie og er ikke en RAIM-detektor med flere satellitter.integrityer her filterets selvkonsistens (andelen af udfaldssampler inden for dets egen k-sigma-grænse), ikke et integritetstal for luftfart i form af HPL/VPL. Sedocs/INTEGRITY.md.Til ægte modtagerautonom integritet kører scenariekinden
integrity(scenarios/integrity-raim.toml) ægte snapshot- og løsningsseparations-RAIM (ARAIM-lignende) over den propagerede konstellationsgeometri: den beregner vandrette/lodrette beskyttelsesniveauer (HPL/VPL) pr. epoke og rapporterer andelen af epoker, der ligger inden for de konfigurerede alarmgrænser, med et Stanford-integritetsdiagram til klassifikation af fejl mod PL (protection level).
Reproducerbare studieartefakter
Fire åbne studier genskaber hver et byte-deterministisk artefakt (fast seed) fra én kommando — tallene bag studierne af kvante- mod klassisk krydsningspunkt, optimismegab ved RF-forstyrrelser, scoring af PNT-robusthed og beskyttelsesniveau for tidssynkronisering:
# Quantum-vs-classical resilience crossover map (writes paper/crossover/*.json):
cargo run --release --bin crossover_study -- paper/crossover
# RF-impairment optimism-gap study (13-detector panel, scaling laws, LOO predictor):
cargo run --release --example optimism_study -- paper-artifacts/optimism-study.json
# Framework-aligned PNT-resilience scoring + decision-instability study:
cargo run --release --example resilience_report -- paper-artifacts/resilience-study.json
# Conditional Timing Protection Level, calibrated on a real recorded spoof:
cargo run --release --example tpl_jammertest
Hvert artefakt registrerer sin motorversion, sine seeds og en konfigurationshash og bærer en ærlig mærkning MODELLED/VALIDATED. Probes med reelle data (*_probe) kører den samme pipeline over optagelser, du selv leverer lokalt; ingen datasæt følger med i repoet. Studiet af optimismegabet ved RF-forstyrrelser er skrevet op i preprinten arXiv:2606,22054, og det betingede beskyttelsesniveau for tidssynkronisering (tpl_jammertest ovenfor) i preprinten arXiv:2606,24210 (se Citér).
De publicerede studier af månens PNT (arXiv:2607,06212 DOP med overfladebeacons, arXiv:2607,02566 VLBI-observerbarhed og arXiv:2610,23871 cislunar observerbarhed af buelængde) har deres påstande om geometri, dilution of precision, realtidsforudsigelse af referencesystem / jordorienteringsparametre (EOP), fjerne retrograde baner og RF-afstandsmåling uafhængigt krydskontrolleret i tests/validate_p*.rs mod separate uafhængige referencer (scipy.special.j1, en uafhængig NumPy-DOP-løsning med (HᵀH)⁻¹, en NumPy-genindlæsning af de samme IERS finals2000A-rækker og NASA/JPL's Three-Body Periodic Orbit Database). Det er yderligere regressionskontroller over den modellerede månesuite; de ændrer ikke antallet i den maskinkontrollerede matrix.
Scenarieformat
Scenarieformat#
Scenarier er deklarativ TOML. Et kind på øverste niveau vælger pakken — i alt halvtreds (clock er standard, hvis det udelades): inertial, timetransfer, hybrid, hybrid-ukf, fusion, gnss-ins, orbit, ephemeris, gnss-sim, integrity, lunar-integrity, lunar-time-offset, spoof, spoof-detect, jamming, sweep, sweep-nd, gravity-map, terrain-nav, terrain-slam, combined-altpnt, pvt, mars-pnt, impairment-eval (testbænk til evaluering af RF-forstyrrelsesdetektion med maskinlæring — mærket syntetisk korpus + detektoruafhængig ROC/AUC-harness + optimismegab i/uden for fordelingen), quantum-trade (afvejning mellem kvante og klassisk PNT med indlæsning af målt ADEV + robusthedskuvert uden GNSS; MODELLED), space-weather (sol-/geomagnetiske indekser + Jacchia-71 eksosfærisk temperatur + aktivitetsdreven termosfærisk tæthed oven på den statiske atmosfære; MODELLED), oem-interop (CCSDS OEM-import/rundturs-bro til GMAT/Orekit/STK-efemerider; MODELLED), missionsanalysetrioen launch-window (tolegemers opsendelsesazimut / planskift / muligheder), reentry (Allen-Eggers ballistisk genindtrængningskorridor), eo-coverage (EO-sporbredde / GSD / adgang / genbesøgsgeometri), space-packet (CCSDS 133,0 TM/TC — telemetri/telekommando — Space Packet-indramning — nøjagtigt bitlayout, rundtur verificeret) og attitude-budget (3-DOF-tyngdegradientmoment + RSS-budget for pegefejl), passes (forudsigelse af jordstationspassager ved opgang/nedgang — AOS/TCA/LOS, maksimal elevation, adgang) og link-budget (envejs CCSDS/DSN-linkligning — FSPL / Eb·N₀ / margin / lukning); telecom-timing (tidsfejl under holdover, MTIE og TDEV kontrolleret mod ITU-T-masker); spectrum (hele GNSS L-båndet som én effektspektraltæthed: et vandfald over frekvens og tid under en scriptet tidslinje for en jammer med kontinuert bølge, smalbånd, chirp eller matchet støj, jammer-til-signal-forhold pr. bånd og effektiv bærebølge-til-støjtæthed ud fra spektralseparationskoefficienten samt Signal Metadata Format (SigMF)-optagelse som input og output med Welch-spektralestimater; signalspektrene VALIDATED mod lærebogsværdier, jammerscenariet MODELLED; se docs/SPECTRUM.md; den samme kind tegner UHF-, S- og C-båndspaneler med udformede signaler fra lav jordbane); leo-signal (signaludformninger til positionering, navigation og tidssynkronisering fra lav jordbane for ethvert system: båndbegrænsede spektre, kodesporings-jitter og afstandsnøjagtighed, erhvervelsessøgning og -tid, spektralseparation mod GPS og Galileo, jammertolerance og en afvejning mellem UHF og C-bånd, ud fra offentlige forudindstillinger som Xona Pulsar, Iridium, Starlink og CentiSpace eller inline-udformninger; de lukkede former og LEO-Doppler VALIDATED, udformningerne MODELLED; se docs/LEO-SIGNAL.md); solar-system (Solen, planeterne, Pluto, Månen og syv store måner ved én epoke — positioner, konstanter, lystider og banespor; planetpositioner VALIDATED mod JPL Horizons) og body-pnt (positionering omkring hvert af disse legemer med en lokal navigationskonstellation og et dybrumslink fra Jorden; MODELLED); campaign (eksisterende kinds sammensat til en kædet missionstidslinje med tilstand overdraget mellem faser, en parametersweep, et seedet Monte Carlo-ensemble eller flere scenarier under én fælles betingelse; MODELLED, se docs/CAMPAIGNS.md); constellation-design (Walker-delta- og -stjernemønstre, elementlister og multi-shell-udformninger med forudindstillinger for GPS, Galileo, BeiDou og GLONASS samt dækning og dilution of precision over et bredde-/længdegradsgitter; generatoren og GPS' globale DOP VALIDATED mod de publicerede servicedokumenter, se docs/CONSTELLATION-DESIGN.md); leo-pass (en passage af en satellit til positionering, navigation og tidssynkronisering (PNT) i lav jordbane (LEO) og dens linkbudget bånd for bånd, fra enhver konstellation og ethvert signaldesign: synsvinkler, Doppler og Doppler-rate, ITU-R-tab ved regn, gas, scintillation og indtrængning i bygninger, bærebølge-til-støjtæthed mod de MEO GNSS-satellitter, der er i sigte, første ordens ionosfære og ionosfærefrie par og et lavenergibudget for positionsbestemmelse, ionosfærelodning fra hvert båndpar og spoofingovervågninger ved Doppler- og passagegeometrikonsistens og ved konsistens på tværs af bånd; ITU-R-leddene og Doppler-kuverten for statisk bruger VALIDATED, passagen MODELLED, se docs/LEO-PASS.md); leo-navmsg (udsendt efemeride- og urmeddelelse fra en PNT-satellit i lav jordbane (LEO), for enhver bane og bærebølge: en tilpasser fra en integreret reference-bane til Galileos Kepler-sæt, det sæt med langs-banen-, på-tværs- og radiale korrektionspolynomier, Liu et al. 2025 22-parametermodellen eller ATOMIC's nulur-ECEF-polynomium; signal-i-rummet-afstandsfejl (SISRE) mod tilpasningsinterval og opdateringsperiode, en kontrol af kontinuitet ved opdatering midt i passagen, Kshanas egen dokumenterede binære ramme med en CRC-24Q-cyklisk redundanskontrol og et kvantiseringsbudget samt en blok i RINEX-4-stil mærket som en Kshana-udvidelse; SISRE-vægtene, Galileo-brugeralgoritmen og CRC-24Q VALIDATED, tilpasningerne MODELLED; valgfrie forudindstillinger for Xona Pulsar, Iridium, Starlink, CentiSpace, et repræsentativt C-båndssystem, ATOMIC og Celeste IOD; se docs/LEO-NAVMSG.md); trioen med fusioneret MEO + LEO PNT leo-pvt (Doppler-positionering ud fra afstandsrate fra lav jordbane (LEO), fælles GNSS + LEO-pseudoafstandspositionsbestemmelser med intersystembiaser og DOP mod antallet af LEO-satellitter, polar- og arktisk dækning og LEO-tidsoverførsel til UTC — over enhver konstellation, med valgfrie forudindstillinger som Xona Pulsar-, Iridium- og Starlink-signaler af opportunity; LEO-Doppler-kuverten VALIDATED mod publicerede Iridium- og Xona-tal), leo-ppp (konvergens af præcis punktpositionering med kun GNSS og med LEO-augmentering, sammenlignet med Li et al. 2019) og ntn-positioning (5G-positionering via ikke-terrestriske net ud fra Cramér-Rao-grænsen for signalets båndbredde), MODELLED bortset fra den kuvert, se docs/LEO-PNT-FUSION.md; leo-pnt-chain (ét LEO-PNT-system fra ende til anden: en leo-signal-udformning båret af et leo-pass-bånd, passagens C/N0 og navigationsmeddelelsens signal-i-rummet-afstandsfejl overdraget til en fusioneret leo-pvt-positionsbestemmelse og leo-ppp-konvergens, hver overdragelse opført; MODELLED, se docs/LEO-PNT.md, som også er oversigten over hver LEO-PNT-kind og hvert scenarie, herunder robusthedskampagnerne, ét scenarie pr. eksperimentfokusområde og ét pr. slutbrugervertikal); månens PNT-suite lunar-vlbi, lunar-joint-od-clock, lunar-frame-realisation, moonlight-service-volume, lunar-differential-pnt, lunar-interop-export; den kvanteunderstøttede PNT-demonstrator quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; og forskningskinds for signalsikkerhed, cislunar og lagdelt robusthed lunar-attack-surface, realtime-frame-eop, lunar-time-budget, hybrid-optical-rf, cislunar-observability, conflict-resilience — missionsanalysetrioen og disse senere kinds alle MODELLED (hver med en valideret lukket kerne; se matrixen). Fælles felter: seed, et [time]-gitter, en [gnss]-tilgængelighedstidslinje (udfaldsdriveren) og blokke pr. sensor med provenance-strenge, der angiver kilden til hvert tal. Eksempel (ur):
seed = 42
threshold_ns = 20.0
[time]
step_s = 10.0
duration_s = 7200.0
[gnss]
windows = [
{ t0 = 0.0, t1 = 600.0, state = "nominal" }, # 10 min GNSS sync
{ t0 = 600.0, t1 = 7200.0, state = "denied" }, # ~1.8 h outage
]
[clock_quantum]
id = "optical-sr-lattice"
provenance = "Strontium optical lattice clock, space-oriented goal sigma_y(1s)=1e-15 (arXiv:1503.08457)"
y0 = 5.0e-17
q_wf = 1.0e-30 # white FM: q_wf = sigma_y(1s)^2
q_rw = 0.0 # random-walk FM
drift = 0.0 # linear aging (per second)
[clock_classical]
id = "csac-sa45s"
provenance = "Microchip SA65 / SA.45s CSAC datasheet sigma_y(1s)=3e-10"
y0 = 5.0e-10
q_wf = 9.0e-20
q_rw = 0.0
drift = 0.0
Valgfrie felter (slået fra, når de mangler): et ur kan tilføje flicker_floor (1/f FM — frekvensmodulation — Allan-bundgrænse); en inertisensor kan tilføje gyro_bias og q_arw (gyrobias og vinkelrandomwalk) samt bias_instability og q_aa (Allan-bundgrænsen for biasustabilitet og accelerationsrandomwalk) — tilsammen et enkeltakset (1-DOF) fejlbudget for accelerometer (VRW/ARW — hastigheds-/vinkelrandomwalk — og biasustabilitet). Det er det fejlbudget, som den medfølgende pakke af scenariet inertial kører. Særskilt rummer biblioteket nu en verificeret 3-akset strapdown-navigator (src/inertial/{attitude,mechanization,imu_errors}.rs): kvaternionattitude med coning/sculling-kompensation, en fuld NED-mekanisering (led for jordrotation og transportrate, WGS-84 Somigliana-tyngde) og en deterministisk IMU-fejlmodel, hvor skalafaktor, fejljustering, g-følsomhed, kvantisering og rate-ramp er modelleret (IEEE Std 952-1997, IEEE's standard for gyrospecifikation og testprocedure, §A.2; Groves 2013 §4,3). Den 3-akse-vej er nu koblet til en kørbar løst koblet GNSS/INS-pakke (kind = "gnss-ins"): et 15-tilstands fejltilstands-EKF disciplinerer strapdown-løsningen mod støjfyldte positionsbestemmelser, mens GNSS er oppe, og kører derefter frit gennem udfaldet og rapporterer den fusionerede vandrette fejl mod den åbne sløjfes frie INS-kørsel. En tæt koblet pseudoafstands-opdatering er også tilgængelig (den danner innovationen i afstandsdomænet, så den fortsætter med at korrigere med færre end fire satellitter). Et scenarie med urets holdover kan tilføje runs (> 1) for at køre et Monte Carlo-ensemble — hvert kvalitetsmål rapporteres så som et gennemsnit med en spredning fra 5. til 95. percentil, og diagrammet skraverer fejlens konfidensbånd (se scenarios/clock-ensemble.toml).
Et fusion-scenarie (samme blokke som hybrid) kører to uafhængige Kalman-estimatorer — én for urets tilstand, én for positionstilstanden — disciplineret af GNSS og hjulpet af optisk tidsoverførsel, og rapporterer et samlet kvalitetsmål for holdover. De to blokke deler ingen krydskovarians: det er et stablet par fejlbudgetter, ikke et ægte koblet fælles filter for ur+position (krydskovarians mellem blokkene står på køreplanen). Se scenarios/fusion-pnt.toml.
Et spoof-scenarie indsprøjter en tidsspoof — én af fire [attack.shape]-kinds (linear_ramp, step_jump, meaconing, replay; en blot rate_ns_per_s accepteres stadig som en lineær rampe) — og kører hvert urs spoofdetektor. Detektoren er en tosidet χ²₁-energitest / Neyman–Pearson-test på urstøttet overvågningsstatistik: tærsklen fastsættes ud fra et mål for falsk alarm target_pfa, og sandsynligheden for mistet detektion P_md rapporteres både på lukket form og ved Monte Carlo (mc_runs forsøg pr. hypotese — de to stemmer overens inden for nogle få ×1/√N). Kvalitetsmålet for sikkerhed er 1 − P_md ved den operationelt skadelige (specifikations-)størrelse, så et roligt ur, der fanger en spoof af specifikationens størrelse, scorer ≈ 1, og et støjfyldt ur, der ofte overser den, scorer lavere (se scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).
Et gnss-sim-scenarie er en simulering i måledomænet: for hver synlig satellit syntetiserer det pseudoafstanden ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath og L1-Doppler med Klobuchar-ionosfæren for enkelt frekvens ([iono], IS-GPS-200 §20.3.3.5.2.5) og Saastamoinen-zenittroposfæren projiceret med Niell (1996)-afbildningsfunktionen ([tropo]). Residualerne forsyner snapshot-RAIM med HPL/VPL pr. epoke, og hver satellits pseudoafstand, Doppler, C/N₀ og iono-/tropo-korrektioner udsendes i JSON-arrayet gnss_measurements. Det er en fremadrettet simulator (den genererer målinger ud fra en kendt reference), ikke en modtager/solver — en kørsel uden støj gengiver geometri plus korrektionerne til under en millimeter (se scenarios/gnss-sim-raim.toml).
Et jamming-scenarie modellerer RF-interferens som et linkbudget: en [jammer] (ECEF-position, sendt power_dbw, type) hæver jammer-til-signal-forholdet ved en [receiver], der iagttager en Walker-[constellation]. Ud fra geometrien (frirumstab og modtageantennens forstærkning pr. retning) beregner det hver satellits J/S, den effektive C/N₀ via standardligningen for anti-jam (afspredningsprocesgevinst × spektralseparationsfaktoren Q; Kaplan & Hegarty §9,4), og markerer tab af lås under en konfigurerbar sporingstærskel — og rapporterer et kvalitetsmål for availability_under_jamming. En bredbåndsjammer på 10 W ved 1 km nægter modtageren helt (J/S ≈ 72 dB); den samme jammer ved 100 km forringer kun linkene (se scenarios/jamming-demo.toml).
Et sweep-scenarie kører et afvejningsstudie: det varierer én parameter (threshold_ns, duration_s, quantum_q_wf eller classical_q_wf) fra start til stop over steps punkter på en lin- eller log-scale, registrerer en metric (f.eks. holdover_s) for begge ure og tegner de to kurver. Basisscenariet placeres under [base] (se scenarios/sweep-clock-stability.toml).
Et sweep-nd-scenarie generaliserer dette til enhver pakke og et vilkårligt antal akser: det varierer punkterede TOML-nøgler i et [base]-scenarie (af enhver kind) over det kartesiske produkt af [[axes]], kører hvert gitterpunkt igen og registrerer metrics angivet som punkterede JSON-stier ind i resultatet (f.eks. classical.fom.holdover_s). Det virker for hver pakke, fordi det opererer i grænsefladen mellem TOML og resultat; native kørsler evaluerer gitteret parallelt (ingen ekstra afhængighed, wasm falder tilbage til sekventielt), og outputtet er deterministisk og rækkevist (se scenarios/sweep-nd-inertial.toml).
Et orbit-scenarie udleder [gnss]-tidslinjen ud fra geometri i stedet for at forfatte den — angiv en [user]-bane, en [constellation], en elevationsmask_deg og de to urblokke. Det rapporterer også positionsnøjagtighed ud fra satellitgeometrien; den valgfrie sigma_uere_m (1-sigma brugerækvivalent afstandsfejl, standard 1 m) skalerer position dilution of precision til en positionssigma. Brugerbanen kan gøres excentrisk med eccentricity og argp_deg, og j2 = true tilføjer sekulær drift fra Jordens fladtrykthed (se scenarios/orbit-molniya.toml). Konstellationen kan i stedet være en reel: giv [constellation] en tle-blok med to-linjers elementsæt, og satellitterne parses ud fra den (se scenarios/orbit-real-tle.toml). Tilføj en eller flere [[constellations]]-blokke for multi-GNSS (f.eks. GPS + Galileo; se scenarios/orbit-multignss.toml):
kind = "orbit"
seed = 7
threshold_ns = 5.0
mask_deg = 10.0
sigma_uere_m = 1.0 # optional; position sigma = position-DOP * this
[time]
step_s = 60.0
duration_s = 86400.0
[user] # spacecraft (altitude in km, angles in deg)
altitude_km = 8000.0
inclination_deg = 0.0
[constellation] # Walker-delta GNSS (GPS-like)
altitude_km = 20180.0
inclination_deg = 55.0
planes = 6
sats_per_plane = 4
phasing_f = 1.0
[clock_quantum] # ... as above
[clock_classical] # ... as above
GPS-nægtede alt-PNT-kinds navigerer helt uden GNSS og afstemmer en målt feltsekvens mod et kort gennem et partikelfilter. Et gravity-map-scenarie flyver et spor gennem et tyngdeanomalifelt i kugleharmoniske og genskaber det ud fra aflæsningen fra et koldatom-gravimeter (scenarios/gps-denied-gravity-nav.toml); et terrain-nav-scenarie gør det samme mod en SRTM-højdemodel (DEM) (TERCOM/SITAN, scenarios/terrain-nav.toml); og et combined-altpnt-scenarie fusionerer tyngde + IGRF-magnetisme + terræn i ét filter (scenarios/combined-altpnt.toml).
Et lunar-integrity-scenarie evaluerer cislunar PNT: det kører en ARAIM-beskyttelsesniveaupassage ved Månens sydpol mod et LunaNet/LNIS-relæsæt og rapporterer ærligt integritetsgabet — en lunar σ_URE på ~30 m driver beskyttelsesniveauet langt over en alarmgrænse på 50 m, så servicen er utilgængelig under integritetsregler i luftfartens stil (scenarios/lunanet-araim.toml).
Et lunar-time-offset-scenarie rapporterer den relativistiske ur-rate mellem Jorden og Månen — grundlaget for en månekoordinattidsskala (LTC/TCL). En post-newtonsk identitet ud fra første principper summerer forskellen i selvpotentiale (IAU L_G-geoidepotentiale minus Månens overfladeselvpotentiale) og Månens kinetiske led (andenordens Doppler) til en sekulær rate på ≈ 57 µs/dag, rapporteret med det publicerede bånd på 56–59 µs/dag; det giver også den akkumulerede LTC−TT-forskydning over en horisont og et ensemble med invers varians (et lunart papirur). MODELLED — hovedtallet er referenceafhængigt (jordens geoide mod månens selenoide, middelvindue), hvorfor der rapporteres et bånd og ikke et enkelt certificeret tal (scenarios/lunar-time-offset.toml).
Se scenarios/ for mindst ét udarbejdet eksempel på hver type (92 typer, 193 scenariefiler .toml + 1 suitemanifest — flere typer leveres med mere end ét eksempel). Ikke hver type har en fil opkaldt efter sig: lunar-integrity → scenarios/lunanet-araim.toml og gravity-map → scenarios/gps-denied-gravity-nav.toml er to af flere sådanne. Vis de fordelbare typer når som helst med cargo run -- --validate <file> fejl, Python-funktionen list_kinds() eller MCP-værktøjet list_scenario_kinds.
Output
Output#
Resultatartefaktet er versioneret, selvbeskrivende JSON: tidsserier pr. trin, de scorede kvalitetsmål, de aktive modelspecifikationer (med proveniens), seed, en scenariehash — så ethvert diagram kan genskabes ud fra filen — og for hvert ur en adev_curve ([{tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi}]): den overlappende Allan-deviation over oktavfordelte middelværdityder — den gængse måde at aflæse et urs stabilitet på — nu med et støjtypespecifikt 95 %-konfidensbånd pr. punkt (postens potenslovstype identificeres ud fra dens modificerede Allan-hældning, og χ²-intervallet bruger de tilsvarende effektive frihedsgrader fra NIST SP 1065). Browserens playground gengiver det som et log-log-diagram "Clock stability (ADEV)". (MDEV, TDEV og HDEV er tilgængelige som bibliotekets estimatorer; den eksporterede resultatkurve er den overlappende ADEV.) Hvert felt, med enheder og en kildehenvisning, er dokumenteret i docs/SCHEMA.md.
Hvert diagram er selvbeskrivende. Browserens playground, CLI'ens *.chart.svg-eksport og HTML-resultatkortet (HyperText Markup Language) stempler alle hvert diagrambillede med en fodlinje, der lyder Kshana v<version> · scenario <hash> · kshana.dev. scenario <hash> er de første 12 hex-tegn af kørslens scenariehash — en SHA-256-digest (den 256-bit Secure Hash Algorithm) over den kanoniske scenariedefinition (seed, tærskler, modelparametre, GNSS-vinduer, …); integritets- og månerapporterne, som ikke bærer nogen egen hash, falder tilbage til en SHA-256 af scenariets kilde. Den er det samme fingeraftryk, som vises i enlinjesammenfatningen og resultat-JSON, så et gemt eller indsat diagram altid bærer sin version, det nøjagtige scenarie, der frembragte det (til bit-for-bit-gengivelse), og kilden — ændr et input, og hashen ændres.
Kvalitetsmålene følger de gængse operationelle kvalitetsmål for PNT:
| Kvalitetsmål | Hvordan Kshana beregner det |
|---|---|
| Tidsydelse (ur-/banepakker) | RMS og 95. percentil af urfasefejl over udfaldet, i nanosekunder (timing_rms_ns) — et mål for tidssynkronisering, ikke for position |
| Positioneringsydelse (inerti-/hybridpakker) | RMS og 95. percentil af 1-DOF-positionsfejl over udfaldet, i meter (pos_rms_m); enkeltakset. En enkelt kørsel markeres monte_carlo: false; angiv runs = N for et Monte Carlo-ensemble, der rapporterer hvert måls gennemsnit, spredning og bootstrap-95 %-CI (konfidensinterval). Stadig ikke en 2D-CEP/2DRMS (circular error probable / twice the distance root mean square) eller DOP-vægtet nøjagtighed (de kræver 3-akse-modellen — på køreplanen) |
| Autonomi | holdover-varighed — tid inden for specifikationen efter tab af GNSS (kvantiseret til gitteret: en nedre grænse) |
| Robusthed | hældning på fejlvæksten under udfaldet |
| Tilgængelighed | andelen af kørslen med en løsning inden for specifikationen |
| Integritet | filterets selvkonsistens — andelen af udfaldssampler, hvis fejl forbliver inden for Kalman-filterets egen k-sigma-grænse. Ikke et integritetstal for luftfart i form af HPL/VPL/RAIM (se docs/INTEGRITY.md) |
| Sikkerhed | analytisk grænse for spoof-detekterbarhed ud fra urets stabilitet — hvor lille/langsom en tidsspoof en konsistensovervågning med ét ur kunne markere. Har kun mening med et konfigureret angreb; ikke en RAIM-detektor med flere satellitter |
Ny med disse begreber? Hvert er defineret i klart sprog i ordlisten.
Repositoryets opbygning
Repositoryets opbygning#
kshana/
├── src/ # the kshana core crate (library + CLI)
│ ├── api.rs · main.rs · lib.rs # typed dispatch (92 kinds) + CLI + crate root
│ ├── python.rs · wasm.rs # optional PyO3 / wasm-bindgen bindings
│ ├── types.rs · scenario.rs · allan.rs # shared core (time grid, GNSS timeline, Allan)
│ │
│ ├── models.rs · estimator.rs · kalman.rs # Pack 1 — clock holdover + integrity
│ ├── security.rs · detection.rs · spoof.rs · spoof_monitors.rs # spoof detection
│ ├── filter_health.rs · fom.rs · fom_label.rs · report.rs · chart.rs · run.rs # health · FoM scoring + labelling · output
│ ├── suite.rs · study.rs # scenario suites + aggregated multi-scenario study artifacts (`--study`)
│ ├── inertial/ # Pack 2 — strapdown INS (attitude · mechanization · imu_errors · quantum_imu)
│ ├── timetransfer.rs · timetransfer_adv.rs · timegeo.rs # Pack 3 — TWSTFT/CV/PPP/optical, Sagnac
│ ├── hybrid.rs · ensemble.rs · sweep.rs # Pack 4 — fused PNT, Monte-Carlo, trade sweeps
│ │
│ ├── timescales.rs · jd2.rs · ephem.rs # time systems, two-part JD, Sun/Moon ephemeris
│ ├── precession.rs · nutation.rs · cio.rs # IAU 2006/2000A precession-nutation + CIO GCRS↔ITRS
│ ├── frames.rs · *_data.rs # TEME↔ECEF + generated nutation/CIO/EGM2008/IGRF tables
│ │
│ ├── orbit.rs · sgp4.rs · tle.rs · walker.rs # geometry, SGP4/SDP4, TLE, Walker design
│ ├── propagator.rs · forces.rs · gravity_sh.rs · integrator.rs # Cowell + perturbations (EGM2008 d/o70, GR) + RK4/DOPRI
│ ├── maneuver.rs · batch_ls.rs · orbit_determination.rs # burns/Lambert/porkchop, Gauss-Newton, OD
│ ├── cr3bp.rs · lunar.rs · lunar_frame.rs · lunar_od.rs # Earth–Moon CR3BP + halo/NRHO STM corrector, cislunar/LunaNet ARAIM, MCI↔MCMF, lunar OD
│ ├── lunar_time.rs · lunar_vlbi.rs · lunar_combination.rs · lunar_frame_realise.rs · lunar_service.rs · lunar_dpnt.rs · lunar_interop.rs # tiers per piece in the matrix lunar PNT suite — LTC time · geodetic VLBI · joint OD+clock · frame realisation · Moonlight service-volume · differential PNT · LunaNet/IOAG interop export
│ ├── body.rs · mars_frame.rs · ephem_provider.rs · radiometric.rs · ccsds_tdm.rs # deep-space: multi-body · Mars frame · ephemeris seam · radiometric obs + CCSDS-TDM
│ ├── deepspace_od.rs · clock_state.rs · mars_atmos.rs · mars_pnt.rs · linkbudget.rs · gse_sim.rs # SRIF OD · onboard clock · Mars drag · relay-PNT · link budget · GSE sim
│ │
│ ├── fusion/ # GNSS/INS — EKF · UKF · tightly_coupled(17) · coupled · closed_loop
│ ├── raim.rs · sbas.rs # RAIM/ARAIM HPL/VPL, SBAS DO-229E PLs + L1/L5 iono-free
│ ├── gnss_sim.rs · ionex.rs · pvt.rs · jamming.rs # measurement domain · ionosphere maps · single-point positioning · jamming
│ ├── navsignal.rs # nav-signal PSD (BPSK-R/BOC) · spectral-separation → anti-jam Q · DLL code-tracking jitter · multipath envelope
│ ├── gravimeter.rs · igrf.rs · mapmatch.rs · particle_filter.rs · altpnt/ # gravity/magnetic/terrain alt-PNT
│ ├── rinex.rs · rinex_obs.rs · glonass.rs · sp3.rs · oem.rs · omm.rs · permalink.rs # interop formats
│ ├── launch.rs · reentry.rs · eo_payload.rs · attitude_budget.rs · passes.rs · space_packet.rs # mission-analysis budgets + CCSDS Space Packet
│ ├── space_weather.rs · holdover.rs · tpl.rs # space-weather environment · GNSS-denied clock-holdover calculator · conditional Timing Protection Level (under spoofing)
│ ├── resilience/ # framework-aligned PNT-resilience scoring + decision-instability study (RPCF · Dirichlet · Kendall-τ · diversity collapse · assurance report)
│ ├── impairment_eval.rs · impairment_study.rs · impairment_ml.rs · eval_stats.rs # Machine-learning RF-impairment eval testbed · optimism-gap study · LR/MLP detectors · bootstrap/DeLong/Spearman stats
│ ├── sdr.rs · realdata/ # software-defined-receiver front end (IQ/IF → E/P/L taps → SQM) + real-data ingest adapters (RINEX · UBX · GnssLogger · JammerTest · Yunnan · SatGrid)
│ ├── crossover.rs · quantum_trade.rs · frugal.rs · integrity_impact.rs # quantum-vs-classical crossover map · PNT trade · cost-per-coverage ROI · integrity impact
│ ├── quantum_devices.rs · quantum_faults.rs · quantum_nav_od.rs · qtrade.rs · timetransfer_chain.rs · representativeness.rs # Quantum-Enabled PNT demonstrator — device error models · fault catalogue · GNSS-free quantum OD · unified trade harness · quantum time-transfer chain · representativeness / gaps-to-flight ledger
│ ├── interchange.rs · verification.rs # KIF artifact envelope · machine-checked verification matrix
│ └── bin/crossover_study.rs · bin/validation_report.rs # crossover-study artifact generator · release validation-summary HTML
│
├── mcp/kshana-mcp/ # standalone, workspace-EXCLUDED crate — the MCP server (+ Dockerfile, server.json)
├── ide/jetbrains/ # standalone Kotlin/Gradle IntelliJ-Platform plugin
├── xval/ # standalone, workspace-EXCLUDED external cross-checks: anise-{frames,lunar-od,mars-od,service-geometry} (Rust ANISE/SPICE DE440) + orekit-passes (Java Orekit)
│
├── examples/ # reproducible study generators: tpl_jammertest · resilience_report · optimism_study + real-data probes (jammertest_probe · yunnan_probe · satgrid_probe · texbat_probe · ingest_realdata)
├── paper-artifacts/ # byte-deterministic study artifacts, regenerable from examples/ (optimism-study.json · resilience-study.json); raw datasets stay out
├── scenarios/ # one cited .toml per kind + geometry-driven + GPS-denied
├── scripts/ # reproducibility + repo-hygiene + SBOM guards
├── docs/ # CONCEPTS, ARCHITECTURE, CAPABILITY, VALIDATION, PROVENANCE, GLOSSARY, …
├── web/ # the WebAssembly playground + kshana.dev site
├── tools/ # table generators (EGM2008 · IGRF · nutation · CIO) + fetch_tles.sh
├── .github/workflows/ # ci · release · publish · wheels · pages · mcp-publish · jetbrains-plugin · frame-xval
├── pyproject.toml # Python packaging (maturin)
├── CHANGELOG.md # Keep a Changelog + SemVer
└── CITATION.cff · ROADMAP.md · CONTRIBUTING.md · SECURITY.md
FAQ (ofte stillede spørgsmål)
FAQ#
Skal jeg forstå kvantefysik for at bruge dette? Nej. Hvis du kan køre en kommandolinje, kan du køre Kshana. Start med primeren i klart sprog; slå begreber op i ordlisten.
Er dette en udformning af kvantehardware eller flyvesoftware? Nej. Det er en simulator af ydeevne. Kvantehardwarens troværdighed kommer fra publicerede fejlmodeller, ikke fra dette værktøj. Se Hvad det er / ikke er.
Er kvanteresultaterne realistiske, eller er det markedsføring? Hver parameter er henvist til et datablad eller en artikel, hver model er valideret mod en lærebogsrelation, og modenhed er ærligt mærket i VALIDATION.md — herunder at intet strontium-optisk ur har fløjet. Motoren er neutral: kvante og klassisk er den samme kode med forskellige publicerede tal.
Kan jeg stole på, at to kørsler stemmer overens? Ja — kørsler er deterministiske: scenario + seed + engine version → bit-identical output, håndhævet af scripts/check-reproducible.sh.
Kan jeg bruge det fra Python eller i en browser? Ja — se Installation: eksemplerne for Python og WebAssembly står under den. Begge kalder den samme motor.
Hvordan modellerer jeg min egen sensor? Skriv et scenarie .toml med din sensors publicerede tal i provenance-felterne. Se Scenarieformat og eksemplerne i scenarios/.
Er det gratis til kommerciel brug? Ja — under AGPL-3.0, også i kommercielle sammenhænge, så længe du respekterer AGPL's copyleft (især: hvis du ændrer Kshana og tilbyder det over et netværk, skal du tilbyde disse brugere din ændrede kildekode). Hvis det ikke passer dig — f.eks. hvis du skal indlejre Kshana i et proprietært produkt eller drive en lukket netværkstjeneste — fås en kommerciel licens fra Ashforde® OÜ; se LICENSING.md og Support.
Fejlfinding
Fejlfinding#
cargo build fejler på en gammel værktøjskæde. Kshana kræver Rust ≥ 1,88. Opdatér med rustup update.
Bygningen af Python-udvidelsen kan ikke linkes på macOS (Undefined symbols … _Py…). En Python-udvidelse opløser sine symboler ved indlæsning. maturin sætter automatisk det rigtige linker-flag — brug maturin develop --features python i stedet for en bar cargo build.
Python-bygningen klager over, at fortolkeren er nyere, end PyO3 kender. Sæt PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (abi3-wheels er fremadkompatible på tværs af CPython-versioner).
WebAssembly-bygningen kan ikke finde målet. Installér det én gang med rustup target add wasm32-unknown-unknown, og kør derefter wasm-pack build --target web -- --features wasm.
Hvor blev mit output af? Hver kørsel skriver <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html og <scenario>.report.json ved siden af input-.toml, og også <scenario>.table.csv for de kinds, der publicerer en tabel. Alle er git-ignorerede af design.
Versionering og udgivelser
Versionering og udgivelser#
Kshana følger Semantic Versioning. Før 1.0 kan det offentlige scenarie-/resultatskema stadig ændre sig; brydende ændringer fremhæves udtrykkeligt i CHANGELOG.md. Hvert resultat kan genskabes ud fra scenario + seed + engine version.
Hvert vX.Y.Z-tag publicerer alle kanaler automatisk, i én rækkefølge — hele testsuiten kører først på den mærkede commit, intet publiceres, før den består, og bagefter kontrollerer pipelinen, at hvert register faktisk leverer den nye version (docs/RELEASING.md). Kanalerne:
| Kanal | Installér / hent | Indhold |
|---|---|---|
| crates.io | cargo install kshana · kshana = "0.35" |
Rust-bibliotek + CLI |
| crates.io | cargo install kshana-mcp |
MCP-serveren |
| PyPI (Python Package Index) | pip install kshana |
abi3-wheels (Linux/macOS/Windows) + sdist (kildedistribution) |
| npm | npm install kshana |
WebAssembly-modul + JS-wrapper |
| ghcr.io | docker run -i ghcr.io/ashfordeou/kshana-mcp |
OCI-billede til flere arkitekturer (Open Container Initiative) — ingen værktøjskæde nødvendig |
| npm | npx -y kshana-mcp@0.40.0 |
launcher: henter udgivelsens binærfil, verificerer SHA256SUMS og kører den |
| PyPI | uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 |
den samme launcher til Python |
| Homebrew · Scoop · winget | brew install ashfordeOU/tap/kshana-mcp · scoop install kshana-mcp · winget install AshfordeOU.KshanaMcp |
kshana-mcp-binærfilen, genereret ud fra hver udgivelses SHA256SUMS |
| officielt MCP-register | opdages automatisk af MCP-klienter | io.github.ashfordeOU/kshana-mcp (OCI-billede, npm- og PyPI-pakker) |
| JetBrains Marketplace | IDE → Plugins → søg efter "Kshana" | IDE-pluginnet Kshana — PNT simulator |
| Zenodo | DOI | et citérbart arkiv over hver udgivelse |
| kshana.dev | åbn i en browser | Kshana Studio, WebAssembly-appen i browseren, genbygget fra hvert udgivelsestag (så den version, den viser, er den version, den kører) |
MCP-serverens crate-/billed-/registerversion følger motoren (den indeholder biblioteket); JetBrains-pluginnet versioneres uafhængigt (det kalder din installerede kshana-binærfil).
Køreplan
Køreplan#
Se ROADMAP.md for den fasede køreplan, CHANGELOG.md for udgivet historik og docs/CAPABILITY.md for køreplanen pr. funktion. Prioriteringsrækkefølgen er: først evidens for tidssynkronisering og holdover til kritisk infrastruktur (telekommunikationsmasker, længere holdover med ældning og flickerstøj, indlæsning af målte urdata); dernæst den neutrale afvejningsmetode mellem kvante og klassisk (resultater mærket MODELLED, indtil en partners målte data fremmer dem); og månens/cislunar og dybrumsnavigation vedligeholdt, ikke udvidet som det førende. Den ITRF-præcise referencesystemreduktion er nu leveret — hele den CIO-baserede IAU 2006/2000A GCRS↔ITRS-kæde (polarbevægelse + nutation under en buesekund), valideret bit for bit mod SOFA/ERFA og uafhængigt krydskontrolleret mod ANISE (ren Rust-SPICE) til ≤ 3,6 m ved GNSS-bane. Nærtidens punkter omfatter tæt koblet bærebølgefasefusion og at gøre den løst/tæt koblede GNSS/INS-navigator tilgængelig i flere pakker; motoren til dybt rum / radiometrisk Mars-navigation landede i v0.17.0 (valideret ved simulering). Kvantefysiklaget er et P2-punkt: CAI-accelerometeret simuleres nu ud fra første principper (Mach–Zehnder-fase, projektionsstøj, kontrastaftagen, vibrationskobling), mens ur-/tidsoverførselssensorerne stadig drives af publicerede Allan-/støjbudgetkoefficienter. GMST-baseret TEME↔ECEF, IERS' skudsekundtidssystemer (UTC/TAI/TT/UT1), SGP4/SDP4-banepropagering (v0.7.0, valideret mod AIAA 2006-6753-vektorerne) og den kørbare gnss-ins-fusionspakke er alle leveret, og inertihastigheden udstilles nedstrøms. En aktiv stokastisk detektor for tidsspoof (Neyman–Pearson / χ²₁-energitest med Monte Carlo P_fa/P_md og et sikkerhedskvalitetsmål på 1−P_md), en linkbudgetmodel for jamming (J/S → effektiv C/N₀ → tab af lås), tilgængelighed for flere konstellationer, et enkeltakset (1-DOF) IMU-fejlbudget, to uafhængige (ur + position) Kalman-estimatorer rapporteret som ét samlet kvalitetsmål, reel konstellationsgeometri fra TLE'er, en HTML-rapport med resultatkort, geometriafledt GNSS-tilgængelighed og dilution of precision fra Kepler-baner med excentricitet og J2-drift, Monte Carlo-konfidensbånd, parametersweeps til afvejningsstudier, et WebAssembly-playground i browseren og valgfri Python- (PyO3) og WebAssembly-bindinger (wasm-bindgen) er landet på main.
Bidrag
Bidrag#
Se CONTRIBUTING.md. Kort sagt: tests består (cargo test), de to kontrolscripts består, Conventional Commits og en CHANGELOG.md-post under [Unreleased] for hver ændring, som brugeren kan se. Deltagelse er underlagt vores adfærdskodeks. For at rapportere et sikkerhedsproblem, se sikkerhedspolitikken — åbn venligst ikke en offentlig issue om sårbarheder.
Dokumentation: hvert dokument, og hvem det er til
Dokumentation#
| Dokument | Til hvem | Hvad der er i det |
|---|---|---|
| Begrebsintroduktion | alle, start her | hvad Kshana gør og hvorfor, fra nul til fysikken |
| Kshana Studio | alle | kør motoren i din browser (WebAssembly); noter om bygning og udrulning |
| Ordliste | alle | definitioner i klart sprog af hvert begreb |
| Scenarietyper | alle | hver kind, motoren fordeler: hvad den gør, dens felter, en eksempelkommando, dens registerrækker og det diagram, motoren skriver for den |
| Partnerdata | laboratorier og producenter med målte data | hvilke MODELLED-rækker en målt ur- eller IMU-optagelse kunne opgradere, formaterne, hvordan en indsendelse kontrolleres (kshana partner check), scores og krediteres |
| Arkitektur | udviklere / reviewere | modulkort, motorpipeline, fordeling og diagrammer |
| Valideringsstatus | reviewere / citerende | hvad der er validated mod not modeled, med evidens |
| Verifikationsmatrix | reviewere / citerende | det maskinkontrollerede evidensregister — hver funktionsrække med sin status, sit modul, sin test og sin eksterne uafhængige reference, genereret ud fra src/verification.rs |
| Begrundelse for modellerede rækker | reviewere | hvorfor hver modelleret række ikke har nogen ekstern uafhængig reference, anført række for række |
| Proveniens | reviewere / citerende | hver sensorparameter, model og hvert datasæt henført til sin publicerede kilde, i én citérbar tabel |
| Reproducerbarhed og proveniens | reviewere / pakkere | determinismegarantier, fastlåsning af facitfiler, SBOM (software bill of materials), bygningsproveniens |
| Platformtags for wheels | pakkere | matrixen for abi3-Python-wheels — hvilket platformtag pip install kshana opløser |
| Positionering | evaluatorer | hvor Kshana står i forhold til RTKLIB/gLAB (supplerende) og browserniveauet uden installation |
| Kshana Pro | evaluatorer / programledere | hvad det proprietære Pro-overlay tilføjer over den samme motor: udformningsoptimerer, usikkerhed og følsomhed, missionsdossier, kampagneovervågning, spektrumkoeksistens, jobservice i egne lokaler, sporbarhed af krav; hvad hver frembringer, og hvad den ikke gør |
| Teknisk rapport · JOSS-artikel | reviewere / citerende / evaluatorer | den fulde udvidede forskningsartikel — arkitektur, modeller pr. område, validering, casestudier og begrænsninger — plus det kortfattede JOSS-indlæg (Journal of Open Source Software) |
| SGP4-validering | reviewere / citerende | samstemmighed med AIAA 2006-6753-referencen (666 tilstande, ~4 mm) og en direkte sammenligning med den uafhængige crate sgp4 (stemmer overens til under en mikrometer / 4,12 mm) |
| Validering af kraftmodeller | reviewere / citerende | fuldkræftsmotoren (src/precise_od.rs) tilpasset agenturernes efemerider — metode og validerede residualer |
| Vejledning til reelle TLE'er | brugere | at drive scenarier med reelle Celestrak / Space-Track-konstellations-TLE'er (i stedet for det medfølgende syntetiske Walker-sæt) |
| Kvalitetsmål for integritet | evaluatorer | hvad tallene integrity / security betyder — og hvad de ikke er i forhold til luftfartens HPL/VPL |
| ARAIM-reference | reviewere / integratorer | den åbne MHSS ARAIM-implementering af beskyttelsesniveau — projektionen af nominel bias b_k, σ_URA mod σ_URE og a priori-sandsynlighederne for fejltilstande |
| Kvantemodeller · detaljer | reviewere | fysiklaget for koldatom-interferometeret, og hvor koefficienter stadig slås op |
| Compliance | evaluatorer | omfanget af DO-229E / DO-316-algoritmer, og hvad der ikke er et krav om overensstemmelse |
| Maritim tillid | søfarende / integratorer | GNSS-tillidsscoren 0-100 for et fartøjs NMEA, dens overvågninger og dens grænser (vejledende, ikke typegodkendt navigationsudstyr) |
| NMEA-træningsstrømme | maritime undervisere | syntetisk bro-NMEA med scriptet jamming og spoofing og en instruktørlog; kun tekst, aldrig til live navigation |
| Interferenskort | analytikere / søfarende | hvor fly og skibe har rapporteret forringede navigationsdata, og hvor meget af en rute det berører |
| Bevispakker | operatører / forsikringsselskaber | signerede tekniske optegnelser over en tillidshændelse og hvordan man verificerer én |
| Tillidstelemetri | drifts- / sikkerhedsteams | tillidsstrømmen som Prometheus-metrikker, SIEM-hændelser og OpenTelemetry, med et Grafana-dashboard |
| Maritime integrationer | bådejere / integratorer | Signal K-pluginnet, OpenCPN gate-tilstand og referencebygningen |
| Test bench | modtagerproducenter | at afspille et eksporteret scenarie gennem en laboratoriesimulator og score modtagerens log |
| Compliance-kortlægning | evaluatorer | offentlige robusthedsrammeværker afbildet på Kshana-output, med kilder og huller; kshana compliance-report |
| Notebooks | brugere | kørbare vejledninger med deres gengivne tekst |
| Standarder og interoperabilitet | integratorer | de udvekslingsformater for GNSS / flyvedynamik / agenturer, Kshana læser og skriver (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …) |
| LEO PNT-fusion | brugere / evaluatorer | fusioneret MEO + LEO positionering, navigation og tidssynkronisering: Doppler, fælles pseudoafstand, PPP-konvergens, 5G NTN, polardækning og LEO-tidsoverførsel over enhver konstellation; de valgfrie forudindstillinger og deres offentlige kilder |
| Kampagner | brugere / evaluatorer | sammensætning af scenarier: kædede missionstidslinjer, parametersweeps, Monte Carlo-ensembler og kørsler med fælles betingelser, med de sammensætningsidentiteter, som testene fastlåser |
| Scenariekatalog | brugere / integratorer | hver kind, der kan fordeles, med sine påkrævede og valgfrie TOML-felter — genereret ud fra api::list_scenario_kinds() |
| Resultatskema | integratorer | hvert felt i resultat-JSON, med enheder og en kildehenvisning |
| Python-API | Python-brugere | PyO3-bindingens flade — kald af motoren, scenarie- og resultattyperne samt eksempler |
| Påstande mod virkelighed | reviewere | registret over lukning af overdrevne påstande + CI-kontrollen (tests/no_overclaims.rs), der holder det løst |
| Køreplan | alle | den fasede køreplan — hvad der er leveret, og hvad der kommer næst |
| MCP-server · JetBrains-plugin | agenter / IDE-brugere | kør Kshana fra en AI-assistent eller en JetBrains IDE |
| Agentvejledning · Flader | agenter / integratorer | hvilket værktøj der besvarer hvilket spørgsmål, hvad man skal beholde med hvert svar; hvor hver funktion kan nås (CLI, Rust, Python, WASM, MCP, plugin, JetBrains, notebooks), og hvorfor en celle er N/A |
| Ændringslog | alle | udgivet historik (Keep a Changelog + SemVer, Semantic Versioning) |
| Bidrag | bidragydere | bygning, kontroller, disciplin for test/citering, DCO (Developer Certificate of Origin) |
| Styring | bidragydere / fællesskab | hvordan Kshana styres — hvem der beslutter, hvordan, og grænsen mellem åbent og lukket |
| Adfærdskodeks | fællesskab | forventet adfærd (Contributor Covenant) |
| Sikkerhedspolitik | indberettere | hvordan man rapporterer en sårbarhed; note om dobbelt anvendelse |
Nøglereferencer
Nøglereferencer#
Uafhængige referencer til validering og standarder — de eksterne autoriteter, Kshanas kontroller er forankret i:
- Vallado, Crawford, Hujsak & Kelso — Revisiting Spacetrack Report #3 (AIAA 2006-6753; testdata): det SGP4/SDP4-verifikationssæt, Kshana stemmer med til 4,12 mm, og de gennemarbejdede eksempler på referencesystemer, som TEME→ITRF-kæden kontrolleres mod.
- IAU SOFA / ERFA — de tids- og referencesystemrutiner, som IAU 2000A-nutationen og CIO GCRS↔ITRS-reduktionen valideres mod bit for bit.
- Petit & Luzum (red.) — IERS Conventions (2010), IERS TN (Technical Note) 36 (jordorientering, polarbevægelse og standarder for referencesystemer).
- Riley — Handbook of Frequency Stability Analysis, NIST SP 1065 (Allan-deviationsrelationer og NBS14-referenceserien; NBS = det tidligere amerikanske National Bureau of Standards).
- Pedregosa et al. — scikit-learn: Machine Learning in Python, JMLR 12 (2011): referenceimplementeringerne af ROC/AUC, forvekslingsmatrix og præcision/recall/F1, som testbænken til evaluering af RF-forstyrrelser afstemmes nøjagtigt efter (
tests/eval_metrics_reference.rs). - Virtanen et al. — SciPy 1,0, Nature Methods 17 (2020):
optimize.nnls,stats.chi2oglinalg.expm— de referencerutiner, som NNLS-tilpasningen af målt ADEV i kvante-afvejningen, χ²-konsistensbåndene og van-Loan-urets processtøjkovarians valideres mod (tests/scipy_reference.rs). - Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024): brugt både som åbent tidligere arbejde (se Sammenligning og åbent tidligere arbejde nedenfor) og som den uafhængige DOP-reference, som beregningen af GDOP/PDOP/HDOP/VDOP/TDOP afstemmes efter til 1e-6 (
tests/dop_reference.rs). - Montenbruck & Gill — Satellite Orbits: Models, Methods and Applications (Springer): kraftmodellerne bag kraftmodeltilpasningen til agenturernes præcise efemerider.
- Howell — Three-dimensional, periodic, halo orbits, Celestial Mechanics 32(1) (1984), doi:10.1007/BF01358403; Zimovan-Spreen, Howell & Davis — Near rectilinear halo orbits and nearby higher-period dynamical structures, Astrodynamics 6 (2022), doi:10.1007/s42064-021-0125-x (de halo-/NRHO-familier, som CR3BP-differentialkorrektoren gengiver).
Fysik for enheder og metoder — de citerede kilder bag sensormodellerne:
- Origlia, Schiller, Bongs et al. — arXiv:1503,08457 (strontium-optisk gitterur, rumorienteret mål).
- Oelker et al., Nature Photonics (2019) — doi:10.1038/s41566-019-0493-4 (Sr-ur i laboratoriet, 4,8×10⁻¹⁷).
- Templier et al., Science Advances (2022) — arXiv:2209,13209 (hybrid kvanteaccelerometertriade).
- Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation — IEEE AESS (Aerospace and Electronic Systems Society)-tutorial (University College London Discovery-repository) (fejlvækst ved dødregning).
- Giorgetta et al., Nature Photonics 7, 434 (2013) — arXiv:1211,4902; Deschênes et al., Phys. Rev. X 6, 021016 (2016) — APS (American Physical Society) (optisk tovejs overførsel af tid og frekvens; den optiske inter-satellit-forbindelse modellerer sit budget for ikke-reciprocitet efter disse).
- Betz — Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001), doi:10.1002/j.2161-4296.2001.tb00247.x (BOC-modulationen og teorien om spektralseparation bag
src/navsignal.rs). - Kaplan & Hegarty (red.) — Understanding GPS/GNSS: Principles and Applications (3. udg., Artech House, 2017): ligningen for effektiv C/N₀ ved anti-jam og den termiske støjjitter i early–late-DLL-kodesporingen, som navsignal- og jamningsmodellerne bruger.
Sammenligning og åbent tidligere arbejde — de værktøjer og oversigter, Kshana placeres i forhold til:
- Humphreys et al. — TEXBAT (Texas Spoofing Test Battery; ION — Institute of Navigation — GNSS 2012): testbatteriets spoofingparametre, som den flerlagede detektor karakteriseres mod.
- González et al. — NaveGo (2017): de åbne, validerede fejlprofiler for inertinavigation, der bruges som klassisk baseline.
- Iiyama, Casadesús Vila & Gao — LuPNT (ION GNSS+ 2023, Stanford NavLab): åben simulator for månens PNT.
- Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024), doi:10.1016/j.softx.2024.101811: åben analyse af GNSS-data.
- Li, Zaminpardaz, Kealy & Greentree — Quantum sensors for enhanced positioning and navigation: a comprehensive review, GPS Solutions 30(1):62 (2026), doi:10.1007/s10291-026-02030-y.
- Bertone et al. — Earth and Space Science 8(6) (2021), doi:10.1029/2020EA001454: GRAIL reduceret-dynamisk OD, den empiriske accelerationsbundgrænse, som LRO-tilpasningen gengiver.