Kshana · क्षण · det presise øyeblikket
En åpen kildekode-simulator for PNT-robusthet (posisjonering, navigasjon og tidssynkronisering).
Status for kontinuerlig integrasjon på main
Linjedekning nær 95 % av src/, målt i docs/COVERAGE.md og med en grense på 85 % i kontinuerlig integrasjon
176 av 401 funksjoner VALIDATED mot en uavhengig ekstern referanse, fra verifikasjonsmatrisen
Status for SonarQube Cloud-kvalitetsporten
Utgivelse v0.40.0
Lisens: AGPL-3.0-only
DOI 10.5281/zenodo.20528627, Zenodo-konseptposten for hver utgivelse
En kommersiell lisens er tilgjengelig fra Ashforde® OÜ, se Utgaver
kshana på crates.io, den gjeldende publiserte versjonen
kshana på PyPI, den gjeldende publiserte versjonen
kshana på npm, den gjeldende publiserte versjonen
Åpne Kshana Studio · Installasjon · Funksjoner · Evidens · Forskning · Dokumentasjon · Siter
Innhold
- Øv på minuttet GNSS går i svart
- Nytt i 0,40, Nytt i 0,39, Nytt i 0,38 og 0,38 i dybden: jammertest-skåring, mottakerens egne flagg, maskininndata, tidssynkronisering og holdover, standardpakker, LunaNet AFS, laboratorierunden, kshana-bench, observatoriet, eksportører, optikk, rombrukernavigasjon og månens infrastruktur
- Kshana Studio og hver Studio-side
- Funksjoner: tabellen over områder, hver scenariotype etter familie, hver kommando, hver flate
- Hvordan en kjøring fungerer, Oppdrag
- Evidens: registeret, funksjonsdomener
- Installasjon, Arkitektur (og diagrammene), AI-assistent
- Utgaver, Forskning, Siter, Lisens
- Referanse: bruk, scenarioformat, utdata, depotstruktur, FAQ, feilsøking, versjonering, veikart, bidrag, dokumentasjon
Øv på minuttet GNSS går i svart#
Kshana spiller av jamming, spoofing og klokke-holdover når GNSS-signaler (Global Navigation Satellite System) svikter, og forteller deg hvor lenge et system holder tid og posisjon innenfor budsjettet, og hvilken klokke eller sensor som gir mest margin. Det er én Rust-motor. Den kjører i en terminal, en notebook, et IDE (integrert utviklingsmiljø), en AI-assistent (kunstig intelligens) eller i nettleseren din.
Hver kjøring er reproduserbar bit for bit fra scenarioet, seedet og motorversjonen. Hver funksjon bærer én av tre merkelapper i et maskinkontrollert register: VALIDATED (en uavhengig ekstern referanse er enig), MODELLED (internt konsistent, og sagt høyt) eller PARTNER (en maskinvarepartner eier den).
Status: v0.40.0. Et validert, reproduserbart simuleringsgrunnlag for PNT-robusthet. Tidssynkronisering og holdover kommer først, fordi det domenet er best validert. Kshana er et studie- og avveiningsinstrument: ikke radiofrekvens (RF) signalgeneratormaskinvare (den styrer ingen radio og sender ingenting; signalnivåutdataene er IQ-sampelfiler i basebånd for programvaremottakere), ikke en maskinvare- eller sertifisert GNSS-mottaker (programvaremottakeren er et analyseverktøy) og ikke et flyprodukt. Ny på feltet? Start med primeren i klarspråk og ordlisten.
Nytt i 0,40#
0,40 legger til et budsjett på oppdragsnivå for feil, merker hvert tall og hver tabell med sitt evidensnivå, leser målte klokkeloggere, kontrollerer innleveringer fra datapartnere, anslår hvor en interferenskilde kan befinne seg, og snakker sytten språk ved siden av engelsk. Registeret har nå 401 rader: 176 VALIDATED, 221 MODELLED, 4 PARTNER. Ingen rad ble oppgradert til VALIDATED, og hver bom nedenfor er festet av en test.
- Oppdragstråd. Typen
mission-threadkjeder sammen faser fra oppskyting til gjeninntreden (launch-ascent,leo-rendezvous,tli-and-cruise,entryog fire lunare typer) med oppgitte overleveringsregler, en margin mot oppgitte krav og det svakeste leddet; et ende-til-ende-eksempel i stil med Artemis-class over 11 faser (jord- og månesegmenter), 92 scenariotyper til sammen. Hvert tall er MODELLED. Den cislunare propageringen mot den offentlige banekurven for Artemis I bommer på sin forhåndsregistrerte terskel (45,3 km og 0,25 m/s mot 5 km og 0,05 m/s; årsaken er små manøvrer modellen ikke inkluderer), og den lunare propagatoren mot CAPSTONE-banen bommer (136,8 km mot 25 km ved slutten av én omløpstid); sammenligningen med LRO er oppfylt. Radene forblir MODELLED (Oppdragstråd, månesegmentet). I Studio leses tråden på/studio/mission-thread/. - Evidensetiketter. Hvert tall og hver tabell en kjøring skriver bærer nivået og register-radidene den bygger på, lest fra matrisen.
- Målte klokker. Åtte klokkeloggformater leses (
docs/CLOCK-LOG-FORMATS.md), og en tilpasset serie kan drive holdoveren. Mot forhåndsregistrerte terskler bommer tilpasningen på F1(a) for fem av seks registreringer og på F2 for én; begge forblir MODELLED (Endringslogg). - Datapartnere.
kshana partner checkkontrollerer formatet på en innlevering og skårer ingenting (docs/PARTNER-DATA.md). - Senderregion.
kshana interference-map locategir en region og en ellipse, aldri et enkelt punkt, ut fra ADS-B- eller AIS-rapporter. Sammenlignet én gang med senderstedene fra Jammertest 2025 er resultatet NOT ASSESSABLE for begge kildene (for få planlagte økter i de åpne dataene), så raden forblir MODELLED (Interferenskart). - Benchmark. Ny kampanje i 0,40 når A3, D3 (begge EXPLORATORY), R3 og R4; A2, D1 og R1 forblir NOT MET (Bench).
- Språk. nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja og zh-Hans, som maskinoversettelser som ingen morsmålsbruker har gjennomgått; engelsk er referansen, og kjøringer på andre språk enn engelsk tar omtrent dobbelt så lang tid (
docs/i18n.md).
Nytt i 0,39#
0,39 legger til ingen funksjon og endrer ikke noe resultat; motorens utdata er utdataene fra 0,38. Den fikser én ting på kommandolinjen, oppdaterer avhengigheter i kryssvalideringsverktøyene og oppgir benchmark-vurderingene i sin helhet.
- Kommandolinje.
kshana kinds | head(enhver lukket standardutdata) krasjer ikke lenger: programmet avslutter stille med status 141, slik andre verktøy gjør for et lukket rør. Andre skrivefeil melder seg fortsatt selv. - Dependencies.
memmap20.9.11 i de to ANISE-kryssjekklåsene ogpillow13.0.0 ogcertifi2026.10.19 i miljøfestene til den uavhengige referansen, alt underxval/: ingenting som leveres, endret seg. - kshana-bench, alle vurderinger. Mot de forhåndsregistrerte tersklene er tre NOT MET, hver festet av en test: A2 (
agc_k_sigmaAUC 0,766 mot minst 0,80), D1 (største gap 0,0301) og oppgave (b) R1 (overført, ikke kjørt på nytt). Ingen terskel ble løsnet (Bench).
Nytt i 0,38#
0,38 gjør den nøytrale dommeren målbar: den skårer mottakerlogger mot en publisert testplan, leser flere mottakere og sensorer, tester tidssynkroniseringssystemer og leverer en benchmark og et interferensobservatorium. Den forblir veiledende: ingenting her er sertifisert, ikke noe resultat er en typegodkjenning, og ingenting sender. Hver rad oppgir hva registeret holder for den (hvordan en merkelapp opptjenes); en status navngir bare det som ble kontrollert, og registerraden og den lenkede siden sier hva som ikke ble det.
| Nytt i 0,38 | Hva den gjør, og hvorfor | Registerstatus | Leses |
|---|---|---|---|
| Jammertest-skåring | kshana jammertest import leser den publiserte NPRA-testkatalogen og sendeplanen som planlagt referanse; jammertest score skårer en mottakerlogg per test (deteksjonsforsinkelse, uteblitte alarmer, falske alarmer, tid til gjenoppretting), som en signert bevispakke hvis du oppgir en nøkkel |
MODELLED: én registerrad. Tersklene ble forhåndsregistrert før noen skåret kjøring; på JammerTest 2024-dataene feilet minimumsdataregelen i begge kjøringene (4 og 7 skårbare vinduer mot 10 påkrevd), så ingen terskel kan vurderes og ingenting påstås | Jammertest |
| Mottakerens egne flagg | UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG og NovAtel RXSTATUS leses inn i en self_report per epoke og sammenlignes med Kshanas alarmer (begge, bare mottakeren, bare Kshana, ingen av dem); en Septentrio SBF-leser og skrivebeskyttet --serial-inndata |
MODELLED; enighet mellom en mottakers detektor og Kshanas er ikke validering | Mottakertillit |
| Flere mottakere og sensorer | RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0 (fra de BSD-lisensierte pyrtcm-tabellene, ikke RTCM-teksten), GNSS-SDR-monitorstrømmer, en IMU-logg som andre sensor, en ROS 2-pakke, en gnss_lib_py-bro og imu-fit for hybride sensorparametre |
MODELLED: seks registerrader; bare selvskrevne testdata, ingen opptak fra en reell mottaker, IMU, GNSS-SDR-kjøring eller ROS-graf ble lest | Maskininndata |
| Tidssynkroniserings- og holdover-tester | typen holdover-test skårer en holdover-test (GNSS fjernet av operatøren, holdover, gjenoppretting) fra en målt tidsfeilrekke mot ITU-T-masker, «målt mot masken»; linuxptp- og chrony-loggleser; maskinvaretrinnene og feltet lab-attestation |
MODELLED: to registerrader; tidene er operatørens erklæring, ikke verifisert | Tidssynkronisering HIL, Maskinvaresikkerhet |
| Standardpakker, LunaNet AFS, laboratorierunde | skårede pakker for DHS RPCF, IMO MSC.1/Circ.1575 og ICAO Doc 9849 Appendix F mot terskler oppgitt før kjøringen, «gir belegg for»; en NIST IR 8323r1-krysstabell; en LunaNet AFS-kodegenerator og -kontroll; en signert pakke som knytter sammen et laboratoriums scenario, testbetingelser, mottakerlogg og skår | MODELLED for pakkene og runden; AFS-kodekontrollen er VALIDATED mot de trykte kontrollkolonnene sine (se registerradene) | Standarder, LunaNet AFS |
| kshana-bench og observatoriet | faste oppgaver, delinger og målinger for interferensdeteksjon, IQ-deteksjon, holdover-prediksjon og optimismegapet, med et forseglet tilbakeholdt datasett og en statisk resultattavle; et reproduserbart daglig interferensprodukt med 24 t forsinkelse, grove celler og ingen årsakstilskriving | ingen egen registerrad: den skårer innsendinger, og grunnlinjene er merket MODELLED i resultatfilene; mot de forhåndsregistrerte tersklene er skåreren, C1 til C3 og D2 nådd, og tre terskler er NOT MET (festet av tester): A2 (agc_k_sigma AUC 0,766 mot minst 0,80 på testdelingen), D1 (største gap 0,0301) og oppgave (b) R1 (overført, ikke kjørt på nytt); se xval/bench/RESULTS-v2.md |
Bench, Observatoriet |
| Eksportører | tillitstelemetri som Home Assistant MQTT-oppdagelses- og tilstandsmeldinger (bare publisering, ingen legitimasjon) ved siden av Prometheus, CEF, LEEF og OTLP | MODELLED: én registerrad | Tillitstelemetri |
| Optisk lenkemargin mot tid | typen optical-atmosphere kan skrive én seedet realisering av et steds vær som en lenkemarginserie |
MODELLED: én registerrad; ett trekk fra modellen, ikke klimaet | Optisk atmosfære |
Høydepunkter i 0,37: endringslogg. Hele listen for 0,38 står i endringsloggen.
0,38 i dybden#
Hver funksjon fra tabellen ovenfor, på noen få linjer: hva den gjør, én kommando for å kjøre den, ett bilde tegnet fra en ekte kjøring av motoren, og hva registeret holder for den. Bildene skrives av tools/gen_figures_038.py inn i docs/figures/0.38/ (aldri tegnet for hånd): python3 tools/gen_figures_038.py skriver dem om fra en bygget motor, og --check feiler hvis ett er utdatert eller bildeteksten her avviker. Der en inndata er en logg, er den en oppdiktet en skriptet skriver, fordi de reelle tredjepartsloggene aldri legges inn i depotet, og bildeteksten sier det. Alt nedenfor er veiledende: ikke sertifisert, ikke en typegodkjenning, og ingenting sender. En status navngir det som ble kontrollert og ikke mer; hvordan en merkelapp opptjenes.
Jammertest-skåring#
kshana jammertest import gjør den publiserte NPRA-testkatalogen og sendeplanen om til planlagt referanse, og kshana jammertest score skårer en mottakerlogg mot den: for hver planlagte test, om den ble oppdaget, hvor sent, og hvor lang tid mottakeren brukte på å gjenopprette seg, pluss falske alarmer utenfor hver luke. Katalogen hentes, aldri lagt inn i depotet.
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. Tersklene ble fastsatt før noen skåret kjøring; på JammerTest 2024-dataene feilet minimumsdataregelen i begge kjøringene, så ingen terskel kan vurderes og ingenting påstås. Jammertest.
Mottakerens egne flagg#
UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG og NovAtel RXSTATUS leses inn i en self_report per epoke og stilles ved siden av Kshanas alarmer: begge, bare mottakeren, bare Kshana eller ingen av dem. En Septentrio SBF-leser og en skrivebeskyttet --serial-inndata mater den samme sammenligningen. Ingen av sidene er referanse.
kshana receiver-trust session.toml # [log] format = "ubx", path = "receiver.ubx"
Registerstatus: MODELLED. Enighet mellom en mottakers detektor og Kshanas er ikke validering. Mottakertillit.
Flere mottakere og sensorer#
RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0, GNSS-SDR-monitorstrømmer, en IMU-logg som andre sensor, en ROS 2-pakke og en gnss_lib_py-bro ender alle i den samme mottakertillitstidslinjen. imu-fit leser sensorparametrene de hybride scenarioene og fusjonsscenarioene trenger ut av en stillestående IMU-logg, slik at et scenario kan kjøres med sensoren du faktisk har.
kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
Registerstatus: MODELLED. Bare selvskrevne testdata; ingen opptak fra en reell mottaker, IMU, GNSS-SDR-kjøring eller ROS-graf ble lest. Maskininndata.
Tidssynkroniserings- og holdover-tester#
Typen holdover-test skårer en holdover-test (GNSS fjernet av operatøren, holdover, gjenoppretting) fra en målt tidsfeilrekke mot ITU-T-masker, og sier det med de ordene: målt mot masken. Loggleserne for linuxptp og chrony mater den; maskinvaretrinnene og feltet lab-attestation sier hvem som erklærte hva.
kshana scenarios/holdover-test-example.toml
Registerstatus: MODELLED. Tidene GNSS ble fjernet og gjenopprettet, er operatørens erklæring, ikke verifisert. Tidssynkronisering HIL, Maskinvaresikkerhet.
Standardpakker#
Skårede pakker for DHS Resilient PNT-testprofilene, IMO MSC.1/Circ.1575 og ICAO Doc 9849 Appendix F, pluss en NIST IR 8323r1-krysstabell i compliance-report. Hver test kjører et medfølgende scenario og sammenligner et resultatfelt med en terskel oppgitt før kjøringen; en test som trenger en mottakerlogg, er oppført som å trenge en inndata, ikke skåret. Ordlyden er «gir belegg for».
kshana standards-pack list
kshana standards-pack run imo-circ-1575
Registerstatus: MODELLED. En nådd terskel sier at et modellert scenario nådde en oppgitt terskel, ingenting om et produkt; hver bom beholdes og festes av en test. Standarder.
LunaNet AFS#
LunaNet Augmented Forward Signal-kodegeneratoren (Gold-, Weil- og tertiærkoder, meldingsrammen og feilkodingen dens) og en kontroll for en innspilt eller generert symbolstrøm, festet til én utgave av spesifikasjonen.
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 synkroniseringskontrollene, mot verdiene spesifikasjonen trykker (som den merker TBC); én kontroll er NOT MET, beholdt og festet (én trykt tertiærkodekolonne avviker: dokumentet trykker den samme verdien for to PRN-er). LDPC- og CRC-ordene i underramme 2 til 4 kontrolleres ikke. Registerradene sier nøyaktig hvilke. LunaNet AFS.
Laboratorierunde#
kshana.test-conditions/1 er en publisert beskrivelse av hva et laboratorium gjorde (hendelser, tider, effekter). kshana evidence round-trip knytter scenario-hashen, betingelseshashen, mottakerloggens hash og skåren sammen i én signert pakke, og avviser en pakke der betingelsene og skåringsscenarioet er uenige om hendelsene. Kshana produserer eller spiller aldri av et signal: hvordan et scenario nådde en mottaker, er operatørens ansvar.
kshana evidence --help
Bildet er oppsettet til en pakke. Registerstatus: MODELLED. Testbetingelser, Testbenk.
kshana-bench#
Faste oppgaver, delinger og målinger for interferensdeteksjon, IQ-deteksjon, holdover-prediksjon og optimismegapet, med et forseglet tilbakeholdt datasett og en statisk resultattavle. Den skårer innsendinger; den er ikke en rangering av mottakere.
kshana bench baseline --task d --split test --out results/
Registerstatus: ingen egen registerrad; grunnlinjene er merket MODELLED i resultatfilene. Mot de forhåndsregistrerte tersklene er skåreren, C1 til C3 og D2 nådd, og tre terskler er NOT MET, hver festet av en test: A2 (agc_k_sigma AUC 0,766 mot minst 0,80 på testdelingen), D1 (største gap 0,0301) og oppgave (b) R1 (overført fra den tidligere kampanjen, ikke kjørt på nytt). Tallene står i xval/bench/RESULTS-v2.md. Bench.
Interferensobservatoriet#
Ett produkt per UTC-dag og region fra et åpent arkiv over flyposisjoner, på et fast grovt rutenett: hver celle er degradert, ikke degradert eller ikke observert (som ikke er «klar»). Utgitt tidligst 24 t etter at dagen er slutt, med små celler undertrykt og ingen tilskriving av årsak.
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/
Bildet er de innsjekkede eksempeldagene, ikke et observatorieprodukt. Registerstatus: MODELLED: ingen ekstern uavhengig referanse, ingen referansesannhet og ingen årsakstilskriving; en celle som ikke er observert, ble ikke vurdert, og det er ikke det samme som klar. Observatoriemetode.
Eksportører#
Tillitstelemetri som Prometheus-tekst, CEF, LEEF, OTLP og Home Assistant MQTT-oppdagelses- og tilstandsmeldinger. Kommandoen publiserer bare til en destinasjon du oppgir, og holder ingen legitimasjon.
kshana trust-telemetry --result session.result.json --print-metrics
kshana trust-telemetry --result session.result.json --print-syslog --format cef
Registerstatus: MODELLED. Tillitstelemetri.
Optisk lenkemargin mot tid#
Typen optical-atmosphere kan skrive én seedet realisering av et steds vær som en lenkemarginserie: skyepisoder, en væskevannskolonne for hver, ett scintillasjonssampel per steg. Studioets side Optisk PNT åpner optical-atmosphere-scenarioene.
kshana scenarios/optical-atmosphere-network.toml
Registerstatus: MODELLED. Ett trekk fra modellen, ikke klimaet. Optisk atmosfære.
Nye Studio-visninger#
kshana.dev/studio får en Bridge-gjenspilling (to kjøringer side om side på én oppdragsklokke, på /studio/replay/), en side for Optisk PNT (/studio/optical/), en side for Holdover-test (/studio/holdover/) og en observatorievisning (/studio/observatory/). De kjører den samme motoren i nettleseren, ingenting lastes opp, og de bærer den samme veiledende erklæringen. Bildene ovenfor er tegnet av et skript fra motorens egne utdata; de er ikke skjermbilder av disse sidene.
Rombrukernavigasjon (gnss-ssv)#
For et romfartøy over, rundt eller langt forbi GNSS-banene: hvor mange GNSS-signaler det kan bruke, hvor sterke de er, hvor god geometrien er, og hva et filter om bord kan gjøre med dem. Én type, fire moduser, valgt av scenarioets tabeller: et skall av brukere (andelen av tiden med ett og fire signaler, per konstellasjon), en bane (signaler, C/N0, presisjonsfortynning og limbstrålemediet langs en bane), en navigasjonskjøring (et filter med ni tilstander på pseudoavstander, til Månen) og en formasjon (relativ navigasjon for deputies rundt en chief). Den offentlige kilden for tilgjengelighetssammenligningen er den interoperable GNSS Space Service Volume-boken (UN OOSA ST/SPACE/75, fra International Committee on GNSS), som selv er en simulering; den hentes, aldri lagt inn i depotet. Full 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 boken bommer for det meste. Tersklene ble fastsatt før kjøringen. Av åtte er bare S0 (det inverse lenkebudsjettet, 13 av 13 verdier) og S6 (månemisjonen) nådd. S1 til S5 og S7 er NOT MET: geometrien for øvre og nedre tjenestevolum (43 av 52 og 48 av 52 celler), øvre tjenestevolum på 15/20/25 dB-Hz, de seks GEO-misjonene, HEO-misjonen og det parametriske sidelobemønsteret mot målte GPS-panelmønstre. Nesten hver bom i S1 til S5 involverer GLONASS, og boken trykker to ulike referansevinkler for det; en diagnostisk variant som bruker det andre paret, bringer S1, S2 og S4 til hver celle, men den erstatter ikke kjøringen som gjelder, og ingen rad er VALIDATED. Formasjonskjøringens absolutte filter er også overmodig (gjennomsnittlig normalisert feil i annen langt over verdien på omtrent 3 som et konsistent filter gir).
Rombrukernavigasjon, hva sammenligningen viser.
Månens infrastruktur (lunar-infrastructure)#
Månens bane og overflate som navigasjons- og geodetisk infrastruktur, i fem studier valgt av study: od-consistency (en banebestemmelse om bord med jord-GNSS i en halobane mot en uavhengig fra bakken), carrier-phase (fastsetting av heltallsflertydighet mellom overflatestasjoner og en orbiter), frame-coestimation (månens datum fra avstandsmåling fra jordstasjoner med og uten orbiterlenker), space-tie (laser-, VLBI- og GNSS-forskyvninger på ett romfartøy mot lokalbindingsfeilen) og geodesy-sensitivity (hvilken observabelfamilie som ser Love-tallene h2, k2 og l2). Modellen er en begrenset tre-legemers modell med oppgitte forenklinger og illustrative inndata. Full 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 terskler er NOT MET. Tallbehandlingen er kontrollert mot uavhengige numpy- og scipy-programmer; ingenting er sammenlignet med en måling av en månestørrelse, og ingenting er VALIDATED. Nådd: de to baneløsningene er konsistente (gjennomsnittlig q 5,81 mot 6 forventet), og orbiterlenker hever den minste datumegenverdien omtrent 111 ganger, forutsatt en kjent bane. Ikke nådd: den injiserte modellfeilen på 3e-10 m/s2 oppdages ikke (C3: løsningen om bord er kjent til omtrent 350 m, så omtrent ti meter skjuler seg i kovariansen); heltallsfastsetting oppnås ikke (1 til 3 % suksess ved 25 dBi, og ved den registrerte 12 dBi kan ikke problemet formes); og sporhalvdelen av G3 for å legge til en observabelfamilie (sporet økte i 12 av 28 tillegg, hver gang fordi familien hevet rangen). Hver bom er festet av en test. Månens infrastruktur.
Kshana Studio#
Åpne kshana.dev/studio, så kjører hele motoren i nettleseren din, kompilert til WebAssembly. Ingenting å installere, og ingenting lastes opp. Studioet har to visninger av den samme motoren, og en bryter i toppen flytter mellom dem og beholder scenarioet, visningen og alle innstillinger du endret.
Den enkle visningen er der Studioet åpner. Den starter fra spørsmål (hvor mange satellitter kan jeg se, kan jeg stole på posisjonsbestemmelsen min, hvor lenge kan en klokke holde tid, hva gjør en jammer med mottakeren min) og fra et kart over alt motoren kan gjøre, hvert område med sin andel validerte metoder. Åpne et scenario, og svaret kommer først: én enkel setning, skrevet for det scenarioet måler, deretter nøkkeltallene og et diagram. Høyst fem innstillinger vises, de som endrer svaret mest; resten venter under Avanserte innstillinger. Hvordan dette beregnes forklarer metoden, og For forskere gir motorens egne tall, scenariofilen, koden for å kjøre det fra Python og siteringen.

Den avanserte visningen er hele dashbordet: scenariobiblioteket, fem nummererte trinn (Velg, Sett, Kjør, Les resultater, Del eller eksporter), nøkkeltallene med PASS- og FAIL-merker der kjøringen oppgir en terskel, og hvert panel: oversikt, diagrammer, kart, gjenspilling, motorens rapport og eksport. Én søkeboks når scenarioer, domener og feltene i dem, og du kan feste opptil fire kjøringer og sammenligne dem side om side.
Åpningsskjermen i den enkle visningen, og den avanserte visningen etter en kjøring


Studioets kildekode og byggenotatene står i web/README.md.
Nettstedet#
Resten av kshana.dev er bygget fra dette depotets egne filer og motorkjøringer: oppdrag, funksjoner, evidensregisteret, den publiserte forskningen og utgavene.

Funksjoner#
Én motor dekker hele feilkjeden, fra den første jammede satellitten til den siste nanosekunden av klokke-holdover. Motoren har 92 scenariotyper; kshana kinds lister dem, og docs/SCENARIOS.md dokumenterer hvert felt.
| Funksjon | Hva den besvarer |
|---|---|
| Spektrum | hvordan en jammer tar GNSS L-båndet, bånd for bånd, sekund for sekund |
| Klokker og tidssynkronisering | hvor lenge hver klokke holder tid etter at GNSS er tapt |
| Konstellasjoner rundt et hvilket som helst legeme | dekning, presisjonsfortynning og tilgjengelighet rundt jorden, Månen eller Mars |
| Solsystemet | hvor hver planet er, og lystiden for en hvilken som helst lenke |
| Navigasjon i lav jordbane | en passering, en lenke, en navigasjonsmelding og en fusjonert posisjonsbestemmelse, trinn for trinn |
| Kampanjer | et lenket oppdrag, et sveip eller et Monte Carlo-ensemble i ett scenario |
| Animasjon | en kjørings tidsserie som en animert tegning, en spiller eller bilder |
| Rapporter | hvert tall med enhet og merkelapp, i HTML (HyperText Markup Language) og JSON (JavaScript Object Notation) |
| Interoperabilitetseksporter | baner og geometri for andre verktøy: SP3, CCSDS OMM og OEM, CZML, KML, GeoJSON, STK og SigMF |
| Maritim tillit | kan broen stole på denne posisjonsbestemmelsen: en score fra 0 til 100 og begrunnelser for et fartøys NMEA, live eller fra en logg (veiledende, ikke typegodkjent navigasjonsutstyr) |
| NMEA-treningsstrømmer | syntetisk bro-NMEA med skriptet jamming og spoofing og en instruktørlogg, for mannskapstrening (bare tekst; aldri for et fartøys levende navigasjonssystemer; veiledende, ikke typegodkjent navigasjonsutstyr) |
| Interferenskart | hvor fly og skip meldte degraderte navigasjonsdata, og hvor mye av en rute det berører |
| Senderregion | hvor, under oppgitte forutsetninger, en kilde til degraderte posisjonsrapporter kan befinne seg: regioner ved oppgitt konfidensnivå, et tyngdepunkt med sin ellipse, aldri et punkt (MODELLED; kshana interference-map locate) |
| Bevispakker | en signert, offline-verifiserbar teknisk oppføring av et fartøys loggvindu og hva motoren beregnet fra det, for en hendelsesrapport (veiledende, ikke typegodkjent navigasjonsutstyr) |
| Tillitstelemetri | tillitsstrømmen som Prometheus-metrikker, SIEM-hendelser og valgfri OpenTelemetry, med et eksempel på Grafana-dashbord (deploy/grafana/kshana-gnss-trust.json) |
| Signal K og OpenCPN | tillitsscoren på en båts Signal K-server og i OpenCPN, med et referansebygg for en liten datamaskin ved siden av mottakeren (veiledende, ikke typegodkjent navigasjonsutstyr) |
| Eksport til testbenk | kshana bench-export: et scenarios kjøretøybevegelse og hendelser for en GNSS-simulator i laboratoriet (ingen signal skrives), og hvordan mottakerens logg skåres etterpå |
| Compliance-kartlegging og -rapport | kshana compliance-report: hvilke rader i offentlige robusthetsrammeverk et sett kjøringer gir belegg for, og gapet som blir igjen |
| Notebooks | kjørbare veiledninger: fartøystillit og treningsstrømmer, ruteeksponering i interferenskart, compliance-kartlegging og testbenken, kvante mot klassisk GDOP |
| Verifikator for Galileo OSNMA | hvilke satellitters navigasjonsdata en mottaker kan autentisere kryptografisk, og hvorfor en kontroll feiler; Kshana gir ingen rettigheter under EUs OSNMA ICD IPRs (se MERKNADEN på siden) |
Eksportformatene i sin helhet: 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 funksjon, tegnet fra en ekte kjøring: L-bånd-vannfallet, dekningskartet, solsystemet og en passering i lav jordbane
Kjør hvilken som helst av dem med kshana example <scenario> > s.toml && kshana s.toml: scenarioene er l-band-waterfall-jamming, constellation-multi-gnss-coverage, solar-system-tour og leo-pass-iridium.
De maritime funksjonene og interferensfunksjonene, tegnet fra innsjekkede syntetiske inndata: en tillitsscore, et interferenskart med ruteeksponering, en treningsstrøm og en bevispakke
Alle fire er oppdiktede data og veiledende: de viser formatet og oppførselen til programvaren, ikke hvordan noen mottaker eller noe system presterer mot interferens. Kjør den første med kshana receiver-trust examples/maritime-trust/session.toml, den andre med kshana route-exposure på eksemplene i examples/interference-map/, den tredje med kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea (bare til trening: aldri mat den inn i levende navigasjonsutstyr), og den fjerde som i docs/EVIDENCE-PACKS.md.
Hele funksjonstabellen, domene for domene
Hele detaljeringen domene for domene følger; for et modenhetsregister per funksjon, se docs/CAPABILITY.md og docs/VALIDATION.md.
| Område | Funksjon |
|---|---|
| Bane og geometri | SGP4/SDP4-propagering (validert til 4,12 mm mot alle 666 AIAA 2006-6753-vektorer); ekte to-linjers elementer (et innsjekket, datostemplet Celestrak gps-ops-øyeblikksbilde) eller syntetiske Walker-delta-konstellasjoner hvis midlere elementer realiserer formelen i:T/P/F til under 1 km over en 24 t propagering; multikonstellasjonssikt, presisjonsfortynning, geometrisk, posisjon, horisontal, vertikal og tid (GDOP/PDOP/HDOP/VDOP/TDOP), validert til 1e-6 mot gnss_lib_py 1.0.4, Stanford NAV Lab (Navigation and Autonomous Vehicles Laboratory), og GNSS-tilgjengelighet; en gradientfri optimerer for konstellasjonsutforming, dimensjonering av minste antall satellitter med streets-of-coverage, et sammenligningsverktøy for flere konstellasjoner og et Walker-utformingssveip som tabulerer dekning / PDOP / revisitt-tid over et rutenett av baneplan × satellitter og rapporterer de Pareto-optimale utformingene. |
| Numerisk propagator | En numerisk Cowell-propagator (src/propagator.rs) som utfyller den analytiske SGP4/SDP4-stien, med en hierarkisk kraftmodell med sju perturbasjoner (src/forces.rs): to-legeme + hele J2–J6 sonale feltet (de sonale harmoniske koeffisientene J2 til J6 for jordens flattrykking; den eksakte analytiske gradienten av det forstyrrende potensialet), et valgfritt EGM2008 tesseralt sfærisk-harmonisk geopotensial til grad/orden 70 (Earth Gravitational Model 2008; src/gravity_sh.rs; ekte koeffisienter fra NGA, US (United States) National Geospatial-Intelligence Agency, Holmes–Featherstone normalisert Legendre-rekursjon, kryssjekket mot de lukkede Legendre-funksjonene og den analytiske ∇V-identiteten), epokedrevet tredjelegemegravitasjon fra Sola og Månen (en innebygd lavpresisjonsefemeride, ingen DE/SPK-kjerne, Development Ephemeris / SPICE Spacecraft and Planet Kernel), solstrålingstrykk (kanonkulemodell med en konisk umbra+penumbra-skygge), atmosfærisk luftmotstand (Vallado stykkevis eksponentiell tetthet, medroterende atmosfære), den post-newtonske Schwarzschild-relativistiske korreksjonen og Lense–Thirring-rammedragingsleddet (IERS, International Earth Rotation and Reference Systems Service, Conventions 2010 §10, lineært i jordens spinnmoment, ~1–2 størrelsesordener under Schwarzschild), drevet av et valg mellom to adaptive integratorer (RK4, fjerdeordens Runge–Kutta, med stegdobling eller det innebygde paret Dormand–Prince RK5(4)). Validert mot Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853, 278 epoker over LEO (lav jordbane) + GTO (geostasjonær overføringsbane), der de konservative kraftnivåene stemmer til en verste-fall |Δr| 0,08 m over 24 t (tests/numerical_cowell_propagator_reference.rs); nivået med atmosfærisk luftmotstand karakteriseres separat (≈ 333 m / 24 t), og de absolutte inndataene for Sol/Måne-efemeride og tetthet forblir ærlig Modellert. Ytterligere intern evidens (ikke ekstern validering): den uforstyrrede banen er kontrollert mot den eksakte universelle-variabel-Kepler-løsningen til under en meter over 24 t, energi/spinnmoment bevares til ~1e-9, og hver perturbasjon stemmer med en håndavledet lukket signatur. |
| Manøvrer og banedesign | Impulsive ΔV-noder med 6×6 kovarianspropagering (ECI, jordsentrert treg, / LVLH, lokal vertikal, lokal horisontal, rammer for utførelsesfeil), integrasjon av endelige brenninger kontrollert mot den lukkede Tsiolkovsky-rakettligningen til < 0,01 %, en Izzo-2015-Lambert-løser for én omdreining, en eksakt universelle-variabel-Kepler-propagator og et porkchop-sveip (oppskyting × ankomst) av C3 (oppskytingsenergi) / ankomst-V∞ gitt ut som et JSON-konturrutenett, ytelsessimuleringslaget over GMAT/Orekit, med hver Lambert-utdata rundturskontrollert mot to-legeme-referansen og porkchop-minimumet kontrollert mot det analytiske Hohmann-gulvet. |
| Tidssystemer og referansesystemer | IERS-skuddsekund-UTC / TAI / TT / UT1-skalaer (Coordinated Universal Time, International Atomic Time, Terrestrial Time og jordrotasjonstiden Universal Time 1), et Julian-dato-API (application programming interface), IAU-2000 (International Astronomical Union) jordrotasjonsvinkel (ERA), GMST-baserte (Greenwich Mean Sidereal Time) TEME ↔ ECEF (sann ekvator, midlere jevndøgn ↔ jordsentrert, jordfast) med geodetiske WGS-84-system (World Geodetic System 1984), IAU 2006-presesjon (Fukushima–Williams), full IAU 2000A/2000B-nutasjon, IERS-polbevegelse og den jevndøgnsfrie CIO-baserte IAU 2006/2000A GCRS↔ITRS-reduksjonen (CIO = Celestial Intermediate Origin), alt validert bit for bit mot SOFA/ERFA-vektorene, og uavhengig kryssjekket mot ANISE (den rene Rust-gjenimplementeringen av NAIF/SPICE; NAIF = Navigation and Ancillary Information Facility hos NASA, USAs luft- og romfartsorganisasjon): kshanas GCRS→ITRS mot ANISEs ITRF93 (International Terrestrial Reference Frame 1993) fra JPLs earth_latest_high_prec.bpc, med de samme IERS-jordorienteringsparametrene matet til begge, stemmer til ≤ 0,86 m på bakken / ≤ 3,6 m i GNSS-bane (maks 0,028″) over åtte epoker 2020–2023. |
| Treghet | Tre-akset strapdown-INS, med kvaternionholdning, WGS-84 NED-mekanisering (nord-øst-ned), coning/sculling-kompensasjon og en deterministisk IMU-feilmodell (skalafaktor, skjevstilling, g-følsomhet, kvantisering, drift); en førsteprinsipp kaldatom-interferometer-akselerometer (Mach–Zehnder-fase, kvanteprojeksjonsstøy, kontrastforfall, vibrasjonskobling) som utleder koeffisienten for hastighetsrandomvandring; og et partikkelfilter med sekvensiell viktighetsresampling for kartstøttet (terreng-/gravitasjonsreferert) GPS-fornektet navigasjon. |
| Alt-PNT (uten GPS) | En målemodell for kaldatom-gravimeter hvis hvitstøygulv (σ = ASD/√τ, ASD = amplitudespektraltetthet) er utledet fra fysikken til CAI-akselerometeret; et sfærisk-harmonisk gravitasjonsanomalifelt av lav grad, fullt normalisert (kontrollert mot de lukkede Legendre-funksjonene og en håndutledet enkeltleddsanomali) pluss syntetiske mascons; syntesekjernen for gravitasjonsfunksjonaler (gravity_sh::gravity_magnitude / gravity_disturbance_mgal), «kartleseren» en gravitasjonsstøttet navigator tilpasser seg mot, er validert mot GRS80-normalgravitasjonsstandarden (Geodetic Reference System 1980), gjengir den lukkede Somigliana-normalgravitasjonen og de publiserte γ_e / γ_p til 3.5e-12 og gir et fysisk begrenset forstyrrelseskart fra det ekte ICGEM-feltet (International Centre for Global Earth Models) EGM2008 (RMS, rotmiddelkvadrat, ≈ 26 mGal, maks ≈ 89 mGal ved d/o 70; tests/icgem_gravity_reference.rs); og et partikkelfilter for tilpasning til gravitasjonskart som gjenvinner et GPS-fornektet spor fra anomalisekvensen det flyr gjennom. Det utvides til terrengreferert navigasjon (TERCOM/SITAN, terrain contour matching / Sandia Inertial Terrain-Aided Navigation, mot en SRTM (Shuttle Radar Topography Mission) .hgt DEM (digital høydemodell), src/altpnt/terrain.rs), et IGRF-14 geomagnetisk hovedfelt (14. generasjon av International Geomagnetic Reference Field) til grad/orden 13 (src/igrf.rs, kontrollert mot den lukkede formen for tiltet dipol og ∇V-endelige differanser), og en kombinert gravitasjon + magnetisk + terreng-navigator som fusjonerer alle tre skalare kanaler gjennom ett partikkelfilter (informasjon er additiv: ingen kanal gjør posisjonsbestemmelsen verre). En 60-minutters GPS-fornektet benchmark (et ~700 km / én times avbrudd der inertialløsningen driver til ~70 km) gjenvinnes til ~145 m (< 500 m) av en hierarkisk grov-til-fin tilpasser, målet for ESA NAVISP (Navigation Innovation and Support Programme) Quantum Wayfarer. |
| Fusjon | Løst koblet 15-tilstands GNSS/INS feiltilstands-EKF (extended Kalman filter) med lukket tilbakekobling (pakken gnss-ins); en tett koblet pseudoavstandsoppdatering som fortsetter å korrigere med færre enn fire satellitter; et koblet klokke + posisjon-filter; en generell unscented (sigmapunkt) Kalman-estimator for sterkt ikke-lineære målinger; en tett koblet GNSS/INS UKF-navigator (pseudoavstand + Doppler) hvis kraftmodellbaserte baneglid er selvkonsistenskontrollert til 0,77 m RMS over en 30-minutters krummende LEO-passering som inkluderer et GNSS-avbrudd på 120 sekunder (et filterkonsistenstall, ikke en validering mot en ekstern uavhengig referanse: denne navigatoren forblir MODELLED); og en full 17-tilstands tett koblet GNSS/INS UKF (posisjon, hastighet, holdningsfeil, akselerometer- og gyrobiaser, klokkebias og -drift) hvis kvante-CAI-dødregning går gjennom et avbrudd på 120 sekunder på kaldatom-akselerometerets utledede hastighetsrandomvandring. |
| Banebestemmelse | Gjenvinning av en banetilstand [r, v] fra avstandssporing fra bakkestasjoner, ved å sette sammen to-legeme + J2-kraftmodellen og RK4-integratoren med en Gauss–Newton-batch-korrektor (determine_orbit_batch, under en meter / mm·s⁻¹ fra støyfrie avstander, ~2 m ved et støygulv på 5 m) og en sekvensiell unscented-filtervariant (determine_orbit_sequential). |
| Observerbarhet og estimeringsteori | Et generelt, gjenbrukbart Fisher-informasjon / Cramér–Rao-lag (src/fim.rs): informasjonsmatrisen M = HᵀWH, den nedre Cramér–Rao-grensen, observerbarhetsrang og nullrom for datumdefekt (Moore–Penrose-pseudoinvers), og D/A/E/T-optimale forsøksutformingsskalarer fra en symmetrisk Jacobi-egenløser. Validert: egenverdier mot numpy.linalg.eigh, CRLB-kovariansen mot σ²(XᵀX)⁻¹ via numpy.linalg.inv, og GNSS-DOP fra informasjonsmatrisen, alt stemt til 1e-9 (tests/fim_observability_reference.rs), og i tillegg kryssjekket mot de lukkede grensene til Kay (1993) med Monte Carlo-oppnåelse av CRLB. Det ligger under DOP-motoren, CRLB for passiv geolokalisering og månens observerbarhetsteorem for absolutte stasjoner (nedenfor). |
| Månen og cislunart rom | En sirkulær begrenset tre-legemers (CR3BP)-propagator for jord–måne i det roterende systemet, med bevart Jacobi-konstant og alle fem Lagrange-punktene (src/cr3bp.rs), nå med en 6×6 tilstandsovergangsmatrise (STM) og en enkeltskyting differensialkorrektor (cr3bp_jacobian, propagate_state_stm, differential_correct_halo) som gir virkelig periodiske halo / NRHO-baner (nesten rettlinjet halobane): STM-en er validert mot endelige differanser, korrigerte baner lukkes til maskinpresisjon, og å så den publiserte apolune-tilstanden gjengir den sørlige L2 9:2 NRHO (L2 = det andre Lagrange-punktet for jord–måne; Gateway-banen) med periode ≈ 6,57 d / perilune ≈ 3 250 km, i tråd med de publiserte ≈ 6,56 d / ≈ 3 370 km (en CR3BP-løsning, sirkulær og uten Sola, ikke validert mot en reell LANS (Lunar Augmented Navigation Service)/Gateway-efemeride; den selenosentriske MCI/MCMF-transformasjonen (Moon-centred inertial / Moon-centred, Moon-fixed) av den korrigerte banen er en oppfølger); pluss LunaNet / LNIS (LunaNet Interoperability Specification) cislunar PNT-geometri (MCI↔MCMF-reduksjon, selenografiske koordinater) med en ARAIM-passering ved månens sørpol som ærlig viser integritetsgapet: en σ_URE (brukeravstandsfeil) på ~30 m driver beskyttelsesnivået langt over en alarmgrense på 50 m (src/lunar.rs, scenarios/lunanet-araim.toml); og en DOP-forsterkning med overflatebeacons (src/lunar_beacon.rs) som viser hvordan noen få innmålte avstandsmålende overflatebeacons gir de siktlinjeradene med lav elevasjon og bred asimut som et rent overhead-sett med bare bane mangler, og som kollapser den dårlig betingede sørpolare GDOP og, via et rot-sum-kvadrat-feilbudsjett, den realiserte posisjonsnøyaktigheten i meter (gjenbruker den gnss_lib_py-validerte DOP-kjernen og den lukkede formen for sikt over en luftløs horisont; analysen av presisjonsfortynning er skrevet opp i arXiv:2607,06212). |
| Månens PNT-pakke | En navigasjonspakke for Månen/cislunar lagt på CR3BP-kjernen, hver en kjørbar kind: Lunar Coordinate Time (lunar-time-offset, src/lunar_time.rs, den sekulære LTC/TCL − TT-raten (LTC = Lunar Coordinate Time; TCL = den franske formen, Temps-Coordonnée Lunaire) fra egenpotensialforskjellen + kinetisk ledd, rapportert med det publiserte båndet 56–59 µs/dag); et geodetisk VLBI-forsinkelsesobservabel for Månen (very-long-baseline interferometry) (lunar-vlbi, src/lunar_vlbi.rs, en nærfelts to-avstandsdifferanse-forsinkelse + rate for jordgrunnlinje, kryssjekket mot den planbølge-Δ-DOR (delta differential one-way ranging) i samme kodebase i fjernfeltsgrensen, med partiellene bekreftet ved endelige differanser); en felles flerteknikk-OD + klokke-batchestimator (lunar-joint-od-clock, src/lunar_combination.rs, en Gauss–Newton-tilpasning som fusjonerer VLBI + månelokale avstander + avstander mellom satellitter) som bærer et Fisher-informasjon-observerbarhetsresultat: intern avstandsmåling alene etterlater en datumdefekt for stivt legeme med seks frihetsgrader, så en overflatestasjons absolutte posisjon er uobserverbar til en jordramme-binding legges til: en VLBI-forsinkelse for jordgrunnlinje gjenoppretter observerbarhet for en tynn konstellasjon og skjerper Cramér–Rao-grensen for en rik, der det absolutte datumet lukkes ved tre ikke-kollineære jordstasjoner (observerbarhetsresultatet er skrevet opp i arXiv:2607,02566); realisering av referansesystem (lunar-frame-realisation, src/lunar_frame_realise.rs, en 7-parameter Helmert-datumtilpasning + IAU 2015 WGCCRE-orienteringsbinding; WGCCRE = IAU Working Group on Cartographic Coordinates and Rotational Elements); en Moonlight/LCNS-klasse tjenestevolum-analyse (LCNS = Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs, DOP / dekning / tilgjengelighet + en generalisert ARAIM HPL/VPL-envelope for Månen (horisontalt/vertikalt beskyttelsesnivå), som gjenbruker den gnss_lib_py-validerte DOP-kjernen og LunaNet-maskineriet med σ_URE≈30 m); differensiell PNT for Månen (lunar-differential-pnt, src/lunar_dpnt.rs, en månemessig analog til differensiell GNSS / satellittbasert forsterkningssystem (SBAS): eksakt felles klokkekansellering + førsteordens romlig dekorrelasjon mot grunnlinje, som gjenbruker SBAS-beskyttelsesnivået i DO-229E; DO-229E er RTCA-standarden (tidligere Radio Technical Commission for Aeronautics) for minimum operasjonell ytelse for SBAS-mottakere); og en LunaNet/IOAG-tilpasset interoperabilitetseksport (IOAG = Interagency Operations Advisory Group; lunar-interop-export, src/lunar_interop.rs, CCSDS-OEM (Orbit Ephemeris Message) + rundtur i månetidsskala i IAU 2015 månelegemesystemet, pakket i KIF-konvolutten). Evidensnivåene per del står i verifikasjonsmatrisen: Lunar Coordinate Time, den felles OD + klokke-estimatoren, realiseringen av referansesystem og tjenestevolumgeometrien er VALIDATED (hver mot den uavhengige referansen raden navngir, det samme gjelder kjernestien til VLBI-forsinkelsen); VLBI-observabelen, observerbarhetsresultatet for datumdefekt, differensiell PNT og interoperabilitetseksporten er MODELLED. Parametrene er illustrative verdier fra offentlige kilder, ikke validert mot reell VLBI/Gateway-sporing, ikke tilknyttet eller anbefalt av noe byrå, ingen påstand om TRL (technology readiness level) eller arv. |
| PNT i dypt rom og ved Mars | En åpen radiometrisk navigasjonsmotor: iterativ lystid + relativistisk Shapiro-forsinkelse, to-/én-/tre-veis Doppler og avstand (Moyer to-ben), koherente transponderomvendingsforhold, regenerativ/PN-avstandsmåling (pseudo-noise) (CCSDS 414, standarden for pseudo-noise-avstandsmåling), og Δ-DOR i himmelplanet (CCSDS 506, Delta-DOR-standarden), med solplasma-/tropo-/ionomedier; CCSDS-TDM (503) parsing og utskrift av sporingsdatamelding; et redusert-dynamisk kvadratrot-informasjonsfilter (RTN, radial, transversal, normal, empiriske akselerasjoner + en klokke med 3 tilstander om bord + atmosfærisk luftmotstand fra Mars) som gjør banebestemmelse for Mars-LMO til ≈ 0,2 m i en syntetisk lukket sløyfe; en felles enveis + toveis fusjons-estimator; en flerlegemedynamikkkjerne (Body{μ, re, zonals, gravity, IAU-pole}, Mars GMM-3 (Goddard Mars Model 3)-gravitasjon, et IAU kroppsfast Mars-system, en koblingsbar EphemerisProvider-søm, todelte Julian-datoer + TT↔TDB (Barycentric Dynamical Time)); og relé-PNT-scenarioet mars-pnt (en MARCONI areostasjonær relékonstellasjon) med en ende-til-ende GSE-ytelsessimulator (GSE = bakkestøtteutstyr) (geometri → lenkebudsjett → observabler → SRIF → kovarians). Simuleringsvalidert (kovarians-/lukket-sløyfe-kvalitetsmål); Mars-dynamikken med Sola i sentrum er kryssjekket mot JPL DE440 (137 m @ 1-dagers bue, xval/anise-mars-od). Validering mot reelle DSN/ESTRACK-sporingsdata står på veikartet. |
| Solsystemet og PNT for hvilket som helst legeme | En kjernefri efemeride for hele solsystemet (src/ephem.rs, src/ephem_provider.rs): hver planet fra JPL Standish Kepler-elementer (Tabell 1, 1800–2050 e.Kr.; tabell 2a/2b, 3000 f.Kr.–3000 e.Kr.) med hver plantes publiserte nominelle feil, jorden og Månen delt av den lunare serien, og Phobos, Deimos, Io, Europa, Ganymedes, Callisto og Titan fra JPL midlere elementer og IAU (International Astronomical Union) rotasjonsmodellen; hvilket som helst legeme relativt til et annet i ICRF (International Celestial Reference Frame). Body bærer nå GM (gravitasjonsparameter), radier, J2 (den andre sonale harmoniske) der den er publisert og IAU-polen og nullmeridianen for atten legemer. Typen solar-system rapporterer posisjoner, hastigheter, konstanter, lystid og én-/toveis avstand mellom to hvilke som helst legemer (den eksisterende radiometriske lystidsløseren, med solens Shapiro-forsinkelse) og et banespor per legeme, nok til å tegne et interaktivt solsystem; typen body-pnt plasserer en orbiter eller en lander rundt hvilket som helst legeme (scenarios/mars-orbit-pnt.toml, scenarios/europa-surface-pnt.toml) med en lokal Walker-konstellasjon, maskineriet for presisjonsfortynning og Gauss–Newton, og en dypromsavstand fra jorden. Validert mot JPL Horizons (DE441, JPL Development Ephemeris 441): Merkur–Saturn og jorden fra tabell 1 innenfor to ganger den nominelle feilen (verst 1,87×), alle åtte planetene fra tabell 2a/2b (verst 1,71×), og lystiden jorden–Mars/Jupiter. Modellert: Uranus og Neptun fra tabell 1 (2,0× og 5,2× den oppgitte feilen mot DE441), Pluto, månene og navigasjonsresultatene fra body-pnt. |
| Fusjonert MEO + LEO PNT | src/leo_fusion/: systemuavhengig LEO-posisjonering, -navigasjon og -tidssynkronisering over en vilkårlig konstellasjon (Walker-skall, elementsett, GNSS-forhåndsinnstillinger) og et vilkårlig signal (bærebølge, brikkerate, C/N0-envelope, avstandsfeil for signal i rommet), med valgfrie forhåndsinnstillinger i én fil som bærer kildene sine (Xona Pulsar X1/X5, Iridium STL, Starlink-signaler ved anledning, CentiSpace, et representativt C-bånd-system, ATOMIC-efemeridemodellen uten klokke). leo-pvt: Doppler-posisjonsbestemmelse i batch fra avstandsrate (én og flere satellitter, tilstander for klokkedrift og hastighet, geometri for ett enkelt overflyvning langs/på tvers av sporet og speilløsningen), felles GNSS + LEO vektet minste kvadraters metode med intersystembiaser per system og sigmaer per signal oppgitt av kalleren, DOP mot antall LEO-satellitter, dekning ved polene og i Arktis og LEO-tidsoverføring til UTC mot C/N0 og oscillatoren. leo-ppp: et PPP-EKF (presis punktposisjonering, utvidet Kalman-filter) med flyttall, kun med GNSS og med LEO, konvergenstiden og en kjikvadrat-NEES-konsistenstest. ntn-positioning: 5G-posisjonering i ikke-terrestriske nett fra Cramér-Rao-grensen for båndbredden. Validert: LEO-Doppler-envelopen mot de publiserte Iridium- og Xona-tallene. Modellert: resten, med PPP-trenden sammenlignet med Li et al. (2019) – se docs/LEO-PNT-FUSION.md. |
| Integritet | Snapshot- og løsningsseparasjons-RAIM (ARAIM-stil) – autonom integritetsovervåking i mottakeren – med horisontale/vertikale beskyttelsesnivåer (HPL/VPL), feildeteksjon og -eksklusjon og Stanford-integritetsdiagrammer; et eksplisitt beskyttelsesnivå med integritetsrisikobudsjett etter multiple-hypothesis solution separation (MHSS), inkludert den konstellasjonsomfattende feilmodusen for to eller flere konstellasjoner (EU (Den europeiske union) ARAIM / DO-316, RTCA-ytelsesstandarden for GPS-utstyr i fly med flybasert augmentering), kjørt på et reelt GPS + Galileo-snapshot (scenarios/araim-gps-galileo.toml). Beskyttelsesnivået bruker den ensidige projeksjonen av nominell bias b_k = Σ_i|s_i|·b_nom per feilmodus og integritets-sigmaen σ_URA (brukerens avstandsnøyaktighet; skilt fra nøyaktighets-sigmaen σ_URE, brukerens avstandsfeil) fra Integrity Support Message – se docs/ARAIM_REFERENCE.md. Deteksjonskjernen (χ²-/ikke-sentral-χ²-/normalterskler og K-multiplikatorer) er eksternt validert mot SciPy over 171 tilfeller (tests/raim_reference.rs); geometrien gjenbruker DOP-kjernen som er validert mot gnss_lib_py. Selve budsjettfordelingen av ARAIM MHSS-integritetsrisikoen har ingen publisert numerisk uavhengig referanse og forblir ærlig modellert. |
| Utvidelse (SBAS) | SBAS-/WAAS-beskyttelsesnivåer (WAAS = Wide Area Augmentation System) i DO-229E-formen med vektet minste kvadraters metode (K-faktorer for presisjonsinnflyging og enroute) og den ionosfærefrie L1/L5-tofrekvenskombinasjonen (L1 og L5 er to sivile GPS-signalbånd; IS-GPS-705, GPS-grensesnittspesifikasjonen for L5-signalet, γ₁₅ ≈ 1,793) som ligger til grunn for DO-316 — src/sbas.rs. Algoritmen for beskyttelsesnivå er eksternt validert mot RTKLIB SBAS-PL-forgreningen (RTKLIB = det åpne biblioteket for sanntids kinematisk posisjonering; PL = beskyttelsesnivå) (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, DO-229D – forrige revisjon av DO-229 – vedlegg J) kjørt på reelle EGNOS-data (European Geostationary Navigation Overlay Service), og gjengir HPL med mindre enn 2e-3 m avvik (tests/sbas_reference.rs); gLAB (GNSS Laboratory-verktøysuiten) v6.0.0 bekreftet den samme konvensjonen. |
| Klokke og tidssynkronisering | Kalman-holdover med to tilstander (kovarians på Joseph-form, NIS/NEES – normalisert innovasjon i kvadrat / normalisert estimeringsfeil i kvadrat – konsistenshelse); stabilitet i Allan-familien (ADEV / MDEV / TDEV / HDEV / MTIE – Allan-, modifisert Allan-, tids- og Hadamard-avvik og maksimal tidsintervallfeil) med konfidensintervaller som er spesifikke for støytype og en full potenslovtilpasning med fem koeffisienter etter IEEE-1139 (IEEE Std 1139, definisjonene fra Institute of Electrical and Electronics Engineers for frekvens- og tidsmetrologi) — estimatorene er validert på reell maskinvare mot Stable32: en reell primærstandard med cesium 5071A mot en hydrogenmaser (556 990 fasesampler, 16 midlingsfaktorer, OADEV/OHDEV – overlappende Allan-/Hadamard-avvik – til 1e-3; tests/cs5071a_reference.rs) og den kanoniske Stable32 PHASE.DAT-regresjonsserien (139 midlingsfaktorer, OADEV/MDEV/TDEV til 1e-3; tests/phasedat_reference.rs); estimatorene ADEV/MDEV/TDEV og telekom-målet for vandring MTIE er i tillegg kryssjekket mot det uavhengige biblioteket allantools 2024,06 til < 1e-9 på NIST SP 1065-serien (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); geometriske korreksjoner (Sagnac, GNSS common-view); og de operative overføringsmetodene — TWSTFT (toveis tids- og frekvensoverføring via satellitt) med BIPMs (Det internasjonale byrå for mål og vekt) lukkede Sagnac-form, GNSS common-view, PPP-tidsoverføring (presis punktposisjonering) uten ionosfære, en optisk fririomsforbindelse med turbulensscintillasjon og en klokkeensemble-tidsskala (papirskala) med invers varians som ligger under den beste bidragende klokken. En klokke-holdover-kalkulator for GNSS-nektet miljø (src/holdover.rs) gir den lukkede van Loan-veksten i feil under frittløp som en invertering fra holdover til terskel — hvor lenge en klokke går fritt før tidsfeilen overskrider budsjettet — over representative klassiske og kvanteklokkeklasser; modellert (kryssjekket mot den flertrinns kovariansrekursjonen clock_state), og ærlig på at for en svært stabil klokke settes holdover til en stram terskel av den antatte støygulvet ved lang tau, ikke av den siterte ADEV-en. Et betinget tidsbeskyttelsesnivå (src/tpl.rs) utvider holdover til spoofing: en grense for den uoppdagede tidsfeilen, gitt en uavhengig kryssjekk, som setter sammen et k-sigma-gulv for monitoren, van Loan-variansen under frittløp over deteksjonsforsinkelsen og en CUSUM-tid til alarm (kumulativ sum). Kalibrert på en reell innspilt spoof (JammerTest 2024) og kan gjengis via cargo run --example tpl_jammertest; MODELLED sammensetning (ikke noe integritetsrisikobudsjett per time), betinget av deteksjon — det finnes ingen endelig ubetinget grense. |
| Målingsdomenet i GNSS | Fremover-syntese av pseudoavstand / Doppler med ionosfære fra Klobuchar (kringkastet) og IONEX / TEC-rutenett (IONosphere map EXchange-format / totalt elektroninnhold; målt) — inkludert en IONEX-filparser, tidsinterpolasjon mellom kart og slant-obliquity-avbildningen i tynt skall — troposfære fra Saastamoinen + Niell og snapshot-RAIM (HPL/VPL). |
| Robusthet | Jamming i linkbudsjett (J/S → effektiv C/N₀ → tap av lås — forhold mellom jammer og signal, forhold mellom bærebølge og støytetthet — der spektralseparasjonsfaktoren mot jamming Q nå er utledet fra de faktiske effektspektrene til signalet og jammeren via src/navsignal.rs — Q = 1/(R_c·κ), kryssjekket i CI mot den tidligere representative konstanten); en stokastisk tidsspoof-detektor (Neyman–Pearson / χ²₁-energitest med lukket form og Monte Carlo for P_fa/P_md og en sikkerhetskvalitetsmåling (FoM) på 1 − P_md); og en flerlags spoof-detektor som fusjonerer en RAIM-konsistensparitetstest (med blindsonen for felles modus modellert ærlig), en RF-AGC-effektmonitor (automatisk forsterkningsregulering) og en monitor for signalkvalitet (SQM — overvåking av signalkvalitet, tidlig minus sen); og et feilbudsjett for kvanteinertial dødregning (QuantumNavBudget, src/inertial/quantum_imu.rs) som setter sammen hastighetsrandomvandringen med hvit støy fra kaldatominterferometeret med restbias (kryssjekket mot den uavhengige AccelModel-integratoren) og skalafaktorfeil til et mål for posisjonsdrift over holdover — den inertiale tvillingen til klokkens holdover. En rammeverkjustert robusthetsscoremotor (src/resilience/) avbilder en arkitekturs simulerte oppførsel på delscorer per dimensjon over Kshanas egne sju robusthetskategorier (ikke DHS-termer), tilpasset US Department of Homeland Security Resilient PNT Conformance Framework, og studerer deretter beslutningsstabiliteten til en enkelt sammensatt score eller et modenhetsnivå under et Dirichlet-vektingssimpleks og et ensemble med fem trusler — Kendall-τ-rangeringsustabilitet, hyppighet for bytte av vinner på topp 1 og diversitetskollaps i felles modus (Hill-N2), med en integritetshashet sikringsrapport (35 håndutledede tester mot uavhengig referanse). Kan gjengis via cargo run --example resilience_report; MODELLED syntetiske arkitekturer, en egenvurdering justert mot RPCF v2.0, ikke en sertifisering. Se docs/RESILIENCE-CROSSWALK.md. |
| Passiv RF-geolokalisering | TDOA/FDOA-geolokalisering av sendere (ankomsttidsforskjell / ankomstfrekvensforskjell; src/geolocation.rs) — finn en jammer eller spoofer (eller en tilfeldig kilde for omvendt PNT) fra hyperboloider av ankomsttidsforskjell over et mottakernettverk, løst med minste kvadraters metode etter Gauss–Newton; ved å legge til ankomstfrekvensforskjell med bevegelige mottakere finnes senderens posisjon og hastighet samtidig, med Cramér–Rao-grensen for posisjonskovariansen utledet fra nettverksgeometrien. MODELLED (interne konsistenskontroller mot uavhengig referanse: runder fra fremover til invers, identiteten J·CRLB = I, monotoni i GDOP og at estimatoren når sin egen CRLB under Monte Carlo) — en punktkildemodell med fri sikt, uten ledd for flerveis / NLOS (ikke fri sikt), mottakerklokkebias eller refraksjon. |
| Navigasjonssignal og kodesporing | Signalnivået mellom linkbudsjettet og måledomenet (src/navsignal.rs): effekttetthetsspektre (PSD) med enhetsareal for BPSK-R(n) (binær faseskiftmodulasjon med rektangulære brikker) og sinus-BOC(m,n) (binær offset-bærebølge); den spektrale separasjonskoeffisienten (SSC) κ = ∫ G_s·G_i df, som utleder Q mot jamming som jamming-modellen bruker (Q = 1/(R_c·κ)) fra de faktiske signal- og jammerspektrene i stedet for en representativ konstant; den effektive (Gabor-)båndbredden (BOC > BPSK — målet for avstandsinformasjon / Cramér–Rao); den termiske støyjitteren i koherent tidlig–sen DLL-kodesporing (DLL = delay-lock loop; Kaplan & Hegarty; ~submeter for C/A — GPS-koden for grov innhenting — ved 45 dB-Hz); og envelopen for flerveisfeil (koherent EML, tidlig minus sen — undertrykkelse med smal korrelator). Validert mot analytiske ankerpunkter i lukket form (BPSK egen-SSC = 2/(3·R_c), PSD-er med enhetsareal, submeter C/A-jitter). Dette er analyse av signal-ytelse, ikke maskinvareutforming av antenne / RF-nyttelast (en rolle for en nyttelastpartner). |
| Interoperabilitet | RINEX-3-innlesing av kringkastet efemeride for flere GNSS (GPS, Galileo, QZSS — Japans Quasi-Zenith Satellite System —, BeiDou MEO/IGSO — middels høy jordbane / skråstilt geosynkron bane — via IS-GPS-200, GPS-grensesnittspesifikasjonen; GLONASS, Russlands Global Navigation Satellite System, via PZ-90 — det russiske datumet Parametry Zemli 1990 — RK4 med tilstandsvektor) som kan brukes som konstellasjonskilde (RINEX inn, PNT-geometri ut); en RINEX-3-parser for observasjoner (pseudoavstand, bærebølgefase, Doppler, signalstyrke; observasjonsoppsettet 4,00 forventes å kunne parses, men er ikke testet, og RINEX 4-navigasjonsfiler avvises med navns nevnelse i stedet for å dekodes feil) som nå mater en løser for enkeltpunktsposisjonering (SPP) (pvt) — reelle kodeobservasjoner inn, en reell mottakerposisjon ut, validert på IGS-data; en lese-/skrivefunksjon for presis efemeride i SP3-c/d med Lagrange-interpolasjon av 9. orden; og CCSDS OEM 2,0 + OMM-eksport (Orbit Mean-elements Message) for flydynamikkverktøy (GMAT, Orekit, STK — Systems Tool Kit); og parsing og utsending av CCSDS-TDM (503) sporingsdatameldinger for radiometrisk sporing i dypt rom. |
| Oppdragsanalyse (systemutvikling) | Førsteordens budsjetter for oppdragsutforming, hvert et kjørbart slag: oppskytings- og stigegeometri med to legemer (launch-window — oppskytingsazimut sin Az = cos i/cos lat, minimum inklinasjon, bonus fra jordrotasjonen, Δv for planendring med dogleg, daglige muligheter; src/launch.rs); en ballistisk innstigningskorridor etter Allen–Eggers (reentry — maksimal retardasjon, hastighet/høyde ved maksimal g, hastighet ved maksimal oppvarming; src/reentry.rs); dekningsgeometri for jordobservasjon (eo-coverage — svatbredde / GSD i nadir (bakkeoppløsning) / tilgang utenfor nadir / revisitt via SMAD-romtrekanten (Space Mission Analysis and Design); src/eo_payload.rs); et 3-DOF-budsjett for holdning og pekefeil (tre frihetsgrader; attitude-budget — gravitasjonsgradientmoment i verste tilfelle + RSS-pekebudsjett (kvadratroten av kvadratsummen); src/attitude_budget.rs); prediksjon av bakkestasjonsoverflyvninger (passes — AOS/TCA/LOS, signalinnhenting / tid for nærmeste passering / tap av signal, maksimal elevasjon, tilgangstid; src/passes.rs); og et enveis linkbudsjett over linkligningen i CCSDS 401 / DSN 810-005 (CCSDS-standarden for radiofrekvens og modulasjon / håndboken for linkutforming i Deep Space Network; link-budget — FSPL (fririomstap), C/N₀, Eb/N₀ (energi per bit i forhold til støytetthet), margin, lukking; src/linkbudget.rs). MODELLED analytiske førsteordens budsjetter — laget før maskinvare, under STK/GMAT/Basilisk, ikke en erstatning for 6-DoF eller radiometri. |
| Beslutningsanalyse og avveining (MCDA) | En full flerkriterie-beslutningsanalyse (MCDA)-suite (src/mcda/) som dekker alle fire metodefamilier — verdiaggregering (WSM, WPM, WASPAS — vektet summodell, vektet produktmodell, vektet aggregert vurdering av sumprodukt), avstand til ideal (TOPSIS, Technique for Order of Preference by Similarity to Ideal Solution), kompromissprogrammering (VIKOR, fra serbisk for flerkriterieoptimering og kompromissløsning) og rangering (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I, fra fransk for eliminering og valg som uttrykker virkeligheten), pluss forholdssystemet MOORA (Multi-Objective Optimization on the basis of Ratio Analysis) og proporsjonale COPRAS (Complex Proportional Assessment) — med AHP (Analytic Hierarchy Process), prioritetsvekting ved parvis sammenligning (konsistensforhold), en Pareto-front av ikke-dominerte løsninger, sensitivitetsanalyse av vekter og nyttescoring med flere attributter. De ni aggregatorene gjengir de uavhengige tredjepartsbibliotekene pymcdm (WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II) og pyDecision (ELECTRE I, COPRAS) til < 1e-9, og AHP-prioritetsvektoren + konsistensforholdet stemmer overens med Saatys tabell over tilfeldig indeks og den principale egenverdiløseren i SciPy/LAPACK til < 1e-9 (tests/mcda_*_reference.rs). VALIDATED — beslutningslaget under avveiningsmotoren. |
| Rommiljø | En miljømodell for romvær (space-weather, src/space_weather.rs): indekser for sol- (F10.7 / sentrert F10.7a over 81 dager — solens radiofluks på 10,7 cm) og geomagnetisk aktivitet (Kp, den planetariske K-indeksen, med den definisjonsmessige Kp↔ap-tabellen — ap er dens lineære planetariske amplitude), den eksosfæriske Jacchia-1971-temperaturen de driver (validert mot publiserte verdier for solminimum/-middel/-maksimum) og den aktivitetskorrigerte mot den statiske nøytraltettheten i termosfæren i høyden — solsyklusavhengigheten i tettheten som den statiske USSA76-atmosfæren (US Standard Atmosphere 1976) utelater. MODELLED: en kalibrert førsteordens kobling til skalahøyden, ikke en datavalidert atmosfære (NRLMSISE — modellen for eksosfæren fra US Naval Research Laboratory med massespektrometer og inkoherent spredningsradar). |
| Evaluering og avveining for maskinlæring | En testbenk for evaluering av deteksjon av RF-forstyrrelser (impairment-eval, src/impairment_eval.rs): et merket, parameterforankret syntetisk korpus (nominell / jamming / tidsspoof / posisjonsspoof / flerveis), en detektoragnostisk ROC/AUC-løype (mottakerens driftskarakteristikk / areal under kurven) som scorer en vilkårlig detektor (energi | agc | sqm | paritet | fusjonert) med Pd per klasse (deteksjonssannsynlighet) ved en Pfa-mål (sannsynlighet for falsk alarm), og optimismegapet mellom i og utenfor fordelingen (modus for fordelingsskift). Dessuten en kvante-mot-klassisk PNT-avveining (quantum-trade, src/quantum_trade.rs) som tallfester fordelen i tid/inertial holdover for en kandidatklokke fra en målt ADEV-kurve mot en klassisk grunnlinje, med forbeholdet om gulvet ved lang τ ført på artefakten og en konvolutt for robusthet mot tid i GNSS-nektet miljø. Evalueringsmetrikkene (AUC / forvekslingsmatrise / Pd-Pmd, der Pmd er sannsynligheten for utelatt deteksjon) er validert til eksakt likhet med scikit-learn 1.9.0 — også på reell ESA OPS-SAT-telemetri (anomalideteksjonsdatasettet OPSSAT-AD, Ruszczak et al. 2025, CC BY 4,0 — Creative Commons Attribution 4,0), der Kshanas Mann–Whitney ROC AUC gjengir scikit-learns roc_auc_score til < 1e-9 på det tilbakeholdte testutvalget og en gjennomsiktig toppteller-detektor skiller de merkede anomaliene ved AUC ≈ 0,85 (tests/opssat_ad_reference.rs) — og avveiningsmotorens numeriske kjerner (ADEV NNLS — ikke-negativ minste kvadraters metode — tilpasning, χ²-konsistensbånd, van Loan-klokke Q) mot scipy 1.17.1; tallene for enhetsfordel som er bygget oppå forblir MODELLED driftskarakteristikker — aldri felt- eller IQ-data (sampler i fase/kvadratur), ingen dom om bra/dårlig. På testbenken bygger en dypere studie av optimismegapet (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) som scorer et panel med 13 detektorer (energi/AGC/SQM/paritet pluss detektorer med logistisk regresjon og enlags skjult MLP — flerlags perceptron — med seed), tilpasser skaleringslover i og utenfor fordelingen med en permutasjonsnull og lærer en leave-one-out-prediktor for degradering utenfor fordelingen fra statistikk i fordelingen (cargo run --example optimism_study). En frontend for programvaredefinert mottaker (src/sdr.rs — rå IQ/IF (mellomfrekvens) → korrelatorens tidlig-/prompt-/sen-uttak → SQM) og adaptere for innlesing av reelle data (src/realdata/ — RINEX, u-blox UBX (u-bloxs binære protokoll), GnssLogger, JammerTest, Yunnan, SatGrid) lar de samme detektorene kjøre over opptak som leveres lokalt (ingen datasett er sjekket inn). Kartet over krysningspunkt for robusthet, kvante mot klassisk, under parameterusikkerhet (src/crossover.rs; cargo run --bin crossover_study) regenererer krysningsstudiene for inertial og klokke bak figurene under Resultater. |
| Demonstrator for kvanteaktivert PNT | Tre kjørbare, MODELLED bruksområder bak den åpne motoren, som hver gir ærlig TradeEvidence + en post om representativitet / gap mot flyging (src/representativeness.rs): pålitelig kvantetidsoverføring (quantum-time-transfer, src/timetransfer_chain.rs — et ende-til-ende-budsjett for optisk gitterklokke + fotonisk link mot CSAC (atomklokke i brikkeformat) + toveis RF, med et gjenbrukt tidsbeskyttelsesnivå, en sikkerhets-FoM mot forsinkelses-/replay-angrep (1 − P_md) og klokkeanomalideteksjon + CUSUM-latens); GNSS-fri kvantenavigasjon (quantum-gnss-free-nav, src/quantum_nav_od.rs — en inertial frittgang med kaldatominterferometer mot et INS i navigasjonsklasse over et GNSS-bortfall, ærlig på at uten ekstern posisjonsbestemmelse er akselerometerbiasen uobserverbar, slik at feilen fortsatt vokser); og feil-/anomalideteksjon i kvantesystemer (quantum-anomaly-detect, src/quantum_faults.rs — en merket feilkatalog med en ROC AUC med bootstrap-konfidensintervall fra den eksternt validerte eval_stats og en minste detekterbare feil ved en fast falsk-alarmrate). Et felles feilmodellbibliotek for kvanteenheter (src/quantum_devices.rs) og en samlet løype for avveining mellom kvante og klassisk (src/qtrade.rs) ligger under dem. De validerte kjernene de bygger på (evalueringsmetrikker mot scikit-learn, avveiningskjerner mot scipy) gjenbrukes; tallene for enhetsfordel som er bygget oppå forblir MODELLED — illustrative offentlig tilgjengelige parametere for enheter/linker, modellerer klassen, ingen TRL / flyarv / sertifisering, ingen støtte fra noe byrå. |
| Gjennomtenkt ingeniørkunst og integritetspåvirkning | Et perspektiv på avkastning på kostnad per dekning (ROI) (src/frugal.rs) — kostnad per enhet levert dekning for en arkitekturavveining — og en avbilding fra utelatt deteksjon → integritetspåvirkning (src/integrity_impact.rs) som gjør en monitors rate for utelatt deteksjon om til dens bidrag til integritetsrisikoen. MODELLED budsjetter som beslutningsstøtte, additive. |
| Utveksling av artefakter | Kshana Interchange Format (KIF) (src/interchange.rs) — en versjonert, selvbeskrivende konvolutt rundt et scenarioresultat med slag, skjemaversjon og MODELLED/VALIDATED-merkelapper, slik at en lagret artefakt forblir selvdokumenterende og eldre konvolutter forblir lesbare med fremoverkompatibilitet. |
Hver funksjon er tilgjengelig som et Rust-API, et kjørbart scenario kind eller begge deler. Modenhet per funksjon — validert, kjørbar eller bibliotek — føres i docs/CAPABILITY.md. En maskinkontrollert verifikasjonsmatrise (src/verification.rs) gjengir kryssreferansen krav → modul → test → uavhengig referanse → status, med enhetstestede ærlighetsinvarianter som kun tillater merkelappen validert der en uavhengig ekstern referanse støtter den — og som registrerer maskinvare- og PA-funksjonene (produktsikring) som Kshana bevisst ikke tilbyr.
De fire sensorpakkene, slik de først ble publisert (resultater)
Resultater#
Hvert scenario sammenligner en kvantesensor med sin klassiske motpart gjennom et GNSS-bortfall på ~1,8 t. Tallene kan gjengis (scenario + seed + version).
Hva kvantesensorer gir når GNSS er borte — clock-holdover · seed 42 · tegnet med motor 0.40.0, og hver figur ovenfor kontrolleres på nytt mot gjeldende motor ved hvert bygg av tests/published_figures_still_reproduce.rs · SVG
Fordelen er avhengig av bortfallets varighet og av vibrasjon, med et eksplisitt balansepunkt der klassisk vinner — vist ærlig over stigen for teknologisk modenhet (tallene for optiske klokker er mål for bakkedemonstratorer; ingen strontium-optisk klokke har fløyet):
Krysningspunkt for robusthet, kvante mot klassisk — TRL-stige for klokkens holdover (øverst) · kart over inertialfordel med balansekontur (nederst). Kan regenereres via cargo run --release --bin crossover_study.
Posisjonsfeil ved dødregning under et GNSS-bortfall: kvantesensoren (blå) holder seg flat nær spesifikasjonen; den klassiske sensoren (rød) divergerer til titalls kilometer. Generert av Kshana fra scenarios/imu-deadreckoning.toml.
| Pakke | Scenario | Kvante | Klassisk |
|---|---|---|---|
| 1 — Klokkens holdover | clock-holdover.toml (spesifikasjon 20 ns) |
den optiske klokken holder hele bortfallet | CSAC bryter spesifikasjonen midt i bortfallet |
| 2 — Inertial dødregning | imu-deadreckoning.toml (spesifikasjon 100 m) |
kaldatom: ~41 m, holder hele bortfallet | navigasjonsklasse: bryter etter ~350 s → titalls km |
| 3 — Tidsoverføring (optisk inter-satellittlink) | timetransfer.toml |
optisk: ~0,3 mm avstandsmåling | RF (TWSTFT): ~150 mm avstandsmåling |
| 4 — Hybrid fusjon (sluttsteinen) | hybrid-pnt.toml |
full posisjon + tid for hele bortfallet | begrenset av posisjonen ved ~350 s |
Sluttsteinen viser fusjonstesen: optisk tidsoverføring mellom satellitter holder selv en klassisk klokke låst og isolerer den inertiale sensoren som det svake leddet i den klassiske pakken — altså kvanteinertial og optisk tidssynkronisering sammen.
Klokkens holdover gjennom et GNSS-bortfall: den optiske klokken (blå) holder seg innenfor spesifikasjonen på 20 ns under hele frittløpet; klokken i brikkeformat (rød) bryter den underveis. Generert av Kshana fra scenarios/clock-holdover.toml.
Et ytterligere scenario, orbit-gnss-challenged.toml, utleder GNSS-tilgjengelighet fra banegeometri i stedet for håndskrevne vinduer: et romfartøy inne i GNSS-skallet propageres mot en GPS-lignende Walker-konstellasjon, og antallet synlige satellitter (fri sikt, jordokkultasjon, elevasjonsmaske) bestemmer posisjonsbestemmelsens tilstand i hvert trinn. Over et døgn har brukeren posisjonsbestemmelse bare ~59 % av tiden; kvanteklokken holder en tidsløsning på 5 ns gjennom hvert opphold (tilgjengelighet 1.0), klokken i brikkeformat bare ~0.83.
Tidsfeil over et døgn med GNSS-tilgjengelighet utledet fra banegeometri: antallet synlige satellitter (fri sikt, jordokkultasjon, elevasjonsmaske) bestemmer posisjonsbestemmelsens tilstand i hvert trinn, slik at klokken må gå fritt gjennom hvert opphold — den optiske klokken holder spesifikasjonen på 5 ns mens klokken i brikkeformat bryter den. Generert av Kshana fra scenarios/orbit-gnss-challenged.toml.
Konstellasjonen kan også oppgis som reelle to-linjers elementsett (TLE). Et fullt TLE (linje 1 + linje 2) propageres med den fulle SGP4/SDP4-modellen — inkludert atmosfærisk luftmotstand og termene for måne-sol i dypt rom og for resonans på 12 t / 24 t som betyr noe for GNSS-baner på ~12 t — validert mot de offisielle AIAA 2006-6753-vektorene til et verste tilfelle på ≈ 4 mm. scenarios/orbit-sgp4-gps.toml leveres med et reelt Celestrak-snapshot av gps-ops av den operative GPS-konstellasjonen (2021-07-28, 30 satellitter) og krever gyldige TLE-kontrollsummer — to-linjers elementsett er åpne data fra katalogen til US Space Force / 18th Space Defense Squadron, videredistribuert av Celestrak (Dr T. S. Kelso, celestrak.org); oppdater med scripts/fetch_tles.sh. En blokk med bare linje 2 beholder den analytiske propageringen for to legemer (scenarios/orbit-real-tle.toml); de to formene kan blandes i én konstellasjon. En konstellasjon kan like godt bygges fra en blokk med RINEX-3 GPS-poster for kringkastet efemeride — formatet en mottaker dekoder — propagert med IS-GPS-200-brukeralgoritmen og ført gjennom den samme geometrien (scenarios/orbit-rinex.toml).
Hva den er og ikke er, i sin helhet
Hva den er og ikke er#
Den er: en deterministisk motor med få avhengigheter som spenner over hele PNT-stakken — banegeometri, inertialnavigasjon, GNSS/INS-fusjon, integritet, klokker og tidssynkronisering. Den kjører et scenario (ofte et GNSS-bortfall), utvikler kalibrerte feilmodeller for sensorer gjennom en passende estimator og scorer resultatet mot de operative kvalitetsmålene — og gir et reproduserbart JSON-resultat (JavaScript Object Notation) og et SVG-diagram, fra et Rust-bibliotek, et kommandolinjegrensesnitt (CLI), en Python-utvidelse, en WebAssembly-modul i nettleseren, en Model Context Protocol (MCP)-server for AI-agenter eller en programtillegg for JetBrains IDE (integrert utviklingsmiljø).
Den er ikke: flymaskinvare, en utforming av kvantenyttelast, en full GNSS-signalmottaker, en simulator for radiofrekvenssignaler (RF) eller en maskinvare-i-løkken-rigg, eller et sertifisert avionikkprodukt — og den erstatter ikke MATLAB/Simulink, STK (Systems Tool Kit) eller Orekit; den står ved siden av dem og utveksler filer med dem. Troverdigheten til kvantemaskinvare kommer fra publiserte feilmodeller, ikke fra dette verktøyet. Den detaljerte modenheten til hver funksjon er dokumentert i docs/CAPABILITY.md.
Den er (ennå) ikke: en full fysikkmotor for atominterferometri (de fleste kvantesensorer bruker publiserte Allan-/støybudsjettkoeffisienter; akselerometeret med CAI (kaldatominterferometer) har et førsteprinsipplag — Mach–Zehnder-fase, projeksjonsstøy, kontrastavtak og vibrasjonskobling, pluss Coriolis- og lysforskyvningssystematikk — men bølgefrontsystematikk og oppløsning av fringe-flertydighet forblir et veikartlag på P2 (veikartfase 2, kvantefysikklaget), se ROADMAP.md og docs/QUANTUM-MODELS.md); en sertifisert eller maskinvarebasert GNSS-mottaker (den løser en PVT-posisjonsbestemmelse (posisjon, hastighet og tid) i enkeltpunkt fra reelle RINEX-kodeobservasjoner (Receiver Independent Exchange Format) — validert på reelle IGS-data (International GNSS Service) — og IQ-laget (kshana iq, siden 0.31.0) innhenter og sporer innspilte eller genererte basebåndsampler i programvare, som en analysemottaker: det styrer ikke radiomaskinvare og sender ikke, er ikke en sertifisert mottaker og gjør ingen posisjonsbestemmelse med bærebølgefase (RTK eller PPP)); eller en full suite for oppdragsutforming (den har byggeklosser for Lambert / porkchop / manøver / banebestemmelse, men er laget for ytelsessimulering over GMAT (General Mission Analysis Tool)/Orekit, ikke en erstatning). Å eie denne avgrensningen er bevisst. Hvis du trenger førsteprinsippbudsjetter for feil i kaldatominterferometre (for eksempel validering på CARIOQA-PMP-nivå — Cold Atom Rubidium Interferometry in Orbit for Quantum Accelerometry, Pathfinder Mission Preparation — eller i X-37B-stil), se P2-veikartet og ta kontakt for å samarbeide.
Navigasjon i lav jordbane#
Satellitter i lav jordbane (LEO) passerer raskt og støyende. Slaget leo-pnt-chain følger ett system gjennom hvert trinn: signalet, overflyvningen og linken, navigasjonsmeldingen og den fusjonerte posisjonsbestemmelsen for posisjon, hastighet og tid (PVT) og presis punktposisjonering (PPP). Hvert trinn gir tallene sine videre til det neste. Se docs/LEO-PNT.md.
Alle scenarioslag etter familie#
Scenarioslagene til motoren, ordnet i familier. Hver familie har en side med én post per slag (motorens beskrivelse og felt, en eksempelkommando, hovedtall fra en kjøring, radene i verifikasjonsmatrisen som nevner det og diagrammet motoren selv skriver) og et kontaktark med diagrammene; docs/KINDS.md indekserer dem alle. Tabellen skrives av tools/gen_readme_blocks.py og sidene av tools/gen_kinds_index.py, og begge feiler hvis motoren får et slag som ingen familie nevner.
| Familie | Hva den besvarer | Typer | Kjør ett |
|---|---|---|---|
| Klokker, tidssynkronisering og holdover | hvor lenge en klokke holder tiden uten GNSS, og hvordan et tidssynkroniseringssystem holder seg mot sine masker | clock, sweep, sweep-nd, telecom-timing, slot-timing, timetransfer, time-transfer-budget, holdover-test, quantum-time-transfer |
kshana scenarios/clock-holdover.toml |
| Treghets-, fusjons- og kvantesensorer | dødregning og sensorfusjon gjennom et GNSS-bortfall, 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 |
| Alternativ PNT uten GPS | navigere ut fra tyngdekraft, terreng og andre felt når GNSS er borte | gravity-map, terrain-nav, terrain-slam, combined-altpnt, conflict-resilience |
kshana scenarios/combined-altpnt.toml |
| Konstellasjoner, dekning og geometri | hvor satellittene er, hvem som ser dem og hvor god geometrien er, rundt 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, posisjonsbestemmelse og integritet | pseudoavstander, posisjonsbestemmelser, beskyttelsesnivåer og romvær | integrity, gnss-sim, pvt, araim-reference-check, space-weather, realtime-frame-eop |
kshana scenarios/integrity-raim.toml |
| Jamming, spoofing og spekteret | hvordan interferens når en mottaker og om den oppdages | jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval |
kshana scenarios/jamming-demo.toml |
| Navigasjon i lav jordbane | en passering, en lenke, en navigasjonsmelding og en fusjonert posisjonsbestemmelse, trinn for trinn | leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain |
kshana scenarios/leo-pnt-end-to-end.toml |
| Månen og cislunart rom | navigasjon, tid, referansesystemer og geodesi 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 |
| Navigasjon for rombrukere | GNSS-signaler for romfartøy over, rundt og utenfor GNSS-banene | gnss-ssv |
kshana scenarios/gnss-ssv-shell.toml |
| Optisk PNT | optiske linker gjennom atmosfæren og optiske pluss RF-kvalitetsmål | optical-atmosphere, hybrid-optical-rf |
kshana scenarios/optical-atmosphere-network.toml |
| Oppdragsanalyse, lenker og romoperasjoner | oppskyting, stigning, innstigning, holdning, linker, kontaktplanlegging 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 |
| Oppdragstråder | budsjettet for navigasjons- og tidsfeil for en kjede av faser fra oppskyting til gjeninntreden | mission-thread |
kshana scenarios/mission-thread-artemis-class.toml |
| Kampanjer | lenkede oppdrag, sveip og ensembler bygget av de andre slagene | campaign |
kshana scenarios/campaign-jam-spoof-holdover-integrity.toml |
Alle kommandoer#
kshana <scenario.toml> kjører et scenario; hver annen kommando er en underkommando, og kshana --help skriver ut bruken av dem alle. Kommandoene 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 gir formålet med hver, et verifisert eksempel og dokumentasjonssiden.
Alle flater#
Én motor, de samme resultatene overalt: kommandolinjen, Rust-biblioteket, Python, JavaScript og WebAssembly, MCP-serveren med sine programtilleggskommandoer og ferdigheter, Kshana Studio (hver side kjører i nettleseren, uten installasjon og uten at noe lastes opp), integrasjonene med ROS 2, Signal K, OpenCPN, GNSS-SDR og gnss_lib_py, installasjonspakkene for systemd, Docker og Grafana og JetBrains-programtillegget. docs/ALL-SURFACES.md lister dem med hvordan du får tak i hver og navnene på alle programtilleggskommandoer, ferdigheter og Studio-sider; docs/SURFACES.md sier, for hver kommando og hvert slag, hvilken flate som bærer det og hvilke som ikke gjør det, med begrunnelsen.
Hvordan en kjøring fungerer#
Et scenario er en TOML-fil (Tom's Obvious, Minimal Language): et slag, en seed og parametrene. Motoren kjører det og skriver resultatet, et diagram og en rapport ved siden av, samt eksportene du ber om.
Dette medfølgende scenarioet varer 2 t: 10 min med GNSS, deretter omtrent 1,8 t med GNSS nektet. Det spør hvor lenge en optisk gitterklokke med strontium og en atomklokke i brikkeformat (CSAC) hver holder tiden innenfor 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
Den optiske klokken holder budsjettet på 20 ns gjennom hele bortfallet på 6600 s; CSAC holder det i 2610 s og er innenfor budsjettet i 95,6 % av kjøringen mot 100 % for den optiske klokken. kshana example lister alle medfølgende scenarioer.
Oppdrag#
Ti sektorer stiller ti ulike spørsmål til den samme motoren. Hver har medfølgende scenarioer å starte fra.
| Sektor | Start med |
|---|---|
| Forsvar og sikkerhet | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Rom, jordbane | orbit-gnss-challenged, leo-pnt-end-to-end |
| Månen, Mars og dypt rom | lunar-relay-constellation, mars-orbit-pnt |
| Luftfart og droner | small-uas-jammed-nav, araim-gps-galileo |
| Maritim | maritime-strait-jamming, maritime-port-approach-coast |
| Vei | automotive-urban-canyon |
| Bane | rail-tunnel-coast |
| Kritisk infrastruktur og tidssynkronisering | clock-holdover, clock-ensemble |
| Telekom og 5G (femte generasjon mobilnett) | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Vitenskap og forskning | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Spørsmålet hver sektor stiller
| Sektor | Spørsmålet den stiller | Start med |
|---|---|---|
| Forsvar og sikkerhet | Hvor lenge forblir navigasjonen og tidssynkroniseringen vår pålitelig under jamming og spoofing, og hvilke lag holder oss innenfor spesifikasjonen? | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Rom: jordbane | Ser romfartøyet mitt nok navigasjonssatellitter, hvor lenge holder klokken tiden mellom posisjonsbestemmelser, og hva ville et navigasjonslag i lav bane tilføre? | orbit-gnss-challenged, leo-pnt-end-to-end |
| Månen og dypt rom | Får en lander, rover eller orbiter ved Månen, ved Mars eller lenger ut en pålitelig posisjon og tid? | lunar-relay-constellation, mars-orbit-pnt |
| Luftfart og droner | Etter at en jammer tar GNSS fra meg, hvor lenge holder mitt ubemannede luftfartøysystem (UAS) seg innenfor posisjonsbudsjettet, og er integritet tilgjengelig på ruten min? | small-uas-jammed-nav, araim-gps-galileo |
| Maritim | Hvor langt over vannet rekker en jammer, ville et posisjonsskift bli oppdaget, og hvor lenge kan et skip seile på dødregning inn til havn? | maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast |
| Vei og bil | Hvor langt driver en bil under en overgang eller forbi en jammer ved veikanten? | automotive-urban-canyon |
| Bane | Hvor mange sekunder inn i en tunnel kan et tog fortsatt avgjøre hvilket spor det er på? | rail-tunnel-coast |
| Kritisk infrastruktur og tidssynkronisering | Hvis GNSS-tiden går tapt eller spoofes, hvor lenge beholder et kraftnett, en handelsplass eller et datasenter sporbar tid? | clock-holdover, clock-ensemble |
| Telekom og 5G | Hvis GNSS-tidsreferansen går tapt, holder nettverksklokken min seg innenfor ITU-T-maskene, og hvor lenge? | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Vitenskap og forskning | Kan jeg gjengi, utvide og sitere et PNT-resultat, helt ned til seeden? | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Evidens#
SGP4 kontrollert mot alle 666 referansevektorer i AIAA 2006-6753, verste posisjonsfeil 4,12 mm
176 av 401 funksjoner validert mot uavhengige eksterne referanser; 221 ærlig merket modellert. Hver rad i verifikasjonsmatrisen navngir en funksjon, den uavhengige referansen den kontrolleres mot, testen som kjører kontrollen og merkelappen som følger. Kontinuerlig integrasjon (CI) gjør det umulig å kalle en funksjon VALIDATED uten en uavhengig ekstern referanse.
| Merkelapp | Rader | Betydning |
|---|---|---|
| VALIDATED | 176 | en uavhengig ekstern referanse stemmer overens: reelle data, en uavhengig implementasjon eller publiserte referansevektorer |
| MODELLED | 221 | kontrollert mot analytisk fasit eller simuleringens egenkonsistens, og sagt høyt |
| PARTNER | 4 | eid av en maskinvarepartner; Kshana har ingen uavhengig referanse for den |
Noen av kontrollene: 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 mot Orekit 12,2; Galileo til 0,61 m og Swarm-A til 0,10 m mot reelle presise efemerider fra European Space Agency (ESA). Testene holder omtrent 95 % linjedekning av src/, med en port på 85 % i CI. Registeret er docs/VERIFICATION-MATRIX.md, generert fra src/verification.rs: den fulle matrisen med 401 rader og hvorfor hver modellerte rad mangler en ekstern uavhengig referanse i docs/MODELLED-RATIONALE.md.
Hvordan validering fungerer, den utvalgte tabellen med høydepunkter og evidensfigurene
Validering, reproduserbarhet og ærlighet#
- Hvert støyledd er kalibrert mot en publisert, sitert verdi og validert mot den vanlige sammenhengen (Allan-avvik for klokker; Groves' feilvekst ved dødregning for inertial; konverteringen fra tidssynkronisering til avstandsmåling for tidsoverføring). Status per ledd føres i
docs/VALIDATION.mdsomvalidatedellernot modeled— ingenting presenteres som validert som ikke er det. - Reproduserbar fra grunnen av:
scenario + seed + engine version → identical bits.scripts/check-reproducible.shhåndhever det; kvante- og klassiske kjøringer bruker uavhengige seeder slik at støyen deres er ukorrelert. - Modenheten oppgis ærlig: tallene for optiske klokker og optiske linker er mål / resultater fra bakkedemonstratorer, ikke fløyet.
Bevismerkelappen på hvert tall#
Hvert tall og hver tabell en kjøring skriver, sier hvor langt det kan stoles på, og hvilke registerrader det hviler på. Resultat-JSON har en evidence-nøkkel, diagram-SVG-en en linje under plottet (og et <metadata id="kshana-evidence">-element), og CSV-tabellen har # evidence:-kommentarlinjer foran (les dem med comment='#'). Den navngir et nivå, VALIDATED, MODELLED eller PARTNER, og id-ene (VM- og åtte heksadesimale sifre) til de verifikasjonsmatriserradene kjøringen brukte. Nivået er det svakeste av disse radene, så en kjøring som støtter seg på én modellert rad, merkes MODELLED uansett hvor mange validerte rader som står ved siden av; merkelappen kan aldri hevde mer enn registeret gjør. Rader, statuser og id-er leses fra matrisen og skrives ikke for hånd (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), og tests/evidence_labels_doc_sync.rs feiler hvis et tall mangler merkelapp eller en merkelapp ikke stemmer med matrisen.
Validering på et blikk#
Hver rad håndheves av en navngitt test i CI. Denne tabellen er et utvalg av høydepunkter; den fulle maskinkontrollerte matrisen er 401 rader — 176 VALIDATED, 221 MODELLED, 4 PARTNER (src/verification.rs), med det fullstendige beviset (og hva som ærlig talt ikke er validert ennå) i docs/VALIDATION.md og artefakten kshana-validation-summary.html for hver utgivelse (generert av cargo run --bin validation_report, SLSA-attestert — Supply-chain Levels for Software Artifacts).
Kolonnen Status oppgir slaget evidens, i tråd med valideringsstigen ovenfor: VALIDATED = kontrollert mot en uavhengig ekstern referanse (reelle data, et uavhengig bibliotek eller publiserte referansevektorer); MODELLED = kontrollert mot analytisk fasit eller simuleringens egenkonsistens (uten uavhengig eksternt datasett). VALIDATED beskriver metoden for kontroll, ikke bestått/ikke bestått — en ærlig bom mot en reell ekstern referanse forblir VALIDATED, mens en sammenligning som ingen matriserad navngir som referanse (LRO — Lunar Reconnaissance Orbiter — tilpasningen ovenfor) vises som MODELLED. CI-rader er prosessvern, ikke kvalitetsmål. Noen få øyer med reelle data (den målte cesiumklokken, Stable32 PHASE.DAT og OPS-SAT/ICGEM-kontrollene der rådataene ikke har lisens for videredistribusjon) er datastyrte: testen skriver ut et hoppvarsel og forblir grønn når inndataene mangler, og de offentlige referansetallene er sjekket inn under tests/fixtures/. Gjenskap rådataene med det tilhørende scripts/fetch_*.sh.
| Status | Funksjon | Overensstemmelse | Referanse / uavhengig referanse |
|---|---|---|---|
| VALIDATED | SGP4/SDP4-propagering | 666/666 vektorer, verst 4,12 mm | AIAA 2006-6753 (Vallado tcppver.out) + direkte sammenligning mot den uavhengige sgp4-craten |
| VALIDATED | Referansesystemer — IAU 2000A/B-nutasjon, IAU 2006/2000A CIO-kjede, 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 mot en uavhengig SPICE-motor | maks. 0.028″ → ≤ 0,86 m bakke, ≤ 3,6 m GNSS-bane | ANISE (ren Rust, NAIF/SPICE), samme IERS finals2000A EOP, 8 epoker 2020–2023 (sammenlignet mot denne referansen; ingen rad i verifikasjonsmatrisen navngir den som ekstern uavhengig referanse, så den er ikke merket VALIDATED) |
| MODELLED | EGM2008-geopotensial (grad/orden 70) | akselerasjon = ∇V til < 1e-6; sonal kollaps til validert J2 | NGA EGM2008-koeffisienter + analytisk ∇V-identitet |
| VALIDATED | Syntese av tyngdefunksjonaler (tyngdestøttet / GNSS-fritt navigasjonskart) | GRS80 Somigliana + γ_e/γ_p til 3.5e-12; reelt EGM2008-forstyrrelseskart fysisk (RMS ≈ 26 mGal, g/o 70) | GRS80 (Moritz 1980, IAG — International Association of Geodesy) Somigliana normaltyngde + reell ICGEM EGM2008 (tests/icgem_gravity_reference.rs) |
| VALIDATED | Allan-estimatorer (ADEV/MDEV/TDEV/HDEV) + konfidensbånd | gjengir referanseavvikene; χ²-bånd stemmer overens | NIST SP 1065 (Riley), 1000-punkts tabell 31/32 |
| VALIDATED | Allan-estimatorer på en reell målt cesiumklokke | OADEV/OHDEV til 1e-3 (observert ≤ 3e-5), 16 midlingsfaktorer | Stable32 på en reell 5071A Cs mot H-maser, 556 990 punkter (tests/cs5071a_reference.rs, datastyrt) |
| VALIDATED | Allan-estimatorer på den kanoniske Stable32 PHASE.DAT | OADEV/MDEV/TDEV til 1e-3 (observert ≤ 5e-5), 139 midlingsfaktorer | Referanseavvik fra Stable32 for PHASE.DAT (tests/phasedat_reference.rs, datastyrt) |
| MODELLED | Feilmodell for IMU — ARW / VRW / bias-ustabilitet | gjenfunnet til < 5 % (bias-ustabilitet < 15 %) | Databladet til Analog Devices ADIS16465; referanseprofil fra NaveGo |
| VALIDATED | Numerisk Cowell-propagator + kraftmodell (konservative nivåer) | verste posisjonsfeil 0,08 m over 24 t, 278 epoker (LEO + GTO) | Orekit 12,2 NumericalPropagator/DormandPrince853 (CS GROUP), tests/numerical_cowell_propagator_reference.rs |
| MODELLED | Cowell-nivå for luftmotstand + absolutte inndata for sol-/måne-efemeride og tetthet | nivået for luftmotstand karakterisert til ≈ 333 m / 24 t; uforstyrret stemmer med Kepler med universell variabel under meter, energi/bevegelsesmengde ~1e-9 | innebygd efemeride med lav presisjon + analytisk Kepler |
| MODELLED | Lambert · Tsiolkovskij · porkchop | runde til fasiten for to legemer; ΔV < 0.01 % | Izzo 2015 · rakettligningen · analytisk Hohmann-gulv |
| MODELLED | Banebestemmelse (Gauss–Newton batch) | under meter / mm·s⁻¹ uten støy; ~2 m ved et støygulv på 5 m | to legemer + J2 over en RK4-bue |
| MODELLED | Tilpasning av kraftmodellen mot presis Galileo-efemeride (full bue) | 0,61 m 3D RMS, 24 t, g/o-70, bare kraft | ESA/ESOC ESA0MGNFIN endelig bane (E11), reell finals2000A EOP (sammenlignet mot denne referansen; ingen rad i verifikasjonsmatrisen navngir den som ekstern uavhengig referanse, så den er ikke merket VALIDATED) |
| MODELLED | Tilpasning av kraftmodellen mot presis Swarm-A-efemeride (redusert dynamikk) | 0,10 m 3D RMS (empirisk nivågrense, ikke et mål) | ESA SW_OPER_SP3ACOM_2_ presis bane (sammenlignet mot denne referansen; ingen rad i verifikasjonsmatrisen navngir den som ekstern uavhengig referanse, så den er ikke merket VALIDATED) |
| MODELLED | Tilpasning av kraftmodellen mot LRO ved Månen (ærlig bom) | 6,67 m redusert dynamikk, over målet på 5 m | JPL Horizons LRO (NAIF −85) + GRAIL (Gravity Recovery and Interior Laboratory) GRGM660PRIM (sammenlignet mot denne referansen; ingen rad i verifikasjonsmatrisen navngir den som ekstern uavhengig referanse, så den er ikke merket VALIDATED) |
| MODELLED | Banebestemmelse ved Mars i dypt rom (redusert dynamikk, SRIF) | ≈ 0,2 m Mars-LMO (kvalitetsmål fra simulering, ikke fra reelt oppdrag) | syntetisk lukket-sløyfe-OD — validering av estimatormaskineriet |
| MODELLED | Solsentrert Mars-dynamikk mot JPL DE440 | 137 m ved 1-døgns bue (vokser med buen = ikke modellerte n-legemer) | JPL DE440 via ANISE (xval/anise-mars-od, styrt av kjerne) (sammenlignet mot denne referansen; ingen rad i verifikasjonsmatrisen navngir den som ekstern uavhengig referanse, så den er ikke merket VALIDATED) |
| VALIDATED | Enkeltpunktsposisjonering mot en oppmålt IGS-koordinat (reelle observasjoner) | 5,7 m 3D RMS / 1,1 m horisontalt, SPP med ionosfærefri tofrekvenskode | IGS-stasjon ABMF oppmåling + GPS kringkastet efemeride, 2018-05-13 (tests/pvt_abmf.rs) |
| MODELLED | Tett koblet GNSS/INS UKF | 0,77 m RMS over en LEO-overflyvning på 30 min inkludert et bortfall på 120 s | frittgang med kraftmodell, utledet for hånd |
| MODELLED | Tyngdekartnavigasjon uten GPS | ~70 km INS-drift → ~145 m gjenfunnet | Mål for ESA NAVISP Quantum Wayfarer |
| MODELLED | Terrengreferert navigasjon (TERCOM/SITAN) | 70 km drift → < 500 m (gulv for rutenettoppløsning ~140 m) | SRTM .hgt DEM; håndinjisert drift (ikke-sirkulær kontroll) |
| 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-seminormalisert) |
| MODELLED | Modulasjon av navigasjonssignal og kodesporing | BPSK egen-SSC = 2/(3·R_c); PSD-er med enhetsareal; submeter C/A DLL-jitter @ 45 dB-Hz | Analytiske ankerpunkter for SSC/PSD i lukket form + formelen for termisk støy i DLL fra Kaplan & Hegarty |
| MODELLED | CR3BP halo/NRHO differensialkorrektor | STM = endelige differanser; banen lukkes til maskinpresisjon; L2 9:2 NRHO ≈ 6,57 d / perilune ≈ 3 250 km | kontroll av STM med endelige differanser + publisert sørlig L2 9:2 NRHO (≈ 6,56 d / ≈ 3 370 km) — CR3BP, ikke en reell Gateway-efemeride |
| MODELLED | ARAIM-integritet med to konstellasjoner | konstellasjonsomfattende feilmodus på reell GPS + Galileo | EU ARAIM TR (teknisk rapport) / DO-316; Celestrak gps-ops 2021-07-28 (sammenlignet mot denne referansen; ingen rad i verifikasjonsmatrisen navngir den som ekstern uavhengig referanse, så den er ikke merket VALIDATED) |
| VALIDATED | GNSS-geometri / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) | stemmer overens til 1e-6 relativt over 8 geometrier (godt betinget → nær singulær) | gnss_lib_py 1.0.4 (Stanford NAV Lab) — uavhengig bibliotek (tests/dop_reference.rs) |
| VALIDATED | ML-metrikker for evaluering av detektorer (AUC/ROC/forvekslingsmatrise/Pd-Pmd/presisjon/F1) | eksakte antall + < 1e-9 over 5 datasett × 24 terskler | scikit-learn 1.9.0 (Pedregosa et al., JMLR — Journal of Machine Learning Research — 2011) — uavhengig bibliotek (tests/eval_metrics_reference.rs) |
| VALIDATED | ROC AUC for anomalideteksjon på reell ESA OPS-SAT-telemetri | AUC gjengir scikit-learn til < 1e-9; AUC for toppteller-detektoren ≈ 0.85 på det merkede testutvalget | scikit-learn roc_auc_score på testutvalget i OPSSAT-AD (Ruszczak et al. 2025, CC BY 4,0) — reell OPS-SAT-telemetri (tests/opssat_ad_reference.rs) |
| VALIDATED | Numeriske kjerner for kvanteavveining (ADEV NNLS-tilpasning · χ²-konsistensbånd · van Loan-klokke Q) | NNLS + Q eksakt; χ² < 5e-4 ved operativ dof ≥ 48 | scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm (tests/scipy_reference.rs) |
| VALIDATED | Telekom-metrikker for vandring MTIE / MDEV / TDEV (ITU-T G.810/G.823/G.8261/G.811 — anbefalingene fra International Telecommunication Unions standardiseringssektor for telekommunikasjon) | MTIE (9 midlingsfaktorer, bit-eksakt) og MDEV + TDEV (8 faktorer, < 1e-9 relativt) på NIST SP 1065 LCG-serien (lineær kongruensgenerator) | allantools 2024,06 mtie / mdev / tdev — uavhengig bibliotek (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs) |
| VALIDATED | MCDA-metoder for avveiningsstudier — alle fire beslutningsfamilier, ni eksternt validerte aggregatorer (WSM · WPM · WASPAS · MOORA · COPRAS · TOPSIS · VIKOR · PROMETHEE II · ELECTRE I) pluss prioritetsvekting ved parvis sammenligning med AHP | scorer / rangeringer / konkordansmatriser gjengitt til < 1e-9 | pymcdm + pyDecision (uavhengige MCDA-biblioteker fra tredjepart) + Saaty RI (tilfeldig indeks) / SciPy-LAPACK eig (tests/mcda_*_reference.rs) |
| VALIDATED | LEO-Doppler-envelope fra banen og bærebølgen | Iridium-maksimum innenfor 5 % av publiserte ±36 kHz; Xona Pulsar X1 innenfor publiserte 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 innenfor χ²-båndet | trend sammenlignet med Li et al., J. Geod. 93:749 (2019) (9,6 → 7,0 / 3,2 / 2,1 / 1,3 min); konstellasjoner og støy er ikke gjengitt |
| MODELLED | Betinget tidsbeskyttelsesnivå (uoppdaget tidsfeil begrenset av holdover under spoofing) | sammensetningen gjengir den flertrinns kovariansrekursjonen clock_state; kalibrert på en reell innspilt spoof |
JammerTest 2024 (Zenodo 15911589) skalarer + van Loan / CUSUM i lukket form (examples/tpl_jammertest) |
| MODELLED | Scoring av PNT-robusthet + beslutningsustabilitet | 35 håndutledede tester mot uavhengig referanse; bytedeterministisk studieartefakt (fast seed) | DHS RPCF v2.0-kartlegging + Dirichlet / Kendall-τ / Hill-N2 i lukket form — syntetiske arkitekturer, ikke en sertifisering |
| MODELLED | Studie av optimismegapet for RF-forstyrrelser (skaleringslover + leave-one-out-prediktor) | signifikans mot permutasjonsnull; bytedeterministisk artefakt (5 seeder) | syntetisk parameterforankret korpus — evalueringens metrikker er VALIDATED mot scikit-learn (ovenfor); studien er MODELLED |
| CI | Reproduserbarhet på tvers av plattformer | bit-identisk inndata + fasiter for form på 3 operativsystemer | CI-matrise for Linux / macOS / Windows, SHA-256-fasiter |
| CI | Testdekning | ~95 % linjer på src/ unntatt src/*_data.rs og src/main.rs, med port på ≥ 85 % |
cargo-tarpaulin (LLVM-motor) |
Hvordan en funksjon får merkelappen sin — den CI-håndhevede invarianten: ingen ekstern uavhengig referanse ⇒ kan ikke være Validated · SVG
Øverst: hver Validated-rad støttes av et eksternt datasett, per konstruksjon. Nederst: SGP4 stemmer overens med den offisielle referansen i hvert regime (verst 4,12 mm). SVG · SVG
176 validert · 221 modellert · 4 partner — SVG
Funksjonsdomener#
Hver funksjon i det offentlige kartet, etter domene, med sin merkelapp i registeret. Domenetabellen skrives av tools/gen_readme_blocks.py fra web/capabilities.json, den samme filen som Studios kart over alt leser.
Den fulle tabellen, domene for domene med hver funksjon og dens merkelapp, er docs/CAPABILITY-DOMAINS.md.
Installasjon#
Én linje gir deg kommandolinjeverktøyet: cargo install kshana. Hver kanal leverer v0.40.0 fra den samme merkede commiten.
| Kanal | Installasjon | Veiledning |
|---|---|---|
| Prøv i nettleseren | åpne https://kshana.dev | Studioguide |
| Kommandolinje (Rust) | cargo install kshana |
Bruk på kommandolinjen |
| Rust-bibliotek | cargo add kshana |
API-referanse på docs.rs |
| Python | pip install kshana |
Guide til Python-API-et |
| JavaScript og WebAssembly | npm install kshana |
Guide til npm og WebAssembly |
| KI-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 (ett klikk) | Legg til i Cursor (npx) · Legg til i Cursor (Docker) · npx -y kshana-mcp@0.40.0 |
Alle MCP-installasjonsutdrag |
| VS Code (ett klikk) | Installer i VS Code (npx) · Installer i VS Code (Docker) · npx -y kshana-mcp@0.40.0 |
Alle MCP-installasjonsutdrag |
| npx | npx -y kshana-mcp@0.40.0 |
Alle MCP-installasjonsutdrag |
| uvx / pipx | uvx kshana-mcp==0.40.0 |
Alle MCP-installasjonsutdrag |
| Homebrew | brew install ashfordeOU/tap/kshana-mcp |
Alle MCP-installasjonsutdrag |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp |
Alle MCP-installasjonsutdrag |
| winget | winget install AshfordeOU.KshanaMcp |
Alle MCP-installasjonsutdrag |
| Ferdigbygd binærfil | last ned kshana-mcp-<target> fra utgivelsen og kontroller den mot SHA256SUMS | Alle MCP-installasjonsutdrag |
| Offisielt MCP-register | søk etter io.github.ashfordeOU/kshana-mcp | Alle MCP-installasjonsutdrag |
| Ekstern (streambar HTTP), selvdrevet | kshana-mcp --http 127.0.0.1:8080 |
Veiledning for selvdrift |
| JetBrains IDE-plugin | Settings → Plugins → Marketplace → søk etter "Kshana" (programtillegg-ID dev.kshana.ide) | Plugin-guide |
| Signal K-plugin | npm install signalk-kshana-trust |
Veiledning for Signal K-plugin |
| OpenCPN-plugin | last ned tarballen for programtillegget fra utgivelsen | Innsending til OpenCPN-katalogen |
| Grafana-dashbord | importer kshana-grafana-*.json fra utgivelsen | Dashbordkilde |
| Image for referansebygget | docker pull ghcr.io/ashfordeou/kshana-reference-build |
Marineintegrasjoner |
Kshana på JetBrains Marketplace Bygger med Rust 1,88 eller nyere, rust-version i Cargo.toml
MCP er Model Context Protocol. Lås en utgivelse med cargo install kshana --version 0.40.0, pip install kshana==0.40.0 eller npm install kshana@0.40.0. For å bygge fra kildekode, se Installer og bygg under Referanse.
Kjør et scenario 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
Ved siden av run tilbyr modulen run_full (JSON, SVG og enlinjesammendraget på én gang), run_typed, validate_toml, list_kinds / scenario_kinds og error_kind; se docs/PYTHON_API.md.
npm-pakken er hele motoren kompilert til WebAssembly. I Node.js gir du binærfilen til initSync; i en nettleser 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 åpen motor står i sentrum, og hver flate kjører den: kommandolinjen, Rust-biblioteket, Python, WebAssembly og Kshana Studio, MCP-serveren, Docker-avbildningen og JetBrains-programtillegget. Den samme scenariofilen gir de samme bytene på hver. Kshana Pro ligger oppå som et eget overlegg som avhenger av motoren og aldri forgrener den.
Inne i motoren: domenelagene og verifikasjonsregisteret
Én motor, mange inngangsdører. En enkelt Rust-kjerne (kshana) kjører hvert scenario, nådd gjennom en CLI, en Python-utvidelse, en WebAssembly-modul i nettleseren, en MCP-server for AI-agenter og et JetBrains IDE-programtillegg — som alle munner ut i én api::run_toml-dispatch. Inne i den kobles sensorpakkene til et felles grensesnitt for feilmodeller; ved siden av dem ligger et referansesystemlag (IAU 2006/2000A presesjon–nutasjon og den CIO-baserte GCRS↔ITRS-reduksjonen), et astrodynamikk-/numerisk lag (analytisk SGP4/SDP4 og en numerisk Cowell-propagator med sin EGM2008-/perturbasjonskraftmodell, manøverutforming og banebestemmelse), et integritets-/GNSS-lag (RAIM/ARAIM, SBAS, måledomenet, jamming, cislunar), et fusjons-/alt-PNT-lag (GNSS/INS-estimatorene og kartsammenstillerne for tyngde/terreng/magnetfelt), et lag for dypt rom og Månen (radiometrisk Mars-PNT og månens PNT-suite, med evidensnivået for hver del i matrisen — LTC-tid, VLBI, felles OD+klokke, realisering av referansesystem, tjenestevolum, differensiell PNT, interoperabilitet), et oppdragsanalyselag (budsjetter for oppskyting / innstigning / dekning / peking / overflyvning / link og romværmiljøet) og det åpne laget for robusthets- og maskinlæringsstudier (RPCF-robusthetsscoring, optimismegapet for RF-forstyrrelser og demonstratoren for kvanteaktivert PNT) hvis reproduserbare artefakter bygger på de validerte kjernene.
To frittstående crater utenfor workspace står ved siden av kjernen — mcp/kshana-mcp (MCP-serveren, bygget på edition-2024-SDK-en rmcp) og xval/anise-frames (kryssjekken av ANISE/SPICE-referansesystemer, som trekker inn avhengigheter under MPL-2.0 (Mozilla Public License 2,0)) — holdt utenfor avhengighetsgrafen til den publiserte craten, Cargo.lock, lisensporten og MSRV-bygget (minste støttede Rust-versjon) av listen exclude i rotens Cargo.toml. JetBrains-programtillegget (ide/jetbrains) er et eget Kotlin-prosjekt. Se docs/ARCHITECTURE.md for hele settet med diagrammer.
De gjengitte diagrammene (motorflyt, modulkart, distribusjon) står i docs/ARCHITECTURE.md.
Diagrammer#
Diagrammene er Mermaid-kilder i docs/diagrams/, gjengitt til SVG og PNG i docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> på Linux, de to andre render-diagram-skriptene ellers), og en post binder hver PNG til den nøyaktige SVG-en den kom fra. Testene låser tallene de oppgir. Diagrammene i seksjonene ovenfor tegnes av verktøy fra motorkjøringer; disse viser hvordan delene henger sammen.

Én dispatch, én motor, reproduserbar utdata · SVG · kilde system-overview.mmd

Hver flate, fra den samme motoren · SVG · kilde surfaces.mmd

Den indre løkken i en kjøring · SVG · kilde engine-flow.mmd

Fra en mottakerlogg til en tillitsscore og hva som bruker den · SVG · kilde trust-flow.mmd

Scenario til signert pakke; Kshana produserer eller spiller aldri av et signal · SVG · kilde lab-round-trip.mmd

Hvordan Studio kjører, lokalt · SVG · kilde studio-flow.mmd

Test- og utgivelsesflyt, fra lokale porter til en verifisert utgivelse og stien bare for området · SVG · kilde release-flow.mmd · docs/RELEASING.md

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

Hva som leveres hvor, og hva som kontrollerer det · SVG · kilde distribution.mmd
KI-assistent#
kshana-mcp er en MCP-server: assistenten din kjører den faktiske motoren og leser tilbake JSON-en, i stedet for å gjette matematikken. Hvert av de 49 verktøyene er en tynn innpakning rundt en offentlig funksjon i biblioteket kshana, så ingen simuleringslogikk bor i serveren.
Installer MCP-serveren#
Veiledende, ikke typegodkjent navigasjonsutstyr: operatøren er fortsatt ansvarlig for navigasjonen. Serveren kjører på din datamaskin; ingenting sendes til Ashforde OÜ.
En passasje som nevner AI-klienter fra tredjepart er utelatt her; den står i README.md på GitHub.
| Kanal | Kommando eller knapp | Krever | Festet form |
|---|---|---|---|
| Cursor (ett klikk) | npx (Node) · Docker | Node, eller Docker | kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| VS Code (ett klikk) | 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 deretter 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 |
| Ferdigbygd binærfil | utgivelsessiden: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], kontrollert med SHA256SUMS og gh attestation verify |
ingen | v0.40.0 |
| MCP-register | io.github.ashfordeOU/kshana-mcp (finnes av klienter som støtter registeret) |
en klient som støtter registeret | 0.40.0 |
| Fjernbruk (streamable HTTP) | kshana-mcp --http 127.0.0.1:8080, selvdrevet: se docs/deploy/mcp-http.md |
din egen vert | v0.40.0 |
kshana-mcp på Glama, kvalitetsscoren for MCP-serveren
En passasje som nevner AI-klienter fra tredjepart er utelatt her; den står i README.md på GitHub.
Oppsett per klient står i docs/integrations.md. Serveren er oppført i det offisielle MCP-registeret som io.github.ashfordeOU/kshana-mcp.
De 49 verktøyene
Scenarioer og rapporter
| Verktøy | Hva den gjør |
|---|---|
run_scenario |
Kjør et scenario fra en TOML-definisjon (Tom's Obvious, Minimal Language) |
list_scenario_kinds |
De 92 innebygde scenariotypene med beskrivelser og obligatoriske/valgfrie felt, slik at agenten kan bygge et gyldig scenario |
validate_scenario |
Forhåndskontroll: parse TOML-en og finn slaget, uten å kjøre |
list_example_scenarios |
De medfølgende referansescenarioene som JSON |
get_example_scenario |
TOML-teksten til ett medfølgende referansescenario, byte for byte filen under scenarios/ |
report_scenario |
Kjør et scenario og returner rapporten |
animate_scenario |
Kjør et scenario og returner tidsserien som en animasjon |
sky_geometry |
Himmelgeometri under en azimutavhengig horisontlinje: de synlige og skjulte satellittene, DOP, øst-nord-opp-kovariansen og den horisontale feilellipsen; eller en forhåndsinnstilling for horisontlinje med proveniens |
Eksport og interoperabilitet
| Verktøy | Hva den gjør |
|---|---|
list_export_formats |
Hvilke interoperabilitetsformater som gjelder for et scenario (czml, kml, geojson, stk, sigmf), begrunnelsen når ett ikke gjør det, og spesifikasjonen hver skriver følger |
export_interop |
Eksporter et scenario som CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, STK-efemeride (Systems Tool Kit) .e eller SigMF (Signal Metadata |
import_route |
Skriv en GeoJSON-rute LineString inn i et scenario som flyr et veipunktspor (terrain-nav, terrain-slam, gravity-map, combined-altpnt) og returner den nye TOML-en |
export_sp3 |
Eksporter konstellasjonen til et orbit-scenario som presis efemeride i SP3-c (Standard Product 3, revisjon c) |
export_omm |
Eksporter elementene til et orbit-scenario som en CCSDS (Consultative Committee for Space Data Systems) 502.0-B-2 OMM-katalog (Orbit Mean-elements Message) |
export_oem |
Eksporter tilstandsserien til et orbit-scenario som CCSDS OEM-efemeride (Orbit Ephemeris Message) 2,0 — TEME-posisjonen (true equator, mean equinox) og |
export_table_csv |
Kjør et scenario og returner reproduserbarhetstabellen som CSV (kommaseparerte verdier) — den bytestabile tabellen CLI-en (kommandolinjegrensesnittet) skriver som <scenario>.table.csv |
export_test_bench |
Et scenarios kjøretøybevegelse og hendelser for en GNSS-simulator i laboratorium (kshana bench-export) |
Mottaker- og fartøytillit
| Verktøy | Hva den gjør |
|---|---|
assess_receiver_log |
Vurder en reell GNSS-mottakerlogg (global navigasjonssatellittsystem) for tillit |
assess_vessel_stream |
Score et avgrenset NMEA 0183-utdrag (høyst 2 MiB og 20 000 epoker |
assess_vessel_log |
En NMEA 0183-logg fra et fartøy (høyst 4 MiB) som en batchkjøring, med økt-TOML-en som oppgir fartøyets grenser |
create_evidence_pack |
En signert bevispakke for et vindu av et fartøys logg (kshana receiver-trust evidence) |
attach_evidence_timestamp |
Bind et RFC 3161-tidsstempeltoken (base64 av .tsr-bytene) til en pakke, i minnet (kshana evidence attach-timestamp) |
verify_evidence_pack |
Verifiser en pakke (kshana evidence verify) |
generate_training_nmea |
Syntetisk NMEA 0183 for bro til mannskapstrening fra en nmea-scenario-TOML (jamming, posisjonsdrag, tidsspoof, replay-forsinkelse) med instruktørloggen (kshana-nmea-training/1) |
build_interference_map |
Et GNSS-interferenskart fra ADS-B- eller AIS-posisjonsrapporter som CSV-tekst (høyst 4 MiB) |
route_exposure |
Andelen av en rutes lengde i degraderte, ikke-degraderte, ikke vurderte og ikke observerte celler i ett eller flere interferenskart, eventuelt innenfor et datointervall |
trust_telemetry |
En tillitsstrøm (JSON-linjer) eller et receiver-trust-resultat gjengitt som Prometheus-tekst, CEF- eller LEEF-syslog-linjer eller en OTLP JSON-nyttelast, med kshana trust-telemetry-enkoderne |
jammertest_import |
Les den publiserte Jammertest-testkatalogen og sendeplanen (NPRA/jammertest-plan, MIT) som planlagt referanse (kshana jammertest import): ett testområdes tidsluker blir mottakertillit-hendelser med katalog-id og år i hver etikett. Planlagte tidsluker, ikke registrerte sendetider; ingen kontaktfelt i planen leses. MODELLED. Se docs/JAMMERTEST.md. |
jammertest_score |
Skår en mottakerlogg mot den planen (kshana jammertest score): per test deteksjonsforsinkelse, uteblitte alarmer og tid til gjenoppretting, og falske alarmer utenfor alle tidsluker. Tekstlogger som log, binære (ubx, sbf) som log_base64. En signert pakke trenger en nøkkel: kommandolinjen. Kun veiledende; MODELLED. |
fit_imu_log |
Akselerometer- og gyroparametere for scenarioene hybrid og fusion, tilpasset fra en stasjonær IMU-logg (CSV eller EuRoC) med Allan-deviasjon, med en ferdig tabell [accel_classical] som kan limes inn og loggens SHA-256 (kshana imu-fit). Tekst inn, JSON ut; MODELLED. |
GNSS IQ (filer i arbeidsmappen; av i HTTP-modus)
| Verktøy | Hva den gjør |
|---|---|
iq_signals |
Oppsettet av GNSS IQ-laget |
iq_info |
Beskriv ett IQ-opptak (fase og kvadratur) i arbeidsmappen uten å behandle det |
iq_scene |
Generer en GNSS IQ-scene med flere satellitter i arbeidsmappen (kshana iq scene) |
iq_acquire |
FFT-innhenting (rask Fourier-transform) av én eller flere PRN-er (pseudotilfeldige støykoder) over et opptak (kshana iq acquire), eventuelt bak frontend-trinn |
iq_track |
Innhent, og spor deretter med DLL/PLL/FLL-banken (forsinkelses-, fase- og frekvenslåst sløyfe) (kshana iq track), med sløyfene fra en `kshana.loop-desig |
iq_frontend |
Bruk DSP (digital signalbehandling) for mottakerens frontend og dempning av interferens |
iq_sweep |
Spill av ett IQ-opptak i arbeidsmappen på nytt over flere utforminger av sporingssløyfer (kshana iq sweep) |
iq_monitor |
Kjør monitorene for deteksjon av interferens og spoofing over et IQ-opptak i arbeidsmappen (kshana iq monitor) |
iq_labfit |
Tilpass modellen for tap av lås i sporingssløyfen til laboratoriekjøringer (kshana iq labfit) fra et iq-labfit-scenario der loggene er innebygd (text eller base64 |
iq_test_conditions |
Valider en kshana.test-conditions/1-fil gitt som tekst og returner de løste betingelsene med hashen |
iq_campaign |
Kjør en kampanje for avspilling i laboratorium (kshana iq campaign) |
iq_campaign_status |
Fremdriften i en kampanjes utdatamappe |
Compliance-kartlegging
| Verktøy | Hva den gjør |
|---|---|
compliance_report |
Kartleggingen mot det offentlige rammeverket, fylt ut fra resultatdokumenter gitt som tekst (kshana compliance-report) |
compliance_mapping |
De statiske kartleggingstabellene (eller, med sources, kildedokumentene de siterer med versjoner og URL-er) som Markdown, med samme utsagn først |
list_standards_packs |
Standardpakkene (kshana standards-pack list): scorede scenariosett for testprofilene i DHS Resilient PNT-rammeverket, IMO MSC.1/Circ.1575 og ICAO Doc 9849 vedlegg F |
run_standards_pack |
Én pakke kjørt mot terskler oppgitt før kjøringen: hver test MET, NOT MET eller NEEDS INPUT; MODELLED, vurderer ikke noe produkt |
lunanet_afs_check |
LunaNet Augmented Forward Signal kontrollert mot LNIS V5 AD1 bind A (LSIS-AFS V1.0): kodene mot de trykte tabellene, eller en symbolstrøm mot rammeformatet; LDPC og CRC-24Q for delrammene 2 til 4 er ikke verifisert |
create_round_trip_pack |
Den signerte laboratoriepakken for rundtur: scenario, kshana.test-conditions/1-dokument, mottakerlogg og score knyttet sammen med hasher |
Benchmark
| Verktøy | Hva den gjør |
|---|---|
score_benchmark |
En innsending til kshana-bench scoret mot en referansefil, begge som JSON-tekst (kshana bench score, bench/SPEC.md): resultatfilen med spesifikasjonsversjon, deling, inndatahasjer og oppgavens målinger. MODELLED; beskriver en logg eller et korpus, aldri et produkt. |
render_leaderboard |
Resultatfiler fra kshana-bench gjengitt som den statiske ledertavlesiden (HTML-tekst), hver validert først. |
Utgaver#
Hele motoren er gratis. Kshana Pro og skreddersydde studier er for programmer som trenger mer, og hver betalt vei begynner med en melding: det finnes ingen priser her.
| Gratis | Kshana Pro | Skreddersydd studie | |
|---|---|---|---|
| Hva det er | hele den åpne motoren, alle 92 scenariotyper, ingen funksjonsbegrensning | et proprietært overlegg på den samme motoren, under kontrakt | en MODELLED studie av PNT-robustheten i systemet ditt, utført for deg |
| Lisens | AGPL-3.0 (GNU Affero General Public License, versjon 3), eller en kommersiell lisens | proprietær | kontrakt |
| Slik kommer du i gang | installer eller åpne kshana.dev | be om en Pro-evaluering | be om en studie |
Hva Pro er, med ordene til docs/PRO.md:
Et strengt supersett av åpne Kshana. Pro avhenger av den åpne motoren som bibliotek og forgrener den aldri. Hvert åpne scenarioslag kjører uendret i Pro, og et åpent scenario kjører i Pro helt uten lisens.
Ingen ny fysikk. Pro legger ikke til noen fysisk modell og endrer ingen. Hvert tall i Pro kommer fra kjøringer av den åpne motoren, slik at et Pro-tall er like pålitelig som det åpne scenarioslaget det kom fra, og aldri mer.
Pro svarer på et programs neste spørsmål: hvilken utforming som skal flys (en optimerer for utforming og dens Pareto-front), hvor sikkert svaret er (usikkerhet og sensitivitet), og om oppdraget tilfredsstiller sine krav (et oppdragsdossier, sporbarhet for krav, avveiningsstudier, en regresjonskontroll av scenarioer, digitale tvillinger av klokker, et studiedossier og en tjeneste på egen server). Den følger også en kampanje av tall og feiler en pipeline når ett blir dårligere, tester kandidater til signalplaner mot de åpne satellittnavigasjonssignalene i begge retninger (spektrumsameksistens) og setter studier i kø i en jobbtjeneste på egen server med et leveringsregister med hashkjede. Hver av dem er beskrevet, med hva den produserer og hva den ikke gjør, i docs/PRO.md. Ingenting Pro produserer er en sertifisering, og en skreddersydd studie er heller ikke en sertifisering.
Hva Kshana Pro leser fra den åpne motoren, og støtte fra Ashforde® OÜ
Hva Kshana Pro bygger på. Hver del av Pro arbeider ut fra den åpne motoren og lar den stå uendret:
- Optimereren for utforming, usikkerhetsstudien og oppdragsdossieret kjører scenarioer for den åpne motoren gjennom motorens offentlige grensesnitt og beregner hvert tall fra resultatene av kjøringene. Hvert resultat beholder nivået VALIDATED, MODELLED eller PARTNER som den åpne motoren ga hvert tall, aldri et høyere.
- Digitale tvillinger av klokker bruker den åpne motorens klokkemodell og dens estimator for Allan-avvik: en tvilling kalibreres mot enhetens publiserte Allan-budsjett og kontrolleres deretter ved å estimere tvillingens Allan-avvik med den åpne estimatoren.
- Avveiningsstudier kjører hvert arkitekturalternativ som et scenario for den åpne motoren, uendret, og rangerer alternativene på et kvalitetsmål lest fra resultatet av hver kjøring.
- Kampanjefølging leser tallene sine fra resultatene av kjøringer i den åpne motoren av scenarioene i en pakke, og sammenligner dem med den forrige kjøringen som besto.
- Spektrumsameksistens leser hvert fysiske tall fra kjøringer i den åpne motoren av slagene
leo-signalogconstellation-design, og legger bare til summen over satellittene i sikte og rangeringen av planene. - Jobbtjenesten på egen server kjører åpne scenarioer og Pro-scenarioer gjennom den samme motoren og lagrer hvert resultat slik kjøringen returnerte det.
- Bevispakker registrerer, for hver kjøring, scenariohashen som den åpne motoren stempler på resultatet, slik at et tall i en pakke kan gjengis ved å kjøre scenarioet på nytt.
- Verktøy for systemutvikling og programmer. Kshana Pros verktøy for modellbasert systemutvikling (MBSE) og programmer kontrollerer et programs krav mot kjøringer av den åpne motoren: det importerer krav som kommaseparerte verdier (CSV), eller som en dokumentert delmengde av Requirements Interchange Format (ReqIF) eller av tekst i Systems Modeling Language versjon 2 (SysML v2), evaluerer hvert akseptkriterium, med enhet, mot verdiene en kjøring skrev, og lager en verifikasjonskryssreferansematrise (VCRM), en SysML v2-modell, en rapport om endringspåvirkning og en frakoblet bevispakke. Det kjører ingenting på nytt og beregner ingenting på nytt, og leser bare det den åpne motoren publiserer: hver kjørings
result.json(feltene et kriterium navngir, enhetene deres, reproduserbarhetsstempelet med scenariohash, seed, motorversjon og skjemaversjon, og kjøringens merkelapp og nivåer for tallene), densreport.json(slag, reproduserbarhetspost og funksjonsmerkelapper), scenariofilen (hash, slag, seed og parametere), skjemaet for feltenheter (hvert felts enhet, proveniens og evidensnivå) og verifikasjonsmatrisen (hver funksjons merkelapp VALIDATED, MODELLED eller PARTNER).
Støtte og profesjonelle tjenester#
Kshana er gratis og åpen kildekode under AGPL-3.0 og profesjonelt utviklet og vedlikeholdt av Ashforde® OÜ (Estland). Den åpne motoren er komplett og kan brukes alene. For organisasjoner som trenger mer, tilbyr Ashforde® OÜ:
- Kommersiell støtte og integrasjon — å bygge Kshana inn i verktøykjeden din, skreddersydde scenarioer og prioriterte rettelser.
- Egne sensormodeller — kalibrert mot maskinvaren din, inkludert eksportsensitive robusthetsmodeller som vedlikeholdes i et privat overlegg.
- Kshana Pro — proprietære verktøy for modellbasert systemutvikling (MBSE) og programmer som kontrollerer et programs krav mot kjøringer av den åpne motoren og lager en verifikasjonskryssreferansematrise (VCRM), en modell i Systems Modeling Language versjon 2 (SysML v2), en rapport om endringspåvirkning og en frakoblet bevispakke. Det kjører ingenting på nytt og leser bare motorens publiserte utdata: hver kjørings
result.jsonogreport.json, scenariofilen, skjemaet for feltenheter og merkelappene i verifikasjonsmatrisen (hele listen står under Utgaver). - Kshana Pro-verktøy for utforming, usikkerhet og oppdrag — Pareto-fronten for et utformingsrom, usikkerhet og sensitivitet over tusenvis av kjøringer og et oppdragsdossier med én kommando med en verifikasjonsmatrise og en PDF; se
docs/PRO.md. - Kshana Pro kampanjefølging, spektrumsameksistens og jobbtjeneste — en pipeline som feiler når et fulgt tall blir dårligere, signalplaner testet mot de åpne satellittnavigasjonssignalene i begge retninger og en jobbkø på egen server med et leveringsregister med hashkjede; se
docs/PRO.md. - Opplæring og rådgivning om ytelsesanalyse av kvante- og klassisk PNT.
Dette er åpen-kjerne-modellen: motoren er, og forblir, åpent lisensiert; virksomheten som bærer den er ekspertise, støtte og de proprietære utvidelsene — ikke lisensavgifter. Kontakt contact@ashforde.org · ashforde.org.
Forskning#
Studier bygget på den åpne motoren publiseres på arXiv. Hver navngir motorkommandoen bak seg, slik at tallene kan regenereres fra et innsjekket scenario eller studieeksempel.
| Artikkel | Hva 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 |
Fallet i scoren til en detektor for GNSS-interferens når forholdene skifter kan forutsies fra statistikk i fordelingen alene, på en åpen syntetisk testbenk og deretter på åpne feltopptak. | 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-tidsmottaker under spoofing har ingen endelig ubetinget grense for uoppdaget tidsfeil, så artikkelen gir en betinget, kalibrert på en innspilt spoof over luften fra den offentlige JammerTest 2024-kampanjen. | 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 sammensatt robusthetsscore er et stabilt grunnlag for en beslutning bare der én utforming dominerer; der utformingene konkurrerer kan ny vekting alene endre vinneren. | 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 |
Avstandsmåling inne i en månekonstellasjon etterlater den absolutte posisjonen til en overflatestasjon uobserverbar; en forsinkelse fra interferometri med svært lang grunnlinje (VLBI) fra jorden gjenoppretter den når konstellasjonen er tynn, og skjerper den når den er rik. | slaget lunar-joint-od-clock: 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 konstellasjoner på fire til seks satellitter gir dårlig geometri ved månens sørpol, og noen få fyrlykter for avstandsmåling på overflaten løser det langt billigere enn flere satellitter. | slaget lunar-beacon: 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 udefinert for cislunar sporing med bare avstand, fordi hastighet er uobserverbar i et snapshot, så artikkelen bruker observerbarhetsgramianen på fire plane distante retrograde baner: bare avstand har rang 2 av 4 i et snapshot og trenger en bue på omtrent 2,09 t for å bli fullt observerbar, med betingelsen som bedres etter hvert som buen blir lengre; avstandsrate (Doppler) gir rang 4 umiddelbart; og samtidig estimering av en stasjon sammen med satellitttilstander og klokker forblir rangmangelfull med én med mindre en ekstern interferometrisk observabel legges til. Krav hører hjemme i budsjetter for buelengde, betingelse og måletype, ikke DOP. | slaget cislunar-observability: kshana scenarios/cislunar-observability.toml (søsterslaget cislunar-arc-recovery tester terskelen med en uavhengig estimator med endelige differanser) |
De tre studieeksemplene skriver bytedeterministiske artefakter (faste seeder) som registrerer motorversjon, seeder og en konfigurasjonshash. De tre månenære og cislunare artiklene er bygget på månesuiten (evidensnivået til hver del står i verifikasjonsmatrisen); påstandene om geometri og dilution of precision er også kryssjekket mot separate uavhengige referanser i tests/validate_p*.rs. Mer under Reproduserbare studieartefakter under Referanse.
Siter#
Hvis du bruker Kshana i akademisk eller teknisk arbeid, siter versjonen du brukte, med scenario og seed. CITATION.cff inneholder de maskinlesbare metadataene, og GitHub viser en knapp "Cite this repository" ut fra den. Hver utgivelse arkiveres på Zenodo; konsept-DOI-en (Digital Object Identifier) 10.5281/zenodo.20528627 løses alltid til den nyeste versjonen.
Baweja, C. (2026). Kshana — a PNT-resilience simulator with quantum-sensor performance models. Ashforde OÜ. https://doi.org/10.5281/zenodo.20528627
Artiklene 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
Lisens#
Kshana er dobbeltlisensiert: GNU AGPL-3.0-only (LICENSE), eller en kommersiell lisens fra Ashforde® OÜ for lukket integrasjon som AGPL ikke passer for. LICENSING.md forklarer hvilken som gjelder. Bidrag lisensieres inngående under AGPL og gir i tillegg Ashforde® OÜ rett til å ta dem med i den kommersielle utgaven; signer hver commit med git commit -s (se CONTRIBUTING.md). "Kshana" og merkene tilhører Ashforde® OÜ som varemerker: lisensen dekker koden, ikke navnet, så gi forgreninger nytt navn.
Referanse#
Det lange materialet, sammenfoldet. Hvert dokument er oppført i Dokumentasjon.
Installer og bygg fra kildekode
Installer og bygg#
Krever en Rust-verktøykjede (≥ 1,88, rust-version i Cargo.toml; utviklet på 1,93).
git clone https://github.com/ashfordeOU/kshana
cd kshana
cargo build --release
cargo test # all tests pass
Bruk: kommandolinjen i sin helhet
Bruk#
Kjør et hvilket som helst scenario; CLI-en sender på feltet kind i scenarioet og skriver <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html og <scenario>.report.json ved siden av det — pluss <scenario>.table.csv for slagene som publiserer en tabell. Rapporten (en HyperText Markup Language (HTML)-side og et JSON-dokument med samme innhold) har et sammendrag for ledelsen, hver inndata med enhet, resultatene og diagrammene, en kampanjes sveip-, Monte Carlo- eller kjedetabeller, en hendelsestidslinje, merkelappen VALIDATED / MODELLED / PARTNER og kilden for hver funksjon kjøringen brukte, hva som ikke er modellert og en reproduserbarhetspost (motorversjon, Secure Hash Algorithm 256-bit (SHA-256)-sammendrag, seed, plattform og den nøyaktige kommandoen). Den skrives ut til en ren PDF-fil (Portable Document Format) fra nettleseren 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-opptak (Signal Metadata Format) ved siden av scenarioet, og --import-route <route.geojson> mater en GeoJSON-linje inn i slagene som flyr et spor. Hvert format valideres mot sin publiserte spesifikasjon, og et scenario et format ikke gjelder for sier hvorfor: se docs/INTEROP.md.
Andre CLI-moduser — lint et scenario, mat inn reelle data om jordens orientering eller kjø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
Animasjonseksport. --animate svg|html|frames|all skriver <scenario>.animation.svg (Cascading Style Sheets (CSS)-keyframes, uten skript), <scenario>.animation.html (avspilling, pause, skrubbing, hastighet og synkroniserte paneler, uten ekstern ressurs) og <scenario>.frames/ (frame_0000.svg, … pluss manifest.json med bilder per sekund og varighet). En kampanje spiller av fasene og alarmene sine, en spektrumkjøring sitt fossefall; temaet følger prefers-color-scheme og prefers-reduced-motion viser det ferdige bildet. Den gjengir kjøringens egne sampler, byte-identisk ved ny kjøring, og legger ikke til noen evidens. Se docs/ANIMATION.md.
Et suite-manifest er en liten TOML-fil (Tom's Obvious, Minimal Language) — en title og en scenarios = [ … ]-tabell med scenariostier — som motoren kjører i tur og orden, og som samler hvert resultat (med merkelappene MODELLED / VALIDATED) i én selvbeskrivende studieartefakt. Se scenarios/quantum-pnt-demonstrator.suite.toml.
Rolle i interoperabilitet. Kshana er laget for ytelsessimulering ved siden av verktøykjeden for etterbehandling, ikke som en erstatning for den: mat RINEX-utdataene inn i RTKLIB eller gLAB for en posisjonsløsning, og bruk SP3-utdataene som presist banedata for verktøy som Ginan — Kshana svarer på hvilken robusthet en gitt PNT-arkitektur gir før du har reelle signaler, i formater disse verktøyene allerede tar inn (--export-sp3, eller export_sp3 = true i et orbit-scenario, skriver <scenario>.sp3). Den samme banen kan publiseres som CCSDS OMM-middelelementer på standardiseringsspor (--export-omm, eller export_omm = true, skriver <scenario>.omm) — én OMM 502,0 KVN-melding (nøkkelord = verdi-notasjon) per TLE-definert satellitt, med hvert objekts reelle NORAD-katalognummer (North American Aerospace Defense Command), internasjonale COSPAR-betegnelse (Committee on Space Research) og epoke, for enhver OMM-bevisst mottaker i stedet for et skreddersydd to-linjers elementsett.
Eksempel på utdata (klokkens holdover — legg merke til hvordan kvalitetsmålene for integritet og sikkerhet 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
Den optiske klokkens timingfeil på 95-persentilen (p95) er 1.20e-4 ns: sammendraget skriver ut små verdier med gjeldende siffer i stedet for å avrunde dem til 0.0. security viser n/a (no attack) fordi dette scenarioet ikke konfigurerer noe angrep, så det er ingenting å oppdage. JSON-resultatet har likevel hver klokkes analytiske grense for deteksjon av spoofing i fom.security (0,997 for den optiske klokken, 0,000 for atomklokken i brikkeformat, hvis egen støy over overvåkingsvinduet overskrider spesifikasjonen på 20 ns), og blokken figure_tiers merker det tallet applicable: false. Scenarioslaget spoof scorer deteksjon mot et injisert angrep. figure_tiers gir også hvert rapporterte tall sitt verifikasjonsnivå — VALIDATED (kontrollert mot en ekstern uavhengig referanse) eller MODELLED — og raden i verifikasjonsmatrisen nivået leses fra. Banescenarioet rapporterer i tillegg en geometriblokk — andel av sampler med posisjonsbestemmelse, og beste/median posisjons-dilution of precision (PDOP) og posisjonsnøyaktighet — ved siden av klokkeresultatet.
Les disse to tallene nøye.
securityer en analytisk grense for deteksjon av spoofing utledet fra hver klokkes stabilitet — den er bare meningsfull mot et konfigurert spoofingscenario og er ikke en RAIM-detektor med flere satellitter.integrityher er filterets egenkonsistens (andelen av bortfallssampler innenfor filterets egen k-sigma-grense), ikke et integritetstall for HPL/VPL i luftfart. Sedocs/INTEGRITY.md.For ekte autonom integritet i mottakeren kjører scenarioslaget
integrity(scenarios/integrity-raim.toml) ekte snapshot- og løsningsseparasjons-RAIM (ARAIM-stil) over geometrien til den propagerte konstellasjonen: det beregner horisontale/vertikale beskyttelsesnivåer (HPL/VPL) per epoke og rapporterer andelen epoker som oppfyller de konfigurerte alarmgrensene, med et Stanford-integritetsdiagram for klassifisering av feil mot PL (beskyttelsesnivå).
Reproduserbare studieartefakter
Fire åpne studier regenererer hver en bytedeterministisk artefakt (fast seed) fra én kommando — tallene bak studiene av krysningspunktet mellom kvante og klassisk, optimismegapet for RF-forstyrrelser, scoring av PNT-robusthet og tidsbeskyttelsesnivå:
# 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
Hver artefakt registrerer motorversjon, seeder og en konfigurasjonshash og bærer en ærlig merkelapp MODELLED/VALIDATED. Probene med reelle data (*_probe) kjører den samme pipelinen over opptak du leverer lokalt; ingen datasett følger med i repositoriet. Studien av optimismegapet for RF-forstyrrelser er skrevet opp i preprinten arXiv:2606,22054, og det betingede tidsbeskyttelsesnivået (tpl_jammertest ovenfor) i preprinten arXiv:2606,24210 (se Siter).
De publiserte månestudiene for PNT (arXiv:2607,06212 DOP for fyrlykter på overflaten, arXiv:2607,02566 observerbarhet med VLBI og arXiv:2610,23871 observerbarhet av buelengde i cislunar rom) har påstandene sine om geometri, dilution of precision, sanntidsprediksjon av referansesystem / parametere for jordens orientering (EOP), distante retrograde baner og RF-avstandsmåling uavhengig kryssjekket i tests/validate_p*.rs mot separate uavhengige referanser (scipy.special.j1, en uavhengig NumPy-løsning av DOP med (HᵀH)⁻¹, en NumPy-omparsing av de samme IERS-radene finals2000A og databasen NASA/JPL Three-Body Periodic Orbit Database). Dette er ekstra regresjonskontroller over den modellerte månesuiten; de endrer ikke antallet i den maskinkontrollerte matrisen.
Scenarioformat
Scenarioformat#
Scenarioer er deklarative TOML. Et kind på toppnivå velger pakken — femti i alt (clock er standard hvis det utelates): 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 (testbenk for evaluering av deteksjon av RF-forstyrrelser med maskinlæring — merket syntetisk korpus + detektoragnostisk ROC/AUC-løype + optimismegap i og utenfor fordelingen), quantum-trade (kvante-mot-klassisk PNT-avveining med innlesing av målt ADEV + konvolutt for robusthet i GNSS-nektet miljø; MODELLED), space-weather (sol-/geomagnetiske indekser + eksosfærisk temperatur etter Jacchia-71 + aktivitetsdrevet termosfærisk tetthet over den statiske atmosfæren; MODELLED), oem-interop (CCSDS OEM-bro for import/rundtur for efemerider fra GMAT/Orekit/STK; MODELLED), trioen for oppdragsanalyse launch-window (oppskytingsazimut / planendring / muligheter for to legemer), reentry (ballistisk innstigningskorridor etter Allen-Eggers), eo-coverage (EO-geometri for svatbredde / GSD / tilgang / revisitt), space-packet (CCSDS 133,0 TM/TC — telemetri/telekommando — Space Packet-innramming — eksakt bitlayout, verifisert ved rundtur) og attitude-budget (3-DOF gravitasjonsgradientmoment + RSS-budsjett for pekefeil), passes (prediksjon av bakkestasjonsoverflyvninger med soloppgang/-nedgang — AOS/TCA/LOS, maksimal elevasjon, tilgang) og link-budget (enveis CCSDS/DSN-linkligning — FSPL / Eb·N₀ / margin / lukking); telecom-timing (tidsfeil i holdover, MTIE og TDEV kontrollert mot ITU-T-masker); spectrum (hele GNSS L-båndet som én effekttetthetsspekter: et fossefall av frekvens mot tid under en skriptet tidslinje for jammer med kontinuerlig bølge, smalbånd, chirp eller matchet støy, forhold mellom jammer og signal per bånd og effektiv bærebølge-til-støytetthet fra den spektrale separasjonskoeffisienten, og inn- og utdata av opptak i Signal Metadata Format (SigMF) med Welch-spektralestimater; signalspektrene VALIDATED mot lærebokverdier, jammerscenarioet MODELLED; se docs/SPECTRUM.md; det samme slaget tegner paneler for UHF-, S- og C-bånd med utformede signaler for lav jordbane); leo-signal (signalutforminger for posisjonering, navigasjon og tidssynkronisering i lav jordbane for et hvilket som helst system: båndbegrensede spektre, jitter i kodesporing og nøyaktighet i avstandsmåling, innhentingssøk og -tid, spektral separasjon mot GPS og Galileo, jammertoleranse og en avveining mellom UHF og C-bånd, fra offentlige forhåndsinnstillinger som Xona Pulsar, Iridium, Starlink og CentiSpace eller innebygde utforminger; formene i lukket form og LEO-Doppler VALIDATED, utformingene MODELLED; se docs/LEO-SIGNAL.md); solar-system (Solen, planetene, Pluto, Månen og sju store måner ved én epoke — posisjoner, konstanter, lystider og banespor; planetposisjoner VALIDATED mot JPL Horizons) og body-pnt (posisjonering rundt et hvilket som helst av disse legemene med en lokal navigasjonskonstellasjon og en dypromslink fra jorden; MODELLED); campaign (eksisterende slag satt sammen til en lenket oppdragstidslinje med tilstand gitt videre mellom fasene, et parametersveip, et Monte Carlo-ensemble med seed eller flere scenarioer under én felles betingelse; MODELLED, se docs/CAMPAIGNS.md); constellation-design (Walker-delta- og stjernemønstre, elementlister og utforminger med flere skall med forhåndsinnstillinger for GPS, Galileo, BeiDou og GLONASS, og dekning og dilution of precision over et breddegrad/lengdegrad-rutenett; generatoren og global GPS-DOP VALIDATED mot de publiserte tjenestedokumentene, se docs/CONSTELLATION-DESIGN.md); leo-pass (en overflyvning av en satellitt for posisjonering, navigasjon og tidssynkronisering (PNT) i lav jordbane (LEO) og dens linkbudsjett bånd for bånd, fra en hvilken som helst konstellasjon og signalutforming: synsvinkler, Doppler og Doppler-rate, ITU-R-tap fra regn, gass, scintillasjon og innendørs bygningstap, bærebølge-til-støytetthet mot MEO GNSS-satellittene i sikte, førsteordens ionosfære og ionosfærefrie par og et lavenergibudsjett for posisjonsbestemmelse, ionosfæresondering fra hvert båndpar og spoofingmonitorer ved konsistens i Doppler og overflyvningsgeometri og ved konsistens mellom bånd; ITU-R-leddene og Doppler-envelopen for statisk bruker VALIDATED, overflyvningen MODELLED, se docs/LEO-PASS.md); leo-navmsg (kringkastet efemeride- og klokkemelding fra en PNT-satellitt i lav jordbane (LEO), for en hvilken som helst bane og bærebølge: en tilpasser fra en integrert referansebane til Galileos keplerske sett, det settet med korreksjonspolynomer langs sporet, på tvers av sporet og radialt, modellen med 22 parametere fra Liu et al. 2025 eller ATOMIC-polynomet i ECEF uten klokke; avstandsfeil for signal i rommet (SISRE) mot tilpasningsintervall og oppdateringsperiode, en kontinuitetskontroll for oppdatering midt i overflyvningen, Kshanas egen dokumenterte binære ramme med en syklisk redundanskontroll CRC-24Q og et kvantiseringsbudsjett og en blokk i RINEX-4-stil merket som en Kshana-utvidelse; SISRE-vektene, Galileo-brukeralgoritmen og CRC-24Q VALIDATED, tilpasningene MODELLED; valgfrie forhåndsinnstillinger for Xona Pulsar, Iridium, Starlink, CentiSpace, et representativt C-bånd-system, ATOMIC og Celeste IOD; se docs/LEO-NAVMSG.md); trioen for fusjonert MEO + LEO PNT leo-pvt (Doppler-posisjonsbestemmelse fra avstandsrate i lav jordbane (LEO), felles pseudoavstandsløsninger for GNSS + LEO med intersystembiaser og DOP mot antall LEO-satellitter, dekning ved polene og i Arktis og LEO-tidsoverføring til UTC — over en hvilken som helst konstellasjon, med valgfrie forhåndsinnstillinger som Xona Pulsar, Iridium og Starlink-signaler ved anledning; LEO-Doppler-envelopen VALIDATED mot publiserte Iridium- og Xona-tall), leo-ppp (konvergens i presis punktposisjonering med bare GNSS og med LEO-augmentering, sammenlignet med Li et al. 2019) og ntn-positioning (5G-posisjonering i ikke-terrestriske nett fra Cramér-Rao-grensen for signalbåndbredden), MODELLED bortsett fra den envelopen, se docs/LEO-PNT-FUSION.md; leo-pnt-chain (ett LEO-PNT-system fra ende til ende: en utforming leo-signal båret av et bånd leo-pass, overflyvningens C/N0 og navigasjonsmeldingens avstandsfeil for signal i rommet gitt videre til en fusjonert posisjonsbestemmelse leo-pvt og konvergens leo-ppp, hver overlevering listet; MODELLED, se docs/LEO-PNT.md, som også er oversikten over hvert LEO-PNT-slag og -scenario, inkludert robusthetskampanjene, ett scenario per fokusområde i eksperimentet og ett per sluttbrukervertikal); PNT-suiten for Månen lunar-vlbi, lunar-joint-od-clock, lunar-frame-realisation, moonlight-service-volume, lunar-differential-pnt, lunar-interop-export; demonstratoren for kvanteaktivert PNT quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; og forskningsslagene for signalsikkerhet, cislunar og lagdelt robusthet lunar-attack-surface, realtime-frame-eop, lunar-time-budget, hybrid-optical-rf, cislunar-observability, conflict-resilience — trioen for oppdragsanalyse og disse senere slagene alle MODELLED (hver med en validert kjerne i lukket form; se matrisen). Felles felt: seed, et [time]-rutenett, en [gnss]-tidslinje for tilgjengelighet (det som driver bortfallet) og blokker per sensor med provenance-strenger som siterer kilden for hvert tall. Eksempel (klokke):
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 felt (av når de mangler): en klokke kan legge til flicker_floor (1/f FM – frekvensmodulasjon – Allan-gulv); en treghetssensor kan legge til gyro_bias og q_arw (gyrobias og angulær tilfeldig gange), og bias_instability og q_aa (Allan-gulvet for biasustabilitet og akselerasjonens tilfeldige gange) – til sammen et enakset (1-DOF) feilbudsjett for akselerometer (VRW/ARW – hastighetens og vinkelens tilfeldige gange – og biasustabilitet). Dette er feilbudsjettet som den medfølgende scenario-pakken inertial kjører. I tillegg har biblioteket nå en verifisert 3-akset strapdown-navigator (src/inertial/{attitude,mechanization,imu_errors}.rs): kvaternionbasert orientering med coning/sculling-kompensasjon, en full NED-mekanisering (ledd for jordrotasjon og transportrate, WGS-84 Somigliana-tyngde) og en deterministisk IMU-feilmodell der skalafaktor, skjevstilling, g-følsomhet, kvantisering og ratterampe er modellert (IEEE Std 952-1997, IEEE-standarden for spesifikasjon og testprosedyre for gyroer, §A.2; Groves 2013 §4,3). Denne 3-akse-banen er nå koblet inn i en kjørbar, løst koblet GNSS/INS-pakke (kind = "gnss-ins"): et feiltilstands-EKF med 15 tilstander styrer strapdown-løsningen mot støyende posisjonsbestemmelser mens GNSS er tilgjengelig, og ruller deretter gjennom bortfallet og rapporterer den fusjonerte horisontale feilen mot den åpne sløyfens frie INS-rulling. En tett koblet pseudorange-oppdatering er også tilgjengelig (den danner innovasjonen i avstandsdomenet og fortsetter derfor å korrigere med færre enn fire satellitter). Et scenario for klokke-holdover kan legge til runs (> 1) for å kjøre et Monte Carlo-ensemble – hvert kvalitetsmål rapporteres da som et gjennomsnitt med en spredning mellom 5. og 95. persentil, og diagrammet skraverer konfidensbåndet for feilen (se scenarios/clock-ensemble.toml).
Et fusion-scenario (samme blokker som hybrid) kjører to uavhengige Kalman-estimatorer – én for klokketilstanden og én for posisjonstilstanden – styrt av GNSS og støttet av optisk tidsoverføring, og rapporterer et samlet kvalitetsmål for holdover. De to blokkene deler ingen kryssovarians: dette er et sammenstilt par av feilbudsjetter, ikke et ekte koblet felles filter for klokke og posisjon (kovarians på tvers av blokkene står på veikartet). Se scenarios/fusion-pnt.toml.
Et spoof-scenario injiserer en tidsspoofing – én av fire [attack.shape]-typer (linear_ramp, step_jump, meaconing, replay; en enkelt rate_ns_per_s godtas fortsatt som en lineær rampe) – og kjører spoofingdetektoren til hver klokke. Detektoren er en tosidig χ²₁-energitest / Neyman–Pearson-test på klokkestøttet overvåkingsstatistikk: terskelen settes ut fra et mål for falsk-alarm-budsjettet target_pfa, og sannsynligheten for udetektert hendelse P_md rapporteres både på lukket form og med Monte Carlo (mc_runs forsøk per hypotese – de to stemmer overens innenfor noen få ganger 1/√N). Kvalitetsmålet for sikkerhet er 1 − P_md ved den operativt skadelige (spesifiserte) størrelsen, slik at en stille klokke som fanger opp en spoofing av spesifisert størrelse får ≈ 1, mens en støyende klokke som ofte går glipp av den får lavere (se scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).
Et gnss-sim-scenario er en simulering i målingsdomenet: for hver synlige satellitt syntetiserer det pseudoranget ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath og L1-Doppler, med den enfrekvente Klobuchar-ionosfæren ([iono], IS-GPS-200 §20.3.3.5.2.5) og Saastamoinen-zenittroposfæren projisert med mappingfunksjonen Niell (1996) ([tropo]). Residualene mates inn i snapshot-RAIM for HPL/VPL per epoke, og hver satellitts pseudorange, Doppler, C/N₀ og iono-/tropo-korreksjoner sendes ut i JSON-tabellen gnss_measurements. Det er en foroverrettet simulator (den genererer målinger ut fra en kjent referanse), ikke en mottaker eller løser – en kjøring uten støy gjenskaper geometrien pluss korreksjonene ned på submillimeternivå (se scenarios/gnss-sim-raim.toml).
Et jamming-scenario modellerer RF-interferens som et linkbudsjett: en [jammer] (ECEF-posisjon, sendt power_dbw, type) øker forholdet mellom jammer og signal hos en [receiver] som observerer en Walker-[constellation]. Ut fra geometrien (frirom-banetap og mottaksantennens forsterkning i hver retning) beregner det hver satellitts J/S og den effektive C/N₀ med standard anti-jam-ligning (prosesseringsgevinst fra spredning × spektralseparasjonsfaktoren Q; Kaplan & Hegarty §9,4), og markerer tap av lås under en konfigurerbar sporingsterskel – og rapporterer et kvalitetsmål availability_under_jamming. En bredbånds-jammer på 10 W på 1 km avstand gjør mottakeren helt ubrukelig (J/S ≈ 72 dB); den samme jammeren på 100 km svekker bare linkene (se scenarios/jamming-demo.toml).
Et sweep-scenario kjører en avveiningsstudie: 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 (for eksempel holdover_s) for begge klokkene og tegner de to kurvene. Basisscenarioet legges under [base] (se scenarios/sweep-clock-stability.toml).
Et sweep-nd-scenario generaliserer dette til en hvilken som helst pakke og et hvilket som helst antall akser: det varierer TOML-nøkler med punktum i et [base]-scenario (av en hvilken som helst kind) over det kartesiske produktet av [[axes]], kjører hver rutenettnode på nytt og registrerer metrics oppgitt som JSON-stier med punktum inn i resultatet (for eksempel classical.fom.holdover_s). Det fungerer for alle pakker fordi det virker i grensesnittet mellom TOML og resultat; native kjøringer evaluerer rutenettet parallelt (uten ekstra avhengighet, wasm faller tilbake til sekvensiell kjøring), og utdataene er deterministiske og radvis (se scenarios/sweep-nd-inertial.toml).
Et orbit-scenario utleder [gnss]-tidslinjen fra geometri i stedet for å skrive den inn – oppgi en [user]-bane, en [constellation], en elevasjonsmask_deg og de to klokkeblokkene. Det rapporterer også posisjonsnøyaktighet ut fra satellittgeometrien; den valgfrie sigma_uere_m (1-sigma brukerekvivalent avstandsfeil, standard 1 m) skalerer posisjonens presisjonsfortynning til et posisjonssigma. Brukerbanen kan gjøres eksentrisk med eccentricity og argp_deg, og j2 = true legger til sekulær drift fra jordens avplatning (se scenarios/orbit-molniya.toml). Konstellasjonen kan i stedet være en ekte: gi [constellation] en tle-blokk med to-linjers elementsett, så leses satellittene derfra (se scenarios/orbit-real-tle.toml). Legg til én eller flere [[constellations]]-blokker for multi-GNSS (for eksempel 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
Typene for GPS-denied alt-PNT navigerer helt uten GNSS og matcher en målt feltsekvens mot et kart gjennom et partikkelfilter. Et gravity-map-scenario flyr et spor gjennom et gravitasjonsanomalifelt av sfæriske harmoniske og gjenfinner det ut fra avlesningen til et kaldatom-gravimeter (scenarios/gps-denied-gravity-nav.toml); et terrain-nav-scenario gjør det samme mot en SRTM-høydemodell (TERCOM/SITAN, scenarios/terrain-nav.toml); og et combined-altpnt-scenario fusjonerer gravitasjon + IGRF-magnetfelt + terreng i ett filter (scenarios/combined-altpnt.toml).
Et lunar-integrity-scenario evaluerer cislunar PNT: det kjører en ARAIM-beskyttelsesnivåberegning ved månens sørpol mot et sett LunaNet/LNIS-relé og rapporterer ærlig integritetsgapet – en lunar σ_URE på ~30 m driver beskyttelsesnivået godt over en varslingsgrense på 50 m, slik at tjenesten er utilgjengelig under integritetsregler i luftfartsstil (scenarios/lunanet-araim.toml).
Et lunar-time-offset-scenario rapporterer den relativistiske klokkeraten mellom jorden og månen – grunnlaget for en tidsskala for lunar koordinattid (LTC/TCL). En post-newtonsk identitet fra første prinsipper summerer forskjellen i selvpotensial (IAU L_G geoidepotensial minus månens overflatepotensial) og månens kinetiske ledd (andre ordens Doppler) til en sekulær rate på ≈ 57 µs/døgn, rapportert sammen med det publiserte båndet på 56–59 µs/døgn; det gir også den akkumulerte LTC−TT-forskjellen over en horisont og et ensemble med invers varians (en lunar papirklokke). MODELLED – hovedtallet er referanseavhengig (jordens geoide mot månens selenoide, midlingsvindu), og derfor rapporteres et bånd, ikke ett enkelt sertifisert tall (scenarios/lunar-time-offset.toml).
Se scenarios/ for minst ett gjennomarbeidet eksempel på hver type (92 typer, 193 scenario-.toml-filer + 1 suitemanifest – flere typer har mer enn ett eksempel). Ikke alle typer har en fil oppkalt etter seg: lunar-integrity → scenarios/lunanet-araim.toml og gravity-map → scenarios/gps-denied-gravity-nav.toml er to av flere slike. Du kan når som helst liste de tilgjengelige typene med cargo run -- --validate <file>-feil, Python-funksjonen list_kinds() eller MCP-verktøyet list_scenario_kinds.
Utdata
Utdata#
Resultatartefakten er versjonert, selvbeskrivende JSON: tidsserier per steg, de beregnede kvalitetsmålene, de aktive modellspesifikasjonene (med proveniens), seedet, en scenario-hash – slik at ethvert diagram kan gjenskapes fra filen – og, for hver klokke, en adev_curve ([{tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi}]): den overlappende Allan-deviasjonen over middelingstider med oktavavstand – den vanlige måten å lese en klokkes stabilitet på – nå med et støytypespesifikt 95 %-konfidensbånd per punkt (postens potenslovtype identifiseres fra den modifiserte Allan-helningen, og χ²-intervallet bruker de tilsvarende effektive frihetsgradene fra NIST SP 1065). Nettleser-playgrounden viser den som et log-log-diagram «Clock stability (ADEV)». (MDEV, TDEV og HDEV finnes som bibliotekestimatorer; den eksporterte resultatkurven er den overlappende ADEV.) Hvert felt, med enheter og en kildehenvisning, er dokumentert i docs/SCHEMA.md.
Hvert diagram er selvbeskrivende. Nettleser-playgrounden, CLI-ens *.chart.svg-eksport og HTML-resultatkortet (HyperText Markup Language) stempler alle diagrambilder med en bunntekst som lyder Kshana v<version> · scenario <hash> · kshana.dev. scenario <hash> er de første 12 heksadesimale tegnene i kjøringens scenario-hash – en SHA-256-sammendrag (256-biters Secure Hash Algorithm) over den kanoniske scenariodefinisjonen (seed, terskler, modellparametere, GNSS-vinduer, …); integritets- og månerapportene, som ikke har noen egen hash, faller tilbake til en SHA-256 av scenariokilden. Det er det samme fingeravtrykket som vises i enlinjesammendraget og i resultat-JSON-en, slik at et lagret eller limt inn diagram alltid bærer versjonen, det nøyaktige scenarioet som produserte det (for bit-for-bit-gjenskaping) og kilden – endrer du en inndata, endres hashen.
Kvalitetsmålene følger de vanlige operative kvalitetsmålene for PNT:
| Kvalitetsmål | Hvordan Kshana beregner det |
|---|---|
| Tidsytelse (klokke-/banepakker) | RMS og 95. persentil av klokkefasefeilen over bortfallet, i nanosekunder (timing_rms_ns) – et mål for tidssynkronisering, ikke for posisjon |
| Posisjonsytelse (treghets-/hybridpakker) | RMS og 95. persentil av 1-DOF-posisjonsfeilen over bortfallet, i meter (pos_rms_m); enakset. En enkelt kjøring markeres med monte_carlo: false; sett runs = N for et Monte Carlo-ensemble som rapporterer hvert måls gjennomsnitt, spredning og bootstrap-95 %-KI (konfidensintervall). Fortsatt ikke en 2-D CEP/2DRMS (circular error probable / dobbelt rot av middelkvadrat for avstanden) eller DOP-vektet nøyaktighet (de krever 3-akse-modellen – står på veikartet) |
| Autonomi | holdover-varighet – tid innenfor spesifikasjonen etter GNSS-tap (kvantisert til rutenettet: en nedre grense) |
| Robusthet | feilvekstens stigning under bortfallet |
| Tilgjengelighet | andel av kjøringen med en løsning innenfor spesifikasjonen |
| Integritet | filterets selvkonsistens – andel av bortfallsprøvene der feilen holder seg innenfor Kalman-filterets egen k-sigma-grense. Ikke et integritetsmål for luftfart av typen HPL/VPL/RAIM (se docs/INTEGRITY.md) |
| Sikkerhet | analytisk grense for påvisbarhet av spoofing ut fra klokkestabilitet – hvor liten eller langsom en tidsspoofing en konsistensmonitor for én klokke kunne flagge. Meningsfull bare med et konfigurert angrep; ikke en RAIM-detektor for flere satellitter |
Ny med disse begrepene? Hvert av dem er forklart på vanlig språk i ordlisten.
Oppbygging av depotet
Oppbygging av depotet#
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 stilte spørsmål)
FAQ#
Må jeg forstå kvantefysikk for å bruke dette? Nei. Hvis du kan kjøre en kommandolinje, kan du kjøre Kshana. Begynn med innføringen på vanlig språk; slå opp begreper i ordlisten.
Er dette en utforming av kvantemaskinvare eller flyprogramvare? Nei. Det er en simulator for ytelse. Kvantemaskinvarens nøyaktighet kommer fra publiserte feilmodeller, ikke fra dette verktøyet. Se Hva det er og ikke er.
Er kvanteresultatene realistiske, eller markedsføring? Hver parameter er sitert til et datablad eller en artikkel, hver modell er validert mot en lærebokrelasjon, og modenhet er merket ærlig i VALIDATION.md – inkludert at ingen strontium-optisk klokke har fløyet. Motoren er nøytral: kvante og klassisk er den samme koden med ulike publiserte tall.
Kan jeg stole på at to kjøringer gir det samme? Ja – kjøringene er deterministiske: scenario + seed + engine version → bit-identical output, håndhevet av scripts/check-reproducible.sh.
Kan jeg bruke det fra Python eller i en nettleser? Ja – se Installasjon: Python- og WebAssembly-eksemplene står under den. Begge kaller den samme motoren.
Hvordan modellerer jeg min egen sensor? Skriv et scenario-.toml med sensorens publiserte tall i provenance-feltene. Se Scenarioformat og eksemplene i scenarios/.
Er det gratis til kommersiell bruk? Ja – under AGPL-3.0, også i kommersielle sammenhenger, så lenge du respekterer AGPLs copyleft (særlig: hvis du endrer Kshana og tilbyr det over et nettverk, må du tilby de brukerne den endrede kildekoden). Hvis det ikke passer deg – for eksempel fordi du må bygge Kshana inn i et proprietært produkt eller drive en lukket nettverkstjeneste – kan du få en kommersiell lisens fra Ashforde® OÜ; se LICENSING.md og Støtte.
Feilsøking
Feilsøking#
cargo build feiler med en gammel verktøykjede. Kshana krever Rust ≥ 1,88. Oppdater med rustup update.
Bygging av Python-utvidelsen feiler under lenking på macOS (Undefined symbols … _Py…). En Python-utvidelse løser symbolene sine ved innlasting. maturin setter riktig lenkerflagg automatisk – bruk maturin develop --features python i stedet for en bar cargo build.
Python-bygget klager over at tolken er nyere enn PyO3 kjenner til. Sett PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (abi3-hjul er framoverkompatible på tvers av CPython-versjoner).
WebAssembly-bygget finner ikke målet. Installer det én gang med rustup target add wasm32-unknown-unknown, og kjør deretter wasm-pack build --target web -- --features wasm.
Hvor ble det av utdataene mine? Hver kjøring skriver <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html og <scenario>.report.json ved siden av inndata-.toml, og <scenario>.table.csv i tillegg for de typene som publiserer en tabell. Alle disse er git-ignorert med vilje.
Versjonering og utgivelser
Versjonering og utgivelser#
Kshana følger semantisk versjonering. Før 1.0 kan det offentlige scenario-/resultatskjemaet fortsatt endres; brytende endringer pekes ut eksplisitt i CHANGELOG.md. Hvert resultat kan gjenskapes fra scenario + seed + engine version.
Hver vX.Y.Z-tagg publiserer alle kanaler automatisk, i én bestemt rekkefølge – hele testsuiten kjøres først på den taggede commiten, ingenting publiseres før den består, og etterpå kontrollerer pipelinen at hvert register faktisk leverer den nye versjonen (docs/RELEASING.md). Kanalene:
| Kanal | Installer / hent | Innhold |
|---|---|---|
| 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-hjul (Linux/macOS/Windows) + sdist (kildedistribusjon) |
| npm | npm install kshana |
WebAssembly-modul + JS-omslag |
| ghcr.io | docker run -i ghcr.io/ashfordeou/kshana-mcp |
OCI-image (Open Container Initiative) for flere arkitekturer – ingen verktøykjede nødvendig |
| npm | npx -y kshana-mcp@0.40.0 |
starter: laster ned binærfilen for utgivelsen, verifiserer SHA256SUMS, kjører den |
| PyPI | uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 |
den samme starteren for Python |
| Homebrew · Scoop · winget | brew install ashfordeOU/tap/kshana-mcp · scoop install kshana-mcp · winget install AshfordeOU.KshanaMcp |
kshana-mcp-binærfilen, generert fra hver utgivelses SHA256SUMS |
| det offisielle MCP-registeret | oppdages automatisk av MCP-klienter | io.github.ashfordeOU/kshana-mcp (OCI-image, npm- og PyPI-pakker) |
| JetBrains Marketplace | IDE → Plugins → søk etter «Kshana» | IDE-pluginen Kshana — PNT simulator |
| Zenodo | DOI | et siterbart arkiv av hver utgivelse |
| kshana.dev | åpne i en nettleser | Kshana Studio, WebAssembly-appen i nettleseren, bygget på nytt fra hver utgivelsestagg (slik at versjonen den viser er versjonen den kjører) |
MCP-serverens crate-, image- og registerversjon følger motoren (den bundler biblioteket); JetBrains-pluginen har uavhengig versjonering (den kaller den installerte kshana-binærfilen din).
Veikart
Veikart#
Se ROADMAP.md for det trinnvise veikartet, CHANGELOG.md for utgitt historikk og docs/CAPABILITY.md for veikartet per funksjon. Prioriteringsrekkefølgen er: først evidens for tidssynkronisering og holdover for kritisk infrastruktur (telekommasker, lengre holdover med aldring og flickerstøy, innlesing av målte klokkedata); deretter den nøytrale avveiningsmetoden mellom kvante og klassisk (resultater merket MODELLED til en partners målte data løfter dem); og lunar/cislunar og dypromsnavigasjon vedlikeholdes, men utvides ikke som hovedsatsing. Den ITRF-presise referanserammereduksjonen er nå levert – hele CIO-baserte IAU 2006/2000A GCRS↔ITRS-kjeden (polbevegelse + nutasjon på under en buesekund), validert bit-for-bit mot SOFA/ERFA og uavhengig kryssjekket mot ANISE (SPICE i ren Rust) til ≤ 3,6 m i GNSS-bane. Nærliggende punkter omfatter tett koblet bærebølgefase-fusjon og å gjøre den løst/tett koblede GNSS/INS-navigatoren tilgjengelig i flere pakker; motoren for radiometrisk navigasjon i dypt rom / til Mars kom i v0.17.0 (validert i simulering). Kvantefysikklaget er et P2-punkt: CAI-akselerometeret simuleres nå fra første prinsipper (Mach–Zehnder-fase, projeksjonsstøy, kontrastavtak, vibrasjonskobling), mens klokke- og tidsoverføringssensorene fortsatt drives av publiserte Allan-/støybudsjettkoeffisienter. GMST-basert TEME↔ECEF, IERS-skuddsekundets tidssystemer (UTC/TAI/TT/UT1), SGP4/SDP4-banepropagering (v0.7.0, validert mot AIAA 2006-6753-vektorene) og den kjørbare gnss-ins-fusjonspakken er alle levert, og treghetshastigheten er gjort tilgjengelig videre nedstrøms. En aktiv stokastisk tidsspoofingdetektor (Neyman–Pearson / χ²₁-energitest med Monte Carlo-P_fa/P_md og et sikkerhetskvalitetsmål på 1−P_md), en linkbudsjettmodell for jamming (J/S → effektiv C/N₀ → tap av lås), tilgjengelighet for flere konstellasjoner, et enakset (1-DOF) IMU-feilbudsjett, to uavhengige Kalman-estimatorer (klokke + posisjon) rapportert som ett samlet kvalitetsmål, reell konstellasjonsgeometri fra TLE-er, en HTML-resultatrapport, geometriavledet GNSS-tilgjengelighet og presisjonsfortynning fra Kepler-baner med eksentrisitet og J2-drift, Monte Carlo-konfidensbånd, parametersveip for avveiningsstudier, en WebAssembly-playground i nettleseren og valgfrie bindinger for Python (PyO3) og WebAssembly (wasm-bindgen) er landet på main.
Bidra
Bidra#
Se CONTRIBUTING.md. Kort sagt: testene består (cargo test), de to vaktskriptene består, Conventional Commits, og en oppføring i CHANGELOG.md under [Unreleased] for hver endring som er synlig for brukeren. Deltakelse styres av vår atferdskodeks. For å rapportere et sikkerhetsproblem, se sikkerhetspolicyen – ikke åpne en offentlig sak for sårbarheter.
Dokumentasjon: hvert dokument og hvem det er for
Dokumentasjon#
| Dokument | For hvem | Hva det inneholder |
|---|---|---|
| Grunnleggende om konsepter | alle, begynn her | hva Kshana gjør og hvorfor, fra bunnen av til fysikken |
| Kshana Studio | alle | kjør motoren i nettleseren din (WebAssembly); merknader om bygging og utrulling |
| Ordliste | alle | definisjoner på vanlig språk av hvert begrep |
| Scenariotyper | alle | hver type motoren kjører: hva den gjør, feltene, et eksempel på en kommando, registerradene og diagrammet motoren skriver for den |
| Partnerdata | laboratorier og produsenter som har målte data | hvilke MODELLED-rader en målt klokke- eller IMU-registrering kan løfte, formatene, hvordan en innsending kontrolleres (kshana partner check), skåres og krediteres |
| Arkitektur | utviklere / gjennomgangspersoner | modulkart, motorens pipeline, dispatch og diagrammer |
| Valideringsstatus | gjennomgangspersoner / siterere | hva som er validated og not modeled, med evidens |
| Verifikasjonsmatrise | gjennomgangspersoner / siterere | det maskinkontrollerte evidensregisteret – hver funksjonsrad med status, modul, test og ekstern uavhengig referanse, generert fra src/verification.rs |
| Begrunnelse for modellert | gjennomgangspersoner | hvorfor hver modellert-rad mangler en ekstern uavhengig referanse, forklart rad for rad |
| Opphav | gjennomgangspersoner / siterere | hver sensorparameter, modell og hvert datasett sporet til sin publiserte kilde, i én siterbar tabell |
| Reproduserbarhet og proveniens | gjennomgangspersoner / pakkeansvarlige | determinismegarantier, golden-festing, SBOM (software bill of materials), byggeproveniens |
| Plattformtagger for hjul | pakkeansvarlige | abi3-matrisen for Python-hjul – hvilken plattformtagg pip install kshana velger |
| Posisjonering | vurderere | hvor Kshana står i forhold til RTKLIB/gLAB (utfyllende), og nettleserlaget uten installasjon |
| Kshana Pro | vurderere / programledere | hva det proprietære Pro-laget legger til over den samme motoren: utformingsoptimerer, usikkerhet og følsomhet, oppdragsdossier, kampanjeovervåking, spektrumsameksistens, tjeneste for jobber på eget anlegg, sporbarhet mot krav; hva hver av dem produserer og hva den ikke gjør |
| Teknisk rapport · JOSS-artikkel | gjennomgangspersoner / siterere / vurderere | hele den utvidede forskningsartikkelen – arkitektur, modeller per domene, validering, casestudier og begrensninger – pluss den korte JOSS-innsendingen (Journal of Open Source Software) |
| SGP4-validering | gjennomgangspersoner / siterere | overensstemmelse med AIAA 2006-6753-referansen (666 tilstander, ~4 mm) og en direkte sammenligning med den uavhengige sgp4-cratet (stemmer overens på submikrometernivå / 4,12 mm) |
| Validering av kraftmodellen | gjennomgangspersoner / siterere | motoren med full kraftmodell (src/precise_od.rs) tilpasset byråefemerider – metodikk og validerte residualer |
| Veiledning for ekte TLE-er | brukere | å drive scenarioer med ekte Celestrak/Space-Track-TLE-er for konstellasjoner (i stedet for det medfølgende syntetiske Walker-settet) |
| Kvalitetsmål for integritet | vurderere | hva tallene for integrity og security betyr – og hva de ikke er i forhold til HPL/VPL for luftfart |
| ARAIM-referanse | gjennomgangspersoner / integratorer | den åpne MHSS-implementasjonen av ARAIM-beskyttelsesnivåer – projeksjonen av nominell bias b_k, σ_URA mot σ_URE og a priori-sannsynlighetene for feilmodi |
| Kvantemodeller · detaljer | gjennomgangspersoner | fysikklaget for kaldatom-interferometer, og hvor koeffisientene fortsatt slås opp |
| Compliance | vurderere | omfanget av DO-229E / DO-316-algoritmene, og hva som ikke er en påstand om overensstemmelse |
| Maritim tillit | sjøfolk / integratorer | tillitsscoren 0-100 for GNSS i et fartøys NMEA, overvåkingene og begrensningene (veiledende, ikke typegodkjent navigasjonsutstyr) |
| NMEA-treningsstrømmer | maritime instruktører | syntetisk NMEA fra broen med skriptet jamming og spoofing og en instruktørlogg; bare tekst, aldri til levende navigasjon |
| Interferenskart | analytikere / sjøfolk | hvor fly og skip meldte degraderte navigasjonsdata, og hvor mye av en rute det berører |
| Bevispakker | operatører / forsikringsselskaper | signerte tekniske registreringer av en tillitshendelse og hvordan en slik verifiseres |
| Tillitstelemetri | drifts- og sikkerhetsteam | tillitsstrømmen som Prometheus-metrikker, SIEM-hendelser og OpenTelemetry, med et Grafana-dashbord |
| Marineintegrasjoner | båteiere / integratorer | Signal K-pluginen, OpenCPN-gatemodus og referansebygget |
| Test bench | mottakerprodusenter | å spille av et eksportert scenario gjennom en laboratoriesimulator og skåre mottakerens logg |
| Compliance-kartlegging | vurderere | offentlige robusthetsrammeverk koblet til Kshanas utdata, med kilder og hull; kshana compliance-report |
| Notebooks | brukere | kjørbare veiledninger med den gjengitte teksten |
| Standarder og interoperabilitet | integratorer | utvekslingsformatene for GNSS, flydynamikk og byråer som Kshana leser og skriver (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …) |
| LEO PNT-fusjon | brukere / vurderere | fusjonert MEO + LEO posisjonering, navigasjon og tidssynkronisering: Doppler, felles pseudorange, PPP-konvergens, 5G NTN, polardekning og LEO-tidsoverføring over en hvilken som helst konstellasjon; de valgfrie forhåndsinnstillingene og deres offentlige kilder |
| Kampanjer | brukere / vurderere | å sette sammen scenarioer: kjedede oppdragstidslinjer, parametersveip, Monte Carlo-ensembler og kjøringer med felles betingelser, med sammensetningsidentitetene testene fester |
| Scenariokatalog | brukere / integratorer | hver tilgjengelige type med obligatoriske og valgfrie TOML-felt – generert fra api::list_scenario_kinds() |
| Resultatskjema | integratorer | hvert felt i resultat-JSON-en, med enheter og en kildehenvisning |
| Python-API | Python-brukere | PyO3-bindingens overflate – å kalle motoren, scenario- og resultattypene og eksempler |
| Påstander mot virkeligheten | gjennomgangspersoner | registeret over lukkede overdrivelser + CI-vakten (tests/no_overclaims.rs) som holder det løst |
| Veikart | alle | det trinnvise veikartet – hva som er levert og hva som kommer |
| MCP-server · JetBrains-plugin | agenter / IDE-brukere | kjør Kshana fra en AI-assistent eller en JetBrains-IDE |
| Agentveiledning · Flater | agenter / integratorer | hvilket verktøy som svarer på hvilket spørsmål, hva du bør ta vare på sammen med hvert svar; hvor hver funksjon er tilgjengelig (CLI, Rust, Python, WASM, MCP, plugin, JetBrains, notatbøker) og hvorfor en celle er N/A |
| Endringslogg | alle | utgitt historikk (Keep a Changelog + SemVer, semantisk versjonering) |
| Bidra | bidragsytere | bygging, vakter, disiplin for tester og siteringer, DCO (Developer Certificate of Origin) |
| Styring | bidragsytere / fellesskap | hvordan Kshana styres – hvem som bestemmer, hvordan, og grensen mellom åpent og lukket |
| Atferdskodeks | fellesskap | forventet atferd (Contributor Covenant) |
| Sikkerhetspolicy | varslere | hvordan du melder en sårbarhet; merknad om dobbel bruk |
Viktige referanser
Viktige referanser#
Uavhengige referanser og standarder for validering – de eksterne autoritetene Kshanas kontroller er forankret i:
- Vallado, Crawford, Hujsak & Kelso – Revisiting Spacetrack Report #3 (AIAA 2006-6753; testdata): verifikasjonssettet for SGP4/SDP4 som Kshana stemmer overens med til 4,12 mm, og de gjennomarbeidede referansesystemeksemplene TEME→ITRF-kjeden kontrolleres mot.
- IAU SOFA / ERFA – rutinene for tid og referansesystem som IAU 2000A-nutasjonen og CIO GCRS↔ITRS-reduksjonen er validert bit-for-bit mot.
- Petit & Luzum (red.) – IERS Conventions (2010), IERS TN (Technical Note) 36 (standarder for jordorientering, polbevegelse og referansesystem).
- Riley – Handbook of Frequency Stability Analysis, NIST SP 1065 (Allan-deviasjonsrelasjoner og NBS14-referanseserien; NBS = det tidligere amerikanske National Bureau of Standards).
- Pedregosa et al. – scikit-learn: Machine Learning in Python, JMLR 12 (2011): referanseimplementasjonene av ROC/AUC, forvekslingsmatrise og presisjon/gjenkalling/F1 som testbenken for evaluering av RF-forstyrrelser er avstemt nøyaktig mot (
tests/eval_metrics_reference.rs). - Virtanen et al. – SciPy 1,0, Nature Methods 17 (2020):
optimize.nnls,stats.chi2oglinalg.expm– referanserutinene som NNLS-tilpasningen av målt ADEV i kvanteavveiningen, χ²-konsistensbåndene og van Loan-kovariansen for klokkens prosessstøy er validert mot (tests/scipy_reference.rs). - Knowles, Kanhere, Neamati & Gao – gnss_lib_py, SoftwareX 27 (2024): brukt både som åpen tidligere teknikk (se Comparison & open prior art nedenfor) og som den uavhengige DOP-referansen som beregningen av GDOP/PDOP/HDOP/VDOP/TDOP er avstemt mot til 1e-6 (
tests/dop_reference.rs). - Montenbruck & Gill – Satellite Orbits: Models, Methods and Applications (Springer): kraftmodellene bak tilpasningen av kraftmodellen til byråenes presise 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 (halo-/NRHO-familiene som CR3BP-differensialkorrektoren gjenskaper).
Fysikk for komponenter og metoder – de siterte kildene bak sensormodellene:
- Origlia, Schiller, Bongs et al. – arXiv:1503,08457 (optisk gitterklokke med strontium, mål for bruk i rommet).
- Oelker et al., Nature Photonics (2019) – doi:10.1038/s41566-019-0493-4 (Sr-klokke i laboratorium, 4,8×10⁻¹⁷).
- Templier et al., Science Advances (2022) – arXiv:2209,13209 (hybrid kvanteakselerometer-triade).
- Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation – IEEE AESS-veiledning (Aerospace and Electronic Systems Society; University College London Discovery repository) (feilvekst 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 toveis overføring av tid og frekvens; den optiske inter-satellittlinken modellerer budsjettet for ikke-resiprositet etter disse).
- Betz – Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001), doi:10.1002/j.2161-4296.2001.tb00247.x (BOC-modulasjonen og teorien om spektralseparasjon bak
src/navsignal.rs). - Kaplan & Hegarty (red.) – Understanding GPS/GNSS: Principles and Applications (3. utg., Artech House, 2017): ligningen for effektiv C/N₀ under anti-jam og den termiske støyjitteren i tidlig–sen-DLL-kodesporing som navigasjonssignal- og jammingmodellene bruker.
Sammenligning og åpen tidligere teknikk – verktøyene og oversiktene Kshana posisjoneres mot:
- Humphreys et al. – TEXBAT (Texas Spoofing Test Battery; ION – Institute of Navigation – GNSS 2012): parametrene i testbatteriet for spoofing som flerlagsdetektoren er karakterisert mot.
- González et al. – NaveGo (2017): de åpne, validerte feilprofilene for treghetsnavigasjon som brukes som klassisk grunnlinje.
- Iiyama, Casadesús Vila & Gao – LuPNT (ION GNSS+ 2023, Stanford NavLab): åpen simulator for lunar PNT.
- Knowles, Kanhere, Neamati & Gao – gnss_lib_py, SoftwareX 27 (2024), doi:10.1016/j.softx.2024.101811: åpen analyse av 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 redusert-dynamisk banebestemmelse, gulvet for empirisk akselerasjon som LRO-tilpasningen gjenskaper.