Maskinöversättning, inte granskad av en modersmålstalare. Engelska är referensen.

Kom igångRedigera på GitHubKälla: README.md

Kshana: märket, ett kompassmålkors som markerar det exakta ögonblicket, bredvid ordmärket kshanaKshana: märket, ett kompassmålkors som markerar det exakta ögonblicket, bredvid ordmärket kshana

Kshana · क्षण · det precisa ögonblicket
En simulator med öppen källkod för PNT-resiliens (positionering, navigering och tidssynkronisering).

Status för kontinuerlig integration på main Radtäckning nära 95 % av src/, uppmätt i docs/COVERAGE.md och med spärr vid 85 % i kontinuerlig integration 176 av 401 förmågor VALIDATED mot en oberoende extern referens, ur verifieringsmatrisen Status för kvalitetsgrind i SonarQube Cloud Utgåva v0.40.0 Licens: AGPL-3.0-only
DOI 10.5281/zenodo.20528627, Zenodos konceptpost för varje utgåva En kommersiell licens finns hos Ashforde® OÜ, se Utgåvor kshana på crates.io, den aktuella publicerade versionen kshana på PyPI, den aktuella publicerade versionen kshana på npm, den aktuella publicerade versionen

Öppna Kshana Studio · Installera · Förmågor · Evidens · Forskning · Dokumentation · Citera

Öva på minuten då GNSS går i mörker. Kshanas uppdragskonsol, ritad utifrån en verklig körning av motor v0.40.0: den kedjade kampanjen campaign-jam-spoof-holdover-integrity (frö 20260928, 6 faser, 18 delkörningar över T+01:16:10) och de 102 satelliterna i GPS, Galileo, BeiDou och GLONASS från constellation-multi-gnss-coverage, var och en ritad på den cirkulära tvåkroppsbana som återvunnits från motorns markspår, radier komprimerade för visning. Klockans tidsfel når som mest 62,7 ns mot en vakt på 50 ns, bärvågs-brusdensiteten faller till -12.2 dB-Hz mot ett golv på 25 dB-Hz, och den vertikala skyddsnivån når 135,4 m mot en larmgräns på 50 m.Öva på minuten då GNSS går i mörker. Kshanas uppdragskonsol, ritad utifrån en verklig körning av motor v0.40.0: den kedjade kampanjen campaign-jam-spoof-holdover-integrity (frö 20260928, 6 faser, 18 delkörningar över T+01:16:10) och de 102 satelliterna i GPS, Galileo, BeiDou och GLONASS från constellation-multi-gnss-coverage, var och en ritad på den cirkulära tvåkroppsbana som återvunnits från motorns markspår, radier komprimerade för visning. Klockans tidsfel når som mest 62,7 ns mot en vakt på 50 ns, bärvågs-brusdensiteten faller till -12.2 dB-Hz mot ett golv på 25 dB-Hz, och den vertikala skyddsnivån når 135,4 m mot en larmgräns på 50 m.
Innehåll

Öva på minuten då GNSS går i mörker#

Kshana spelar upp jamming, spoofing och klock-holdover när GNSS-signaler (Global Navigation Satellite System) fallerar, och talar om hur länge ett system håller tid och position inom sin budget, och vilken klocka eller sensor som ger mest marginal. Det är en Rust-motor. Den körs i en terminal, en notebook, en IDE (integrerad utvecklingsmiljö), en AI-assistent (artificiell intelligens) eller i din webbläsare.

Varje körning kan återskapas bit för bit utifrån scenariot, fröet och motorversionen. Varje förmåga har en av tre etiketter i ett maskinkontrollerat register: VALIDATED (en oberoende extern referens stämmer), MODELLED (internt konsekvent, och uttalat öppet) eller PARTNER (en hårdvarupartner äger den).

Status: v0.40.0. Ett validerat, reproducerbart simuleringsunderlag för PNT-resiliens. Tidssynkronisering och holdover kommer först, eftersom det området är det bäst validerade. Kshana är ett studie- och avvägningsinstrument: inte hårdvara för radiofrekvenssignalgenerering (RF) (den styr ingen radio och sänder ingenting; dess utdata på signalnivå är IQ-samplingsfiler i basband för programvarumottagare), inte en hårdvaru- eller certifierad GNSS-mottagare (dess programvarumottagare är ett analysverktyg) och inte en flygprodukt. Ny inom området? Börja med primern på klarspråk och ordlistan.

Nyheter i 0,40#

0,40 lägger till en felbudget på uppdragsnivå, märker varje siffra och tabell med sin evidensnivå, läser uppmätta klockloggar, kontrollerar bidrag från datapartner, uppskattar var en störsändare kan finnas och talar sjutton språk vid sidan av engelska. Registret har nu 401 rader: 176 VALIDATED, 221 MODELLED, 4 PARTNER. Ingen rad lyftes till VALIDATED, och varje miss nedan är fastlåst av ett test.

  • Uppdragsflöde. Typen mission-thread kopplar ihop faser från uppskjutning till återinträde (launch-ascent, leo-rendezvous, tli-and-cruise, entry och fyra månetyper) med angivna överlämningsregler, en marginal mot angivna krav och den svagaste länken; ett helt Artemis-klassexempel över 11 faser (jord- och månsegment), 92 scenariotyper totalt. Varje tal är MODELLED. Propageringen i cislunart rum mot den offentliga banan för Artemis I missar sin förhandsregistrerade tröskel (45,3 km och 0,25 m/s mot 5 km och 0,05 m/s; orsaken är små manövrar som modellen inte innehåller), och månens propagator mot CAPSTONE-banan missar (136,8 km mot 25 km vid slutet av ett varv); jämförelsen med LRO nås. Raderna förblir MODELLED (Uppdragsflöde, månsegmentet). I Studio läses flödet på /studio/mission-thread/.
  • Evidensetiketter. Varje siffra och tabell som en körning skriver bär den nivå och de registerrads-id som den vilar på, avlästa från matrisen.
  • Uppmätta klockor. Åtta klockloggformat läses (docs/CLOCK-LOG-FORMATS.md) och en anpassad serie kan styra holdovern. Mot trösklar som fastställts i förväg missar anpassningen F1(a) på fem av sex poster och F2 på en; båda förblir MODELLED (Ändringslogg).
  • Datapartner. kshana partner check kontrollerar formatet på ett bidrag och poängsätter ingenting (docs/PARTNER-DATA.md).
  • Sändarområde. kshana interference-map locate ger ett område och en ellips, aldrig en enskild punkt, utifrån ADS-B- eller AIS-rapporter. Jämfört en gång med sändarplatserna i Jammertest 2025 är resultatet NOT ASSESSABLE för båda källorna (för få schemalagda sessioner i öppna data), så raden förblir MODELLED (Störningskarta).
  • Benchmark. Omkampanjen 0,40 når A3, D3 (båda EXPLORATORY), R3 och R4; A2, D1 och R1 förblir NOT MET (Bench).
  • Språk. nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja och zh-Hans, som maskinöversättningar som ingen modersmålstalare har granskat; engelska är referensen, och körningar på andra språk än engelska tar ungefär dubbelt så lång tid (docs/i18n.md).

Nytt i 0,39#

0,39 lägger inte till någon funktion och ändrar inget resultat; motorns utdata är utdata från 0,38. Den rättar en sak på kommandoraden, uppdaterar beroenden i korsvalideringsverktygen och anger utfallen i benchmarken i sin helhet.

  • Kommandoraden. kshana kinds | head (vilken stängd standardutdata som helst) kraschar inte längre med en panic: programmet avslutas tyst med status 141, som andra verktyg gör för en stängd pipe. Andra skrivfel rapporterar sig fortfarande.
  • Dependencies. memmap2 0.9.11 i de två ANISE-korskontrolllåsen och pillow 13.0.0 och certifi 2026.10.19 i fästena för referensmiljön, alla under xval/: inget som levereras ändrades.
  • kshana-bench, alla utfall. Mot de förhandsregistrerade trösklarna är tre NOT MET, var och en fastlåst av ett test: A2 (agc_k_sigma AUC 0,766 mot minst 0,80), D1 (största gap 0,0301) och uppgift (b) R1 (överförd, inte körd om). Ingen tröskel mjukades upp (Bench).

Nytt i 0,38#

0,38 gör den neutrala domaren mätbar: den poängsätter mottagarloggar mot ett publicerat testschema, läser fler mottagare och sensorer, testar tidssynkroniseringssystem och levererar en benchmark och ett störningsobservatorium. Den förblir rådgivande: inget här är certifierat, inget resultat är ett typgodkännande och ingenting sänder. Varje rad anger vad registret innehåller för den (hur en etikett förtjänas); en status anger bara vad som kontrollerades, och registerraden och den länkade sidan anger vad som inte kontrollerades.

Nytt i 0,38 Vad den gör, och varför Registerstatus Läses
Jammertest-poängsättning kshana jammertest import läser den publicerade NPRA-testkatalogen och sändningsplanen som schemalagd referens; jammertest score poängsätter en mottagarlogg per test (detekteringsfördröjning, missade larm, falska larm, tid till återhämtning), som ett signerat bevispaket om du anger en nyckel MODELLED: en registerrad. Trösklarna förhandsregistrerades före varje poängsatt körning; på JammerTest 2024-data misslyckades regeln om minimidata i båda körningarna (4 och 7 poängsättbara fönster mot 10 som krävs), så ingen tröskel kan bedömas och ingenting hävdas Jammertest
Mottagarens egna flaggor UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG och NovAtel RXSTATUS läses in i en self_report per epok och jämförs med Kshanas larm (båda, bara mottagaren, bara Kshana, ingen av dem); en Septentrio SBF-läsare och indata via --serial som endast läses MODELLED; samstämmighet mellan en mottagares detektor och Kshanas är inte validering Mottagarförtroende
Fler mottagare och sensorer RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0 (från de BSD-licensierade pyrtcm-tabellerna, inte RTCM-texten), GNSS-SDR-monitorströmmar, en IMU-logg som andra sensor, ett ROS 2-paket, en brygga för gnss_lib_py och imu-fit för parametrar till hybridsensorer MODELLED: sex registerrader; bara självskrivna testdata, ingen inspelning från en verklig mottagare, IMU, GNSS-SDR-körning eller ROS-graf lästes Maskinindata
Tidssynkroniserings- och holdover-test typen holdover-test poängsätter ett holdover-test (GNSS borttaget av operatören, holdover, återhämtning) utifrån en uppmätt tidsfelspost mot ITU-T-masker, "uppmätt mot masken"; läsare för linuxptp- och chrony-loggar; hårdvarustegen och fältet lab-attestation MODELLED: två registerrader; tiderna är operatörens uppgift, inte verifierade Timing HIL, Hårdvarusäkerhet
Standardpaket, LunaNet AFS, laboratorierundtur poängsatta paket för DHS RPCF, IMO MSC.1/Circ.1575 och ICAO Doc 9849 Appendix F mot trösklar angivna före körningen, "ger belägg för"; en NIST IR 8323r1-crosswalk; en kodgenerator och kontroll för LunaNet AFS; ett signerat paket som länkar scenariot, testförhållandena, mottagarloggen och poängen från en laboratoriekörning MODELLED för paketen och rundturen; AFS-kodkontrollen är VALIDATED mot sina tryckta kontrollkolumner (se registerraderna) Standarder, LunaNet AFS
kshana-bench och observatoriet fasta uppgifter, delningar och mått för störningsdetektering, IQ-detektering, holdover-prediktion och optimismgapet, med en förseglad undanhållen datamängd och en statisk resultattavla; en reproducerbar daglig störningsprodukt med 24 h fördröjning, grova celler och ingen tillskrivning ingen egen registerrad: den poängsätter inlämningar, och dess baslinjer är märkta MODELLED i resultatfilerna; mot de förhandsregistrerade trösklarna är poängsättaren, C1 till C3 och D2 uppnådda och tre trösklar är NOT MET (fastlåsta av tester): A2 (agc_k_sigma AUC 0,766 mot minst 0,80 på testdelningen), D1 (största gap 0,0301) och uppgift (b) R1 (överförd, inte körd om); se xval/bench/RESULTS-v2.md Bench, Observatoriet
Exportörer förtroendetelemetri som Home Assistant MQTT-discovery- och tillståndsmeddelanden (endast publicering, inga inloggningsuppgifter) vid sidan av Prometheus, CEF, LEEF och OTLP MODELLED: en registerrad Förtroendetelemetri
Optisk länkmarginal över tid typen optical-atmosphere kan skriva ut ett seedat utfall av en plats väder som en länkmarginalserie MODELLED: en registerrad; ett utfall från modellen, inte klimatet Optisk atmosfär

Höjdpunkter i 0,37: ändringslogg. Hela listan för 0,38 finns i ändringsloggen.

0,38 på djupet#

Varje förmåga från tabellen ovan, i några rader: vad den gör, ett kommando för att köra den, en bild ritad utifrån en verklig körning av motorn, och vad registret innehåller för den. Bilderna skrivs av tools/gen_figures_038.py till docs/figures/0.38/ (aldrig ritade för hand): python3 tools/gen_figures_038.py skriver om dem från en byggd motor, och --check misslyckas om en är föråldrad eller om dess bildtext här skiljer sig. Där en indata är en logg är det en påhittad som skriptet skriver, eftersom de verkliga tredjepartsloggarna aldrig tas med, och bildtexten säger det. Allt nedan är rådgivande: inte certifierat, inte ett typgodkännande, och ingenting sänder. En status anger vad som kontrollerades och inget mer; hur en etikett förtjänas.

Jammertest-poängsättning#

kshana jammertest import gör den publicerade NPRA-testkatalogen och sändningsplanen till schemalagd referens, och kshana jammertest score poängsätter en mottagarlogg mot den: för varje schemalagt test om det upptäcktes, hur sent, och hur länge mottagaren behövde för att återhämta sig, plus falska larm utanför varje lucka. Katalogen hämtas, aldrig medföljande.

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
Poängsättning av en syntetisk mottagarlogg mot ett schema med tre test, från en verklig körning av motor v0.40.0 (`kshana jammertest score`). Loggen är påhittad: 1800 s NMEA med ett fall på 20 dB C/N0 under två intervall. Schemat listar tre tidsluckor; den mittersta luckan har ingen jammer i loggen. Poängen markerar 2 av 3 test som detekterade (mediantid till detektion 0 s) och 1 som missade, med 0 körningar med falsklarm över 0,25 h ren tid. Inget här säger något om en verklig mottagare. Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering.Poängsättning av en syntetisk mottagarlogg mot ett schema med tre test, från en verklig körning av motor v0.40.0 (`kshana jammertest score`). Loggen är påhittad: 1800 s NMEA med ett fall på 20 dB C/N0 under två intervall. Schemat listar tre tidsluckor; den mittersta luckan har ingen jammer i loggen. Poängen markerar 2 av 3 test som detekterade (mediantid till detektion 0 s) och 1 som missade, med 0 körningar med falsklarm över 0,25 h ren tid. Inget här säger något om en verklig mottagare. Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering.

Registerstatus: MODELLED. Trösklarna fastställdes före varje poängsatt körning; på JammerTest 2024-data misslyckades regeln om minimidata i båda körningarna, så ingen tröskel kan bedömas och ingenting hävdas. Jammertest.

Mottagarens egna flaggor#

UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG och NovAtel RXSTATUS läses in i en self_report per epok och ställs bredvid Kshanas larm: båda, bara mottagaren, bara Kshana eller ingen av dem. En Septentrio SBF-läsare och indata via --serial som endast läses matar samma jämförelse. Ingen av sidorna är referens.

kshana receiver-trust session.toml     # [log] format = "ubx", path = "receiver.ubx"
Mottagarens egen spoofingflagga mot Kshanas larm, från en verklig körning av motor v0.40.0 på en påhittad UBX-logg (200 epoker vid 1 Hz). C/N0 faller 20 dB vid 80 till 90 s och 120 till 130 s; mottagaren flaggar 120 till 130 s och 160 till 165 s. Av 140 epoker som jämfördes efter kalibrering flaggade båda i 11, bara mottagaren i 6, bara Kshana i 11 och ingen av dem i 112. Ingen av sidorna är referens och samstämmighet är inte validering. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.Mottagarens egen spoofingflagga mot Kshanas larm, från en verklig körning av motor v0.40.0 på en påhittad UBX-logg (200 epoker vid 1 Hz). C/N0 faller 20 dB vid 80 till 90 s och 120 till 130 s; mottagaren flaggar 120 till 130 s och 160 till 165 s. Av 140 epoker som jämfördes efter kalibrering flaggade båda i 11, bara mottagaren i 6, bara Kshana i 11 och ingen av dem i 112. Ingen av sidorna är referens och samstämmighet är inte validering. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.

Registerstatus: MODELLED. Samstämmighet mellan en mottagares detektor och Kshanas är inte validering. Mottagarförtroende.

Fler mottagare och sensorer#

RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0, GNSS-SDR-monitorströmmar, en IMU-logg som andra sensor, ett ROS 2-paket och en brygga för gnss_lib_py slutar alla i samma tidslinje för mottagarförtroende. imu-fit läser de sensorparametrar som hybrid- och fusionsscenarierna behöver från en stillastående IMU-logg, så att ett scenario kan köras med den sensor du faktiskt har.

kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
Vad `kshana imu-fit` läser ut ur en stillastående IMU-logg, från en verklig körning av motor v0.40.0 på en påhittad logg (20 000 sampel vid 100 Hz, 200 s): accelerometerns hastighetsslumpvandring q_va = 4.02e-06, gyrots vinkelslumpvandring q_arw = 9e-08, biasinstabiliteten 0,00296 och de tidiga Allan-lutningarna (-0.51 och -0.49; ungefär -0.5 där vitt brus dominerar). Tabellen bredvid är den TOML som kommandot skriver ut. Skattaren är bara kontrollerad på syntetiska loggar. Rådgivande: analysutdata från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livräddande tjänst.Vad `kshana imu-fit` läser ut ur en stillastående IMU-logg, från en verklig körning av motor v0.40.0 på en påhittad logg (20 000 sampel vid 100 Hz, 200 s): accelerometerns hastighetsslumpvandring q_va = 4.02e-06, gyrots vinkelslumpvandring q_arw = 9e-08, biasinstabiliteten 0,00296 och de tidiga Allan-lutningarna (-0.51 och -0.49; ungefär -0.5 där vitt brus dominerar). Tabellen bredvid är den TOML som kommandot skriver ut. Skattaren är bara kontrollerad på syntetiska loggar. Rådgivande: analysutdata från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livräddande tjänst.

Registerstatus: MODELLED. Bara självskrivna testdata; ingen inspelning från en verklig mottagare, IMU, GNSS-SDR-körning eller ROS-graf lästes. Maskinindata.

Tidssynkroniserings- och holdover-test#

Typen holdover-test poängsätter ett holdover-test (GNSS borttaget av operatören, holdover, återhämtning) utifrån en uppmätt tidsfelspost mot ITU-T-masker, och säger det med de orden: uppmätt mot masken. Läsare för linuxptp- och chrony-loggar matar den; hårdvarustegen och fältet lab-attestation anger vem som uppgav vad.

kshana scenarios/holdover-test-example.toml
Ett holdover-test poängsatt utifrån en tidsfelspost, från en verklig körning av motor v0.40.0 på scenarios/holdover-test-example.toml (601 sampel var 5 s). GNSS tas bort av operatören vid 600 s och återställs vid 2400 s; tidsfelet driver till 299 ns vid holdoverns slut, förbi budgeten på 100 ns efter 675 s, och återgår inom bandet på 100 ns 70 s efter återställningen. Utfall: baslinjemasker PASS, holdover-masker FAIL, holdover-envelope FAIL, återhämtning RECOVERED. Uppmätt mot masken, inte ett godkännande. Tiderna är operatörens uppgift, inte verifierade av Kshana. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.Ett holdover-test poängsatt utifrån en tidsfelspost, från en verklig körning av motor v0.40.0 på scenarios/holdover-test-example.toml (601 sampel var 5 s). GNSS tas bort av operatören vid 600 s och återställs vid 2400 s; tidsfelet driver till 299 ns vid holdoverns slut, förbi budgeten på 100 ns efter 675 s, och återgår inom bandet på 100 ns 70 s efter återställningen. Utfall: baslinjemasker PASS, holdover-masker FAIL, holdover-envelope FAIL, återhämtning RECOVERED. Uppmätt mot masken, inte ett godkännande. Tiderna är operatörens uppgift, inte verifierade av Kshana. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.

Registerstatus: MODELLED. De tider då GNSS togs bort och återställdes är operatörens uppgift, inte verifierade. Timing HIL, Hårdvarusäkerhet.

Standardpaket#

Poängsatta paket för DHS Resilient PNT-testprofiler, IMO MSC.1/Circ.1575 och ICAO Doc 9849 Appendix F, plus en NIST IR 8323r1-crosswalk i compliance-report. Varje test kör ett medföljande scenario och jämför ett resultatfält med en tröskel angiven före körningen; ett test som behöver en mottagarlogg listas som att det behöver indata, inte poängsatt. Formuleringen är "ger belägg för".

kshana standards-pack list
kshana standards-pack run imo-circ-1575
Varje test i de tre poängsatta standardpaketen, från verkliga körningar av motor v0.40.0 (`kshana standards-pack run`): dhs-rpcf: 6 uppfyllda, 1 inte uppfylld, 2 kräver indata; imo-circ-1575: 1 uppfylld, 4 inte uppfyllda, 2 kräver indata; icao-doc9849-appf: 6 uppfyllda, 0 inte uppfyllda, 2 kräver indata. Totalt 13 uppfyllda, 5 inte uppfyllda och 6 kräver indata som motorn inte har (en mottagarlogg eller utrustningsdokumentation). Varje tröskel fastställdes före körningen; en miss behålls som en miss. En uppnådd tröskel säger att ett modellerat scenario nådde en angiven tröskel, inget om en produkt. Paketen ger belägg för de rader de hänvisar till; de är inte en bedömning. Rådgivande: analysutdata från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livräddande tjänst; det får inte vara den enda grunden för något navigerings- eller säkerhetsbeslut.Varje test i de tre poängsatta standardpaketen, från verkliga körningar av motor v0.40.0 (`kshana standards-pack run`): dhs-rpcf: 6 uppfyllda, 1 inte uppfylld, 2 kräver indata; imo-circ-1575: 1 uppfylld, 4 inte uppfyllda, 2 kräver indata; icao-doc9849-appf: 6 uppfyllda, 0 inte uppfyllda, 2 kräver indata. Totalt 13 uppfyllda, 5 inte uppfyllda och 6 kräver indata som motorn inte har (en mottagarlogg eller utrustningsdokumentation). Varje tröskel fastställdes före körningen; en miss behålls som en miss. En uppnådd tröskel säger att ett modellerat scenario nådde en angiven tröskel, inget om en produkt. Paketen ger belägg för de rader de hänvisar till; de är inte en bedömning. Rådgivande: analysutdata från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livräddande tjänst; det får inte vara den enda grunden för något navigerings- eller säkerhetsbeslut.

Registerstatus: MODELLED. En nådd tröskel säger att ett modellerat scenario nådde en angiven tröskel, inget om en produkt; varje miss behålls och fastlåses av ett test. Standarder.

LunaNet AFS#

Kodgeneratorn för LunaNet Augmented Forward Signal (Gold-, Weil- och tertiärkoder, meddelanderamen och dess felkodning) och en kontroll för en inspelad eller genererad symbolström, fastlåst till en utgåva av specifikationen.

kshana lunanet-afs-check spec
kshana lunanet-afs-check generate --frames 2 --out afs.sym
kshana lunanet-afs-check symbols afs.sym
LunaNet AFS-kodgeneratorn kontrollerad mot specifikationens tryckta kolumner, från en verklig körning av motor v0.40.0 (`kshana lunanet-afs-check spec`, låst till LNIS V5, AD1 Volume A (LSIS-AFS) V1.0, 29 januari 2025; dokumentet märker sina kodtabeller {LSIS-TBC}). 9 av 10 kontroller är uppfyllda; B4 är NOT MET (420 av 421 stämde). Den kontrollerar en symbolström mot en utgåva av en publicerad specifikation och säger ingenting om någon LunaNet-nod eller -tjänst. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst. Den kontrollerar en symbolström mot en utgåva av en publicerad specifikation och säger ingenting om någon LunaNet-nod eller -tjänst.LunaNet AFS-kodgeneratorn kontrollerad mot specifikationens tryckta kolumner, från en verklig körning av motor v0.40.0 (`kshana lunanet-afs-check spec`, låst till LNIS V5, AD1 Volume A (LSIS-AFS) V1.0, 29 januari 2025; dokumentet märker sina kodtabeller {LSIS-TBC}). 9 av 10 kontroller är uppfyllda; B4 är NOT MET (420 av 421 stämde). Den kontrollerar en symbolström mot en utgåva av en publicerad specifikation och säger ingenting om någon LunaNet-nod eller -tjänst. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst. Den kontrollerar en symbolström mot en utgåva av en publicerad specifikation och säger ingenting om någon LunaNet-nod eller -tjänst.

Registerstatus: VALIDATED för kod- och synkroniseringskontrollerna, mot de värden som specifikationen skriver ut (och markerar TBC); en kontroll är NOT MET, behållen och fastlåst (en tryckt tertiärkodkolumn skiljer sig: dokumentet skriver ut samma värde för två PRN). LDPC- och CRC-orden i delramarna 2 till 4 kontrolleras inte. Registerraderna anger exakt vilka. LunaNet AFS.

Laboratorierundtur#

kshana.test-conditions/1 är en publicerad beskrivning av vad ett laboratorium gjorde (händelser, tider, effekter). kshana evidence round-trip länkar scenariohashen, villkorshashen, mottagarloggens hash och poängen till ett enda signerat paket, och avvisar ett paket vars villkor och poängsättande scenario är oense om händelserna. Kshana skapar eller spelar aldrig upp en signal: hur ett scenario nådde en mottagare är operatörens ansvar.

kshana evidence --help
Strukturen hos ett bevispaket. En mottagarlogg (NMEA, u-blox UBX, RINEX 3 eller en Android-logg) och ett tidsfönster går in i kshana receiver-trust evidence, som skriver sju filer: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig och en valfri timestamp.tsr. Manifestet registrerar SHA-256 för hela loggen och för varje fil samt en hashkedja över filerna; signaturen täcker manifestet. kshana evidence verify kontrollerar signaturen, varje fils hashvärde, kedjan och att ingen olistad fil finns, och avslutas med 0 när allt är verifierat, 1 när något misslyckades och 3 när undertecknaren inte var fastlåst. Ett paket är en teknisk registrering, inte ett juridiskt utlåtande.Strukturen hos ett bevispaket. En mottagarlogg (NMEA, u-blox UBX, RINEX 3 eller en Android-logg) och ett tidsfönster går in i kshana receiver-trust evidence, som skriver sju filer: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig och en valfri timestamp.tsr. Manifestet registrerar SHA-256 för hela loggen och för varje fil samt en hashkedja över filerna; signaturen täcker manifestet. kshana evidence verify kontrollerar signaturen, varje fils hashvärde, kedjan och att ingen olistad fil finns, och avslutas med 0 när allt är verifierat, 1 när något misslyckades och 3 när undertecknaren inte var fastlåst. Ett paket är en teknisk registrering, inte ett juridiskt utlåtande.

Bilden är layouten för ett paket. Registerstatus: MODELLED. Testförhållanden, Test bench.

kshana-bench#

Fasta uppgifter, delningar och mått för störningsdetektering, IQ-detektering, holdover-prediktion och optimismgapet, med en förseglad undanhållen datamängd och en statisk resultattavla. Den poängsätter inlämningar; den är ingen rankning av mottagare.

kshana bench baseline --task d --split test --out results/
De inbyggda baslinjerna för kshana-bench uppgift D (optimismglappet) på testdelningen, från en verklig körning av motor v0.40.0 (`kshana bench baseline`). Varje tröskelpar är arean under ROC-kurvan för fallen inom fördelningen och för de förskjutna fallen. Glappet mellan dem är optimismglappet, mot en tolerans på 0,05. fused-max-z: 0,998 och 0,983 (glapp 0,015); sqm-imbalance: 0,882 och 0,882 (glapp 0,001); agc-excess: 0,848 och 0,819 (glapp 0,030); raim-parity: 0,682 och 0,672 (glapp 0,010); energy-cn0-drop: 0,595 och 0,565 (glapp 0,030). Etiketterna är etiketter från en generativ modell av ett syntetiskt korpus, aldrig fältdata: MODELLED. Rådgivande: modellerat eller mätt mot angivna referenser, inte ett godkännande, ingen certifiering och inget uttalande om överensstämmelse. En poäng beskriver en logg eller ett korpus, aldrig en produkt.De inbyggda baslinjerna för kshana-bench uppgift D (optimismglappet) på testdelningen, från en verklig körning av motor v0.40.0 (`kshana bench baseline`). Varje tröskelpar är arean under ROC-kurvan för fallen inom fördelningen och för de förskjutna fallen. Glappet mellan dem är optimismglappet, mot en tolerans på 0,05. fused-max-z: 0,998 och 0,983 (glapp 0,015); sqm-imbalance: 0,882 och 0,882 (glapp 0,001); agc-excess: 0,848 och 0,819 (glapp 0,030); raim-parity: 0,682 och 0,672 (glapp 0,010); energy-cn0-drop: 0,595 och 0,565 (glapp 0,030). Etiketterna är etiketter från en generativ modell av ett syntetiskt korpus, aldrig fältdata: MODELLED. Rådgivande: modellerat eller mätt mot angivna referenser, inte ett godkännande, ingen certifiering och inget uttalande om överensstämmelse. En poäng beskriver en logg eller ett korpus, aldrig en produkt.

Registerstatus: ingen egen registerrad; baslinjerna är märkta MODELLED i resultatfilerna. Mot de förhandsregistrerade trösklarna är poängsättaren, C1 till C3 och D2 uppnådda och tre trösklar är NOT MET, var och en fastlåst av ett test: A2 (agc_k_sigma AUC 0,766 mot minst 0,80 på testdelningen), D1 (största gap 0,0301) och uppgift (b) R1 (överförd från den tidigare kampanjen, inte körd om). Siffrorna finns i xval/bench/RESULTS-v2.md. Bench.

Störningsobservatorium#

En produkt per UTC-dag och region från ett öppet arkiv över flygplanspositioner, på ett fast grovt nät: varje cell är försämrad, inte försämrad eller inte observerad (vilket inte är "klart"). Släpps tidigast 24 h efter att dagen slutat, med små celler undertryckta och ingen tillskrivning av orsak.

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/
Två syntetiska dagar i störningskartan, ritade från de incheckade exemplen i examples/interference-map/output, var och en med sin egen syntetiska rutt och de ruttexponeringsandelar som motorn redovisar. Till vänster en ADS-B-dag: 1 försämrad cell, 6 inte försämrade, 4 ej bedömda (snedstreckade) och celler utan post, ritade tomma, som inte observerades. Rutten är 525 km: 11,5% av dess längd i försämrade celler, 38,3% inte försämrade, 9,1% ej bedömda och 41,1% inte observerade. Till höger en AIS-dag: celler flaggade av cirkel- och landdetektorerna, icke-avvikande celler och tomma celler; rutten är 454 km med 10,5% i avvikande celler, 21,2% icke-avvikande, 0,0% ej bedömda och 68,3% inte observerade. ADS-B och AIS är separata lager och kombineras aldrig. En flaggad cell är inte ett fynd av störning, och en cell utan färg observerades inte, vilket inte är detsamma som fri. Alla data är påhittade, på öppet hav i mellersta Atlanten, och inte en mätning.Två syntetiska dagar i störningskartan, ritade från de incheckade exemplen i examples/interference-map/output, var och en med sin egen syntetiska rutt och de ruttexponeringsandelar som motorn redovisar. Till vänster en ADS-B-dag: 1 försämrad cell, 6 inte försämrade, 4 ej bedömda (snedstreckade) och celler utan post, ritade tomma, som inte observerades. Rutten är 525 km: 11,5% av dess längd i försämrade celler, 38,3% inte försämrade, 9,1% ej bedömda och 41,1% inte observerade. Till höger en AIS-dag: celler flaggade av cirkel- och landdetektorerna, icke-avvikande celler och tomma celler; rutten är 454 km med 10,5% i avvikande celler, 21,2% icke-avvikande, 0,0% ej bedömda och 68,3% inte observerade. ADS-B och AIS är separata lager och kombineras aldrig. En flaggad cell är inte ett fynd av störning, och en cell utan färg observerades inte, vilket inte är detsamma som fri. Alla data är påhittade, på öppet hav i mellersta Atlanten, och inte en mätning.

Bilden visar de incheckade exempeldagarna, inte en observatorieprodukt. Registerstatus: MODELLED: ingen extern oberoende referens, ingen referensdata och ingen tillskrivning av orsak; en cell som inte observerats bedömdes inte, vilket inte är detsamma som klart. Observatoriets metod.

Exportörer#

Förtroendetelemetri som Prometheus-text, CEF, LEEF, OTLP och Home Assistant MQTT-discovery- och tillståndsmeddelanden. Kommandot publicerar bara till en destination du anger och har inga inloggningsuppgifter.

kshana trust-telemetry --result session.result.json --print-metrics
kshana trust-telemetry --result session.result.json --print-syslog --format cef
Ett förtroenderesultat i tre exportformat, från verkliga körningar av motor v0.40.0 (`kshana trust-telemetry`) på examples/maritime-trust: Prometheus-textexposition (det senaste förtroendepoängen är 5,9 och det ej betrodda bandet är det som är satt), och de sista CEF- och LEEF-meddelandena. Kommandot publicerar ingenting om det inte får en destination, har inga inloggningsuppgifter och sänder ingen radiosignal. Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering.Ett förtroenderesultat i tre exportformat, från verkliga körningar av motor v0.40.0 (`kshana trust-telemetry`) på examples/maritime-trust: Prometheus-textexposition (det senaste förtroendepoängen är 5,9 och det ej betrodda bandet är det som är satt), och de sista CEF- och LEEF-meddelandena. Kommandot publicerar ingenting om det inte får en destination, har inga inloggningsuppgifter och sänder ingen radiosignal. Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering.

Registerstatus: MODELLED. Förtroendetelemetri.

Typen optical-atmosphere kan skriva ut ett seedat utfall av en plats väder som en länkmarginalserie: molnepisoder, en vätskevattenkolonn för var och en, ett scintillationsprov per steg. Studions sida Optical PNT öppnar scenarierna för optical-atmosphere.

kshana scenarios/optical-atmosphere-network.toml
Ett frösatt utfall av länkmarginalen för platsen 'northern' över 336 h, från en riktig körning av motor v0.40.0 på scenarios/optical-atmosphere-network.toml (frö 37, steg på 600 s). Marginalen faller under noll under molnepisoder; i det här utfallet är länken uppe 40,5 % av tiden, med 27 avbrott och ett längsta avbrott på 30,7 h. Indata är illustrativa, serien är ett utfall ur modellen och inte klimatet, och den skiljer sig från den statistiska tillgängligheten (37,8 %) med utfallets samplingsfel. Endast rådgivande analys: inte en certifierad tillgänglighets-, integritets- eller navigeringsprodukt, och ingen förutsägelse för någon verklig plats om inte dess klimatindata kommer från en angiven datamängd.Ett frösatt utfall av länkmarginalen för platsen 'northern' över 336 h, från en riktig körning av motor v0.40.0 på scenarios/optical-atmosphere-network.toml (frö 37, steg på 600 s). Marginalen faller under noll under molnepisoder; i det här utfallet är länken uppe 40,5 % av tiden, med 27 avbrott och ett längsta avbrott på 30,7 h. Indata är illustrativa, serien är ett utfall ur modellen och inte klimatet, och den skiljer sig från den statistiska tillgängligheten (37,8 %) med utfallets samplingsfel. Endast rådgivande analys: inte en certifierad tillgänglighets-, integritets- eller navigeringsprodukt, och ingen förutsägelse för någon verklig plats om inte dess klimatindata kommer från en angiven datamängd.

Registerstatus: MODELLED. Ett utfall från modellen, inte klimatet. Optisk atmosfär.

Nya Studio-vyer#

kshana.dev/studio får en brygguppspelning (två körningar sida vid sida på en uppdragsklocka, på /studio/replay/), en Optical PNT-sida (/studio/optical/), en Holdover test-sida (/studio/holdover/) och en observatorievisare (/studio/observatory/). De kör samma motor i webbläsaren, inget laddas upp, och de bär samma rådgivande uttalande. Bilderna ovan ritas utifrån motorns egen utdata av ett skript; de är inte skärmdumpar av de här sidorna.

Navigering för rymdanvändare (gnss-ssv)#

För en rymdfarkost ovanför, runt eller långt bortom GNSS-banorna: hur många GNSS-signaler den kan använda, hur starka de är, hur bra geometrin är och vad ett filter ombord kan göra med dem. En typ, fyra lägen, valda av scenariots tabeller: ett skal av användare (andelen tid med en och fyra signaler, per konstellation), en bana (signaler, C/N0, precisionsförsämring och limb-ray-mediet längs en omloppsbana), en navigeringskörning (ett nio-tillståndsfilter på pseudoavstånd, till månen) och en formation (relativ navigering av deputies kring en chief). Den offentliga källan för tillgänglighetsjämförelsen är häftet om interoperabel GNSS Space Service Volume (UN OOSA ST/SPACE/75, från International Committee on GNSS), som i sig är en simulering; det hämtas, aldrig medföljande. Hel sida: 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
Signaltillgänglighet för en användare på en sfär på 36000 km höjd med en halvsfärsantenn, från en verklig körning av motor v0.40.0 på scenarios/gnss-ssv-shell.toml (en reducerad körning: 162 användare, 3 dagar, 10 min steg), vid en tröskel på 20 dB-Hz. För varje konstellation och band två staplar: andelen (användare, epok)-par med minst en signal och med minst fyra. Kombinerat, L1: 99,4 % minst en, 73,2 % minst fyra, längsta avbrott under fyra signaler 160 min. Kombinerat, L5: 100,0 % minst en, 99,9 % minst fyra, längsta avbrott under fyra signaler 20 min. MODELLED: en modellerad studie från angivna indata, inte en mätning och inte ett anspråk på tjänstevolym för något system. Den reducerade storleken är inte jämförelsen med häftet. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.Signaltillgänglighet för en användare på en sfär på 36000 km höjd med en halvsfärsantenn, från en verklig körning av motor v0.40.0 på scenarios/gnss-ssv-shell.toml (en reducerad körning: 162 användare, 3 dagar, 10 min steg), vid en tröskel på 20 dB-Hz. För varje konstellation och band två staplar: andelen (användare, epok)-par med minst en signal och med minst fyra. Kombinerat, L1: 99,4 % minst en, 73,2 % minst fyra, längsta avbrott under fyra signaler 160 min. Kombinerat, L5: 100,0 % minst en, 99,9 % minst fyra, längsta avbrott under fyra signaler 20 min. MODELLED: en modellerad studie från angivna indata, inte en mätning och inte ett anspråk på tjänstevolym för något system. Den reducerade storleken är inte jämförelsen med häftet. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst. Signaler längs en hög jordbana (perigeum 497 km, apogeum 58622 km, omloppstid 18,8 h), från en verklig körning av motor v0.40.0 på scenarios/gnss-ssv-heo.toml, band L1. Överst: den bästa bärvågs-brusdensiteten bland signalerna i sikte, mot tröskeln på 20 dB-Hz. Mitten: antalet signaler i sikte från alla konstellationer, från 4 till 55 längs de samplade punkterna. Av de mottagna länkarna kom 2252 genom en huvudlob och 696 genom sidolober, med ett märkt parametriskt ersättningsdiagram, inte något systems uppmätta diagram. Median-PDOP 67, 95:e percentilen 358. MODELLED: en modellerad studie från angivna indata, inte en mätning och inte ett anspråk på tjänstevolym för något system. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.Signaler längs en hög jordbana (perigeum 497 km, apogeum 58622 km, omloppstid 18,8 h), från en verklig körning av motor v0.40.0 på scenarios/gnss-ssv-heo.toml, band L1. Överst: den bästa bärvågs-brusdensiteten bland signalerna i sikte, mot tröskeln på 20 dB-Hz. Mitten: antalet signaler i sikte från alla konstellationer, från 4 till 55 längs de samplade punkterna. Av de mottagna länkarna kom 2252 genom en huvudlob och 696 genom sidolober, med ett märkt parametriskt ersättningsdiagram, inte något systems uppmätta diagram. Median-PDOP 67, 95:e percentilen 358. MODELLED: en modellerad studie från angivna indata, inte en mätning och inte ett anspråk på tjänstevolym för något system. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst. Ett nio-tillståndsfilter ombord på en överföring från låg bana mot månen, från en verklig körning av motor v0.40.0 på scenarios/gnss-ssv-nav-lunar.toml (289 epoker, 13 punkter ritade). På en logaritmisk axel, det sanna positionsfelet och filtrets egen ett-sigma-gräns mot tid sedan start. Innanför GNSS-banorna är positions-RMS 1,4 m; ovanför dem är det 90 m, med slutfelet 184 m på 193 330 km höjd med 1 mätning. Genomsnittligt normaliserat estimeringsfel i kvadrat över hela körningen är 4,4 (omkring 3 för ett konsistent positionsblock). Referens och filter delar sina ersättningar för solen och månen. MODELLED: en modellerad studie från angivna indata, inte en mätning och inte ett anspråk på tjänstevolym för något system. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.Ett nio-tillståndsfilter ombord på en överföring från låg bana mot månen, från en verklig körning av motor v0.40.0 på scenarios/gnss-ssv-nav-lunar.toml (289 epoker, 13 punkter ritade). På en logaritmisk axel, det sanna positionsfelet och filtrets egen ett-sigma-gräns mot tid sedan start. Innanför GNSS-banorna är positions-RMS 1,4 m; ovanför dem är det 90 m, med slutfelet 184 m på 193 330 km höjd med 1 mätning. Genomsnittligt normaliserat estimeringsfel i kvadrat över hela körningen är 4,4 (omkring 3 för ett konsistent positionsblock). Referens och filter delar sina ersättningar för solen och månen. MODELLED: en modellerad studie från angivna indata, inte en mätning och inte ett anspråk på tjänstevolym för något system. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst. Relativ navigering av 2 deputies kring en chief på en hög bana, från en verklig körning av motor v0.40.0 på scenarios/gnss-ssv-formation-heo.toml (401 epoker). För varje deputy två staplar: den relativa positions-RMS från att subtrahera de två oberoende absoluta skattningarna, och från det relativa filtret på enkeldifferentierade pseudoavstånd. Baslinje 0,8 km: 5,1 m och 1,2 m. Baslinje 2,0 km: 4,1 m och 2,1 m. Det absoluta filtret är inte konsistent här: genomsnittligt normaliserat estimeringsfel i kvadrat 187 mot omkring 3 för ett konsistent filter, så dess angivna osäkerhet är alldeles för liten. MODELLED: en modellerad studie från angivna indata, inte en mätning och inte ett anspråk på tjänstevolym för något system. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.Relativ navigering av 2 deputies kring en chief på en hög bana, från en verklig körning av motor v0.40.0 på scenarios/gnss-ssv-formation-heo.toml (401 epoker). För varje deputy två staplar: den relativa positions-RMS från att subtrahera de två oberoende absoluta skattningarna, och från det relativa filtret på enkeldifferentierade pseudoavstånd. Baslinje 0,8 km: 5,1 m och 1,2 m. Baslinje 2,0 km: 4,1 m och 2,1 m. Det absoluta filtret är inte konsistent här: genomsnittligt normaliserat estimeringsfel i kvadrat 187 mot omkring 3 för ett konsistent filter, så dess angivna osäkerhet är alldeles för liten. MODELLED: en modellerad studie från angivna indata, inte en mätning och inte ett anspråk på tjänstevolym för något system. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.

Registerstatus: MODELLED, och jämförelsen med häftet missar för det mesta. Trösklarna fastställdes före körningen. Av åtta är bara S0 (den inversa länkbudgeten, 13 av 13 värden) och S6 (månuppdraget) uppnådda. S1 till S5 och S7 är NOT MET: geometrin för övre och nedre tjänstevolym (43 av 52 och 48 av 52 celler), den övre tjänstevolymen på 15/20/25 dB-Hz, de sex GEO-uppdragen, HEO-uppdraget och det parametriska sidolobsdiagrammet mot uppmätta GPS-panelsdiagram. Nästan varje miss i S1 till S5 rör GLONASS, och häftet skriver ut två olika referensvinklar för det; en diagnostisk variant som använder det andra paret ger S1, S2 och S4 alla celler, men den ersätter inte den registrerade körningen och ingen rad är VALIDATED. Formationskörningens absoluta filter är också överoptimistiskt (genomsnittligt normaliserat fel i kvadrat långt över värdet omkring 3 som ett konsistent filter ger).

Den registrerade jämförelsen av tillgänglighetsmodellen för rymdanvändare med det offentliga häftet Space Service Volume, från de incheckade resultaten av den förhandsregistrerade körningen (xval/gnss-ssv/results-run1.json, skriven av exemplet ssv_booklet_check i motor v0.40.0). Tröskel för tröskel, cellerna inom tolerans: S0 13 av 13 (MET); S1 43 av 52 (NOT MET); S2 48 av 52 (NOT MET); S3 122 av 155 (NOT MET); S4 132 av 156 (NOT MET); S5 18 av 26 (NOT MET); S6 26 av 26 (MET); S7 0 av 20 panelmönster (NOT MET). Bara S0 och S6 är uppnådda under den förhandsregistrerade läsningen. En diagnostisk variant som använder häftets andra GLONASS-vinklar ger S1, S2 och S4 alla celler, men ersätter inte den registrerade körningen. Ingen registerrad är VALIDATED. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.Den registrerade jämförelsen av tillgänglighetsmodellen för rymdanvändare med det offentliga häftet Space Service Volume, från de incheckade resultaten av den förhandsregistrerade körningen (xval/gnss-ssv/results-run1.json, skriven av exemplet ssv_booklet_check i motor v0.40.0). Tröskel för tröskel, cellerna inom tolerans: S0 13 av 13 (MET); S1 43 av 52 (NOT MET); S2 48 av 52 (NOT MET); S3 122 av 155 (NOT MET); S4 132 av 156 (NOT MET); S5 18 av 26 (NOT MET); S6 26 av 26 (MET); S7 0 av 20 panelmönster (NOT MET). Bara S0 och S6 är uppnådda under den förhandsregistrerade läsningen. En diagnostisk variant som använder häftets andra GLONASS-vinklar ger S1, S2 och S4 alla celler, men ersätter inte den registrerade körningen. Ingen registerrad är VALIDATED. Rådgivande: analysutdata från ett forsknings- och teknikverktyg, inte typgodkänd navigationsutrustning och inte en safety-of-life-tjänst.

Navigering för rymdanvändare, vad jämförelsen visar.

Månens infrastruktur (lunar-infrastructure)#

Månens bana och yta som navigerings- och geodetisk infrastruktur, i fem studier valda med study: od-consistency (en banbestämning ombord med jord-GNSS i en halobana mot en oberoende markbaserad), carrier-phase (fixering av heltalsosäkerhet mellan ytstationer och en orbiter), frame-coestimation (månens datum från avståndsmätning mellan jordstationer med och utan länkar till orbitern), space-tie (laser-, VLBI- och GNSS-offseter på en rymdfarkost mot det lokala bindningsfelet) och geodesy-sensitivity (vilken observationsfamilj som ser Love-talen h2, k2 och l2). Modellen är en begränsad tre-kroppsmodell med angivna förenklingar och illustrativa indata. Hel sida: 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
Samstämmighet mellan en banbestämning ombord med Earth-GNSS i en nästan rätlinjig haloomloppsbana och en oberoende banbestämning från marken, från verkliga körningar av motor v0.40.0 på scenarios/lunar-infrastructure-od-consistency.toml och varianten med modellfel (400 försök vardera). Den genomsnittliga normaliserade skillnaden q är 5,81 utan modellfel och 5,95 med ett injicerat accelerationsfel på 3e-10 m/s2, mot 6 förväntat: de två banlösningarna är samstämmiga (tröskel C1 MET). Andelen försök över 95 %-punkten är 0,040 och 0,052; tröskeln för att upptäcka det injicerade felet var minst 0,5, så den är NOT MET (C3): lösningen ombord är känd till cirka 352 m mot 23 m för den från marken, så en förskjutning på tio meter gömmer sig inom dess kovarians. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst.Samstämmighet mellan en banbestämning ombord med Earth-GNSS i en nästan rätlinjig haloomloppsbana och en oberoende banbestämning från marken, från verkliga körningar av motor v0.40.0 på scenarios/lunar-infrastructure-od-consistency.toml och varianten med modellfel (400 försök vardera). Den genomsnittliga normaliserade skillnaden q är 5,81 utan modellfel och 5,95 med ett injicerat accelerationsfel på 3e-10 m/s2, mot 6 förväntat: de två banlösningarna är samstämmiga (tröskel C1 MET). Andelen försök över 95 %-punkten är 0,040 och 0,052; tröskeln för att upptäcka det injicerade felet var minst 0,5, så den är NOT MET (C3): lösningen ombord är känd till cirka 352 m mot 23 m för den från marken, så en förskjutning på tio meter gömmer sig inom dess kovarians. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst. Fixering av heltalsosäkerhet i bärvågsfas mellan stationer på månytan och en omloppsfarkost, ur det incheckade resultatet av den poängsatta körningen av motor v0.40.0 (tests/fixtures/lunar_infra/phase_full_run.json: 3 båglängder, en Monte Carlo med 401 dragningar vardera, skriven av scenarios/carrier-phase-scored.toml). 1 dygn: framgång 1,0 % (standardfel 0,5 %), 134 osäkerheter, omloppsfarkostens positionssigma 45,6 m flytande och 18,5 m fixerad; 2 dygn: framgång 0,5 % (standardfel 0,4 %), 259 osäkerheter, omloppsfarkostens positionssigma 21,5 m flytande och 8,7 m fixerad; 3 dygn: framgång 2,8 % (standardfel 0,8 %), 375 osäkerheter, omloppsfarkostens positionssigma 6,3 m flytande och 2,1 m fixerad. Heltalsfixering uppnås inte: framgången stannar mellan 1 % och 3 % vid 25 dBi, och vid de registrerade 12 dBi kan problemet inte ställas upp. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en säkerhetskritisk tjänst.Fixering av heltalsosäkerhet i bärvågsfas mellan stationer på månytan och en omloppsfarkost, ur det incheckade resultatet av den poängsatta körningen av motor v0.40.0 (tests/fixtures/lunar_infra/phase_full_run.json: 3 båglängder, en Monte Carlo med 401 dragningar vardera, skriven av scenarios/carrier-phase-scored.toml). 1 dygn: framgång 1,0 % (standardfel 0,5 %), 134 osäkerheter, omloppsfarkostens positionssigma 45,6 m flytande och 18,5 m fixerad; 2 dygn: framgång 0,5 % (standardfel 0,4 %), 259 osäkerheter, omloppsfarkostens positionssigma 21,5 m flytande och 8,7 m fixerad; 3 dygn: framgång 2,8 % (standardfel 0,8 %), 375 osäkerheter, omloppsfarkostens positionssigma 6,3 m flytande och 2,1 m fixerad. Heltalsfixering uppnås inte: framgången stannar mellan 1 % och 3 % vid 25 dBi, och vid de registrerade 12 dBi kan problemet inte ställas upp. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en säkerhetskritisk tjänst. Precisionen hos det lunara datumet med sju parametrar (tre translationer, en skala och tre rotationer) från avståndsmätning mot jordstationer, med och utan avstånd mellan orbiter och ytstation, från en verklig körning av motor v0.40.0 på scenarios/lunar-infrastructure-frame-coestimation.toml. Cramer-Rao-sigma för translationerna och rotationerna sjunker med orbiterlänkarna (till exempel t_z från 0,98 m till 0,046 m); det minsta informationsegenvärdet stiger 111 gånger och spåret av CRLB sjunker till 1,0 % (tröskel F3 MET). Detta förutsätter att banan är känd i månaxlarna, med sitt fel bärt av orbiterns avståndssigma på 1 m. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst.Precisionen hos det lunara datumet med sju parametrar (tre translationer, en skala och tre rotationer) från avståndsmätning mot jordstationer, med och utan avstånd mellan orbiter och ytstation, från en verklig körning av motor v0.40.0 på scenarios/lunar-infrastructure-frame-coestimation.toml. Cramer-Rao-sigma för translationerna och rotationerna sjunker med orbiterlänkarna (till exempel t_z från 0,98 m till 0,046 m); det minsta informationsegenvärdet stiger 111 gånger och spåret av CRLB sjunker till 1,0 % (tröskel F3 MET). Detta förutsätter att banan är känd i månaxlarna, med sitt fel bärt av orbiterns avståndssigma på 1 m. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst. Precisionen hos skillnaderna mellan lasermätningens, VLBI:s och GNSS:s positioner för en rymdfarkost, mot felet i den lokala förbindelsen på marken, från en verklig körning av motor v0.40.0 på scenarios/lunar-infrastructure-space-tie.toml (en båge på 6.56 dygn, tekniksigma GNSS 10 m, VLBI 1 m, laser 0,1 m). Med en lokal förbindelse från 1 mm till 1 m stannar translationssigmat för laser minus GNSS nära 1,04 m tills förbindelsen når 1 m: det begränsas av teknikernas mätbrus, inte av den lokala förbindelsen. Golvet som sätts av förbindelsen ensam är kvadratroten ur två gånger dess sigma. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst.Precisionen hos skillnaderna mellan lasermätningens, VLBI:s och GNSS:s positioner för en rymdfarkost, mot felet i den lokala förbindelsen på marken, från en verklig körning av motor v0.40.0 på scenarios/lunar-infrastructure-space-tie.toml (en båge på 6.56 dygn, tekniksigma GNSS 10 m, VLBI 1 m, laser 0,1 m). Med en lokal förbindelse från 1 mm till 1 m stannar translationssigmat för laser minus GNSS nära 1,04 m tills förbindelsen når 1 m: det begränsas av teknikernas mätbrus, inte av den lokala förbindelsen. Golvet som sätts av förbindelsen ensam är kvadratroten ur två gånger dess sigma. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst. Vilken observationsfamilj som är känslig för månens Love-tal h2, k2 och l2, från en verklig körning av motor v0.40.0 på scenarios/lunar-infrastructure-geodesy-sensitivity.toml. Varje cell är det kvadratiska medelvärdet (RMS) av partiella derivatan av en familjs observationer med avseende på en parameter, i den familjens egna enheter (så celler jämförs längs en rad, inte nedför en kolumn); ett tankstreck betyder att familjen saknar känslighet. laseravståndsmätning: h2 7,6, k2 ingen, l2 9,8. spårning av orbiter: h2 ingen, k2 0,00086, l2 ingen. ytgravimeter: h2 2.9e+03, k2 4.3e+03, l2 ingen. ytklocka: h2 2.8e-17, k2 2.8e-17, l2 ingen. Med alla fyra familjerna är Cramer-Rao-sigma 0,36 % av nominellt h2, 0,52 % av k2 och 1,16 % av l2. Att lägga till en familj sänkte aldrig det minsta egenvärdet (28 av 28 tillägg), men spåret av pseudoinversen blev inte större i bara 16 av 28: den halvan av tröskel G3 är NOT MET. Orbiterfamiljen ser siktlinjeintegralen av k2-accelerationen, en siffra i den övre änden. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst.Vilken observationsfamilj som är känslig för månens Love-tal h2, k2 och l2, från en verklig körning av motor v0.40.0 på scenarios/lunar-infrastructure-geodesy-sensitivity.toml. Varje cell är det kvadratiska medelvärdet (RMS) av partiella derivatan av en familjs observationer med avseende på en parameter, i den familjens egna enheter (så celler jämförs längs en rad, inte nedför en kolumn); ett tankstreck betyder att familjen saknar känslighet. laseravståndsmätning: h2 7,6, k2 ingen, l2 9,8. spårning av orbiter: h2 ingen, k2 0,00086, l2 ingen. ytgravimeter: h2 2.9e+03, k2 4.3e+03, l2 ingen. ytklocka: h2 2.8e-17, k2 2.8e-17, l2 ingen. Med alla fyra familjerna är Cramer-Rao-sigma 0,36 % av nominellt h2, 0,52 % av k2 och 1,16 % av l2. Att lägga till en familj sänkte aldrig det minsta egenvärdet (28 av 28 tillägg), men spåret av pseudoinversen blev inte större i bara 16 av 28: den halvan av tröskel G3 är NOT MET. Orbiterfamiljen ser siktlinjeintegralen av k2-accelerationen, en siffra i den övre änden. MODELLED: en begränsad trekroppsmodell med angivna förenklingar och illustrativa indata, inte en mätning av någon månstorhet. Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst.

Registerstatus: MODELLED, och tre trösklar är NOT MET. Numeriken kontrolleras mot oberoende numpy- och scipy-program; ingenting jämförs med en mätning av en månstorhet, och ingenting är VALIDATED. Uppnått: de två banlösningarna är konsistenta (medel-q 5,81 mot 6 förväntat), och orbiterlänkar höjer det minsta egenvärdet för datumet ungefär 111 gånger, under antagande av en känd bana. Inte uppnått: det injicerade modellfelet på 3e-10 m/s2 upptäcks inte (C3: lösningen ombord är känd till ungefär 350 m, så ungefär tio meter gömmer sig i dess kovarians); heltalsfixering uppnås inte (1 till 3 % framgång vid 25 dBi, och vid de registrerade 12 dBi kan problemet inte formas); och spårhalvan av G3 för att lägga till en observationsfamilj (spåret ökade i 12 av 28 tillägg, varje gång för att familjen höjde rangen). Varje miss fastlåses av ett test. Månens infrastruktur.

Kshana Studio#

Öppna kshana.dev/studio så körs hela motorn i din webbläsare, kompilerad till WebAssembly. Inget att installera, och inget laddas upp. Studio har två vyer av samma motor, och en omkopplare i sidhuvudet växlar mellan dem och behåller scenariot, vyn och alla inställningar du ändrat.

Den enkla vyn är där Studio öppnas. Den utgår från frågor (hur många satelliter kan jag se, kan jag lita på min positionsbestämning, hur länge kan en klocka hålla tid, vad gör en jammer med min mottagare) och från en karta över allt motorn kan göra, varje område med sin andel validerade metoder. Öppna ett scenario så kommer svaret först: en enkel mening, skriven för det scenariot mäter, sedan dess nyckeltal och ett diagram. Högst fem inställningar visas, de som ändrar svaret mest; resten väntar under Avancerade inställningar. Så beräknas detta förklarar metoden, och För forskare ger motorns egna siffror, scenariofilen, koden för att köra det från Python och citeringen.

Kshana Studio, Enkel vy, på det medföljande scenariot integrity-raim, motor v0.40.0 körs lokalt. Frågan: klarar geometrin larmgränserna (horisontell och vertikal skyddsnivå)? Svaret först, märkt Levande resultat: Ja, mestadels: för 95,3 % av de 12 h. Mottagarens felgräns höll sig under larmgränserna (40 m horisontellt och 50 m vertikalt) vid 344 av 361 kontroller, och ingen positionsbestämning var vilseledande. Nyckeltal: tid positionsbestämningen går att lita på 95,3 %, längsta glapp 10 min, typisk felgräns 6,5 / 13 m, vilseledande positionsbestämningar 0. Bredvid, Prova andra inställningar med fem av dem (avståndsfelet, de två larmgränserna, varaktigheten och elevationsmasken) och Kör igen, sedan de hopfällda avsnitten Avancerade inställningar (13 fler), Hur detta beräknas (8 validerade, 6 modellerade) och För forskare. Nedanför, vyerna av detta resultat och skyddsnivåerna ritade mot larmgränsen.Kshana Studio, Enkel vy, på det medföljande scenariot integrity-raim, motor v0.40.0 körs lokalt. Frågan: klarar geometrin larmgränserna (horisontell och vertikal skyddsnivå)? Svaret först, märkt Levande resultat: Ja, mestadels: för 95,3 % av de 12 h. Mottagarens felgräns höll sig under larmgränserna (40 m horisontellt och 50 m vertikalt) vid 344 av 361 kontroller, och ingen positionsbestämning var vilseledande. Nyckeltal: tid positionsbestämningen går att lita på 95,3 %, längsta glapp 10 min, typisk felgräns 6,5 / 13 m, vilseledande positionsbestämningar 0. Bredvid, Prova andra inställningar med fem av dem (avståndsfelet, de två larmgränserna, varaktigheten och elevationsmasken) och Kör igen, sedan de hopfällda avsnitten Avancerade inställningar (13 fler), Hur detta beräknas (8 validerade, 6 modellerade) och För forskare. Nedanför, vyerna av detta resultat och skyddsnivåerna ritade mot larmgränsen.

Den avancerade vyn är hela instrumentpanelen: scenariobiblioteket, fem numrerade steg (Välj, Ställ in, Kör, Läs resultat, Dela eller exportera), nyckeltalen med PASS- och FAIL-markeringar där körningen anger en tröskel, och varje panel: översikt, diagram, kartor, uppspelning, motorns rapport och exporter. En sökruta når scenarier, domäner och fälten i dem, och du kan fästa upp till fyra körningar och jämföra dem sida vid sida.

Den enkla vyns startskärm, och den avancerade vyn efter en körning
Kshana Studio, Enkel vy, startskärm, med titeln Vad vill du ta reda på?, med motor v0.40.0 live och, i det övre fältet, tre länkar: Utbildningsgenomgång, Störningskarta och Mottagarförtroende. Fyra frågor: hur många satelliter kan jag se var som helst på jorden, kan jag lita på min positionsbestämning, hur länge kan en klocka hålla tid utan satelliter, och vad gör en jammer med min mottagare. Under den första dess registrerade resultat: minst 22 satelliter i sikte på varje plats och 31 i genomsnitt med GPS, Galileo, BeiDou och GLONASS tillsammans, en positionsbestämning möjlig på 100 % av platserna och tiderna, på en världskarta över satelliter i sikte, med en knapp Öppna det här resultatet. Bredvid, Allt Kshana kan göra: 16 områden och 139 färdigkörda scenarier, varje ruta med ett litet diagram från en registrerad körning och sin andel validerade metoder, och registrets 173 av 350 förmågor validerade.Kshana Studio, Enkel vy, startskärm, med titeln Vad vill du ta reda på?, med motor v0.40.0 live och, i det övre fältet, tre länkar: Utbildningsgenomgång, Störningskarta och Mottagarförtroende. Fyra frågor: hur många satelliter kan jag se var som helst på jorden, kan jag lita på min positionsbestämning, hur länge kan en klocka hålla tid utan satelliter, och vad gör en jammer med min mottagare. Under den första dess registrerade resultat: minst 22 satelliter i sikte på varje plats och 31 i genomsnitt med GPS, Galileo, BeiDou och GLONASS tillsammans, en positionsbestämning möjlig på 100 % av platserna och tiderna, på en världskarta över satelliter i sikte, med en knapp Öppna det här resultatet. Bredvid, Allt Kshana kan göra: 16 områden och 139 färdigkörda scenarier, varje ruta med ett litet diagram från en registrerad körning och sin andel validerade metoder, och registrets 173 av 350 förmågor validerade. Kshana Studio, avancerade vyn, efter en körning av det medföljande scenariot constellation-multi-gnss-coverage (Fyra GNSS-konstellationer, en karta), motor v0.40.0 körs lokalt. Till vänster scenariobiblioteket, 139 scenarier i 16 domäner. De fem stegen Välj, Ställ in, Kör, Läs resultat och Dela eller exportera, med steg 4 aktuellt. Nyckeltal: 102 satelliter, tillgänglighet 100 % (PASS), median för positionens precisionsförsämring (PDOP) 0,95 (PASS), PDOP 95:e percentilen 1,105 (PASS), 31,03 satelliter i sikte i genomsnitt och 22 som minst. Nedanför panelraden med Täckning vald, uppspelningsfältet, en världskarta över medel-PDOP från 0,831 till 1,0853 med varje satellit ritad, och de globala täckningssiffrorna.Kshana Studio, avancerade vyn, efter en körning av det medföljande scenariot constellation-multi-gnss-coverage (Fyra GNSS-konstellationer, en karta), motor v0.40.0 körs lokalt. Till vänster scenariobiblioteket, 139 scenarier i 16 domäner. De fem stegen Välj, Ställ in, Kör, Läs resultat och Dela eller exportera, med steg 4 aktuellt. Nyckeltal: 102 satelliter, tillgänglighet 100 % (PASS), median för positionens precisionsförsämring (PDOP) 0,95 (PASS), PDOP 95:e percentilen 1,105 (PASS), 31,03 satelliter i sikte i genomsnitt och 22 som minst. Nedanför panelraden med Täckning vald, uppspelningsfältet, en världskarta över medel-PDOP från 0,831 till 1,0853 med varje satellit ritad, och de globala täckningssiffrorna.

Studios källkod och dess byggnoteringar finns i web/README.md.

Webbplatsen#

Resten av kshana.dev byggs från det här repositoriets egna filer och motorkörningar: uppdrag, förmågor, evidensregistret, den publicerade forskningen och utgåvorna.

Tre sidor på kshana.dev sida vid sida. Startsidans hjälte: namnraden Kshana · क्षण · det precisa ögonblicket ovanför rubriken Öva på minuten då GNSS går i mörker, med uppdragskonsolen från en verklig körning av motor v0.40.0 (en glob och tre live-diagram: klockans tidsfel, bärvågs-brusdensitet och skyddsnivå). Evidens, Publicerad forskning: de sex arXiv-artiklarna byggda på den öppna motorn, den nyaste med en motorsiffra. Utgåvor, Kshana Pro, samma motor, förstärkt: Free kör ett scenario, Pro svarar på programmets fråga.Tre sidor på kshana.dev sida vid sida. Startsidans hjälte: namnraden Kshana · क्षण · det precisa ögonblicket ovanför rubriken Öva på minuten då GNSS går i mörker, med uppdragskonsolen från en verklig körning av motor v0.40.0 (en glob och tre live-diagram: klockans tidsfel, bärvågs-brusdensitet och skyddsnivå). Evidens, Publicerad forskning: de sex arXiv-artiklarna byggda på den öppna motorn, den nyaste med en motorsiffra. Utgåvor, Kshana Pro, samma motor, förstärkt: Free kör ett scenario, Pro svarar på programmets fråga.

Förmågor#

En motor täcker hela felkedjan, från den första störda satelliten till den sista nanosekunden av klock-holdover. Motorn har 92 scenariotyper; kshana kinds listar dem och docs/SCENARIOS.md dokumenterar varje fält.

Förmåga Vad den besvarar
Spektrum hur en jammer tar GNSS L-bandet, band för band, sekund för sekund
Klockor och tidssynkronisering hur länge varje klocka håller tiden efter att GNSS förlorats
Konstellationer kring vilken kropp som helst täckning, precisionsförsämring och tillgänglighet runt jorden, månen eller Mars
Solsystemet var varje planet finns, och ljustiden för vilken länk som helst
Navigering i låg omloppsbana en passage, en länk, ett navigeringsmeddelande och en fusionerad positionsbestämning, steg för steg
Kampanjer ett kedjat uppdrag, ett svep eller en Monte Carlo-ensemble i ett scenario
Animation en körnings tidsserie som en animerad ritning, en spelare eller bildrutor
Rapporter varje siffra med sin enhet och sin etikett, i HTML (HyperText Markup Language) och JSON (JavaScript Object Notation)
Interoperabilitetsexporter banor och geometri för andra verktyg: SP3, CCSDS OMM och OEM, CZML, KML, GeoJSON, STK och SigMF
Sjöförtroende kan bryggan lita på den här positionsbestämningen: ett poäng 0-100 och skäl för ett fartygs NMEA, live eller från en logg (rådgivande, inte typgodkänd navigationsutrustning)
NMEA-träningsströmmar syntetisk brygg-NMEA med skriptad jamming och spoofing och en instruktörslogg, för besättningsutbildning (endast text; aldrig för ett fartygs levande navigationssystem; rådgivande, inte typgodkänd navigationsutrustning)
Störningskarta var flygplan och fartyg rapporterade försämrad navigeringsdata, och hur mycket av en rutt det berör
Sändarområde var, under angivna antaganden, en källa till försämrade positionsrapporter kan finnas: områden vid angiven konfidens, en tyngdpunkt med sin ellips, aldrig en punkt (MODELLED; kshana interference-map locate)
Bevispaket en signerad, offline-verifierbar teknisk post över ett fartygs loggfönster och vad motorn beräknade utifrån det, för en incidentrapport (rådgivande, inte typgodkänd navigationsutrustning)
Förtroendetelemetri förtroendeströmmen som Prometheus-mätvärden, SIEM-händelser och valfri OpenTelemetry, med en exempelinstrumentpanel i Grafana (deploy/grafana/kshana-gnss-trust.json)
Signal K och OpenCPN förtroendepoängen på ett fartygs Signal K-server och i OpenCPN, med ett referensbygge för en liten dator bredvid mottagaren (rådgivande, inte typgodkänd navigationsutrustning)
Export för testbänk kshana bench-export: ett scenarios fordonsrörelse och händelser för en GNSS-simulator i laboratorium (ingen signal skrivs), och hur du poängsätter mottagarens logg efteråt
Compliance-mappning och rapport kshana compliance-report: vilka rader i offentliga resiliensramverk en uppsättning körningar ger belägg för, och den lucka som återstår
Notebooks körbara handledningar: fartygsförtroende och utbildningsströmmar, ruttexponering mot en störningskarta, compliance-mappning och test bench, kvant mot klassisk GDOP
Verifierare för Galileo OSNMA vilka satelliters navigeringsdata en mottagare kan autentisera kryptografiskt, och varför en kontroll misslyckas; Kshana beviljar inga rättigheter under EU:s OSNMA ICD IPR (se NOTICE på sidan)

Exportformaten i sin helhet: SP3 är Standard Product 3; CCSDS OMM och OEM är Orbit Mean-elements Message och Orbit Ephemeris Message från Consultative Committee for Space Data Systems; CZML och KML är Cesium och Keyhole Markup Language; STK är Systems Tool Kit; SigMF är Signal Metadata Format.

Den kedjade kampanjen campaign-jam-spoof-holdover-integrity, en verklig körning av motorn (frö 20260928): 6 faser (Nominal → Jamming → Spoofing → Holdover → Integritetslarm → Återhämtning) och 18 delkörningar med rutnät på 10 s över T+01:16:10. Tre banor: klockans tidsfel mot en vakt på 50 ns (topp 62,7 ns), effektiv bärvågs-brusdensitet mot ett golv på 25 dB-Hz (minimum -12.2 dB-Hz), och vertikal skyddsnivå mot en larmgräns på 50 m (topp 135,4 m), med körningens larmhändelser: T+00:20:00 RF-spoofingdetektorn larmar (sammanslagna monitorer för konsistens, effekt och signalkvalitet); T+00:26:10 klockstödd spoofingmonitor larmar.Den kedjade kampanjen campaign-jam-spoof-holdover-integrity, en verklig körning av motorn (frö 20260928): 6 faser (Nominal → Jamming → Spoofing → Holdover → Integritetslarm → Återhämtning) och 18 delkörningar med rutnät på 10 s över T+01:16:10. Tre banor: klockans tidsfel mot en vakt på 50 ns (topp 62,7 ns), effektiv bärvågs-brusdensitet mot ett golv på 25 dB-Hz (minimum -12.2 dB-Hz), och vertikal skyddsnivå mot en larmgräns på 50 m (topp 135,4 m), med körningens larmhändelser: T+00:20:00 RF-spoofingdetektorn larmar (sammanslagna monitorer för konsistens, effekt och signalkvalitet); T+00:26:10 klockstödd spoofingmonitor larmar.
Varje förmåga, ritad utifrån en verklig körning: L-bandets vattenfall, täckningskartan, solsystemet och en passage i låg omloppsbana
GNSS L-bandet som en effektspektraltäthet över 60 s, från en verklig körning av spektrumtypen (l-band-waterfall-jamming.toml, frö 7, motor v0.40.0): frekvens tvärs, tid nedåt, färg för effekt över brusgolvet på -202.0 dBW/Hz. Jammers: chirp privacy device (chirp, på vid 10 s, av vid 40 s); CW-ton på L1 (cw, på vid 30 s); L2-smalbandigt brus (narrowband, på vid 45 s). Sämsta bandet GPS L1 C/A: lägsta effektiva C/N0 3,2 dB-Hz vid 31 s mot ett spårningsgolv på 25 dB-Hz. GPS L1 C/A minimum 3,2 dB-Hz; Galileo E1 minimum 4,7 dB-Hz; GPS L2C minimum 36,9 dB-Hz; GPS L5 minimum 44,1 dB-Hz; Galileo E5a minimum 47,0 dB-Hz.GNSS L-bandet som en effektspektraltäthet över 60 s, från en verklig körning av spektrumtypen (l-band-waterfall-jamming.toml, frö 7, motor v0.40.0): frekvens tvärs, tid nedåt, färg för effekt över brusgolvet på -202.0 dBW/Hz. Jammers: chirp privacy device (chirp, på vid 10 s, av vid 40 s); CW-ton på L1 (cw, på vid 30 s); L2-smalbandigt brus (narrowband, på vid 45 s). Sämsta bandet GPS L1 C/A: lägsta effektiva C/N0 3,2 dB-Hz vid 31 s mot ett spårningsgolv på 25 dB-Hz. GPS L1 C/A minimum 3,2 dB-Hz; Galileo E1 minimum 4,7 dB-Hz; GPS L2C minimum 36,9 dB-Hz; GPS L5 minimum 44,1 dB-Hz; Galileo E5a minimum 47,0 dB-Hz. Satelliter i sikte över hela jorden under en dag, från en verklig körning av constellation-design (constellation-multi-gnss-coverage.toml, motorn körd av den här generatorn): 102 satelliter (GPS 24, Galileo 24, BeiDou 30, GLONASS 24). Varje cell på 10 grader är skuggad efter det genomsnittliga antalet satelliter över masken på 10 grader (27,2 till 36,5); punkterna är motorns markspårssampel, ett per timme per satellit. Global tillgänglighet 100,00 % vid PDOP högst 6, median-PDOP 0,95, medel 31,0 och minst 22 satelliter i sikte.Satelliter i sikte över hela jorden under en dag, från en verklig körning av constellation-design (constellation-multi-gnss-coverage.toml, motorn körd av den här generatorn): 102 satelliter (GPS 24, Galileo 24, BeiDou 30, GLONASS 24). Varje cell på 10 grader är skuggad efter det genomsnittliga antalet satelliter över masken på 10 grader (27,2 till 36,5); punkterna är motorns markspårssampel, ett per timme per satellit. Global tillgänglighet 100,00 % vid PDOP högst 6, median-PDOP 0,95, medel 31,0 och minst 22 satelliter i sikte. Solsystemet vid scenariots epok 2026-09-28T00:00:00, från en verklig körning av solar-system-typen (solar-system-tour.toml): solen, 9 planeter och dvärgplaneten Pluto sedda från ovanför ekliptikan, avstånden logaritmiskt komprimerade för visning, med varje kropps enkelriktade ljustid från jorden. Merkurius 0,47 au, 10,1 ljusminuter, VALIDATED; Venus 0,73 au, 3,0 ljusminuter, VALIDATED; Mars 1,55 au, 14,0 ljusminuter, VALIDATED; Jupiter 5,30 au, 49,5 ljusminuter, VALIDATED; Saturnus 9,44 au, 70,2 ljusminuter, VALIDATED; Uranus 19,44 au, 157,4 ljusminuter, MODELLED; Neptunus 29,88 au, 240,2 ljusminuter, MODELLED; Pluto 35,61 au, 292,2 ljusminuter, MODELLED. Länkar: Mars till Jupiter enkelriktat 2193,5 s; Saturnus till jorden enkelriktat 4212,2 s; Europa till Jupiter enkelriktat 2,2 s.Solsystemet vid scenariots epok 2026-09-28T00:00:00, från en verklig körning av solar-system-typen (solar-system-tour.toml): solen, 9 planeter och dvärgplaneten Pluto sedda från ovanför ekliptikan, avstånden logaritmiskt komprimerade för visning, med varje kropps enkelriktade ljustid från jorden. Merkurius 0,47 au, 10,1 ljusminuter, VALIDATED; Venus 0,73 au, 3,0 ljusminuter, VALIDATED; Mars 1,55 au, 14,0 ljusminuter, VALIDATED; Jupiter 5,30 au, 49,5 ljusminuter, VALIDATED; Saturnus 9,44 au, 70,2 ljusminuter, VALIDATED; Uranus 19,44 au, 157,4 ljusminuter, MODELLED; Neptunus 29,88 au, 240,2 ljusminuter, MODELLED; Pluto 35,61 au, 292,2 ljusminuter, MODELLED. Länkar: Mars till Jupiter enkelriktat 2193,5 s; Saturnus till jorden enkelriktat 4212,2 s; Europa till Jupiter enkelriktat 2,2 s. En passage i låg omloppsbana (LEO) från en verklig körning av leo-pass-typen (leo-pass-iridium.toml, motorn körd av den här generatorn): Iridium-pass på 781 km, STL-band på 1621 MHz, sedd av en luftburen användare vid 50° N 30° V. Över masken på 5° i 750 s, maximal elevation 65,0° vid 444 s. Bärvågs-brusdensiteten når som mest 80,5 dB-Hz (median 71,3), 34,3 dB över GNSS-medianen på 46,2 dB-Hz från 8 GPS-satelliter i sikte (38,2 till 51,1 dB-Hz); Doppler når 35,4 kHz.En passage i låg omloppsbana (LEO) från en verklig körning av leo-pass-typen (leo-pass-iridium.toml, motorn körd av den här generatorn): Iridium-pass på 781 km, STL-band på 1621 MHz, sedd av en luftburen användare vid 50° N 30° V. Över masken på 5° i 750 s, maximal elevation 65,0° vid 444 s. Bärvågs-brusdensiteten når som mest 80,5 dB-Hz (median 71,3), 34,3 dB över GNSS-medianen på 46,2 dB-Hz från 8 GPS-satelliter i sikte (38,2 till 51,1 dB-Hz); Doppler når 35,4 kHz.

Kör vilken som helst av dem med kshana example <scenario> > s.toml && kshana s.toml: scenarierna är l-band-waterfall-jamming, constellation-multi-gnss-coverage, solar-system-tour och leo-pass-iridium.

De maritima och störningsrelaterade förmågorna, ritade utifrån incheckade syntetiska indata: ett förtroendepoäng, en störningskarta med ruttexponering, en utbildningsström och ett bevispaket
Förtroendepoäng över en syntetisk överfart, från en verklig körning av motor v0.40.0 på examples/maritime-trust (en påhittad NMEA-logg för en färja på rutten Tallinn till Helsingfors, 3001 epoker vid 1 Hz). Tre fält delar en tidsaxel. Överst: avståndet mellan den position mottagaren rapporterar och fartygets verkliga position, som håller sig inom några meter till ungefär 1576 s, då loggens skriptade bortdragning av positionen drar den bort, medan mottagaren fortsätter att rapportera en giltig positionsbestämning. I mitten: förtroendepoängen från 0 till 100, inte beräknad under de första 300 s av kalibreringen, i det nominella bandet (minst 90) fram till bortdragningen, och sedan fallande genom det degraderade bandet (minst 55) ner i det opålitliga bandet. Längst ned: varje epoks band som ett färgat band med sitt namn. Poängen är rådgivande. Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering. Loggen är påhittad för att visa formatet och övervakarna; den är ingen mätning och säger ingenting om hur någon mottagare skulle prestera.Förtroendepoäng över en syntetisk överfart, från en verklig körning av motor v0.40.0 på examples/maritime-trust (en påhittad NMEA-logg för en färja på rutten Tallinn till Helsingfors, 3001 epoker vid 1 Hz). Tre fält delar en tidsaxel. Överst: avståndet mellan den position mottagaren rapporterar och fartygets verkliga position, som håller sig inom några meter till ungefär 1576 s, då loggens skriptade bortdragning av positionen drar den bort, medan mottagaren fortsätter att rapportera en giltig positionsbestämning. I mitten: förtroendepoängen från 0 till 100, inte beräknad under de första 300 s av kalibreringen, i det nominella bandet (minst 90) fram till bortdragningen, och sedan fallande genom det degraderade bandet (minst 55) ner i det opålitliga bandet. Längst ned: varje epoks band som ett färgat band med sitt namn. Poängen är rådgivande. Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering. Loggen är påhittad för att visa formatet och övervakarna; den är ingen mätning och säger ingenting om hur någon mottagare skulle prestera. Två syntetiska dagar i störningskartan, ritade från de incheckade exemplen i examples/interference-map/output, var och en med sin egen syntetiska rutt och de ruttexponeringsandelar som motorn redovisar. Till vänster en ADS-B-dag: 1 försämrad cell, 6 inte försämrade, 4 ej bedömda (snedstreckade) och celler utan post, ritade tomma, som inte observerades. Rutten är 525 km: 11,5% av dess längd i försämrade celler, 38,3% inte försämrade, 9,1% ej bedömda och 41,1% inte observerade. Till höger en AIS-dag: celler flaggade av cirkel- och landdetektorerna, icke-avvikande celler och tomma celler; rutten är 454 km med 10,5% i avvikande celler, 21,2% icke-avvikande, 0,0% ej bedömda och 68,3% inte observerade. ADS-B och AIS är separata lager och kombineras aldrig. En flaggad cell är inte ett fynd av störning, och en cell utan färg observerades inte, vilket inte är detsamma som fri. Alla data är påhittade, på öppet hav i mellersta Atlanten, och inte en mätning.Två syntetiska dagar i störningskartan, ritade från de incheckade exemplen i examples/interference-map/output, var och en med sin egen syntetiska rutt och de ruttexponeringsandelar som motorn redovisar. Till vänster en ADS-B-dag: 1 försämrad cell, 6 inte försämrade, 4 ej bedömda (snedstreckade) och celler utan post, ritade tomma, som inte observerades. Rutten är 525 km: 11,5% av dess längd i försämrade celler, 38,3% inte försämrade, 9,1% ej bedömda och 41,1% inte observerade. Till höger en AIS-dag: celler flaggade av cirkel- och landdetektorerna, icke-avvikande celler och tomma celler; rutten är 454 km med 10,5% i avvikande celler, 21,2% icke-avvikande, 0,0% ej bedömda och 68,3% inte observerade. ADS-B och AIS är separata lager och kombineras aldrig. En flaggad cell är inte ett fynd av störning, och en cell utan färg observerades inte, vilket inte är detsamma som fri. Alla data är påhittade, på öppet hav i mellersta Atlanten, och inte en mätning. Träningsström från scenariot coastal-drag-off (motor v0.40.0, frö 22, 25 minuter med en positionsbestämning per 10 s av instruktörsloggen). En karta visar fartygets sanna spår och det spår som mottagaren rapporterar: de stämmer överens tills en skriptad positionsavdragning (drag-off) börjar vid 421 s, det rapporterade spåret vandrar sedan bort från det sanna medan mottagaren behåller en giltig positionsbestämning, och det hoppar tillbaka när händelsen slutar vid 1140 s. Bredvid visas avståndet mellan de två spåren över tid och den genomsnittliga bärvåg-till-brus-täthet som mottagaren rapporterar, som stiger till en enda förhöjd nivå så länge händelsen pågår. Syntetiska träningsdata genererade av Kshana. Endast för träning och test: mata aldrig den här strömmen till ett fartygs levande navigationssystem. Rådgivande, inte typgodkänd navigationsutrustning. Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering. Positioner, datum och spår är påhittade.Träningsström från scenariot coastal-drag-off (motor v0.40.0, frö 22, 25 minuter med en positionsbestämning per 10 s av instruktörsloggen). En karta visar fartygets sanna spår och det spår som mottagaren rapporterar: de stämmer överens tills en skriptad positionsavdragning (drag-off) börjar vid 421 s, det rapporterade spåret vandrar sedan bort från det sanna medan mottagaren behåller en giltig positionsbestämning, och det hoppar tillbaka när händelsen slutar vid 1140 s. Bredvid visas avståndet mellan de två spåren över tid och den genomsnittliga bärvåg-till-brus-täthet som mottagaren rapporterar, som stiger till en enda förhöjd nivå så länge händelsen pågår. Syntetiska träningsdata genererade av Kshana. Endast för träning och test: mata aldrig den här strömmen till ett fartygs levande navigationssystem. Rådgivande, inte typgodkänd navigationsutrustning. Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering. Positioner, datum och spår är påhittade. Strukturen hos ett bevispaket. En mottagarlogg (NMEA, u-blox UBX, RINEX 3 eller en Android-logg) och ett tidsfönster går in i kshana receiver-trust evidence, som skriver sju filer: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig och en valfri timestamp.tsr. Manifestet registrerar SHA-256 för hela loggen och för varje fil samt en hashkedja över filerna; signaturen täcker manifestet. kshana evidence verify kontrollerar signaturen, varje fils hashvärde, kedjan och att ingen olistad fil finns, och avslutas med 0 när allt är verifierat, 1 när något misslyckades och 3 när undertecknaren inte var fastlåst. Ett paket är en teknisk registrering, inte ett juridiskt utlåtande.Strukturen hos ett bevispaket. En mottagarlogg (NMEA, u-blox UBX, RINEX 3 eller en Android-logg) och ett tidsfönster går in i kshana receiver-trust evidence, som skriver sju filer: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig och en valfri timestamp.tsr. Manifestet registrerar SHA-256 för hela loggen och för varje fil samt en hashkedja över filerna; signaturen täcker manifestet. kshana evidence verify kontrollerar signaturen, varje fils hashvärde, kedjan och att ingen olistad fil finns, och avslutas med 0 när allt är verifierat, 1 när något misslyckades och 3 när undertecknaren inte var fastlåst. Ett paket är en teknisk registrering, inte ett juridiskt utlåtande.

Alla fyra är påhittade data och rådgivande: de visar programvarans format och beteende, inte hur någon mottagare eller något system klarar sig mot störning. Kör den första med kshana receiver-trust examples/maritime-trust/session.toml, den andra med kshana route-exposure på proverna i examples/interference-map/, den tredje med kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea (endast för utbildning: mata den aldrig till levande navigationsutrustning), och den fjärde som i docs/EVIDENCE-PACKS.md.

Hela förmågetabellen, område för område

Hela detaljerna område för område följer; för ett mognadsregister per förmåga se docs/CAPABILITY.md och docs/VALIDATION.md.

Område Förmåga
Bana & geometri SGP4/SDP4-propagering (validerad till 4,12 mm mot alla 666 AIAA 2006-6753-vektorer); verkliga tvåradselement (en incheckad, datumstämplad ögonblicksbild av Celestrak gps-ops) eller syntetiska Walker-delta-konstellationer vars medelelement realiserar formeln i:T/P/F till under 1 km över en 24 h propagering; multikonstellationssynlighet, precisionsförsämring — geometrisk, position, horisontell, vertikal och tid (GDOP/PDOP/HDOP/VDOP/TDOP), validerad till 1e-6 mot gnss_lib_py 1.0.4, Stanford NAV Lab (Navigation and Autonomous Vehicles Laboratory), och GNSS-tillgänglighet; en gradientfri optimerare för konstellationsutformning, minsta satellitdimensionering med streets-of-coverage, ett jämförelseverktyg för flera konstellationer och ett Walker-utformningssvep som tabellerar täckning / PDOP / återbesökstid över ett rutnät av plan × satelliter och rapporterar de Pareto-optimala utformningarna.
Numerisk propagator En numerisk Cowell-propagator (src/propagator.rs) som kompletterar den analytiska SGP4/SDP4-vägen, med en hierarkisk kraftmodell med sju störningar (src/forces.rs): tvåkropps + hela J2–J6-zonalfältet (Jordens tillplattning, zonala harmoniska koefficienter J2 till J6; den exakta analytiska gradienten av dess störpotential), ett valfritt tesseralt sfäriskt-harmoniskt EGM2008-geopotentialfält till grad/ordning 70 (Earth Gravitational Model 2008; src/gravity_sh.rs; verkliga koefficienter från NGA — USA:s National Geospatial-Intelligence Agency —, rekursion med Holmes–Featherstone-normaliserade Legendre-funktioner, korskontrollerad mot de slutna Legendre-funktionerna och den analytiska ∇V-identiteten), tredjekroppsgravitation från solen och månen styrd av epok (en inbyggd lågprecisionsefemerid, ingen DE/SPK — Development Ephemeris / SPICE Spacecraft and Planet Kernel — kernel), solstrålningstryck (kanonkulemodell med konisk umbra+penumbra-skugga), atmosfärsmotstånd (Vallados styckvis exponentiella densitet, samroterande atmosfär), den post-newtonska relativistiska Schwarzschild-korrektionen och Lense–Thirring-släpverkan (IERS — International Earth Rotation and Reference Systems Service — Conventions 2010 §10, linjär i jordens rörelsemängdsmoment, ~1–2 storleksordningar under Schwarzschild) — drivna av ett val av två adaptiva integratorer (RK4 — fjärde ordningens Runge–Kutta — med stegdubbling eller det inbäddade paret Dormand–Prince RK5(4)). Validerad mot Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — 278 epoker över LEO (låg jordbana) + GTO (geostationär överföringsbana), där de konservativa kraftnivåerna stämmer till ett värstafall |Δr| 0,08 m över 24 h (tests/numerical_cowell_propagator_reference.rs); nivån för atmosfärsmotstånd karakteriseras separat (≈ 333 m / 24 h) och de absoluta indata för sol-/månefemerid och densitet förblir ärligt modellerade. Ytterligare intern evidens (inte extern validering): den ostörda banan kontrolleras mot den exakta universalvariabel-Keplerlösningen till under en meter över 24 h, energi/rörelsemängdsmoment bevaras till ~1e-9, och varje störning stämmer med en handhärledd sluten signatur.
Manövrar & banutformning Impulsiva ΔV-noder med 6×6 kovariansutbredning (ECI — Earth-centred inertial — / LVLH — local vertical, local horizontal — ramar för utförandefel), integration av ändliga bränningar kontrollerad mot den slutna Tsiolkovskij-raketekvationen till < 0,01 %, en Izzo-2015-Lambert-lösare för ett varv, en exakt universalvariabel-Kepler-propagator och ett porkchop-svep (uppskjutning × ankomst) av C3 (uppskjutningsenergi) / ankomst-V∞ som ges som ett JSON-konturnät — prestandasimuleringslagret ovanför GMAT/Orekit, där varje Lambert-utdata rundtursprövats mot tvåkroppsreferens och porkchopminimum kontrollerats mot det analytiska Hohmann-golvet.
Tidssystem och referenssystem IERS-skottsekund-UTC / TAI / TT / UT1-skalor (Coordinated Universal Time, International Atomic Time, Terrestrial Time och jordrotationstiden Universal Time 1), ett Julian-datum-API (application programming interface), IAU-2000 (International Astronomical Union) Earth Rotation Angle (ERA), GMST-baserad (Greenwich Mean Sidereal Time) TEME ↔ ECEF (true equator, mean equinox ↔ Earth-centred, Earth-fixed) med geodetiska system i WGS-84 (World Geodetic System 1984), IAU 2006-precession (Fukushima–Williams), full IAU 2000A/2000B-nutation, IERS polrörelse och den ekvinoxfria CIO-baserade IAU 2006/2000A GCRS↔ITRS-reduktionen (CIO = Celestial Intermediate Origin) — alla validerade bit för bit mot SOFA/ERFA-vektorerna, och oberoende korskontrollerade mot ANISE (den rena Rust-återimplementeringen av NAIF/SPICE; NAIF = Navigation and Ancillary Information Facility vid NASA, US National Aeronautics and Space Administration): Kshanas GCRS→ITRS mot ANISE:s ITRF93 (International Terrestrial Reference Frame 1993) från JPL:s earth_latest_high_prec.bpc, samma IERS jordorienteringsparametrar matade till båda, stämmer till ≤ 0,86 m på marken / ≤ 3,6 m på GNSS-bana (max 0,028″) över åtta epoker 2020–2023.
Tröghet Treaxlig strapdown-INS — kvaternionattityd, WGS-84 NED-mekanisering (north-east-down), koning/sculling-kompensation och en deterministisk IMU-felmodell (skalfaktor, felinriktning, g-känslighet, kvantisering, drift); en första-principer kallatom-interferometer-accelerometer (Mach–Zehnder-fas, kvantprojektionsbrus, kontrastavtagande, vibrationskoppling) som härleder koefficienten för hastighetens slumpvandring; och ett partikelfilter med sekventiell viktad omsampling för kartstödd (terräng-/gravitationsreferens) GPS-nekad navigering.
Alt-PNT (GPS-nekad) En gravimetermätningsmodell med kalla atomer vars vitbrusgolv (σ = ASD/√τ, ASD = amplitudspektraltäthet) härleds ur CAI-accelerometerns fysik; ett fullt normaliserat sfäriskt-harmoniskt gravitationsanomalifält av låg grad (kontrollerat mot de slutna Legendre-funktionerna och en handhärledd enkeltermsanomali) plus syntetiska mascons; kärnan för syntes av gravitationsfunktionaler (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — den "kartläsare" som en gravitationsstödd navigator matchar mot — är validerad mot GRS80-normalgravitationsstandarden (Geodetic Reference System 1980), återger den slutna Somigliana-normalgravitationen och de publicerade γ_e / γ_p till 3.5e-12 och producerar en fysikaliskt begränsad störningskarta från det verkliga ICGEM-fältet (International Centre for Global Earth Models) EGM2008 (RMS — root mean square — ≈ 26 mGal, max ≈ 89 mGal vid d/o 70; tests/icgem_gravity_reference.rs); och ett kartmatchande partikelfilter för gravitation som återvinner ett GPS-nekat spår ur den anomalisekvens det flyger genom. Det utvidgas till terrängreferensnavigering (TERCOM/SITAN — terrain contour matching / Sandia Inertial Terrain-Aided Navigation — mot en SRTM- (Shuttle Radar Topography Mission) .hgt DEM (digital höjdmodell), src/altpnt/terrain.rs), ett geomagnetiskt huvudfält IGRF-14 (14:e generationens International Geomagnetic Reference Field) till grad/ordning 13 (src/igrf.rs, kontrollerat mot den lutande dipolens slutna form och ∇V-finita differenser), och en kombinerad navigator för gravitation + magnetism + terräng som fusionerar alla tre skalära kanaler genom ett partikelfilter (information är additiv — ingen kanal försämrar positionsbestämningen). Ett 60-minuters GPS-nekat riktmärke (ett ~700 km / en timmes avbrott där tröghetslösningen driver till ~70 km) återvinns till ~145 m (< 500 m) av en hierarkisk grov-till-fin-matchare — ESA NAVISP:s (Navigation Innovation and Support Programme) mål Quantum Wayfarer.
Fusion Löst kopplat 15-tillstånds GNSS/INS-feltillstånds-EKF (extended Kalman filter) med sluten återkoppling (paketet gnss-ins); en tätt kopplad pseudoavståndsuppdatering som fortsätter korrigera med färre än fyra satelliter; ett kopplat filter för klocka + position; en allmän unscented (sigma-punkt) Kalman-estimator för starkt olinjära mätningar; en tätt kopplad GNSS/INS-UKF-navigator (pseudoavstånd + Doppler) vars kraftmodellsbaserade banfärd självkonsistenskontrolleras till 0,77 m RMS över en 30-minuters krökt LEO-passage som innehåller ett GNSS-avbrott på 120 sekunder (en filterkonsistenssiffra, inte en validering mot extern referens — den här navigatorn förblir MODELLED); och en full 17-tillstånds tätt kopplad GNSS/INS-UKF (position, hastighet, attitydfel, accelerometer- och gyrobias, klockbias och drift) vars kvant-CAI-dödräkning klarar ett avbrott på 120 sekunder med den kallatomsaccelerometerns härledda slumpvandring i hastighet.
Banbestämning Återvinning av ett banstillstånd [r, v] från avståndsspårning från markstation, som sätter ihop tvåkropps- + J2-kraftmodellen och RK4-integratorn med en Gauss–Newton-batch-korrektor (determine_orbit_batch, under en meter / mm·s⁻¹ från brusfria avstånd, ~2 m vid ett brusgolv på 5 m) och en sekventiell unscented-filtervariant (determine_orbit_sequential).
Observerbarhet & skattningsteori Ett allmänt, återanvändbart lager för Fisher-information / Cramér–Rao (src/fim.rs): informationsmatrisen M = HᵀWH, den nedre Cramér–Rao-gränsen, observerbarhets-rang och nollrum för datumdefekt (Moore–Penrose-pseudoinvers), och D/A/E/T-optimala skalärer för försöksplanering från en symmetrisk Jacobi-egenvärdeslösare. Validerad — egenvärden mot numpy.linalg.eigh, CRLB-kovariansen mot σ²(XᵀX)⁻¹ via numpy.linalg.inv, och GNSS-DOP från informationsmatrisen, alla matchade till 1e-9 (tests/fim_observability_reference.rs), och dessutom korskontrollerad mot de slutna gränserna av Kay (1993) med Monte Carlo-uppnående av CRLB. Den ligger till grund för DOP-motorn, CRLB för passiv geolokalisering och satsen om observerbarhet för absoluta månstationer (nedan).
Månen & månens närrymd En jord–måne-propagator för det cirkulära begränsade trekroppsproblemet (CR3BP) i det roterande systemet — bevarad Jacobi-konstant och alla fem Lagrange-punkter (src/cr3bp.rs) — nu med en tillståndsövergångsmatris (STM) på 6×6 och en enkelskjutande differentialkorrektor (cr3bp_jacobian, propagate_state_stm, differential_correct_halo) som ger genuint periodiska halo-/NRHO-banor (near-rectilinear halo orbit): STM:en är validerad mot finita differenser, korrigerade banor sluter till maskinprecision, och att utgå från det publicerade apolun-tillståndet återger L2 södra 9:2 NRHO (L2 = den andra jord–måne-Lagrange-punkten; Gateway-banan) vid period ≈ 6,57 d / perilun ≈ 3 250 km, i linje med de publicerade ≈ 6,56 d / ≈ 3 370 km (en CR3BP — cirkulär, solfri — lösning, inte validerad mot en verklig LANS (Lunar Augmented Navigation Service)/Gateway-efemerid; den selenocentriska MCI/MCMF-transformen (Moon-centred inertial / Moon-centred, Moon-fixed) av den korrigerade banan är en uppföljning); plus LunaNet / LNIS (LunaNet Interoperability Specification) cislunär PNT-geometri (MCI↔MCMF-reduktion, selenografiska koordinater) med en ARAIM-passage vid månens sydpol som ärligt visar integritetsgapet: en σ_URE (användarens avståndsfel) på ~30 m driver skyddsnivån långt över en larmgräns på 50 m (src/lunar.rs, scenarios/lunanet-araim.toml); och en DOP-förstärkning med ytbeacons (src/lunar_beacon.rs) som visar hur några inmätta ytbeacons för avståndsmätning ger de rader för siktlinje med låg elevation och bred azimut som en uppsättning enbart ovanför i bana saknar — vilket kollapsar den illa konditionerade GDOP vid sydpolen och, via en kvadratsummebudget för fel, den realiserade positionsnoggrannheten i meter (återanvänder den av gnss_lib_py validerade DOP-kärnan och den slutna formen för synlighet vid luftlös horisont; analysen av precisionsförsämringen är beskriven i arXiv:2607,06212).
Månens PNT-svit En svit för navigering vid månen och cislunärt lagd ovanpå CR3BP-kärnan, var och en en körbar kind: Lunar Coordinate Time (lunar-time-offset, src/lunar_time.rs — den sekulära LTC/TCL − TT-takten (LTC = Lunar Coordinate Time; TCL = dess franska form, Temps-Coordonnée Lunaire) från skillnaden i självpotential + rörelseterm, redovisad med det publicerade bandet 56–59 µs/dag); en geodetisk VLBI-fördröjningsobservabel för månen (very-long-baseline interferometry) (lunar-vlbi, src/lunar_vlbi.rs — en nära-fält-fördröjning + takt med skillnad mellan två avstånd längs en jordbaslinje, korskontrollerad mot plan-vågs-Δ-DOR (delta differential one-way ranging) i samma kodbas i fjärrfältsgränsen, partialer verifierade med finita differenser); en gemensam flerteknik-OD + klocka-batchestimator (lunar-joint-od-clock, src/lunar_combination.rs — en Gauss–Newton-anpassning som fusionerar VLBI + månlokala avstånd + avstånd mellan satelliter) med ett resultat om Fisher-informationsobserverbarhet: enbart internt avståndsmätning lämnar en stelkropps-datumdefekt med sex frihetsgrader, så en ytstations absoluta position är inte observerbar förrän en bindning till jordsystemet läggs till — en VLBI-fördröjning med jordbaslinje återställer observerbarheten för en gles konstellation och skärper Cramér–Rao-gränsen för en rik, där det absoluta datumet sluts vid tre icke-kollineära jordstationer (observerbarhetsresultatet är beskrivet i arXiv:2607,02566); realisering av referenssystem (lunar-frame-realisation, src/lunar_frame_realise.rs — en 7-parameters Helmert-datumanpassning + IAU 2015 WGCCRE-orienteringsbindning — WGCCRE = IAU:s arbetsgrupp för kartografiska koordinater och rotationselement); en analys av tjänstevolym i klass Moonlight/LCNS (LCNS = Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs — DOP / täckning / tillgänglighet + ett generaliserat ARAIM-HPL/VPL-hölje för månen (horisontell/vertikal skyddsnivå), som återanvänder den av gnss_lib_py validerade DOP-kärnan och LunaNet-maskineriet för σ_URE≈30 m); differentiell PNT för månen (lunar-differential-pnt, src/lunar_dpnt.rs — en månanalog till differentiell GNSS / satellitbaserat förstärkningssystem (SBAS): exakt gemensam klockkancellering + förstaordningens rumsliga dekorrelation mot baslinje, som återanvänder SBAS-skyddsnivån i DO-229E — DO-229E är RTCA:s (tidigare Radio Technical Commission for Aeronautics) minimikrav på driftprestanda för SBAS-mottagare); och en interoperabilitetsexport i linje med LunaNet/IOAG (IOAG = Interagency Operations Advisory Group; lunar-interop-export, src/lunar_interop.rs — CCSDS-OEM (Orbit Ephemeris Message) + rundtur mellan månens tidsskalor i IAU 2015:s månkroppssystem, inlindad i KIF-höljet). Evidensnivåer per del finns i verifieringsmatrisen: Lunar Coordinate Time, den gemensamma OD- + klockestimatorn, realiseringen av referenssystem och geometrin för tjänstevolymen är VALIDATED (var och en mot den oberoende referens som dess rad anger, liksom kärnvägen för VLBI-fördröjningen); VLBI-observabeln, resultatet om observerbarhet för datumdefekten, differentiell PNT och interoperabilitetsexporten är MODELLED. Parametrarna är illustrativa värden från offentliga källor — inte validerade mot verklig VLBI-/Gateway-spårning, inte knutna till eller stödda av någon myndighet, inget TRL-/arvsanspråk (technology readiness level).
PNT i djupa rymden och på Mars En öppen radiometrisk navigeringsmotor: iterativ ljustid + relativistisk Shapiro-fördröjning, två-/en-/trevägs Doppler & avstånd (Moyer tvåbens), koherenta transponderomvandlingsförhållanden, regenerativ/PN-avståndsmätning (pseudo-noise) (CCSDS 414, standarden för pseudobrusavståndsmätning), och Δ-DOR i himlaplanet (CCSDS 506, Delta-DOR-standarden), med medier för solplasma/tropo/iono; CCSDS-TDM (503) tolkning + utmatning av spårningsdatameddelanden; ett reducerat-dynamiskt kvadratrotsinformationsfilter (RTN — radiell, tvärgående, normal — empiriska accelerationer + en 3-tillstånds klocka ombord + atmosfärsmotstånd på Mars) som gör banbestämning kring Mars (LMO) till ≈ 0,2 m i en syntetisk sluten slinga; en gemensam estimator för envägs + tvåvägs fusion; en dynamikkärna för flera kroppar (Body{μ, re, zonals, gravity, IAU-pole}, Mars GMM-3 (Goddard Mars Model 3)-gravitation, ett IAU-kroppsfast Mars-system, en pluggbar EphemerisProvider-söm, tvådelade Julian-datum + TT↔TDB (Barycentric Dynamical Time)); och reläscenariot mars-pnt för PNT (en MARCONI areostationär relä-konstellation) med en GSE-prestandasimulator från början till slut (GSE = ground-support equipment) (geometri → länkbudget → observabler → SRIF → kovarians). Simuleringsvaliderad (kovarians / mått på sluten slinga); Sol-centrala Mars-dynamiken korskontrolleras mot JPL DE440 (137 m @ 1 dags båge, xval/anise-mars-od). Validering mot verkliga DSN/ESTRACK-spårningsdata finns på färdplanen.
Solsystemet och PNT för vilken kropp som helst En efemerid för hela solsystemet utan kernel (src/ephem.rs, src/ephem_provider.rs): varje planet från JPL:s keplerska Standish-element (tabell 1, 1800–2050 e.Kr.; tabellerna 2a/2b, 3000 f.Kr.–3000 e.Kr.) med varje plans publicerade nominella fel, jorden och månen delade av månserien, och Phobos, Deimos, Io, Europa, Ganymedes, Callisto och Titan från JPL:s medelelement och IAU:s (International Astronomical Union) rotationsmodell; vilken kropp som helst relativt vilken annan som helst i ICRF (International Celestial Reference Frame). Body bär nu GM (gravitationsparameter), radier, J2 (andra zonala harmoniska) där det är publicerat och IAU:s pol och nollmeridian för arton kroppar. Typen solar-system rapporterar positioner, hastigheter, konstanter, ljustid och envägs-/tvåvägsavstånd mellan två valfria kroppar (den befintliga radiometriska ljustidslösaren, med Shapiro-fördröjning från solen) och ett banspår per kropp — nog för att rita ett interaktivt solsystem; typen body-pnt placerar en orbiter eller en landare runt vilken kropp som helst (scenarios/mars-orbit-pnt.toml, scenarios/europa-surface-pnt.toml) med en lokal Walker-konstellation, maskineriet för precisionsförsämring och Gauss–Newton, och ett djuprymdsavstånd från jorden. Validerad mot JPL Horizons (DE441, JPL Development Ephemeris 441): Merkurius–Saturnus och jorden ur tabell 1 inom två gånger det nominella felet (värst 1,87×), alla åtta planeter ur tabellerna 2a/2b (värst 1,71×), och ljustiden jorden–Mars/Jupiter. Modellerade: Uranus och Neptunus ur tabell 1 (2,0× och 5,2× det angivna felet mot DE441), Pluto, månarna och navigeringsresultaten för body-pnt.
Sammanslagen MEO + LEO PNT src/leo_fusion/: systemoberoende LEO-positionering, -navigering och -tidssynkronisering över valfri konstellation (Walker-skal, elementuppsättningar, GNSS-förinställningar) och valfri signal (bärvåg, chipfrekvens, C/N0-envelopp, avståndsfel i signalrymden), med valfria förinställningar i en fil som anger sina källor (Xona Pulsar X1/X5, Iridium STL, Starlink-signaler av tillfälle, CentiSpace, ett representativt C-bandssystem, efemeridmodellen ATOMIC med nollklocka). leo-pvt: batch-Dopplerpositionering från avståndshastighet (en och flera satelliter, tillstånd för klockdrift och hastighet, geometri för en enskild överflygning längs och tvärs banan samt spegellösningen), gemensam GNSS + LEO viktad minstakvadratlösning med intersystembias per system och sigmavärden per signal som anges av anroparen, DOP mot antalet LEO-satelliter, täckning vid polerna och i Arktis samt LEO-tidsöverföring till UTC mot C/N0 och oscillatorn. leo-ppp: ett flytande PPP-EKF (precise point positioning, extended Kalman filter) med enbart GNSS och med LEO, dess konvergenstid och ett konsistenstest med chi-kvadrat-NEES. ntn-positioning: positionering med 5G icke-terrestriska nät utifrån Cramér–Rao-gränsen för bandbredden. Validerad: LEO-Dopplerenvelopen mot de publicerade siffrorna för Iridium och Xona. Modellerad: resten, med PPP-trenden jämförd mot Li m.fl. (2019) — se docs/LEO-PNT-FUSION.md.
Integritet RAIM av typen ögonblicksbild och lösningsseparation (ARAIM-liknande) — mottagarens autonoma integritetsövervakning — med horisontella och vertikala skyddsnivåer (HPL/VPL), feldetektering och -uteslutning samt integritetsdiagram av Stanford-typ; en skyddsnivå med uttrycklig integritetsriskbudget, multiple-hypothesis solution separation (MHSS), inklusive konstellationsomfattande felläge för dubbla och flera konstellationer (EU:s (Europeiska unionen) ARAIM / DO-316, RTCA:s prestandastandard för GPS-utrustning i luftfartyg med luftburen förstärkning), prövad på en verklig GPS + Galileo-ögonblicksbild (scenarios/araim-gps-galileo.toml). Skyddsnivån tillämpar den ensidiga projektionen av nominell bias b_k = Σ_i|s_i|·b_nom per felläge och integritetssigmat σ_URA (user range accuracy; skild från noggrannhetssigmat σ_URE, user range error) från Integrity Support Message — se docs/ARAIM_REFERENCE.md. Detektionskärnan (trösklarna för χ², icke-central χ² och normalfördelning samt K-multiplikatorerna) är externt validerad mot SciPy över 171 fall (tests/raim_reference.rs); geometrin återanvänder den DOP-kärna som validerats mot gnss_lib_py. Själva budgetfördelningen av ARAIM MHSS integritetsrisk saknar publicerad numerisk oberoende referens och förblir ärligt modellerad.
Förstärkning (SBAS) SBAS / WAAS skyddsnivåer (WAAS = Wide Area Augmentation System) i DO-229E:s viktade minstakvadratform (K-faktorer för precisionsinflygning och färd mellan flygplatser) och den jonosfärsfria L1/L5-kombinationen med dubbla frekvenser (L1 och L5 är två civila GPS-signalband; IS-GPS-705, GPS-gränssnittsspecifikationen för L5-signalen, γ₁₅ ≈ 1,793) som ligger till grund för DO-316 — src/sbas.rs. Skyddsnivåalgoritmen är externt validerad mot RTKLIB:s SBAS-PL-gren (RTKLIB = det öppna biblioteket för realtidskinematisk positionering; PL = skyddsnivå) (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, DO-229D — den föregående revisionen av DO-229 — bilaga J) körd på verkliga EGNOS-data (European Geostationary Navigation Overlay Service) och återger dess HPL med < 2e-3 m (tests/sbas_reference.rs); gLAB (GNSS Laboratory tool suite) v6.0.0 bekräftade samma konvention.
Klocka och tidssynkronisering Holdover med tvåtillstånds-Kalmanfilter (kovarians på Joseph-form, konsistenshälsa med NIS/NEES — normaliserad innovation i kvadrat / normaliserat skattningsfel i kvadrat); Allan-familjens stabilitet (ADEV / MDEV / TDEV / HDEV / MTIE — Allan-, modifierad Allan-, tids- och Hadamard-deviation samt maximalt tidsintervallfel) med konfidensintervall specifika för brustyp och en fullständig IEEE-1139-anpassning av potenslag med fem koefficienter (IEEE Std 1139, definitionerna av frekvens- och tidsmetrologi från Institute of Electrical and Electronics Engineers) — skattarna är validerade på verklig hårdvara mot Stable32: en verklig cesiumprimärnormal 5071A mot en vätemaser (556 990 fasprover, 16 medelvärdesbildningsfaktorer, OADEV/OHDEV — överlappande Allan- och Hadamard-deviation — till 1e-3; tests/cs5071a_reference.rs) och den kanoniska Stable32-regressionsserien PHASE.DAT (139 medelvärdesbildningsfaktorer, OADEV/MDEV/TDEV till 1e-3; tests/phasedat_reference.rs); skattarna för ADEV/MDEV/TDEV och telekommåttet för vandring MTIE är dessutom korskontrollerade mot det oberoende biblioteket allantools 2024,06 till < 1e-9 på serien NIST SP 1065 (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); geometriska korrektioner (Sagnac, GNSS common-view); samt de operativa överföringsmetoderna — TWSTFT (tvåvägs tids- och frekvensöverföring via satellit) med BIPM:s (Internationella byrån för vikter och mått) slutna form för Sagnac, GNSS common-view, PPP-tidsöverföring (precise point positioning) som är jonosfärsfri, en optisk länk i fria rymden med turbulensscintillation samt en tidsskala av klockensemble (pappersskala) med inversvarians som ligger under den bästa bidragande klockan. En kalkylator för klock-holdover utan GNSS (src/holdover.rs) visar tillväxten av glidfelet enligt van Loans slutna form som en inversion av holdover till tröskel — hur länge en klocka går fritt innan dess tidsfel överskrider budgeten — över representativa klassiska klockor och kvantklockor; modellerad (korskontrollerad mot den flerstegsrekursion för kovarians som clock_state använder) och ärlig med att holdover mot en snäv tröskel för en mycket stabil klocka bestäms av det antagna brusgolvet vid lång tau, inte av den citerade ADEV. En villkorad skyddsnivå för tid (src/tpl.rs) utvidgar holdover till spoofing: en gräns för det oupptäckta tidsfelet, givet en oberoende korskontroll, som sätter samman ett k-sigma-golv för övervakaren, van Loans glidfelsvarians över detektionsfördröjningen och en CUSUM-tid (kumulativ summa) till larm. Kalibrerad på en verklig inspelad spoofing (JammerTest 2024) och reproducerbar via cargo run --example tpl_jammertest; MODELLED sammansättning (ingen budget för integritetsrisk per timme), villkorad av detektion — det finns ingen ändlig ovillkorad gräns.
GNSS-mätdomänen Framåtriktad syntes av pseudoavstånd och Doppler med jonosfär av typen Klobuchar (utsänd) och IONEX / TEC-rutnät (IONosphere map EXchange format / total elektroninnehåll; uppmätt) — inklusive en IONEX-filtolkare, tidsinterpolering mellan kartor och mappningen av snett infall för tunt skal — troposfär av typen Saastamoinen + Niell samt RAIM för ögonblicksbild (HPL/VPL).
Resiliens Länkbudget för jamming (J/S → effektiv C/N₀ → låsförlust — jammer-till-signal-förhållande, bärvåg-till-brustäthet-förhållande — med spektralseparationsfaktorn mot störning Q som nu härleds ur de faktiska effektspektra för signal och jammer via src/navsignal.rs — Q = 1/(R_c·κ), korskontrollerad i CI mot den tidigare representativa konstanten); en stokastisk detektor för tids-spoofing (Neyman–Pearson / χ²₁-energitest med slutna former och Monte Carlo för P_fa/P_md samt ett kvalitetsmått (FoM) för säkerhet på 1 − P_md); och en flerskikts spoofing-detektor som slår ihop ett paritetstest för RAIM-konsistens (där den gemensamma blinda fläcken modelleras ärligt), en RF-övervakare av AGC-effekt (automatisk förstärkningsreglering) och en övervakare av signalkvalitet (SQM — signalkvalitetsövervakning, early-minus-late); samt en felbudget för kvantinertiell dödräkning (QuantumNavBudget, src/inertial/quantum_imu.rs) som sätter samman det vita bruset i hastighetsslumpvandringen hos interferometern med kalla atomer med kvarstående bias och skalfaktorfel (korskontrollerat mot den oberoende integratorn AccelModel) till ett mått på positionsdrift under holdover — inertialsensorns motsvarighet till klockans holdover. En ramverksanpassad motor för resiliensbedömning (src/resilience/) avbildar en arkitekturs simulerade beteende på delpoäng per dimension över Kshanas egna sju resilienskategorier (inte DHS:s termer), anpassade till US Department of Homeland Securitys Resilient PNT Conformance Framework, och studerar därefter beslutsstabiliteten hos varje enskild sammansatt poäng eller mognadsnivå under en Dirichlet-viktningssimplex och en ensemble med fem hot — Kendall-τ-rangordningens instabilitet, frekvensen av omkastningar av top-1-vinnaren, samt mångfaldskollaps med gemensamt läge (Hill-N2), med en integritetshashad försäkringsrapport (35 handhärledda tester mot oberoende referens). Reproducerbar via cargo run --example resilience_report; MODELLED syntetiska arkitekturer, en självbedömning anpassad till RPCF v2.0, inte en certifiering. Se docs/RESILIENCE-CROSSWALK.md.
Passiv RF-geolokalisering TDOA/FDOA-geolokalisering av sändare (ankomsttidsskillnad / ankomstfrekvensskillnad; src/geolocation.rs) — lokalisera en jammer eller spoofer (eller en tillfällig källa för omvänd PNT) utifrån hyperboloider av ankomsttidsskillnad över ett nät av mottagare, löst med Gauss–Newton minstakvadratmetod; när ankomstfrekvensskillnad läggs till med rörliga mottagare återskapas sändarens position och hastighet gemensamt, med Cramér–Rao-gränsen för positionskovariansen härledd ur nätets geometri. MODELLED (oberoende referenser för intern konsistens: rundturer framåt→inverst, identiteten J·CRLB = I, monotonicitet hos GDOP samt skattaren som når sin egen CRLB under Monte Carlo) — en punktkällemodell med fri sikt, utan termer för flervägsutbredning / NLOS (non-line-of-sight), mottagarens klockbias eller refraktion.
Navsignal och kodföljning Signalnivån mellan länkbudgeten och mätdomänen (src/navsignal.rs): effekttäthetsspektra (PSD) med enhetsarea för BPSK-R(n) (binär fasskift med rektangulära chip) och sinus-BOC(m,n) (binär offsetbärvåg); spektralseparationskoefficienten (SSC) κ = ∫ G_s·G_i df, som härleder störskyddet Q som jamming-modellen använder (Q = 1/(R_c·κ)) ur de faktiska signal- och jammerspektra i stället för en representativ konstant; RMS-bandbredden (Gabor) (BOC > BPSK — måttet på avståndsinformation / Cramér–Rao); den koherenta early–late-DLL-kodföljningens termiska bruspåverkan (DLL = delay-lock loop; Kaplan & Hegarty; ~under en meter för C/A — GPS:s grov-/förvärvskod — vid 45 dB-Hz); och flervägsfelets envelopp (koherent EML, early-minus-late — undertryckning med smal korrelator). Validerad mot slutna ankarvärden (BPSK självSSC = 2/(3·R_c), PSD med enhetsarea, C/A-jitter under en meter). Detta är analys av signal-prestanda, inte konstruktion av antenn- eller RF-nyttolastshårdvara (en nyttolastpartners roll).
Interoperabilitet RINEX-3-inläsning av utsända efemerider för flera GNSS (GPS, Galileo, QZSS — Japans Quasi-Zenith Satellite System —, BeiDou MEO/IGSO — medelhög jordbana / lutande geosynkron bana — via IS-GPS-200, GPS-gränssnittsspecifikationen; GLONASS, Rysslands Global Navigation Satellite System, via PZ-90 — det ryska datumet Parametry Zemli 1990 — tillståndsvektor RK4) som kan användas som konstellationskälla (RINEX in, PNT-geometri ut); en RINEX-3-tolkare för observationer (pseudoavstånd, bärvågsfas, Doppler, signalstyrka; observationslayouten 4,00 förväntas tolkas men är otestad, och RINEX 4-navigeringsfiler avvisas uttryckligen i stället för att avkodas fel) som nu matar en lösare för enpunktspositionering (SPP) (pvt) — verkliga kodobservationer in, en verklig mottagarposition ut, validerad på IGS-data; en läsare/skrivare för SP3-c/d-precisionsefemerider med Lagrange-interpolation av 9:e ordningen; och export av CCSDS OEM 2,0 + OMM (Orbit Mean-elements Message) för verktyg för flygdynamik (GMAT, Orekit, STK — Systems Tool Kit); samt tolkning och skrivning av CCSDS-TDM (503) (tracking data message) för radiometrisk spårning i djupa rymden.
Uppdragsanalys (systemteknik) Förstaordningsbudgetar för uppdragsutformning, var och en en körbar kind: tvåkroppars uppskjutnings- och uppstigningsgeometri (launch-window — uppskjutningsazimut sin Az = cos i/cos lat, minsta inklination, bonus från jordrotationen, Δv för planbyte med dogleg, dagliga tillfällen; src/launch.rs); en ballistisk återinträdeskorridor enligt Allen–Eggers (reentry — högsta retardation, hastighet och höjd vid högsta g, hastighet vid högsta uppvärmning; src/reentry.rs); täckningsgeometri för jordobservation (eo-coverage — svepbredd / GSD (ground sample distance) i nadir / åtkomst utanför nadir / återbesök via SMAD:s (Space Mission Analysis and Design) rymdtriangel; src/eo_payload.rs); en felbudget för attityd och pekning med 3 frihetsgrader (tre frihetsgrader; attitude-budget — värsta fall för gravitationsgradientmoment + RSS-budget (root-sum-square) för pekning; src/attitude_budget.rs); överflygningsprediktion för markstation (passes — AOS/TCA/LOS, signalförvärv / tidpunkt för närmaste passage / signalförlust, högsta elevation, åtkomsttid; src/passes.rs); och en enkelriktad länkbudget över länkekvationen i CCSDS 401 / DSN 810-005 (CCSDS:s standard för radiofrekvens och modulation / Deep Space Networks handbok för länkutformning; link-budget — FSPL (frirymdsdämpning), C/N₀, Eb/N₀ (energi per bit i förhållande till brustäthet), marginal, slutning; src/linkbudget.rs). MODELLED analytiska förstaordningsbudgetar — skiktet före hårdvara under STK/GMAT/Basilisk, inte en ersättning för 6-DoF eller radiometri.
Beslutsanalys och avvägning (MCDA) En fullständig svit för flerkriteriell beslutsanalys (MCDA) (src/mcda/) som spänner över alla fyra metodfamiljer — värdeaggregering (WSM, WPM, WASPAS — viktad summamodell, viktad produktmodell, weighted aggregated sum product assessment), avstånd till idealet (TOPSIS, Technique for Order of Preference by Similarity to Ideal Solution), kompromissprogrammering (VIKOR, från serbiskans term för flerkriteriell optimering och kompromisslösning) och överrankning (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I, från franskans term för eliminering och val som uttrycker verkligheten), samt kvotsystemet MOORA (Multi-Objective Optimization on the basis of Ratio Analysis) och proportionella COPRAS (Complex Proportional Assessment) — med AHP (Analytic Hierarchy Process) prioritetsviktning genom parvis jämförelse (konsistenskvot), en Pareto-front av icke-dominerade lösningar, viktkänslighetsanalys (sensitivity) och poängsättning av flerattributsnytta (utility). De nio aggregatorerna återger de oberoende tredjepartsbiblioteken pymcdm (WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II) och pyDecision (ELECTRE I, COPRAS) till < 1e-9, och AHP:s prioritetsvektor + konsistenskvot stämmer med Saatys tabell över slumpindex och SciPy/LAPACK:s egenvärdeslösare för huvudegenvektorn till < 1e-9 (tests/mcda_*_reference.rs). VALIDATED — beslutsskiktet under motorn för avvägningsstudier.
Rymdmiljö En miljömodell för rymdväder (space-weather, src/space_weather.rs): index för sol- (F10.7 / centrerat 81-dagars F10.7a — solens radioflöde vid 10,7 cm) och geomagnetisk (Kp, det planetära K-indexet, med den definitionsmässiga tabellen Kp↔ap — ap är dess linjära planetära amplitud) aktivitet, den exosfäriska temperaturen enligt Jacchia-1971 som de driver (validerad mot publicerade värden för solminimum, medel och maximum) samt den aktivitetskorrigerade jämfört med den statiska neutraltätheten i termosfären på höjd — det beroende av solcykeln hos tätheten som den statiska atmosfären USSA76 (US Standard Atmosphere 1976) utelämnar. MODELLED: en kalibrerad koppling av skalhöjd i första ordningen, inte en datavaliderad atmosfär av typen NRLMSISE (US Naval Research Laboratorys modell Mass Spectrometer and Incoherent Scatter Radar Exosphere).
Utvärdering och avvägning med maskininlärning En testbädd för utvärdering av detektion av RF-störningar (impairment-eval, src/impairment_eval.rs): ett märkt, parameterförankrat syntetiskt korpus (nominell / jamming / tids-spoofing / positions-spoofing / flervägsutbredning), en detektoroberoende ROC/AUC-svit (receiver operating characteristic / area under the curve) som poängsätter valfri detektor (energi | agc | sqm | paritet | sammanslagen) med Pd (detektionssannolikhet) per klass vid en målsatt Pfa (falsklarmssannolikhet) och optimismgapet mellan fördelning inom och utanför träningsfördelningen (läge för fördelningsskifte). Dessutom en avvägning mellan kvant och klassiskt PNT (quantum-trade, src/quantum_trade.rs) som kvantifierar en kandidatklockas nytta för holdover av tid och tröghet utifrån en uppmätt ADEV-kurva mot en klassisk baslinje, med förbehållet om golvet vid lång τ följt med artefakten och en envelopp för GNSS-nekad resiliens mot tid. Utvärderingsmåtten (AUC / förväxlingsmatris / Pd-Pmd, där Pmd är sannolikheten för missad detektion) är validerade till exakt överensstämmelse mot scikit-learn 1.9.0 — även på verklig telemetri från ESA OPS-SAT (datamängden OPSSAT-AD för anomalidetektion, Ruszczak m.fl. 2025, CC BY 4,0 — Creative Commons Attribution 4,0), där Kshanas ROC AUC enligt Mann–Whitney återger scikit-learns roc_auc_score till < 1e-9 på den undanhållna testdelen och en genomskinlig detektor som räknar toppar skiljer de märkta anomalierna vid AUC ≈ 0,85 (tests/opssat_ad_reference.rs) — och avvägningsmotorns numeriska kärnor (ADEV NNLS-anpassning — icke-negativ minsta kvadrat —, konsistensband för χ², van Loans klock-Q) mot scipy 1.17.1; de siffror för enheternas nytta som byggs ovanpå förblir MODELLED operativa karakteristika — aldrig fält- eller IQ-data (prover i fas och kvadratur), inget utlåtande om bra eller dåligt. Ovanpå testbädden poängsätter en djupare studie av optimismgapet (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) en panel med 13 detektorer (energi/AGC/SQM/paritet samt detektorer med seedad logistisk regression och MLP — multi-layer perceptron — med ett dolt lager), anpassar skalningslagar inom och utanför träningsfördelningen med en permutationsnollhypotes, och lär sig en leave-one-out-prediktor för försämring utanför träningsfördelningen utifrån statistik inom den (cargo run --example optimism_study). Ett frontend för mjukvarudefinierad mottagare (src/sdr.rs — rå IQ/IF (mellanfrekvens) → korrelatorernas early/prompt/late-uttag → SQM) och adaptrar för inläsning av verkliga data (src/realdata/ — RINEX, u-blox UBX (u-blox binära protokoll), GnssLogger, JammerTest, Yunnan, SatGrid) låter samma detektorer köras över inspelningar som tillhandahålls lokalt (inga datamängder checkas in). Karta över korsningspunkten mellan kvant och klassisk resiliens under parameterosäkerhet (src/crossover.rs; cargo run --bin crossover_study) återskapar studierna av tröghets- och klockkorsning bakom resultatfigurerna.
Demonstrator för kvantaktiverad PNT Tre körbara, MODELLED tillämpningsområden bakom den öppna motorn, var och en med ärlig TradeEvidence + en post om representativitet och återstående steg till flygning (src/representativeness.rs): betrodd kvanttidsöverföring (quantum-time-transfer, src/timetransfer_chain.rs — en optisk gitterklocka + fotonlänk från början till slut mot CSAC (atomklocka på chip) + RF-tvåvägsbudget, med en återanvänd skyddsnivå för tid, ett säkerhets-FoM för fördröjnings- och återuppspelningsattacker (1 − P_md) och anomalidetektion hos klockan + CUSUM-latens); GNSS-fri kvantnavigering (quantum-gnss-free-nav, src/quantum_nav_od.rs — en tröghetsglidning med interferometer med kalla atomer mot ett INS av navigeringsklass under ett GNSS-avbrott, ärlig med att accelerometerns bias utan extern positionsbestämning inte är observerbar så att felet ändå växer); och fel- och anomalidetektion i kvantsystem (quantum-anomaly-detect, src/quantum_faults.rs — en märkt felkatalog med ROC AUC med bootstrap-konfidensintervall från det externt validerade eval_stats och ett minsta detekterbart fel vid en fast falsklarmsfrekvens). Ett gemensamt bibliotek med felmodeller för kvantenheter (src/quantum_devices.rs) och en enhetlig avvägningssvit mellan kvant och klassiskt (src/qtrade.rs) ligger under dem. De validerade kärnor de vilar på (utvärderingsmått mot scikit-learn, avvägningskärnor mot scipy) återanvänds; de siffror för enheternas nytta som byggs ovanpå förblir MODELLED — illustrativa parametrar för enheter och länkar från offentliga källor, modellerar klassen, ingen TRL / flygarv / certifiering, inget stöd från någon myndighet.
Sparsam teknik och integritetspåverkan Ett perspektiv på ROI per täckning (avkastning på investering) (src/frugal.rs) — kostnad per enhet levererad täckning vid en arkitekturavvägning — och en avbildning av missad detektion → integritetspåverkan (src/integrity_impact.rs) som omvandlar en övervakares frekvens av missade detektioner till dess bidrag till integritetsrisken. MODELLED budgetar som beslutsstöd, additiva.
Utbyte av artefakter Kshana Interchange Format (KIF) (src/interchange.rs) — ett versionshanterat, självbeskrivande kuvert som omsluter ett scenarioresultat med dess kind, schemaversion och etiketter MODELLED/VALIDATED, så att en lagrad artefakt förblir självdokumenterande och äldre kuvert förblir läsbara framåtkompatibelt.

Varje förmåga kan nås som ett Rust-API, som ett körbart scenario kind, eller båda. Mognad per förmåga — validerad, körbar eller bibliotek — spåras i docs/CAPABILITY.md. En maskinkontrollerad verifieringsmatris (src/verification.rs) återger korsreferensen krav → modul → test → oberoende referens → status, med enhetstestade ärlighetsinvarianter som tillåter etiketten validerad endast där en oberoende extern referens ligger bakom den — och som registrerar de hårdvaru- och PA-förmågor (produktförsäkran) som Kshana medvetet inte tillhandahåller.

De fyra sensorpaketen, som de först publicerades (resultat)

Resultat#

Varje scenario jämför en kvantsensor med dess klassiska motsvarighet under ett GNSS-avbrott på ~1,8 h. Siffrorna är reproducerbara (scenario + seed + version).

Vad kvantsensorer ger när GNSS saknas, scenariot för klock-holdover: kvantklockan klarar 6600 s autonomi mot 2610 s för den klassiska, mycket lägre tidsfel och tillgänglighet på 100% mot 95,6%
Vad kvantsensorer ger när GNSS saknas — clock-holdover · seed 42 · ritad med motor 0.40.0, och varje figur ovan kontrolleras på nytt mot den aktuella motorn vid varje bygge av tests/published_figures_still_reproduce.rs · SVG

Fördelen beror på avbrottets längd och på vibrationer, med en uttrycklig brytpunkt där den klassiska vinner — visad ärligt över stegen i teknikmognad (siffrorna för optiska klockor är mål för markdemonstratorer; ingen optisk strontiumklocka har flugit):

Korsning mellan kvant och klassisk klock-holdover över stegen i teknikmognad, med konfidensband
Värmekarta över kvantens mot den klassiska tröghetsfördelen över avbrottets längd och vibration, med en brytpunktskontur där den klassiska vinner
Korsning mellan kvant och klassisk resiliens — TRL-stege för klock-holdover (överst) · karta över tröghetsfördelen med brytpunktskontur (nederst). Kan återskapas via cargo run --release --bin crossover_study.

Tröghetsdödräkning: positionsfel under ett GNSS-avbrott — kvantsensorn (kalla atomer) håller sig nära specifikationslinjen medan sensorn av navigeringsklass divergerar till tiotals kilometer
Positionsfel vid dödräkning under ett GNSS-avbrott: kvantsensorn (blå) håller sig plan nära specifikationen; den klassiska sensorn (röd) divergerar till tiotals kilometer. Genererad av Kshana från scenarios/imu-deadreckoning.toml.

Paket Scenario Kvant Klassisk
1 — Klock-holdover clock-holdover.toml (20 ns specifikation) den optiska klockan klarar hela avbrottet CSAC överskrider specifikationen mitt i avbrottet
2 — Tröghetsdödräkning imu-deadreckoning.toml (100 m specifikation) kalla atomer: ~41 m, klarar hela avbrottet navigeringsklass: överskrider efter ~350 s → tiotals km
3 — Tidsöverföring (optisk länk mellan satelliter) timetransfer.toml optisk: ~0,3 mm avståndsmätning RF (TWSTFT): ~150 mm avståndsmätning
4 — Hybridfusion (slutsten) hybrid-pnt.toml full position och tid under hela avbrottet positionsbegränsad vid ~350 s

Slutstenen visar fusionstesen: optisk tidsöverföring mellan satelliter håller även en klassisk klocka låst, vilket isolerar tröghetssensorn som den klassiska sviten svagaste länk — alltså kvanttröghet och optisk tidssynkronisering tillsammans.

Klock-holdover: fasfel under ett GNSS-avbrott — den optiska klockan håller sig inom specifikationen på 20 ns under hela avbrottet medan klockan på chip överskrider den mitt i avbrottet
Klock-holdover genom ett GNSS-bortfall: den optiska klockan (blå) håller sig inom specifikationen på 20 ns under hela glidflygningen; chip-skaleklockan (röd) överskrider den en bit in. Genererad av Kshana från scenarios/clock-holdover.toml.

Ett ytterligare scenario, orbit-gnss-challenged.toml, härleder GNSS-tillgängligheten ur banans geometri i stället för ur handskrivna fönster: en rymdfarkost inom GNSS-skalet propageras mot en GPS-liknande Walker-konstellation, och antalet synliga satelliter (siktlinje, jordens skymning, elevationsmask) avgör positionsbestämningens tillstånd i varje steg. Under ett dygn har användaren positionsbestämning endast ~59% av tiden; kvantklockan håller en tidslösning på 5 ns genom varje lucka (tillgänglighet 1.0), chip-skaleklockan endast ~0.83.

Orbit GNSS-challenged: klockans tidsfel under ett dygn för en rymdfarkost inom GNSS-skalet, där täckningsluckorna härleds ur banans geometri; den optiska klockan håller sig inom specifikationen på 5 ns över luckorna medan chip-skaleklockan överskrider den
Tidsfel under ett dygn med GNSS-tillgänglighet härledd ur banans geometri: antalet synliga satelliter (siktlinje, jordens skymning, elevationsmask) avgör positionsbestämningens tillstånd i varje steg, så klockan måste glida genom varje lucka; den optiska klockan håller specifikationen på 5 ns medan chip-skaleklockan överskrider den. Genererad av Kshana från scenarios/orbit-gnss-challenged.toml.

Konstellationen kan också anges som verkliga tvåradiga elementmängder (TLE). En fullständig TLE (rad 1 + rad 2) propageras med hela modellen SGP4/SDP4, inklusive atmosfärisk bromsning och de djuprymdsrelaterade sol- och månperturbationerna samt resonanstermerna på 12 h / 24 h som är viktiga för GNSS-banor på ~12 h, och är kontrollerad mot de officiella AIAA 2006-6753-vektorerna till ett värsta fall på ≈ 4 mm. scenarios/orbit-sgp4-gps.toml levereras med en verklig Celestrak-ögonblicksbild gps-ops av den operativa GPS-konstellationen (2021-07-28, 30 satelliter) och kräver giltiga TLE-kontrollsummor; tvåradiga elementmängder är öppna data från katalogen hos US Space Force / 18th Space Defense Squadron, vidaredistribuerade av Celestrak (Dr T. S. Kelso, celestrak.org); uppdatera med scripts/fetch_tles.sh. Ett block med enbart rad 2 behåller den analytiska tvåkroppspropageringen (scenarios/orbit-real-tle.toml); de två formerna kan blandas i en och samma konstellation. En konstellation kan lika gärna byggas av ett block med RINEX-3 GPS-sändningsefemerider, formatet som en mottagare avkodar, propagerade med användaralgoritmen i IS-GPS-200 och matade genom samma geometri (scenarios/orbit-rinex.toml).

Vad det är och inte är, i sin helhet

Vad det är och inte är#

Det är: en deterministisk motor med få beroenden som täcker hela PNT-kedjan: banans geometri, tröghetsnavigering, GNSS/INS-fusion, integritet, klockor och tidssynkronisering. Den kör ett scenario (ofta ett GNSS-bortfall), låter kalibrerade sensorfelmodeller utvecklas genom lämplig estimator och poängsätter resultatet mot de operativa kvalitetsmåtten, och ger ett reproducerbart JSON-resultat (JavaScript Object Notation) och ett SVG-diagram, från ett Rust-bibliotek, ett kommandoradsgränssnitt (CLI), ett Python-tillägg, en WebAssembly-modul i webbläsaren, en MCP-server (Model Context Protocol) för AI-agenter eller ett insticksprogram för JetBrains IDE (integrerad utvecklingsmiljö).

Det är inte: flygmaskinvara, en design av en kvantnyttolast, en fullständig GNSS-signalmottagare, en radiofrekvenssimulator (RF) eller en hardware-in-the-loop-rigg, eller en certifierad flygelektronikprodukt, och det ersätter inte MATLAB/Simulink, STK (Systems Tool Kit) eller Orekit; det står bredvid dem och utbyter filer med dem. Kvantmaskinvarans återgivning kommer från publicerade felmodeller, inte från det här verktyget. Varje förmågas detaljerade mognad finns dokumenterad i docs/CAPABILITY.md.

Det är inte (ännu): en fullständig fysikmotor för atominterferometri (de flesta kvantsensorer använder publicerade Allan-/brusbudgetkoefficienter; CAI-accelerometern (kall-atom-interferometer) har ett skikt från första principer, med Mach–Zehnder-fas, projektionsbrus, kontrastavtagande och vibrationskoppling samt Coriolis- och ljusskiftssystematik, men vågfrontssystematik och upplösning av fransosäkerhet återstår som ett färdplansskikt i P2 (färdplansfas 2, kvantfysikskiktet), se ROADMAP.md och docs/QUANTUM-MODELS.md); en certifierad eller maskinvarubaserad GNSS-mottagare (den löser en enpunkts-PVT-positionsbestämning (position, hastighet och tid) från verkliga RINEX-kodobservationer (Receiver Independent Exchange Format), kontrollerad mot verkliga IGS-data (International GNSS Service), och dess IQ-skikt (kshana iq, sedan 0.31.0) fångar upp och följer inspelade eller genererade basbandssampel i programvara, som en analysmottagare: den styr ingen radiomaskinvara och sänder ingenting, är inte en certifierad mottagare och gör ingen bärvågsfasbaserad positionsbestämning (RTK eller PPP)); eller en fullständig programvarusvit för uppdragsdesign (den har byggstenar för Lambert, porkchop, manövrar och banbestämning, men är prestandasimuleringsskiktet ovanför GMAT (General Mission Analysis Tool)/Orekit, inte en ersättning). Att äga den avgränsningen är ett medvetet val. Om du behöver felbudgetar för kall-atom-interferometer från första principer (till exempel av CARIOQA-PMP-klass, Cold Atom Rubidium Interferometry in Orbit for Quantum Accelerometry, Pathfinder Mission Preparation, eller validering i stil med X-37B), se färdplanen för P2 och ta kontakt för samarbete.

Navigering i låg omloppsbana#

Satelliter i låg omloppsbana (LEO) passerar snabbt och bullrigt. Typen leo-pnt-chain följer ett system genom varje steg: signalen, passet och dess länk, navigeringsmeddelandet samt den sammanslagna positionsbestämningen av position, hastighet och tid (PVT) och precis punktpositionering (PPP). Varje steg lämnar sina tal vidare till nästa. Se docs/LEO-PNT.md.

LEO-PNT-kedjan från en verklig körning av leo-pnt-chain (leo-pnt-end-to-end.toml): signalsteget (generic-l vid 1191,795 MHz, pilot följd vid 10,23 Mchip/s) lämnar över till passteget (1080 km, följd C/N0-topp 58,2 dB-Hz), som lämnar över till navigeringsmeddelandet (kepler-rac, passning på 300 s, representations-SISRE 0,91 mm RMS, 0,250 m med banbestämning), som matar den sammanslagna positionsbestämningen (enbart GNSS 1,60 m RMS 3D, GNSS plus LEO 0,43 m) och precis punktpositionering (konvergens 11,5 min enbart GNSS, 7,5 min med 240 LEO-satelliter). 11 värden lämnas över mellan stegen.LEO-PNT-kedjan från en verklig körning av leo-pnt-chain (leo-pnt-end-to-end.toml): signalsteget (generic-l vid 1191,795 MHz, pilot följd vid 10,23 Mchip/s) lämnar över till passteget (1080 km, följd C/N0-topp 58,2 dB-Hz), som lämnar över till navigeringsmeddelandet (kepler-rac, passning på 300 s, representations-SISRE 0,91 mm RMS, 0,250 m med banbestämning), som matar den sammanslagna positionsbestämningen (enbart GNSS 1,60 m RMS 3D, GNSS plus LEO 0,43 m) och precis punktpositionering (konvergens 11,5 min enbart GNSS, 7,5 min med 240 LEO-satelliter). 11 värden lämnas över mellan stegen.

Varje scenariotyp efter familj#

Motorns scenariotyper, ordnade i familjer. Varje familj har en sida med en post per typ (motorns beskrivning och fält, ett exempelkommando, nyckeltal från en körning, raderna i verifieringsmatrisen som nämner den och diagrammet som motorn själv skriver) och ett kontaktark med dessa diagram; docs/KINDS.md indexerar dem alla. Tabellen skrivs av tools/gen_readme_blocks.py och sidorna av tools/gen_kinds_index.py, och båda misslyckas om motorn får en typ som ingen familj nämner.

Familj Vad den besvarar Slag Kör en
Klockor, tidssynkronisering och holdover hur länge en klocka håller tiden utan GNSS, och hur ett tidssynkroniseringssystem klarar sina masker clock, sweep, sweep-nd, telecom-timing, slot-timing, timetransfer, time-transfer-budget, holdover-test, quantum-time-transfer kshana scenarios/clock-holdover.toml
Tröghets-, fusions- och kvantsensorer dödräkning och sensorfusion genom ett GNSS-bortfall, med klassiska sensorer och kvantsensorer 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 utan GPS navigering utifrån gravitation, terräng och andra fält när GNSS är borta gravity-map, terrain-nav, terrain-slam, combined-altpnt, conflict-resilience kshana scenarios/combined-altpnt.toml
Konstellationer, täckning och geometri var satelliterna finns, vem som ser dem och hur bra geometrin är, runt jorden, månen eller Mars orbit, ephemeris, constellation-design, solar-system, body-pnt, mars-pnt, passes kshana scenarios/orbit-gnss-challenged.toml
GNSS-mätningar, positionering och integritet pseudoavstånd, positionsbestämningar, skyddsnivåer och rymdmiljön integrity, gnss-sim, pvt, araim-reference-check, space-weather, realtime-frame-eop kshana scenarios/integrity-raim.toml
Jamming, spoofing och spektrum hur störning når en mottagare och om den upptäcks jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval kshana scenarios/jamming-demo.toml
Navigering i låg omloppsbana en passage, en länk, ett navigeringsmeddelande och en fusionerad positionsbestämning, steg för steg 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 och månens närrymd navigering, tid, referenssystem och geodesi vid 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
Navigering för rymdanvändare GNSS-signaler för rymdfarkoster ovanför, runt och bortom GNSS-banorna gnss-ssv kshana scenarios/gnss-ssv-shell.toml
Optisk PNT optiska länkar genom atmosfären och kvalitetsmått för optik plus RF optical-atmosphere, hybrid-optical-rf kshana scenarios/optical-atmosphere-network.toml
Uppdragsanalys, länkar och rymdoperationer uppskjutning, uppstigning, återinträde, attityd, länkar, kontaktplanering och filformat 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
Uppdragsflöden felbudgeten för navigering och tidssynkronisering för en kedja av faser från uppskjutning till återinträde mission-thread kshana scenarios/mission-thread-artemis-class.toml
Kampanjer kedjade uppdrag, svep och ensembler byggda av de andra typerna campaign kshana scenarios/campaign-jam-spoof-holdover-integrity.toml

Varje kommando#

kshana <scenario.toml> kör ett scenario; varje annat kommando är ett underkommando, och kshana --help skriver ut användningen av dem alla. Kommandona är --study, --validate, kinds, example, receiver-trust (med live och 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 och skyline. docs/COMMANDS.md anger varje kommandos syfte, ett verifierat exempel och dess dokumentationssida.

Varje yta#

En motor, samma resultat överallt: kommandoraden, Rust-biblioteket, Python, JavaScript och WebAssembly, MCP-servern med sina plugin-kommandon och färdigheter, Kshana Studio (varje sida körs i webbläsaren, ingen installation, ingenting laddas upp), integrationerna med ROS 2, Signal K, OpenCPN, GNSS-SDR och gnss_lib_py, driftsättningspaketen för systemd, Docker och Grafana samt JetBrains-insticksprogrammet. docs/ALL-SURFACES.md listar dem med hur man får tag i var och en och namnen på alla plugin-kommandon, färdigheter och Studio-sidor; docs/SURFACES.md anger, för varje kommando och typ, vilken yta som bär det och vilka som inte gör det, med skälet.

Så fungerar en körning#

Ett scenario är en TOML-fil (Tom's Obvious, Minimal Language): en typ, ett frö och parametrarna. Motorn kör den och skriver resultatet, ett diagram och en rapport bredvid den, samt de exporter du ber om.

Så flödar en körning. En scenario-TOML-fil (en typ, ett frö och dess parametrar) går in i motorn, kshana 0.40.0, genom api::run_toml-anropet över 92 scenariotyper, deterministiskt utifrån scenario, frö och motorversion. Motorn skriver result.json, chart.svg, report.html och report.json, en table.csv för de typer som definierar en, och på begäran exporter i SP3, CCSDS OMM och OEM, CZML, KML, GeoJSON, STK och SigMF; en svit skriver study.json och study.html. Dessa filer matar Kshana Studio i webbläsaren, en AI-assistent via servern kshana-mcp och kontinuerlig integration.Så flödar en körning. En scenario-TOML-fil (en typ, ett frö och dess parametrar) går in i motorn, kshana 0.40.0, genom api::run_toml-anropet över 92 scenariotyper, deterministiskt utifrån scenario, frö och motorversion. Motorn skriver result.json, chart.svg, report.html och report.json, en table.csv för de typer som definierar en, och på begäran exporter i SP3, CCSDS OMM och OEM, CZML, KML, GeoJSON, STK och SigMF; en svit skriver study.json och study.html. Dessa filer matar Kshana Studio i webbläsaren, en AI-assistent via servern kshana-mcp och kontinuerlig integration.

Det här medföljande scenariot pågår i 2 h: 10 min med GNSS, därefter cirka 1,8 h med GNSS nekat. Det frågar hur länge en optisk strontiumgitterklocka och en atomklocka i chip-skala (CSAC) vardera håller tiden inom 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 optiska klockan håller budgeten på 20 ns under hela bortfallet på 6600 s; CSAC håller den i 2610 s och ligger inom budgeten under 95,6% av körningen, mot 100% för den optiska klockan. kshana example listar varje medföljande scenario.

Uppdrag#

Tio sektorer ställer tio olika frågor till samma motor. Var och en har medföljande scenarier att börja med.

Sektor Börja med
Försvar och säkerhet campaign-jam-spoof-holdover-integrity, spoof-meaconing
Rymden, jordens omloppsbana orbit-gnss-challenged, leo-pnt-end-to-end
Månen, Mars och djupa rymden lunar-relay-constellation, mars-orbit-pnt
Flyg och drönare small-uas-jammed-nav, araim-gps-galileo
Sjöfart maritime-strait-jamming, maritime-port-approach-coast
Väg automotive-urban-canyon
Järnväg rail-tunnel-coast
Kritisk infrastruktur och tidssynkronisering clock-holdover, clock-ensemble
Telekom och 5G (den femte generationen av mobilnät) telecom-prtc-holdover-24h, leo-vertical-5g-network-timing
Vetenskap och forskning sweep-clock-stability, quantum-pnt-demonstrator.suite
Frågan som varje sektor ställer
Sektor Frågan den ställer Börja med
Försvar och säkerhet Hur länge förblir vår navigering och tidssynkronisering tillförlitliga under jamming och spoofing, och vilka skikt håller oss inom specifikationen? campaign-jam-spoof-holdover-integrity, spoof-meaconing
Rymden: jordens omloppsbana Ser min rymdfarkost tillräckligt många navigeringssatelliter, hur länge håller dess klocka tiden mellan positionsbestämningarna, och vad skulle ett navigeringsskikt i låg omloppsbana tillföra? orbit-gnss-challenged, leo-pnt-end-to-end
Månen och djupa rymden Får en landare, rover eller omloppsfarkost vid månen, vid Mars eller längre ut en tillförlitlig position och tid? lunar-relay-constellation, mars-orbit-pnt
Flyg och drönare När en jammer tar bort GNSS, hur länge håller sig mitt obemannade luftfartygssystem (UAS) inom sin positionsbudget, och finns integritet tillgänglig längs min rutt? small-uas-jammed-nav, araim-gps-galileo
Sjöfart Hur långt ut över vattnet når en jammer, skulle en positionsförskjutning fångas upp, och hur länge kan ett fartyg glida in mot hamn? maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast
Väg och fordon Hur långt driver en bil under en viadukt eller förbi en jammer vid vägkanten? automotive-urban-canyon
Järnväg Hur många sekunder in i en tunnel kan ett tåg fortfarande avgöra vilket spår det befinner sig på? rail-tunnel-coast
Kritisk infrastruktur och tidssynkronisering Om GNSS-tiden går förlorad eller förfalskas, hur länge behåller ett elnät, en handelsplats eller ett datacenter spårbar tid? clock-holdover, clock-ensemble
Telekom och 5G Om GNSS-tidsreferensen går förlorad, håller sig mitt nätverks klocka inom ITU-T-maskerna, och hur länge? telecom-prtc-holdover-24h, leo-vertical-5g-network-timing
Vetenskap och forskning Kan jag reproducera, utöka och citera ett PNT-resultat, ända ned till fröet? sweep-clock-stability, quantum-pnt-demonstrator.suite

Evidens#

SGP4 kontrollerad mot alla 666 referensvektorer i AIAA 2006-6753, största positionsfel 4,12 mm

176 av 401 förmågor validerade mot oberoende externa referenser; 221 ärligt märkta som modellerade. Varje rad i verifieringsmatrisen namnger en förmåga, den oberoende referens den kontrolleras mot, testet som kör kontrollen och etiketten som följer. Kontinuerlig integration (CI) gör det omöjligt att kalla en förmåga VALIDATED utan en oberoende extern referens.

Hur en förmåga förtjänar sin etikett. Varje rad i verifieringsmatrisen namnger en förmåga, den oberoende referens den kontrolleras mot, testet som kör kontrollen i kontinuerlig integration och etiketten som följer. En rad får vara VALIDATED bara med en oberoende extern referens; annars är den MODELLED, eller PARTNER när en hårdvarupartner äger den. Exempel: SGP4/SDP4, Cowell 6-DOF + störningar, batch-/sekventiell banbestämning, oberoende referens AIAA 2006-6753 SGP4-verifieringsvektorer, test tests/sgp4_verification.rs, etikett VALIDATED. Aktuella antal: 176 VALIDATED, 221 MODELLED, 4 PARTNER av 401 rader. Sammanlagt 176 förmågor validerade mot oberoende externa referenser; 221 till är ärligt märkta MODELLED och 4 ägs av PARTNER.Hur en förmåga förtjänar sin etikett. Varje rad i verifieringsmatrisen namnger en förmåga, den oberoende referens den kontrolleras mot, testet som kör kontrollen i kontinuerlig integration och etiketten som följer. En rad får vara VALIDATED bara med en oberoende extern referens; annars är den MODELLED, eller PARTNER när en hårdvarupartner äger den. Exempel: SGP4/SDP4, Cowell 6-DOF + störningar, batch-/sekventiell banbestämning, oberoende referens AIAA 2006-6753 SGP4-verifieringsvektorer, test tests/sgp4_verification.rs, etikett VALIDATED. Aktuella antal: 176 VALIDATED, 221 MODELLED, 4 PARTNER av 401 rader. Sammanlagt 176 förmågor validerade mot oberoende externa referenser; 221 till är ärligt märkta MODELLED och 4 ägs av PARTNER.
Etikett Rader Betydelse
VALIDATED 176 en oberoende extern referens stämmer: verkliga data, en oberoende implementation eller publicerade referensvektorer
MODELLED 221 kontrollerad mot analytisk sanning eller simuleringens inre konsistens, och uttalad öppet
PARTNER 4 ägs av en maskinvarupartner; Kshana har ingen referens för den

Några av kontrollerna: alla 666 vektorer för AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 SGP4 (Simplified General Perturbations 4) till 4,12 mm; Cowell-kraftmodellen till 0,08 m mot Orekit 12,2; Galileo till 0,61 m och Swarm-A till 0,10 m mot verkliga precisa efemerider från Europeiska rymdorganisationen (ESA). Testerna håller nära 95 % radtäckning av src/, med spärr vid 85 % i CI. Registret är docs/VERIFICATION-MATRIX.md, genererat från src/verification.rs: den fullständiga matrisen med 401 rader, och varför varje modellerad rad saknar extern oberoende referens i docs/MODELLED-RATIONALE.md.

Hur validering fungerar, den utvalda höjdpunktstabellen och evidensfigurerna

Validering, reproducerbarhet och ärlighet#

  • Varje brusterm är kalibrerad mot ett publicerat, citerat värde och kontrollerad mot den vedertagna relationen (Allan-deviation för klockor; Groves felväxt vid dödräkning för tröghet; omvandlingen från tidssynkronisering till avståndsmätning för tidsöverföring). Status per term förs i docs/VALIDATION.md som validated eller not modeled: ingenting presenteras som validerat som inte är det.
  • Reproducerbart genom konstruktion: scenario + seed + engine version → identical bits. scripts/check-reproducible.sh upprätthåller det; kvantkörningar och klassiska körningar använder oberoende frön så att deras brus är okorrelerat.
  • Mognaden anges ärligt: siffror för optiska klockor och optiska länkar är mål- eller markdemonstratorresultat, inte flugna.

Evidensetiketten på varje siffra#

Varje siffra och tabell som en körning skriver anger hur långt den kan litas på, och vilka registerrader det vilar på. Resultat-JSON har en nyckel evidence, diagrammets SVG en rad under diagrammet (och ett element <metadata id="kshana-evidence">), och CSV-tabellen # evidence: kommentarsrader först (läs med comment='#'). Den namnger en nivå, VALIDATED, MODELLED eller PARTNER, och id:na (VM- och åtta hexsiffror) för de rader i verifieringsmatrisen som körningen använde. Nivån är den svagaste av de raderna, så en körning som stöder sig på en modellerad rad märks MODELLED oavsett hur många validerade rader som finns bredvid; etiketten kan aldrig hävda mer än registret. Rader, statusar och id:n läses från matrisen, inte inskrivna (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), och tests/evidence_labels_doc_sync.rs misslyckas om en siffra saknar etikett eller en etikett avviker från matrisen.

Validering i korthet#

Varje rad upprätthålls av ett namngivet test i CI. Den här tabellen är ett kuraterat urval; den fullständiga maskinkontrollerade matrisen är 401 rader — 176 VALIDATED, 221 MODELLED, 4 PARTNER (src/verification.rs), med den fullständiga evidensen (och vad som ärligt talat inte ännu är validerat) i docs/VALIDATION.md och artefakten kshana-validation-summary.html för varje utgåva (genererad av cargo run --bin validation_report, SLSA-attesterad — Supply-chain Levels for Software Artifacts).

Kolumnen Status anger vilken sorts evidens det rör sig om, i enlighet med valideringsstegen ovan: VALIDATED = kontrollerad mot en oberoende extern referens (verkliga data, ett oberoende bibliotek eller publicerade referensvektorer); MODELLED = kontrollerad mot analytisk sanning eller simuleringens inre konsistens (ingen oberoende extern datamängd). VALIDATED beskriver metoden för kontrollen, inte ett godkänt/underkänt-utfall: ett ärligt bom mot en verklig extern referens förblir VALIDATED, medan en jämförelse som ingen matrisrad anger som referens (LRO-passningen, Lunar Reconnaissance Orbiter, ovan) visas som MODELLED. Raderna för CI är processkontroller, inte kvalitetsmått. Några öar med verkliga data (den uppmätta cesiumklockan, Stable32 PHASE.DAT samt kontrollerna mot OPS-SAT/ICGEM där råindata saknar licens för vidaredistribution) är datastyrda: testet skriver ut ett hoppa-över-meddelande och förblir grönt när indata saknas, och de offentliga referenstalen finns incheckade under tests/fixtures/. Återskapa råindata med motsvarande scripts/fetch_*.sh.

Status Förmåga Samstämmighet Referens / oberoende referens
VALIDATED SGP4/SDP4-propagering 666/666 vektorer, värsta fall 4,12 mm AIAA 2006-6753 (Vallado tcppver.out) + direkt jämförelse med den oberoende cratet sgp4
VALIDATED Referenssystem: IAU 2000A/B-nutation, IAU 2006/2000A CIO-kedjan, ERA bit för bit (X,Y till 1e-14, s till 1e-18, ERA till 1e-12) ERFA/SOFA eraXys06a · eraC2ixys · eraEra00 · eraNut00a/b
MODELLED GCRS→ITRS mot en oberoende SPICE-motor max 0.028″ → ≤ 0,86 m på marken, ≤ 3,6 m i GNSS-bana ANISE (ren Rust, NAIF/SPICE), samma IERS-finals2000A-EOP, 8 epoker 2020–2023 (jämförd mot den här referensen; ingen rad i verifieringsmatrisen anger den som extern referens, så den är inte märkt VALIDATED)
MODELLED EGM2008-geopotential (grad/ordning 70) acceleration = ∇V till < 1e-6; zonal kollaps till validerad J2 NGA EGM2008-koefficienter + analytisk ∇V-identitet
VALIDATED Syntes av gravitationsfunktionaler (gravitationsstödd / GNSS-fri navigeringskarta) GRS80 Somigliana + γ_e/γ_p till 3.5e-12; verklig EGM2008-störningskarta fysikaliskt rimlig (RMS ≈ 26 mGal, g/o 70) GRS80 (Moritz 1980, IAG, International Association of Geodesy) Somigliana normalgravitation + verklig ICGEM EGM2008 (tests/icgem_gravity_reference.rs)
VALIDATED Allan-estimatorer (ADEV/MDEV/TDEV/HDEV) + konfidensband återskapar referensdeviationer; χ²-banden stämmer NIST SP 1065 (Riley), 1000-punkts Tabell 31/32
VALIDATED Allan-estimatorer på en verklig uppmätt cesiumklocka OADEV/OHDEV till 1e-3 (observerat ≤ 3e-5), 16 medelvärdesfaktorer Stable32 på en verklig 5071A Cs mot H-maser, 556 990 punkter (tests/cs5071a_reference.rs, datastyrd)
VALIDATED Allan-estimatorer på den kanoniska Stable32 PHASE.DAT OADEV/MDEV/TDEV till 1e-3 (observerat ≤ 5e-5), 139 medelvärdesfaktorer Stable32-referensdeviationer för PHASE.DAT (tests/phasedat_reference.rs, datastyrd)
MODELLED IMU-felmodell: ARW / VRW / biasinstabilitet återskapad till < 5 % (biasinstabilitet < 15 %) Analog Devices ADIS16465-datablad; NaveGo-referensprofil
VALIDATED Numerisk Cowell-propagator + kraftmodell (konservativa nivåer) största positionsfel 0,08 m över 24 h, 278 epoker (LEO + GTO) Orekit 12,2 NumericalPropagator/DormandPrince853 (CS GROUP), tests/numerical_cowell_propagator_reference.rs
MODELLED Cowell-bromsningsnivå + absoluta indata för sol-/månefemerider och densitet bromsningsnivån karaktäriserad ≈ 333 m / 24 h; den opåverkade stämmer med Kepler med universella variabler under en meter, energi/rörelsemängd ~1e-9 inbyggd efemerid med låg precision + analytisk Kepler
MODELLED Lambert · Tsiolkovskij · porkchop tur och retur till tvåkroppssanningen; ΔV < 0.01 % Izzo 2015 · raketekvationen · analytiskt Hohmann-golv
MODELLED Banbestämning (Gauss–Newton-batch) under en meter / mm·s⁻¹ utan brus; ~2 m vid ett brusgolv på 5 m tvåkropp + J2 över en RK4-båge
MODELLED Kraftmodellsanpassning mot Galileos precisa efemerid (hela bågen) 0,61 m 3D-RMS, 24 h, g/o-70, endast kraft ESA/ESOC ESA0MGNFIN slutlig bana (E11), verkliga finals2000A-EOP (jämförd mot den här referensen; ingen rad i verifieringsmatrisen anger den som extern referens, så den är inte märkt VALIDATED)
MODELLED Kraftmodellsanpassning mot Swarm-A:s precisa efemerid (reducerat dynamisk) 0,10 m 3D-RMS (gräns för den empiriska nivån, inte ett mått) ESA SW_OPER_SP3ACOM_2_ precis bana (jämförd mot den här referensen; ingen rad i verifieringsmatrisen anger den som extern referens, så den är inte märkt VALIDATED)
MODELLED Kraftmodellsanpassning mot LRO vid månen (ärligt bom) 6,67 m reducerat dynamisk, över målet på 5 m JPL Horizons LRO (NAIF −85) + GRAIL (Gravity Recovery and Interior Laboratory) GRGM660PRIM (jämförd mot den här referensen; ingen rad i verifieringsmatrisen anger den som extern referens, så den är inte märkt VALIDATED)
MODELLED Banbestämning i djupa rymden vid Mars (reducerat dynamisk SRIF) ≈ 0,2 m Mars-LMO (simuleringens kvalitetsmått, inte verkligt uppdrag) syntetisk sluten slinga för banbestämning: validering av estimatormaskineriet
MODELLED Solcentrerad Mars-dynamik mot JPL DE440 137 m @ 1-dygnsbåge (växer med bågen = ej modellerad n-kropps-påverkan) JPL DE440 via ANISE (xval/anise-mars-od, kärnstyrd) (jämförd mot den här referensen; ingen rad i verifieringsmatrisen anger den som extern referens, så den är inte märkt VALIDATED)
VALIDATED Enpunktspositionering mot en uppmätt IGS-koordinat (verkliga observationer) 5,7 m 3D-RMS / 1,1 m horisontellt, tvåfrekvens-SPP med jonosfärsfri kod IGS-stationen ABMF, inmätning + GPS-sändningsefemerid, 2018-05-13 (tests/pvt_abmf.rs)
MODELLED Tätt kopplad GNSS/INS-UKF 0,77 m RMS under ett LEO-pass på 30 min inklusive ett bortfall på 120 s glidning med kraftmodell, handhärledd
MODELLED GPS-nekad navigering med gravitationskarta ~70 km INS-drift → ~145 m återvunnet Målet Quantum Wayfarer från ESA NAVISP
MODELLED Terrängreferensnavigering (TERCOM/SITAN) 70 km drift → < 500 m (golv för rutnätsupplösning ~140 m) SRTM .hgt DEM; handinjicerad drift (icke-cirkulär kontroll)
MODELLED IGRF-14 huvudfält (grad/ordning 13) pol ~80,7°N, dipol ~29,7 µT, fysikaliskt band 22–67 µT IAGA (International Association of Geomagnetism and Aeronomy) igrf14coeffs.txt (Schmidt-seminormaliserad)
MODELLED Modulering av navigeringssignaler och kodföljning BPSK själv-SSC = 2/(3·R_c); PSD:er med enhetsarea; C/A-DLL-jitter under en meter vid 45 dB-Hz Slutna SSC/PSD-ankare + Kaplan & Hegartys formel för termiskt DLL-brus
MODELLED CR3BP-differentialkorrigerare för halo/NRHO STM = finita differenser; banan sluter sig till maskinprecision; L2 9:2 NRHO ≈ 6,57 d / perilun ≈ 3 250 km kontroll av STM med finita differenser + publicerad södra L2 9:2 NRHO (≈ 6,56 d / ≈ 3 370 km), CR3BP, inte en verklig Gateway-efemerid
MODELLED ARAIM-integritet med två konstellationer felläge för hela konstellationen på verklig GPS + Galileo EU ARAIM TR (teknisk rapport) / DO-316; Celestrak gps-ops 2021-07-28 (jämförd mot den här referensen; ingen rad i verifieringsmatrisen anger den som extern referens, så den är inte märkt VALIDATED)
VALIDATED GNSS-geometri / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) stämmer till 1e-6 relativt över 8 geometrier (välkonditionerad → nära singulär) gnss_lib_py 1.0.4 (Stanford NAV Lab), oberoende bibliotek (tests/dop_reference.rs)
VALIDATED ML-mått för detektorutvärdering (AUC/ROC/förväxlingsmatris/Pd-Pmd/precision/F1) exakta antal + < 1e-9 över 5 datamängder × 24 trösklar scikit-learn 1.9.0 (Pedregosa m.fl., JMLR, Journal of Machine Learning Research, 2011), oberoende bibliotek (tests/eval_metrics_reference.rs)
VALIDATED ROC-AUC för avvikelsedetektering på verklig ESA OPS-SAT-telemetri AUC återskapar scikit-learn till < 1e-9; AUC för detektorn som räknar toppar ≈ 0.85 på den märkta testdelen scikit-learn roc_auc_score på testdelen av OPSSAT-AD (Ruszczak m.fl. 2025, CC BY 4,0), verklig OPS-SAT-telemetri (tests/opssat_ad_reference.rs)
VALIDATED Numeriska kärnor för kvantaffärer (ADEV-NNLS-anpassning · χ²-konsistensband · van-Loan-klock-Q) NNLS + Q exakta; χ² < 5e-4 vid driftfrihetsgrader ≥ 48 scipy 1.17.1: optimize.nnls / stats.chi2.ppf / linalg.expm (tests/scipy_reference.rs)
VALIDATED MTIE / MDEV / TDEV, wandermått för telekom (ITU-T G.810/G.823/G.8261/G.811, rekommendationer från Internationella teleunionens standardiseringssektor) MTIE (9 medelvärdesfaktorer, bitexakt) och MDEV + TDEV (8 faktorer, < 1e-9 relativt) på NIST SP 1065-serien från en LCG (linjär kongruensgenerator) allantools 2024,06 mtie / mdev / tdev, oberoende bibliotek (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs)
VALIDATED MCDA-metoder för avvägningsstudier: alla fyra beslutsfamiljerna, nio externt validerade aggregatorer (WSM · WPM · WASPAS · MOORA · COPRAS · TOPSIS · VIKOR · PROMETHEE II · ELECTRE I) plus AHP-prioritetsviktning med parvisa jämförelser poäng / rangordningar / konkordansmatriser återskapade till < 1e-9 pymcdm + pyDecision (oberoende MCDA-bibliotek från tredje part) + Saaty RI (slumpindex) / SciPy-LAPACK eig (tests/mcda_*_reference.rs)
VALIDATED LEO-Dopplerkuvert utifrån banan och bärvågen Iridium-maximum inom 5 % av de publicerade ±36 kHz; Xona Pulsar X1 inom de publicerade 32–34 kHz RNTF:s testresultat för LEO PNT; Leclère, Marathe & Reid, arXiv:2509,19551 (tests/leo_doppler_reference.rs)
MODELLED PPP-konvergens med LEO-förstärkning 7,4 → 4,8 / 3,2 / 2,7 / 2,3 min med 60 / 96 / 192 / 288 LEO-satelliter, monoton; filtrets NEES inom χ²-bandet trenden jämförd med Li m.fl., J. Geod. 93:749 (2019) (9,6 → 7,0 / 3,2 / 2,1 / 1,3 min); konstellationer och brus återskapas inte
MODELLED Villkorad skyddsnivå för tid (holdover-begränsat oupptäckt tidsfel under spoofing) sammansättningen återskapar rekursionen för kovariansen i flera steg i clock_state; kalibrerad mot en verklig inspelad spoof JammerTest 2024 (Zenodo 15911589) skalärer + slutna former för van Loan / CUSUM (examples/tpl_jammertest)
MODELLED Poängsättning av PNT-resiliens + beslutsinstabilitet 35 handhärledda referenstester; bytedeterministisk studieartefakt (fast frö) DHS RPCF v2.0-mappning + slutna former för Dirichlet / Kendall-τ / Hill-N2, syntetiska arkitekturer, inte en certifiering
MODELLED Studie av optimismgapet vid RF-störningar (skalningslagar + leave-one-out-prediktor) signifikans mot permutationsnollhypotes; bytedeterministisk artefakt (5 frön) syntetiskt parametergrundat korpus: utvärderingsmåtten är VALIDATED mot scikit-learn (ovan); studien är MODELLED
CI Reproducerbarhet över plattformar bitidentisk indata + formfacit på 3 operativsystem CI-matris för Linux / macOS / Windows, SHA-256-facit
CI Testtäckning ~95 % rader för src/ exklusive src/*_data.rs och src/main.rs, spärr vid ≥ 85 % cargo-tarpaulin (LLVM-motor)

Hur en förmåga förtjänar sin etikett: Krav kopplas till en modul i src, till ett test i tests, till en extern oberoende referens (verklig datamängd, oberoende referensimplementation eller publicerade vektorer), till en status — med ett skydd i CI som säkerställer att ingen förmåga kan vara validerad utan en extern oberoende referens. Aktuella antal: 176 validerade, 221 modellerade, 4 ägda av partner, 401 totalt
Så förtjänar en förmåga sin märkning, invarianten som upprätthålls av CI: ingen extern referens ⇒ kan inte vara validerad · SVG

Så stöds varje påstående: kolumnen för validerade är 176 av 176 ExternalDataset genom konstruktion (upprätthålls av CI); modellerade rader är ärligt märkta InternalConsistency, ReferenceImpl eller ExternalDataset; partnerrader har ingen Kshana-referens
Värsta positionsfel för SGP4/SDP4 mot AIAA 2006-6753-referensen per regim, logaritmisk skala: varje regim ligger långt under AIAA:s tolerans, värsta fall 4,12 mm i regimen för djuprymd utan resonans
Överst: varje validerad rad stöds av en extern datamängd, genom konstruktion. Nederst: SGP4 stämmer med den officiella referensen i varje regim (värsta fall 4,12 mm). SVG · SVG

Verifieringsstatus för alla 401 förmågor: 176 validerade (kontrollerade mot en extern oberoende referens), 221 modellerade, 4 ägda av partner
176 validerade · 221 modellerade · 4 ägda av partner — SVG

Förmågeområden#

Varje förmåga i den offentliga kartan, per område, med sin märkning i registret. Områdestabellen skrivs av tools/gen_readme_blocks.py från web/capabilities.json, samma fil som Studios karta över allt läser.

Kshanas förmågor per område och mognad: validerade och modellerade offentliga förmågor per område, ritade från web/capabilities.json av tools/gen_validation_figures.pyKshanas förmågor per område och mognad: validerade och modellerade offentliga förmågor per område, ritade från web/capabilities.json av tools/gen_validation_figures.py

Hela tabellen, område för område med varje förmåga och dess märkning, finns i docs/CAPABILITY-DOMAINS.md.

Installera#

En rad ger dig kommandoradsverktyget: cargo install kshana. Varje kanal levererar v0.40.0 från samma taggade commit.

Ett stycke som nämner AI-klienter från tredje part har utelämnats här; det finns i README.md på GitHub.

Ett stycke som nämner AI-klienter från tredje part har utelämnats här; det finns i README.md på GitHub.

Ett stycke som nämner AI-klienter från tredje part har utelämnats här; det finns i README.md på GitHub.

Kanal Installera Guide
Prova i webbläsaren öppna https://kshana.dev Studioguide
Kommandorad (Rust) cargo install kshana Användning av kommandoraden
Rust-bibliotek cargo add kshana API-referens på docs.rs
Python pip install kshana Guide till Python-API:et
JavaScript och WebAssembly npm install kshana Guide till npm och WebAssembly
AI-assistent (MCP-server, cargo) cargo install kshana-mcp Guide till MCP-servern
Docker-avbild docker run --rm -i ghcr.io/ashfordeou/kshana-mcp Guide till MCP-servern: Docker
Cursor (ett klick) Lägg till i Cursor (npx) · Lägg till i Cursor (Docker) · npx -y kshana-mcp@0.40.0 Alla MCP-installationsutdrag
VS Code (ett klick) Installera i VS Code (npx) · Installera i VS Code (Docker) · npx -y kshana-mcp@0.40.0 Alla MCP-installationsutdrag
npx npx -y kshana-mcp@0.40.0 Alla MCP-installationsutdrag
uvx / pipx uvx kshana-mcp==0.40.0 Alla MCP-installationsutdrag
Homebrew brew install ashfordeOU/tap/kshana-mcp Alla MCP-installationsutdrag
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp Alla MCP-installationsutdrag
winget winget install AshfordeOU.KshanaMcp Alla MCP-installationsutdrag
Förbyggd binär ladda ned kshana-mcp-<target> från utgåvan och kontrollera den mot SHA256SUMS Alla MCP-installationsutdrag
Officiellt MCP-register sök efter io.github.ashfordeOU/kshana-mcp Alla MCP-installationsutdrag
Fjärr (streamable HTTP), självhostad kshana-mcp --http 127.0.0.1:8080 Guide för självhosting
IDE-insticksprogram för JetBrains Settings → Plugins → Marketplace → sök efter "Kshana" (plugin-ID dev.kshana.ide) Plugin-guide
Signal K-plugin npm install signalk-kshana-trust Guide för Signal K-plugin
OpenCPN-plugin ladda ned plugin-tarbollen från utgåvan Inlämning till OpenCPN-katalogen
Grafana-instrumentpanel importera kshana-grafana-*.json från utgåvan Instrumentpanelens källa
Referensbyggets avbildning docker pull ghcr.io/ashfordeou/kshana-reference-build Marina integrationer

Kshana på JetBrains Marketplace Byggs med Rust 1,88 eller nyare, rust-version i Cargo.toml

MCP är Model Context Protocol. Lås en utgåva med cargo install kshana --version 0.40.0, pip install kshana==0.40.0 eller npm install kshana@0.40.0. För att bygga från källkod, se Installera och bygga under Referens.

Kör ett scenario från Python och från 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

Utöver run exponerar modulen run_full (JSON, SVG och enradssammanfattningen på en gång), run_typed, validate_toml, list_kinds / scenario_kinds och error_kind; se docs/PYTHON_API.md.

npm-paketet är hela motorn kompilerad till WebAssembly. I Node.js lämnar du binärfilen till initSync; i en webbläsare hämtar 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#

En öppen motor står i mitten, och varje yta kör den: kommandoraden, Rust-biblioteket, Python, WebAssembly och Kshana Studio, MCP-servern, Docker-avbilden och JetBrains-insticksprogrammet. Samma scenariofil ger samma bytes på var och en. Kshana Pro ligger ovanpå som ett separat överlägg som är beroende av motorn och aldrig förgrenar den.

Kshanas arkitektur: en öppen motor i mitten, kshana 0.40.0 under AGPL-3.0, med api::run_toml, ett typat anrop över varje typ, och verifieringsregistret med 401 förmågor (176 VALIDATED, 221 MODELLED, 4 PARTNER). Runt den kör varje yta samma motor: Kommandorad (cargo install kshana); Rust-bibliotek (cargo add kshana); Python (pip install kshana); WebAssembly + Kshana Studio (npm install kshana); MCP-server (cargo install kshana-mcp); Docker-avbild (ghcr.io/ashfordeou/kshana-mcp); JetBrains-plugin (Marketplace: "Kshana"). Under den Kshana Pro, ett proprietärt överlägg som beror på den öppna motorn som ett bibliotek och aldrig förgrenar den, och inte lägger till någon fysikalisk modell.Kshanas arkitektur: en öppen motor i mitten, kshana 0.40.0 under AGPL-3.0, med api::run_toml, ett typat anrop över varje typ, och verifieringsregistret med 401 förmågor (176 VALIDATED, 221 MODELLED, 4 PARTNER). Runt den kör varje yta samma motor: Kommandorad (cargo install kshana); Rust-bibliotek (cargo add kshana); Python (pip install kshana); WebAssembly + Kshana Studio (npm install kshana); MCP-server (cargo install kshana-mcp); Docker-avbild (ghcr.io/ashfordeou/kshana-mcp); JetBrains-plugin (Marketplace: "Kshana"). Under den Kshana Pro, ett proprietärt överlägg som beror på den öppna motorn som ett bibliotek och aldrig förgrenar den, och inte lägger till någon fysikalisk modell.
Inuti motorn: domänskikten och verifieringsregistret Kshanas arkitektur i lager. Fem ingångar (kommandoraden, Python, JavaScript och WebAssembly, MCP-servern och JetBrains-pluginet) når ett enda api::run_toml, ett typat anrop över 92 typer. Under det finns åtta domänlager: tid och referenssystem, klockor och tidssynkronisering, tröghet och fusion, GNSS och integritet, astrodynamik, PNT i låg omloppsbana (LEO), månen, Mars och djuprymd, samt uppdrag och studier, på en gemensam kärna, alla korsrefererade av verifieringsmodulen, den maskinkontrollerade matrisen med 401 förmågor som är den enda källan till sanning för varje etikett.Kshanas arkitektur i lager. Fem ingångar (kommandoraden, Python, JavaScript och WebAssembly, MCP-servern och JetBrains-pluginet) når ett enda api::run_toml, ett typat anrop över 92 typer. Under det finns åtta domänlager: tid och referenssystem, klockor och tidssynkronisering, tröghet och fusion, GNSS och integritet, astrodynamik, PNT i låg omloppsbana (LEO), månen, Mars och djuprymd, samt uppdrag och studier, på en gemensam kärna, alla korsrefererade av verifieringsmodulen, den maskinkontrollerade matrisen med 401 förmågor som är den enda källan till sanning för varje etikett.

En motor, många ingångar. En enda Rust-kärna (kshana) kör varje scenario och nås via ett CLI, ett Python-tillägg, en WebAssembly-modul i webbläsaren, en MCP-server för AI-agenter och ett insticksprogram för JetBrains IDE, som alla leder samman i ett enda api::run_toml-anrop. Inuti ansluts sensorpaketen till ett gemensamt gränssnitt för felmodeller; vid sidan av dem finns ett skikt för referenssystem (IAU 2006/2000A precession–nutation och den CIO-baserade reduktionen GCRS↔ITRS), ett astrodynamik-/numeriskt skikt (analytisk SGP4/SDP4 och en numerisk Cowell-propagator med sin kraftmodell för EGM2008/perturbationer, manöverdesign och banbestämning), ett integritets-/GNSS-skikt (RAIM/ARAIM, SBAS, mätdomänen, jamming, cislunart), ett fusions-/alt-PNT-skikt (GNSS/INS-estimatorerna och kartmatcharna för gravitation/terräng/magnetfält), ett skikt för djupa rymden och månen (radiometrisk Mars-PNT och månens PNT-svit, med evidensnivån för varje del i matrisen: LTC-tid, VLBI, gemensam OD + klocka, realisering av referenssystem, servicevolym, differentiell PNT, interoperabilitet), ett uppdragsanalysskikt (uppskjutning / återinträde / täckning / pekning / pass / länkbudgetar och rymdvädermiljön) och det öppna studieskiktet för resiliens och maskininlärning (RPCF-resiliensbedömning, optimismgapet vid RF-störningar och demonstratorn för kvantbaserad PNT), vars reproducerbara artefakter vilar på de validerade kärnorna.

Två fristående crates som är undantagna från workspace ligger bredvid kärnan: mcp/kshana-mcp (MCP-servern, byggd på SDK:n rmcp för edition 2024) och xval/anise-frames (korskontrollen av ramar med ANISE/SPICE, som drar in beroenden under MPL-2.0, Mozilla Public License 2,0). De hålls utanför den publicerade cratens beroendegraf, Cargo.lock, licensspärren och bygget för MSRV (lägsta Rust-version som stöds) genom listan exclude i rotens Cargo.toml. JetBrains-insticksprogrammet (ide/jetbrains) är ett separat Kotlin-projekt. Se docs/ARCHITECTURE.md för hela uppsättningen diagram.

De renderade diagrammen (motorflöde, modulkarta, distribution) finns i docs/ARCHITECTURE.md.

Diagram#

Diagrammen är Mermaid-källor i docs/diagrams/, renderade till SVG och PNG i docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> på Linux, de andra två render-diagram-skripten på andra system), och en post binder varje PNG till den exakta SVG den kommer från. Tester låser de antal de anger. Diagrammen i avsnitten ovan ritas av verktyg utifrån motorkörningar; de här visar hur delarna passar ihop.

Systemet: sex ingångar (kommandorad, Python, WebAssembly och npm med Kshana Studio, MCP-server med insticksprogram och färdigheter, JetBrains-insticksprogram, integrationer) anropar alla en enda dispatch över varje scenariotyp, som kör en motor med gemensam kärna, sensorpaket och referenssystem samt domänmodeller, och skriver ett reproducerbart resultat och diagram
En dispatch, en motor, reproducerbar utdata · SVG · källa system-overview.mmd

Ytorna: en deterministisk motor som arbetar offline matar kommandoraden, Rust-biblioteket, Python, WebAssembly och npm samt MCP-servern; Studio körs på WebAssembly-bygget, plugin-kommandon och färdigheter på MCP-servern, integrationer och driftsättningspaket på kommandoraden, och JetBrains-insticksprogrammet på biblioteket
Varje yta, från samma motor · SVG · källa surfaces.mmd

Inuti en körning: en scenariofil med sitt frö och sin GNSS-tidslinje matar motorn, som i varje tidssteg utvecklar felmodellen, kör estimatorn och poängsätter kvalitetsmåtten, och skriver ett reproducerbart resultat och diagram
Den inre slingan i en körning · SVG · källa engine-flow.mmd

Mottagarförtroende: en mottagarlogg eller en ström läses in som observerbara storheter per epok och mottagarens egna flaggor, passerar övervakarna och blir en rådgivande förtroendepoäng med ett band och skäl, som matar Studio, telemetri, ett signerat bevispaket, bedömning med Jammertest och bench samt compliance-rapporten
Från en mottagarlogg till en förtroendepoäng och vad som använder den · SVG · källa trust-flow.mmd

Laboratorieslingan: ett scenario exporteras med sina händelser och testvillkor, en operatör utanför Kshana spelar upp en fil genom en laboratoriesimulator, mottagarloggen poängsätts mot de angivna händelserna, och evidensslingan länkar scenariots, villkorens och loggens hashar och poängen till ett signerat paket
Från scenario till signerat paket; Kshana varken producerar eller spelar upp någon signal · SVG · källa lab-round-trip.mmd

Kshana Studio: webbläsaren kör motorn kompilerad till WebAssembly lokalt utan att något laddas upp, tar emot medföljande scenarier eller ett scenario eller en logg du öppnar, och visar resultatet i den enkla vyn, den avancerade vyn och uppgiftssidorna, med exporter som sparas av användaren
Så körs Studio, lokalt · SVG · källa studio-flow.mmd

Test- och utgåveflödet: lokala spärrar (formatering, clippy, kontrollen mot attribuering, trappsteget för dokumentationstäckning och scripts/gate.sh, som kör hela sviten och upprepade körningar och skriver kvittot som pre-push-kroken kontrollerar) leder till en pull request som enbart körs i CI och en grön fullständig CI; ägaren snabbspolar main till den gröna committen och en annoterad tagg läggs på den efter versionssynkroniseringskontrollen; utgåveflödet verifierar hela sviten på den taggade committen innan något publiceras, bygger binärfilerna med en SBOM, kontrollsummor och byggproveniens, publicerar till crates.io, PyPI, npm, containerregistret, MCP-registret och JetBrains Marketplace, avfrågar varje register tills det serverar den nya versionen och startar webbplatsbygget från taggen; en separat väg enbart för webbplatsen startar pages-flödet med taggen main och nekas om inte något utanför web/ och .github/ har ändrats sedan den senaste utgåvan
Test- och utgåveflöde, från lokala spärrar till en verifierad utgåva och vägen enbart för webbplatsen · SVG · källa release-flow.mmd · docs/RELEASING.md

Modulkartan: kommandoraden, Python, WebAssembly, MCP-servern och JetBrains-insticksprogrammet anropar den typade dispatchen över varje typ, som når den gemensamma kärnan, tid och referenssystem, sensorpaket, astrodynamik, integritet, spoofingdetektering, fusion, djupa rymden och månen, resiliens samt referee- och benchmarkmodulerna, alla underbyggda av verifieringsmatrisen
Var koden finns · SVG · källa module-map.mmd

Distribution: ett repository levererar kärncraten, MCP-servern, IDE-insticksprogrammet och korskontrollcraten till crates.io, PyPI, npm, GitHub Releases, Pages-lekplatsen, containerregistret, MCP-registret och JetBrains Marketplace, med ett Zenodo-arkiv
Vad som levereras vart, och vad som kontrollerar det · SVG · källa distribution.mmd

AI-assistent#

kshana-mcp är en MCP-server: din assistent kör den faktiska motorn och läser tillbaka dess JSON i stället för att gissa matematiken. Vart och ett av dess 49 verktyg är ett tunt omslag runt en publik funktion i biblioteket kshana, så ingen simuleringslogik finns i servern.

Installera MCP-servern#

Rådgivande, inte typgodkänd navigationsutrustning: operatören är fortsatt ansvarig för navigeringen. Servern körs på din dator; ingenting skickas till Ashforde OÜ.

Ett stycke som nämner AI-klienter från tredje part har utelämnats här; det finns i README.md på GitHub.

Ett stycke som nämner AI-klienter från tredje part har utelämnats här; det finns i README.md på GitHub.

Ett stycke som nämner AI-klienter från tredje part har utelämnats här; det finns i README.md på GitHub.

Kanal Kommando eller knapp Kräver Fastnålad form
Cursor (ett klick) npx (Node) · Docker Node, eller Docker kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
VS Code (ett klick) 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 för v0.40.0
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket sedan scoop install kshana-mcp Scoop (Windows) manifest för v0.40.0
winget winget install AshfordeOU.KshanaMcp winget (Windows) --version 0.40.0
cargo cargo install kshana-mcp --version 0.40.0 Rust 1,88+ kshana-mcp 0.40.0
Förbyggd binär utgivningssidan: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], kontrollerad med SHA256SUMS och gh attestation verify ingen v0.40.0
MCP-register io.github.ashfordeOU/kshana-mcp (hittas av register-medvetna klienter) en register-medveten klient 0.40.0
Fjärr (streamable HTTP) kshana-mcp --http 127.0.0.1:8080, egen drift: se docs/deploy/mcp-http.md din egen värd v0.40.0

kshana-mcp på Glama, dess kvalitetspoäng för MCP-servrar

Ett stycke som nämner AI-klienter från tredje part har utelämnats här; det finns i README.md på GitHub.

Klientspecifik konfiguration finns i docs/integrations.md. Servern finns listad i det officiella MCP-registret som io.github.ashfordeOU/kshana-mcp.

De 49 verktygen

Scenarier och rapporter

Verktyg Vad den gör
run_scenario Kör ett scenario utifrån en TOML-definition (Tom's Obvious, Minimal Language)
list_scenario_kinds De 92 inbyggda scenariotyperna med beskrivningar + obligatoriska/valfria fält — så att agenten kan konstruera ett giltigt scenario
validate_scenario Förhandskontroll: tolka TOML och identifiera dess typ, utan att köra
list_example_scenarios De medföljande referensscenarierna som JSON
get_example_scenario TOML-texten för ett medföljande referensscenario, byte för byte filen under scenarios/
report_scenario Kör ett scenario och returnera dess rapport
animate_scenario Kör ett scenario och returnera dess tidsserie som en animering
sky_geometry Himmelsgeometri under en azimutberoende horisontlinje: de synliga och dolda satelliterna, DOP, öst-nord-upp-kovariansen och den horisontella felellipsen; eller en förinställd horisontlinje med sin proveniens

Export och interoperabilitet

Verktyg Vad den gör
list_export_formats Vilka interoperabilitetsformat som gäller för ett scenario (czml, kml, geojson, stk, sigmf), skälet när ett inte gör det och den specifikation som varje skrivare följer
export_interop Exportera ett scenario som CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, STK-efemerid (Systems Tool Kit) .e, eller SigMF (Signal Metadata
import_route Skriv en GeoJSON-rutt av typen LineString in i ett scenario som flyger ett vägpunktsspår (terrain-nav, terrain-slam, gravity-map, combined-altpnt) och returnera den nya TOML
export_sp3 Exportera konstellationen i ett orbit-scenario som precis efemerid i SP3-c (Standard Product 3, revision c)
export_omm Exportera elementen i ett orbit-scenario som en CCSDS-katalog (Consultative Committee for Space Data Systems) 502.0-B-2 OMM (Orbit Mean-elements Message)
export_oem Exportera tillståndsserien i ett orbit-scenario som CCSDS OEM (Orbit Ephemeris Message) 2,0-efemerid, TEME-positionen (true equator, mean equinox) och
export_table_csv Kör ett scenario och returnera dess reproducerbarhetstabell som CSV (kommaseparerade värden), den bytestabila tabell som CLI (kommandoradsgränssnittet) skriver som <scenario>.table.csv
export_test_bench Ett scenarios fordonsrörelse och händelser för en GNSS-simulator i laboratorium (kshana bench-export)

Förtroende för mottagare och fartyg

Verktyg Vad den gör
assess_receiver_log Bedöm förtroendet för en verklig mottagarlogg från GNSS (globalt satellitnavigeringssystem)
assess_vessel_stream Poängsätt ett begränsat utdrag av NMEA 0183 (högst 2 MiB och 20 000 epoker
assess_vessel_log Ett fartygs NMEA 0183-logg (högst 4 MiB) som en batchkörning, där sessions-TOML anger fartygets gränser
create_evidence_pack Ett signerat bevispaket för ett fönster av ett fartygs logg (kshana receiver-trust evidence)
attach_evidence_timestamp Bind en tidsstämpeltoken enligt RFC 3161 (base64 av .tsr-bytes) till ett paket, i minnet (kshana evidence attach-timestamp)
verify_evidence_pack Verifiera ett paket (kshana evidence verify)
generate_training_nmea Syntetisk NMEA 0183 för broar avsedd för besättningsträning, utifrån en nmea-scenario-TOML (jamming, positionsförskjutning, tidsspoofing, uppspelningsfördröjning) med instruktörsloggen (kshana-nmea-training/1)
build_interference_map En karta över GNSS-störning från ADS-B- eller AIS-positionsrapporter som CSV-text (högst 4 MiB)
route_exposure Andelen av en rutts längd i degraderade, icke-degraderade, ej bedömda och ej observerade celler i en eller flera störningskartor, eventuellt inom ett datumintervall
trust_telemetry En förtroendeström (JSON-rader) eller ett receiver-trust-resultat renderat som Prometheus-text, CEF- eller LEEF-syslograder eller en OTLP-JSON-nyttolast, med kodarna för kshana trust-telemetry
jammertest_import Läs den publicerade testkatalogen och sändningsplanen för Jammertest (NPRA/jammertest-plan, MIT) som schemalagd referens (kshana jammertest import): en testytas tidsluckor blir förtroendehändelser för mottagare med katalog-id och år i varje etikett. Planerade tidsluckor, inte inspelade sändningstider; inget kontaktfält i planen läses. MODELLED. Se docs/JAMMERTEST.md.
jammertest_score Poängsätt en mottagarlogg mot det schemat (kshana jammertest score): per test detektionsfördröjning, missade larm och tid till återhämtning, samt falsklarmen utanför varje lucka. Textloggar som log, binära (ubx, sbf) som log_base64. Ett signerat paket behöver en nyckel: kommandoraden. Endast rådgivande; MODELLED.
fit_imu_log Accelerometer- och gyroparametrar för scenariona hybrid och fusion anpassade från en stillastående IMU-logg (CSV eller EuRoC) med Allan-deviation, med en färdig tabell [accel_classical] att klistra in och loggens SHA-256 (kshana imu-fit). Text in, JSON ut; MODELLED.

GNSS-IQ (filer i arbetskatalogen; av i HTTP-läge)

Verktyg Vad den gör
iq_signals Konfigurationen av GNSS-IQ-skiktet
iq_info Beskriv en IQ-inspelning (fas och kvadratur) i arbetskatalogen utan att bearbeta den
iq_scene Generera en GNSS-IQ-scen med flera satelliter i arbetskatalogen (kshana iq scene)
iq_acquire FFT-baserad (snabb Fouriertransform) infångning av en eller flera PRN (pseudoslumpkoder) över en inspelning (kshana iq acquire), eventuellt bakom frontändssteg
iq_track Fånga in och följ sedan med bankerna DLL/PLL/FLL (fördröjnings-, fas- och frekvenslåsta slingor) (kshana iq track), med slingorna från en `kshana.loop-desig
iq_frontend Tillämpa mottagarens frontänds- och störningsdämpande DSP (digital signalbehandling
iq_sweep Spela upp en IQ-inspelning i arbetskatalogen över flera utformningar av följeslingor (kshana iq sweep)
iq_monitor Kör övervakarna för detektering av störning och spoofing över en IQ-inspelning i arbetskatalogen (kshana iq monitor)
iq_labfit Anpassa modellen för förlust av lås i följeslingor till laboratoriekörningar (kshana iq labfit) utifrån ett iq-labfit-scenario vars loggar finns inbäddade (text eller base64
iq_test_conditions Validera en kshana.test-conditions/1-fil som anges som text och returnera de lösta villkoren med deras hash
iq_campaign Kör en kampanj med uppspelning i laboratorium (kshana iq campaign)
iq_campaign_status Förloppet i en kampanjs utdatamapp

Compliance-kartläggning

Verktyg Vad den gör
compliance_report Mappningen mot offentliga ramverk ifylld utifrån resultatdokument som anges som text (kshana compliance-report)
compliance_mapping De statiska mappningstabellerna (eller, med sources, källdokumenten de hänvisar till med versioner och URL:er) som Markdown, med samma uttalande först
list_standards_packs Standardpaketen (kshana standards-pack list): poängsatta scenariomängder för testprofilerna i DHS Resilient PNT-ramverket, IMO MSC.1/Circ.1575 och ICAO Doc 9849 Appendix F
run_standards_pack Ett paket körs mot trösklar som angetts före körningen: varje test MET, NOT MET eller NEEDS INPUT; MODELLED, betygsätter ingen produkt
lunanet_afs_check LunaNet Augmented Forward Signal kontrollerad mot LNIS V5 AD1 Volume A (LSIS-AFS V1.0): koderna mot de tryckta tabellerna, eller en symbolström mot ramformatet; LDPC och CRC-24Q för delramarna 2 till 4 är inte verifierade
create_round_trip_pack Det signerade paketet för laboratorieslingan: scenario, kshana.test-conditions/1-dokument, mottagarlogg och poäng länkade med hash

Benchmark

Verktyg Vad den gör
score_benchmark Ett kshana-bench-bidrag poängsatt mot en referensfil, båda JSON-text (kshana bench score, bench/SPEC.md): resultatfilen med specifikationsversion, delmängd, indatahashar och uppgiftens mått. MODELLED; beskriver en logg eller ett korpus, aldrig en produkt.
render_leaderboard Resultatfiler från kshana-bench återgivna som den statiska topplistesidan (HTML-text), var och en först validerad.

Utgåvor#

Hela motorn är gratis. Kshana Pro och skräddarsydda studier är till för program som behöver mer, och varje betald väg börjar med ett meddelande: här finns inga priser.

Gratis Kshana Pro Skräddarsydd studie
Vad det är hela den öppna motorn, alla 92 scenariotyper, ingen funktionsspärr ett proprietärt överlägg på samma motor, under avtal en MODELLED studie av ditt systems PNT-resiliens, utförd åt dig
Licens AGPL-3.0 (GNU Affero General Public License, version 3), eller en kommersiell licens proprietär avtal
Så kommer du igång installera eller öppna kshana.dev begär en utvärdering av Pro begär en studie

Vad Pro är, med orden i docs/PRO.md:

En strikt övermängd av öppna Kshana. Pro är beroende av den öppna motorn som bibliotek och förgrenar den aldrig. Varje öppen scenariotyp körs oförändrad i Pro, och ett öppet scenario körs i Pro helt utan licens.

Ingen ny fysik. Pro tillför ingen fysikalisk modell och ändrar ingen. Varje tal i Pro kommer från körningar av den öppna motorn, så ett tal i Pro är precis lika tillförlitligt som den öppna scenariotyp det kom från, och aldrig mer.

Pro besvarar ett programs nästa frågor: vilken utformning som ska flygas (en utformningsoptimerare och dess Pareto-front), hur säkert svaret är (osäkerhet och känslighet), och om uppdraget klarar sina krav (ett uppdragsdossier, spårbarhet av krav, avvägningsstudier, en regressionskontroll av scenarier, digitala tvillingar av klockor, ett studiedossier och en tjänst som körs i den egna miljön). Det bevakar också en kampanj av tal och får en pipeline att misslyckas när ett tal försämras, testar kandidater till signalplaner mot de öppna satellitnavigeringssignalerna i båda riktningarna (spektrumsamexistens) och köar studier i en jobbtjänst i den egna miljön med ett hashkedjat leveransregister. Vart och ett beskrivs, med vad det ger och vad det inte gör, i docs/PRO.md. Inget som Pro tar fram är en certifiering, och en skräddarsydd studie är inte heller en certifiering.

Vad Kshana Pro läser från den öppna motorn, och support från Ashforde® OÜ

Vad Kshana Pro bygger på. Varje del av Pro arbetar utifrån den öppna motorn och lämnar den oförändrad:

  • Utformningsoptimeraren, osäkerhetsstudien och uppdragsdossiern kör scenarier i den öppna motorn genom motorns publika gränssnitt och beräknar varje tal utifrån körningarnas resultat. Varje utdata behåller den nivå av VALIDATED, MODELLED eller PARTNER som den öppna motorn gav varje tal, aldrig en högre.
  • Digitala tvillingar av klockor använder den öppna motorns klockmodell och dess estimator för Allan-deviation: en tvilling kalibreras mot enhetens publicerade Allan-budget och kontrolleras sedan genom att tvillingens Allan-deviation skattas med den öppna estimatorn.
  • Avvägningsstudier kör varje arkitekturalternativ som ett oförändrat scenario i den öppna motorn och rangordnar alternativen efter ett kvalitetsmått som läses ur varje körnings resultat.
  • Kampanjbevakning läser sina tal ur resultaten av körningar med den öppna motorn av scenarierna i ett paket och jämför dem med den föregående lyckade körningen.
  • Spektrumsamexistens läser varje fysikaliskt tal ur körningar med den öppna motorn av typerna leo-signal och constellation-design, och lägger bara till summan över de satelliter som är i sikte och rangordningen av planerna.
  • Jobbtjänsten i den egna miljön kör öppna scenarier och Pro-scenarier genom samma motor och lagrar varje resultat precis som körningen returnerade det.
  • Bevispaket registrerar, för varje körning, den scenario-hash som den öppna motorn stämplar på sitt resultat, så att ett tal i ett paket kan återskapas genom att köra om dess scenario.
  • Verktyg för systemteknik och program. Kshana Pros verktyg för modellbaserad systemteknik (MBSE) och program kontrollerar ett programs krav mot körningar av den öppna motorn: det importerar krav som kommaseparerade värden (CSV), eller som en dokumenterad delmängd av Requirements Interchange Format (ReqIF) eller av text i Systems Modeling Language version 2 (SysML v2), utvärderar varje acceptanskriterium, med dess enhet, mot de värden som en körning skrev, och tar fram en verifieringskorsreferensmatris (VCRM), en SysML v2-modell, en konsekvensrapport för ändringar och ett bevispaket för offlineanvändning. Det kör inte om och beräknar inte om något, och läser bara det som den öppna motorn publicerar: varje körnings result.json (fälten som ett kriterium namnger, deras enheter, reproducerbarhetsstämpeln med scenario-hash, frö, motorversion och schemaversion samt körningens etikett och nivåer för talen), dess report.json (typ, reproducerbarhetspost och förmågemärkningar), scenariofilen (dess hash, typ, frö och parametrar), schemat över fältenheter (varje fälts enhet, proveniens och evidensnivå) och verifieringsmatrisen (varje förmågas märkning VALIDATED, MODELLED eller PARTNER).

Support och professionella tjänster#

Kshana är gratis och öppen källkod under AGPL-3.0 och professionellt utvecklas och underhålls av Ashforde® OÜ (Estland). Den öppna motorn är komplett och går att använda på egen hand. För organisationer som behöver mer erbjuder Ashforde® OÜ:

  • Kommersiell support och integration: att bädda in Kshana i din verktygskedja, skräddarsydda scenarier och prioriterade rättelser.
  • Skräddarsydda sensormodeller: kalibrerade mot din maskinvara, inklusive exportkänsliga resiliensmodeller som underhålls i ett privat överlägg.
  • Kshana Pro: proprietära verktyg för modellbaserad systemteknik (MBSE) och program som kontrollerar ett programs krav mot körningar av den öppna motorn och tar fram en verifieringskorsreferensmatris (VCRM), en modell i Systems Modeling Language version 2 (SysML v2), en konsekvensrapport för ändringar och ett bevispaket för offlineanvändning. De kör inte om något och läser bara motorns publicerade utdata: varje körnings result.json och report.json, scenariofilen, schemat över fältenheter och märkningarna i verifieringsmatrisen (hela listan finns under Utgåvor).
  • Kshana Pro, verktyg för utformning, osäkerhet och uppdrag: Pareto-fronten för ett utformningsrum, osäkerhet och känslighet över tusentals körningar, samt ett uppdragsdossier med ett enda kommando, med en verifieringsmatris och en PDF; se docs/PRO.md.
  • Kshana Pro, kampanjbevakning, spektrumsamexistens och jobbtjänst: en pipeline som misslyckas när ett bevakat tal försämras, signalplaner som testas mot de öppna satellitnavigeringssignalerna i båda riktningarna och en jobbkö i den egna miljön med ett hashkedjat leveransregister; se docs/PRO.md.
  • Utbildning och rådgivning om prestandaanalys av kvantbaserad och klassisk PNT.

Det här är en öppen kärnmodell: motorn är och förblir öppet licensierad; den bärande verksamheten är expertis, support och de proprietära tilläggen, inte licensavgifter. Kontakta contact@ashforde.org · ashforde.org.

Forskning#

Studier byggda på den öppna motorn publiceras på arXiv. Varje studie anger motorkommandot bakom den, så att dess tal kan återskapas från ett incheckat scenario eller studieexempel.

Forskning byggd på den öppna motorn: sex artiklar på arXiv, där varje kort anger artikeln, dess datum och kategori samt motorkommandot som återskapar dess tal. Samma sex artiklar, med länkar och kommandon, finns i tabellen nedan.Forskning byggd på den öppna motorn: sex artiklar på arXiv, där varje kort anger artikeln, dess datum och kategori samt motorkommandot som återskapar dess tal. Samma sex artiklar, med länkar och kommandon, finns i tabellen nedan.
Artikel Vad den visar 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
Hur mycket poängen för en GNSS-störningsdetektor sjunker när förhållandena förskjuts kan förutsägas enbart utifrån statistik inom fördelningen, på en öppen syntetisk testbädd och därefter på öppna fältinspelningar. 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-tidsmottagare under spoofing har ingen ändlig ovillkorad gräns för oupptäckt tidsfel, så artikeln anger en villkorad gräns, kalibrerad mot en inspelad spoof över luften från den publika kampanjen JammerTest 2024. 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 enda sammansatt resilienspoäng är en stabil grund för ett beslut bara där en utformning dominerar; där utformningar konkurrerar kan enbart en omviktning ändra vinnaren. 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
Avståndsmätning inom en månkonstellation lämnar en ytstations absoluta position icke observerbar; en fördröjning från interferometri med mycket lång baslinje (VLBI) från jorden återställer den när konstellationen är gles och skärper den när den är rik. typen 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
Planerade konstellationer med fyra till sex satelliter ger dålig geometri vid månens sydpol, och några få fyrar för avståndsmätning på ytan åtgärdar det långt billigare än fler satelliter. typen 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 är odefinierad för cislunär följning med enbart avstånd, eftersom hastigheten inte är observerbar i ett ögonblick, så artikeln använder observerbarhetsgramianen på fyra plana avlägsna retrograda banor: med enbart avstånd är rangen 2 av 4 i ett ögonblick och en båge på cirka 2,09 h behövs för att bli fullt observerbar, med konditionering som förbättras ju längre bågen blir; avståndshastighet (Doppler) ger rang 4 omedelbart; och att samtidigt skatta en station med satelliternas tillstånd och klockor förblir rangbristfälligt med ett om inte en extern interferometrisk observabel läggs till. Krav hör hemma i budgetar för båglängd, konditionering och mätningstyp, inte i DOP. typen cislunar-observability: kshana scenarios/cislunar-observability.toml (dess syskon cislunar-arc-recovery testar tröskeln med en oberoende estimator med finita differenser)

De tre studieexemplen skriver bytedeterministiska artefakter (fasta frön) som registrerar sin motorversion, sina frön och en konfigurationshash. De tre artiklarna om månen och cislunart bygger på månsviten (varje dels evidensnivå finns i verifieringsmatrisen); deras påståenden om geometri och dilution of precision korskontrolleras också mot separata oberoende referenser i tests/validate_p*.rs. Mer i Reproducerbara studieartefakter under Referens.

Citera#

Om du använder Kshana i akademiskt eller tekniskt arbete, citera den version du använde, med scenario och frö. CITATION.cff innehåller de maskinläsbara metadata, och GitHub visar en knapp "Cite this repository" utifrån dem. Varje utgåva arkiveras på Zenodo; konceptets DOI (Digital Object Identifier) 10.5281/zenodo.20528627 pekar alltid på den senaste versionen.

Baweja, C. (2026). Kshana — a PNT-resilience simulator with quantum-sensor performance models. Ashforde OÜ. https://doi.org/10.5281/zenodo.20528627

Artiklarna ovan:

Baweja, C. (2026). Anticipating the Optimism Gap: Predicting Distribution-Shift Degradation of RF-Impairment Detectors from In-Distribution Statistics. arXiv:2606,22054. https://doi.org/10.48550/arXiv.2606.22054

Baweja, C. (2026). A Conditional Timing Protection Level: Holdover-Limited Undetected Time Error Under GNSS Spoofing. arXiv:2606,24210. https://doi.org/10.48550/arXiv.2606.24210

Baweja, C. (2026). How Stable Is a PNT Resilience Score? Decision-Instability of Single-Number Resilience Ratings under Framework-Aligned Weighting. arXiv:2607,05415. https://doi.org/10.48550/arXiv.2607.05415

Baweja, C. (2026). Earth-baseline VLBI restores the observability of a lunar surface station in joint orbit-and-clock determination. arXiv:2607,02566. https://doi.org/10.48550/arXiv.2607.02566

Baweja, C. (2026). The Cost of Lunar South-Polar Geometry, and Surface Beacons as the Efficient Fix: A Dilution-of-Precision Analysis. arXiv:2607,06212. https://doi.org/10.48550/arXiv.2607.06212

Baweja, C. (2026). Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever. arXiv:2610,23871. https://doi.org/10.48550/arXiv.2610.23871

Licens#

Kshana har dubbel licens: GNU AGPL-3.0-only (LICENSE), eller en kommersiell licens från Ashforde® OÜ för sluten integration som AGPL inte passar. LICENSING.md förklarar vilken som gäller. Bidrag licensieras inkommande under AGPL och ger också Ashforde® OÜ rätt att ta med dem i den kommersiella utgåvan; signera varje commit med git commit -s (se CONTRIBUTING.md). "Kshana" och dess märken är varumärken som tillhör Ashforde® OÜ: licensen omfattar koden, inte namnet, så byt namn på forkar.

Referens#

Det långa materialet, hopfällt. Varje dokument finns listat i Dokumentation.

Installera och bygga från källkod

Installera och bygga#

Kräver en Rust-verktygskedja (≥ 1,88, rust-version i Cargo.toml; utvecklad på 1,93).

git clone https://github.com/ashfordeOU/kshana
cd kshana
cargo build --release
cargo test          # all tests pass
Användning: hela kommandoraden

Användning#

Kör vilket scenario som helst; CLI skickar vidare efter scenariots fält kind och skriver <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html och <scenario>.report.json bredvid det, plus <scenario>.table.csv för de typer som publicerar en tabell. Rapporten (en HyperText Markup Language-sida (HTML) och ett JSON-dokument med samma innehåll) innehåller en sammanfattning för ledningen, varje indata med sin enhet, resultaten och diagrammen, en kampanjs svep-, Monte Carlo- eller kedjetabeller, en händelsetidslinje, märkningen VALIDATED / MODELLED / PARTNER och källan för varje förmåga som körningen använde, vad som inte är modellerat och en reproducerbarhetspost (motorversion, kontrollsummor med Secure Hash Algorithm 256-bit (SHA-256), frö, plattform och det exakta kommandot). Den skrivs ut till en ren PDF-fil (Portable Document Format) från webbläsaren på papper i A4 eller Letter; motorn skriver ingen PDF själv. 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-efemerider (Systems Tool Kit) .e och inspelningar i SigMF (Signal Metadata Format) bredvid scenariot, och --import-route <route.geojson> matar in en GeoJSON-linje i de typer som flyger ett spår. Varje format kontrolleras mot sin publicerade specifikation, och ett scenario som ett format inte gäller för anger varför: se docs/INTEROP.md.

Andra CLI-lägen: kontrollera ett scenario, mata in verkliga data om jordens orientering eller kör en hel svit:

# 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

Export av animering. --animate svg|html|frames|all skriver <scenario>.animation.svg (nyckelrutor i Cascading Style Sheets (CSS), inget skript), <scenario>.animation.html (spela upp, pausa, skrubba, hastighet och synkade paneler, utan externa tillgångar) och <scenario>.frames/ (frame_0000.svg, … plus manifest.json med bildrutor per sekund och varaktighet). En kampanj spelar upp sina faser och larm, en spektrumkörning sitt vattenfall; temat följer prefers-color-scheme och prefers-reduced-motion visar den färdiga bilden. Den renderar körningens egna sampel, byte för byte likadant vid en ny körning, och tillför ingen evidens. Se docs/ANIMATION.md.

Ett svitmanifest är en liten TOML-fil (Tom's Obvious, Minimal Language) med ett title och en scenarios = [ … ]-array av scenariosökvägar, som motorn kör i tur och ordning och vars varje resultat (med sina märkningar MODELLED / VALIDATED) vecklas in i en enda självbeskrivande studieartefakt. Se scenarios/quantum-pnt-demonstrator.suite.toml.

Roll i interoperabilitet. Kshana är prestandasimuleringsskiktet som står vid sidan av efterbearbetningsverktygskedjan, inte en ersättning för den: mata in dess RINEX-utdata i RTKLIB eller gLAB för en positionslösning, och använd dess SP3-utdata som en precis banprodukt för verktyg som Ginan. Kshana besvarar vilken resiliens en given PNT-arkitektur ger innan du har verkliga signaler, i format som de verktygen redan läser in (--export-sp3, eller export_sp3 = true i ett orbit-scenario, skriver <scenario>.sp3). Samma bana kan publiceras som CCSDS OMM-medelelement enligt standardspåret (--export-omm, eller export_omm = true, skriver <scenario>.omm): ett OMM 502,0-meddelande i KVN (nyckelord = värde-notation) per satellit som definieras av en TLE, med varje objekts verkliga katalognummer hos NORAD (North American Aerospace Defense Command), internationella beteckning hos COSPAR (Committee on Space Research) och epok, för vilken OMM-medveten mottagare som helst i stället för en skräddarsydd tvåradig elementmängd.

Exempelutdata (klock-holdover, notera hur kvalitetsmåtten för integritet och säkerhet redovisas):

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 optiska klockans tidsfel vid 95:e percentilen (p95) är 1.20e-4 ns: sammanfattningen skriver ut små värden med signifikanta siffror i stället för att avrunda dem till 0.0. security visar n/a (no attack) eftersom det här scenariot inte konfigurerar något angrepp, så det finns inget att upptäcka. JSON-resultatet innehåller ändå varje klockas analytiska gräns för spoofingdetekterbarhet i fom.security (0,997 för den optiska klockan, 0,000 för atomklockan i chip-skala, vars eget brus över övervakningsfönstret överstiger specifikationen på 20 ns), och dess block figure_tiers markerar det talet som applicable: false. Scenariotypen spoof poängsätter detektering mot ett injicerat angrepp. figure_tiers ger också varje redovisat tal dess verifieringsnivå, VALIDATED (kontrollerad mot en extern referens) eller MODELLED, och den rad i verifieringsmatrisen som nivån läses ur. Orbit-scenariot redovisar dessutom ett geometriblock (andelen sampel med positionsbestämning samt bästa/median-dilution of precision för position (PDOP) och positionsnoggrannhet) vid sidan av klockresultatet.

Läs de här två talen noga. security är en analytisk gräns för spoofingdetekterbarhet härledd ur varje klockas stabilitet; den är meningsfull bara mot ett konfigurerat spoofingscenario och är inte en RAIM-detektor med flera satelliter. integrity är här filtrets inre konsistens (andelen bortfallssampel inom filtrets egen k-sigma-gräns), inte ett integritetsmått av HPL/VPL-typ för flyget. Se docs/INTEGRITY.md.

För genuin mottagarautonom integritet kör scenariotypen integrity (scenarios/integrity-raim.toml) verklig RAIM med ögonblicksbild och lösningsseparation (ARAIM-liknande) över den propagerade konstellationsgeometrin: den beräknar horisontella/vertikala skyddsnivåer (HPL/VPL) per epok och redovisar andelen epoker som ligger inom de konfigurerade larmgränserna, med ett Stanford-integritetsdiagram för klassificering av fel mot PL (skyddsnivå).

Reproducerbara studieartefakter

Fyra öppna studier återskapar var och en en bytedeterministisk artefakt (fast frö) med ett enda kommando: talen bakom studierna om skärningspunkten mellan kvant och klassisk, optimismgapet vid RF-störningar, poängsättning av PNT-resiliens och skyddsnivå för tid:

# 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

Varje artefakt registrerar sin motorversion, sina frön och en konfigurationshash och bär en ärlig märkning MODELLED/VALIDATED. Proberna med verkliga data (*_probe) kör samma pipeline över inspelningar som du själv tillhandahåller lokalt; inga datamängder levereras i repot. Studien av optimismgapet vid RF-störningar finns beskriven i förpubliceringen arXiv:2606,22054, och den villkorade skyddsnivån för tid (tpl_jammertest ovan) i förpubliceringen arXiv:2606,24210 (se Citera).

De publicerade studierna om PNT vid månen (arXiv:2607,06212 DOP med fyrar på ytan, arXiv:2607,02566 VLBI-observerbarhet och arXiv:2610,23871 observerbarhet av båglängd vid cislunart) har sina påståenden om geometri, dilution of precision, realtidsprediktion av referenssystem / parametrar för jordens orientering (EOP), avlägsna retrograda banor och RF-avståndsmätning oberoende korskontrollerade i tests/validate_p*.rs mot separata oberoende referenser (scipy.special.j1, en oberoende NumPy-lösning av DOP med (HᵀH)⁻¹, en omtolkning i NumPy av samma rader i IERS finals2000A och NASA/JPL:s databas Three-Body Periodic Orbit Database). Det här är ytterligare regressionskontroller av den modellerade månsviten; de ändrar inte antalet i den maskingranskade matrisen.

Scenarioformat

Scenarioformat#

Scenarier är deklarativ TOML. Ett kind på översta nivån väljer paketet: femtio sammanlagt (clock är standard om det utelämnas): inertial, timetransfer, hybrid, hybrid-ukf, fusion, gnss-ins, orbit, ephemeris, gnss-sim, integrity, lunar-integrity, lunar-time-offset, spoof, spoof-detect, jamming, sweep, sweep-nd, gravity-map, terrain-nav, terrain-slam, combined-altpnt, pvt, mars-pnt, impairment-eval (testbädd för utvärdering av maskininlärningsbaserad detektering av RF-störningar: märkt syntetiskt korpus + detektoragnostisk ROC/AUC-ram + optimismgap mellan inom och utanför fördelningen), quantum-trade (avvägning mellan kvantbaserad och klassisk PNT med inläsning av uppmätt ADEV + resilienskuvert för GNSS-nekad drift; MODELLED), space-weather (sol- och geomagnetiska index + exosfärstemperatur enligt Jacchia-71 + aktivitetsdriven termosfärisk densitet över den statiska atmosfären; MODELLED), oem-interop (CCSDS OEM-brygga för import och tur och retur av efemerider från GMAT/Orekit/STK; MODELLED), trion för uppdragsanalys launch-window (tvåkropps-uppskjutningsazimut / planbyte / tillfällen), reentry (ballistisk återinträdeskorridor enligt Allen-Eggers), eo-coverage (EO-svep / GSD / åtkomst / återbesöksgeometri), space-packet (CCSDS 133,0 TM/TC, telemetri/telekommando, ramning av Space Packet, exakt bitlayout, tur och retur verifierad), och attitude-budget (3-DOF gravitationsgradientmoment + RSS-budget för pekningsfel), passes (prediktion av upp-/nedgångspass för markstation, AOS/TCA/LOS, maxelevation, åtkomst), och link-budget (enkelriktad CCSDS/DSN-länkekvation: FSPL / Eb·N₀ / marginal / slutning); telecom-timing (holdover-tidsfel, MTIE och TDEV kontrollerade mot ITU-T-masker); spectrum (hela GNSS L-bandet som en enda effektspektraltäthet: ett vattenfall över frekvens och tid under en skriptad tidslinje för en jammer med kontinuerlig våg, smalband, chirp eller matchat brus, förhållandet mellan jammer och signal per band och effektiv bärvåg-till-brusdensitet utifrån den spektrala separationskoefficienten, samt in- och utdata för inspelningar i Signal Metadata Format (SigMF) med Welch-spektrumskattningar; signalspektra VALIDATED mot läroboksvärden, jammerscenariot MODELLED; se docs/SPECTRUM.md; samma typ ritar paneler för UHF-, S- och C-band med utformade signaler för låg omloppsbana); leo-signal (utformningar av PNT-signaler för låg omloppsbana för vilket system som helst: bandbegränsade spektra, jitter vid kodföljning och avståndsnoggrannhet, infångningssökning och tid, spektral separation mot GPS och Galileo, jammertolerans och en avvägning mellan UHF och C-band, från publika förinställningar som Xona Pulsar, Iridium, Starlink och CentiSpace eller inbäddade utformningar; de slutna formerna och LEO-Doppler VALIDATED, utformningarna MODELLED; se docs/LEO-SIGNAL.md); solar-system (solen, planeterna, Pluto, månen och sju stora månar vid en epok: positioner, konstanter, ljustider och banspår; planeternas positioner VALIDATED mot JPL Horizons) och body-pnt (positionsbestämning runt vilken som helst av de kropparna med en lokal navigeringskonstellation och en djuprymdslänk från jorden; MODELLED); campaign (befintliga typer sammansatta till en kedjad uppdragstidslinje där tillstånd överlämnas mellan faserna, ett parametersvep, en Monte Carlo-ensemble med frö eller flera scenarier under ett gemensamt villkor; MODELLED, se docs/CAMPAIGNS.md); constellation-design (Walker-delta- och stjärnmönster, elementlistor och utformningar med flera skal med förinställningar för GPS, Galileo, BeiDou och GLONASS, samt täckning och dilution of precision över ett latitud-/longitudrutnät; generatorn och global DOP för GPS VALIDATED mot de publicerade tjänstedokumenten, se docs/CONSTELLATION-DESIGN.md); leo-pass (ett pass för en PNT-satellit (positionering, navigering och tidssynkronisering) i låg omloppsbana (LEO) och dess länkbudget band för band, från vilken konstellation och signalutformning som helst: siktvinklar, Doppler och Dopplerhastighet, ITU-R-förluster från regn, gas, scintillation och byggnadsinträde, bärvåg-till-brusdensitet mot de MEO-GNSS-satelliter som är i sikte, första ordningens jonosfär och jonosfärsfria par samt en energisnål positionsbudget, jonosfärssondering från varje bandpar och spoofingövervakare genom konsistens i Doppler och passgeometri och genom konsistens mellan band; ITU-R-termerna och Dopplerkuvertet för en statisk användare VALIDATED, passet MODELLED, se docs/LEO-PASS.md); leo-navmsg (sändningsefemeriden och klockmeddelandet från en PNT-satellit i låg omloppsbana (LEO), för vilken bana och bärvåg som helst: en anpassare från en integrerad sanningsbana till Galileos keplerska uppsättning, den uppsättningen med korrektionspolynom i längs-, tvärs- och radiell led, modellen med 22 parametrar enligt Liu m.fl. 2025 eller ATOMIC:s ECEF-polynom med nollklocka; signal-in-space-avståndsfel (SISRE) mot passningsintervall och uppdateringsperiod, en kontroll av kontinuitet vid uppdatering mitt i ett pass, Kshanas egen dokumenterade binära ram med en cyklisk redundanskontroll CRC-24Q och en kvantiseringsbudget, och ett block i stil med RINEX-4 märkt som ett Kshana-tillägg; SISRE-vikterna, Galileos användaralgoritm och CRC-24Q VALIDATED, anpassningarna MODELLED; valfria förinställningar för Xona Pulsar, Iridium, Starlink, CentiSpace, ett representativt system i C-band, ATOMIC och Celeste IOD; se docs/LEO-NAVMSG.md); trion för sammanslagen MEO + LEO PNT leo-pvt (Dopplerpositionering utifrån avståndshastighet från satelliter i låg omloppsbana (LEO), gemensamma positionsbestämningar med GNSS + LEO-pseudoavstånd med intersystembiaser och DOP mot antalet LEO-satelliter, täckning vid polerna och i Arktis samt LEO-tidsöverföring till UTC, över vilken konstellation som helst, med valfria förinställningar som signaler från Xona Pulsar, Iridium och Starlink som opportunistiska signaler; LEO-Dopplerkuvertet VALIDATED mot publicerade siffror för Iridium och Xona), leo-ppp (konvergens för precis punktpositionering med enbart GNSS och med LEO-förstärkning, jämförd med Li m.fl. 2019) och ntn-positioning (positionering med 5G icke-terrestriska nät utifrån Cramér-Rao-gränsen för signalbandbredden), MODELLED bortsett från det kuvertet, se docs/LEO-PNT-FUSION.md; leo-pnt-chain (ett LEO-PNT-system från början till slut: en utformning av typen leo-signal buren av ett band av typen leo-pass, passets C/N0 och navigeringsmeddelandets signal-in-space-avståndsfel överlämnade till en sammanslagen positionsbestämning av typen leo-pvt och konvergens av typen leo-ppp, med varje överlämning listad; MODELLED, se docs/LEO-PNT.md, som också är översikten över varje LEO-PNT-typ och scenario, inklusive resilienskampanjerna, ett scenario per fokusområde för experiment och ett per slutanvändarbransch); månsviten för PNT lunar-vlbi, lunar-joint-od-clock, lunar-frame-realisation, moonlight-service-volume, lunar-differential-pnt, lunar-interop-export; demonstratorn för kvantbaserad PNT quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; och forskningstyperna för signalsäkerhet, cislunart och skiktad resiliens lunar-attack-surface, realtime-frame-eop, lunar-time-budget, hybrid-optical-rf, cislunar-observability, conflict-resilience. Trion för uppdragsanalys och dessa senare typer är alla MODELLED (var och en med en validerad sluten kärna; se matrisen). Gemensamma fält: seed, ett [time]-rutnät, en tidslinje för [gnss]-tillgänglighet (bortfallets drivkälla) och block per sensor med provenance-strängar som anger källan till varje tal. Exempel (klocka):

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

Valfria fält (av när de saknas): en klocka kan lägga till flicker_floor (1/f FM — frekvensmodulation — Allan-golv); en tröghetssensor kan lägga till gyro_bias och q_arw (gyrobias och slumpvandring i vinkel), samt bias_instability och q_aa (Allan-golvet för biasinstabilitet och slumpvandring i acceleration) — tillsammans en felbudget för en enaxlig (1-DOF) accelerometer (VRW/ARW — slumpvandring i hastighet/vinkel — och biasinstabilitet). Det är den felbudget som det medföljande paketet av scenarier för inertial kör. Separat innehåller biblioteket nu en verifierad 3-axlig strapdown-navigator (src/inertial/{attitude,mechanization,imu_errors}.rs): kvaternionbaserad attityd med coning/sculling-kompensation, en fullständig NED-mekanisering (termer för jordrotation och transporthastighet, WGS-84 Somigliana-gravitation) och en deterministisk IMU-felmodell där skalfaktor, felinriktning, g-känslighet, kvantisering och hastighetsramp är modellerade (IEEE Std 952-1997, IEEE:s specifikation och testprocedur för gyron, §A.2; Groves 2013 §4,3). Den 3-axliga vägen är nu kopplad till ett körbart löst kopplat GNSS/INS-paket (kind = "gnss-ins"): ett EKF med 15 feltillstånd styr strapdown-lösningen mot brusiga positionsbestämningar så länge GNSS är tillgängligt och glider sedan genom avbrottet, och redovisar det sammanvägda horisontella felet mot den öppna glidningen med enbart INS. En tätt kopplad pseudoavståndsuppdatering finns också (den bildar innovationen i avståndsdomänen och fortsätter därför att korrigera med färre än fyra satelliter). Ett scenario för klock-holdover kan lägga till runs (> 1) för att köra en Monte Carlo-ensemble — varje kvalitetsmått redovisas då som medelvärde med en spridning mellan 5:e och 95:e percentilen, och diagrammet skuggar felets konfidensband (se scenarios/clock-ensemble.toml).

Ett fusion-scenario (samma block som hybrid) kör två oberoende Kalman-estimatorer — en för klocktillståndet och en för lägestillståndet — styrda av GNSS och stödda av optisk tidsöverföring, och redovisar ett kombinerat kvalitetsmått för holdover. De två blocken delar ingen korskovarians: det är ett staplat par av felbudgetar, inte ett riktigt kopplat gemensamt filter för klocka och position (korskovarians mellan blocken finns på färdplanen). Se scenarios/fusion-pnt.toml.

Ett spoof-scenario injicerar en tidsspoofing — en av fyra sorter av [attack.shape] (linear_ramp, step_jump, meaconing, replay; ett fristående rate_ns_per_s godtas fortfarande som en linjär ramp) — och kör varje klockas spoofing-detektor. Detektorn är ett tvåsidigt χ²₁-energitest / Neyman–Pearson-test på den klockstödda övervakningsstatistiken: tröskeln sätts utifrån en målbudget för falsklarm target_pfa, och sannolikheten för missad detektering P_md redovisas både på sluten form och med Monte Carlo (mc_runs försök per hypotes — de två stämmer överens inom några gånger 1/√N). Kvalitetsmåttet för säkerhet är 1 − P_md vid den operativt skadliga (spec-)storleken, så en tyst klocka som fångar en spoofing av spec-storlek får ≈ 1 och en bullrig klocka som ofta missar den får lägre poäng (se scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).

Ett gnss-sim-scenario är en simulering i mätdomänen: för varje synlig satellit syntetiserar det pseudoavståndet ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath och L1-Doppler, med den enfrekventa jonosfären enligt Klobuchar ([iono], IS-GPS-200 §20.3.3.5.2.5) och zenittroposfären enligt Saastamoinen projicerad med mappningsfunktionen Niell (1996) ([tropo]). Residualerna matas till snapshot-RAIM för HPL/VPL per epok, och varje satellits pseudoavstånd, Doppler, C/N₀ samt jono-/tropokorrektioner skrivs ut i JSON-fältet gnss_measurements. Det är en framåtsimulator (den genererar mätningar utifrån en känd referens), inte en mottagare eller lösare — en körning utan brus återger geometrin plus korrektionerna med submillimeternoggrannhet (se scenarios/gnss-sim-raim.toml).

Ett jamming-scenario modellerar RF-störning som en länkbudget: en [jammer] (ECEF-position, sändeffekt power_dbw, typ) höjer förhållandet mellan störsändare och signal vid en [receiver] som tar emot en Walker-[constellation]. Utifrån geometrin (frirymdsförlust och antennförstärkning per riktning) beräknar det varje satellits J/S, den effektiva C/N₀ via den vanliga ekvationen för anti-jam (processningsvinst vid avspridning × spektralseparationsfaktorn Q; Kaplan & Hegarty §9,4), och markerar förlust av låsning under en konfigurerbar spårningströskel — och redovisar ett kvalitetsmått availability_under_jamming. En bredbandig störsändare på 10 W på 1 km slår ut mottagaren helt (J/S ≈ 72 dB); samma störsändare på 100 km försämrar bara länkarna (se scenarios/jamming-demo.toml).

Ett sweep-scenario kör en avvägningsstudie: det varierar en parameter (threshold_ns, duration_s, quantum_q_wf eller classical_q_wf) från start till stop över steps punkter på en lin- eller log-scale, registrerar ett metric (till exempel holdover_s) för båda klockorna och ritar de två kurvorna. Basscenariot placeras under [base] (se scenarios/sweep-clock-stability.toml).

Ett sweep-nd-scenario generaliserar detta till vilket paket som helst och valfritt antal axlar: det varierar punktade TOML-nycklar i ett [base]-scenario (av vilket kind som helst) över den kartesiska produkten av [[axes]], kör om varje rutnätsnod och registrerar metrics angivna som punktade JSON-sökvägar in i resultatet (till exempel classical.fom.holdover_s). Det fungerar för alla paket eftersom det arbetar i gränssnittet mellan TOML och resultat; inhemska körningar utvärderar rutnätet parallellt (inget extra beroende, wasm faller tillbaka på sekventiell körning) och utdata är deterministiska och radvisa (se scenarios/sweep-nd-inertial.toml).

Ett orbit-scenario härleder tidslinjen [gnss] ur geometri i stället för att skriva den för hand — ange en [user]-bana, en [constellation], en elevationsmask_deg och de två klockblocken. Det redovisar också positionsnoggrannhet utifrån satellitgeometrin; den valfria sigma_uere_m (användarekvivalent avståndsfel på 1 sigma, standardvärde 1 m) skalar positionens utspädning av precision till ett positionssigma. Användarens bana kan göras excentrisk med eccentricity och argp_deg, och j2 = true lägger till sekulär drift från jordens tillplattning (se scenarios/orbit-molniya.toml). Konstellationen kan i stället vara en verklig: ge [constellation] ett tle-block med tvåradiga elementmängder så tolkas satelliterna ur det (se scenarios/orbit-real-tle.toml). Lägg till ett eller flera [[constellations]]-block för multi-GNSS (till exempel 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

De GPS-nekade alt-PNT-slagen navigerar helt utan GNSS och matchar en uppmätt fältsekvens mot en karta via ett partikelfilter. Ett gravity-map-scenario flyger ett spår genom ett gravitationsanomalifält av sfäriska harmoniska och återskapar det utifrån avläsningen från en gravimeter med kalla atomer (scenarios/gps-denied-gravity-nav.toml); ett terrain-nav-scenario gör detsamma mot en höjdmodell från SRTM (TERCOM/SITAN, scenarios/terrain-nav.toml); och ett combined-altpnt-scenario sammanväger gravitation + magnetfält från IGRF + terräng i ett enda filter (scenarios/combined-altpnt.toml).

Ett lunar-integrity-scenario utvärderar cislunär PNT: det kör ett skyddsnivåpass med ARAIM vid månens sydpol mot en uppsättning LunaNet/LNIS-reläer och redovisar ärligt integritetsgapet — ett σ_URE på ~30 m på månen driver skyddsnivån långt över en larmgräns på 50 m, så tjänsten är otillgänglig under integritetsregler i flygstil (scenarios/lunanet-araim.toml).

Ett lunar-time-offset-scenario redovisar den relativistiska klockgången mellan jorden och månen — grunden för en tidsskala för månens koordinattid (LTC/TCL). En post-newtonsk identitet från första principer summerar skillnaden i egenpotential (IAU:s geoidpotential L_G minus månytans egenpotential) och månens kinetiska term (andra ordningens Dopplereffekt) till en sekulär hastighet på ≈ 57 µs/dygn, redovisad med det publicerade bandet 56–59 µs/dygn; det ger också den ackumulerade LTC−TT-förskjutningen över en horisont och en ensemble med inversvarians (en klocka på papper för månen). MODELLED — huvudsiffran är referensberoende (jordens geoid mot månens selenoid, medelvärdesfönster), vilket är skälet till att ett band, inte ett enda fastställt tal, redovisas (scenarios/lunar-time-offset.toml).

Se scenarios/ för minst ett genomarbetat exempel för varje typ (92 typer, 193 scenariofiler med .toml + 1 svitmanifest — flera typer levereras med mer än ett exempel). Inte varje typ har en fil uppkallad efter sig: lunar-integrity → scenarios/lunanet-araim.toml och gravity-map → scenarios/gps-denied-gravity-nav.toml är två av flera sådana. Lista de typer som går att anropa när som helst med cargo run -- --validate <file> fel, Python list_kinds() eller MCP-verktyget list_scenario_kinds.

Utdata

Utdata#

Resultatartefakten är versionshanterad, självbeskrivande JSON: tidsserier per steg, de poängsatta kvalitetsmåtten, de aktiva modellspecifikationerna (med proveniens), fröet, en scenario-hash — så att varje diagram kan återskapas ur filen — och för varje klocka en adev_curve ([{tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi}]): den överlappande Allan-deviationen över medelvärdestider med oktavavstånd — det vanliga sättet att avläsa en klockas stabilitet — nu med ett brustypsspecifikt 95-procentigt konfidensband per punkt (registreringens potenslagstyp identifieras ur dess modifierade Allan-lutning, och χ²-intervallet använder de matchande effektiva frihetsgraderna enligt NIST SP 1065). Webbläsarens lekplats återger den som ett log-log-diagram "Klockstabilitet (ADEV)". (MDEV, TDEV och HDEV finns som bibliotekets estimatorer; den exporterade resultatkurvan är den överlappande ADEV.) Varje fält, med enheter och en källhänvisning, dokumenteras i docs/SCHEMA.md.

Varje diagram är självbeskrivande. Webbläsarens lekplats, CLI:ns export av *.chart.svg och HTML-resultatkortet (HyperText Markup Language) stämplar alla diagrambilder med en sidfot som lyder Kshana v<version> · scenario <hash> · kshana.dev. scenario <hash> är de första 12 hextecknen i körningens scenario-hash — en SHA-256-sammanfattning (den 256-bitars Secure Hash Algorithm) över den kanoniska scenariodefinitionen (frö, trösklar, modellparametrar, GNSS-fönster, …); integritets- och månrapporterna, som inte har någon egen hash, faller tillbaka på en SHA-256 av scenariokällan. Det är samma fingeravtryck som visas i enradssammanfattningen och i resultat-JSON, så ett sparat eller inklistrat diagram bär alltid sin version, det exakta scenario som gav upphov till det (för reproduktion bit för bit) och källan — ändra någon indata och hashen ändras.

Kvalitetsmåtten följer de vanliga operativa kvalitetsmåtten för PNT:

Kvalitetsmått Så beräknar Kshana det
Tidsprestanda (klock-/banpaket) RMS och 95:e percentilen av klockfasfelet under avbrottet, i nanosekunder (timing_rms_ns) — ett mått på tidssynkronisering, inte på position
Positionsprestanda (tröghets-/hybridpaket) RMS och 95:e percentilen av positionsfelet i en dimension (1-DOF) under avbrottet, i meter (pos_rms_m); enaxligt. En enstaka körning markeras med monte_carlo: false; ange runs = N för en Monte Carlo-ensemble som redovisar varje måtts medelvärde, spridning och bootstrap-baserade 95-procentiga konfidensintervall (CI). Fortfarande inte ett 2-D CEP/2DRMS (circular error probable / två gånger kvadratiska medelavståndet) eller DOP-viktad noggrannhet (de kräver den 3-axliga modellen — färdplan)
Autonomi holdover-tid — tid inom spec efter förlust av GNSS (kvantiserad till rutnätet: en nedre gräns)
Resiliens lutning på felväxten under avbrottet
Tillgänglighet andel av körningen med en lösning inom spec
Integritet filtrets självkonsistens — andel av avbrottets sampel vars fel håller sig inom Kalman-filtrets egen k-sigma-gräns. Inte ett integritetsmått av flygtyp som HPL/VPL/RAIM (se docs/INTEGRITY.md)
Säkerhet analytisk gräns för möjligheten att upptäcka spoofing utifrån klockstabilitet — hur liten och långsam en tidsspoofing en konsistensövervakare för en enda klocka skulle kunna flagga. Meningsfull bara med en konfigurerad attack; inte en RAIM-detektor med flera satelliter

Är begreppen nya för dig? Vart och ett förklaras på vanlig svenska i ordlistan.

Förvarets uppbyggnad

Förvarets uppbyggnad#

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
Vanliga frågor (FAQ)

FAQ#

Behöver jag förstå kvantfysik för att använda det här? Nej. Om du kan köra en kommandorad kan du köra Kshana. Börja med introduktionen på vanlig svenska; slå upp termer i ordlistan.

Är det här en konstruktion av kvantmaskinvara eller flygprogramvara? Nej. Det är en prestandasimulator. Troheten hos kvantmaskinvara kommer från publicerade felmodeller, inte från det här verktyget. Se Vad det är och inte är.

Är kvantresultaten realistiska, eller marknadsföring? Varje parameter är hänvisad till ett datablad eller en artikel, varje modell är validerad mot en lärobokssamband, och mognaden anges ärligt i VALIDATION.md — inklusive att ingen optisk strontiumklocka har flugit. Motorn är neutral: kvant och klassiskt är samma kod med olika publicerade siffror.

Kan jag lita på att två körningar ger samma resultat? Ja — körningar är deterministiska: scenario + seed + engine version → bit-identical output, vilket upprätthålls av scripts/check-reproducible.sh.

Kan jag använda det från Python eller i en webbläsare? Ja — se Installera: exemplen för Python och WebAssembly finns under den. Båda anropar samma motor.

Hur modellerar jag min egen sensor? Skriv ett scenario .toml med sensorns publicerade siffror i fälten provenance. Se Scenarioformat och exemplen i scenarios/.

Är det gratis för kommersiell användning? Ja — under AGPL-3.0, även i kommersiella sammanhang, så länge du respekterar AGPL:s copyleft (framför allt: om du ändrar Kshana och erbjuder det över ett nätverk måste du erbjuda de användarna din ändrade källkod). Om det inte passar dig — till exempel om du behöver bädda in Kshana i en proprietär produkt eller driva en sluten nättjänst — finns en kommersiell licens från Ashforde® OÜ; se LICENSING.md och Support.

Felsökning

Felsökning#

cargo build misslyckas med en gammal verktygskedja. Kshana kräver Rust ≥ 1,88. Uppdatera med rustup update.

Bygget av Python-tillägget misslyckas att länka på macOS (Undefined symbols … _Py…). Ett Python-tillägg löser sina symboler vid inläsning. maturin sätter rätt länkflagga automatiskt — använd maturin develop --features python i stället för ett fristående cargo build.

Python-bygget klagar på att tolken är nyare än vad PyO3 känner till. Ange PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (abi3-wheels är framåtkompatibla mellan CPython-versioner).

WebAssembly-bygget hittar inte målet. Installera det en gång med rustup target add wasm32-unknown-unknown och kör sedan wasm-pack build --target web -- --features wasm.

Var tog min utdata vägen? Varje körning skriver <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html och <scenario>.report.json bredvid indatafilen .toml, och även <scenario>.table.csv för de slag som publicerar en tabell. Alla ignoreras av git med flit.

Versionshantering och utgåvor

Versionshantering och utgåvor#

Kshana följer Semantisk versionshantering. Före 1.0 kan det publika schemat för scenarier och resultat fortfarande ändras; brytande ändringar anges uttryckligen i CHANGELOG.md. Varje resultat kan återskapas ur scenario + seed + engine version.

Varje vX.Y.Z-tagg publicerar alla kanaler automatiskt, i en bestämd ordning — hela testsviten körs först på den taggade incheckningen, ingenting publiceras förrän den passerar, och efteråt kontrollerar pipelinen att varje register verkligen levererar den nya versionen (docs/RELEASING.md). Kanalerna:

Ett stycke som nämner AI-klienter från tredje part har utelämnats här; det finns i README.md på GitHub.

Ett stycke som nämner AI-klienter från tredje part har utelämnats här; det finns i README.md på GitHub.

Kanal Installera / hämta Innehåll
crates.io cargo install kshana · kshana = "0.35" Rust-bibliotek + CLI
crates.io cargo install kshana-mcp MCP-servern
PyPI (Python Package Index) pip install kshana abi3-wheels (Linux/macOS/Windows) + sdist (källdistribution)
npm npm install kshana WebAssembly-modul + JS-omslag
ghcr.io docker run -i ghcr.io/ashfordeou/kshana-mcp OCI-avbild (Open Container Initiative) för flera arkitekturer — ingen verktygskedja behövs
npm npx -y kshana-mcp@0.40.0 startprogram: hämtar utgåvans binärfil, verifierar SHA256SUMS och kör den
PyPI uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 samma startprogram för Python
Homebrew · Scoop · winget brew install ashfordeOU/tap/kshana-mcp · scoop install kshana-mcp · winget install AshfordeOU.KshanaMcp binärfilen kshana-mcp, genererad ur varje utgåvas SHA256SUMS
officiellt MCP-register upptäcks automatiskt av MCP-klienter io.github.ashfordeOU/kshana-mcp (OCI-avbild, npm- och PyPI-paket)
JetBrains Marketplace IDE → Plugins → sök efter "Kshana" IDE-pluginet Kshana — PNT simulator
Zenodo DOI ett citerbart arkiv över varje utgåva
kshana.dev öppna i en webbläsare Kshana Studio, WebAssembly-appen i webbläsaren, ombyggd från varje utgåvotagg (så att den version den visar är den version den kör)

MCP-serverns crate-, avbilds- och registerversion följer motorn (den paketerar biblioteket); JetBrains-pluginet versionshanteras oberoende (det anropar din installerade binärfil kshana).

Färdplan

Färdplan#

Se ROADMAP.md för den fasindelade färdplanen, CHANGELOG.md för utgiven historik och docs/CAPABILITY.md för färdplanen per förmåga. Prioritetsordningen är: evidens för tidssynkronisering och holdover för kritisk infrastruktur först (telekommasker, längre holdover med åldrings- och flickerbrus, inläsning av uppmätta klockdata); den neutrala avvägningsmetoden mellan kvant och klassiskt därefter (resultat märkta MODELLED tills en partners uppmätta data höjer dem); och navigering på månen, cislunärt och i djuprymden bibliotekshålls, utan att byggas ut som huvudspår. Den ITRF-precisa referenssystemsreduktionen är nu levererad — hela den CIO-baserade kedjan GCRS↔ITRS enligt IAU 2006/2000A (polrörelse + nutation under bågsekunden), validerad bit för bit mot SOFA/ERFA och oberoende korskontrollerad mot ANISE (SPICE i ren Rust) till ≤ 3,6 m på GNSS-bana. Närliggande punkter är bland annat tätt kopplad bärvågsfasfusion och att göra den löst/tätt kopplade GNSS/INS-navigatorn tillgänglig i fler paket; motorn för radiometrisk navigering i djuprymden och till Mars kom i v0.17.0 (validerad genom simulering). Kvantfysiklagret är en P2-punkt: CAI-accelerometern simuleras nu från första principer (Mach–Zehnder-fas, projektionsbrus, kontrastavklingning, vibrationskoppling), medan sensorerna för klocka och tidsöverföring fortfarande drivs av publicerade Allan-/brusbudgetkoefficienter. GMST-baserad TEME&harr;ECEF, IERS tidssystem med skottsekunder (UTC/TAI/TT/UT1), SGP4/SDP4-banpropagering (v0.7.0, validerad mot AIAA 2006-6753-vektorerna) och det körbara fusionspaketet gnss-ins har alla levererats, och tröghetshastigheten exponeras nedströms. En aktiv stokastisk detektor för tidsspoofing (Neyman–Pearson / χ²₁-energitest med Monte Carlo-P_fa/P_md och ett säkerhetsmått på 1−P_md), en länkbudgetmodell för jamming (J/S → effektiv C/N₀ → förlust av låsning), tillgänglighet med flera konstellationer, en enaxlig (1-DOF) IMU-felbudget, två oberoende Kalman-estimatorer (klocka + position) som redovisas som ett kombinerat kvalitetsmått, verklig konstellationsgeometri från TLE, ett HTML-resultatkort, geometriderived GNSS-tillgänglighet och utspädning av precision från Kepler-banor med excentricitet och J2-drift, Monte Carlo-konfidensband, parametersvep för avvägningsstudier, en WebAssembly-lekplats i webbläsaren samt valfria bindningar för Python (PyO3) och WebAssembly (wasm-bindgen) har landat på main.

Bidra

Bidra#

Se CONTRIBUTING.md. I korthet: testerna passerar (cargo test), de två vaktskripten passerar, Conventional Commits, och en post under [Unreleased] i CHANGELOG.md för varje ändring som syns för användare. Deltagande styrs av vår uppförandekod. För att rapportera en säkerhetsbrist, se säkerhetspolicyn — öppna inte ett publikt ärende för sårbarheter.

Dokumentation: varje dokument och vem det är till för

Dokumentation#

Dokument För vem Vad det innehåller
Begreppsintroduktion alla, börja här vad Kshana gör och varför, från noll till fysiken
Kshana Studio alla kör motorn i din webbläsare (WebAssembly); anteckningar om bygge och driftsättning
Ordlista alla definitioner på vanlig svenska av varje term
Scenariotyper alla varje slag som motorn skickar vidare: vad det gör, dess fält, ett exempelkommando, dess registerrader och det diagram som motorn skriver för det
Partnerdata laboratorier och tillverkare som har uppmätta data vilka MODELLED-rader en uppmätt klock- eller IMU-post kan lyfta, formaten, hur ett bidrag kontrolleras (kshana partner check), poängsätts och tillgodoräknas
Arkitektur utvecklare / granskare modulkarta, motorns pipeline, utskick och diagram
Valideringsstatus granskare / citerare vad som är validated respektive not modeled, med evidens
Verifieringsmatris granskare / citerare det maskinkontrollerade evidensregistret — varje förmågerad med sin status, modul, test och oberoende extern referens, genererat ur src/verification.rs
Motivering för modellerade rader granskare varför varje modellerad rad saknar en oberoende extern referens, angivet rad för rad
Ursprung granskare / citerare varje sensorparameter, modell och datamängd spårad till sin publicerade källa, i en enda citerbar tabell
Reproducerbarhet och proveniens granskare / paketerare determinismgarantier, golden-fastlåsning, SBOM (programvarulista), byggproveniens
Plattformstaggar för wheels paketerare matrisen över abi3-wheels för Python — vilken plattformstagg pip install kshana löser till
Positionering utvärderare var Kshana står i förhållande till RTKLIB/gLAB (kompletterande) och nivån utan installation i webbläsaren
Kshana Pro utvärderare / programansvariga vad det proprietära Pro-lagret tillför ovanpå samma motor: utformningsoptimerare, osäkerhet och känslighet, uppdragsdossier, kampanjbevakning, spektrumkoexistens, jobbtjänst på plats, spårbarhet av krav; vad var och en producerar och vad den inte gör
Teknisk rapport · JOSS-artikel granskare / citerare / utvärderare den fullständiga utökade forskningsartikeln — arkitektur, modeller per område, validering, fallstudier och begränsningar — plus den korta inlämningen till JOSS (Journal of Open Source Software)
SGP4-validering granskare / citerare överensstämmelse med referensen AIAA 2006-6753 (666 tillstånd, ~4 mm) och en direkt jämförelse mot den oberoende cratet sgp4 (stämmer inom submikrometer / 4,12 mm)
Validering av kraftmodeller granskare / citerare motorn med alla krafter (src/precise_od.rs) anpassad till myndigheters efemerider — metodik och validerade residualer
Guide till verkliga TLE användare köra scenarier med verkliga TLE för Celestrak / Space-Track-konstellationer (i stället för den medföljande syntetiska Walker-mängden)
Kvalitetsmått för integritet utvärderare vad måtten integrity / security betyder — och vad de inte är jämfört med HPL/VPL i flyg
ARAIM-referens granskare / integratörer den öppna implementeringen av skyddsnivå med MHSS ARAIM — projektionen av den nominella biasen b_k, σ_URA mot σ_URE och a priori-sannolikheterna för felmoder
Kvantmodeller · detaljer granskare fysiklagret för interferometern med kalla atomer, och var koefficienter fortfarande slås upp
Compliance utvärderare Omfattningen av algoritmerna i DO-229E / DO-316, och vad som inte är ett påstående om överensstämmelse
Sjöförtroende sjöfarare / integratörer förtroendepoängen 0–100 för GNSS utifrån ett fartygs NMEA, dess övervakare och dess gränser (rådgivande, inte typgodkänd navigationsutrustning)
NMEA-träningsströmmar sjöfartsutbildare syntetisk NMEA för broar med skriptad jamming och spoofing och en instruktörslogg; endast text, aldrig för levande navigering
Störningskarta analytiker / sjöfarare var flygplan och fartyg rapporterade försämrad navigeringsdata, och hur mycket av en rutt det berör
Bevispaket operatörer / försäkringsgivare signerade tekniska register över en förtroendehändelse och hur man verifierar ett
Förtroendetelemetri drifts- / säkerhetsteam förtroendeströmmen som Prometheus-mätvärden, SIEM-händelser och OpenTelemetry, med en Grafana-instrumentpanel
Marina integrationer båtägare / integratörer insticksprogrammet för Signal K, OpenCPN i gate-läge och referensbygget
Testbänk mottagartillverkare att spela upp ett exporterat scenario genom en laboratoriesimulator och poängsätta mottagarens logg
Compliance-kartläggning utvärderare offentliga resiliensramverk mappade mot Kshanas utdata, med källor och luckor; kshana compliance-report
Notebooks användare körbara handledningar med deras renderade text
Standarder och interoperabilitet integratörer de utbytesformat för GNSS / flygdynamik / myndigheter som Kshana läser och skriver (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …)
LEO PNT-fusion användare / utvärderare sammanslagen positionering, navigering och tidssynkronisering med MEO + LEO: Doppler, gemensamt pseudoavstånd, PPP-konvergens, 5G NTN, polär täckning och LEO-tidsöverföring över vilken konstellation som helst; de valfria förinställningarna och deras publika källor
Kampanjer användare / utvärderare att sätta ihop scenarier: kedjade uppdragstidslinjer, parametersvep, Monte Carlo-ensembler och körningar med gemensamma villkor, med de sammansättningsidentiteter som testerna låser
Scenariokatalog användare / integratörer varje typ som kan skickas vidare med sina obligatoriska och valfria TOML-fält, genererad från api::list_scenario_kinds()
Resultatschema integratörer varje fält i resultat-JSON, med enheter och en källhänvisning
Python-API Python-användare PyO3-bindningens yta: att anropa motorn, typerna för scenario och resultat samt exempel
Påståenden mot verklighet granskare registret över stängda överdrifter + CI-spärren (tests/no_overclaims.rs) som håller det löst
Färdplan alla den fasindelade färdplanen: vad som har levererats och vad som kommer härnäst
MCP-server · JetBrains-insticksprogram agenter / IDE-användare kör Kshana från en AI-assistent eller en JetBrains IDE
Agentguide · Ytor agenter / integratörer vilket verktyg som besvarar vilken fråga och vad som ska sparas med varje svar; var varje förmåga är nåbar (CLI, Rust, Python, WASM, MCP, plugin, JetBrains, notebooks) och varför en cell är N/A
Ändringslogg alla utgiven historik (Keep a Changelog + SemVer, Semantic Versioning)
Bidra bidragsgivare bygge, spärrar, disciplin för test och citering, DCO (Developer Certificate of Origin)
Styrning bidragsgivare / community hur Kshana styrs: vem som beslutar, hur, och gränsen mellan öppet och slutet
Uppförandekod community förväntat uppförande (Contributor Covenant)
Säkerhetspolicy rapportörer hur man rapporterar en sårbarhet; anmärkning om dubbla användningsområden
Viktiga referenser

Viktiga referenser#

Valideringsreferenser och standarder: de externa auktoriteter som Kshanas kontroller är förankrade i:

  • Vallado, Crawford, Hujsak & Kelso — Revisiting Spacetrack Report #3 (AIAA 2006-6753; testdata): verifieringsmängden för SGP4/SDP4 som Kshana stämmer med till 4,12 mm, och de genomarbetade exemplen på referenssystem som kedjan TEME→ITRF kontrolleras mot.
  • IAU SOFA / ERFA — referensrutinerna för tid och referenssystem som IAU 2000A-nutationen och CIO-reduktionen GCRS↔ITRS är validerade bit för bit mot.
  • Petit & Luzum (red.) — IERS Conventions (2010), IERS TN (Technical Note) 36 (jordens orientering, polarrörelse och standarder för referenssystem).
  • Riley — Handbook of Frequency Stability Analysis, NIST SP 1065 (samband för Allan-deviation och referensserien NBS14; NBS = det tidigare amerikanska National Bureau of Standards).
  • Pedregosa m.fl. — scikit-learn: Machine Learning in Python, JMLR 12 (2011): referensimplementationerna av ROC/AUC, förväxlingsmatris och precision/recall/F1 som testbädden för utvärdering av RF-störningar exakt matchas mot (tests/eval_metrics_reference.rs).
  • Virtanen m.fl. — SciPy 1,0, Nature Methods 17 (2020): optimize.nnls, stats.chi2 och linalg.expm, referensrutinerna som NNLS-anpassningen av uppmätt ADEV för kvantaffärer, χ²-konsistensbanden och van-Loan-kovariansen för klockans processbrus är validerade mot (tests/scipy_reference.rs).
  • Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024): används både som öppen tidigare teknik (se Jämförelse och öppen tidigare teknik nedan) och som den oberoende DOP-referensen som beräkningen av GDOP/PDOP/HDOP/VDOP/TDOP matchas mot till 1e-6 (tests/dop_reference.rs).
  • Montenbruck & Gill — Satellite Orbits: Models, Methods and Applications (Springer): kraftmodellerna bakom kraftmodellsanpassningen till myndigheters precisa 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-familjerna som CR3BP-differentialkorrigeraren återskapar).

Fysik för komponenter och metoder: de citerade källorna bakom sensormodellerna:

  • Origlia, Schiller, Bongs m.fl. — arXiv:1503,08457 (optisk strontiumgitterklocka, rymdinriktat mål).
  • Oelker m.fl., Nature Photonics (2019) — doi:10.1038/s41566-019-0493-4 (Sr-klocka i laboratorium, 4,8×10⁻¹⁷).
  • Templier m.fl., Science Advances (2022) — arXiv:2209,13209 (hybrid kvantaccelerometertriad).
  • Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation — handledning från IEEE AESS (Aerospace and Electronic Systems Society) (University College Londons Discovery-arkiv) (felväxt vid dödräkning).
  • Giorgetta m.fl., Nature Photonics 7, 434 (2013) — arXiv:1211,4902; Deschênes m.fl., Phys. Rev. X 6, 021016 (2016) — APS (American Physical Society) (optisk tvåvägsöverföring av tid och frekvens; den optiska länken mellan satelliter modellerar sin budget för icke-reciprocitet efter dessa).
  • Betz — Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001), doi:10.1002/j.2161-4296.2001.tb00247.x (BOC-moduleringen och teorin om spektral separation bakom src/navsignal.rs).
  • Kaplan & Hegarty (red.) — Understanding GPS/GNSS: Principles and Applications (3:e uppl., Artech House, 2017): ekvationen för effektiv C/N₀ under anti-jam och det termiska bruset i jittern vid kodföljning med tidig–sen DLL som modellerna för navigeringssignaler och jamming använder.

Jämförelse och öppen tidigare teknik: de verktyg och översikter som Kshana positioneras mot:

  • Humphreys m.fl. — TEXBAT (Texas Spoofing Test Battery; ION, Institute of Navigation, GNSS 2012): parametrarna i spoofingtestbatteriet som den flerskiktade detektorn karaktäriseras mot.
  • González m.fl. — NaveGo (2017): de öppna, validerade felprofilerna för tröghetsnavigering som används som klassisk baslinje.
  • Iiyama, Casadesús Vila & Gao — LuPNT (ION GNSS+ 2023, Stanford NavLab): öppen simulator för PNT vid månen.
  • Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024), doi:10.1016/j.softx.2024.101811: öppen analys 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 m.fl. — Earth and Space Science 8(6) (2021), doi:10.1029/2020EA001454: reducerat dynamisk OD av GRAIL, det empiriska accelerationsgolv som LRO-anpassningen återskapar.