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
Innehåll
- Öva på minuten då GNSS går i mörker
- Nyheter i 0,40, Nyheter i 0,39, Nyheter i 0,38 och 0,38 på djupet: jammertest-poängsättning, mottagarens egna flaggor, maskinindata, tidssynkronisering och holdover, standardpaket, LunaNet AFS, labbrundturen, kshana-bench, observatoriet, exportörer, optik, navigering för rymdanvändare och månens infrastruktur
- Kshana Studio och varje Studio-sida
- Förmågor: tabellen över områden, varje scenariotyp per familj, varje kommando, varje yta
- Så fungerar en körning, Uppdrag
- Evidens: registret, förmågedomäner
- Installera, Arkitektur (och diagrammen), AI-assistent
- Utgåvor, Forskning, Citera, Licens
- Referens: användning, scenarioformat, utdata, repositoriets layout, FAQ, felsökning, versionshantering, färdplan, bidra, dokumentation
Ö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-threadkopplar ihop faser från uppskjutning till återinträde (launch-ascent,leo-rendezvous,tli-and-cruise,entryoch 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 checkkontrollerar formatet på ett bidrag och poängsätter ingenting (docs/PARTNER-DATA.md). - Sändarområde.
kshana interference-map locateger 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.
memmap20.9.11 i de två ANISE-korskontrolllåsen ochpillow13.0.0 ochcertifi2026.10.19 i fästena för referensmiljön, alla underxval/: 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_sigmaAUC 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
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"
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
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
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
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
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
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/
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/
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
Registerstatus: MODELLED. 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: 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
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
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).
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
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.

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


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.

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.
Varje förmåga, ritad utifrån en verklig körning: L-bandets vattenfall, täckningskartan, solsystemet och en passage i låg omloppsbana
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
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 — 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 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.
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 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.
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.
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.
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.
| 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.mdsomvalidatedellernot modeled: ingenting presenteras som validerat som inte är det. - Reproducerbart genom konstruktion:
scenario + seed + engine version → identical bits.scripts/check-reproducible.shupprä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) |
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
Ö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
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.
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.
| 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.
Inuti motorn: domänskikten och verifieringsregistret
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.

En dispatch, en motor, reproducerbar utdata · SVG · källa system-overview.mmd

Varje yta, från samma motor · SVG · källa surfaces.mmd

Den inre slingan i en körning · SVG · källa engine-flow.mmd

Från en mottagarlogg till en förtroendepoäng och vad som använder den · SVG · källa trust-flow.mmd

Från scenario till signerat paket; Kshana varken producerar eller spelar upp någon signal · SVG · källa lab-round-trip.mmd

Så körs Studio, lokalt · SVG · källa studio-flow.mmd

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

Var koden finns · SVG · källa module-map.mmd

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.
| 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-signalochconstellation-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), dessreport.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.jsonochreport.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.
| 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. Sedocs/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:
| 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↔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.chi2ochlinalg.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.