Kshana · क्षण · der präzise Augenblick
Ein quelloffener Simulator für die Resilienz von PNT (Positionierung, Navigation und Zeitgebung).
Status der kontinuierlichen Integration auf main
Zeilenabdeckung von nahezu 95 % von src/, gemessen in docs/COVERAGE.md und in der kontinuierlichen Integration bei 85 % als Schwelle erzwungen
176 von 401 Fähigkeiten VALIDATED gegen eine unabhängige externe Referenz, aus der Verifikationsmatrix
Status des Qualitätstors von SonarQube Cloud
Version v0.40.0
Lizenz: AGPL-3.0-only
DOI 10.5281/zenodo.20528627, der Zenodo-Konzeptdatensatz jeder Veröffentlichung
Eine kommerzielle Lizenz ist von Ashforde® OÜ erhältlich, siehe Editionen
kshana auf crates.io, die aktuell veröffentlichte Version
kshana auf PyPI, die aktuell veröffentlichte Version
kshana auf npm, die aktuell veröffentlichte Version
Kshana Studio öffnen · Installieren · Fähigkeiten · Nachweise · Forschung · Dokumentation · Zitieren
Inhalt
- Proben Sie die Minute, in der GNSS ausfällt
- Was neu ist in 0,40, Was neu ist in 0,39, Was neu ist in 0,38 und 0,38 im Detail: Jammertest-Bewertung, die eigenen Flags des Empfängers, maschinenlesbare Eingaben, Zeitgebung und holdover, Normenpakete, LunaNet AFS, der Laborrundlauf, kshana-bench, das Observatorium, Exporter, Optik, Navigation für Raumfahrzeugnutzer und Mondinfrastruktur
- Kshana Studio und jede Studio-Seite
- Fähigkeiten: die Tabelle der Bereiche, jeder Szenariotyp nach Familie, jeder Befehl, jede Oberfläche
- Wie ein Lauf funktioniert, Missionen
- Nachweise: das Register, Fähigkeitsbereiche
- Installation, Architektur (und die Diagramme), KI-Assistent
- Editionen, Forschung, Zitieren, Lizenz
- Referenz: Verwendung, Szenarioformat, Ausgabe, Repository-Aufbau, FAQ, Fehlerbehebung, Versionierung, Roadmap, Mitwirken, Dokumentation
Proben Sie die Minute, in der GNSS ausfällt#
Kshana spielt Jamming, Spoofing und Uhren-Holdover nach, wenn GNSS-Signale (Global Navigation Satellite System) ausfallen, und sagt Ihnen, wie lange ein System Zeit und Position innerhalb seines Budgets hält und welche Uhr oder welcher Sensor die größte Marge bringt. Es ist eine Rust-Engine. Sie läuft in einem Terminal, einem Notebook, einer IDE (integrierte Entwicklungsumgebung), einem KI-Assistenten (künstliche Intelligenz) oder in Ihrem Browser.
Jeder Lauf ist aus Szenario, Seed und Engine-Version Bit für Bit reproduzierbar. Jede Fähigkeit trägt in einem maschinell geprüften Register eine von drei Kennzeichnungen: VALIDATED (eine unabhängige externe Referenz stimmt überein), MODELLED (in sich konsistent, und das wird offen gesagt) oder PARTNER (ein Hardwarepartner verantwortet sie).
Status: v0.40.0. Ein validiertes, reproduzierbares Simulationsfundament für PNT-Resilienz. Zeitgebung und Holdover kommen zuerst, weil dieser Bereich am besten validiert ist. Kshana ist ein Studien- und Abwägungsinstrument: keine Hardware zur Erzeugung von Hochfrequenzsignalen (HF) (es steuert keinen Funk und sendet nichts; seine Ausgabe auf Signalebene sind Basisband-IQ-Abtastdateien für Software-Empfänger), kein Hardware-Empfänger und kein zertifizierter GNSS-Empfänger (sein Software-Empfänger ist ein Analysewerkzeug) und kein Flugprodukt. Neu in diesem Feld? Beginnen Sie mit der allgemeinverständlichen Einführung und dem Glossar.
Was neu ist in 0,40#
0,40 fügt ein Fehlerbudget auf Missionsebene hinzu, kennzeichnet jede Zahl und Tabelle mit ihrer Evidenzstufe, liest gemessene Uhrenlogs, prüft Einreichungen von Datenpartnern, schätzt, wo sich ein Störsender befinden kann, und spricht siebzehn Sprachen neben Englisch. Das Register hat nun 401 Zeilen: 176 VALIDATED, 221 MODELLED, 4 PARTNER. Keine Zeile wurde zu VALIDATED befördert, und jede Verfehlung unten ist durch einen Test festgeschrieben.
- Missionsstrang. Die Art
mission-threadverkettet Phasen vom Start bis zum Wiedereintritt (launch-ascent,leo-rendezvous,tli-and-cruise,entryund vier Mondarten) mit genannten Übergaberegeln, einer Marge gegenüber genannten Anforderungen und dem schwächsten Glied; ein durchgängiges Beispiel im Stil von Artemis über 11 Phasen (Erd- und Mondsegmente), insgesamt 92 Szenarioarten. Jede Zahl ist MODELLED. Die cislunare Fortschreibung gegen die öffentliche Trajektorie von Artemis I verfehlt ihren vorab festgelegten Zielwert (45,3 km und 0,25 m/s gegenüber 5 km und 0,05 m/s; die Ursache sind kleine Manöver, die das Modell nicht enthält), und der Mondpropagator gegen die CAPSTONE-Umlaufbahn verfehlt ihn (136,8 km gegenüber 25 km am Ende eines Umlaufs); der Vergleich mit LRO ist erreicht. Die Zeilen bleiben MODELLED (Missionsstrang, Mondsegment). Im Studio wird der Strang unter/studio/mission-thread/gelesen. - Nachweiskennzeichnungen. Jede Zahl und Tabelle, die ein Lauf schreibt, trägt die Stufe und die Kennungen der Registerzeilen, auf denen sie beruht, aus der Matrix gelesen.
- Gemessene Uhren. Acht Uhrenlog-Formate werden gelesen (
docs/CLOCK-LOG-FORMATS.md), und eine angepasste Reihe kann den holdover antreiben. Gegen vorab festgelegte Zielwerte verfehlt die Anpassung F1(a) bei fünf von sechs Aufzeichnungen und F2 bei einer; beide bleiben MODELLED (Changelog). - Datenpartner.
kshana partner checkprüft das Format einer Einreichung und bewertet nichts (docs/PARTNER-DATA.md). - Senderregion.
kshana interference-map locategibt aus ADS-B- oder AIS-Meldungen eine Region und eine Ellipse an, nie einen bloßen Punkt. Einmal mit den Senderstandorten des Jammertests 2025 verglichen, ist das Ergebnis für beide Quellen NOT ASSESSABLE (zu wenige geplante Sitzungen in den offenen Daten), sodass die Zeile MODELLED bleibt (Störungskarte). - Benchmark. Die Neukampagne 0,40 erreicht A3, D3 (beide EXPLORATORY), R3 und R4; A2, D1 und R1 bleiben NOT MET (Bench).
- Sprachen. nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja und zh-Hans, als maschinelle Übersetzungen, die kein Muttersprachler geprüft hat; Englisch ist die Referenz, und Läufe in anderen Sprachen dauern etwa doppelt so lange (
docs/i18n.md).
Neu in 0,39#
0,39 fügt keine Funktion hinzu und ändert kein Ergebnis; die Ausgabe der Engine ist die Ausgabe von 0,38. Es behebt eine Sache auf der Kommandozeile, aktualisiert Abhängigkeiten der Werkzeuge für die Kreuzvalidierung und nennt die Urteile des Benchmarks vollständig.
- Kommandozeile.
kshana kinds | head(jede geschlossene Standardausgabe) bricht nicht mehr mit einer Panik ab: Das Programm beendet sich leise mit Status 141, wie andere Werkzeuge bei einer geschlossenen Pipe. Andere Schreibfehler melden sich weiterhin selbst. - Dependencies.
memmap20.9.11 in den beiden ANISE-Kreuzprüfungs-Sperrdateien undpillow13.0.0 undcertifi2026.10.19 in den Versionsfestlegungen der Umgebung für die unabhängige Referenz, alles unterxval/: Nichts, was ausgeliefert wird, hat sich geändert. - kshana-bench, alle Urteile. Gegen die vorregistrierten Zielwerte sind drei NOT MET, jeder durch einen Test festgehalten: A2 (
agc_k_sigmaAUC 0,766 gegenüber mindestens 0,80), D1 (größte Lücke 0,0301) und Aufgabe (b) R1 (übernommen, nicht erneut ausgeführt). Kein Zielwert wurde gelockert (Bench).
Neu in 0,38#
0,38 macht den neutralen Schiedsrichter messbar: Es bewertet Empfängerprotokolle gegen einen veröffentlichten Testplan, liest mehr Empfänger und Sensoren, testet Zeitgebungssysteme und liefert einen Benchmark und ein Störungsobservatorium. Es bleibt beratend: Nichts davon ist zertifiziert, kein Ergebnis ist eine Typzulassung, und nichts sendet. Jede Zeile nennt, was das Register dafür enthält (wie eine Kennzeichnung erworben wird); ein Status nennt nur, was geprüft wurde, und die Registerzeile und die verlinkte Seite sagen, was nicht geprüft wurde.
| Neu in 0,38 | Was es tut und warum | Registerstatus | Gelesen |
|---|---|---|---|
| Jammertest-Bewertung | kshana jammertest import liest den veröffentlichten NPRA-Testkatalog und Sendeplan als geplante Referenzwahrheit; jammertest score bewertet ein Empfängerprotokoll je Test (Erkennungslatenz, verpasste Alarme, Fehlalarme, Zeit bis zur Erholung), als signiertes Nachweispaket, wenn Sie einen Schlüssel angeben |
MODELLED: eine Registerzeile. Die Zielwerte wurden vor jedem bewerteten Lauf vorregistriert; bei den Daten von JammerTest 2024 scheiterte die Mindestdatenregel in beiden Läufen (4 und 7 bewertbare Fenster gegenüber 10 verlangten), sodass kein Zielwert beurteilbar ist und nichts beansprucht wird | Jammertest |
| Die eigenen Flags des Empfängers | UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG und NovAtel RXSTATUS werden in einen self_report je Epoche gelesen und mit den Alarmen von Kshana verglichen (beide, nur Empfänger, nur Kshana, keiner); ein Septentrio-SBF-Leser und eine schreibgeschützte Eingabe --serial |
MODELLED; die Übereinstimmung zwischen dem Detektor eines Empfängers und dem von Kshana ist keine Validierung | Empfängervertrauen |
| Mehr Empfänger und Sensoren | RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0 (aus den BSD-lizenzierten pyrtcm-Tabellen, nicht aus dem RTCM-Text), GNSS-SDR-Monitorströme, ein IMU-Protokoll als zweiter Sensor, ein ROS-2-Paket, eine Brücke gnss_lib_py und imu-fit für hybride Sensorparameter |
MODELLED: sechs Registerzeilen; nur selbst geschriebene Testdaten, es wurde keine Aufzeichnung von einem echten Empfänger, einer IMU, einem GNSS-SDR-Lauf oder einem ROS-Graphen gelesen | Maschineneingaben |
| Zeitgebungs- und Holdover-Tests | Der Typ holdover-test bewertet einen Holdover-Test (GNSS vom Betreiber entfernt, Holdover, Erholung) aus einer gemessenen Zeitfehleraufzeichnung gegen ITU-T-Masken, „gegen die Maske gemessen“; Leser für linuxptp- und chrony-Protokolle; die Hardwarestufen und das Feld lab-attestation |
MODELLED: zwei Registerzeilen; die Zeiten sind die Angabe des Betreibers, nicht verifiziert | Zeitgebungs-HIL, Hardwaresicherheit |
| Standards-Pakete, LunaNet AFS, Laborkreislauf | bewertete Pakete für DHS RPCF, IMO MSC.1/Circ.1575 und ICAO Doc 9849 Appendix F gegen vor dem Lauf festgelegte Zielwerte, „liefert Belege für“; eine Querverbindung zu NIST IR 8323r1; ein Codegenerator und Prüfer für LunaNet AFS; ein signiertes Paket, das Szenario, Testbedingungen, Empfängerprotokoll und Bewertung eines Laborlaufs verknüpft | MODELLED für die Pakete und den Kreislauf; die AFS-Codeprüfung ist VALIDATED gegen ihre gedruckten Prüfspalten (siehe die Registerzeilen) | Standards, LunaNet AFS |
| kshana-bench und das Observatorium | feste Aufgaben, Aufteilungen und Metriken für Störungserkennung, IQ-Erkennung, Holdover-Vorhersage und die Optimismuslücke, mit einem versiegelten zurückgehaltenen Datensatz und einer statischen Rangliste; ein reproduzierbares tägliches Störungsprodukt mit 24 h Verzögerung, groben Zellen und ohne Zuschreibung | keine eigene Registerzeile: Es bewertet Einreichungen, und seine Basislinien sind in den Ergebnisdateien als MODELLED gekennzeichnet; gegen die vorregistrierten Zielwerte sind der Bewerter, C1 bis C3 und D2 erreicht, und drei Zielwerte sind NOT MET (durch Tests festgehalten): A2 (agc_k_sigma AUC 0,766 gegenüber mindestens 0,80 auf dem Testsplit), D1 (größte Lücke 0,0301) und Aufgabe (b) R1 (übernommen, nicht erneut ausgeführt); siehe xval/bench/RESULTS-v2.md |
Bench, Observatorium |
| Exporter | Vertrauenstelemetrie als Home-Assistant-MQTT-Discovery- und Zustandsnachrichten (nur Veröffentlichung, keine Zugangsdaten) neben Prometheus, CEF, LEEF und OTLP | MODELLED: eine Registerzeile | Vertrauens-Telemetrie |
| Optische Verbindungsmarge über die Zeit | Der Typ optical-atmosphere kann eine mit Seed erzeugte Realisierung des Wetters eines Standorts als Reihe der Verbindungsmarge schreiben |
MODELLED: eine Registerzeile; eine Ziehung aus dem Modell, nicht das Klima | Optische Atmosphäre |
Die Höhepunkte von 0,37: Änderungsprotokoll. Die vollständige Liste von 0,38 steht im Änderungsprotokoll.
0,38 im Detail#
Jede Fähigkeit aus der Tabelle oben, in wenigen Zeilen: was sie tut, ein Befehl, um sie auszuführen, ein Bild aus einem echten Lauf der Engine und was das Register dafür enthält. Die Bilder werden von tools/gen_figures_038.py nach docs/figures/0.38/ geschrieben (nie von Hand gezeichnet): python3 tools/gen_figures_038.py schreibt sie aus einer gebauten Engine neu, und --check schlägt fehl, wenn eines veraltet ist oder seine Bildunterschrift hier abweicht. Wo eine Eingabe ein Protokoll ist, ist es ein erfundenes, das das Skript schreibt, weil die echten Protokolle Dritter nie mitgeliefert werden, und die Bildunterschrift sagt das. Alles Folgende ist beratend: nicht zertifiziert, keine Typzulassung, und nichts sendet. Ein Status nennt, was geprüft wurde, und nichts weiter; wie eine Kennzeichnung erworben wird.
Jammertest-Bewertung#
kshana jammertest import macht aus dem veröffentlichten NPRA-Testkatalog und Sendeplan eine geplante Referenzwahrheit, und kshana jammertest score bewertet ein Empfängerprotokoll dagegen: für jeden geplanten Test, ob er erkannt wurde, wie spät und wie lange der Empfänger zur Erholung brauchte, dazu Fehlalarme außerhalb jedes Slots. Der Katalog wird abgerufen, nie mitgeliefert.
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. Die Zielwerte wurden vor jedem bewerteten Lauf festgelegt; bei den Daten von JammerTest 2024 scheiterte die Mindestdatenregel in beiden Läufen, sodass kein Zielwert beurteilbar ist und nichts beansprucht wird. Jammertest.
Die eigenen Flags des Empfängers#
UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG und NovAtel RXSTATUS werden in einen self_report je Epoche gelesen und neben die Alarme von Kshana gestellt: beide, nur Empfänger, nur Kshana oder keiner. Ein Septentrio-SBF-Leser und eine schreibgeschützte Eingabe --serial speisen denselben Vergleich. Keine der beiden Seiten ist Referenzwahrheit.
kshana receiver-trust session.toml # [log] format = "ubx", path = "receiver.ubx"
Registerstatus: MODELLED. Die Übereinstimmung zwischen dem Detektor eines Empfängers und dem von Kshana ist keine Validierung. Empfängervertrauen.
Mehr Empfänger und Sensoren#
RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0, GNSS-SDR-Monitorströme, ein IMU-Protokoll als zweiter Sensor, ein ROS-2-Paket und eine Brücke gnss_lib_py münden alle in dieselbe Zeitleiste des Empfängervertrauens. imu-fit liest die Sensorparameter, die die Hybrid- und Fusionsszenarien brauchen, aus einem Protokoll einer ruhenden IMU, sodass ein Szenario mit dem Sensor ausgeführt werden kann, den Sie tatsächlich haben.
kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
Registerstatus: MODELLED. Nur selbst geschriebene Testdaten; es wurde keine Aufzeichnung von einem echten Empfänger, einer IMU, einem GNSS-SDR-Lauf oder einem ROS-Graphen gelesen. Maschinelle Eingaben.
Zeitgebungs- und Holdover-Tests#
Der Typ holdover-test bewertet einen Holdover-Test (GNSS vom Betreiber entfernt, Holdover, Erholung) aus einer gemessenen Zeitfehleraufzeichnung gegen ITU-T-Masken und sagt das mit diesen Worten: gegen die Maske gemessen. Leser für linuxptp- und chrony-Protokolle speisen ihn; die Hardwarestufen und das Feld lab-attestation sagen, wer was angegeben hat.
kshana scenarios/holdover-test-example.toml
Registerstatus: MODELLED. Die Zeiten, zu denen GNSS entfernt und wiederhergestellt wurde, sind die Angabe des Betreibers, nicht verifiziert. Zeitgebungs-HIL, Hardwaresicherheit.
Standardpakete#
Bewertete Pakete für die Resilient-PNT-Testprofile des DHS, IMO MSC.1/Circ.1575 und ICAO Doc 9849 Appendix F, dazu eine Querverbindung zu NIST IR 8323r1 in compliance-report. Jeder Test führt ein mitgeliefertes Szenario aus und vergleicht ein Ergebnisfeld mit einem vor dem Lauf festgelegten Zielwert; ein Test, der ein Empfängerprotokoll braucht, wird als eingabebedürftig aufgeführt, nicht bewertet. Die Formulierung lautet „liefert Belege für“.
kshana standards-pack list
kshana standards-pack run imo-circ-1575
Registerstatus: MODELLED. Ein erreichter Zielwert besagt, dass ein modelliertes Szenario einen genannten Zielwert erreicht hat, nichts über ein Produkt; jede Verfehlung bleibt erhalten und ist durch einen Test festgehalten. Standards.
LunaNet AFS#
Der Codegenerator für das LunaNet Augmented Forward Signal (Gold-, Weil- und Tertiärcodes, der Nachrichtenrahmen und seine Fehlerkodierung) und ein Prüfer für einen aufgezeichneten oder erzeugten Symbolstrom, festgelegt auf eine Ausgabe der Spezifikation.
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 die Code- und Synchronisationsprüfungen, gegen die Werte, die die Spezifikation druckt (und als TBC kennzeichnet); eine Prüfung ist NOT MET, beibehalten und durch einen Test festgehalten (eine gedruckte Tertiärcode-Spalte weicht ab: Das Dokument druckt denselben Wert für zwei PRNs). Die LDPC- und CRC-Wörter der Subframes 2 bis 4 werden nicht geprüft. Die Registerzeilen sagen genau, welche. LunaNet AFS.
Laborkreislauf#
kshana.test-conditions/1 ist eine veröffentlichte Beschreibung dessen, was ein Labor getan hat (Ereignisse, Zeiten, Leistungen). kshana evidence round-trip verknüpft den Szenario-Hash, den Bedingungs-Hash, den Hash des Empfängerprotokolls und die Bewertung zu einem signierten Paket und weist ein Paket zurück, dessen Bedingungen und Bewertungsszenario bei den Ereignissen nicht übereinstimmen. Kshana erzeugt oder spielt nie ein Signal ab: Wie ein Szenario einen Empfänger erreichte, liegt in der Verantwortung des Betreibers.
kshana evidence --help
Das Bild zeigt den Aufbau eines Pakets. Registerstatus: MODELLED. Testbedingungen, Prüfstand.
kshana-bench#
Feste Aufgaben, Aufteilungen und Metriken für Störungserkennung, IQ-Erkennung, Holdover-Vorhersage und die Optimismuslücke, mit einem versiegelten zurückgehaltenen Datensatz und einer statischen Rangliste. Es bewertet Einreichungen; es ist keine Rangfolge von Empfängern.
kshana bench baseline --task d --split test --out results/
Registerstatus: keine eigene Registerzeile; die Basislinien sind in den Ergebnisdateien als MODELLED gekennzeichnet. Gegen die vorregistrierten Zielwerte sind der Bewerter, C1 bis C3 und D2 erreicht, und drei Zielwerte sind NOT MET, jeder durch einen Test festgehalten: A2 (agc_k_sigma AUC 0,766 gegenüber mindestens 0,80 auf dem Testsplit), D1 (größte Lücke 0,0301) und Aufgabe (b) R1 (aus der früheren Kampagne übernommen, nicht erneut ausgeführt). Die Zahlen stehen in xval/bench/RESULTS-v2.md. Bench.
Störungsobservatorium#
Ein Produkt pro UTC-Tag und Region aus einem offenen Archiv von Flugzeugpositionen, auf einem festen groben Gitter: Jede Zelle ist degraded, not degraded oder not observed (was nicht „unauffällig“ bedeutet). Freigegeben frühestens 24 h nach Ende des Tages, mit unterdrückten kleinen Zellen und ohne Zuschreibung der Ursache.
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/
Das Bild zeigt die festgeschriebenen Beispieltage, kein Produkt des Observatoriums. Registerstatus: MODELLED: keine externe unabhängige Referenz, keine Referenzwahrheit und keine Ursachenzuschreibung; eine Zelle, die not observed ist, wurde nicht bewertet, was nicht dasselbe ist wie unauffällig. Methode des Observatoriums.
Exporter#
Vertrauenstelemetrie als Prometheus-Text, CEF, LEEF, OTLP sowie Home-Assistant-MQTT-Discovery- und Zustandsnachrichten. Der Befehl veröffentlicht nur an ein von Ihnen angegebenes Ziel und hält keine Zugangsdaten.
kshana trust-telemetry --result session.result.json --print-metrics
kshana trust-telemetry --result session.result.json --print-syslog --format cef
Registerstatus: MODELLED. Vertrauenstelemetrie.
Optische Verbindungsmarge über die Zeit#
Der Typ optical-atmosphere kann eine mit Seed erzeugte Realisierung des Wetters eines Standorts als Reihe der Verbindungsmarge schreiben: Wolkenepisoden, je eine Flüssigwassersäule, eine Szintillationsprobe pro Schritt. Die Seite Optical PNT des Studios öffnet die Szenarien der optischen Atmosphäre.
kshana scenarios/optical-atmosphere-network.toml
Registerstatus: MODELLED. Eine Ziehung aus dem Modell, nicht das Klima. Optische Atmosphäre.
Neue Studio-Ansichten#
kshana.dev/studio erhält ein Bridge-Replay (zwei Läufe nebeneinander auf einer Missionsuhr, unter /studio/replay/), eine Seite Optical PNT (/studio/optical/), eine Seite Holdover-Test (/studio/holdover/) und einen Observatoriums-Betrachter (/studio/observatory/). Sie führen dieselbe Engine im Browser aus, nichts wird hochgeladen, und sie tragen dieselbe Hinweisaussage. Die Bilder oben werden von einem Skript aus der eigenen Ausgabe der Engine gezeichnet; sie sind keine Screenshots dieser Seiten.
Navigation für Raumfahrzeugnutzer (gnss-ssv)#
Für ein Raumfahrzeug oberhalb, im Bereich oder weit jenseits der GNSS-Umlaufbahnen: wie viele GNSS-Signale es nutzen kann, wie stark sie sind, wie gut die Geometrie ist und was ein Bordfilter damit tun kann. Ein Typ, vier Modi, gewählt durch die Tabellen des Szenarios: eine Schale von Nutzern (der Zeitanteil mit einem und mit vier Signalen, je Konstellation), eine Trajektorie (Signale, C/N0, Dilution of Precision und das Limb-Strahl-Medium entlang einer Umlaufbahn), ein Navigationslauf (ein Neun-Zustands-Filter auf Pseudoentfernungen, bis zum Mond) und eine Formation (Relativnavigation von Deputies um einen Chief). Die öffentliche Quelle für den Verfügbarkeitsvergleich ist das Heft zum interoperablen GNSS Space Service Volume (UN OOSA ST/SPACE/75, vom International Committee on GNSS), das selbst eine Simulation ist; es wird abgerufen, nie mitgeliefert. Vollständige Seite: 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, und der Vergleich mit dem Heft verfehlt überwiegend. Die Zielwerte wurden vor dem Lauf festgelegt. Von acht sind nur S0 (das inverse Linkbudget, 13 von 13 Werten) und S6 (die Mondmission) erreicht. S1 bis S5 und S7 sind NOT MET: die Geometrie des oberen und unteren Service Volume (43 von 52 und 48 von 52 Zellen), das obere Service Volume bei 15/20/25 dB-Hz, die sechs GEO-Missionen, die HEO-Mission und das parametrische Nebenkeulendiagramm gegen gemessene GPS-Panel-Diagramme. Fast jede Verfehlung in S1 bis S5 betrifft GLONASS, und das Heft druckt dafür zwei verschiedene Bezugswinkel; eine Diagnosevariante, die das andere Paar verwendet, bringt S1, S2 und S4 auf jede Zelle, ersetzt aber nicht den Lauf der Aufzeichnung, und keine Zeile ist VALIDATED. Auch der Absolutfilter des Formationslaufs ist überzuversichtlich (mittlerer normierter quadrierter Fehler weit über dem Wert von etwa 3, den ein konsistenter Filter ergibt).
Navigation für Raumfahrzeugnutzer, was der Vergleich zeigt.
Mondinfrastruktur (lunar-infrastructure)#
Die Mondumlaufbahn und die Mondoberfläche als Navigations- und geodätische Infrastruktur, in fünf Studien, gewählt durch study: od-consistency (eine Bahnbestimmung an Bord aus Erd-GNSS in einer Halo-Umlaufbahn gegen eine unabhängige am Boden), carrier-phase (Festlegung der ganzzahligen Mehrdeutigkeit zwischen Oberflächenstationen und einem Orbiter), frame-coestimation (das Mond-Datum aus Entfernungsmessung von Erdstationen mit und ohne Orbiter-Verbindungen), space-tie (Laser-, VLBI- und GNSS-Versätze an einem Raumfahrzeug gegen den Fehler der lokalen Anbindung) und geodesy-sensitivity (welche Observablenfamilie die Love-Zahlen h2, k2 und l2 sieht). Das Modell ist ein eingeschränktes Dreikörpermodell mit genannten Vereinfachungen und illustrativen Eingaben. Vollständige Seite: 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, und drei Zielwerte sind NOT MET. Die Numerik wird gegen unabhängige numpy- und scipy-Programme geprüft; nichts wird mit einer Messung einer Mondgröße verglichen, und nichts ist VALIDATED. Erreicht: Die beiden Bahnlösungen sind konsistent (mittleres q 5,81 gegenüber 6 erwartet), und Orbiter-Verbindungen heben den kleinsten Datum-Eigenwert um etwa das 111-Fache an, bei bekannter Umlaufbahn. Nicht erreicht: Der eingespeiste Modellfehler von 3e-10 m/s2 wird nicht erkannt (C3: Die Bordlösung ist auf etwa 350 m bekannt, sodass sich etwa zehn Meter in ihrer Kovarianz verbergen); das Festlegen der ganzzahligen Mehrdeutigkeit gelingt nicht (1 bis 3 % Erfolg bei 25 dBi, und bei den registrierten 12 dBi lässt sich das Problem nicht bilden); und die Spurhälfte von G3 für das Hinzufügen einer Observablenfamilie (die Spur stieg bei 12 von 28 Hinzufügungen, jedes Mal, weil die Familie den Rang erhöhte). Jede Verfehlung ist durch einen Test festgehalten. Mondinfrastruktur.
Kshana Studio#
Öffnen Sie kshana.dev/studio, und die gesamte Engine läuft in Ihrem Browser, zu WebAssembly kompiliert. Es ist nichts zu installieren, und nichts wird hochgeladen. Das Studio hat zwei Ansichten derselben Engine, und ein Schalter in der Kopfzeile wechselt zwischen ihnen, wobei Szenario, Ansicht und alle geänderten Einstellungen erhalten bleiben.
Die einfache Ansicht ist das, womit das Studio sich öffnet. Sie geht von Fragen aus (wie viele Satelliten kann ich sehen, kann ich meiner Positionslösung vertrauen, wie lange kann eine Uhr die Zeit halten, was macht ein Jammer mit meinem Empfänger) und von einer Karte von allem, was die Engine kann, jeder Bereich mit seinem Anteil validierter Methoden. Öffnen Sie ein Szenario, und die Antwort kommt zuerst: ein schlichter Satz, geschrieben für das, was dieses Szenario misst, dann seine Kennzahlen und ein Diagramm. Höchstens fünf Einstellungen sind sichtbar, die, die die Antwort am meisten verändern; der Rest wartet unter Erweiterte Einstellungen. So wird das berechnet erklärt die Methode, und Für Forschende gibt die eigenen Zahlen der Engine, die Szenariodatei, den Code, um es aus Python auszuführen, und die Zitierung.

Die erweiterte Ansicht ist das vollständige Dashboard: die Szenariobibliothek, fünf nummerierte Schritte (Wählen, Einstellen, Ausführen, Ergebnisse lesen, Teilen oder exportieren), die Kennzahlen mit Chips PASS und FAIL, wo der Lauf einen Schwellenwert angibt, und jedes Panel: Übersicht, Diagramme, Karten, Wiedergabe, der Bericht der Engine und Exporte. Ein Suchfeld erreicht Szenarien, Bereiche und die Felder darin, und Sie können bis zu vier Läufe anheften und nebeneinander vergleichen.
Der Startbildschirm der einfachen Ansicht und die erweiterte Ansicht nach einem Lauf


Der Quelltext des Studios und seine Build-Hinweise stehen in web/README.md.
Die Website#
Der Rest von kshana.dev wird aus den eigenen Dateien und Engine-Läufen dieses Repositorys gebaut: Missionen, Fähigkeiten, das Nachweisregister, die veröffentlichte Forschung und die Editionen.

Fähigkeiten#
Eine Engine deckt die gesamte Ausfallkette ab, vom ersten gestörten Satelliten bis zur letzten Nanosekunde des Uhren-holdover. Die Engine hat 92 Szenarioarten; kshana kinds listet sie auf, und docs/SCENARIOS.md dokumentiert jedes Feld.
| Fähigkeit | Was es beantwortet |
|---|---|
| Spektrum | wie ein Jammer das GNSS-L-Band belegt, Band für Band, Sekunde für Sekunde |
| Uhren und Zeitgebung | wie lange jede Uhr die Zeit hält, nachdem GNSS verloren ist |
| Konstellationen um jeden Körper | Abdeckung, Dilution of Precision und Verfügbarkeit um die Erde, den Mond oder den Mars |
| Sonnensystem | wo jeder Planet steht und die Lichtlaufzeit jeder Verbindung |
| Navigation im niedrigen Erdorbit | ein Überflug, eine Verbindung, eine Navigationsnachricht und eine fusionierte Lösung, Stufe für Stufe |
| Kampagnen | eine verkettete Mission, ein Sweep oder ein Monte-Carlo-Ensemble in einem Szenario |
| Animation | die Zeitreihe eines Laufs als animierte Zeichnung, ein Player oder Einzelbilder |
| Berichte | jede Größe mit ihrer Einheit und ihrer Beschriftung, in HTML (HyperText Markup Language) und JSON (JavaScript Object Notation) |
| Interoperabilitäts-Exporte | Umlaufbahnen und Geometrie für andere Werkzeuge: SP3, CCSDS OMM und OEM, CZML, KML, GeoJSON, STK und SigMF |
| Maritimer Vertrauenswert | kann die Brücke dieser Lösung vertrauen: ein Wert von 0-100 und Gründe für die NMEA-Daten eines Schiffes, live oder aus einem Protokoll (beratend, keine typzugelassene Navigationsausrüstung) |
| NMEA-Trainingsdatenströme | synthetische Brücken-NMEA-Daten mit geskriptetem Jamming und Spoofing und einem Ausbilderprotokoll, für das Training von Besatzungen (nur Text; nie für die Live-Navigationssysteme eines Schiffes; beratend, keine typzugelassene Navigationsausrüstung) |
| Störungskarte | wo Flugzeuge und Schiffe beeinträchtigte Navigationsdaten gemeldet haben und wie viel einer Route davon berührt wird |
| Senderregion | wo sich unter genannten Annahmen eine Quelle gestörter Positionsmeldungen befinden kann: Regionen bei genannter Konfidenz, ein Schwerpunkt mit seiner Ellipse, nie ein Punkt (MODELLED; kshana interference-map locate) |
| Nachweispakete | ein signierter, offline verifizierbarer technischer Nachweis des Protokollfensters eines Schiffes und dessen, was die Engine daraus berechnet hat, für einen Vorfallbericht (beratend, keine typzugelassene Navigationsausrüstung) |
| Vertrauens-Telemetrie | der Vertrauensstrom als Prometheus-Metriken, SIEM-Ereignisse und optional OpenTelemetry, mit einem Beispiel-Grafana-Dashboard (deploy/grafana/kshana-gnss-trust.json) |
| Signal K und OpenCPN | der Vertrauenswert auf dem Signal-K-Server eines Bootes und in OpenCPN, mit einem Referenz-Build für einen kleinen Rechner neben dem Empfänger (beratend, keine typzugelassene Navigationsausrüstung) |
| Export für den Prüfstand | kshana bench-export: die Fahrzeugbewegung und die Ereignisse eines Szenarios für einen GNSS-Simulator im Labor (es wird kein Signal geschrieben) und wie das Protokoll des Empfängers danach bewertet wird |
| Compliance-Zuordnung und -Bericht | kshana compliance-report: für welche Zeilen öffentlicher Resilienz-Rahmenwerke ein Satz von Läufen Belege liefert und welche Lücke bleibt |
| Notebooks | ausführbare Tutorials: Schiffsvertrauen und Trainingsströme, eine Routenexposition der Störungskarte, Compliance-Zuordnung und der Prüfstand, Quanten gegen klassisches GDOP |
| Galileo-OSNMA-Verifizierer | welche Navigationsdaten von Satelliten ein Empfänger kryptographisch authentifizieren kann und warum eine Prüfung fehlschlägt; Kshana gewährt keine Rechte an den ICD-IPRs der EU zu OSNMA (siehe den HINWEIS auf der Seite) |
Die Exportformate im Einzelnen: SP3 ist Standard Product 3; CCSDS OMM und OEM sind die Orbit Mean-elements Messages und Orbit Ephemeris Messages des Consultative Committee for Space Data Systems; CZML und KML sind die Cesium und Keyhole Markup Languages; STK ist Systems Tool Kit; SigMF ist das Signal Metadata Format.
Jede Fähigkeit, gezeichnet aus einem echten Lauf: das L-Band-Wasserfalldiagramm, die Abdeckungskarte, das Sonnensystem und ein Überflug im niedrigen Erdorbit
Führen Sie jedes davon mit kshana example <scenario> > s.toml && kshana s.toml aus: die Szenarien sind l-band-waterfall-jamming, constellation-multi-gnss-coverage, solar-system-tour und leo-pass-iridium.
Die maritimen und Störungsfähigkeiten, gezeichnet aus festgeschriebenen synthetischen Eingaben: ein Vertrauenswert, eine Störungskarte mit Routenexposition, ein Trainingsstrom und ein Nachweispaket
Alle vier sind erfundene Daten und beratend: Sie zeigen das Format und das Verhalten der Software, nicht, wie sich irgendein Empfänger oder System gegenüber Störungen verhält. Führen Sie das erste mit kshana receiver-trust examples/maritime-trust/session.toml aus, das zweite mit kshana route-exposure auf den Beispielen in examples/interference-map/, das dritte mit kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea (nur zu Trainingszwecken: nie in Live-Navigationsausrüstung einspeisen) und das vierte wie in docs/EVIDENCE-PACKS.md.
Die vollständige Fähigkeitstabelle, Bereich für Bereich
Es folgt die vollständige Aufstellung Bereich für Bereich; für ein Reifegrad-Register je Fähigkeit siehe docs/CAPABILITY.md und docs/VALIDATION.md.
| Bereich | Fähigkeit |
|---|---|
| Bahn & Geometrie | SGP4/SDP4-Propagation (validiert auf 4,12 mm gegen alle 666 Vektoren von AIAA 2006-6753); echte Two-Line-Elements (ein festgeschriebener, mit Datum versehener Celestrak-Schnappschuss gps-ops) oder synthetische Walker-Delta-Konstellationen, deren mittlere Elemente die Formel i:T/P/F auf unter 1 km über eine Propagation von 24 h verwirklichen; Sichtbarkeit mehrerer Konstellationen, Dilution of Precision — geometrisch, Position, horizontal, vertikal und Zeit (GDOP/PDOP/HDOP/VDOP/TDOP), validiert auf 1e-6 gegen gnss_lib_py 1.0.4, Stanford NAV Lab (Navigation and Autonomous Vehicles Laboratory), und GNSS-Verfügbarkeit; ein gradientenfreier Optimierer für den Konstellationsentwurf, eine Dimensionierung der minimalen Satellitenzahl nach dem Streets-of-Coverage-Verfahren, ein Vergleichswerkzeug für mehrere Konstellationen und ein Walker-Entwurfs-Sweep, der Abdeckung / PDOP / Wiederbesuchszeit über ein Raster Ebenen × Satelliten tabelliert und die Pareto-optimalen Entwürfe berichtet. |
| Numerischer Propagator | Ein numerischer Cowell-Propagator (src/propagator.rs), der den analytischen SGP4/SDP4-Pfad ergänzt, mit einem hierarchischen Kraftmodell mit sieben Störungen (src/forces.rs): Zweikörper + das volle zonale Feld J2–J6 (die zonalen Oberflächenkoeffizienten der Erdabplattung J2 bis J6; der exakte analytische Gradient ihres Störpotentials), ein optionales tesserales Kugelflächenfunktions-Geopotential EGM2008 bis Grad/Ordnung 70 (Earth Gravitational Model 2008; src/gravity_sh.rs; echte Koeffizienten der NGA — der US-amerikanischen National Geospatial-Intelligence Agency —, normalisierte Legendre-Rekursion nach Holmes–Featherstone, gegen die geschlossenen Legendre-Funktionen und die analytische ∇V-Identität gegengeprüft), epochengesteuerte Drittkörper-Gravitation von Sonne und Mond (eine eingebaute Ephemeride geringer Genauigkeit, ohne DE/SPK — Development Ephemeris / SPICE Spacecraft and Planet Kernel — Kernel), Strahlungsdruck der Sonne (Kanonenkugelmodell mit konischem Kern- und Halbschattenmodell), atmosphärischen Widerstand (stückweise exponentielle Dichte nach Vallado, mitrotierende Atmosphäre), die post-newtonsche relativistische Schwarzschild-Korrektur und den Lense–Thirring-Term der Bezugssystemmitführung (IERS — International Earth Rotation and Reference Systems Service — Conventions 2010 §10, linear im Drehimpuls der Erde, ~1–2 Größenordnungen unter Schwarzschild) — angetrieben von einer Wahl aus zwei adaptiven Integratoren (RK4 — Runge-Kutta vierter Ordnung — mit Schrittverdopplung oder dem eingebetteten Paar Dormand–Prince RK5(4)). Validiert gegen Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — 278 Epochen über LEO (niedriger Erdorbit) + GTO (geostationärer Transferorbit), die konservativen Kraftstufen stimmen bis zu einem ungünstigsten Fall von |Δr| 0,08 m über 24 h überein (tests/numerical_cowell_propagator_reference.rs); die Stufe des atmosphärischen Widerstands wird gesondert charakterisiert (≈ 333 m / 24 h), und die absoluten Eingaben der Sonnen-/Mond-Ephemeride und der Dichte bleiben ehrlich modelliert. Zusätzliche interne Belege (keine externe Validierung): Die ungestörte Umlaufbahn wird gegen die exakte Kepler-Lösung in universellen Variablen auf unter einen Meter über 24 h geprüft, Energie und Drehimpuls bleiben auf ~1e-9 erhalten, und jede Störung entspricht einer von Hand abgeleiteten geschlossenen Signatur. |
| Manöver & Trajektorienentwurf | Impulsive ΔV-Knoten mit Kovarianzfortpflanzung 6×6 (ECI — erdzentriert inertial — / LVLH — lokale Vertikale, lokale Horizontale — Ausführungsfehler-Systeme), Integration endlicher Brenndauer, gegen die geschlossene Tsiolkovsky-Raketengleichung auf < 0,01 % geprüft, ein Lambert-Löser nach Izzo-2015 für eine Umdrehung, ein exakter Kepler-Propagator in universellen Variablen und ein Porkchop-Sweep (Start × Ankunft) von C3 (Startenergie) / Ankunfts-V∞ als JSON-Konturraster — die Ebene der Leistungssimulation oberhalb von GMAT/Orekit, wobei jede Lambert-Ausgabe gegen die Zweikörper-Wahrheit zurückgerechnet und das Porkchop-Minimum gegen die analytische Hohmann-Untergrenze geprüft wird. |
| Zeitsysteme und Bezugssysteme | IERS-Schaltsekunden-Skalen UTC / TAI / TT / UT1 (Koordinierte Weltzeit, Internationale Atomzeit, Terrestrische Zeit und die Erdrotationszeit Universal Time 1), eine Julianisches-Datum-API (Programmierschnittstelle), der Erdrotationswinkel (ERA) der IAU-2000 (Internationale Astronomische Union), GMST-basiertes (Greenwich Mean Sidereal Time) TEME ↔ ECEF (wahrer Äquator, mittleres Äquinoktium ↔ erdzentriert, erdfest) mit geodätischen Systemen WGS-84 (World Geodetic System 1984), IAU-2006-Präzession (Fukushima–Williams), die vollständige Nutation IAU 2000A/2000B, die IERS-Polbewegung und die äquinoktiumfreie CIO-basierte Reduktion IAU 2006/2000A GCRS↔ITRS (CIO = Celestial Intermediate Origin) — alle Bit für Bit gegen die SOFA/ERFA-Vektoren validiert und unabhängig gegen ANISE gegengeprüft (die reine Rust-Neuimplementierung von NAIF/SPICE; NAIF = die Navigation and Ancillary Information Facility der NASA, der US-amerikanischen National Aeronautics and Space Administration): GCRS→ITRS von kshana gegen ITRF93 von ANISE (International Terrestrial Reference Frame 1993) aus earth_latest_high_prec.bpc von JPL, wobei dieselben IERS-Erdorientierungsparameter in beide eingespeist werden, stimmen auf ≤ 0,86 m am Boden / ≤ 3,6 m in GNSS-Umlaufbahn überein (max 0,028″) über acht Epochen 2020–2023. |
| Inertial | Dreiachsiges Strapdown-INS — Quaternionen-Lage, WGS-84-NED-Mechanisierung (Nord-Ost-Unten), Coning-/Sculling-Kompensation und ein deterministisches IMU-Fehlermodell (Skalenfaktor, Fehlausrichtung, g-Empfindlichkeit, Quantisierung, Drift); ein Kaltatom-Interferometer-Beschleunigungsmesser aus ersten Prinzipien (Mach–Zehnder-Phase, Quantenprojektionsrauschen, Kontrastabfall, Schwingungskopplung), der den Koeffizienten des Geschwindigkeits-Zufallsgangs ableitet; und ein Partikelfilter mit sequentieller Wichtungs-Neuabtastung für kartengestützte (gelände-/schwerefeldreferenzierte) GPS-freie Navigation. |
| Alt-PNT (ohne GPS) | Ein Messmodell für ein Kaltatom-Gravimeter, dessen Weißrauschen-Untergrenze (σ = ASD/√τ, ASD = spektrale Amplitudendichte) aus der Physik des CAI-Beschleunigungsmessers abgeleitet wird; ein Kugelflächenfunktions-Schwereanomaliefeld niedrigen Grades, voll normiert (gegen die geschlossenen Legendre-Funktionen und eine von Hand abgeleitete Einterm-Anomalie geprüft), plus synthetische Mascons; der Syntheseoperator für Schwerefunktionale (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — der „Kartenleser“, gegen den ein schwerefeldgestützter Navigator abgleicht — wird gegen den Normalschwerestandard GRS80 (Geodetic Reference System 1980) validiert, gibt die geschlossene Somigliana-Normalschwere und die veröffentlichten γ_e / γ_p auf 3.5e-12 wieder und erzeugt eine physikalisch beschränkte Störungskarte aus dem echten ICGEM-Feld (International Centre for Global Earth Models) EGM2008 (RMS — Effektivwert — ≈ 26 mGal, max ≈ 89 mGal bei d/o 70; tests/icgem_gravity_reference.rs); und ein Partikelfilter für den Schwerekartenabgleich, der aus der durchflogenen Anomaliefolge eine GPS-freie Spur zurückgewinnt. Er erstreckt sich auf geländereferenzierte Navigation (TERCOM/SITAN — Terrain Contour Matching / Sandia Inertial Terrain-Aided Navigation — gegen ein DEM (digitales Höhenmodell) der SRTM (Shuttle Radar Topography Mission) .hgt, src/altpnt/terrain.rs), ein geomagnetisches Hauptfeld IGRF-14 (International Geomagnetic Reference Field der 14. Generation) bis Grad/Ordnung 13 (src/igrf.rs, gegen die geschlossene Form des geneigten Dipols und ∇V-Finite-Differenzen geprüft) und einen kombinierten Navigator aus Schwere + Magnetik + Gelände, der alle drei skalaren Kanäle durch einen Partikelfilter fusioniert (Information ist additiv — kein Kanal verschlechtert die Lösung). Ein 60-Minuten-Benchmark ohne GPS (ein Ausfall von ~700 km / einer Stunde, in dem die inertiale Lösung auf ~70 km driftet) wird von einem hierarchischen Grob-zu-fein-Abgleicher auf ~145 m (< 500 m) zurückgewonnen — das Ziel Quantum Wayfarer des ESA NAVISP (Navigation Innovation and Support Programme). |
| Fusion | Lose gekoppeltes 15-Zustands-GNSS/INS-Fehlerzustands-EKF (erweitertes Kalman-Filter) mit Rückkopplung im geschlossenen Kreis (das Paket gnss-ins); eine eng gekoppelte Pseudoentfernungsaktualisierung, die auch mit weniger als vier Satelliten weiter korrigiert; ein gekoppeltes Filter für Uhr + Position; ein allgemeiner Unscented-(Sigma-Punkt-)Kalman-Schätzer für stark nichtlineare Messungen; ein eng gekoppelter GNSS/INS-UKF-Navigator (Pseudoentfernung + Doppler), dessen Bahn-Coast mit Kraftmodell auf Selbstkonsistenz auf 0,77 m RMS über einen 30-minütigen gekrümmten LEO-Überflug mit einem GNSS-Ausfall von 120 Sekunden geprüft wird (eine Filterkonsistenzgröße, keine Validierung gegen eine externe unabhängige Referenz — dieser Navigator bleibt MODELLED); und ein vollständiger eng gekoppelter 17-Zustands-GNSS/INS-UKF (Position, Geschwindigkeit, Lagefehler, Beschleunigungsmesser- und Kreiselbiase, Uhrenversatz und -drift), dessen Quanten-CAI-Koppelnavigation einen Ausfall von 120 Sekunden auf dem abgeleiteten Geschwindigkeits-Zufallsgang des Kaltatom-Beschleunigungsmessers überbrückt. |
| Bahnbestimmung | Wiedergewinnung eines Bahnzustands [r, v] aus der Entfernungsverfolgung durch Bodenstationen, mit dem Kraftmodell aus Zweikörper + J2 und dem RK4-Integrator, zusammen mit einem Gauss–Newton-Batch-Korrektor (determine_orbit_batch, unter einem Meter / mm·s⁻¹ aus rauschfreien Entfernungen, ~2 m bei einer Rauschuntergrenze von 5 m) und einer sequentiellen Unscented-Filter-Variante (determine_orbit_sequential). |
| Beobachtbarkeit & Schätztheorie | Eine allgemeine, wiederverwendbare Schicht für Fisher-Information / Cramér–Rao (src/fim.rs): die Informationsmatrix M = HᵀWH, die untere Cramér–Rao-Schranke, der Rang der Beobachtbarkeit und der Nullraum der Datumsdefekte (Moore–Penrose-Pseudoinverse) und D/A/E/T-optimale Versuchsplanungsgrößen aus einem symmetrischen Jacobi-Eigenlöser. Validiert — Eigenwerte gegen numpy.linalg.eigh, die CRLB-Kovarianz gegen σ²(XᵀX)⁻¹ über numpy.linalg.inv und GNSS-DOP aus der Informationsmatrix, alle auf 1e-9 übereinstimmend (tests/fim_observability_reference.rs), und zusätzlich gegengeprüft gegen die geschlossenen Schranken von Kay (1993) mit Monte-Carlo-Erreichen der CRLB. Sie bildet die Grundlage der DOP-Engine, der CRLB der passiven Geolokalisierung und des Beobachtbarkeitssatzes für absolute Mondstationen (unten). |
| Lunar & cislunar | Ein Erde–Mond-Propagator des kreisförmigen eingeschränkten Dreikörperproblems (CR3BP) im rotierenden System — erhaltene Jacobi-Konstante und alle fünf Lagrange-Punkte (src/cr3bp.rs) — nun mit einer Zustandsübergangsmatrix (STM) 6×6 und einem differentiellen Einzelschießkorrektor (cr3bp_jacobian, propagate_state_stm, differential_correct_halo), der wirklich periodische Halo-/NRHO-Umlaufbahnen (Near-Rectilinear Halo Orbit) erzeugt: Die STM wird gegen finite Differenzen validiert, korrigierte Umlaufbahnen schließen sich bis auf Maschinengenauigkeit, und das Ansetzen des veröffentlichten Apolun-Zustands reproduziert die südliche L2-NRHO 9:2 (L2 = der zweite Lagrange-Punkt Erde–Mond; die Gateway-Umlaufbahn) mit einer Periode von ≈ 6,57 d / einem Perilun von ≈ 3.250 km, konsistent mit den veröffentlichten ≈ 6,56 d / ≈ 3.370 km (eine Lösung des CR3BP — kreisförmig, ohne Sonne —, nicht gegen eine echte Ephemeride von LANS (Lunar Augmented Navigation Service)/Gateway validiert; die selenozentrische MCI/MCMF-Transformation (mondzentriert inertial / mondzentriert, mondfest) der korrigierten Umlaufbahn ist ein Folgeschritt); dazu LunaNet / LNIS-Geometrie (LunaNet Interoperability Specification) für cislunares PNT (Reduktion MCI↔MCMF, selenographische Koordinaten) mit einem ARAIM-Durchlauf am lunaren Südpol, der die Integritätslücke ehrlich zutage fördert: Ein σ_URE (Nutzerentfernungsfehler) von ~30 m treibt das Schutzniveau weit über eine Alarmgrenze von 50 m (src/lunar.rs, scenarios/lunanet-araim.toml); und eine DOP-Augmentation durch Oberflächenbaken (src/lunar_beacon.rs), die zeigt, wie einige vermessene Entfernungsmessbaken auf der Oberfläche die flachen, azimutweiten Sichtlinienzeilen liefern, die einem rein oberhalb stehenden, nur aus Umlaufbahnen bestehenden Satz fehlen — sie lassen das schlecht konditionierte GDOP am Südpol und, über ein Wurzel-Summe-der-Quadrate-Fehlerbudget, die erreichte Positionsgenauigkeit in Metern kollabieren (unter Wiederverwendung des gegen gnss_lib_py validierten DOP-Kerns und der geschlossenen Form der Sichtbarkeit am luftlosen Horizont; die Analyse der Dilution of Precision ist in arXiv:2607,06212 beschrieben). |
| Lunare PNT-Suite | Eine lunare/cislunare Navigationssuite auf dem CR3BP-Kern, jede ein ausführbares kind: Lunar Coordinate Time (lunar-time-offset, src/lunar_time.rs — die säkulare Rate LTC/TCL − TT (LTC = Lunar Coordinate Time; TCL = ihre französische Form, Temps-Coordonnée Lunaire) aus der Eigenpotentialdifferenz + kinetischem Term, berichtet mit dem veröffentlichten Band von 56–59 µs/Tag); eine geodätische lunare VLBI-Laufzeit-Observable (Very-Long-Baseline-Interferometrie) (lunar-vlbi, src/lunar_vlbi.rs — eine Nahfeld-Zweientfernungsdifferenz-Laufzeit + Rate auf einer Erdbasislinie, im Fernfeldgrenzfall gegen das Ebenenwellen-Δ-DOR (delta differential one-way ranging) derselben Codebasis gegengeprüft, Ableitungen durch finite Differenzen verifiziert); ein gemeinsamer Batch-Schätzer für Mehrtechnik-OD + Uhr (lunar-joint-od-clock, src/lunar_combination.rs — eine Gauss–Newton-Anpassung, die VLBI + lunar-lokale Entfernungen + Inter-Satelliten-Entfernungen fusioniert) mit einem Ergebnis zur Fisher-Information-Beobachtbarkeit: Interne Entfernungsmessung allein lässt einen Datumsdefekt eines Starrkörpers mit sechs Freiheitsgraden, sodass die absolute Position einer Oberflächenstation nicht beobachtbar ist, bis eine Anbindung an das Erdsystem hinzukommt — eine VLBI-Laufzeit auf einer Erdbasislinie stellt die Beobachtbarkeit für eine spärliche Konstellation wieder her und schärft die Cramér–Rao-Schranke für eine reiche, wobei sich das absolute Datum bei drei nicht kollinearen Erdstationen schließt (das Beobachtbarkeitsergebnis ist in arXiv:2607,02566 beschrieben); Realisierung des Bezugssystems (lunar-frame-realisation, src/lunar_frame_realise.rs — eine Helmert-Datumsanpassung mit 7 Parametern + eine Orientierungsanbindung nach IAU 2015 WGCCRE — WGCCRE = die IAU-Arbeitsgruppe für kartographische Koordinaten und Rotationselemente); eine Analyse des Service Volume der Klasse Moonlight/LCNS (LCNS = Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs — DOP / Abdeckung / Verfügbarkeit + eine verallgemeinerte Hüllkurve des lunaren ARAIM-HPL/VPL (horizontales/vertikales Schutzniveau), unter Wiederverwendung des gegen gnss_lib_py validierten DOP-Kerns und der LunaNet-Mechanik σ_URE≈30 m); lunares differentielles PNT (lunar-differential-pnt, src/lunar_dpnt.rs — ein lunares Analogon zu differentiellem GNSS / satellitengestützten Ergänzungssystemen (SBAS): exakte Gleichtakt-Auslöschung des Uhrenfehlers + räumliche Dekorrelation erster Ordnung gegen die Basislinie, unter Wiederverwendung des SBAS-Schutzniveaus nach DO-229E — DO-229E ist der Mindestleistungsstandard der RTCA (früher Radio Technical Commission for Aeronautics) für SBAS-Empfänger); und ein an LunaNet/IOAG ausgerichteter Interoperabilitätsexport (IOAG = Interagency Operations Advisory Group; lunar-interop-export, src/lunar_interop.rs — CCSDS-OEM (Orbit Ephemeris Message) + Rundlauf der lunaren Zeitskala im lunaren Körpersystem nach IAU 2015, in den KIF-Umschlag verpackt). Die Evidenzstufen je Baustein stehen in der Verifikationsmatrix: Lunar Coordinate Time, der gemeinsame Schätzer OD + Uhr, die Realisierung des Bezugssystems und die Geometrie des Service Volume sind VALIDATED (jeweils gegen die unabhängige Referenz, die ihre Zeile nennt, ebenso der Kernpfad der VLBI-Laufzeit); die VLBI-Observable, das Beobachtbarkeitsergebnis zum Datumsdefekt, das differentielle PNT und der Interoperabilitätsexport sind MODELLED. Die Parameter sind illustrative Werte aus öffentlichen Quellen — nicht gegen reale VLBI-/Gateway-Verfolgung validiert, nicht mit einer Behörde verbunden oder von ihr unterstützt, keine Aussage zu TRL (Technologie-Reifegrad) / Flugerfahrung. |
| Deep-Space- & Mars-PNT | Eine offene radiometrische Navigations-Engine: iterative Lichtlaufzeit + relativistische Shapiro-Verzögerung, Doppler und Entfernung in Zwei-/Ein-/Drei-Wege-Form (Moyer, zwei Abschnitte), kohärente Transponder-Umsetzverhältnisse, regenerative/PN-Entfernungsmessung (Pseudo-Noise) (CCSDS 414, der Standard für Pseudo-Noise-Entfernungsmessung) und Δ-DOR in der Himmelsebene (CCSDS 506, der Delta-DOR-Standard), mit Medien aus Sonnenplasma/Troposphäre/Ionosphäre; CCSDS-TDM (503), Parsen und Ausgeben der Tracking Data Message; ein reduziert-dynamischer Square-Root-Information-Filter (RTN — radial, transversal, normal — empirische Beschleunigungen + eine Bordzeituhr mit 3 Zuständen + Marsatmosphären-Widerstand), der in einem synthetischen geschlossenen Kreis eine Bahnbestimmung in niedriger Marsumlaufbahn (LMO) auf ≈ 0,2 m leistet; ein gemeinsamer Schätzer mit Fusion von Ein-Weg und Zwei-Wege; ein Dynamikkern für mehrere Körper (Body{μ, re, zonals, gravity, IAU-pole}, Gravitation nach Mars GMM-3 (Goddard Mars Model 3), ein IAU-körperfestes Marssystem, eine austauschbare Schnittstelle EphemerisProvider, zweiteilige Julianische Daten + TT↔TDB (Barycentric Dynamical Time)); und das Relais-PNT-Szenario mars-pnt (eine areostationäre MARCONI-Relais-Konstellation) mit einem durchgängigen GSE-Leistungssimulator (GSE = Bodenunterstützungsausrüstung) (Geometrie → Linkbudget → Observablen → SRIF → Kovarianz). Simulationsvalidiert (Kovarianz- / Closed-Loop-Gütegrößen); die Mars-Dynamik mit zentraler Sonne wird gegen JPL DE440 gegengeprüft (137 m @ 1-Tages-Bogen, xval/anise-mars-od). Die Validierung mit realen DSN-/ESTRACK-Tracking-Daten steht auf der Roadmap. |
| Sonnensystem und PNT um beliebige Körper | Eine kernelfreie Ephemeride des gesamten Sonnensystems (src/ephem.rs, src/ephem_provider.rs): jeder Planet aus den Keplerschen Elementen von JPL nach Standish (Tabelle 1, 1800–2050 n. Chr.; Tabellen 2a/2b, 3000 v. Chr.–3000 n. Chr.) mit dem veröffentlichten Nominalfehler jedes Planeten, Erde und Mond durch die lunare Reihe getrennt, und Phobos, Deimos, Io, Europa, Ganymed, Kallisto und Titan aus mittleren JPL-Elementen und dem Rotationsmodell der IAU (Internationale Astronomische Union); jeder Körper relativ zu jedem anderen im ICRF (International Celestial Reference Frame). Body trägt nun GM (Gravitationsparameter), Radien, J2 (die zweite zonale Harmonische), wo veröffentlicht, und den IAU-Pol und Nullmeridian für achtzehn Körper. Der Typ solar-system berichtet Positionen, Geschwindigkeiten, Konstanten, Lichtlaufzeit und Ein-/Zwei-Wege-Entfernung zwischen zwei beliebigen Körpern (der bestehende radiometrische Lichtlaufzeit-Löser, mit der solaren Shapiro-Verzögerung) und eine Bahnspur je Körper — genug, um ein interaktives Sonnensystem zu zeichnen; der Typ body-pnt positioniert einen Orbiter oder Lander um jeden Körper (scenarios/mars-orbit-pnt.toml, scenarios/europa-surface-pnt.toml) mit einer lokalen Walker-Konstellation, der Mechanik der Dilution of Precision und von Gauss–Newton und einer Deep-Space-Entfernung von der Erde. Validiert gegen JPL Horizons (DE441, JPL Development Ephemeris 441): Merkur–Saturn und die Erde aus Tabelle 1 innerhalb des Doppelten des Nominalfehlers (schlechtester Wert 1,87×), alle acht Planeten aus den Tabellen 2a/2b (schlechtester Wert 1,71×) und die Lichtlaufzeit Erde–Mars/Jupiter. Modelliert: Uranus und Neptun aus Tabelle 1 (2,0× und 5,2× der angegebenen Fehler gegenüber DE441), Pluto, die Monde und die Navigationsergebnisse von body-pnt. |
| Fusioniertes MEO- + LEO-PNT | src/leo_fusion/: systemunabhängige LEO-Positionierung, -Navigation und -Zeitgebung über jede Konstellation (Walker-Schalen, Elementsätze, GNSS-Voreinstellungen) und jedes Signal (Träger, Chiprate, C/N0-Hüllkurve, Entfernungsfehler im Signalraum), mit optionalen Ein-Datei-Voreinstellungen, die ihre Quellen mitführen (Xona Pulsar X1/X5, Iridium STL, Starlink-Gelegenheitssignale, CentiSpace, ein repräsentatives C-Band-System, das Ephemeridenmodell ATOMIC mit Nulluhr). leo-pvt: Doppler-Positionierung im Batch aus der Entfernungsrate (ein und mehrere Satelliten, Uhrendrift- und Geschwindigkeitszustände, Geometrie eines einzelnen Überflugs längs/quer zur Bahn und die Spiegellösung), gemeinsame gewichtete Kleinste-Quadrate-Lösung GNSS + LEO mit systemweisen Intersystem-Biases und vom Aufrufer gelieferten Sigmas je Signal, das DOP gegen die Anzahl der LEO-Satelliten, Abdeckung der Polar- und Arktisregion und LEO-Zeitübertragung nach UTC gegen C/N0 und Oszillator. leo-ppp: ein Float-PPP-EKF (Precise Point Positioning, erweitertes Kalman-Filter) nur mit GNSS und mit LEO, seine Konvergenzzeit und ein Chi-Quadrat-NEES-Konsistenztest. ntn-positioning: Positionierung im nichtterrestrischen 5G-Netz aus der Cramér-Rao-Schranke der Bandbreite. Validiert: die LEO-Doppler-Hüllkurve gegen die veröffentlichten Iridium- und Xona-Zahlen. Modelliert: der Rest, mit dem PPP-Trend verglichen mit Li et al. (2019) — siehe docs/LEO-PNT-FUSION.md. |
| Integrität | RAIM (Receiver Autonomous Integrity Monitoring) als Snapshot und mit Lösungstrennung (ARAIM-Stil), mit horizontalen/vertikalen Schutzniveaus (HPL/VPL), Fehlererkennung und -ausschluss und Stanford-Integritätsdiagrammen; ein Schutzniveau mit explizitem Integritätsrisikobudget nach Mehrhypothesen-Lösungstrennung (MHSS), einschließlich des konstellationsweiten Fehlermodus für zwei oder mehr Konstellationen (ARAIM der EU (Europäische Union) / DO-316, der RTCA-Leistungsstandard für GPS-Bordausrüstung mit luftfahrzeugbasierter Ergänzung), geübt an einem echten GPS- + Galileo-Snapshot (scenarios/araim-gps-galileo.toml). Das Schutzniveau wendet die einseitige Projektion des nominalen Bias b_k = Σ_i|s_i|·b_nom je Fehlermodus an und das Integritäts-Sigma σ_URA (User Range Accuracy; zu unterscheiden vom Genauigkeits-Sigma σ_URE, User Range Error) aus der Integrity Support Message — siehe docs/ARAIM_REFERENCE.md. Der Detektionskern (die Schwellenwerte χ²/nichtzentrales χ²/Normal und die K-Multiplikatoren) ist über 171 Fälle extern gegen SciPy validiert (tests/raim_reference.rs); die Geometrie verwendet den gegen gnss_lib_py validierten DOP-Kern wieder. Die Budgetaufteilung des Integritätsrisikos von ARAIM MHSS selbst hat keine veröffentlichte numerische unabhängige Referenz und bleibt ehrlich modelliert. |
| Ergänzung (SBAS) | SBAS-/WAAS-Schutzniveaus (WAAS = das Wide Area Augmentation System) in der gewichteten Kleinste-Quadrate-Form nach DO-229E (K-Faktoren für Präzisionsanflug und Streckenflug) und die ionosphärenfreie Zweifrequenz-Kombination L1/L5 (L1 und L5 sind zwei zivile GPS-Signalbänder; IS-GPS-705, die GPS-Schnittstellenspezifikation für das L5-Signal, γ₁₅ ≈ 1,793), die DO-316 zugrunde liegt — src/sbas.rs. Der Algorithmus des Schutzniveaus ist extern gegen den RTKLIB-SBAS-PL-Fork validiert (RTKLIB = die offene Bibliothek für Echtzeit-kinematische Positionierung; PL = Schutzniveau) (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, DO-229D — die vorherige Revision von DO-229 — Anh. J), ausgeführt auf echten EGNOS-Daten (European Geostationary Navigation Overlay Service), wobei sein HPL auf < 2e-3 m reproduziert wird (tests/sbas_reference.rs); gLAB (die GNSS-Laboratory-Werkzeugsammlung) v6.0.0 bestätigte dieselbe Konvention. |
| Uhr & Zeitgebung | Kalman-Holdover mit zwei Zuständen (Kovarianz in Joseph-Form, NIS/NEES — normierter quadrierter Innovationsfehler / normierter quadrierter Schätzfehler — Konsistenzgüte); Stabilität der Allan-Familie (ADEV / MDEV / TDEV / HDEV / MTIE — Allan-, modifizierte Allan-, Zeit- und Hadamard-Abweichung und maximaler Zeitintervallfehler) mit rauschtypspezifischen Konfidenzintervallen und einer vollständigen Potenzgesetz-Anpassung mit fünf Koeffizienten nach IEEE-1139 (IEEE Std 1139, die Definitionen der Frequenz- und Zeitmetrologie des Institute of Electrical and Electronics Engineers) — die Schätzer sind an echter Hardware gegen Stable32 validiert: ein echter Cäsium-Primärstandard 5071A gegen einen Wasserstoff-Maser (556.990 Phasenproben, 16 Mittelungsfaktoren, OADEV/OHDEV — überlappende Allan-/Hadamard-Abweichung — auf 1e-3; tests/cs5071a_reference.rs) und die kanonische Regressionsreihe Stable32 PHASE.DAT (139 Mittelungsfaktoren, OADEV/MDEV/TDEV auf 1e-3; tests/phasedat_reference.rs); die Schätzer ADEV/MDEV/TDEV und die Wander-Metrik MTIE der Telekommunikation werden zusätzlich gegen die unabhängige Bibliothek allantools 2024,06 auf < 1e-9 an der Reihe NIST SP 1065 gegengeprüft (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); geometrische Korrekturen (Sagnac, GNSS-Common-View); und die operativen Übertragungsverfahren — TWSTFT (Zwei-Wege-Satelliten-Zeit- und Frequenzübertragung) mit der geschlossenen Sagnac-Form des BIPM (Internationales Büro für Maß und Gewicht), GNSS-Common-View, ionosphärenfreie Zeitübertragung mit PPP (Precise Point Positioning), eine optische Freiraumverbindung mit Turbulenz-Szintillation und eine Uhrenensemble-(Papier-)Zeitskala mit inverser Varianz unterhalb der besten beitragenden Uhr. Ein Holdover-Rechner für Uhren ohne GNSS (src/holdover.rs) stellt das geschlossene Wachstum des Coast-Fehlers nach van Loan als Umkehrung Holdover bis zum Schwellenwert dar — wie lange eine Uhr frei läuft, bevor ihr Zeitfehler das Budget überschreitet — über repräsentative klassische und Quantenuhr-Klassen; modelliert (gegen die mehrstufige Kovarianzrekursion clock_state gegengeprüft), und ehrlich darin, dass bei einer sehr stabilen Uhr der Holdover bis zu einem engen Schwellenwert von der angenommenen Langzeit-τ-Rauschuntergrenze bestimmt wird, nicht von der zitierten ADEV. Ein bedingtes Zeitgebungs-Schutzniveau (src/tpl.rs) erweitert den Holdover auf Spoofing: eine Schranke für den unentdeckten Zeitfehler, bei einer unabhängigen Gegenprüfung, die eine k-Sigma-Monitoruntergrenze, die van-Loan-Coast-Varianz über die Detektionslatenz und eine CUSUM-Zeit-bis-zum-Alarm (kumulative Summe) zusammensetzt. Kalibriert an einem echten aufgezeichneten Spoof (JammerTest 2024) und reproduzierbar über cargo run --example tpl_jammertest; MODELLED als Zusammensetzung (kein Integritätsrisiko-pro-Stunde-Budget), bedingt auf die Detektion — es gibt keine endliche unbedingte Schranke. |
| GNSS-Messungsbereich | Vorwärts-Synthese von Pseudoentfernung / Doppler mit der Ionosphäre nach Klobuchar (Broadcast) und IONEX / TEC-Gitter (IONosphere map EXchange format / totaler Elektroneninhalt; gemessen) — einschließlich eines IONEX-Dateiparsers, Zeitinterpolation zwischen Karten und der Schrägneigungsabbildung der dünnen Schale —, der Troposphäre nach Saastamoinen + Niell und Snapshot-RAIM (HPL/VPL). |
| Resilienz | Jamming im Linkbudget (J/S → effektives C/N₀ → Verlust der Verriegelung — Verhältnis Störer zu Signal, Verhältnis Trägerleistung zu Rauschleistungsdichte —, wobei der Antijam-Faktor der spektralen Trennung Q nun aus den tatsächlichen Leistungsspektren von Signal und Störer abgeleitet wird, über src/navsignal.rs — Q = 1/(R_c·κ), in der CI gegen die frühere repräsentative Konstante gegengeprüft); ein stochastischer Zeit-Spoof-Detektor (Neyman–Pearson / χ²₁-Energietest mit geschlossenem und Monte-Carlo-P_fa/P_md und einer Sicherheitsgütegröße (FoM) von 1 − P_md); und ein mehrschichtiger Spoof-Detektor, der einen RAIM-Konsistenz-Paritätstest (mit ehrlich modelliertem Gleichtakt-Blindfleck), einen HF-AGC-Leistungsmonitor (automatische Verstärkungsregelung) und einen Signalqualitätsmonitor (SQM — Signalqualitätsüberwachung, Early-minus-Late) fusioniert; und ein Fehlerbudget für Quanten-Inertial-Koppelnavigation (QuantumNavBudget, src/inertial/quantum_imu.rs), das das Weißrauschen des Geschwindigkeits-Zufallsgangs des Kaltatom-Interferometers mit Restbias (gegen den unabhängigen Integrator AccelModel gegengeprüft) und Skalenfaktorfehler zu einer Positionsdrift über den Holdover zusammensetzt — der inertiale Zwilling des Uhren-Holdovers. Eine an Rahmenwerken ausgerichtete Engine zur Resilienzbewertung (src/resilience/) bildet das simulierte Verhalten einer Architektur auf Teilwerte je Dimension über die sieben eigenen Resilienzkategorien von Kshana ab (nicht DHS-Begriffe), ausgerichtet am Resilient PNT Conformance Framework des US-Heimatschutzministeriums, und untersucht dann die Entscheidungsstabilität jedes einzelnen Gesamtwerts oder Reifegrads unter einem Dirichlet-Gewichtungssimplex und einem Ensemble aus fünf Bedrohungen — Kendall-τ-Rangunbeständigkeit, Wechselrate des Top-1-Spitzenreiters und Diversitätskollaps im Gleichtakt (Hill-N2), mit einem integritätsgehashten Zusicherungsbericht (35 von Hand abgeleitete Tests gegen unabhängige Referenzen). Reproduzierbar über cargo run --example resilience_report; MODELLED synthetische Architekturen, eine Selbstbewertung, ausgerichtet an RPCF v2.0, keine Zertifizierung. Siehe docs/RESILIENCE-CROSSWALK.md. |
| Passive HF-Geolokalisierung | TDOA/FDOA-Geolokalisierung von Emittern (Zeit-/Frequenzdifferenz der Ankunft; src/geolocation.rs) — einen Jammer oder Spoofer (oder eine Gelegenheitsquelle für Reverse-PNT) aus Laufzeitdifferenz-Hyperboloiden über ein Empfängernetz lokalisieren, gelöst durch Gauss–Newton-Kleinste-Quadrate; das Hinzufügen der Frequenzdifferenz der Ankunft mit bewegten Empfängern gewinnt gemeinsam Position und Geschwindigkeit des Emitters zurück, mit der Cramér–Rao-Schranke für die Positionskovarianz, abgeleitet aus der Netzgeometrie. MODELLED (unabhängige Referenzen zur inneren Konsistenz: Vorwärts→Rückwärts-Rundläufe, die Identität J·CRLB = I, Monotonie des GDOP und der Schätzer, der unter Monte-Carlo seine eigene CRLB erreicht) — ein Punktquellenmodell mit Sichtlinie, ohne Terme für Mehrwege / NLOS (Nicht-Sichtlinie), Empfängeruhrenversatz oder Refraktion. |
| Navigationssignal und Code-Tracking | Die Signalebene zwischen Linkbudget und Messbereich (src/navsignal.rs): spektrale Leistungsdichten (PSDs) mit Einheitsfläche für BPSK-R(n) (binäre Phasenumtastung mit rechteckigen Chips) und sine-BOC(m,n) (binärer Offset-Träger); der Koeffizient der spektralen Trennung (SSC) κ = ∫ G_s·G_i df, der das Antijam-Q ableitet, das das Jamming-Modell verwendet (Q = 1/(R_c·κ)), aus den tatsächlichen Spektren von Signal und Störer statt aus einer repräsentativen Konstante; die RMS-Bandbreite (Gabor) (BOC > BPSK — das Maß der Entfernungsinformation / Cramér–Rao); der thermische Rauschjitter der kohärenten Early–Late-DLL-Codeverfolgung (DLL = Delay-Lock-Loop; Kaplan & Hegarty; ~unter einem Meter für C/A — den groben GPS-Erfassungscode — bei 45 dB-Hz); und die Hüllkurve des Mehrwegefehlers (kohärentes EML, Early-minus-Late — Unterdrückung durch schmalen Korrelator). Gegen geschlossene Ankerwerte validiert (BPSK-Eigen-SSC = 2/(3·R_c), PSDs mit Einheitsfläche, C/A-Jitter unter einem Meter). Dies ist eine Analyse der Signal-Leistung, kein Hardwareentwurf von Antenne / HF-Nutzlast (die Rolle eines Nutzlastpartners). |
| Interoperabilität | RINEX-3-Einlesen von Broadcast-Ephemeriden mehrerer GNSS (GPS, Galileo, QZSS — das japanische Quasi-Zenith Satellite System —, BeiDou MEO/IGSO — mittlere Erdumlaufbahn / geneigte geosynchrone Umlaufbahn — über IS-GPS-200, die GPS-Schnittstellenspezifikation; GLONASS, das russische Global Navigation Satellite System, über PZ-90 — das russische Datum Parametry Zemli 1990 — Zustandsvektor-RK4), nutzbar als Konstellationsquelle (RINEX hinein, PNT-Geometrie heraus); ein RINEX-3-Parser für Beobachtungen (Pseudoentfernung, Trägerphase, Doppler, Signalstärke; das Beobachtungslayout 4,00 soll sich parsen lassen, ist aber ungetestet, und RINEX-4-Navigationsdateien werden namentlich abgelehnt statt falsch dekodiert), der nun einen Löser für Einzelpunktpositionierung (SPP) speist (pvt) — echte Codebeobachtungen hinein, eine echte Empfängerposition heraus, validiert an IGS-Daten; ein Leser/Schreiber für SP3-c/d-Präzisionsephemeriden mit Lagrange-Interpolation 9. Ordnung; und CCSDS-OEM 2,0 + OMM-Export (Orbit Mean-elements Message) für Flugdynamikwerkzeuge (GMAT, Orekit, STK — Systems Tool Kit); und CCSDS-TDM (503), Parsen und Ausgeben der Tracking Data Message für radiometrische Verfolgung im tiefen Weltraum. |
| Missionsanalyse (Systems Engineering) | Missionsentwurfs-Budgets erster Ordnung, jedes ein ausführbarer Typ: Start- und Aufstiegsgeometrie im Zweikörpermodell (launch-window — Startazimut sin Az = cos i/cos lat, minimale Inklination, Bonus durch die Erdrotation, Δv des Dogleg-Ebenenwechsels, tägliche Gelegenheiten; src/launch.rs); ein ballistischer Wiedereintrittskorridor nach Allen–Eggers (reentry — Spitzenverzögerung, Geschwindigkeit/Höhe bei Spitzen-g, Geschwindigkeit bei Spitzenerwärmung; src/reentry.rs); Abdeckungsgeometrie der Erdbeobachtung (eo-coverage — Streifenbreite / GSD am Nadir (Bodenabtastabstand) / Zugriff außerhalb des Nadirs / Wiederbesuch über das Raumdreieck der SMAD (Space Mission Analysis and Design); src/eo_payload.rs); ein 3-DOF-Fehlerbudget für Lage und Ausrichtung (drei Freiheitsgrade; attitude-budget — ungünstigstes Gravitationsgradientenmoment + RSS-Ausrichtungsbudget (Wurzel aus der Summe der Quadrate); src/attitude_budget.rs); Überflugvorhersage für Bodenstationen (passes — AOS/TCA/LOS, Beginn des Signalempfangs / Zeitpunkt der größten Annäherung / Verlust des Signals, maximale Elevation, Zugriffszeit; src/passes.rs); und ein Ein-Weg-Linkbudget über die Streckengleichung CCSDS 401 / DSN 810-005 (der CCSDS-Standard für Hochfrequenz und Modulation / das Handbuch zum Link-Entwurf des Deep Space Network; link-budget — FSPL (Freiraumdämpfung), C/N₀, Eb/N₀ (Verhältnis Energie je Bit zu Rauschleistungsdichte), Marge, Schließung; src/linkbudget.rs). MODELLED analytische Budgets erster Ordnung — die Ebene vor der Hardware unterhalb von STK/GMAT/Basilisk, kein Ersatz für 6-DoF oder Radiometrie. |
| Entscheidungsanalyse und Abwägung (MCDA) | Eine vollständige Suite zur multikriteriellen Entscheidungsanalyse (MCDA) (src/mcda/), die alle vier Methodenfamilien umfasst — Wertaggregation (WSM, WPM, WASPAS — Modell der gewichteten Summe, Modell des gewichteten Produkts, gewichtete aggregierte Summen-Produkt-Bewertung), Abstand zum Ideal (TOPSIS, Technique for Order of Preference by Similarity to Ideal Solution), Kompromissprogrammierung (VIKOR, vom Serbischen für multikriterielle Optimierung und Kompromisslösung) und Outranking (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I, vom Französischen für Elimination und Wahl, die die Realität ausdrückt), dazu das Verhältnissystem MOORA (Multi-Objective Optimization on the basis of Ratio Analysis) und das proportionale COPRAS (Complex Proportional Assessment) — mit der Prioritätsgewichtung per Paarvergleich AHP (Analytic Hierarchy Process) (Consistency Ratio), einer nicht dominierten Pareto-Front, Sensitivitätsanalyse der Gewichte und multiattributiver Nutzenbewertung. Die neun Aggregatoren reproduzieren die unabhängigen Bibliotheken Dritter pymcdm (WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II) und pyDecision (ELECTRE I, COPRAS) auf < 1e-9, und der AHP-Prioritätsvektor + Consistency Ratio stimmen mit der Random-Index-Tabelle von Saaty und dem Haupteigenlöser von SciPy/LAPACK auf < 1e-9 überein (tests/mcda_*_reference.rs). VALIDATED — die Entscheidungsebene unter der Engine für Abwägungsstudien. |
| Weltraumumgebung | Ein Umgebungsmodell für das Weltraumwetter (space-weather, src/space_weather.rs): solare (F10.7 / auf 81 Tage zentriertes F10.7a — der solare Radiofluss bei 10,7 cm) und geomagnetische (Kp, der planetarische K-Index, mit der definitorischen Tabelle Kp↔ap — ap ist seine lineare planetarische Amplitude) Aktivitätsindizes, die Jacchia-1971-Exosphärentemperatur, die sie antreiben (gegen veröffentlichtes Sonnenminimum/-mittel/-maximum validiert), und die aktivitätskorrigierte gegenüber der statischen neutralen Thermosphärendichte in der Höhe — die Abhängigkeit der Dichte vom Sonnenzyklus, die die statische Atmosphäre USSA76 (US Standard Atmosphere 1976) auslässt. MODELLED: eine kalibrierte Kopplung der Skalenhöhe erster Ordnung, keine datenvalidierte Atmosphäre (NRLMSISE — das Modell des US Naval Research Laboratory für Massenspektrometer und Incoherent-Scatter-Radar der Exosphäre). |
| Evaluierung & Abwägung für maschinelles Lernen | Ein Testbed zur Bewertung der Erkennung von HF-Beeinträchtigungen (impairment-eval, src/impairment_eval.rs): ein beschrifteter, an Parametern verankerter synthetischer Korpus (nominal / Jamming / Spoof-Zeit / Spoof-Position / Mehrweg), ein detektorunabhängiger ROC/AUC-Prüfstand (Receiver Operating Characteristic / Fläche unter der Kurve), der jeden Detektor bewertet (energy | agc | sqm | parity | fused), mit Pd je Klasse (Wahrscheinlichkeit der Erkennung) bei einer Ziel-Pfa (Wahrscheinlichkeit des Fehlalarms), und der Optimismuslücke zwischen In- und Out-of-Distribution (Modus der Verteilungsverschiebung). Dazu ein Quanten-gegen-klassisch-PNT-Abwägungsmodell (quantum-trade, src/quantum_trade.rs), das den Zeitgebungs-/Inertial-Holdover-Nutzen einer Kandidatenuhr aus einer gemessenen ADEV-Kurve gegen eine klassische Basislinie quantifiziert, mit dem Vorbehalt zur Langzeit-τ-Untergrenze am Artefakt und einer Hüllkurve der Resilienz gegen die Zeit ohne GNSS. Die Metriken der Bewertung (AUC / Konfusionsmatrix / Pd-Pmd, Pmd ist die Wahrscheinlichkeit der verpassten Erkennung) sind auf exakte Übereinstimmung gegen scikit-learn 1.9.0 validiert — auch an echter ESA-OPS-SAT-Telemetrie (der Datensatz OPSSAT-AD zur Anomalieerkennung, Ruszczak et al. 2025, CC BY 4,0 — Creative Commons Attribution 4,0), wo die Mann–Whitney-ROC-AUC von Kshana das roc_auc_score von scikit-learn auf < 1e-9 auf dem zurückgehaltenen Testsplit reproduziert und ein transparenter Spitzenzähl-Detektor die beschrifteten Anomalien bei AUC ≈ 0,85 trennt (tests/opssat_ad_reference.rs) — und die numerischen Kerne der Abwägungs-Engine (ADEV-NNLS — nichtnegative kleinste Quadrate — Anpassung, χ²-Konsistenzbänder, van-Loan-Uhren-Q) gegen scipy 1.17.1; die darauf aufbauenden Zahlen zum Gerätenutzen bleiben MODELLED als Betriebskennlinien — nie Feld-/IQ-Daten (Inphase-/Quadratur-Abtastwerte), kein Gut/Schlecht-Urteil. Auf dem Testbed aufbauend bewertet eine tiefere Studie zur Optimismuslücke (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) ein Panel aus 13 Detektoren (Energie/AGC/SQM/Parität plus Detektoren mit logistischer Regression und einem MLP mit einer verdeckten Schicht — mehrschichtiges Perzeptron — mit festem Seed), passt Skalierungsgesetze In- gegen Out-of-Distribution mit einer Permutations-Nullverteilung an und lernt einen Leave-one-out-Prädiktor für die Out-of-Distribution-Verschlechterung aus In-Distribution-Statistiken (cargo run --example optimism_study). Ein Frontend für softwaredefinierte Empfänger (src/sdr.rs — rohes IQ/IF (Zwischenfrequenz) → Korrelator-Taps Early/Prompt/Late → SQM) und Adapter zum Einlesen realer Daten (src/realdata/ — RINEX, u-blox UBX (das binäre Protokoll von u-blox), GnssLogger, JammerTest, Yunnan, SatGrid) lassen dieselben Detektoren über lokal bereitgestellte Aufzeichnungen laufen (es werden keine Datensätze festgeschrieben). Die Crossover-Karte Quanten gegen klassisch für die Resilienz unter Parameterunsicherheit (src/crossover.rs; cargo run --bin crossover_study) erzeugt die Crossover-Studien zu Inertial und Uhr hinter den Ergebnisabbildungen neu. |
| Demonstrator für quantengestütztes PNT | Drei ausführbare, MODELLED Anwendungsbereiche hinter der offenen Engine, die jeweils ehrliche TradeEvidence + einen Datensatz zu Repräsentativität / Lücken bis zum Flug ausgeben (src/representativeness.rs): vertrauenswürdige Quanten-Zeitübertragung (quantum-time-transfer, src/timetransfer_chain.rs — ein durchgängiges Budget aus optischer Gitteruhr + photonischer Verbindung gegen CSAC (chipgroße Atomuhr) + HF-Zwei-Wege, mit einem wiederverwendeten Zeitgebungs-Schutzniveau, einer Sicherheits-FoM gegen Verzögerungs-/Wiedereinspielungsangriffe (1 − P_md) und Erkennung von Uhrenanomalien + CUSUM-Latenz); GNSS-freie Quantennavigation (quantum-gnss-free-nav, src/quantum_nav_od.rs — ein inertialer Coast mit Kaltatom-Interferometer gegen ein INS der Navigationsklasse über einen GNSS-Ausfall, ehrlich darin, dass ohne externe Lösung der Beschleunigungsmesser-Bias nicht beobachtbar ist und der Fehler daher weiter wächst); und Fehler-/Anomalieerkennung in Quantensystemen (quantum-anomaly-detect, src/quantum_faults.rs — ein beschrifteter Fehlerkatalog mit einer ROC-AUC mit Bootstrap-Konfidenzintervall (KI) aus dem extern validierten eval_stats und einem minimal erkennbaren Fehler bei fester Fehlalarmrate). Eine gemeinsame Fehlermodell-Bibliothek für Quantengeräte (src/quantum_devices.rs) und ein einheitlicher Prüfstand für Quanten gegen klassisch (src/qtrade.rs) liegen ihnen zugrunde. Die validierten Kerne, auf denen sie aufsetzen (Bewertungsmetriken gegen scikit-learn, Abwägungskerne gegen scipy), werden wiederverwendet; die darauf aufbauenden Zahlen zum Gerätenutzen bleiben MODELLED — illustrative Geräte-/Link-Parameter aus öffentlichen Quellen, sie modellieren die Klasse, keine Aussage zu TRL / Flugerfahrung / Zertifizierung, keine Unterstützung durch eine Behörde. |
| Sparsames Engineering und Integritätswirkung | Eine Sicht auf den ROI je Abdeckung (Kapitalrendite) (src/frugal.rs) — Kosten je Einheit gelieferter Abdeckung für eine Architekturabwägung — und eine Abbildung Erkennungsverfehlung → Integritätswirkung (src/integrity_impact.rs), die die Rate verpasster Erkennungen eines Monitors in seinen Beitrag zum Integritätsrisiko umrechnet. MODELLED Budgets zur Entscheidungsunterstützung, additiv. |
| Austausch von Artefakten | Das Kshana Interchange Format (KIF) (src/interchange.rs) — ein versionierter, selbstbeschreibender Umschlag, der ein Szenarioergebnis mit seinem Typ, seiner Schemaversion und den Kennzeichnungen MODELLED/VALIDATED umhüllt, damit ein gespeichertes Artefakt selbstdokumentierend bleibt und ältere Umschläge vorwärtskompatibel lesbar bleiben. |
Jede Fähigkeit ist als Rust-API, als ausführbares Szenario kind oder als beides erreichbar. Der Reifegrad je Fähigkeit — validiert, ausführbar oder Bibliothek — wird in docs/CAPABILITY.md verfolgt. Eine maschinell geprüfte Verifikationsmatrix (src/verification.rs) stellt den Querverweis Anforderung → Modul → Test → unabhängige Referenz → Status dar, mit unit-getesteten Ehrlichkeitsinvarianten, die ein Etikett validiert nur zulassen, wo eine unabhängige externe Referenz es stützt — und die die Hardware-/PA-Fähigkeiten (Produktsicherung) festhalten, die Kshana bewusst nicht bereitstellt.
Die vier Sensorpakete, wie zuerst veröffentlicht (Ergebnisse)
Ergebnisse#
Jedes Szenario vergleicht einen Quantensensor mit seinem klassischen Gegenstück über einen GNSS-Ausfall von ~1,8 h. Die Zahlen sind reproduzierbar (scenario + seed + version).
Was Quantensensoren bringen, wenn GNSS weg ist — clock-holdover · Seed 42 · gezeichnet mit Engine 0.40.0, und jede Zahl oben wird bei jedem Build von tests/published_figures_still_reproduce.rs erneut gegen die aktuelle Engine geprüft · SVG
Der Vorteil hängt von Ausfall und Vibration ab, mit einem ausdrücklichen Break-even, wo klassisch gewinnt — ehrlich gezeigt über die Leiter der Technologiereife (Angaben zu optischen Uhren sind Ziele für Bodendemonstratoren; noch keine optische Strontium-Uhr ist geflogen):
Crossover der Resilienz Quanten gegen klassisch — Uhren-Holdover auf der TRL-Leiter (oben) · Karte des inertialen Vorteils mit Break-even-Kontur (unten). Neu erzeugbar über cargo run --release --bin crossover_study.
Positionsfehler der Koppelnavigation während eines GNSS-Ausfalls: Der Quantensensor (blau) bleibt flach nahe der Spezifikation; der klassische Sensor (rot) divergiert auf Dutzende Kilometer. Von Kshana aus scenarios/imu-deadreckoning.toml erzeugt.
| Paket | Szenario | Quanten | Klassisch |
|---|---|---|---|
| 1 — Uhren-Holdover | clock-holdover.toml (Spezifikation 20 ns) |
die optische Uhr hält den gesamten Ausfall | die CSAC überschreitet die Spezifikation mitten im Ausfall |
| 2 — Inertiale Koppelnavigation | imu-deadreckoning.toml (Spezifikation 100 m) |
Kaltatome: ~41 m, hält den gesamten Ausfall | Navigationsklasse: überschreitet nach ~350 s → Dutzende km |
| 3 — Zeitübertragung (optische Inter-Satelliten-Verbindung) | timetransfer.toml |
optisch: ~0,3 mm Entfernungsmessung | HF (TWSTFT): ~150 mm Entfernungsmessung |
| 4 — Hybride Fusion (Abschluss) | hybrid-pnt.toml |
volle Position + Zeitgebung für den gesamten Ausfall | positionsbegrenzt bei ~350 s |
Der Abschluss zeigt die Fusionsthese: Die optische Inter-Satelliten-Zeitübertragung hält selbst eine klassische Uhr verriegelt und isoliert den inertialen Sensor als das schwache Glied der klassischen Ausstattung — also inertial mit Quanten und optische Zeitgebung zusammen.
Uhren-Holdover durch einen GNSS-Ausfall: Die optische Uhr (blau) bleibt für den gesamten Coast innerhalb der Spezifikation von 20 ns; die chipgroße Uhr (rot) überschreitet sie auf halbem Weg. Von Kshana aus scenarios/clock-holdover.toml erzeugt.
Ein weiteres Szenario, orbit-gnss-challenged.toml, leitet die GNSS-Verfügbarkeit aus der Bahngeometrie ab statt aus von Hand verfassten Fenstern: Ein Raumfahrzeug innerhalb der GNSS-Schale wird gegen eine GPS-ähnliche Walker-Konstellation propagiert, und die Anzahl sichtbarer Satelliten (Sichtlinie, Erdverdeckung, Elevationsmaske) legt in jedem Schritt den Lösungszustand fest. Über einen Tag hinweg ist der Nutzer nur ~59 % der Zeit in der Lösung; die Quantenuhr hält eine Zeitlösung von 5 ns durch jede Lücke (Verfügbarkeit 1.0), die chipgroße Uhr nur ~0.83.
Zeitfehler über einen Tag mit aus der Bahngeometrie abgeleiteter GNSS-Verfügbarkeit: Die Anzahl sichtbarer Satelliten (Sichtlinie, Erdverdeckung, Elevationsmaske) legt in jedem Schritt den Lösungszustand fest, die Uhr muss also jede Lücke überbrücken — die optische Uhr hält die Spezifikation von 5 ns, während die chipgroße Uhr sie überschreitet. Von Kshana aus scenarios/orbit-gnss-challenged.toml erzeugt.
Die Konstellation kann auch als echte Two-Line-Element-Sätze (TLEs) angegeben werden. Ein vollständiges TLE (Zeile 1 + Zeile 2) wird mit dem vollen Modell SGP4/SDP4 propagiert — einschließlich atmosphärischem Widerstand und der Tiefraum-Terme von Mond und Sonne sowie der Resonanzterme von 12 h / 24 h, die für GNSS-Umlaufbahnen von ~12 h zählen — und gegen die offiziellen Vektoren AIAA 2006-6753 auf einen ungünstigsten Fall von ≈ 4 mm validiert. scenarios/orbit-sgp4-gps.toml liefert einen echten Celestrak-Schnappschuss gps-ops der operativen GPS-Konstellation (2021-07-28, 30 Satelliten) und verlangt gültige TLE-Prüfsummen — Two-Line-Element-Sätze sind offene Daten aus dem Katalog der US Space Force / des 18th Space Defense Squadron, von Celestrak weiterverbreitet (Dr. T. S. Kelso, celestrak.org); aktualisieren mit scripts/fetch_tles.sh. Ein Block nur mit Zeile 2 behält die analytische Zweikörper-Propagation (scenarios/orbit-real-tle.toml); beide Formen lassen sich in einer Konstellation mischen. Eine Konstellation lässt sich ebenso aus einem Block von RINEX-3-GPS-Broadcast-Ephemeriden-Datensätzen aufbauen — dem Format, das ein Empfänger dekodiert —, mit dem Algorithmus für Nutzer nach IS-GPS-200 propagiert und durch dieselbe Geometrie geführt (scenarios/orbit-rinex.toml).
Was es ist / nicht ist, vollständig
Was es ist / nicht ist#
Es ist: eine deterministische, abhängigkeitsarme Engine über den gesamten PNT-Stapel — Bahngeometrie, Inertialnavigation, GNSS/INS-Fusion, Integrität, Uhren und Zeitgebung. Sie führt ein Szenario aus (oft einen GNSS-Ausfall), entwickelt kalibrierte Sensorfehlermodelle durch den passenden Schätzer weiter und bewertet das Ergebnis gegen die operativen Gütegrößen — und gibt ein reproduzierbares JSON-Ergebnis (JavaScript Object Notation) und ein SVG-Diagramm aus, aus einer Rust-Bibliothek, einer Kommandozeilenschnittstelle (CLI), einer Python-Erweiterung, einem WebAssembly-Modul im Browser, einem Model-Context-Protocol-Server (MCP) für KI-Agenten oder einem Plugin für JetBrains-IDEs (integrierte Entwicklungsumgebung).
Es ist nicht: Flughardware, ein Entwurf einer Quanten-Nutzlast, ein vollständiger GNSS-Signalempfänger, ein Simulator für Hochfrequenzsignale (HF) oder ein Hardware-in-the-Loop-Aufbau oder ein zertifiziertes Avionikprodukt — und es ersetzt weder MATLAB/Simulink noch STK (Systems Tool Kit) noch Orekit; es steht neben ihnen und tauscht Dateien mit ihnen aus. Die Treue zur Quantenhardware stammt aus veröffentlichten Fehlermodellen, nicht aus diesem Werkzeug. Der granulare Reifegrad jeder Fähigkeit ist in docs/CAPABILITY.md dokumentiert.
Es ist (noch) nicht: eine vollständige Physik-Engine der Atominterferometrie (die meisten Quantensensoren verbrauchen veröffentlichte Allan-/Rauschbudget-Koeffizienten; der CAI-Beschleunigungsmesser (Kaltatom-Interferometer) hat eine Schicht aus ersten Prinzipien — Mach–Zehnder-Phase, Projektionsrauschen, Kontrastabfall und Schwingungskopplung, plus Coriolis- und Lichtverschiebungs-Systematiken —, aber Wellenfront-Systematiken und die Auflösung der Streifenmehrdeutigkeit bleiben eine Roadmap-Schicht P2 (Roadmap-Phase 2, die Schicht der Quantenphysik), siehe ROADMAP.md und docs/QUANTUM-MODELS.md); ein zertifizierter oder Hardware-GNSS-Empfänger (er löst eine Einzelpunkt-PVT-Positionslösung (Position, Geschwindigkeit und Zeit) aus echten RINEX-Codebeobachtungen (Receiver Independent Exchange Format) — validiert an echten IGS-Daten (International GNSS Service) — und seine IQ-Schicht (kshana iq, seit 0.31.0) erfasst und verfolgt aufgezeichnete oder erzeugte Basisband-Abtastwerte in Software, als Analyseempfänger: Er steuert keine Funkhardware an und sendet nicht, ist kein zertifizierter Empfänger und leistet keine Trägerphasen-Positionierung (RTK oder PPP)); oder eine vollständige Suite für den Missionsentwurf (er hat Bausteine für Lambert / Porkchop / Manöver / Bahnbestimmung, ist aber die Ebene der Leistungssimulation oberhalb von GMAT (General Mission Analysis Tool)/Orekit, kein Ersatz). Diesen Umfang zu besitzen ist Absicht. Wenn Sie Fehlerbudgets für Kaltatom-Interferometer aus ersten Prinzipien brauchen (z. B. in der Güte von CARIOQA-PMP — Cold Atom Rubidium Interferometry in Orbit for Quantum Accelerometry, Pathfinder Mission Preparation — oder eine Validierung im Stil von X-37B), siehe die Roadmap P2 und nehmen Sie Kontakt auf, um zusammenzuarbeiten.
Navigation im niedrigen Erdorbit#
Satelliten im niedrigen Erdorbit (LEO) ziehen schnell und laut vorbei. Der Typ leo-pnt-chain folgt einem System durch jede Stufe: das Signal, den Überflug und seine Verbindung, die Navigationsnachricht und die fusionierte Lösung aus Position, Geschwindigkeit und Zeit (PVT) sowie Precise Point Positioning (PPP). Jede Stufe reicht ihre Zahlen an die nächste weiter. Siehe docs/LEO-PNT.md.
Jeder Szenariotyp nach Familie#
Die Szenariotypen der Engine, nach Familien abgelegt. Jede Familie hat eine Seite mit einem Eintrag je Typ (die Beschreibung und die Felder der Engine, ein Beispielbefehl, Kennzahlen aus einem Lauf, die Zeilen der Verifikationsmatrix, die ihn nennen, und das Diagramm, das die Engine selbst schreibt) und einem Kontaktbogen dieser Diagramme; docs/KINDS.md indiziert sie alle. Die Tabelle wird von tools/gen_readme_blocks.py geschrieben und die Seiten von tools/gen_kinds_index.py, und beide schlagen fehl, wenn die Engine einen Typ erhält, den keine Familie nennt.
| Familie | Was es beantwortet | Arten | Einen ausführen |
|---|---|---|---|
| Uhren, Zeitgebung und Holdover | wie lange eine Uhr ohne GNSS die Zeit hält und wie sich ein Zeitgebungssystem gegen seine Masken schlägt | clock, sweep, sweep-nd, telecom-timing, slot-timing, timetransfer, time-transfer-budget, holdover-test, quantum-time-transfer |
kshana scenarios/clock-holdover.toml |
| Inertial-, Fusions- und Quantensensoren | Koppelnavigation und Sensorfusion durch einen GNSS-Ausfall, mit klassischen und Quantensensoren | inertial, hybrid, fusion, hybrid-ukf, gnss-ins, ins-trn-coast, quantum-gnss-free-nav, quantum-anomaly-detect, quantum-trade |
kshana scenarios/gnss-ins.toml |
| Alternative PNT bei GPS-Ausfall | Navigation aus Schwere, Gelände und anderen Feldern, wenn GNSS weg ist | gravity-map, terrain-nav, terrain-slam, combined-altpnt, conflict-resilience |
kshana scenarios/combined-altpnt.toml |
| Konstellationen, Abdeckung und Geometrie | wo Satelliten sind, wer sie sieht und wie gut die Geometrie ist, um die Erde, den Mond oder den Mars | orbit, ephemeris, constellation-design, solar-system, body-pnt, mars-pnt, passes |
kshana scenarios/orbit-gnss-challenged.toml |
| GNSS-Messungen, Positionierung und Integrität | Pseudoentfernungen, Positionslösungen, Schutzniveaus und die Weltraumumgebung | integrity, gnss-sim, pvt, araim-reference-check, space-weather, realtime-frame-eop |
kshana scenarios/integrity-raim.toml |
| Jamming, Spoofing und das Spektrum | wie Störungen einen Empfänger erreichen und ob sie erkannt werden | jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval |
kshana scenarios/jamming-demo.toml |
| Navigation im niedrigen Erdorbit | ein Überflug, eine Verbindung, eine Navigationsnachricht und eine fusionierte Lösung, Stufe für Stufe | leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain |
kshana scenarios/leo-pnt-end-to-end.toml |
| Mond und cislunar | Navigation, Zeit, Bezugssysteme und Geodäsie am Mond | lunar-integrity, lunar-time-offset, lunar-time-budget, lunar-ascent, lunar-surface, lunar-descent, lunar-orbit-rendezvous, lunar-vlbi, lunar-vlbi-fim, lunar-joint-od-clock, lunar-frame-realisation, lunar-frame-campaign, lunar-llr-datum, moonlight-service-volume, lunar-differential-pnt, lunar-station-coverage, lunar-beacon, lunar-interop-export, cislunar-observability, cislunar-arc-recovery, lunar-attack-surface, lunar-jamming, earth-gnss-lunar, lunar-infrastructure |
kshana scenarios/lunar-infrastructure-od-consistency.toml |
| Navigation für Raumfahrzeugnutzer | GNSS-Signale für Raumfahrzeuge oberhalb, im Bereich und jenseits der GNSS-Umlaufbahnen | gnss-ssv |
kshana scenarios/gnss-ssv-shell.toml |
| Optische PNT | optische Verbindungen durch die Atmosphäre und Gütegrößen für optisch plus HF | optical-atmosphere, hybrid-optical-rf |
kshana scenarios/optical-atmosphere-network.toml |
| Missionsanalyse, Funkstrecken und Raumfahrtbetrieb | Start, Aufstieg, Wiedereintritt, Lage, Verbindungen, Kontaktplanung und Dateiformate | 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 |
| Missionsstränge | das Fehlerbudget für Navigation und Zeitgebung einer Phasenkette vom Start bis zum Wiedereintritt | mission-thread |
kshana scenarios/mission-thread-artemis-class.toml |
| Kampagnen | verkettete Missionen, Sweeps und Ensembles, aus den anderen Typen aufgebaut | campaign |
kshana scenarios/campaign-jam-spoof-holdover-integrity.toml |
Jeder Befehl#
kshana <scenario.toml> führt ein Szenario aus; jeder andere Befehl ist ein Unterbefehl, und kshana --help gibt die Nutzung aller aus. Die Befehle sind --study, --validate, kinds, example, receiver-trust (mit live und 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 und skyline. docs/COMMANDS.md nennt für jeden seinen Zweck, ein geprüftes Beispiel und seine Dokumentationsseite.
Jede Oberfläche#
Eine Engine, überall dieselben Ergebnisse: die Kommandozeile, die Rust-Bibliothek, Python, JavaScript und WebAssembly, der MCP-Server mit seinen Plugin-Befehlen und Skills, Kshana Studio (jede Seite läuft im Browser, keine Installation, nichts wird hochgeladen), die Integrationen für ROS 2, Signal K, OpenCPN, GNSS-SDR und gnss_lib_py, die Deploy-Kits für systemd, Docker und Grafana und das JetBrains-Plugin. docs/ALL-SURFACES.md listet sie auf, mit der Art, jede zu beziehen, und den Namen aller Plugin-Befehle, Skills und Studio-Seiten; docs/SURFACES.md sagt für jeden Befehl und jeden Typ, welche Oberfläche ihn trägt und welche nicht, mit der Begründung.
Wie ein Lauf funktioniert#
Ein Szenario ist eine TOML-Datei (Tom's Obvious, Minimal Language): ein Typ, ein Seed und die Parameter. Die Engine führt es aus und schreibt das Ergebnis, ein Diagramm und einen Bericht daneben sowie die Exporte, die Sie anfordern.
Dieses mitgelieferte Szenario läuft 2 h: 10 min GNSS, dann etwa 1,8 h ohne GNSS. Es fragt, wie lange eine optische Strontium-Gitteruhr und eine chipgroße Atomuhr (CSAC) jeweils die Zeit auf 20 ns genau halten.
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
Die optische Uhr hält das Budget von 20 ns über den gesamten Ausfall von 6600 s; die CSAC hält es 2610 s lang und ist während 95,6 % des Laufs im Budget, gegenüber 100 % bei der optischen Uhr. kshana example listet jedes mitgelieferte Szenario auf.
Missionen#
Zehn Sektoren stellen zehn verschiedene Fragen an dieselbe Engine. Jeder hat mitgelieferte Szenarien als Ausgangspunkt.
| Sektor | Beginnen mit |
|---|---|
| Verteidigung und Sicherheit | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Weltraum, Erdumlaufbahn | orbit-gnss-challenged, leo-pnt-end-to-end |
| Mond, Mars und tiefer Weltraum | lunar-relay-constellation, mars-orbit-pnt |
| Luftfahrt und Drohnen | small-uas-jammed-nav, araim-gps-galileo |
| Maritim | maritime-strait-jamming, maritime-port-approach-coast |
| Straße | automotive-urban-canyon |
| Schiene | rail-tunnel-coast |
| Kritische Infrastruktur und Zeitgebung | clock-holdover, clock-ensemble |
| Telekom und 5G (die fünfte Generation der Mobilfunknetze) | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Wissenschaft und Forschung | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Die Frage jedes Sektors
| Sektor | Die Frage, die er stellt | Beginnen mit |
|---|---|---|
| Verteidigung und Sicherheit | Wie lange bleiben unsere Navigation und Zeitgebung unter Jamming und Spoofing vertrauenswürdig, und welche Schichten halten uns in der Spezifikation? | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Weltraum: Erdumlaufbahn | Sieht mein Raumfahrzeug genug Navigationssatelliten, wie lange hält seine Uhr zwischen Lösungen die Zeit, und was würde eine Navigationsschicht im niedrigen Orbit hinzufügen? | orbit-gnss-challenged, leo-pnt-end-to-end |
| Mond und tiefer Weltraum | Bekommt ein Lander, Rover oder Orbiter am Mond, am Mars oder weiter draußen eine vertrauenswürdige Position und Zeit? | lunar-relay-constellation, mars-orbit-pnt |
| Luftfahrt und Drohnen | Wie lange bleibt mein unbemanntes Luftfahrzeugsystem (UAS), nachdem ein Jammer GNSS genommen hat, innerhalb seines Positionsbudgets, und ist Integrität auf meiner Route verfügbar? | small-uas-jammed-nav, araim-gps-galileo |
| Maritim | Wie weit über das Wasser reicht ein Jammer, würde ein Positionsschub bemerkt, und wie lange kann ein Schiff in den Hafen auslaufen? | maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast |
| Straße und Automobil | Wie weit driftet ein Auto unter einer Überführung oder an einem Jammer am Straßenrand vorbei? | automotive-urban-canyon |
| Schiene | Wie viele Sekunden in einen Tunnel hinein kann ein Zug noch sagen, auf welchem Gleis er ist? | rail-tunnel-coast |
| Kritische Infrastruktur und Zeitgebung | Wenn GNSS-Zeit verloren geht oder gespooft wird, wie lange halten ein Stromnetz, ein Handelsplatz oder ein Rechenzentrum rückführbare Zeit? | clock-holdover, clock-ensemble |
| Telekom und 5G | Wenn die GNSS-Zeitreferenz verloren geht, bleibt meine Netzuhr innerhalb der ITU-T-Masken, und wie lange? | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Wissenschaft und Forschung | Kann ich ein PNT-Ergebnis bis hinunter zum Seed reproduzieren, erweitern und zitieren? | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Nachweise#
176 von 401 Fähigkeiten gegen unabhängige externe Referenzen validiert; 221 ehrlich als modelliert gekennzeichnet. Jede Zeile der Verifikationsmatrix nennt eine Fähigkeit, die unabhängige Referenz, gegen die sie geprüft wird, den Test, der die Prüfung ausführt, und die Kennzeichnung, die daraus folgt. Die kontinuierliche Integration (CI) macht es unmöglich, eine Fähigkeit ohne unabhängige externe Referenz VALIDATED zu nennen.
| Kennzeichnung | Zeilen | Bedeutung |
|---|---|---|
| VALIDATED | 176 | eine unabhängige externe Referenz stimmt überein: echte Daten, eine unabhängige Implementierung oder veröffentlichte Referenzvektoren |
| MODELLED | 221 | gegen analytische Wahrheit oder die Selbstkonsistenz der Simulation geprüft, und das wird offen gesagt |
| PARTNER | 4 | von einem Hardwarepartner verantwortet; Kshana hält dafür keine unabhängige Referenz |
Einige der Prüfungen: alle 666 SGP4-Vektoren (Simplified General Perturbations 4) von AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 bis auf 4,12 mm; das Cowell-Kraftmodell bis auf 0,08 m gegen Orekit 12,2; Galileo bis auf 0,61 m und Swarm-A bis auf 0,10 m gegen reale präzise Ephemeriden der Europäischen Weltraumorganisation (ESA). Die Tests erreichen nahezu 95 % Zeilenabdeckung von src/, in der CI bei 85 % abgesichert. Das Register ist docs/VERIFICATION-MATRIX.md, erzeugt aus src/verification.rs: die vollständige Matrix mit 401 Zeilen und warum jede modellierte Zeile keine externe unabhängige Referenz hat, in docs/MODELLED-RATIONALE.md.
Wie die Validierung funktioniert, die kuratierte Tabelle der Höhepunkte und die Nachweisabbildungen
Validierung, Reproduzierbarkeit und Ehrlichkeit#
- Jeder Rauschterm ist auf eine veröffentlichte, zitierte Größe kalibriert und gegen die Standardbeziehung validiert (Allan-Abweichung für Uhren; Groves' Fehlerwachstum der Koppelnavigation für Inertial; die Umrechnung Zeitgebung→Entfernungsmessung für Zeitübertragung). Der Status je Term wird in
docs/VALIDATION.mdalsvalidatedodernot modeledverfolgt — nichts wird als validiert dargestellt, das es nicht ist. - Reproduzierbar durch Konstruktion:
scenario + seed + engine version → identical bits.scripts/check-reproducible.sherzwingt es; Quanten- und klassische Läufe verwenden unabhängige Seeds, damit ihr Rauschen unkorreliert ist. - Der Reifegrad wird ehrlich angegeben: Angaben zu optischen Uhren und optischen Verbindungen sind Ziele / Ergebnisse von Bodendemonstratoren, nicht geflogen.
Die Nachweiskennzeichnung an jeder Zahl#
Jede Zahl und Tabelle, die ein Lauf schreibt, sagt, wie weit ihr zu trauen ist und auf welchen Registerzeilen das beruht. Das Ergebnis-JSON hat einen Schlüssel evidence, die Diagramm-SVG eine Zeile unter der Grafik (und ein Element <metadata id="kshana-evidence">), und die CSV-Tabelle hat davor Kommentarzeilen # evidence: (gelesen mit comment='#'). Sie nennt eine Stufe, VALIDATED, MODELLED oder PARTNER, und die Kennungen (VM- und acht Hexadezimalziffern) der Zeilen der Verifikationsmatrix, die der Lauf beansprucht hat. Die Stufe ist die schwächste dieser Zeilen, sodass ein Lauf, der sich auf eine modellierte Zeile stützt, als MODELLED gekennzeichnet wird, wie viele validierte Zeilen auch daneben stehen; die Kennzeichnung kann nie mehr behaupten als das Register. Zeilen, Status und Kennungen werden aus der Matrix gelesen, nicht getippt (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), und tests/evidence_labels_doc_sync.rs schlägt fehl, wenn eine Grafik keine Kennzeichnung hat oder eine Kennzeichnung der Matrix widerspricht.
Validierung auf einen Blick#
Jede Zeile wird durch einen benannten Test in der CI durchgesetzt. Diese Tabelle ist eine kuratierte Auswahl; die vollständige maschinengeprüfte Matrix hat 401 Zeilen — 176 VALIDATED, 221 MODELLED, 4 PARTNER (src/verification.rs), mit den vollständigen Nachweisen (und dem, was ehrlich noch nicht validiert ist) in docs/VALIDATION.md und dem Artefakt kshana-validation-summary.html je Release (erzeugt von cargo run --bin validation_report, SLSA-attestiert — Supply-chain Levels for Software Artifacts).
Die Spalte Status nennt die Art des Nachweises, passend zur Validierungsleiter oben: VALIDATED = gegen eine unabhängige externe Referenz geprüft (echte Daten, eine unabhängige Bibliothek oder veröffentlichte Referenzvektoren); MODELLED = gegen analytische Wahrheit oder die Selbstkonsistenz der Simulation geprüft (kein unabhängiger externer Datensatz). VALIDATED beschreibt die Methode der Prüfung, kein Bestanden/Durchgefallen — eine ehrliche Verfehlung gegen eine echte externe unabhängige Referenz bleibt VALIDATED, während ein Vergleich, den keine Matrixzeile als unabhängige Referenz nennt (die Anpassung an LRO — Lunar Reconnaissance Orbiter — oben), als MODELLED gezeigt wird. CI-Zeilen sind Prozesswächter, keine Gütegrößen. Einige Inseln mit realen Daten (die gemessene Cäsiumuhr, Stable32 PHASE.DAT und die Prüfungen OPS-SAT/ICGEM, bei denen die rohen Eingaben keine Weiterverbreitungslizenz tragen) sind datengesteuert: Der Test gibt einen Hinweis zum Überspringen aus und bleibt grün, wenn die Eingabe fehlt, und die öffentlichen Referenzzahlen sind unter tests/fixtures/ festgeschrieben. Reproduzieren Sie die rohen Eingaben mit dem passenden scripts/fetch_*.sh.
| Status | Fähigkeit | Übereinstimmung | Referenz / unabhängige Referenz |
|---|---|---|---|
| VALIDATED | SGP4/SDP4-Propagation | 666/666 Vektoren, schlechtester Wert 4,12 mm | AIAA 2006-6753 (Vallado tcppver.out) + direkter Vergleich mit dem unabhängigen Crate sgp4 |
| VALIDATED | Bezugssysteme — IAU 2000A/B-Nutation, IAU 2006/2000A-CIO-Kette, ERA | bitgenau (X,Y bis 1e-14, s bis 1e-18, ERA bis 1e-12) | ERFA/SOFA eraXys06a · eraC2ixys · eraEra00 · eraNut00a/b |
| MODELLED | GCRS→ITRS gegenüber einer unabhängigen SPICE-Engine | max. 0.028″ → ≤ 0,86 m am Boden, ≤ 3,6 m GNSS-Bahn | ANISE (reines Rust-NAIF/SPICE), dieselben IERS-finals2000A-EOP, 8 Epochen 2020–2023 (gegen diese Referenz verglichen; keine Zeile der Verifikationsmatrix nennt sie als externe unabhängige Referenz, daher ist sie nicht als VALIDATED gekennzeichnet) |
| MODELLED | EGM2008-Geopotenzial (Grad/Ordnung 70) | Beschleunigung = ∇V auf < 1e-6; zonaler Zusammenbruch auf validiertes J2 | NGA-EGM2008-Koeffizienten + analytische ∇V-Identität |
| VALIDATED | Synthese von Schwerefunktionalen (schweregestützte / GNSS-freie Navigationskarte) | GRS80-Somigliana + γ_e/γ_p auf 3.5e-12; reale EGM2008-Störungskarte physikalisch plausibel (RMS ≈ 26 mGal, Grad/Ordnung 70) | GRS80 (Moritz 1980, IAG — International Association of Geodesy) Somigliana-Normalschwere + reales ICGEM-EGM2008 (tests/icgem_gravity_reference.rs) |
| VALIDATED | Allan-Schätzer (ADEV/MDEV/TDEV/HDEV) + Konfidenzbänder | reproduzieren die Referenzabweichungen; χ²-Bänder stimmen überein | NIST SP 1065 (Riley), 1000-Punkte-Tabelle 31/32 |
| VALIDATED | Allan-Schätzer an einer real gemessenen Caesium-Uhr | OADEV/OHDEV bis 1e-3 (beobachtet ≤ 3e-5), 16 Mittelungsfaktoren | Stable32 an einer realen 5071A-Cs-Uhr gegen H-Maser, 556.990 Punkte (tests/cs5071a_reference.rs, datengebunden) |
| VALIDATED | Allan-Schätzer an der kanonischen Stable32-PHASE.DAT | OADEV/MDEV/TDEV bis 1e-3 (beobachtet ≤ 5e-5), 139 Mittelungsfaktoren | Stable32-Referenzabweichungen für PHASE.DAT (tests/phasedat_reference.rs, datengebunden) |
| MODELLED | IMU-Fehlermodell — ARW / VRW / Bias-Instabilität | wiedergewonnen auf < 5 % (Bias-Instabilität < 15 %) | Analog-Devices-Datenblatt ADIS16465; NaveGo-Referenzprofil |
| VALIDATED | Numerischer Cowell-Propagator + Kräftemodell (konservative Stufen) | schlechtester Positionsfehler 0,08 m über 24 h, 278 Epochen (LEO + GTO) | Orekit 12,2 NumericalPropagator/DormandPrince853 (CS GROUP), tests/numerical_cowell_propagator_reference.rs |
| MODELLED | Cowell-Widerstandsstufe + absolute Sonnen-/Mond-Ephemeriden- und Dichte-Eingaben | Widerstandsstufe charakterisiert mit ≈ 333 m / 24 h; ungestört stimmt sie mit dem Kepler-Problem in universellen Variablen im Sub-Meter-Bereich überein, Energie/Impuls ~1e-9 | eingebaute Ephemeride geringer Genauigkeit + analytischer Kepler |
| MODELLED | Lambert · Ziolkowski · Porkchop | Hin- und Rückrechnung auf die Zwei-Körper-Wahrheit; ΔV < 0.01 % | Izzo 2015 · Raketengleichung · analytische Hohmann-Untergrenze |
| MODELLED | Bahnbestimmung (Gauss–Newton-Batch) | Sub-Meter / mm·s⁻¹ rauschfrei; ~2 m bei einer Rauschuntergrenze von 5 m | Zwei-Körper + J2 über einen RK4-Bogen |
| MODELLED | Kräftemodell-Anpassung an die präzise Galileo-Ephemeride (voller Bogen) | 0,61 m 3D-RMS, 24 h, Grad/Ordnung 70, nur Kräfte | Endgültige ESA/ESOC-Bahn ESA0MGNFIN (E11), reale finals2000A-EOP (gegen diese Referenz verglichen; keine Zeile der Verifikationsmatrix nennt sie als externe unabhängige Referenz, daher ist sie nicht als VALIDATED gekennzeichnet) |
| MODELLED | Kräftemodell-Anpassung an die präzise Swarm-A-Ephemeride (reduziert-dynamisch) | 0,10 m 3D-RMS (Schranke der empirischen Stufe, kein Messwert) | Präzise ESA-Bahn SW_OPER_SP3ACOM_2_ (gegen diese Referenz verglichen; keine Zeile der Verifikationsmatrix nennt sie als externe unabhängige Referenz, daher ist sie nicht als VALIDATED gekennzeichnet) |
| MODELLED | Kräftemodell-Anpassung an LRO (Mond) (ehrlich verfehlt) | 6,67 m reduziert-dynamisch, über dem Ziel von 5 m | JPL Horizons LRO (NAIF −85) + GRAIL (Gravity Recovery and Interior Laboratory) GRGM660PRIM (gegen diese Referenz verglichen; keine Zeile der Verifikationsmatrix nennt sie als externe unabhängige Referenz, daher ist sie nicht als VALIDATED gekennzeichnet) |
| MODELLED | Mars-Bahnbestimmung im tiefen Weltraum (reduziert-dynamisch, SRIF) | ≈ 0,2 m Mars-LMO (Simulations-Gütemaß, nicht reale Mission) | synthetische Bahnbestimmung im geschlossenen Regelkreis — Validierung der Schätzer-Mechanik |
| MODELLED | Sonnenzentrische Mars-Dynamik gegenüber JPL DE440 | 137 m bei 1-Tages-Bogen (wächst mit dem Bogen = nicht modellierte n-Körper-Effekte) | JPL DE440 über ANISE (xval/anise-mars-od, kernelgebunden) (gegen diese Referenz verglichen; keine Zeile der Verifikationsmatrix nennt sie als externe unabhängige Referenz, daher ist sie nicht als VALIDATED gekennzeichnet) |
| VALIDATED | Einzelpunktbestimmung gegenüber einer vermessenen IGS-Koordinate (reale Beobachtungen) | 5,7 m 3D-RMS / 1,1 m horizontal, Zweifrequenz-SPP mit ionosphärenfreiem Code | Vermessung der IGS-Station ABMF + GPS-Broadcast-Ephemeride, 2018-05-13 (tests/pvt_abmf.rs) |
| MODELLED | Eng gekoppelter GNSS/INS-UKF | 0,77 m RMS über einen 30-min-LEO-Überflug inkl. eines Ausfalls von 120 s | Kräftemodell-Auslauf, von Hand hergeleitet |
| MODELLED | GPS-freie Navigation mit Schwerekarte | ~70 km INS-Drift → ~145 m wiedergewonnen | Ziel von ESA NAVISP Quantum Wayfarer |
| MODELLED | Geländebezogene Navigation (TERCOM/SITAN) | 70 km Drift → < 500 m (Untergrenze durch Gitterauflösung ~140 m) | SRTM-.hgt-DEM; von Hand eingespeiste Drift (nicht zirkuläre Prüfung) |
| MODELLED | IGRF-14-Hauptfeld (Grad/Ordnung 13) | Pol ~80,7°N, Dipol ~29,7 µT, physikalisches Band 22–67 µT | IAGA (International Association of Geomagnetism and Aeronomy) igrf14coeffs.txt (Schmidt-halbnormiert) |
| MODELLED | Modulation von Navigationssignalen & Code-Nachführung | BPSK-Eigen-SSC = 2/(3·R_c); PSDs mit Einheitsfläche; Sub-Meter-C/A-DLL-Jitter bei 45 dB-Hz | Geschlossene SSC/PSD-Ankerwerte + DLL-Thermorauschformel nach Kaplan & Hegarty |
| MODELLED | CR3BP-Halo/NRHO-Differentialkorrektor | STM = finite Differenzen; Bahn schließt sich auf Maschinengenauigkeit; L2-9:2-NRHO ≈ 6,57 d / Perilunium ≈ 3.250 km | Prüfung der STM mit finiten Differenzen + veröffentlichte südliche L2-9:2-NRHO (≈ 6,56 d / ≈ 3.370 km) — CR3BP, keine reale Gateway-Ephemeride |
| MODELLED | ARAIM-Integrität mit zwei Konstellationen | konstellationsweiter Fehlermodus an realem GPS + Galileo | EU ARAIM TR (technical report) / DO-316; Celestrak gps-ops 2021-07-28 (gegen diese Referenz verglichen; keine Zeile der Verifikationsmatrix nennt sie als externe unabhängige Referenz, daher ist sie nicht als VALIDATED gekennzeichnet) |
| VALIDATED | GNSS-Geometrie / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) | Übereinstimmung auf 1e-6 relativ über 8 Geometrien (gut konditioniert → nahezu singulär) | gnss_lib_py 1.0.4 (Stanford NAV Lab) — unabhängige Bibliothek (tests/dop_reference.rs) |
| VALIDATED | ML-Bewertungsmetriken für Detektoren (AUC/ROC/Konfusion/Pd-Pmd/Precision/F1) | exakte Zählwerte + < 1e-9 über 5 Datensätze × 24 Schwellen | scikit-learn 1.9.0 (Pedregosa et al., JMLR — Journal of Machine Learning Research — 2011) — unabhängige Bibliothek (tests/eval_metrics_reference.rs) |
| VALIDATED | ROC-AUC der Anomalieerkennung an realer ESA-OPS-SAT-Telemetrie | AUC reproduziert scikit-learn auf < 1e-9; AUC des Peak-Count-Detektors ≈ 0.85 auf dem gelabelten Testsplit | scikit-learn roc_auc_score auf dem OPSSAT-AD-Testsplit (Ruszczak et al. 2025, CC BY 4,0) — reale OPS-SAT-Telemetrie (tests/opssat_ad_reference.rs) |
| VALIDATED | Numerische Kerne des Quantum-Trade (ADEV-NNLS-Anpassung · χ²-Konsistenzbänder · van-Loan-Uhren-Q) | NNLS + Q exakt; χ² < 5e-4 bei Betriebs-Freiheitsgraden ≥ 48 | scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm (tests/scipy_reference.rs) |
| VALIDATED | MTIE / MDEV / TDEV Wander-Metriken der Telekommunikation (ITU-T G.810/G.823/G.8261/G.811 — die Empfehlungen des Telecommunication Standardization Sector der International Telecommunication Union) | MTIE (9 Mittelungsfaktoren, bitgenau) und MDEV + TDEV (8 Faktoren, < 1e-9 relativ) an der NIST-SP-1065-LCG-Reihe (linear congruential generator) | allantools 2024,06 mtie / mdev / tdev — unabhängige Bibliothek (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs) |
| VALIDATED | MCDA-Methoden für Trade-Studien — alle vier Entscheidungsfamilien, neun extern validierte Aggregatoren (WSM · WPM · WASPAS · MOORA · COPRAS · TOPSIS · VIKOR · PROMETHEE II · ELECTRE I) plus AHP-Prioritätsgewichtung durch paarweise Vergleiche | Bewertungen / Rangfolgen / Konkordanzmatrizen reproduziert auf < 1e-9 | pymcdm + pyDecision (unabhängige MCDA-Bibliotheken Dritter) + Saaty-RI (Random Index) / SciPy-LAPACK eig (tests/mcda_*_reference.rs) |
| VALIDATED | LEO-Doppler-Hüllkurve aus Bahn und Trägerfrequenz | Iridium-Maximum innerhalb von 5 % der veröffentlichten ±36 kHz; Xona Pulsar X1 innerhalb der veröffentlichten 32–34 kHz | RNTF-LEO-PNT-Testergebnisse; Leclère, Marathe & Reid, arXiv:2509,19551 (tests/leo_doppler_reference.rs) |
| MODELLED | PPP-Konvergenz mit LEO-Augmentation | 7,4 → 4,8 / 3,2 / 2,7 / 2,3 min mit 60 / 96 / 192 / 288 LEO-Satelliten, monoton; Filter-NEES innerhalb des χ²-Bands | Trend verglichen mit Li et al., J. Geod. 93:749 (2019) (9,6 → 7,0 / 3,2 / 2,1 / 1,3 min); Konstellationen und Rauschen nicht reproduziert |
| MODELLED | Bedingter Zeitgebungs-Schutzradius (durch Holdover begrenzter unerkannter Zeitfehler unter Spoofing) | die Komposition reproduziert die mehrstufige clock_state-Kovarianzrekursion; kalibriert an einem real aufgezeichneten Spoof |
JammerTest 2024 (Zenodo 15911589) Skalare + van-Loan- / CUSUM-Formeln in geschlossener Form (examples/tpl_jammertest) |
| MODELLED | Bewertung der PNT-Resilienz + Entscheidungsinstabilität | 35 von Hand hergeleitete Tests gegen eine unabhängige Referenz; byte-deterministisches Studienartefakt (fester Seed) | DHS-RPCF-v2.0-Zuordnung + Dirichlet- / Kendall-τ- / Hill-N2-Formeln in geschlossener Form — synthetische Architekturen, keine Zertifizierung |
| MODELLED | Studie zur Optimismuslücke bei HF-Beeinträchtigungen (Skalierungsgesetze + Leave-one-out-Prädiktor) | Signifikanz gegen eine Permutations-Null; byte-deterministisches Artefakt (5 Seeds) | synthetischer parametergestützter Korpus — die Bewertungs-Metriken sind VALIDATED gegenüber scikit-learn (oben); die Studie ist MODELLED |
| CI | Plattformübergreifende Reproduzierbarkeit | bitidentische Eingabe + Form-Goldens auf 3 Betriebssystemen | CI-Matrix Linux / macOS / Windows, SHA-256-Goldens |
| CI | Testabdeckung | ~95 % Zeilen in src/ ohne src/*_data.rs und src/main.rs, Grenzwert ≥ 85 % |
cargo-tarpaulin (LLVM-Engine) |
Wie sich eine Fähigkeit ihr Label verdient — die in der CI durchgesetzte Invariante: keine externe unabhängige Referenz ⇒ kann nicht validiert sein · SVG
Oben: Jede validierte Zeile ist konstruktionsbedingt durch einen externen Datensatz abgesichert. Unten: SGP4 stimmt in jedem Regime mit der offiziellen Referenz überein (schlechtester Wert 4,12 mm). SVG · SVG
176 validiert · 221 modelliert · 4 Partner — SVG
Fähigkeitsbereiche#
Jede Fähigkeit der öffentlichen Karte, nach Domäne geordnet, mit ihrem Label im Register. Die Domänentabelle wird von tools/gen_readme_blocks.py aus web/capabilities.json geschrieben, derselben Datei, die auch die Karte von allem im Studio liest.
Die vollständige Tabelle, Domäne für Domäne mit jeder Fähigkeit und ihrem Label, ist docs/CAPABILITY-DOMAINS.md.
Installation#
Eine Zeile liefert das Kommandozeilenwerkzeug: cargo install kshana. Jeder Kanal liefert v0.40.0 vom selben getaggten Commit aus.
| Kanal | Installation | Leitfaden |
|---|---|---|
| Im Browser ausprobieren | https://kshana.dev öffnen | Studio-Leitfaden |
| Befehlszeile (Rust) | cargo install kshana |
Verwendung der Befehlszeile |
| Rust-Bibliothek | cargo add kshana |
API-Referenz auf docs.rs |
| Python | pip install kshana |
Leitfaden zur Python-API |
| JavaScript und WebAssembly | npm install kshana |
Leitfaden zu npm und WebAssembly |
| KI-Assistent (MCP-Server, cargo) | cargo install kshana-mcp |
Leitfaden zum MCP-Server |
| Docker-Image | docker run --rm -i ghcr.io/ashfordeou/kshana-mcp |
Leitfaden zum MCP-Server: Docker |
| Cursor (ein Klick) | Zu Cursor hinzufügen (npx) · Zu Cursor hinzufügen (Docker) · npx -y kshana-mcp@0.40.0 |
Alle MCP-Installationsschnipsel |
| VS Code (ein Klick) | In VS Code installieren (npx) · In VS Code installieren (Docker) · npx -y kshana-mcp@0.40.0 |
Alle MCP-Installationsschnipsel |
| npx | npx -y kshana-mcp@0.40.0 |
Alle MCP-Installationsschnipsel |
| uvx / pipx | uvx kshana-mcp==0.40.0 |
Alle MCP-Installationsschnipsel |
| Homebrew | brew install ashfordeOU/tap/kshana-mcp |
Alle MCP-Installationsschnipsel |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp |
Alle MCP-Installationsschnipsel |
| winget | winget install AshfordeOU.KshanaMcp |
Alle MCP-Installationsschnipsel |
| Vorkompilierte Binärdatei | kshana-mcp-<target> aus dem Release herunterladen und gegen SHA256SUMS prüfen | Alle MCP-Installationsschnipsel |
| Offizielles MCP-Register | io.github.ashfordeOU/kshana-mcp suchen | Alle MCP-Installationsschnipsel |
| Remote (streambares HTTP), selbst gehostet | kshana-mcp --http 127.0.0.1:8080 |
Anleitung zum Selbsthosting |
| JetBrains-IDE-Plugin | Settings → Plugins → Marketplace → nach "Kshana" suchen (Plugin-ID dev.kshana.ide) | Plugin-Leitfaden |
| Signal-K-Plugin | npm install signalk-kshana-trust |
Anleitung zum Signal-K-Plugin |
| OpenCPN-Plugin | das Plugin-Tarball aus dem Release herunterladen | Einreichung beim OpenCPN-Katalog |
| Grafana-Dashboard | kshana-grafana-*.json aus dem Release importieren | Dashboard-Quelle |
| Referenz-Build-Image | docker pull ghcr.io/ashfordeou/kshana-reference-build |
Marine-Integrationen |
Kshana im JetBrains Marketplace Baut mit Rust 1,88 oder neuer, der rust-version in Cargo.toml
MCP ist das Model Context Protocol. Eine Version festlegen mit cargo install kshana --version 0.40.0, pip install kshana==0.40.0 oder npm install kshana@0.40.0. Zum Bauen aus dem Quelltext siehe Installation und Build unter Referenz.
Ein Szenario aus Python und aus WebAssembly ausführen
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
Über run hinaus stellt das Modul run_full (JSON, SVG und die einzeilige Zusammenfassung auf einmal), run_typed, validate_toml, list_kinds / scenario_kinds und error_kind bereit; siehe docs/PYTHON_API.md.
Das npm-Paket ist die gesamte, nach WebAssembly kompilierte Engine. In Node.js übergeben Sie die Binärdatei an initSync; in einem Browser lädt await init() sie (siehe 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));
Architektur#
Eine offene Engine steht im Zentrum, und jede Oberfläche führt sie aus: die Kommandozeile, die Rust-Bibliothek, Python, WebAssembly und Kshana Studio, der MCP-Server, das Docker-Image und das JetBrains-Plugin. Dieselbe Szenariodatei liefert auf jeder dieselben Bytes. Kshana Pro sitzt als eigenes Overlay darüber, das von der Engine abhängt und sie nie forkt.
Im Inneren der Engine: die Domänenschichten und das Verifikationsregister
Eine Engine, viele Eingänge. Ein einziger Rust-Kern (kshana) führt jedes Szenario aus, erreichbar über eine CLI, eine Python-Erweiterung, ein WebAssembly-Modul im Browser, einen MCP-Server für KI-Agenten und ein JetBrains-IDE-Plugin — alle münden in einen api::run_toml-Dispatch. Im Inneren fügen sich die Sensorpakete in eine gemeinsame Fehlermodell-Schnittstelle ein; daneben stehen eine Bezugssystem-Schicht (IAU-2006/2000A-Präzession–Nutation und die CIO-basierte GCRS↔ITRS-Reduktion), eine Astrodynamik-/Numerik-Schicht (analytisches SGP4/SDP4 und ein numerischer Cowell-Propagator mit seinem EGM2008-/Störkräftemodell, Manöverentwurf und Bahnbestimmung), eine Integritäts-/GNSS-Schicht (RAIM/ARAIM, SBAS, die Messdomäne, Jamming, cislunar), eine Fusions-/Alt-PNT-Schicht (die GNSS/INS-Schätzer und die Karten-Matcher für Schwere/Gelände/Magnetfeld), eine Deep-Space- und Mond-Schicht (radiometrisches Mars-PNT und die Mond-PNT-Suite, ihre Evidenzstufe je Baustein in der Matrix — LTC-Zeit, VLBI, gemeinsame OD+Uhr, Realisierung von Bezugssystemen, Service-Volume, differenzielles PNT, Interoperabilität), eine Missionsanalyse-Schicht (Start / Wiedereintritt / Abdeckung / Ausrichtung / Überflug / Link-Budgets und die Weltraumwetter-Umgebung) und die offene Studienschicht für Resilienz & maschinelles Lernen (RPCF-Resilienzbewertung, die Optimismuslücke bei HF-Beeinträchtigungen und der quantengestützte PNT-Demonstrator), deren reproduzierbare Artefakte auf den validierten Kernen aufsetzen.
Zwei eigenständige, aus dem Workspace ausgeschlossene Crates stehen neben dem Kern — mcp/kshana-mcp (der MCP-Server, gebaut auf dem Edition-2024-rmcp-SDK) und xval/anise-frames (die ANISE/SPICE-Gegenprüfung der Bezugssysteme, die MPL-2.0-Abhängigkeiten (Mozilla Public License 2,0) einbindet) — und über die exclude-Liste der Wurzel-Cargo.toml aus dem Abhängigkeitsgraphen des veröffentlichten Crates, aus Cargo.lock, Lizenzprüfung und MSRV-Build (minimum supported Rust version) herausgehalten. Das JetBrains-Plugin (ide/jetbrains) ist ein eigenes Kotlin-Projekt. Den vollständigen Satz an Diagrammen finden Sie in docs/ARCHITECTURE.md.
Die gerenderten Diagramme (Engine-Ablauf, Modulkarte, Verteilung) stehen in docs/ARCHITECTURE.md.
Diagramme#
Die Diagramme sind Mermaid-Quellen in docs/diagrams/, gerendert zu SVG und PNG in docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> unter Linux, die beiden anderen render-diagram-Skripte anderswo), und ein Eintrag bindet jedes PNG an das genaue SVG, aus dem es stammt. Tests legen die Anzahlen fest, die sie nennen. Die Diagramme in den obigen Abschnitten werden von Werkzeugen aus Engine-Läufen gezeichnet; diese hier zeigen, wie die Teile zusammenpassen.

Ein Dispatch, eine Engine, reproduzierbare Ausgabe · SVG · Quelle system-overview.mmd

Jede Oberfläche, aus derselben Engine · SVG · Quelle surfaces.mmd

Die innere Schleife eines Laufs · SVG · Quelle engine-flow.mmd

Von einem Empfänger-Log zu einem Vertrauenswert und dem, was ihn nutzt · SVG · Quelle trust-flow.mmd

Vom Szenario zum signierten Paket; Kshana erzeugt oder spielt nie ein Signal ab · SVG · Quelle lab-round-trip.mmd

Wie Studio lokal läuft · SVG · Quelle studio-flow.mmd

Test- und Release-Ablauf, von den lokalen Gates bis zu einem verifizierten Release und dem Nur-Site-Pfad · SVG · Quelle release-flow.mmd · docs/RELEASING.md

Wo der Code liegt · SVG · Quelle module-map.mmd

Was wohin ausgeliefert wird und was es prüft · SVG · Quelle distribution.mmd
KI-Assistent#
kshana-mcp ist ein MCP-Server: Ihr Assistent führt die tatsächliche Engine aus und liest deren JSON zurück, statt die Mathematik zu raten. Jedes seiner 49 Werkzeuge ist ein dünner Wrapper um eine öffentliche Funktion der Bibliothek kshana, sodass im Server keine Simulationslogik liegt.
Den MCP-Server installieren#
Beratend, keine typzugelassene Navigationsausrüstung: Der Betreiber bleibt für die Navigation verantwortlich. Der Server läuft auf Ihrem Computer; es wird nichts an Ashforde OÜ gesendet.
Eine Passage, die KI-Clients von Drittanbietern nennt, ist hier weggelassen; sie steht in README.md auf GitHub.
| Kanal | Befehl oder Schaltfläche | Voraussetzung | Festgelegte Form |
|---|---|---|---|
| Cursor (ein Klick) | npx (Node) · Docker | Node oder Docker | kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| VS Code (ein Klick) | npx (Node) · Docker · Insiders (npx) | Node oder 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+ mit uv oder 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, dann 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 |
| Vorkompilierte Binärdatei | die Release-Seite: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], geprüft mit SHA256SUMS und gh attestation verify |
keine | v0.40.0 |
| MCP-Register | io.github.ashfordeOU/kshana-mcp (von registrierungsfähigen Clients gefunden) |
ein registrierungsfähiger Client | 0.40.0 |
| Remote (Streamable HTTP) | kshana-mcp --http 127.0.0.1:8080, selbst gehostet: siehe docs/deploy/mcp-http.md |
Ihr eigener Host | v0.40.0 |
kshana-mcp auf Glama, sein Qualitätswert als MCP-Server
Eine Passage, die KI-Clients von Drittanbietern nennt, ist hier weggelassen; sie steht in README.md auf GitHub.
Die Einrichtung je Client steht in docs/integrations.md. Der Server ist in der offiziellen MCP-Registry als io.github.ashfordeOU/kshana-mcp gelistet.
Die 49 Werkzeuge
Szenarien und Berichte
| Werkzeug | Was es tut |
|---|---|
run_scenario |
Ein Szenario aus einer TOML-Definition (Tom's Obvious, Minimal Language) ausführen |
list_scenario_kinds |
Die 92 eingebauten Szenarioarten mit Beschreibungen + Pflicht- und optionalen Feldern, damit der Agent ein gültiges Szenario aufbauen kann |
validate_scenario |
Vorabprüfung: das TOML parsen und seine Art erkennen, ohne es auszuführen |
list_example_scenarios |
Die mitgelieferten Referenzszenarien als JSON |
get_example_scenario |
Der TOML-Text eines mitgelieferten Referenzszenarios, Byte für Byte die Datei unter scenarios/ |
report_scenario |
Ein Szenario ausführen und seinen Bericht zurückgeben |
animate_scenario |
Ein Szenario ausführen und seine Zeitreihe als Animation zurückgeben |
sky_geometry |
Himmelsgeometrie unter einer azimutabhängigen Horizontlinie: die sichtbaren und verdeckten Satelliten, DOP, die Ost-Nord-Oben-Kovarianz und die horizontale Fehlerellipse; oder ein Horizontlinien-Preset mit seiner Herkunft |
Export und Interoperabilität
| Werkzeug | Was es tut |
|---|---|
list_export_formats |
Welche Interoperabilitätsformate für ein Szenario gelten (czml, kml, geojson, stk, sigmf), den Grund, wenn eines nicht gilt, und die Spezifikation, der jeder Writer folgt |
export_interop |
Ein Szenario als CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, STK-Ephemeride (Systems Tool Kit) .e oder SigMF (Signal Metadata |
import_route |
Eine GeoJSON-LineString-Route in ein Szenario schreiben, das einen Wegpunktkurs abfliegt (terrain-nav, terrain-slam, gravity-map, combined-altpnt), und das neue TOML zurückgeben |
export_sp3 |
Die Konstellation eines orbit-Szenarios als präzise SP3-c-Ephemeride (Standard Product 3, Revision c) exportieren |
export_omm |
Die Elemente eines orbit-Szenarios als CCSDS-502.0-B-2-OMM-Katalog (Consultative Committee for Space Data Systems; Orbit Mean-elements Message) exportieren |
export_oem |
Die Zustandsreihe eines orbit-Szenarios als CCSDS-OEM-Ephemeride (Orbit Ephemeris Message) 2,0 exportieren — die TEME-Position (true equator, mean equinox) und |
export_table_csv |
Ein Szenario ausführen und seine Reproduzierbarkeitstabelle als CSV (comma-separated values) zurückgeben — die bytestabile Tabelle, die die CLI (command-line interface) als <scenario>.table.csv schreibt |
export_test_bench |
Die Fahrzeugbewegung und die Ereignisse eines Szenarios für einen GNSS-Laborsimulator (kshana bench-export) |
Vertrauen in Empfänger und Schiff
| Werkzeug | Was es tut |
|---|---|
assess_receiver_log |
Ein reales GNSS-Empfänger-Log (global navigation satellite system) auf Vertrauen prüfen |
assess_vessel_stream |
Einen begrenzten NMEA-0183-Auszug bewerten (höchstens 2 MiB und 20.000 Epochen |
assess_vessel_log |
Das NMEA-0183-Log eines Schiffes (höchstens 4 MiB) als Batch-Lauf, wobei das Sitzungs-TOML die Grenzen des Schiffes angibt |
create_evidence_pack |
Ein signiertes Nachweispaket für ein Zeitfenster des Logs eines Schiffes (kshana receiver-trust evidence) |
attach_evidence_timestamp |
Ein RFC-3161-Zeitstempel-Token (Base64 der .tsr-Bytes) im Speicher an ein Paket binden (kshana evidence attach-timestamp) |
verify_evidence_pack |
Ein Paket verifizieren (kshana evidence verify) |
generate_training_nmea |
Synthetisches Brücken-NMEA 0183 für die Besatzungsausbildung aus einem nmea-scenario-TOML (Jamming, Positions-Drag-off, Zeit-Spoofing, Replay-Verzögerung) mit dem Ausbilder-Log (kshana-nmea-training/1) |
build_interference_map |
Eine GNSS-Störungskarte aus ADS-B- oder AIS-Positionsmeldungen als CSV-Text (höchstens 4 MiB) |
route_exposure |
Der Anteil der Länge einer Route in degradierten, nicht degradierten, nicht bewerteten und nicht beobachteten Zellen einer oder mehrerer Störungskarten, optional innerhalb eines Datumsbereichs |
trust_telemetry |
Ein Vertrauens-Stream (JSON-Zeilen) oder ein receiver-trust-Ergebnis, dargestellt als Prometheus-Text, CEF- oder LEEF-Syslog-Zeilen oder OTLP-JSON-Nutzlast, mit den kshana trust-telemetry-Encodern |
jammertest_import |
Liest den veröffentlichten Jammertest-Testkatalog und Sendeplan (NPRA/jammertest-plan, MIT) als geplante Wahrheit (kshana jammertest import): Die Slots eines Testgebiets werden zu Empfängervertrauens-Ereignissen mit der Katalogkennung und dem Jahr in jeder Bezeichnung. Geplante Slots, keine aufgezeichneten Sendezeiten; kein Kontaktfeld des Plans wird gelesen. MODELLED. Siehe docs/JAMMERTEST.md. |
jammertest_score |
Bewertet ein Empfänger-Log gegen diesen Zeitplan (kshana jammertest score): je Test die Erkennungslatenz, verpasste Alarme und die Zeit bis zur Erholung sowie die Fehlalarme außerhalb jedes Slots. Textlogs als log, binäre (ubx, sbf) als log_base64. Ein signiertes Paket braucht einen Schlüssel: Befehlszeile. Nur beratend; MODELLED. |
fit_imu_log |
Beschleunigungsmesser- und Gyroskop-Parameter der Szenarien hybrid und fusion, aus einem Log einer ruhenden IMU (CSV oder EuRoC) per Allan-Abweichung angepasst, mit einer zum Einfügen fertigen Tabelle [accel_classical] und dem SHA-256 des Logs (kshana imu-fit). Text hinein, JSON heraus; MODELLED. |
GNSS-IQ (Dateien im Arbeitsverzeichnis; im HTTP-Modus aus)
| Werkzeug | Was es tut |
|---|---|
iq_signals |
Die Einrichtung der GNSS-IQ-Schicht |
iq_info |
Eine IQ-Aufzeichnung (In-Phase und Quadratur) im Arbeitsverzeichnis beschreiben, ohne sie zu verarbeiten |
iq_scene |
Eine GNSS-IQ-Szene mit mehreren Satelliten im Arbeitsverzeichnis erzeugen (kshana iq scene) |
iq_acquire |
FFT-Akquisition (fast Fourier transform) eines oder mehrerer PRNs (pseudo-random noise codes) über eine Aufzeichnung (kshana iq acquire), optional hinter Front-End-Stufen |
iq_track |
Akquirieren, dann mit der DLL/PLL/FLL-Bank (Delay-, Phase- und Frequency-Locked Loop) nachführen (kshana iq track), mit den Schleifen aus einem `kshana.loop-desig |
iq_frontend |
Empfänger-Front-End- und Störungsminderungs-DSP anwenden (digital signal processing |
iq_sweep |
Eine IQ-Aufzeichnung im Arbeitsverzeichnis über mehrere Nachführschleifen-Entwürfe abspielen (kshana iq sweep) |
iq_monitor |
Die Monitore zur Erkennung von Störung und Spoofing über eine IQ-Aufzeichnung im Arbeitsverzeichnis laufen lassen (kshana iq monitor) |
iq_labfit |
Das Verlust-der-Nachführung-Modell der Nachführschleife an Laborläufe anpassen (kshana iq labfit), aus einem iq-labfit-Szenario, dessen Logs inline stehen (text oder base64 |
iq_test_conditions |
Eine als Text übergebene kshana.test-conditions/1-Datei validieren und die aufgelösten Bedingungen mit ihrem Hash zurückgeben |
iq_campaign |
Eine Lab-Replay-Kampagne ausführen (kshana iq campaign) |
iq_campaign_status |
Der Fortschritt eines Kampagnen-Ausgabeordners |
compliance-Zuordnung
| Werkzeug | Was es tut |
|---|---|
compliance_report |
Die Zuordnung zum öffentlichen Rahmenwerk, ausgefüllt aus als Text übergebenen Ergebnisdokumenten (kshana compliance-report) |
compliance_mapping |
Die statischen Zuordnungstabellen (oder, mit sources, die Quelldokumente, die sie mit Versionen und URLs zitieren) als Markdown, angeführt von derselben Aussage |
list_standards_packs |
Die Standards-Packs (kshana standards-pack list): bewertete Szenariosätze für die Testprofile des DHS-Rahmenwerks Resilient PNT, IMO MSC.1/Circ.1575 und ICAO Doc 9849 Anhang F |
run_standards_pack |
Ein Pack gegen vor dem Lauf festgelegte Zielwerte ausgeführt: jeder Test MET, NOT MET oder NEEDS INPUT; MODELLED, bewertet kein Produkt |
lunanet_afs_check |
Das LunaNet Augmented Forward Signal, geprüft gegen LNIS V5 AD1 Volume A (LSIS-AFS V1.0): die Codes gegen die gedruckten Tabellen oder ein Symbolstrom gegen das Rahmenformat; LDPC und CRC-24Q der Unterrahmen 2 bis 4 sind nicht verifiziert |
create_round_trip_pack |
Das signierte Labor-Round-Trip-Paket: Szenario, kshana.test-conditions/1-Dokument, Empfänger-Log und Bewertung, per Hash verknüpft |
Benchmark
| Werkzeug | Was es tut |
|---|---|
score_benchmark |
Eine Einreichung für kshana-bench, gegen eine Wahrheitsdatei bewertet, beide als JSON-Text (kshana bench score, bench/SPEC.md): die Ergebnisdatei mit der Spezifikationsversion, Aufteilung, Eingabe-Hashes und den Kennzahlen der Aufgabe. MODELLED; beschreibt ein Log oder einen Korpus, nie ein Produkt. |
render_leaderboard |
kshana-bench-Ergebnisdateien, als statische Bestenlisten-Seite (HTML-Text) dargestellt, jede zuvor validiert. |
Editionen#
Die gesamte Engine ist kostenlos. Kshana Pro und individuelle Studien sind für Programme gedacht, die mehr brauchen, und jeder kostenpflichtige Weg beginnt mit einer Nachricht: Hier stehen keine Preise.
| Kostenlos | Kshana Pro | Individuelle Studie | |
|---|---|---|---|
| Was es ist | die gesamte offene Engine, alle 92 Szenarioarten, ohne Funktionssperre | ein proprietäres Overlay auf derselben Engine, unter Vertrag | eine PNT-Resilienzstudie Ihres Systems (MODELLED), für Sie erstellt |
| Lizenz | AGPL-3.0 (GNU Affero General Public License, Version 3) oder eine kommerzielle Lizenz | proprietär | Vertrag |
| So beginnen Sie | installieren oder kshana.dev öffnen | eine Pro-Evaluierung anfragen | eine Studie anfragen |
Was Pro ist, in den Worten von docs/PRO.md:
Eine strikte Obermenge des offenen Kshana. Pro hängt als Bibliothek von der offenen Engine ab und forkt sie nie. Jede offene Szenarioart läuft in Pro unverändert, und ein offenes Szenario läuft in Pro ganz ohne Lizenz.
Keine neue Physik. Pro fügt kein physikalisches Modell hinzu und ändert keines. Jede Zahl in Pro stammt aus Läufen der offenen Engine, daher ist ein Pro-Wert so vertrauenswürdig wie die offene Szenarioart, aus der er stammt, und nie mehr.
Pro beantwortet die nächsten Fragen eines Programms: welcher Entwurf geflogen werden soll (ein Entwurfsoptimierer und seine Pareto-Front), wie sicher die Antwort ist (Unsicherheit und Sensitivität) und ob die Mission ihre Anforderungen erfüllt (ein Missions-Dossier, Anforderungs-Rückverfolgbarkeit, Trade-Studien, eine Szenario-Regressionsprüfung, digitale Uhrenzwillinge, ein Studien-Dossier und ein On-Premises-Dienst). Es überwacht außerdem eine Kampagne von Kennzahlen und lässt eine Pipeline fehlschlagen, wenn eine schlechter wird, testet Kandidaten für Signalpläne in beide Richtungen gegen die offenen Satellitennavigationssignale (Spektrumkoexistenz) und reiht Studien in einem On-Premises-Auftragsdienst mit einem hashverketteten Lieferregister ein. Jedes davon wird, mit dem, was es erzeugt und was es nicht leistet, in docs/PRO.md beschrieben. Nichts, was Pro erzeugt, ist eine Zertifizierung, und eine individuelle Studie ist ebenfalls keine Zertifizierung.
Was Kshana Pro aus der offenen Engine liest, und Support von Ashforde® OÜ
Worauf Kshana Pro aufbaut. Jeder Teil von Pro arbeitet mit der offenen Engine und lässt sie unverändert:
- Der Entwurfsoptimierer, die Unsicherheitsstudie und das Missions-Dossier führen Szenarien der offenen Engine über deren öffentliche Schnittstelle aus und berechnen jede Zahl aus den Ergebnissen der Läufe. Jede Ausgabe behält die Stufe VALIDATED, MODELLED oder PARTNER, die die offene Engine jeder Kennzahl gegeben hat, nie eine höhere.
- Digitale Uhrenzwillinge verwenden das Uhrenmodell der offenen Engine und ihren Schätzer der Allan-Abweichung: Ein Zwilling wird auf das veröffentlichte Allan-Budget des Geräts kalibriert und dann geprüft, indem die Allan-Abweichung des Zwillings mit dem offenen Schätzer bestimmt wird.
- Trade-Studien führen jede Architekturoption unverändert als Szenario der offenen Engine aus und ordnen die Optionen nach einer aus dem Ergebnis jedes Laufs gelesenen Gütekennzahl.
- Campaign Watch liest seine Kennzahlen aus den Ergebnissen von Läufen der offenen Engine für die Szenarien eines Packs und vergleicht sie mit dem vorherigen bestandenen Lauf.
- Spektrumkoexistenz liest jede physikalische Zahl aus Läufen der offenen Engine für die Arten
leo-signalundconstellation-designund fügt nur die Summe über die sichtbaren Satelliten und die Rangfolge der Pläne hinzu. - Der On-Premises-Auftragsdienst führt offene und Pro-Szenarien über dieselbe Engine aus und speichert jedes Ergebnis so, wie der Lauf es zurückgegeben hat.
- Nachweispakete halten für jeden Lauf den Szenario-Hash fest, den die offene Engine auf ihr Ergebnis stempelt, sodass sich eine Kennzahl in einem Paket durch erneutes Ausführen ihres Szenarios reproduzieren lässt.
- Systems-Engineering- und Programm-Werkzeuge. Die modellbasierten Systems-Engineering-Werkzeuge (MBSE) und Programm-Werkzeuge von Kshana Pro prüfen die Anforderungen eines Programms gegen Läufe der offenen Engine: Sie importieren Anforderungen als kommagetrennte Werte (CSV) oder als dokumentierte Teilmenge des Requirements Interchange Format (ReqIF) oder des Textes der Systems Modeling Language Version 2 (SysML v2), werten jedes Abnahmekriterium mit seiner Einheit gegen die Werte aus, die ein Lauf geschrieben hat, und erzeugen eine Verifikations-Querverweismatrix (VCRM), ein SysML-v2-Modell, einen Änderungsauswirkungsbericht und ein Offline-Nachweispaket. Sie führen nichts erneut aus und berechnen nichts neu und lesen nur, was die offene Engine veröffentlicht: das
result.jsonjedes Laufs (die Felder, die ein Kriterium nennt, ihre Einheiten, den Reproduzierbarkeitsstempel aus Szenario-Hash, Seed, Engine-Version und Schema-Version sowie das Label und die Kennzahlenstufen des Laufs), seinreport.json(Art, Reproduzierbarkeitsprotokoll und Fähigkeits-Labels), die Szenariodatei (ihren Hash, ihre Art, ihren Seed und ihre Parameter), das Schema der Feldeinheiten (Einheit, Herkunft und Evidenzstufe jedes Feldes) und die Verifikationsmatrix (das Label VALIDATED, MODELLED oder PARTNER jeder Fähigkeit).
Support & professionelle Dienstleistungen#
Kshana ist frei und Open Source unter der AGPL-3.0 und wird von Ashforde® OÜ professionell entwickelt und gepflegt (Estland). Die offene Engine ist vollständig und für sich allein nutzbar. Für Organisationen, die mehr brauchen, bietet Ashforde® OÜ:
- Kommerziellen Support & Integration — Kshana in Ihre Toolchain einbetten, individuelle Szenarien und bevorzugte Fehlerbehebungen.
- Individuelle Sensormodelle — auf Ihre Hardware kalibriert, einschließlich exportsensibler Resilienzmodelle, die in einem privaten Overlay gepflegt werden.
- Kshana Pro — proprietäre modellbasierte Systems-Engineering-Werkzeuge (MBSE) und Programm-Werkzeuge, die die Anforderungen eines Programms gegen Läufe der offenen Engine prüfen und eine Verifikations-Querverweismatrix (VCRM), ein Modell der Systems Modeling Language Version 2 (SysML v2), einen Änderungsauswirkungsbericht und ein Offline-Nachweispaket erzeugen. Sie führen nichts erneut aus und lesen nur die veröffentlichten Ausgaben der Engine: das
result.jsonund dasreport.jsonjedes Laufs, die Szenariodatei, das Schema der Feldeinheiten und die Labels der Verifikationsmatrix (die vollständige Liste steht unter Editionen). - Entwurfs-, Unsicherheits- und Missions-Werkzeuge von Kshana Pro — die Pareto-Front eines Entwurfsraums, Unsicherheit und Sensitivität über Tausende von Läufen und ein Missions-Dossier per Einzelbefehl mit Verifikationsmatrix und PDF; siehe
docs/PRO.md. - Campaign Watch, Spektrumkoexistenz und Auftragsdienst von Kshana Pro — eine Pipeline, die fehlschlägt, wenn sich eine überwachte Kennzahl verschlechtert, Signalpläne, die in beide Richtungen gegen die offenen Satellitennavigationssignale getestet werden, und eine On-Premises-Auftragswarteschlange mit einem hashverketteten Lieferregister; siehe
docs/PRO.md. - Schulung & Beratung zur Leistungsanalyse von Quanten-/klassischem PNT.
Das ist das Open-Core-Modell: Die Engine ist und bleibt offen lizenziert; das tragende Geschäft sind Fachwissen, Support und die proprietären Erweiterungen — nicht Lizenzgebühren. Kontakt: contact@ashforde.org · ashforde.org.
Forschung#
Auf der offenen Engine aufbauende Studien werden auf arXiv veröffentlicht. Jede nennt den Engine-Befehl dahinter, sodass sich ihre Zahlen aus einem eingecheckten Szenario oder Studienbeispiel neu erzeugen lassen.
| Paper | Was es zeigt | Engine-Befehl |
|---|---|---|
| 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 |
Der Rückgang der Bewertung eines GNSS-Störungsdetektors, sobald sich die Bedingungen verschieben, lässt sich allein aus Statistiken der Trainingsverteilung vorhersagen, an einem offenen synthetischen Testbed und danach an offenen Feldaufzeichnungen. | 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 |
Ein GNSS-Zeitgebungsempfänger unter Spoofing hat keine endliche unbedingte Schranke für den unerkannten Zeitfehler, daher gibt das Paper eine bedingte an, kalibriert an einem aufgezeichneten Over-the-Air-Spoof aus der öffentlichen Kampagne 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 |
Ein einzelner zusammengesetzter Resilienzwert ist nur dort eine stabile Entscheidungsgrundlage, wo ein Entwurf dominiert; wo Entwürfe konkurrieren, kann allein eine Neugewichtung den Sieger ändern. | 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 |
Entfernungsmessung innerhalb einer Mondkonstellation lässt die absolute Position einer Oberflächenstation unbeobachtbar; eine Laufzeit der Very-Long-Baseline-Interferometrie (VLBI) von der Erde stellt sie wieder her, wenn die Konstellation dünn besetzt ist, und schärft sie, wenn sie dicht besetzt ist. | die Art 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 |
Geplante Konstellationen aus vier bis sechs Satelliten liefern am lunaren Südpol eine schlechte Geometrie, und einige Oberflächen-Entfernungsbaken beheben das weit günstiger als mehr Satelliten. | die Art 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 |
Die Dilution of Precision ist für reine Entfernungsverfolgung im cislunaren Raum nicht definiert, weil die Geschwindigkeit in einer Momentaufnahme unbeobachtbar ist; daher verwendet das Paper die Beobachtbarkeits-Gramian auf vier ebenen weiten retrograden Bahnen: Nur Entfernung hat in einer Momentaufnahme den Rang 2 von 4 und braucht einen Bogen von etwa 2,09 h, um vollständig beobachtbar zu werden, wobei sich die Konditionierung mit wachsender Bogenlänge verbessert; die Entfernungsrate (Doppler) liefert sofort den Rang 4; und die gemeinsame Schätzung einer Station mit Satellitenzuständen und Uhren bleibt um eins rangdefizient, solange keine externe interferometrische Beobachtungsgröße hinzukommt. Anforderungen gehören in Budgets für Bogenlänge, Konditionierung und Messtyp, nicht in DOP. | die Art cislunar-observability: kshana scenarios/cislunar-observability.toml (ihre Schwesterart cislunar-arc-recovery testet die Schwelle mit einem unabhängigen Finite-Differenzen-Schätzer) |
Die drei Studienbeispiele schreiben byte-deterministische Artefakte (feste Seeds), die ihre Engine-Version, ihre Seeds und einen Konfigurations-Hash festhalten. Die drei Paper zu Mond und cislunarem Raum bauen auf der Mond-Suite auf (die Evidenzstufe jedes Bausteins steht in der Verifikationsmatrix); ihre Aussagen zu Geometrie und Dilution of Precision werden außerdem in tests/validate_p*.rs gegen getrennte unabhängige Referenzen gegengeprüft. Mehr unter Reproduzierbare Studienartefakte in der Referenz.
Zitieren#
Wenn Sie Kshana in akademischen oder technischen Arbeiten verwenden, zitieren Sie bitte die von Ihnen verwendete Version mit Szenario und Seed. CITATION.cff enthält die maschinenlesbaren Metadaten, und GitHub zeigt daraus eine Schaltfläche „Cite this repository“ an. Jedes Release wird auf Zenodo archiviert; der Konzept-DOI (Digital Object Identifier) 10.5281/zenodo.20528627 führt immer zur neuesten Version.
Baweja, C. (2026). Kshana — a PNT-resilience simulator with quantum-sensor performance models. Ashforde OÜ. https://doi.org/10.5281/zenodo.20528627
Die oben genannten Paper:
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
Lizenz#
Kshana ist doppelt lizenziert: die GNU AGPL-3.0-only (LICENSE) oder eine kommerzielle Lizenz von Ashforde® OÜ für geschlossene Integration, für die die AGPL nicht passt. LICENSING.md erklärt, welche gilt. Beiträge werden eingehend unter der AGPL lizenziert und räumen Ashforde® OÜ zusätzlich das Recht ein, sie in die kommerzielle Edition aufzunehmen; signieren Sie jeden Commit mit git commit -s (siehe CONTRIBUTING.md). „Kshana“ und seine Marken sind Marken von Ashforde® OÜ: Die Lizenz deckt den Code ab, nicht den Namen, bitte benennen Sie Forks daher um.
Referenz#
Das lange Material, eingeklappt. Jedes Dokument ist in der Dokumentation aufgeführt.
Installation & Build aus dem Quelltext
Installation & Build#
Erfordert eine Rust-Toolchain (≥ 1,88, die rust-version in Cargo.toml; entwickelt mit 1,93).
git clone https://github.com/ashfordeOU/kshana
cd kshana
cargo build --release
cargo test # all tests pass
Verwendung: die Kommandozeile im Ganzen
Verwendung#
Jedes Szenario ausführen; die CLI verzweigt anhand des Feldes kind des Szenarios und schreibt <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html und <scenario>.report.json daneben — plus <scenario>.table.csv für die Arten, die eine Tabelle veröffentlichen. Der Bericht (eine HyperText-Markup-Language-Seite (HTML) und ein JSON-Dokument mit demselben Inhalt) enthält eine Management-Zusammenfassung, jede Eingabe mit ihrer Einheit, die Ergebnisse und Diagramme, die Sweep-, Monte-Carlo- oder Ketten-Tabellen einer Kampagne, eine Ereigniszeitleiste, das Label VALIDATED / MODELLED / PARTNER und die Quelle jeder vom Lauf verwendeten Fähigkeit, was nicht modelliert ist, und ein Reproduzierbarkeitsprotokoll (Engine-Version, Digests des Secure Hash Algorithm 256-bit (SHA-256), Seed, Plattform und der genaue Befehl). Er lässt sich aus dem Browser auf A4- oder Letter-Papier als saubere PDF-Datei (Portable Document Format) drucken; die Engine schreibt selbst kein PDF. Siehe 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> schreibt CZML (die Cesium Language), KML (Keyhole Markup Language), GeoJSON (Request for Comments 7946), Ansys-STK-Ephemeriden (Systems Tool Kit) .e und SigMF-Aufzeichnungen (Signal Metadata Format) neben das Szenario, und --import-route <route.geojson> speist eine GeoJSON-Linie in die Arten ein, die einen Kurs abfliegen. Jedes Format wird gegen seine veröffentlichte Spezifikation validiert, und ein Szenario, für das ein Format nicht gilt, sagt warum: siehe docs/INTEROP.md.
Weitere CLI-Modi — ein Szenario linten, reale Erdorientierungsdaten einspeisen oder eine ganze Suite ausführen:
# 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
Animationsexport. --animate svg|html|frames|all schreibt <scenario>.animation.svg (Cascading-Style-Sheets-Keyframes (CSS), kein Skript), <scenario>.animation.html (Wiedergabe, Pause, Scrubben, Geschwindigkeit und synchronisierte Panels, ohne externe Ressource) und <scenario>.frames/ (frame_0000.svg, … plus manifest.json mit den Bildern pro Sekunde und der Dauer). Eine Kampagne spielt ihre Phasen und Alarme ab, ein Spektrumlauf sein Wasserfalldiagramm; das Design folgt prefers-color-scheme und prefers-reduced-motion zeigt das fertige Bild. Sie stellt die eigenen Samples des Laufs dar, bei erneutem Lauf byte-identisch, und fügt keine Evidenz hinzu. Siehe docs/ANIMATION.md.
Ein Suite-Manifest ist eine kleine TOML-Datei (Tom's Obvious, Minimal Language) — ein title und ein scenarios = [ … ]-Array von Szenariopfaden —, die die Engine nacheinander ausführt, wobei jedes Ergebnis (mit seinen Labels MODELLED / VALIDATED) in ein selbstbeschreibendes Studienartefakt gefaltet wird. Siehe scenarios/quantum-pnt-demonstrator.suite.toml.
Interoperabilitätsrolle. Kshana ist die Leistungssimulations-Schicht, die neben der Nachverarbeitungs-Toolchain steht, kein Ersatz für sie: Speisen Sie die RINEX-Ausgabe in RTKLIB oder gLAB für eine Positionslösung ein und verwenden Sie die SP3-Ausgabe als Präzisionsbahn-Produkt für Werkzeuge wie Ginan — Kshana beantwortet welche Resilienz eine gegebene PNT-Architektur bringt, bevor Sie reale Signale haben, in Formaten, die diese Werkzeuge bereits einlesen (--export-sp3, oder export_sp3 = true in einem orbit-Szenario, schreibt <scenario>.sp3). Dieselbe Bahn kann als CCSDS-OMM-Mittelelemente auf dem Standardisierungspfad veröffentlicht werden (--export-omm, oder export_omm = true, schreibt <scenario>.omm) — eine OMM-502,0-KVN-Nachricht (keyword = value notation) je durch TLE definiertem Satelliten, die die reale NORAD-Katalognummer (North American Aerospace Defense Command), die internationale COSPAR-Bezeichnung (Committee on Space Research) und die Epoche jedes Objekts trägt, für jeden OMM-fähigen Verbraucher statt eines eigens gebauten Zweizeilen-Elementesatzes.
Beispielausgabe (Uhren-Holdover — beachten Sie, wie die Gütemaße für Integrität und Sicherheit berichtet werden):
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
Der Zeitfehler der optischen Uhr im 95. Perzentil (p95) beträgt 1.20e-4 ns: Die Zusammenfassung gibt kleine Werte mit signifikanten Stellen aus, statt sie auf 0.0 zu runden. security zeigt n/a (no attack), weil dieses Szenario keinen Angriff konfiguriert und es daher nichts zu erkennen gibt. Das JSON-Ergebnis trägt dennoch für jede Uhr die analytische Schranke der Spoof-Erkennbarkeit in fom.security (0,997 für die optische Uhr, 0,000 für die chipskalige Atomuhr, deren eigenes Rauschen über das Überwachungsfenster die Vorgabe von 20 ns übersteigt), und sein Block figure_tiers kennzeichnet diese Kennzahl mit applicable: false. Die Szenarioart spoof bewertet die Erkennung anhand eines eingespeisten Angriffs. figure_tiers gibt außerdem jeder berichteten Kennzahl ihre Verifikationsstufe — VALIDATED (gegen eine externe unabhängige Referenz geprüft) oder MODELLED — und die Zeile der Verifikationsmatrix an, aus der die Stufe gelesen wird. Das Orbit-Szenario berichtet zusätzlich neben dem Uhrenergebnis einen Geometrieblock — Anteil der Samples mit Fix sowie beste/mediane Positions-Dilution-of-Precision (PDOP) und Positionsgenauigkeit.
Lesen Sie diese beiden Zahlen sorgfältig.
securityist eine analytische Schranke der Spoof-Erkennbarkeit, abgeleitet aus der Stabilität jeder Uhr — sie ist nur gegenüber einem konfigurierten Spoofing-Szenario aussagekräftig und kein RAIM-Detektor mit mehreren Satelliten.integrityist hier die Selbstkonsistenz des Filters (Anteil der Ausfall-Samples innerhalb seiner eigenen k-Sigma-Schranke), keine HPL/VPL-Integritätskennzahl der Luftfahrt. Siehedocs/INTEGRITY.md.Für echte empfängerautonome Integrität führt die Szenarioart
integrity(scenarios/integrity-raim.toml) echtes Snapshot- und Solution-Separation-RAIM (nach Art von ARAIM) über der propagierten Konstellationsgeometrie aus: Sie berechnet horizontale/vertikale Schutzradien (HPL/VPL) pro Epoche und berichtet den Anteil der Epochen, die die konfigurierten Alarmgrenzen einhalten, mit einem Stanford-Integritätsdiagramm zur Klassifikation von Fehler gegen PL (protection level).
Reproduzierbare Studienartefakte
Vier offene Studien erzeugen jeweils ein byte-deterministisches Artefakt (fester Seed) aus einem Befehl neu — die Zahlen hinter den Studien zum Quanten-gegen-klassisch-Übergang, zur Optimismuslücke bei HF-Beeinträchtigungen, zur Bewertung der PNT-Resilienz und zum Zeitgebungs-Schutzradius:
# 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
Jedes Artefakt hält seine Engine-Version, seine Seeds und einen Konfigurations-Hash fest und trägt ein ehrliches Label MODELLED/VALIDATED. Die Echtdaten-Sonden (*_probe) führen dieselbe Pipeline über Aufzeichnungen aus, die Sie lokal bereitstellen; im Repository werden keine Datensätze mitgeliefert. Die Studie zur Optimismuslücke bei HF-Beeinträchtigungen ist im Preprint arXiv:2606,22054 beschrieben und der bedingte Zeitgebungs-Schutzradius (tpl_jammertest oben) im Preprint arXiv:2606,24210 (siehe Zitieren).
Bei den veröffentlichten Studien zu Mond-PNT (arXiv:2607,06212 DOP von Oberflächenbaken, arXiv:2607,02566 VLBI-Beobachtbarkeit und arXiv:2610,23871 Beobachtbarkeit der Bogenlänge im cislunaren Raum) sind die Aussagen zu Geometrie, Dilution of Precision, Echtzeit-Vorhersage von Bezugssystem / Erdorientierungsparametern (EOP), retrograden Fernbahnen und HF-Entfernungsmessung in tests/validate_p*.rs unabhängig gegen getrennte unabhängige Referenzen gegengeprüft (scipy.special.j1, eine unabhängige NumPy-DOP-Lösung mit (HᵀH)⁻¹, ein NumPy-Neu-Parsen derselben IERS-finals2000A-Zeilen und die Three-Body Periodic Orbit Database von NASA/JPL). Dies sind zusätzliche Regressionsprüfungen über der modellierten Mond-Suite; sie ändern nichts an der maschinell geprüften Anzahl der Matrix.
Szenarioformat
Szenarioformat#
Szenarien sind deklaratives TOML. Ein kind auf oberster Ebene wählt das Pack — insgesamt fünfzig (clock ist der Standard, wenn er fehlt): 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 (Testbed zur Bewertung der Erkennung von HF-Beeinträchtigungen mit maschinellem Lernen — gelabelter synthetischer Korpus + detektorunabhängiges ROC/AUC-Harness + Optimismuslücke zwischen Verteilung und Fremdverteilung), quantum-trade (PNT-Trade Quanten gegen klassisch mit Einlesen gemessener ADEV + Resilienzhüllkurve bei GNSS-Ausfall; MODELLED), space-weather (Sonnen-/geomagnetische Indizes + exosphärische Temperatur nach Jacchia-71 + aktivitätsgetriebene thermosphärische Dichte über der statischen Atmosphäre; MODELLED), oem-interop (CCSDS-OEM-Import/Round-Trip-Brücke für GMAT/Orekit/STK-Ephemeriden; MODELLED), das Missionsanalyse-Trio launch-window (Zwei-Körper-Startazimut / Ebenenwechsel / Gelegenheiten), reentry (ballistischer Wiedereintrittskorridor nach Allen-Eggers), eo-coverage (EO-Streifen- / GSD- / Zugriffs- / Wiederbesuchsgeometrie), space-packet (CCSDS-133,0-TM/TC — Telemetrie/Telekommando — Space-Packet-Rahmung — exaktes Bit-Layout, per Round-Trip verifiziert) und attitude-budget (3-DOF-Gravitationsgradienten-Drehmoment + RSS-Ausrichtungsfehlerbudget), passes (Vorhersage von Überflügen mit Auf-/Untergang an der Bodenstation — AOS/TCA/LOS, maximale Elevation, Zugriff) und link-budget (einseitige CCSDS/DSN-Streckengleichung — FSPL / Eb·N₀ / Marge / Schließung); telecom-timing (Holdover-Zeitfehler, MTIE und TDEV gegen ITU-T-Masken geprüft); spectrum (das gesamte GNSS-L-Band als eine spektrale Leistungsdichte: ein Frequenz-Zeit-Wasserfalldiagramm unter einer skriptgesteuerten Zeitleiste eines Dauerstrich-, Schmalband-, Chirp- oder rauschangepassten Störsenders, Störer-zu-Signal-Verhältnis je Band und effektive Träger-zu-Rauschleistungsdichte aus dem spektralen Trennkoeffizienten sowie Ein- und Ausgabe von Aufzeichnungen im Signal Metadata Format (SigMF) mit Welch-Spektralschätzungen; die Signalspektren VALIDATED gegen Lehrbuchwerte, das Störsender-Szenario MODELLED; siehe docs/SPECTRUM.md; dieselbe Art zeichnet UHF-, S- und C-Band-Panels mit entworfenen Signalen niedriger Erdumlaufbahn); leo-signal (Signalentwürfe für Positionierung, Navigation und Zeitgebung in niedriger Erdumlaufbahn für jedes System: bandbegrenzte Spektren, Code-Nachführ-Jitter und Entfernungsmessgenauigkeit, Akquisitionssuche und -zeit, spektrale Trennung gegen GPS und Galileo, Störfestigkeit und ein UHF-bis-C-Band-Trade, aus öffentlichen Presets wie Xona Pulsar, Iridium, Starlink und CentiSpace oder Inline-Entwürfen; die geschlossenen Formen und der LEO-Doppler VALIDATED, die Entwürfe MODELLED; siehe docs/LEO-SIGNAL.md); solar-system (die Sonne, die Planeten, Pluto, der Mond und sieben große Monde zu einer Epoche — Positionen, Konstanten, Lichtlaufzeiten und Bahnspuren; Planetenpositionen VALIDATED gegen JPL Horizons) und body-pnt (Positionierung um jeden dieser Körper mit einer lokalen Navigationskonstellation und einer Deep-Space-Strecke von der Erde; MODELLED); campaign (bestehende Arten, zusammengesetzt zu einer verketteten Missionszeitleiste mit zwischen den Phasen übergebenem Zustand, einem Parameter-Sweep, einem Monte-Carlo-Ensemble mit Seed oder mehreren Szenarien unter einer gemeinsamen Bedingung; MODELLED, siehe docs/CAMPAIGNS.md); constellation-design (Walker-Delta- und Walker-Star-Muster, Elementlisten und Mehrschalen-Entwürfe mit Presets für GPS, Galileo, BeiDou und GLONASS sowie Abdeckung und Dilution of Precision über einem Breiten-/Längengitter; der Generator und das globale GPS-DOP VALIDATED gegen die veröffentlichten Dienstdokumente, siehe docs/CONSTELLATION-DESIGN.md); leo-pass (ein Überflug eines Positionierungs-, Navigations- und Zeitgebungs-Satelliten (PNT) in niedriger Erdumlaufbahn (LEO) und sein Link-Budget Band für Band, aus jeder Konstellation und jedem Signalentwurf: Blickwinkel, Doppler und Doppler-Rate, ITU-R-Regen-, -Gas-, -Szintillations- und Gebäudeeindringungsdämpfung, Träger-zu-Rauschleistungsdichte gegenüber den sichtbaren MEO-GNSS-Satelliten, die Ionosphäre erster Ordnung und ionosphärenfreie Paare sowie ein Fix-Budget mit niedriger Energie, Ionosphärensondierung aus jedem Bandpaar und Spoofing-Monitore durch Doppler- und Überflug-Geometrie-Konsistenz und durch Konsistenz zwischen den Bändern; die ITU-R-Terme und die Doppler-Hüllkurve für ruhende Nutzer VALIDATED, der Überflug MODELLED, siehe docs/LEO-PASS.md); leo-navmsg (die Broadcast-Ephemeriden- und Uhrennachricht eines PNT-Satelliten in niedriger Erdumlaufbahn (LEO), für jede Bahn und jeden Träger: ein Fitter von einer integrierten Wahrheitsbahn auf den Galileo-Kepler-Satz, dieser Satz mit Korrekturpolynomen entlang der Bahn, quer zur Bahn und radial, das 22-Parameter-Modell von Liu et al. 2025 oder das ATOMIC-ECEF-Polynom mit Null-Uhr; Signal-in-Space-Entfernungsfehler (SISRE) gegenüber Fit-Intervall und Aktualisierungsperiode, eine Kontinuitätsprüfung bei Aktualisierung mitten im Überflug, das eigene dokumentierte Binärframe von Kshana mit einer zyklischen Redundanzprüfung CRC-24Q und einem Quantisierungsbudget sowie ein Block im RINEX-4-Stil, als Kshana-Erweiterung gekennzeichnet; die SISRE-Gewichte, der Galileo-Nutzeralgorithmus und CRC-24Q VALIDATED, die Fits MODELLED; optionale Presets für Xona Pulsar, Iridium, Starlink, CentiSpace, ein repräsentatives C-Band-System, ATOMIC und Celeste IOD; siehe docs/LEO-NAVMSG.md); das fusionierte MEO + LEO PNT-Trio leo-pvt (Doppler-Positionierung aus der Entfernungsrate von Satelliten in niedriger Erdumlaufbahn (LEO), gemeinsame GNSS- + LEO-Pseudorange-Fixes mit systemübergreifenden Biases und das DOP gegenüber der Anzahl der LEO-Satelliten, Polar- und Arktisabdeckung sowie LEO-Zeitübertragung zu UTC — über jede Konstellation, mit optionalen Presets wie Xona Pulsar, Iridium und Starlink als Gelegenheitssignalen; die LEO-Doppler-Hüllkurve VALIDATED gegen veröffentlichte Iridium- und Xona-Werte), leo-ppp (Konvergenz der präzisen Punktbestimmung nur mit GNSS und mit LEO-Augmentation, verglichen mit Li et al. 2019) und ntn-positioning (Positionierung über nichtterrestrische 5G-Netze aus der Cramér-Rao-Schranke der Signalbandbreite), außer dieser Hüllkurve MODELLED, siehe docs/LEO-PNT-FUSION.md; leo-pnt-chain (ein LEO-PNT-System von Anfang bis Ende: ein Entwurf leo-signal, getragen von einem Band leo-pass, das C/N0 des Überflugs und der Signal-in-Space-Entfernungsfehler der Navigationsnachricht, übergeben an einen fusionierten Fix leo-pvt und die Konvergenz leo-ppp, jede Übergabe aufgelistet; MODELLED, siehe docs/LEO-PNT.md, das zugleich die Übersicht über jede LEO-PNT-Art und jedes Szenario ist, einschließlich der Resilienzkampagnen, eines Szenarios je Schwerpunkt des Experiments und eines je Endnutzer-Vertikale); die Mond-PNT-Suite lunar-vlbi, lunar-joint-od-clock, lunar-frame-realisation, moonlight-service-volume, lunar-differential-pnt, lunar-interop-export; der quantengestützte PNT-Demonstrator quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; und die Forschungsarten zu Signalsicherheit, cislunarem Raum & mehrschichtiger Resilienz lunar-attack-surface, realtime-frame-eop, lunar-time-budget, hybrid-optical-rf, cislunar-observability, conflict-resilience — das Missionsanalyse-Trio und diese späteren Arten allesamt MODELLED (jeweils mit einem validierten Kern in geschlossener Form; siehe die Matrix). Gemeinsame Felder: seed, ein Raster [time], eine Verfügbarkeitszeitleiste [gnss] (der Ausfalltreiber) und Blöcke je Sensor mit provenance-Strings, die die Quelle jeder Kennzahl nennen. Beispiel (Uhr):
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
Optionale Felder (aus, wenn nicht vorhanden): Eine Uhr kann flicker_floor hinzufügen (1/f-FM — Frequenzmodulation — Allan-Untergrenze); ein Inertialsensor kann gyro_bias und q_arw hinzufügen (Gyro-Bias und Winkel-Random-Walk) sowie bias_instability und q_aa (die Allan-Untergrenze der Bias-Instabilität und der Beschleunigungs-Random-Walk) — zusammen ein einachsiges (1-DOF) Fehlerbudget des Beschleunigungsmessers (VRW/ARW — Geschwindigkeits-/Winkel-Random-Walk — und Bias-Instabilität). Dies ist das Fehlerbudget, das das mitgelieferte Pack an inertial-Szenarien ausführt. Davon getrennt enthält die Bibliothek jetzt einen verifizierten 3-achsigen Strapdown-Navigator (src/inertial/{attitude,mechanization,imu_errors}.rs): Quaternionen-Lage mit Coning-/Sculling-Kompensation, eine vollständige NED-Mechanisierung (Erdrate- und Transportrate-Terme, Somigliana-Schwere nach WGS-84) und ein deterministisches IMU-Fehlermodell, in dem Skalenfaktor, Fehlausrichtung, g-Empfindlichkeit, Quantisierung und Ratenrampe modelliert werden (IEEE Std 952-1997, die IEEE-Norm für Gyro-Spezifikation und Testverfahren, §A.2; Groves 2013 §4,3). Dieser 3-achsige Pfad ist jetzt in ein lauffähiges lose gekoppeltes GNSS/INS-Pack eingebunden (kind = "gnss-ins"): Ein EKF mit 15 Fehlerzuständen diszipliniert die Strapdown-Lösung gegen verrauschte Fixes, solange GNSS verfügbar ist, läuft dann durch den Ausfall und berichtet den fusionierten horizontalen Fehler gegenüber dem offenen reinen INS-Auslauf. Eine eng gekoppelte Pseudorange-Aktualisierung ist ebenfalls verfügbar (sie bildet die Innovation im Entfernungsbereich und korrigiert daher auch mit weniger als vier Satelliten weiter). Ein Uhren-Holdover-Szenario kann runs (> 1) hinzufügen, um ein Monte-Carlo-Ensemble auszuführen — jede Kennzahl wird dann als Mittelwert mit einer Streuung vom 5. bis 95. Perzentil berichtet, und das Diagramm schattiert das Konfidenzband des Fehlers (siehe scenarios/clock-ensemble.toml).
Ein Szenario fusion (dieselben Blöcke wie hybrid) führt zwei unabhängige Kalman-Schätzer aus — einen für den Uhrenzustand, einen für den Positionszustand —, die von GNSS diszipliniert und durch optische Zeitübertragung gestützt werden, und berichtet ein kombiniertes Holdover-Gütemaß. Die beiden Blöcke teilen keine Kreuzkovarianz: Dies ist ein gestapeltes Paar von Fehlerbudgets, kein echtes gekoppeltes gemeinsames Uhren-+-Positions-Filter (blockübergreifende Kovarianz steht auf der Roadmap). Siehe scenarios/fusion-pnt.toml.
Ein Szenario spoof speist ein Zeit-Spoofing ein — eine von vier Arten [attack.shape] (linear_ramp, step_jump, meaconing, replay; ein bloßes rate_ns_per_s wird weiterhin als lineare Rampe akzeptiert) — und führt den Spoof-Detektor jeder Uhr aus. Der Detektor ist ein zweiseitiger χ²₁-Energie- / Neyman-Pearson-Test auf der uhrengestützten Monitorstatistik: Die Schwelle wird aus einem Zielbudget für Fehlalarme target_pfa festgelegt, und die Wahrscheinlichkeit einer Fehldetektion P_md wird sowohl in geschlossener Form als auch per Monte-Carlo berichtet (mc_runs Versuche je Hypothese — beide stimmen bis auf wenige ×1/√N überein). Das Sicherheits-Gütemaß ist 1 − P_md bei der betrieblich schädlichen (Vorgabe-)Größe, sodass eine ruhige Uhr, die einen Spoof in Vorgabegröße erkennt, ≈ 1 erreicht und eine verrauschte, die ihn oft verfehlt, weniger (siehe scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).
Ein Szenario gnss-sim ist eine Simulation im Messungsbereich: Für jeden sichtbaren Satelliten synthetisiert es die Pseudorange ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath und den L1-Doppler, mit der Einfrequenz-Ionosphäre nach Klobuchar ([iono], IS-GPS-200 §20.3.3.5.2.5) und der Zenit-Troposphäre nach Saastamoinen, projiziert mit der Abbildungsfunktion von Niell (1996) ([tropo]). Die Residuen speisen das Snapshot-RAIM für HPL/VPL je Epoche, und Pseudorange, Doppler, C/N₀ sowie Iono-/Tropo-Korrekturen jedes Satelliten werden im JSON-Array gnss_measurements ausgegeben. Es ist ein Vorwärtssimulator (er erzeugt Messungen aus einer bekannten Wahrheit), kein Empfänger/Löser — ein rauschfreier Lauf reproduziert die Geometrie plus die Korrekturen im Sub-Millimeter-Bereich (siehe scenarios/gnss-sim-raim.toml).
Ein Szenario jamming modelliert HF-Störung als Link-Budget: Ein [jammer] (ECEF-Position, Sende-power_dbw, Typ) erhöht das Störer-zu-Signal-Verhältnis an einem [receiver], der eine Walker-[constellation] beobachtet. Aus der Geometrie (Freiraumdämpfung und der richtungsabhängige Empfangsantennengewinn) berechnet es das J/S jedes Satelliten und das effektive C/N₀ über die Standard-Anti-Jam-Gleichung (Entspreizungs-Prozessgewinn × der spektrale Trennfaktor Q; Kaplan & Hegarty §9,4) und markiert den Verlust der Nachführung unterhalb einer konfigurierbaren Nachführschwelle — und berichtet ein Gütemaß availability_under_jamming. Ein Breitband-Störsender mit 10 W in 1 km Entfernung unterbindet den Empfang vollständig (J/S ≈ 72 dB); derselbe Störsender in 100 km beeinträchtigt die Links nur (siehe scenarios/jamming-demo.toml).
Ein Szenario sweep führt eine Trade-Studie aus: Es variiert einen parameter (threshold_ns, duration_s, quantum_q_wf oder classical_q_wf) von start bis stop über steps Punkte auf einer lin- oder log-scale, erfasst für beide Uhren eine metric (z. B. holdover_s) und zeichnet die beiden Kurven. Das Basisszenario steht unter [base] (siehe scenarios/sweep-clock-stability.toml).
Ein Szenario sweep-nd verallgemeinert dies auf jedes Pack und beliebig viele Achsen: Es variiert gepunktete TOML-Schlüssel eines Szenarios [base] (von beliebiger kind) über das kartesische Produkt von [[axes]], führt jeden Rasterknoten erneut aus und erfasst metrics, angegeben als gepunktete JSON-Pfade in das Ergebnis (z. B. classical.fom.holdover_s). Es funktioniert für jedes Pack, weil es an der Grenze zwischen TOML und Ergebnis arbeitet; native Läufe werten das Raster parallel aus (keine zusätzliche Abhängigkeit, wasm fällt auf sequenziell zurück), und die Ausgabe ist deterministisch und zeilenweise geordnet (siehe scenarios/sweep-nd-inertial.toml).
Ein Szenario orbit leitet die Zeitleiste [gnss] aus der Geometrie ab, statt sie zu verfassen — geben Sie eine Bahn [user], eine [constellation], eine Elevationsmaske mask_deg und die beiden Uhrenblöcke an. Es berichtet außerdem die Positionsgenauigkeit aus der Satellitengeometrie; der optionale Wert sigma_uere_m (1-Sigma-Nutzer-Entfernungsfehler, Standardwert 1 m) skaliert die Positions-Dilution-of-Precision zu einem Positions-Sigma. Die Nutzerbahn kann mit eccentricity und argp_deg exzentrisch gemacht werden, und j2 = true fügt die säkulare Drift durch die Erdabplattung hinzu (siehe scenarios/orbit-molniya.toml). Die Konstellation kann stattdessen eine reale sein: Geben Sie [constellation] einen Block tle mit Zweizeilen-Elementesätzen, und die Satelliten werden daraus geparst (siehe scenarios/orbit-real-tle.toml). Fügen Sie einen oder mehrere Blöcke [[constellations]] für Multi-GNSS hinzu (z. B. GPS + Galileo; siehe 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
Die Arten für GPS-freies Alt-PNT navigieren ganz ohne GNSS und gleichen dabei eine gemessene Feldsequenz über einen Partikelfilter mit einer Karte ab. Ein Szenario gravity-map fliegt einen Kurs durch ein Schwereanomalie-Feld aus Kugelfunktionen und stellt ihn aus der Messung eines Kaltatom-Gravimeters wieder her (scenarios/gps-denied-gravity-nav.toml); ein Szenario terrain-nav tut dasselbe gegen ein SRTM-Höhen-DEM (TERCOM/SITAN, scenarios/terrain-nav.toml); und ein Szenario combined-altpnt fusioniert Schwere + IGRF-Magnetfeld + Gelände in einem Filter (scenarios/combined-altpnt.toml).
Ein Szenario lunar-integrity bewertet cislunares PNT: Es führt einen ARAIM-Schutzradius-Durchlauf am lunaren Südpol gegen einen LunaNet/LNIS-Relaissatz aus und berichtet die Integritätslücke ehrlich — ein lunares σ_URE von ~30 m treibt den Schutzradius weit über eine Alarmgrenze von 50 m, sodass der Dienst unter Integritätsregeln nach Art der Luftfahrt nicht verfügbar ist (scenarios/lunanet-araim.toml).
Ein Szenario lunar-time-offset berichtet die relativistische Uhrenrate Erde–Mond — die Grundlage einer Mond-Koordinatenzeitskala (LTC/TCL). Eine post-newtonsche Identität aus ersten Prinzipien summiert die Differenz der Eigenpotenziale (IAU-L_G-Geoidpotenzial minus das Eigenpotenzial der Mondoberfläche) und den kinetischen Term des Mondes (Doppler zweiter Ordnung) zu einer säkularen Rate von ≈ 57 µs/Tag, berichtet mit dem veröffentlichten Band von 56–59 µs/Tag; es gibt außerdem den aufgelaufenen LTC−TT-Offset über einen Horizont und ein Ensemble mit inverser Varianz an (eine lunare Papieruhr). MODELLED — die Kernzahl ist referenzabhängig (Erdgeoid gegenüber Mond-Selenoid, Mittelungsfenster), weshalb ein Band und nicht eine einzelne zertifizierte Zahl berichtet wird (scenarios/lunar-time-offset.toml).
Siehe scenarios/ für mindestens ein ausgearbeitetes Beispiel jeder Art (92 Arten, 193 Szenario-Dateien .toml + 1 Suite-Manifest — mehrere Arten liefern mehr als ein Beispiel mit). Nicht jede Art hat eine nach ihr benannte Datei: lunar-integrity → scenarios/lunanet-araim.toml und gravity-map → scenarios/gps-denied-gravity-nav.toml sind zwei von mehreren solchen. Listen Sie die verteilbaren Arten jederzeit auf mit cargo run -- --validate <file>-Fehlern, dem Python-list_kinds() oder dem MCP-Werkzeug list_scenario_kinds.
Ausgabe
Ausgabe#
Das Ergebnisartefakt ist versioniertes, selbstbeschreibendes JSON: Zeitreihen je Schritt, die bewerteten Gütemaße, die aktiven Modellspezifikationen (mit Herkunft), der Seed, ein Szenario-Hash — damit sich jedes Diagramm aus der Datei reproduzieren lässt — und für jede Uhr eine adev_curve ([{tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi}]): die überlappende Allan-Abweichung über oktavweise gestufte Mittelungszeiten — die übliche Art, die Stabilität einer Uhr zu lesen — jetzt mit einem rauschtypspezifischen 95-%-Konfidenzband je Punkt (der Potenzgesetz-Typ der Aufzeichnung wird aus ihrer Steigung der modifizierten Allan-Abweichung bestimmt, und das χ²-Intervall verwendet die passenden effektiven Freiheitsgrade nach NIST SP 1065). Der Browser-Playground stellt es als doppelt logarithmisches Diagramm „Clock stability (ADEV)“ dar. (MDEV, TDEV und HDEV stehen als Bibliotheksschätzer zur Verfügung; die exportierte Ergebniskurve ist die überlappende ADEV.) Jedes Feld mit Einheiten und einem Quellverweis ist in docs/SCHEMA.md dokumentiert.
Jedes Diagramm ist selbstbeschreibend. Der Browser-Playground, der Export *.chart.svg der CLI und die HTML-Scorecard (HyperText Markup Language) versehen jedes Diagrammbild mit einer Fußzeile mit dem Wortlaut Kshana v<version> · scenario <hash> · kshana.dev. Das scenario <hash> sind die ersten 12 Hex-Zeichen des Szenario-Hashs des Laufs — ein SHA-256-Digest (der 256-Bit Secure Hash Algorithm) über die kanonische Szenariodefinition (Seed, Schwellen, Modellparameter, GNSS-Fenster, …); die Integritäts- und Mondberichte, die keinen eigenen Hash tragen, greifen auf ein SHA-256 des Szenarioquelltexts zurück. Es ist derselbe Fingerabdruck, der in der einzeiligen Zusammenfassung und im Ergebnis-JSON steht, sodass ein gespeichertes oder eingefügtes Diagramm immer seine Version, das genaue Szenario, das es erzeugt hat (für die bitgenaue Reproduktion), und die Quelle trägt — ändert man eine Eingabe, ändert sich der Hash.
Die Gütemaße folgen den üblichen betrieblichen PNT-Gütemaßen:
| Gütemaß | Wie Kshana es berechnet |
|---|---|
| Zeitgebungsleistung (Uhren-/Orbit-Packs) | RMS des Uhrenphasenfehlers + 95. Perzentil über den Ausfall, in Nanosekunden (timing_rms_ns) — ein Zeitgebungsmaß, keine Position |
| Positionierungsleistung (Inertial-/Hybrid-Packs) | 1-DOF-Positionsfehler-RMS + 95. Perzentil über den Ausfall, in Metern (pos_rms_m); einachsig. Ein einzelner Lauf wird mit monte_carlo: false gekennzeichnet; setzen Sie runs = N für ein Monte-Carlo-Ensemble, das Mittelwert, Streuung und Bootstrap-95-%-KI (Konfidenzintervall) jeder Metrik berichtet. Weiterhin kein 2D-CEP/2DRMS (circular error probable / doppelter Abstands-Effektivwert) und keine DOP-gewichtete Genauigkeit (dafür wäre das 3-achsige Modell nötig — Roadmap) |
| Autonomie | Holdover-Dauer — Zeit innerhalb der Vorgabe nach GNSS-Verlust (rasterquantisiert: eine Untergrenze) |
| Resilienz | Steigung des Fehlerwachstums während des Ausfalls |
| Verfügbarkeit | Anteil des Laufs mit einer Lösung innerhalb der Vorgabe |
| Integrität | Selbstkonsistenz des Filters — Anteil der Ausfall-Samples, deren Fehler innerhalb der eigenen k-Sigma-Schranke des Kalman-Filters bleibt. Keine HPL/VPL/RAIM-Integritätskennzahl der Luftfahrt (siehe docs/INTEGRITY.md) |
| Sicherheit | analytische Schranke der Spoof-Erkennbarkeit aus der Uhrenstabilität — wie klein/langsam ein Zeit-Spoofing sein dürfte, das ein Konsistenzmonitor mit einer einzelnen Uhr noch melden könnte. Nur mit einem konfigurierten Angriff aussagekräftig; kein RAIM-Detektor mit mehreren Satelliten |
Neu bei diesen Begriffen? Jeder ist im Glossar in einfacher Sprache erklärt.
Repository-Aufbau
Repository-Aufbau#
kshana/
├── src/ # the kshana core crate (library + CLI)
│ ├── api.rs · main.rs · lib.rs # typed dispatch (92 kinds) + CLI + crate root
│ ├── python.rs · wasm.rs # optional PyO3 / wasm-bindgen bindings
│ ├── types.rs · scenario.rs · allan.rs # shared core (time grid, GNSS timeline, Allan)
│ │
│ ├── models.rs · estimator.rs · kalman.rs # Pack 1 — clock holdover + integrity
│ ├── security.rs · detection.rs · spoof.rs · spoof_monitors.rs # spoof detection
│ ├── filter_health.rs · fom.rs · fom_label.rs · report.rs · chart.rs · run.rs # health · FoM scoring + labelling · output
│ ├── suite.rs · study.rs # scenario suites + aggregated multi-scenario study artifacts (`--study`)
│ ├── inertial/ # Pack 2 — strapdown INS (attitude · mechanization · imu_errors · quantum_imu)
│ ├── timetransfer.rs · timetransfer_adv.rs · timegeo.rs # Pack 3 — TWSTFT/CV/PPP/optical, Sagnac
│ ├── hybrid.rs · ensemble.rs · sweep.rs # Pack 4 — fused PNT, Monte-Carlo, trade sweeps
│ │
│ ├── timescales.rs · jd2.rs · ephem.rs # time systems, two-part JD, Sun/Moon ephemeris
│ ├── precession.rs · nutation.rs · cio.rs # IAU 2006/2000A precession-nutation + CIO GCRS↔ITRS
│ ├── frames.rs · *_data.rs # TEME↔ECEF + generated nutation/CIO/EGM2008/IGRF tables
│ │
│ ├── orbit.rs · sgp4.rs · tle.rs · walker.rs # geometry, SGP4/SDP4, TLE, Walker design
│ ├── propagator.rs · forces.rs · gravity_sh.rs · integrator.rs # Cowell + perturbations (EGM2008 d/o70, GR) + RK4/DOPRI
│ ├── maneuver.rs · batch_ls.rs · orbit_determination.rs # burns/Lambert/porkchop, Gauss-Newton, OD
│ ├── cr3bp.rs · lunar.rs · lunar_frame.rs · lunar_od.rs # Earth–Moon CR3BP + halo/NRHO STM corrector, cislunar/LunaNet ARAIM, MCI↔MCMF, lunar OD
│ ├── lunar_time.rs · lunar_vlbi.rs · lunar_combination.rs · lunar_frame_realise.rs · lunar_service.rs · lunar_dpnt.rs · lunar_interop.rs # tiers per piece in the matrix lunar PNT suite — LTC time · geodetic VLBI · joint OD+clock · frame realisation · Moonlight service-volume · differential PNT · LunaNet/IOAG interop export
│ ├── body.rs · mars_frame.rs · ephem_provider.rs · radiometric.rs · ccsds_tdm.rs # deep-space: multi-body · Mars frame · ephemeris seam · radiometric obs + CCSDS-TDM
│ ├── deepspace_od.rs · clock_state.rs · mars_atmos.rs · mars_pnt.rs · linkbudget.rs · gse_sim.rs # SRIF OD · onboard clock · Mars drag · relay-PNT · link budget · GSE sim
│ │
│ ├── fusion/ # GNSS/INS — EKF · UKF · tightly_coupled(17) · coupled · closed_loop
│ ├── raim.rs · sbas.rs # RAIM/ARAIM HPL/VPL, SBAS DO-229E PLs + L1/L5 iono-free
│ ├── gnss_sim.rs · ionex.rs · pvt.rs · jamming.rs # measurement domain · ionosphere maps · single-point positioning · jamming
│ ├── navsignal.rs # nav-signal PSD (BPSK-R/BOC) · spectral-separation → anti-jam Q · DLL code-tracking jitter · multipath envelope
│ ├── gravimeter.rs · igrf.rs · mapmatch.rs · particle_filter.rs · altpnt/ # gravity/magnetic/terrain alt-PNT
│ ├── rinex.rs · rinex_obs.rs · glonass.rs · sp3.rs · oem.rs · omm.rs · permalink.rs # interop formats
│ ├── launch.rs · reentry.rs · eo_payload.rs · attitude_budget.rs · passes.rs · space_packet.rs # mission-analysis budgets + CCSDS Space Packet
│ ├── space_weather.rs · holdover.rs · tpl.rs # space-weather environment · GNSS-denied clock-holdover calculator · conditional Timing Protection Level (under spoofing)
│ ├── resilience/ # framework-aligned PNT-resilience scoring + decision-instability study (RPCF · Dirichlet · Kendall-τ · diversity collapse · assurance report)
│ ├── impairment_eval.rs · impairment_study.rs · impairment_ml.rs · eval_stats.rs # Machine-learning RF-impairment eval testbed · optimism-gap study · LR/MLP detectors · bootstrap/DeLong/Spearman stats
│ ├── sdr.rs · realdata/ # software-defined-receiver front end (IQ/IF → E/P/L taps → SQM) + real-data ingest adapters (RINEX · UBX · GnssLogger · JammerTest · Yunnan · SatGrid)
│ ├── crossover.rs · quantum_trade.rs · frugal.rs · integrity_impact.rs # quantum-vs-classical crossover map · PNT trade · cost-per-coverage ROI · integrity impact
│ ├── quantum_devices.rs · quantum_faults.rs · quantum_nav_od.rs · qtrade.rs · timetransfer_chain.rs · representativeness.rs # Quantum-Enabled PNT demonstrator — device error models · fault catalogue · GNSS-free quantum OD · unified trade harness · quantum time-transfer chain · representativeness / gaps-to-flight ledger
│ ├── interchange.rs · verification.rs # KIF artifact envelope · machine-checked verification matrix
│ └── bin/crossover_study.rs · bin/validation_report.rs # crossover-study artifact generator · release validation-summary HTML
│
├── mcp/kshana-mcp/ # standalone, workspace-EXCLUDED crate — the MCP server (+ Dockerfile, server.json)
├── ide/jetbrains/ # standalone Kotlin/Gradle IntelliJ-Platform plugin
├── xval/ # standalone, workspace-EXCLUDED external cross-checks: anise-{frames,lunar-od,mars-od,service-geometry} (Rust ANISE/SPICE DE440) + orekit-passes (Java Orekit)
│
├── examples/ # reproducible study generators: tpl_jammertest · resilience_report · optimism_study + real-data probes (jammertest_probe · yunnan_probe · satgrid_probe · texbat_probe · ingest_realdata)
├── paper-artifacts/ # byte-deterministic study artifacts, regenerable from examples/ (optimism-study.json · resilience-study.json); raw datasets stay out
├── scenarios/ # one cited .toml per kind + geometry-driven + GPS-denied
├── scripts/ # reproducibility + repo-hygiene + SBOM guards
├── docs/ # CONCEPTS, ARCHITECTURE, CAPABILITY, VALIDATION, PROVENANCE, GLOSSARY, …
├── web/ # the WebAssembly playground + kshana.dev site
├── tools/ # table generators (EGM2008 · IGRF · nutation · CIO) + fetch_tles.sh
├── .github/workflows/ # ci · release · publish · wheels · pages · mcp-publish · jetbrains-plugin · frame-xval
├── pyproject.toml # Python packaging (maturin)
├── CHANGELOG.md # Keep a Changelog + SemVer
└── CITATION.cff · ROADMAP.md · CONTRIBUTING.md · SECURITY.md
FAQ (häufig gestellte Fragen)
FAQ#
Muss ich Quantenphysik verstehen, um das zu nutzen? Nein. Wenn Sie eine Kommandozeile bedienen können, können Sie Kshana ausführen. Beginnen Sie mit der Einführung in einfacher Sprache; schlagen Sie Begriffe im Glossar nach.
Ist das ein Entwurf für Quantenhardware oder Flugsoftware? Nein. Es ist ein Simulator für die Leistung. Die Genauigkeit der Quantenhardware stammt aus veröffentlichten Fehlermodellen, nicht aus diesem Werkzeug. Siehe Was es ist / nicht ist.
Sind die Quantenergebnisse realistisch oder Marketing? Jeder Parameter ist mit einem Datenblatt oder Paper belegt, jedes Modell ist gegen eine Lehrbuchbeziehung validiert, und der Reifegrad ist in VALIDATION.md ehrlich gekennzeichnet — einschließlich der Tatsache, dass noch keine optische Strontiumuhr geflogen ist. Die Engine ist neutral: Quanten und klassisch sind derselbe Code mit unterschiedlichen veröffentlichten Zahlen.
Kann ich darauf vertrauen, dass zwei Läufe übereinstimmen? Ja — Läufe sind deterministisch: scenario + seed + engine version → bit-identical output, durchgesetzt von scripts/check-reproducible.sh.
Kann ich es aus Python oder in einem Browser nutzen? Ja — siehe Installation: Die Python- und WebAssembly-Beispiele stehen darunter. Beide rufen dieselbe Engine auf.
Wie modelliere ich meinen eigenen Sensor? Schreiben Sie ein Szenario .toml mit den veröffentlichten Kennzahlen Ihres Sensors in den Feldern provenance. Siehe Szenarioformat und die Beispiele in scenarios/.
Ist es für die kommerzielle Nutzung kostenlos? Ja — unter der AGPL-3.0, auch in kommerziellen Umgebungen, solange Sie das Copyleft der AGPL einhalten (insbesondere: Wenn Sie Kshana ändern und über ein Netzwerk anbieten, müssen Sie diesen Nutzern Ihren geänderten Quelltext anbieten). Wenn das nicht passt — z. B. weil Sie Kshana in ein proprietäres Produkt einbetten oder einen geschlossenen Netzwerkdienst betreiben müssen —, ist von Ashforde® OÜ eine kommerzielle Lizenz erhältlich; siehe LICENSING.md und Support.
Fehlerbehebung
Fehlerbehebung#
cargo build schlägt mit einer alten Toolchain fehl. Kshana braucht Rust ≥ 1,88. Aktualisieren Sie mit rustup update.
Der Build der Python-Erweiterung lässt sich unter macOS nicht linken (Undefined symbols … _Py…). Eine Python-Erweiterung löst ihre Symbole zur Ladezeit auf. maturin setzt das richtige Linker-Flag automatisch — verwenden Sie maturin develop --features python statt eines bloßen cargo build.
Der Python-Build beanstandet, der Interpreter sei neuer, als PyO3 kennt. Setzen Sie PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (abi3-Wheels sind über CPython-Versionen hinweg vorwärtskompatibel).
Der WebAssembly-Build findet das Target nicht. Installieren Sie es einmalig mit rustup target add wasm32-unknown-unknown, dann wasm-pack build --target web -- --features wasm.
Wo ist meine Ausgabe geblieben? Jeder Lauf schreibt <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html und <scenario>.report.json neben die Eingabe .toml, und <scenario>.table.csv ebenfalls für die Arten, die eine Tabelle veröffentlichen. Alle sind bewusst von git ignoriert.
Versionierung & Releases
Versionierung & Releases#
Kshana folgt Semantic Versioning. Solange es vor 1.0 ist, kann sich das öffentliche Szenario-/Ergebnisschema noch ändern; inkompatible Änderungen werden im CHANGELOG.md ausdrücklich genannt. Jedes Ergebnis ist aus scenario + seed + engine version reproduzierbar.
Jeder Tag vX.Y.Z veröffentlicht automatisch alle Kanäle, in einer Reihenfolge — zuerst läuft die vollständige Testsuite auf dem getaggten Commit, nichts wird veröffentlicht, bis sie besteht, und danach prüft die Pipeline, dass jede Registry tatsächlich die neue Version ausliefert (docs/RELEASING.md). Die Kanäle:
| Kanal | Installieren / beziehen | Inhalt |
|---|---|---|
| crates.io | cargo install kshana · kshana = "0.35" |
Rust-Bibliothek + CLI |
| crates.io | cargo install kshana-mcp |
der MCP-Server |
| PyPI (Python Package Index) | pip install kshana |
abi3-Wheels (Linux/macOS/Windows) + sdist (Quelldistribution) |
| npm | npm install kshana |
WebAssembly-Modul + JS-Wrapper |
| ghcr.io | docker run -i ghcr.io/ashfordeou/kshana-mcp |
OCI-Image (Open Container Initiative) für mehrere Architekturen — keine Toolchain nötig |
| npm | npx -y kshana-mcp@0.40.0 |
Launcher: lädt die Release-Binärdatei herunter, verifiziert SHA256SUMS und führt sie aus |
| PyPI | uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 |
derselbe Launcher für Python |
| Homebrew · Scoop · winget | brew install ashfordeOU/tap/kshana-mcp · scoop install kshana-mcp · winget install AshfordeOU.KshanaMcp |
die Binärdatei kshana-mcp, aus SHA256SUMS jedes Releases erzeugt |
| offizielle MCP-Registry | von MCP-Clients automatisch gefunden | io.github.ashfordeOU/kshana-mcp (OCI-Image, npm- und PyPI-Pakete) |
| JetBrains Marketplace | IDE → Plugins → nach "Kshana" suchen | das IDE-Plugin Kshana — PNT simulator |
| Zenodo | DOI | ein zitierbares Archiv jedes Releases |
| kshana.dev | im Browser öffnen | Kshana Studio, die WebAssembly-App im Browser, aus jedem Release-Tag neu gebaut (die angezeigte Version ist also die Version, die läuft) |
Die Crate-/Image-/Registry-Version des MCP-Servers folgt der Engine (er bündelt die Bibliothek); das JetBrains-Plugin wird unabhängig versioniert (es ruft Ihre installierte Binärdatei kshana auf).
Roadmap
Roadmap#
Siehe ROADMAP.md für die phasenweise Roadmap, CHANGELOG.md für die veröffentlichte Historie und docs/CAPABILITY.md für die Roadmap je Fähigkeit. Die Prioritätsreihenfolge lautet: zuerst Zeitgebungs- und Holdover-Evidenz für kritische Infrastruktur (Telecom-Masken, längerer Holdover mit Alterung und Flickerrauschen, Einlesen gemessener Uhrendaten); an zweiter Stelle die neutrale Trade-Methode Quanten gegen klassisch (Ergebnisse als MODELLED gekennzeichnet, bis gemessene Daten eines Partners sie heraufstufen); und Navigation für Mond / cislunaren Raum und Deep Space wird gepflegt, nicht als Schwerpunkt ausgebaut. Die ITRF-präzise Bezugssystem-Reduktion ist jetzt geliefert — die vollständige CIO-basierte Kette IAU 2006/2000A GCRS↔ITRS (Polbewegung + Nutation unter einer Bogensekunde), bitgenau gegen SOFA/ERFA validiert und unabhängig gegen ANISE (reines Rust-SPICE) auf ≤ 3,6 m in der GNSS-Bahn gegengeprüft. Zu den kurzfristigen Punkten gehören eng gekoppelte Trägerphasen-Fusion und die Bereitstellung des lose/eng gekoppelten GNSS/INS-Navigators in mehr Packs; die radiometrische Navigations-Engine für Deep Space / Mars wurde in v0.17.0 geliefert (simulationsvalidiert). Die Quantenphysik-Schicht ist ein Punkt P2: Der CAI-Beschleunigungsmesser wird jetzt aus ersten Prinzipien simuliert (Mach-Zehnder-Phase, Projektionsrauschen, Kontrastabfall, Vibrationskopplung), während die Uhren-/Zeitübertragungssensoren weiter über veröffentlichte Koeffizienten für Allan/Rauschbudget angetrieben werden. GMST-basiertes TEME↔ECEF, die Zeitsysteme der IERS mit Schaltsekunden (UTC/TAI/TT/UT1), die SGP4/SDP4-Bahnpropagation (v0.7.0, validiert gegen die Vektoren AIAA 2006-6753) und das lauffähige Fusions-Pack gnss-ins sind alle ausgeliefert, und die Inertialgeschwindigkeit wird nachgelagert bereitgestellt. Ein aktiver stochastischer Zeit-Spoof-Detektor (Neyman-Pearson- / χ²₁-Energietest mit Monte-Carlo-P_fa/P_md und einem Sicherheits-Gütemaß von 1−P_md), ein Link-Budget-Jamming-Modell (J/S → effektives C/N₀ → Verlust der Nachführung), Verfügbarkeit mit mehreren Konstellationen, ein einachsiges (1-DOF) IMU-Fehlerbudget, zwei unabhängige (Uhr + Position) Kalman-Schätzer, berichtet als kombiniertes Gütemaß, reale Konstellationsgeometrie aus TLEs, ein HTML-Scorecard-Bericht, aus der Geometrie abgeleitete GNSS-Verfügbarkeit und Dilution of Precision aus Kepler-Bahnen mit Exzentrizität und J2-Drift, Monte-Carlo-Konfidenzbänder, Parameter-Sweeps für Trade-Studien, ein WebAssembly-Playground im Browser sowie optionale Bindings für Python (PyO3) und WebAssembly (wasm-bindgen) sind auf main gelandet.
Mitwirken
Mitwirken#
Siehe CONTRIBUTING.md. Kurz: Die Tests bestehen (cargo test), die beiden Guard-Skripte bestehen, Conventional Commits, und ein Eintrag [Unreleased] in CHANGELOG.md für jede für Nutzer sichtbare Änderung. Die Teilnahme unterliegt unserem Verhaltenskodex. Um ein Sicherheitsproblem zu melden, siehe die Sicherheitsrichtlinie — bitte eröffnen Sie für Schwachstellen kein öffentliches Issue.
Dokumentation: jedes Dokument und für wen es gedacht ist
Dokumentation#
| Dokument | Für wen | Was darin steht |
|---|---|---|
| Einführung in die Konzepte | alle, hier beginnen | was Kshana tut und warum, von null bis zur Physik |
| Kshana Studio | alle | die Engine im Browser ausführen (WebAssembly); Hinweise zu Build und Bereitstellung |
| Glossar | alle | Definitionen jedes Begriffs in einfacher Sprache |
| Szenarioarten | alle | jede Art, die die Engine ansteuert: was sie tut, ihre Felder, ein Beispielbefehl, ihre Zeilen im Register und das Diagramm, das die Engine für sie schreibt |
| Partnerdaten | Labore und Hersteller, die gemessene Daten besitzen | welche MODELLED-Zeilen eine gemessene Uhren- oder IMU-Aufzeichnung befördern könnte, die Formate, wie eine Einreichung geprüft (kshana partner check), bewertet und angerechnet wird |
| Architektur | Entwickler / Prüfer | Modulkarte, Engine-Pipeline, Dispatch und Diagramme |
| Validierungsstatus | Prüfer / Zitierende | was validated gegenüber not modeled ist, mit Evidenz |
| Verifikationsmatrix | Prüfer / Zitierende | das maschinell geprüfte Evidenzregister — jede Zeile einer Fähigkeit mit Status, Modul, Test und externer unabhängiger Referenz, erzeugt aus src/verification.rs |
| Begründung der Modellierung | Prüfer | warum jede modellierte Zeile keine externe unabhängige Referenz hat, Zeile für Zeile dargelegt |
| Herkunft | Prüfer / Zitierende | jeder Sensorparameter, jedes Modell und jeder Datensatz, zurückgeführt auf seine veröffentlichte Quelle, in einer zitierbaren Tabelle |
| Reproduzierbarkeit & Herkunft | Prüfer / Paketierer | Determinismus-Garantien, Golden-Pinning, SBOM (software bill of materials), Build-Provenienz |
| Plattform-Tags der Wheels | Paketierer | die Matrix der abi3-Python-Wheels — welches Plattform-Tag pip install kshana auflöst |
| Positionierung | Bewerter | wo Kshana im Vergleich zu RTKLIB/gLAB steht (ergänzend), und die Browser-Stufe ohne Installation |
| Kshana Pro | Bewerter / Programmleiter | was das proprietäre Pro-Overlay über dieselbe Engine hinaus bietet: Entwurfsoptimierer, Unsicherheit und Sensitivität, Missions-Dossier, Campaign Watch, Spektrumkoexistenz, On-Premises-Auftragsdienst, Anforderungs-Rückverfolgbarkeit; was jedes erzeugt und was es nicht leistet |
| Technischer Bericht · JOSS-Paper | Prüfer / Zitierende / Bewerter | das vollständige erweiterte Forschungspaper — Architektur, Modelle je Domäne, Validierung, Fallstudien und Einschränkungen — plus die knappe Einreichung beim JOSS (Journal of Open Source Software) |
| SGP4-Validierung | Prüfer / Zitierende | Übereinstimmung mit der Referenz AIAA 2006-6753 (666 Zustände, ~4 mm) und ein direkter Vergleich mit dem unabhängigen Crate sgp4 (Übereinstimmung im Sub-Mikrometer-Bereich / 4,12 mm) |
| Validierung des Kraftmodells | Prüfer / Zitierende | die Vollkräfte-Engine (src/precise_od.rs), angepasst an Behörden-Ephemeriden — Methodik und validierte Residuen |
| Leitfaden zu realen TLEs | Nutzer | Szenarien aus realen Celestrak-/Space-Track-Konstellations-TLEs ansteuern (statt des mitgelieferten synthetischen Walker-Satzes) |
| Integritäts-Gütemaß | Bewerter | was die Kennzahlen integrity / security bedeuten — und was sie gegenüber HPL/VPL der Luftfahrt nicht sind |
| ARAIM-Referenz | Prüfer / Integratoren | die offene Implementierung des MHSS-ARAIM-Schutzradius — die Projektion der nominellen Biases b_k, σ_URA gegenüber σ_URE und die Apriori-Wahrscheinlichkeiten der Fehlermodi |
| Quantenmodelle · Details | Prüfer | die Physikschicht des Kaltatom-Interferometers und wo Koeffizienten noch nachgeschlagen werden |
| Compliance | Bewerter | Umfang der Algorithmen nach DO-229E / DO-316 und was keine Konformitätsaussage ist |
| Maritimer Vertrauenswert | Seeleute / Integratoren | der GNSS-Vertrauenswert von 0 bis 100 für das NMEA eines Schiffes, seine Monitore und seine Grenzen (beratend, keine typzugelassene Navigationsausrüstung) |
| NMEA-Trainingsdatenströme | Ausbilder in der Schifffahrt | synthetisches Brücken-NMEA mit geskripteten Jamming- und Spoofing-Ereignissen und einem Ausbilder-Log; nur Text, nie für die Live-Navigation |
| Störungskarte | Analysten / Seeleute | wo Flugzeuge und Schiffe beeinträchtigte Navigationsdaten gemeldet haben und wie viel einer Route davon berührt wird |
| Nachweispakete | Betreiber / Versicherer | signierte technische Aufzeichnungen eines Vertrauensereignisses und wie man eine verifiziert |
| Vertrauens-Telemetrie | Betriebs- / Sicherheitsteams | der Vertrauens-Stream als Prometheus-Metriken, SIEM-Ereignisse und OpenTelemetry, mit einem Grafana-Dashboard |
| Marine-Integrationen | Bootseigner / Integratoren | das Signal-K-Plugin, der OpenCPN-Gate-Modus und der Referenz-Build |
| Test bench | Empfängerhersteller | ein exportiertes Szenario über einen Laborsimulator abspielen und das Log des Empfängers bewerten |
| compliance-Zuordnung | Bewerter | öffentliche Resilienz-Rahmenwerke, auf Ausgaben von Kshana abgebildet, mit Quellen und Lücken; kshana compliance-report |
| Notebooks | Nutzer | ausführbare Tutorials mit ihrem gerenderten Text |
| Standards & Interoperabilität | Integratoren | die Austauschformate für GNSS / Flugdynamik / Behörden, die Kshana liest und schreibt (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …) |
| LEO-PNT-Fusion | Nutzer / Bewerter | fusionierte Positionierung, Navigation und Zeitgebung mit MEO + LEO: Doppler, gemeinsame Pseudorange, PPP-Konvergenz, 5G NTN, Polarabdeckung und LEO-Zeitübertragung über jede Konstellation; die optionalen Presets und ihre öffentlichen Quellen |
| Kampagnen | Nutzer / Bewerter | Szenarien komponieren: verkettete Missionszeitleisten, Parameter-Sweeps, Monte-Carlo-Ensembles und Läufe unter gemeinsamer Bedingung, mit den Kompositionsidentitäten, die die Tests festlegen |
| Szenariokatalog | Nutzer / Integratoren | jede ansprechbare Art mit ihren erforderlichen und optionalen TOML-Feldern — erzeugt aus api::list_scenario_kinds() |
| Ergebnisschema | Integratoren | jedes Feld des Ergebnis-JSON, mit Einheiten und einem Quellverweis |
| Python-API | Python-Nutzer | die PyO3-Binding-Oberfläche — die Engine aufrufen, die Szenario-/Ergebnistypen und Beispiele |
| Behauptungen und Wirklichkeit | Prüfer | das Register zum Schließen von Überbehauptungen + die CI-Absicherung (tests/no_overclaims.rs), die es aufgelöst hält |
| Roadmap | alle | die phasenweise Roadmap — was ausgeliefert wurde und was als Nächstes kommt |
| MCP-Server · JetBrains-Plugin | Agenten / IDE-Nutzer | Kshana aus einem KI-Assistenten oder einer JetBrains-IDE ausführen |
| Agenten-Leitfaden · Oberflächen | Agenten / Integratoren | welches Werkzeug welche Frage beantwortet, was man zu jeder Antwort aufbewahren sollte; wo jede Fähigkeit erreichbar ist (CLI, Rust, Python, WASM, MCP, Plugin, JetBrains, Notebooks) und warum eine Zelle N/A ist |
| Änderungsprotokoll | alle | veröffentlichte Historie (Keep a Changelog + SemVer, Semantic Versioning) |
| Mitwirken | Mitwirkende | Build, Guards, Test- und Zitierdisziplin, DCO (Developer Certificate of Origin) |
| Governance | Mitwirkende / Community | wie Kshana geführt wird — wer wie entscheidet und die Grenze zwischen offen und geschlossen |
| Verhaltenskodex | Community | erwartetes Verhalten (Contributor Covenant) |
| Sicherheitsrichtlinie | Meldende | wie man eine Schwachstelle meldet; Hinweis zur Dual-Use-Eignung |
Wichtige Referenzen
Wichtige Referenzen#
Validierungs-Referenzen & Standards — die externen Autoritäten, an die die Prüfungen von Kshana angebunden sind:
- Vallado, Crawford, Hujsak & Kelso — Revisiting Spacetrack Report #3 (AIAA 2006-6753; Testdaten): der SGP4/SDP4-Verifikationssatz, mit dem Kshana auf 4,12 mm übereinstimmt, und die durchgerechneten Bezugssystem-Beispiele, gegen die die Kette TEME→ITRF geprüft wird.
- IAU SOFA / ERFA — die Referenzroutinen für Zeit und Bezugssysteme, gegen die die IAU-2000A-Nutation und die CIO-GCRS↔ITRS-Reduktion bitgenau validiert werden.
- Petit & Luzum (Hrsg.) — IERS Conventions (2010), IERS TN (Technical Note) 36 (Standards zu Erdorientierung, Polbewegung und Bezugssystemen).
- Riley — Handbook of Frequency Stability Analysis, NIST SP 1065 (Beziehungen der Allan-Abweichung und die Referenzreihe NBS14; NBS = das frühere US National Bureau of Standards).
- Pedregosa et al. — scikit-learn: Machine Learning in Python, JMLR 12 (2011): die Referenzimplementierungen für ROC/AUC, Konfusionsmatrix und Precision/Recall/F1, an die das Bewertungs-Testbed für HF-Beeinträchtigungen exakt angeglichen ist (
tests/eval_metrics_reference.rs). - Virtanen et al. — SciPy 1,0, Nature Methods 17 (2020):
optimize.nnls,stats.chi2undlinalg.expm— die Referenzroutinen, gegen die die NNLS-Anpassung der gemessenen ADEV im Quantum-Trade, die χ²-Konsistenzbänder und die van-Loan-Prozessrauschen-Kovarianz der Uhr validiert werden (tests/scipy_reference.rs). - Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024): verwendet sowohl als offener Stand der Technik (siehe Vergleich & offener Stand der Technik unten) als auch als unabhängige DOP-Referenz, an die die Berechnung von GDOP/PDOP/HDOP/VDOP/TDOP auf 1e-6 angeglichen ist (
tests/dop_reference.rs). - Montenbruck & Gill — Satellite Orbits: Models, Methods and Applications (Springer): die Kräftemodelle hinter der Anpassung des Kräftemodells an präzise Behörden-Ephemeriden.
- 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 (die Halo-/NRHO-Familien, die der CR3BP-Differentialkorrektor reproduziert).
Physik von Geräten & Methoden — die zitierten Quellen hinter den Sensormodellen:
- Origlia, Schiller, Bongs et al. — arXiv:1503,08457 (optische Strontium-Gitteruhr, raumfahrtorientiertes Ziel).
- Oelker et al., Nature Photonics (2019) — doi:10.1038/s41566-019-0493-4 (Sr-Uhr im Labor, 4,8×10⁻¹⁷).
- Templier et al., Science Advances (2022) — arXiv:2209,13209 (hybrides Quanten-Beschleunigungsmesser-Triple).
- Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation — IEEE-AESS-Tutorial (Aerospace and Electronic Systems Society; Discovery-Repository des University College London) (Fehlerwachstum bei Koppelnavigation).
- Giorgetta et al., Nature Photonics 7, 434 (2013) — arXiv:1211,4902; Deschênes et al., Phys. Rev. X 6, 021016 (2016) — APS (American Physical Society) (optische Zwei-Wege-Zeit-Frequenz-Übertragung; die optische Inter-Satelliten-Verbindung modelliert ihr Budget der Nichtreziprozität nach diesen).
- Betz — Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001), doi:10.1002/j.2161-4296.2001.tb00247.x (die BOC-Modulations- und Spektraltrennungstheorie hinter
src/navsignal.rs). - Kaplan & Hegarty (Hrsg.) — Understanding GPS/GNSS: Principles and Applications (3. Aufl., Artech House, 2017): die Anti-Jam-Gleichung für das effektive C/N₀ und der thermische Rausch-Jitter der Early-Late-DLL-Code-Nachführung, den die Modelle für Navigationssignale und Jamming verwenden.
Vergleich & offener Stand der Technik — die Werkzeuge und Übersichten, gegen die Kshana positioniert ist:
- Humphreys et al. — TEXBAT (die Texas Spoofing Test Battery; ION — Institute of Navigation — GNSS 2012): die Parameter der Spoofing-Testbatterie, gegen die der mehrschichtige Detektor charakterisiert wird.
- González et al. — NaveGo (2017): die offenen, validierten Fehlerprofile der Inertialnavigation, die als klassische Basislinie verwendet werden.
- Iiyama, Casadesús Vila & Gao — LuPNT (ION GNSS+ 2023, Stanford NavLab): offener Mond-PNT-Simulator.
- Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024), doi:10.1016/j.softx.2024.101811: offene GNSS-Datenanalyse.
- Li, Zaminpardaz, Kealy & Greentree — Quantum sensors for enhanced positioning and navigation: a comprehensive review, GPS Solutions 30(1):62 (2026), doi:10.1007/s10291-026-02030-y.
- Bertone et al. — Earth and Space Science 8(6) (2021), doi:10.1029/2020EA001454: GRAIL-Bahnbestimmung (reduziert-dynamisch), die Untergrenze der empirischen Beschleunigung, die die LRO-Anpassung reproduziert.