Kshana · क्षण · precyzyjna chwila
Otwartoźródłowy symulator odporności PNT (pozycjonowanie, nawigacja i czas).
Stan ciągłej integracji na main
Pokrycie linii około 95 % w src/, zmierzone w docs/COVERAGE.md i z progiem 85 % w ciągłej integracji
176 z 401 możliwości VALIDATED względem niezależnej wyroczni zewnętrznej, według macierzy weryfikacji
Stan bramki jakości SonarQube Cloud
Wydanie v0.40.0
Licencja: AGPL-3.0-only
DOI 10.5281/zenodo.20528627, rekord koncepcyjny Zenodo każdego wydania
Licencja komercyjna jest dostępna od Ashforde® OÜ, zob. Wydania
kshana na crates.io, aktualna opublikowana wersja
kshana na PyPI, aktualna opublikowana wersja
kshana na npm, aktualna opublikowana wersja
Otwórz Kshana Studio · Instalacja · Możliwości · Dowody · Badania · Dokumentacja · Cytowanie
Spis treści
- Przećwicz minutę, w której GNSS gaśnie
- Co nowego w 0,40, Co nowego w 0,39, Co nowego w 0,38 oraz 0,38 szczegółowo: ocena jammertest, własne flagi odbiornika, wejścia maszynowe, czas i holdover, pakiety norm, LunaNet AFS, pełna pętla laboratoryjna, kshana-bench, obserwatorium, eksportery, optyka, nawigacja użytkowników przestrzeni kosmicznej i infrastruktura księżycowa
- Kshana Studio i każda strona Studio
- Możliwości: tabela obszarów, każdy rodzaj scenariusza według rodziny, każde polecenie, każda powierzchnia
- Jak działa przebieg, Misje
- Dowody: rejestr (ledger), dziedziny możliwości
- Instalacja, Architektura (i diagramy), asystent AI
- Wydania, Badania, Cytowanie, Licencja
- Dokumentacja odniesienia: użycie, format scenariusza, wyniki, układ repozytorium, FAQ, rozwiązywanie problemów, wersjonowanie, plan rozwoju, współtworzenie, dokumentacja
Przećwicz minutę, w której GNSS gaśnie#
Kshana odtwarza zagłuszanie, spoofing i holdover zegara, gdy zawodzą sygnały GNSS (globalnego systemu nawigacji satelitarnej), i mówi, jak długo system utrzymuje czas i pozycję w granicach budżetu oraz który zegar lub czujnik daje największy zapas. To jeden silnik w Rust. Działa w terminalu, notatniku, IDE (zintegrowanym środowisku programistycznym), asystencie AI (sztucznej inteligencji) lub w przeglądarce.
Każdy przebieg jest odtwarzalny co do bitu na podstawie scenariusza, ziarna (seed) i wersji silnika. Każda możliwość nosi jedną z trzech etykiet w sprawdzanym maszynowo rejestrze (ledger): VALIDATED (niezależna zewnętrzna wyrocznia się zgadza), MODELLED (wewnętrznie spójne i powiedziane wprost) lub PARTNER (odpowiada za to partner sprzętowy).
Stan: v0.40.0. Sprawdzone względem niezależnych wzorców, odtwarzalne podłoże symulacyjne dla odporności PNT. Czas i holdover idą na pierwszym miejscu, ponieważ ta dziedzina jest najlepiej sprawdzona. Kshana jest narzędziem badawczym i do analizy kompromisów: nie jest sprzętowym generatorem sygnału radiowego (RF) (nie steruje żadnym radiem i niczego nie nadaje; jego wynikiem na poziomie sygnału są pliki próbek IQ w paśmie podstawowym dla odbiorników programowych), nie jest sprzętowym ani certyfikowanym odbiornikiem GNSS (jego odbiornik programowy jest narzędziem analitycznym) i nie jest produktem lotniczym. Nowy w tej dziedzinie? Zacznij od wprowadzenia prostym językiem i słownika.
Co nowego w 0,40#
0,40 dodaje budżet błędu na poziomie misji, oznacza każdą wartość i tabelę jej poziomem dowodowym, odczytuje zmierzone dzienniki zegara, sprawdza zgłoszenia partnerów danych, szacuje, gdzie może znajdować się emiter zakłóceń, i mówi w siedemnastu językach obok angielskiego. Rejestr ma teraz 401 wierszy: 176 VALIDATED, 221 MODELLED, 4 PARTNER. Żaden wiersz nie został awansowany do VALIDATED, a każde niespełnienie poniżej jest przypięte przez test.
- Wątek misji. Rodzaj
mission-threadłączy fazy od startu do wejścia w atmosferę (launch-ascent,leo-rendezvous,tli-and-cruise,entryi cztery rodzaje księżycowe) z podanymi zasadami przekazania, marginesem względem podanych wymagań i najsłabszym ogniwem; kompletny przykład klasy Artemis w 11 fazach (segmenty ziemski i księżycowy), łącznie 92 rodzajów scenariuszy. Każda liczba jest MODELLED. Propagacja cislunarna względem publicznej trajektorii Artemis I nie osiąga progu zarejestrowanego wstępnie (45,3 km i 0,25 m/s wobec 5 km i 0,05 m/s; przyczyną są małe manewry, których model nie uwzględnia), a propagator księżycowy względem orbity CAPSTONE nie osiąga (136,8 km wobec 25 km pod koniec jednego obiegu); porównanie z LRO jest osiągnięte. Wiersze pozostają MODELLED (Wątek misji, segment księżycowy). W Studio wątek odczytuje się pod adresem/studio/mission-thread/. - Etykiety dowodowe. Każda wartość i tabela zapisywana przez przebieg niesie poziom i identyfikatory wierszy rejestru, na których się opiera, odczytane z macierzy.
- Zmierzone zegary. Odczytywanych jest osiem formatów dzienników zegara (
docs/CLOCK-LOG-FORMATS.md), a dopasowana seria może sterować holdover. Względem progów zarejestrowanych wstępnie dopasowanie nie osiąga F1(a) w pięciu z sześciu zapisów i F2 w jednym; oba pozostają MODELLED (Dziennik zmian). - Partnerzy danych.
kshana partner checksprawdza format zgłoszenia i niczego nie ocenia (docs/PARTNER-DATA.md). - Obszar emitera.
kshana interference-map locatepodaje obszar i elipsę, nigdy goły punkt, na podstawie raportów ADS-B lub AIS. Porównanie przeprowadzone raz z lokalizacjami nadajników Jammertest 2025 daje wynik NOT ASSESSABLE dla obu źródeł (zbyt mało zaplanowanych sesji w otwartych danych), więc wiersz pozostaje MODELLED (Mapa zakłóceń). - Benchmark. Ponowna kampania 0,40 osiąga A3, D3 (oba EXPLORATORY), R3 i R4; A2, D1 i R1 pozostają NOT MET (Bench).
- Języki. nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja i zh-Hans, jako tłumaczenia maszynowe, których nie zweryfikował żaden rodzimy użytkownik języka; wzorcem jest angielski, a przebiegi w językach innych niż angielski trwają około dwa razy dłużej (
docs/i18n.md).
Co nowego w 0,39#
0,39 nie dodaje żadnej funkcji i nie zmienia żadnego wyniku; wynik silnika jest wynikiem 0,38. Poprawia jedną rzecz w wierszu poleceń, aktualizuje zależności narzędzi walidacji krzyżowej i podaje w całości werdykty benchmarku.
- Wiersz poleceń.
kshana kinds | head(każde zamknięte standardowe wyjście) już nie powoduje paniki: program kończy się cicho ze statusem 141, jak robią to inne narzędzia przy zamkniętym potoku. Inne błędy zapisu nadal się zgłaszają. - Dependencies.
memmap20.9.11 w dwóch blokadach kontroli krzyżowej ANISE orazpillow13.0.0 icertifi2026.10.19 w przypięciach środowiska wyroczni, wszystko wxval/: nic, co jest dostarczane, się nie zmieniło. - kshana-bench, wszystkie werdykty. Względem wstępnie zarejestrowanych progów trzy są NOT MET, każdy przypięty testem: A2 (
agc_k_sigmaAUC 0,766 wobec co najmniej 0,80), D1 (największa różnica 0,0301) i zadanie (b) R1 (przeniesione, nie uruchomione ponownie). Żaden próg nie został poluzowany (Bench).
Co nowego w 0,38#
0,38 sprawia, że neutralnego sędziego można zmierzyć: ocenia dzienniki odbiorników względem opublikowanego harmonogramu testów, czyta więcej odbiorników i czujników, testuje systemy czasu oraz dostarcza benchmark i obserwatorium zakłóceń. Pozostaje doradcze: nic tu nie jest certyfikowane, żaden wynik nie jest zatwierdzeniem typu i nic nie nadaje. Każdy wiersz podaje, co dla niego zawiera rejestr (ledger) (jak zdobywa się etykietę); status nazywa tylko to, co sprawdzono, a wiersz rejestru i strona, do której prowadzi link, mówią, czego nie sprawdzono.
| Nowe w 0,38 | Co to robi i dlaczego | Status w rejestrze (ledger) | Odczytywane |
|---|---|---|---|
| Ocena jammertest | kshana jammertest import czyta opublikowany katalog testów NPRA i plan transmisji jako zaplanowaną prawdę; jammertest score ocenia dziennik odbiornika dla każdego testu (opóźnienie detekcji, niewykryte zdarzenia, fałszywe alarmy, czas do powrotu), jako podpisany pakiet dowodowy, jeśli podasz klucz |
MODELLED: jeden wiersz rejestru. Progi zostały wstępnie zarejestrowane przed jakimkolwiek ocenianym przebiegiem; na danych JammerTest 2024 reguła minimum danych nie została spełniona w obu przebiegach (4 i 7 ocenialnych okien wobec wymaganych 10), więc żaden próg nie jest oceniany i niczego się nie twierdzi | Jammertest |
| Własne flagi odbiornika | UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG i NovAtel RXSTATUS wczytane do self_report dla każdej epoki i porównane z alarmami Kshana (oba, tylko odbiornik, tylko Kshana, żaden); czytnik Septentrio SBF i wejście --serial tylko do odczytu |
MODELLED; zgodność między detektorem odbiornika a detektorem Kshana nie jest walidacją | Zaufanie do odbiornika |
| Więcej odbiorników i czujników | RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0 (z tablic pyrtcm na licencji BSD, a nie z tekstu RTCM), strumienie monitora GNSS-SDR, dziennik IMU jako drugi czujnik, pakiet ROS 2, most gnss_lib_py i imu-fit dla parametrów czujników hybrydowych |
MODELLED: sześć wierszy rejestru; tylko samodzielnie napisane dane testowe, nie wczytano żadnego zapisu z prawdziwego odbiornika, IMU, przebiegu GNSS-SDR ani grafu ROS | Dane wejściowe z maszyn |
| Testy czasu i holdover | rodzaj holdover-test ocenia test holdover (GNSS odłączony przez operatora, holdover, powrót) na podstawie zmierzonego zapisu błędu czasu względem masek ITU-T, „zmierzono względem maski”; czytniki dzienników linuxptp i chrony; etapy sprzętowe i pole lab-attestation |
MODELLED: dwa wiersze rejestru; czasy są oświadczeniem operatora, niezweryfikowanym | HIL czasu, Bezpieczeństwo sprzętu |
| Pakiety norm, LunaNet AFS, pełna pętla laboratoryjna | ocenione pakiety dla DHS RPCF, IMO MSC.1/Circ.1575 i ICAO Doc 9849 Appendix F względem progów podanych przed przebiegiem, „dostarcza dowodów na (supports evidence for)”; tabela odpowiedniości NIST IR 8323r1; generator i weryfikator kodów LunaNet AFS; podpisany pakiet, który łączy scenariusz przebiegu laboratoryjnego, warunki testu, dziennik odbiornika i ocenę | MODELLED dla pakietów i pełnej pętli; sprawdzenie kodów AFS jest VALIDATED względem drukowanych kolumn kontrolnych (zob. wiersze rejestru) | Normy, LunaNet AFS |
| kshana-bench i obserwatorium | stałe zadania, podziały i metryki dla detekcji zakłóceń, detekcji IQ, przewidywania holdover i luki optymizmu, z zapieczętowanym zbiorem holdout i statyczną tabelą wyników; odtwarzalny dobowy produkt zakłóceń z opóźnieniem 24 h, grubymi komórkami i bez przypisywania przyczyny | brak własnego wiersza w rejestrze: ocenia zgłoszenia, a jego punkty odniesienia są w plikach wyników oznaczone jako MODELLED; względem wstępnie zarejestrowanych progów ocena, C1 do C3 i D2 są spełnione, a trzy progi są NOT MET (przypięte testami): A2 (agc_k_sigma AUC 0,766 wobec co najmniej 0,80 na zbiorze testowym), D1 (największa różnica 0,0301) i zadanie (b) R1 (przeniesione, nie uruchomione ponownie); zob. xval/bench/RESULTS-v2.md |
Bench, Obserwatorium |
| Eksportery | telemetria zaufania jako komunikaty wykrywania i stanu Home Assistant MQTT (tylko publikowanie, bez poświadczeń) obok Prometheus, CEF, LEEF i OTLP | MODELLED: jeden wiersz rejestru | Telemetria zaufania |
| Zapas łącza optycznego w funkcji czasu | rodzaj optical-atmosphere może zapisać jedną realizację z ziarnem (seed) pogody stanowiska jako szereg zapasu łącza |
MODELLED: jeden wiersz rejestru; jedno losowanie z modelu, a nie klimat | Atmosfera optyczna |
Najważniejsze zmiany 0,37: dziennik zmian. Pełna lista 0,38 jest w dzienniku zmian.
0,38 szczegółowo#
Każda możliwość z tabeli powyżej w kilku wierszach: co robi, jedno polecenie, które ją uruchamia, jeden obraz narysowany z prawdziwego przebiegu silnika i co zawiera dla niej rejestr (ledger). Obrazy zapisuje tools/gen_figures_038.py w docs/figures/0.38/ (nigdy nie są rysowane ręcznie): python3 tools/gen_figures_038.py przepisuje je ze zbudowanego silnika, a --check zawodzi, jeśli któryś jest nieaktualny albo jego podpis tutaj się różni. Tam, gdzie wejściem jest dziennik, jest to dziennik zmyślony, który zapisuje skrypt, ponieważ prawdziwe dzienniki osób trzecich nigdy nie są wbudowywane, i podpis o tym mówi. Wszystko poniżej jest doradcze: nie jest certyfikowane, nie jest zatwierdzeniem typu i nic nie nadaje. Status nazywa to, co sprawdzono, i nic więcej; jak zdobywa się etykietę.
Ocena jammertest#
kshana jammertest import zamienia opublikowany katalog testów NPRA i plan transmisji w zaplanowaną prawdę, a kshana jammertest score ocenia względem niej dziennik odbiornika: dla każdego zaplanowanego testu, czy został wykryty, z jakim opóźnieniem i jak długo odbiornik wracał do działania, a także fałszywe alarmy poza każdym slotem. Katalog jest pobierany, nigdy nie jest wbudowywany.
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
Status w rejestrze (ledger): MODELLED. Progi ustalono przed jakimkolwiek ocenianym przebiegiem; na danych JammerTest 2024 reguła minimum danych nie została spełniona w obu przebiegach, więc żaden próg nie jest oceniany i niczego się nie twierdzi. Jammertest.
Własne flagi odbiornika#
UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG i NovAtel RXSTATUS są wczytywane do self_report dla każdej epoki i zestawiane z alarmami Kshana: oba, tylko odbiornik, tylko Kshana albo żaden. Czytnik Septentrio SBF i wejście --serial tylko do odczytu zasilają to samo porównanie. Żadna ze stron nie jest prawdą terenową.
kshana receiver-trust session.toml # [log] format = "ubx", path = "receiver.ubx"
Status w rejestrze (ledger): MODELLED. Zgodność między detektorem odbiornika a detektorem Kshana nie jest walidacją. Zaufanie do odbiornika.
Więcej odbiorników i czujników#
RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0, strumienie monitora GNSS-SDR, dziennik IMU jako drugi czujnik, pakiet ROS 2 i most gnss_lib_py kończą się na tej samej osi czasu zaufania do odbiornika. imu-fit odczytuje parametry czujnika, których potrzebują scenariusze hybrydowe i fuzji, z dziennika nieruchomego IMU, więc scenariusz można uruchomić z czujnikiem, który naprawdę masz.
kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
Status w rejestrze (ledger): MODELLED. Tylko samodzielnie napisane dane testowe; nie wczytano żadnego zapisu z prawdziwego odbiornika, IMU, przebiegu GNSS-SDR ani grafu ROS. Wejścia maszynowe.
Testy czasu i holdover#
Rodzaj holdover-test ocenia test holdover (GNSS odłączony przez operatora, holdover, powrót) na podstawie zmierzonego zapisu błędu czasu względem masek ITU-T i mówi o tym tymi słowami: zmierzono względem maski. Zasilają go czytniki dzienników linuxptp i chrony; etapy sprzętowe i pole lab-attestation mówią, kto co oświadczył.
kshana scenarios/holdover-test-example.toml
Status w rejestrze (ledger): MODELLED. Czasy odłączenia i przywrócenia GNSS są oświadczeniem operatora, niezweryfikowanym. HIL czasu, Bezpieczeństwo sprzętu.
Pakiety norm#
Ocenione pakiety dla profili testowych DHS Resilient PNT, IMO MSC.1/Circ.1575 i ICAO Doc 9849 Appendix F, a także tabela odpowiedniości NIST IR 8323r1 w compliance-report. Każdy test uruchamia dołączony scenariusz i porównuje pole wyniku z progiem podanym przed przebiegiem; test, który wymaga dziennika odbiornika, jest wymieniony jako wymagający wejścia, a nie oceniany. Sformułowanie to „dostarcza dowodów na (supports evidence for)”.
kshana standards-pack list
kshana standards-pack run imo-circ-1575
Status w rejestrze (ledger): MODELLED. Osiągnięty próg mówi, że scenariusz obliczony na podstawie modelu osiągnął podany próg, i nic o produkcie; każde niepowodzenie jest zachowane i przypięte testem. Normy.
LunaNet AFS#
Generator kodów LunaNet Augmented Forward Signal (kody Golda, Weila i trzeciorzędne, ramka komunikatu i jej kodowanie błędów) oraz weryfikator zapisanego lub wygenerowanego strumienia symboli, przypięty do jednej edycji specyfikacji.
kshana lunanet-afs-check spec
kshana lunanet-afs-check generate --frames 2 --out afs.sym
kshana lunanet-afs-check symbols afs.sym
Status w rejestrze (ledger): VALIDATED dla sprawdzeń kodów i synchronizacji, względem wartości, które drukuje specyfikacja (którą oznacza jako TBC); jedno sprawdzenie jest NOT MET, zachowane i przypięte (jedna drukowana kolumna kodu trzeciorzędnego się różni: dokument drukuje tę samą wartość dla dwóch PRN). Słowa LDPC i CRC podramek 2 do 4 nie są sprawdzane. Wiersze rejestru mówią dokładnie które. LunaNet AFS.
Pełna pętla laboratoryjna#
kshana.test-conditions/1 to opublikowany opis tego, co zrobiło laboratorium (zdarzenia, czasy, moce). kshana evidence round-trip łączy skrót scenariusza, skrót warunków, skrót dziennika odbiornika i ocenę w jeden podpisany pakiet i odrzuca pakiet, w którym warunki i scenariusz oceniający różnią się co do zdarzeń. Kshana nigdy nie wytwarza ani nie odtwarza sygnału: to, jak scenariusz dotarł do odbiornika, jest odpowiedzialnością operatora.
kshana evidence --help
Obraz przedstawia układ pakietu. Status w rejestrze (ledger): MODELLED. Warunki testu, Test bench.
kshana-bench#
Stałe zadania, podziały i metryki dla detekcji zakłóceń, detekcji IQ, przewidywania holdover i luki optymizmu, z zapieczętowanym zbiorem holdout i statyczną tabelą wyników. Ocenia zgłoszenia; nie jest rankingiem odbiorników.
kshana bench baseline --task d --split test --out results/
Status w rejestrze (ledger): brak własnego wiersza w rejestrze; punkty odniesienia są w plikach wyników oznaczone jako MODELLED. Względem wstępnie zarejestrowanych progów ocena, C1 do C3 i D2 są spełnione, a trzy progi są NOT MET, każdy przypięty testem: A2 (agc_k_sigma AUC 0,766 wobec co najmniej 0,80 na zbiorze testowym), D1 (największa różnica 0,0301) i zadanie (b) R1 (przeniesione z wcześniejszej kampanii, nie uruchomione ponownie). Wartości są w xval/bench/RESULTS-v2.md. Bench.
Obserwatorium zakłóceń#
Jeden produkt na dobę UTC i region z otwartego archiwum pozycji statków powietrznych, na stałej grubej siatce: każda komórka ma pogorszoną jakość, nie ma pogorszenia albo jest nieobserwowana (co nie znaczy „czysta”). Wydawany nie wcześniej niż 24 h po końcu doby, z tłumieniem małych komórek i bez przypisywania przyczyny.
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/
Obraz przedstawia zatwierdzone doby przykładowe, a nie produkt obserwatorium. Status w rejestrze (ledger): MODELLED: brak zewnętrznej wyroczni, prawdy terenowej i przypisania przyczyny; komórka nieobserwowana nie była oceniana, co nie oznacza, że jest czysta. Metoda obserwatorium.
Eksportery#
Telemetria zaufania jako tekst Prometheus, CEF, LEEF, OTLP oraz komunikaty wykrywania i stanu Home Assistant MQTT. Polecenie publikuje tylko do podanego mu miejsca docelowego i nie przechowuje żadnych poświadczeń.
kshana trust-telemetry --result session.result.json --print-metrics
kshana trust-telemetry --result session.result.json --print-syslog --format cef
Status w rejestrze (ledger): MODELLED. Telemetria zaufania.
Zapas łącza optycznego w funkcji czasu#
Rodzaj optical-atmosphere może zapisać jedną realizację z ziarnem (seed) pogody stanowiska jako szereg zapasu łącza: epizody zachmurzenia, kolumnę wody ciekłej dla każdego z nich, jedną próbkę scyntylacji na krok. Strona Optyczne PNT w Studio otwiera scenariusze optical-atmosphere.
kshana scenarios/optical-atmosphere-network.toml
Status w rejestrze (ledger): MODELLED. Jedno losowanie z modelu, a nie klimat. Atmosfera optyczna.
Nowe widoki Studio#
kshana.dev/studio zyskuje Odtwarzanie na mostku (dwa przebiegi obok siebie na jednym zegarze misji, pod /studio/replay/), stronę Optyczne PNT (/studio/optical/), stronę Test holdover (/studio/holdover/) i przeglądarkę obserwatorium (/studio/observatory/). Uruchamiają ten sam silnik w przeglądarce, nic nie jest wysyłane i niosą to samo oświadczenie doradcze. Obrazy powyżej są rysowane z własnego wyniku silnika przez skrypt; nie są zrzutami ekranu tych stron.
Nawigacja użytkowników przestrzeni kosmicznej (gnss-ssv)#
Dla statku kosmicznego powyżej orbit GNSS, wokół nich lub daleko poza nimi: ile sygnałów GNSS może użyć, jak są silne, jak dobra jest geometria i co może z nimi zrobić filtr pokładowy. Jeden rodzaj, cztery tryby, wybierane przez tabele scenariusza: powłoka użytkowników (udział czasu z jednym i czterema sygnałami, dla każdej konstelacji), trajektoria (sygnały, C/N0, rozmycie dokładności i ośrodek promienia przy brzegu wzdłuż orbity), przebieg nawigacji (dziewięciostanowy filtr na pseudoodległościach, aż do Księżyca) i formacja (nawigacja względna statków zastępczych wokół głównego). Publicznym źródłem porównania dostępności jest broszura interoperacyjna GNSS Space Service Volume (UN OOSA ST/SPACE/75, z International Committee on GNSS), która sama jest symulacją; jest pobierana, nigdy nie jest wbudowywana. Pełna strona: 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
Status w rejestrze (ledger): MODELLED, a porównanie z broszurą w większości chybia. Progi ustalono przed przebiegiem. Z ośmiu tylko S0 (odwrotny budżet łącza, 13 z 13 wartości) i S6 (misja księżycowa) są spełnione. S1 do S5 i S7 są NOT MET: geometria górnej i dolnej objętości usługi (43 z 52 i 48 z 52 komórek), górna objętość usługi 15/20/25 dB-Hz, sześć misji GEO, misja HEO oraz parametryczny wzorzec listków bocznych względem zmierzonych wzorców paneli GPS. Prawie każde chybienie w S1 do S5 dotyczy GLONASS, a broszura drukuje dla niego dwa różne kąty odniesienia; wariant diagnostyczny, który używa drugiej pary, doprowadza S1, S2 i S4 do każdej komórki, ale nie zastępuje przebiegu zapisanego i żaden wiersz nie jest VALIDATED. Filtr bezwzględny przebiegu formacji jest też zbyt pewny siebie (średni znormalizowany kwadrat błędu znacznie powyżej wartości około 3, którą daje filtr spójny).
Nawigacja użytkowników przestrzeni kosmicznej, co pokazuje porównanie.
Infrastruktura księżycowa (lunar-infrastructure)#
Orbita i powierzchnia Księżyca jako infrastruktura nawigacyjna i geodezyjna, w pięciu badaniach wybieranych przez study: od-consistency (pokładowe wyznaczanie orbity z GNSS Ziemi na orbicie halo względem niezależnego naziemnego), carrier-phase (ustalanie całkowitoliczbowej niejednoznaczności między stacjami na powierzchni a orbiterem), frame-coestimation (księżycowy układ odniesienia z pomiarów odległości do stacji na Ziemi z łączami orbitera i bez nich), space-tie (przesunięcia laserowe, VLBI i GNSS na jednym statku kosmicznym względem błędu powiązania lokalnego) oraz geodesy-sensitivity (która rodzina wielkości obserwowanych widzi liczby Love'a h2, k2 i l2). Model jest ograniczonym modelem trzech ciał z podanymi uproszczeniami i ilustracyjnymi danymi wejściowymi. Pełna strona: 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
Status w rejestrze (ledger): MODELLED, a trzy progi są NOT MET. Obliczenia numeryczne sprawdzono względem niezależnych programów numpy i scipy; nic nie jest porównywane z pomiarem wielkości księżycowej i nic nie jest VALIDATED. Spełnione: dwa rozwiązania orbity są spójne (średnie q 5,81 wobec oczekiwanych 6), a łącza orbitera podnoszą najmniejszą wartość własną układu odniesienia około 111-krotnie, przy założeniu znanej orbity. Niespełnione: wprowadzony błąd modelu 3e-10 m/s2 nie jest wykrywany (C3: rozwiązanie pokładowe jest znane z dokładnością około 350 m, więc około dziesięciu metrów ukrywa się w jego kowariancji); nie osiągnięto ustalenia całkowitoliczbowego (1 do 3 % powodzenia przy 25 dBi, a przy zarejestrowanych 12 dBi problemu nie da się sformułować); oraz połowa śladu w G3 dla dodawania rodziny wielkości obserwowanych (ślad wzrósł w 12 z 28 dodań, za każdym razem dlatego, że rodzina podniosła rząd). Każde chybienie jest przypięte testem. Infrastruktura księżycowa.
Kshana Studio#
Otwórz kshana.dev/studio, a cały silnik działa w przeglądarce, skompilowany do WebAssembly. Nic do instalowania i nic nie jest wysyłane. Studio ma dwa widoki tego samego silnika, a przełącznik w nagłówku przechodzi między nimi, zachowując scenariusz, widok i wszelkie zmienione ustawienia.
Widok prosty to ten, w którym otwiera się Studio. Zaczyna od pytań (ile satelitów widzę, czy mogę ufać swojej pozycji, jak długo zegar utrzyma czas, co zagłuszacz robi z moim odbiornikiem) i od mapy wszystkiego, co silnik potrafi, z udziałem metod sprawdzonych względem niezależnych wzorców w każdym obszarze. Otwórz scenariusz, a najpierw pojawia się odpowiedź: jedno zwykłe zdanie, napisane pod to, co dany scenariusz mierzy, potem jego kluczowe wartości i wykres. Widocznych jest najwyżej pięć ustawień, tych, które najbardziej zmieniają odpowiedź; reszta czeka w Ustawieniach zaawansowanych. Jak to jest obliczane objaśnia metodę, a Dla badaczy podaje własne wartości silnika, plik scenariusza, kod do uruchomienia go z Pythona i sposób cytowania.

Widok zaawansowany to pełny panel: biblioteka scenariuszy, pięć ponumerowanych kroków (Wybierz, Ustaw, Uruchom, Odczytaj wyniki, Udostępnij lub eksportuj), kluczowe wartości z oznaczeniami PASS i FAIL tam, gdzie przebieg podaje próg, oraz każdy panel: przegląd, wykresy, mapy, odtwarzanie, raport silnika i eksporty. Jedno pole wyszukiwania sięga do scenariuszy, dziedzin i pól w nich, a do czterech przebiegów można przypiąć i porównać obok siebie.
Ekran otwierający widoku prostego i widok zaawansowany po przebiegu


Źródło Studio i jego uwagi do budowania są w web/README.md.
Witryna#
Reszta kshana.dev jest budowana z własnych plików tego repozytorium i przebiegów silnika: misje, możliwości, rejestr dowodowy, opublikowane badania i wydania.

Możliwości#
Jeden silnik obejmuje cały łańcuch awarii, od pierwszego zagłuszonego satelity po ostatnią nanosekundę holdover zegara. Silnik ma 92 rodzajów scenariuszy; kshana kinds je wymienia, a docs/SCENARIOS.md dokumentuje każde pole.
| Możliwość | Na co odpowiada |
|---|---|
| Widmo | jak zagłuszacz (jammer) zajmuje pasmo L GNSS, pasmo po paśmie, sekunda po sekundzie |
| Zegary i synchronizacja czasu | jak długo każdy zegar utrzymuje czas po utracie GNSS |
| Konstelacje wokół dowolnego ciała | pokrycie, współczynnik DOP (rozmycie dokładności) i dostępność wokół Ziemi, Księżyca lub Marsa |
| Układ Słoneczny | gdzie znajduje się każda planeta i jaki jest czas propagacji światła na dowolnym łączu |
| Nawigacja z niskiej orbity okołoziemskiej | przelot, łącze, komunikat nawigacyjny i połączone rozwiązanie pozycji, etap po etapie |
| Kampanie | misja łańcuchowa, przegląd parametru lub zespół Monte Carlo w jednym scenariuszu |
| Animacja | szereg czasowy przebiegu jako animowany rysunek, odtwarzacz lub klatki |
| Raporty | każda wartość z jednostką i etykietą, w HTML (HyperText Markup Language) i JSON (JavaScript Object Notation) |
| Eksporty interoperacyjności | orbity i geometria dla innych narzędzi: SP3, CCSDS OMM i OEM, CZML, KML, GeoJSON, STK i SigMF |
| Zaufanie na morzu | czy mostek może zaufać tej pozycji: wskaźnik 0-100 i przyczyny dla NMEA statku, na żywo lub z dziennika (wyłącznie doradczo, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu) |
| Strumienie szkoleniowe NMEA | syntetyczne NMEA mostka ze scenariuszowym zagłuszaniem i spoofingiem oraz dziennikiem instruktora, do szkolenia załóg (tylko tekst; nigdy dla żywych systemów nawigacyjnych statku; wyłącznie doradczo, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu) |
| Mapa zakłóceń | gdzie statki powietrzne i statki zgłaszały pogorszone dane nawigacyjne i jak duży fragment trasy to obejmuje |
| Obszar emitera | gdzie, przy podanych założeniach, może znajdować się źródło pogorszonych raportów pozycji: obszary na podanej ufności, centroid z jego elipsą, nigdy punkt (MODELLED; kshana interference-map locate) |
| Pakiety dowodowe | podpisany, weryfikowalny offline zapis techniczny okna dziennika statku i tego, co silnik z niego obliczył, do raportu z incydentu (wyłącznie doradczo, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu) |
| Telemetria zaufania | strumień zaufania jako metryki Prometheus, zdarzenia SIEM i opcjonalnie OpenTelemetry, z przykładowym panelem Grafana (deploy/grafana/kshana-gnss-trust.json) |
| Signal K i OpenCPN | wskaźnik zaufania na serwerze Signal K łodzi i w OpenCPN, z referencyjną konfiguracją dla małego komputera przy odbiorniku (wyłącznie doradczo, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu) |
| Eksport dla test bench | kshana bench-export: ruch pojazdu i zdarzenia ze scenariusza dla laboratoryjnego symulatora GNSS (nie zapisuje się żadnego sygnału) oraz sposób późniejszej oceny dziennika odbiornika |
| Mapowanie compliance i raport | kshana compliance-report: dla których wierszy publicznych ram odporności zestaw przebiegów dostarcza dowodów na (supports evidence for) oraz jaka luka pozostaje |
| Notatniki | uruchamialne samouczki: strumienie zaufania i szkolenia dla statku, narażenie trasy na mapie zakłóceń, mapowanie compliance i bench testowy, GDOP kwantowy a klasyczny |
| Weryfikator Galileo OSNMA | dane nawigacyjne których satelitów odbiornik może uwierzytelnić kryptograficznie i dlaczego kontrola się nie powodzi; Kshana nie przyznaje żadnych praw w ramach IPR do ICD OSNMA UE (zob. NOTICE na stronie) |
Formaty eksportu w pełnej formie: SP3 to Standard Product 3; CCSDS OMM i OEM to Orbit Mean-elements Message i Orbit Ephemeris Message Konsultacyjnego Komitetu ds. Systemów Danych Kosmicznych; CZML i KML to języki znaczników Cesium i Keyhole; STK to Systems Tool Kit; SigMF to Signal Metadata Format.
Każda możliwość, pokazana na rzeczywistym przebiegu: wodospad pasma L, mapa pokrycia, Układ Słoneczny i przelot na niskiej orbicie okołoziemskiej
Uruchom dowolny z nich poleceniem kshana example <scenario> > s.toml && kshana s.toml: scenariusze to l-band-waterfall-jamming, constellation-multi-gnss-coverage, solar-system-tour i leo-pass-iridium.
Możliwości morskie i dotyczące zakłóceń, pokazane na zatwierdzonych syntetycznych danych wejściowych: wskaźnik zaufania, mapa zakłóceń z narażeniem trasy, strumień szkoleniowy i pakiet dowodowy
Wszystkie cztery to dane wymyślone i doradcze: pokazują format i zachowanie oprogramowania, a nie to, jak jakikolwiek odbiornik lub system radzi sobie z zakłóceniami. Pierwszy uruchom poleceniem kshana receiver-trust examples/maritime-trust/session.toml, drugi poleceniem kshana route-exposure na próbkach w examples/interference-map/, trzeci poleceniem kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea (tylko do szkolenia: nigdy nie podawaj go na wejście żywego sprzętu nawigacyjnego), a czwarty jak w docs/EVIDENCE-PACKS.md.
Pełna tabela możliwości, dziedzina po dziedzinie
Poniżej pełny opis dziedzina po dziedzinie; rejestr dojrzałości poszczególnych możliwości znajdziesz w docs/CAPABILITY.md i docs/VALIDATION.md.
| Dziedzina | Możliwość |
|---|---|
| Orbita i geometria | Propagacja SGP4/SDP4 (sprawdzona do 4,12 mm względem wszystkich 666 wektorów AIAA 2006-6753); rzeczywiste elementy dwuwierszowe (zatwierdzona, opatrzona datą migawka Celestrak gps-ops) lub syntetyczne konstelacje Walker-delta, których średnie elementy realizują wzór i:T/P/F z dokładnością poniżej 1 km podczas 24 h propagacji; widoczność wielu konstelacji, rozmycie dokładności — geometryczne, pozycji, poziome, pionowe i czasu (GDOP/PDOP/HDOP/VDOP/TDOP), sprawdzone do 1e-6 względem gnss_lib_py 1.0.4, Stanford NAV Lab (Navigation and Autonomous Vehicles Laboratory) oraz dostępność GNSS; bezgradientowy optymalizator konstelacji, wymiarowanie minimalnej liczby satelitów metodą streets-of-coverage, narzędzie do porównywania wielu konstelacji oraz przegląd projektów Walkera, który zestawia w tabeli pokrycie / PDOP / czas rewizyty na siatce płaszczyzn × satelitów i podaje projekty optymalne w sensie Pareto. |
| Propagator numeryczny | Numeryczny propagator Cowella (src/propagator.rs) uzupełniający analityczną ścieżkę SGP4/SDP4, z hierarchicznym modelem sił z siedmioma perturbacjami (src/forces.rs): dwa ciała + pełne pole zonalne J2–J6 (zonalne współczynniki harmoniczne spłaszczenia Ziemi od J2 do J6; dokładny analityczny gradient jego potencjału zakłócającego), opcjonalny tesseralny geopotencjał harmoniczny sferyczny EGM2008 do stopnia i rzędu 70 (Earth Gravitational Model 2008; src/gravity_sh.rs; rzeczywiste współczynniki NGA — US (United States) National Geospatial-Intelligence Agency — rekurencja znormalizowanych funkcji Legendre'a Holmesa–Featherstone'a, sprawdzona krzyżowo względem zamkniętych postaci funkcji Legendre'a i tożsamości analitycznej ∇V), grawitacja trzeciego ciała Słońca i Księżyca zależna od epoki (wbudowane efemerydy niskiej dokładności, bez jądra DE/SPK — Development Ephemeris / SPICE Spacecraft and Planet Kernel), ciśnienie promieniowania słonecznego (model kuli armatniej ze stożkowym cieniem i półcieniem), opór atmosferyczny (gęstość odcinkowo wykładnicza wg Vallado, współobracająca się atmosfera), postnewtonowska poprawka relatywistyczna Schwarzschilda oraz człon wleczenia układów inercjalnych Lense'a–Thirringa (IERS — International Earth Rotation and Reference Systems Service — Conventions 2010 §10, liniowy względem momentu pędu Ziemi, o ~1–2 rzędy wielkości poniżej członu Schwarzschilda) — napędzany do wyboru jednym z dwóch adaptacyjnych integratorów (RK4 — Runge–Kutta czwartego rzędu — z podwajaniem kroku lub wbudowana para Dormanda–Prince'a RK5(4)). Sprawdzone względem Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — 278 epok na LEO (niska orbita okołoziemska) + GTO (orbita transferowa do geostacjonarnej), przy czym poziomy sił zachowawczych zgadzają się w najgorszym przypadku do |Δr| 0,08 m w ciągu 24 h (tests/numerical_cowell_propagator_reference.rs); poziom oporu atmosferycznego jest scharakteryzowany osobno (≈ 333 m / 24 h), a bezwzględne wejścia efemeryd Słońca i Księżyca oraz gęstości pozostają, zgodnie z prawdą, obliczone z modelu. Dodatkowe dowody wewnętrzne (nie są to walidacja zewnętrzna): orbita bez perturbacji jest sprawdzona względem dokładnego rozwiązania Keplera w zmiennych uniwersalnych do poniżej metra w ciągu 24 h, energia i moment pędu zachowują się do ~1e-9, a każda perturbacja zgadza się z wyprowadzoną ręcznie sygnaturą w postaci zamkniętej. |
| Manewry i projektowanie trajektorii | Impulsowe węzły ΔV z propagacją kowariancji 6×6 (ramy błędów wykonania ECI — Earth-centred inertial — / LVLH — local vertical, local horizontal), całkowanie manewru o skończonym czasie trwania sprawdzone względem zamkniętego równania rakietowego Ciołkowskiego do < 0,01 %, jednoobrotowy solver Lamberta Izzo-2015, dokładny propagator Keplera w zmiennych uniwersalnych oraz przegląd porkchop (start × przylot) C3 (energia startu) / V∞ przylotu zapisywany jako siatka konturów JSON — warstwa symulacji osiągów nad GMAT/Orekit, w której każdy wynik Lamberta jest odtworzony względem prawdy dla dwóch ciał, a minimum porkchop sprawdzone względem analitycznego minimum Hohmanna. |
| Systemy czasu i układy odniesienia | Skale UTC / TAI / TT / UT1 IERS z sekundami przestępnymi (Coordinated Universal Time, International Atomic Time, Terrestrial Time oraz czas rotacji Ziemi Universal Time 1), API (application programming interface) dat juliańskich, kąt rotacji Ziemi (ERA) wg IAU-2000 (International Astronomical Union), TEME ↔ ECEF oparte na GMST (Greenwich Mean Sidereal Time) (true equator, mean equinox ↔ Earth-centred, Earth-fixed) z geodezyjnymi układami WGS-84 (World Geodetic System 1984), precesja IAU 2006 (Fukushima–Williams), pełna nutacja IAU 2000A/2000B, ruch bieguna IERS oraz niezależna od równonocy redukcja GCRS↔ITRS IAU 2006/2000A oparta na CIO (CIO = Celestial Intermediate Origin) — wszystko sprawdzone co do bitu względem wektorów SOFA/ERFA oraz niezależnie sprawdzone krzyżowo względem ANISE (czysto rustowa reimplementacja NAIF/SPICE; NAIF = the Navigation and Ancillary Information Facility of NASA, the US National Aeronautics and Space Administration): GCRS→ITRS w kshana względem ITRF93 w ANISE (International Terrestrial Reference Frame 1993) z earth_latest_high_prec.bpc z JPL, przy tych samych parametrach orientacji Ziemi IERS podanych obu, zgadzają się do ≤ 0,86 m na powierzchni Ziemi / ≤ 3,6 m na orbicie GNSS (maks. 0,028″) w ośmiu epokach 2020–2023. |
| Inercyjne | Trójosiowy INS strapdown — orientacja kwaternionowa, mechanizacja WGS-84 NED (north-east-down), kompensacja coning/sculling oraz deterministyczny model błędów IMU (współczynnik skali, niewspółosiowość, wrażliwość na przyspieszenie, kwantyzacja, dryf); oparty na pierwszych zasadach akcelerometr z interferometrem zimnych atomów (faza Macha–Zehndera, kwantowy szum projekcji, zanik kontrastu, sprzężenie drgań), który wyprowadza współczynnik błądzenia losowego prędkości; oraz filtr cząsteczkowy z sekwencyjnym resamplingiem ważnościowym do nawigacji wspomaganej mapą (odniesienie do terenu lub grawitacji) bez GPS. |
| Alt-PNT (bez GPS) | Model pomiaru grawimetru zimnoatomowego, którego próg szumu białego (σ = ASD/√τ, ASD = amplitude spectral density) wynika z fizyki akcelerometru CAI; niskostopniowe, w pełni znormalizowane pole anomalii grawitacyjnych w harmonikach sferycznych (sprawdzone względem zamkniętych postaci funkcji Legendre'a i ręcznie wyprowadzonej anomalii jednego członu) oraz syntetyczne masconsy; jądro syntezy funkcjonałów grawitacji (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — „czytnik mapy”, z którym dopasowuje się nawigator wspomagany grawitacją — jest sprawdzone względem standardu grawitacji normalnej GRS80 (Geodetic Reference System 1980), odtwarza zamkniętą postać grawitacji normalnej Somigliany i opublikowane γ_e / γ_p do 3.5e-12 oraz tworzy fizycznie ograniczoną mapę zaburzeń z rzeczywistego pola ICGEM (International Centre for Global Earth Models) EGM2008 (RMS — root mean square — ≈ 26 mGal, maks. ≈ 89 mGal przy d/o 70; tests/icgem_gravity_reference.rs); oraz filtr cząsteczkowy dopasowujący mapę grawitacji, który odtwarza trasę bez GPS z ciągu anomalii, przez który się przelatuje. Rozszerza się na nawigację odniesioną do terenu (TERCOM/SITAN — terrain contour matching / Sandia Inertial Terrain-Aided Navigation — względem SRTM (Shuttle Radar Topography Mission) .hgt DEM (cyfrowy model wysokościowy), src/altpnt/terrain.rs), główne pole geomagnetyczne IGRF-14 (14. generacja International Geomagnetic Reference Field) do stopnia i rzędu 13 (src/igrf.rs, sprawdzone względem zamkniętej postaci przechylonego dipola i różnic skończonych ∇V) oraz połączony nawigator grawitacja + magnetyzm + teren, który łączy wszystkie trzy kanały skalarne w jednym filtrze cząsteczkowym (informacja jest addytywna — żaden kanał nie pogarsza pozycji). 60-minutowy test z utratą GPS (przerwa trwająca godzinę na dystansie ~700 km, podczas której rozwiązanie inercyjne dryfuje do ~70 km) jest odtwarzany do ~145 m (< 500 m) przez hierarchiczny dopasowywacz od zgrubnego do dokładnego — cel Quantum Wayfarer w ESA NAVISP (Navigation Innovation and Support Programme). |
| Fuzja | Luźno sprzężony 15-stanowy EKF błędów stanu GNSS/INS (extended Kalman filter) ze sprzężeniem zwrotnym w pętli zamkniętej (pakiet gnss-ins); ściśle sprzężona aktualizacja pseudoodległości, która nadal koryguje przy mniej niż czterech satelitach; sprzężony filtr zegar + pozycja; ogólny estymator Kalmana bezśladowego (punkty sigma) dla silnie nieliniowych pomiarów; ściśle sprzężony nawigator UKF GNSS/INS (pseudoodległość + Doppler), którego orbitalny lot bezwładny według modelu sił jest sprawdzony pod kątem samospójności do 0,77 m RMS w 30-minutowym przelocie LEO po łuku, obejmującym 120-sekundową przerwę GNSS (to wartość spójności filtra, a nie walidacja względem zewnętrznej wyroczni — ten nawigator pozostaje MODELLED); oraz pełny 17-stanowy ściśle sprzężony UKF GNSS/INS (pozycja, prędkość, błąd orientacji, biasy akcelerometru i żyroskopu, bias i dryf zegara), którego kwantowa nawigacja zliczeniowa CAI przechodzi 120-sekundową przerwę na wyprowadzonym błądzeniu losowym prędkości akcelerometru zimnoatomowego. |
| Wyznaczanie orbity | Odtwarzanie stanu orbitalnego [r, v] z pomiarów odległości ze stacji naziemnej, z użyciem modelu sił dwóch ciał + J2 i integratora RK4 oraz korektora wsadowego Gaussa–Newtona (determine_orbit_batch, poniżej metra / mm·s⁻¹ z bezszumowych odległości, ~2 m przy progu szumu 5 m) i wariantu sekwencyjnego z filtrem bezśladowym (determine_orbit_sequential). |
| Obserwowalność i teoria estymacji | Ogólna, wielokrotnego użytku warstwa informacji Fishera / Cramér–Rao (src/fim.rs): macierz informacyjna M = HᵀWH, dolne ograniczenie Cramér–Rao, rząd obserwowalności i przestrzeń zerowa defektu układu odniesienia (pseudoodwrotność Moore'a–Penrose'a) oraz skalary planowania eksperymentu D/A/E/T-optymalne z symetrycznego eigensolvera Jacobiego. Sprawdzone — wartości własne względem numpy.linalg.eigh, kowariancja CRLB względem σ²(XᵀX)⁻¹ przez numpy.linalg.inv oraz DOP GNSS z macierzy informacyjnej, wszystko zgodne do 1e-9 (tests/fim_observability_reference.rs), a dodatkowo sprawdzone krzyżowo względem zamkniętych ograniczeń Kaya (1993) z osiąganiem CRLB metodą Monte Carlo. Stanowi podstawę silnika DOP, CRLB pasywnej geolokalizacji i twierdzenia o obserwowalności bezwzględnej stacji księżycowej (poniżej). |
| Księżycowe i cislunarne | Propagator kołowego ograniczonego problemu trzech ciał (CR3BP) Ziemia–Księżyc w układzie wirującym — zachowana stała Jacobiego i wszystkie pięć punktów Lagrange'a (src/cr3bp.rs) — teraz z macierzą przejścia stanu 6×6 (STM) i jednostrzałowym korektorem różnicowym (cr3bp_jacobian, propagate_state_stm, differential_correct_halo), który tworzy naprawdę okresowe orbity halo / NRHO (near-rectilinear halo orbit): STM jest sprawdzona względem różnic skończonych, skorygowane orbity zamykają się z dokładnością maszynową, a zasilenie opublikowanym stanem apolunium odtwarza południową orbitę NRHO L2 9:2 (L2 = drugi punkt Lagrange'a Ziemia–Księżyc; orbita Gateway) przy okresie ≈ 6,57 d / peryluniu ≈ 3 250 km, zgodnie z opublikowanymi ≈ 6,56 d / ≈ 3 370 km (rozwiązanie CR3BP — kołowe, bez Słońca — nie sprawdzone względem rzeczywistych efemeryd LANS (Lunar Augmented Navigation Service)/Gateway; selenocentryczna transformacja MCI/MCMF (Moon-centred inertial / Moon-centred, Moon-fixed) skorygowanej orbity to kolejny krok); oraz geometria PNT cislunarnego LunaNet / LNIS (LunaNet Interoperability Specification) (redukcja MCI↔MCMF, współrzędne selenograficzne) z przelotem ARAIM nad południowym biegunem Księżyca, który uczciwie ujawnia lukę integralności: σ_URE (błąd odległości użytkownika) ~30 m podnosi poziom ochrony znacznie powyżej limitu alarmowego 50 m (src/lunar.rs, scenarios/lunanet-araim.toml); oraz uzupełnienie DOP o nawigacyjne radiolatarnie powierzchniowe (src/lunar_beacon.rs), pokazujące, jak kilka zmierzonych radiolatarni dalmierczych na powierzchni dostarcza wierszy linii widzenia o niskiej elewacji i szerokim azymucie, których brakuje w zestawie samych orbit przelatujących nad głową — redukując źle uwarunkowany GDOP na biegunie południowym i, przez budżet błędów metodą pierwiastka z sumy kwadratów, uzyskaną dokładność pozycji w metrach (z ponownym użyciem jądra DOP sprawdzonego względem gnss_lib_py i zamkniętej postaci widoczności nad horyzontem bez atmosfery; analiza rozmycia dokładności jest opisana w arXiv:2607,06212). |
| Zestaw PNT księżycowego | Zestaw nawigacji księżycowej/cislunarnej zbudowany na rdzeniu CR3BP, każdy element to uruchamialny kind: Lunar Coordinate Time (lunar-time-offset, src/lunar_time.rs — wiekowa szybkość LTC/TCL − TT z różnicy potencjału własnego + członu kinetycznego, podana z opublikowanym przedziałem 56–59 µs/dobę (LTC = Lunar Coordinate Time; TCL = jego francuska forma, Temps-Coordonnée Lunaire)); geodezyjna obserwabla opóźnienia VLBI księżycowego (very-long-baseline interferometry) (lunar-vlbi, src/lunar_vlbi.rs — opóźnienie i szybkość z różnicy dwóch odległości w polu bliskim na bazie ziemskiej, sprawdzone krzyżowo względem płaskofalowego Δ-DOR (delta differential one-way ranging) z tej samej bazy kodu w granicy pola dalekiego, pochodne cząstkowe zweryfikowane różnicami skończonymi); wspólny wielotechnikowy estymator OD + zegar w trybie wsadowym (lunar-joint-od-clock, src/lunar_combination.rs — dopasowanie Gaussa–Newtona łączące VLBI + odległości lokalne na Księżycu + odległości międzysatelitarne) niosący wynik obserwowalności Fishera: same pomiary wewnętrzne pozostawiają sześciostopniowy defekt układu odniesienia bryły sztywnej, więc bezwzględna pozycja stacji powierzchniowej jest nieobserwowalna, dopóki nie doda się powiązania z układem ziemskim — opóźnienie VLBI na bazie ziemskiej przywraca obserwowalność dla rzadkiej konstelacji i zaostrza ograniczenie Cramér–Rao dla bogatej, a bezwzględny układ odniesienia zamyka się przy trzech niewspółliniowych stacjach ziemskich (wynik obserwowalności opisany w arXiv:2607,02566); realizacja układu odniesienia (lunar-frame-realisation, src/lunar_frame_realise.rs — 7-parametrowe dopasowanie układu odniesienia Helmerta + powiązanie orientacji WGCCRE IAU 2015 — WGCCRE = the IAU Working Group on Cartographic Coordinates and Rotational Elements); analiza obszaru usługi klasy Moonlight/LCNS (LCNS = Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs — DOP / pokrycie / dostępność + uogólniona obwiednia HPL/VPL (poziomy i pionowy poziom ochrony) księżycowego ARAIM, z ponownym użyciem jądra DOP sprawdzonego względem gnss_lib_py i mechanizmu LunaNet σ_URE≈30 m); księżycowy różnicowy PNT (lunar-differential-pnt, src/lunar_dpnt.rs — księżycowy odpowiednik różnicowego GNSS / systemu wspomagania opartego na satelitach (SBAS): dokładne znoszenie wspólnego błędu zegara + dekorelacja przestrzenna pierwszego rzędu względem bazy, z ponownym użyciem poziomu ochrony SBAS wg DO-229E — DO-229E to minimalny operacyjny standard osiągów RTCA (dawniej Radio Technical Commission for Aeronautics) dla odbiorników SBAS); oraz eksport interoperacyjności dostosowany do LunaNet/IOAG (IOAG = Interagency Operations Advisory Group; lunar-interop-export, src/lunar_interop.rs — CCSDS-OEM (Orbit Ephemeris Message) + podróż w obie strony skali czasu księżycowego w księżycowym układzie ciała IAU 2015, opakowane w kopertę KIF). Poziomy dowodowe poszczególnych elementów podano w macierzy weryfikacji: Lunar Coordinate Time, wspólny estymator OD + zegar, realizacja układu odniesienia i geometria obszaru usługi są VALIDATED (każde względem niezależnej wyroczni wskazanej w jego wierszu, tak samo ścieżka jądra opóźnienia VLBI); obserwabla VLBI, wynik obserwowalności defektu układu odniesienia, różnicowy PNT i eksport interoperacyjności są MODELLED. Parametry to ilustracyjne wartości ze źródeł publicznych — nie sprawdzone względem rzeczywistego śledzenia VLBI/Gateway, nie powiązane z żadną agencją ani przez nią nieaprobowane, bez twierdzeń o TRL (poziom gotowości technologicznej) / doświadczeniu eksploatacyjnym. |
| PNT w przestrzeni kosmicznej i na Marsie | Otwarty silnik nawigacji radiometrycznej: iteracyjny czas propagacji światła + relatywistyczne opóźnienie Shapiro, dwu-/jedno-/trójdrogowy Doppler i odległość (dwa odcinki wg Moyera), współczynniki zwrotu spójnego transpondera, odległościowanie regeneracyjne/PN (pseudo-noise) (CCSDS 414, standard odległościowania pseudoszumowego) oraz Δ-DOR w płaszczyźnie nieba (CCSDS 506, standard Delta-DOR), z mediami: plazma słoneczna/troposfera/jonosfera; parsowanie i emisja komunikatów danych śledzenia CCSDS-TDM (503); filtr informacyjny pierwiastkowy ze zredukowaną dynamiką (RTN — radialny, poprzeczny, normalny — przyspieszenia empiryczne + 3-stanowy zegar pokładowy + opór atmosfery Marsa), który wykonuje wyznaczanie orbity LMO Marsa z dokładnością ≈ 0,2 m w syntetycznej pętli zamkniętej; wspólny estymator fuzji jednokierunkowej i dwukierunkowej; rdzeń dynamiki wielociałowej (Body{μ, re, zonals, gravity, IAU-pole}, grawitacja Mars GMM-3 (Goddard Mars Model 3), układ związany z ciałem Marsa wg IAU, wymienne złącze EphemerisProvider, dwuczęściowe daty juliańskie + TT↔TDB (Barycentric Dynamical Time)) oraz scenariusz przekaźnika PNT mars-pnt (konstelacja przekaźników areostacjonarnych MARCONI) z kompletnym symulatorem osiągów GSE (GSE = ground-support equipment) (geometria → budżet łącza → obserwable → SRIF → kowariancja). Sprawdzone symulacją (wartości jakości kowariancji / pętli zamkniętej); dynamika Marsa ze Słońcem w centrum jest sprawdzona krzyżowo względem JPL DE440 (137 m @ łuk 1-dobowy, xval/anise-mars-od). Walidacja na rzeczywistych danych śledzenia DSN/ESTRACK jest w planie. |
| PNT dla Układu Słonecznego i dowolnego ciała | Bezjądrowe efemerydy całego Układu Słonecznego (src/ephem.rs, src/ephem_provider.rs): każda planeta z elementów keplerowskich Standisha JPL (Tabela 1, lata 1800–2050 n.e.; Tabele 2a/2b, 3000 p.n.e.–3000 n.e.) z opublikowanym nominalnym błędem każdej planety, Ziemia i Księżyc rozdzielone przez szereg księżycowy oraz Fobos, Deimos, Io, Europa, Ganimedes, Kallisto i Tytan z elementów średnich JPL i modelu rotacji IAU (International Astronomical Union); dowolne ciało względem dowolnego innego w ICRF (International Celestial Reference Frame). Body zawiera teraz GM (parametr grawitacyjny), promienie, J2 (drugą harmonikę zonalną) tam, gdzie opublikowano, oraz biegun i południk zerowy IAU dla osiemnastu ciał. Rodzaj solar-system podaje położenia, prędkości, stałe, czas propagacji światła i odległość jedno-/dwudrogową między dowolnymi dwoma ciałami (istniejący radiometryczny solver czasu propagacji światła, z opóźnieniem Shapiro od Słońca) oraz tor orbity każdego ciała — wystarczająco, by narysować interaktywny Układ Słoneczny; rodzaj body-pnt umieszcza orbiter lub lądownik wokół dowolnego ciała (scenarios/mars-orbit-pnt.toml, scenarios/europa-surface-pnt.toml) z lokalną konstelacją Walkera, mechanizmem rozmycia dokładności i Gaussa–Newtona oraz odległością w głębokiej przestrzeni od Ziemi. Sprawdzone względem JPL Horizons (DE441, JPL Development Ephemeris 441): Merkury–Saturn i Ziemia z Tabeli 1 w granicach dwukrotności błędu nominalnego (najgorzej 1,87×), wszystkie osiem planet z Tabel 2a/2b (najgorzej 1,71×) oraz czas propagacji światła Ziemia–Mars/Jowisz. Obliczone z modelu: Uran i Neptun z Tabeli 1 (2,0× i 5,2× podanego błędu względem DE441), Pluton, księżyce oraz wyniki nawigacyjne body-pnt. |
| Połączone PNT z MEO + LEO | src/leo_fusion/: niezależne od systemu pozycjonowanie, nawigacja i czas z LEO dla dowolnej konstelacji (powłoki Walkera, zestawy elementów, presety GNSS) i dowolnego sygnału (nośna, szybkość chipów, obwiednia C/N0, błąd odległości sygnału w przestrzeni), z opcjonalnymi jednoplikowymi presetami niosącymi swoje źródła (Xona Pulsar X1/X5, Iridium STL, sygnały okazjonalne Starlink, CentiSpace, reprezentatywny system pasma C, model efemeryd z zerowym zegarem ATOMIC). leo-pvt: wsadowe pozycjonowanie Dopplerowskie z szybkości zmian odległości (jedno- i wielosatelitarne, stany dryfu zegara i prędkości, geometria pojedynczego przelotu wzdłuż/w poprzek toru i rozwiązanie lustrzane), łączna ważona metoda najmniejszych kwadratów GNSS + LEO z odchyłkami międzysystemowymi dla każdego systemu i sigmami dla każdego sygnału podawanymi przez wywołującego, DOP w funkcji liczby satelitów LEO, pokrycie polarne i arktyczne oraz transfer czasu z LEO do UTC w funkcji C/N0 i oscylatora. leo-ppp: zmiennoprzecinkowy EKF PPP (precise point positioning) (extended Kalman filter) z samym GNSS i z LEO, jego czas zbieżności oraz test spójności NEES chi-kwadrat. ntn-positioning: pozycjonowanie w sieciach nienaziemnych 5G z ograniczenia Cramér–Rao dla szerokości pasma. Sprawdzone: obwiednia Dopplera LEO względem opublikowanych wartości Iridium i Xona. Obliczone z modelu: reszta, z trendem PPP porównanym z Li i in. (2019) — zob. docs/LEO-PNT-FUSION.md. |
| Integralność | RAIM — autonomiczne monitorowanie integralności przez odbiornik — migawkowy i z rozdzieleniem rozwiązań (w stylu ARAIM), z poziomami ochrony poziomym/pionowym (HPL/VPL), detekcją i wykluczaniem uszkodzeń oraz diagramami integralności Stanforda; jawny poziom ochrony rozdzielenia rozwiązań z wieloma hipotezami (MHSS) z budżetem ryzyka integralności, w tym tryb uszkodzenia całej konstelacji dla układów dwu-/wielokonstelacyjnych (ARAIM UE (Unia Europejska) / DO-316, standard osiągów RTCA dla pokładowego sprzętu GPS z wspomaganiem opartym na statku powietrznym), wypróbowany na rzeczywistej migawce GPS + Galileo (scenarios/araim-gps-galileo.toml). Poziom ochrony stosuje jednostronną projekcję obciążenia nominalnego b_k = Σ_i|s_i|·b_nom dla każdego trybu uszkodzenia oraz sigmę integralności σ_URA (dokładność odległości użytkownika; różna od sigmy dokładności σ_URE, błędu odległości użytkownika) z komunikatu Integrity Support Message — zob. docs/ARAIM_REFERENCE.md. Jądro detekcji (progi χ²/niecentralnego χ²/normalne i mnożniki K) jest zewnętrznie sprawdzone względem SciPy w 171 przypadkach (tests/raim_reference.rs); geometria wykorzystuje ponownie jądro DOP sprawdzone względem gnss_lib_py. Sama alokacja budżetu ryzyka integralności ARAIM MHSS nie ma opublikowanej liczbowej wyroczni i, zgodnie z prawdą, pozostaje obliczona z modelu. |
| Wspomaganie (SBAS) | Poziomy ochrony SBAS / WAAS (WAAS = Wide Area Augmentation System) w postaci ważonej metody najmniejszych kwadratów DO-229E (współczynniki K dla podejścia precyzyjnego i lotu po trasie) oraz kombinacja dwuczęstotliwościowa L1/L5 wolna od wpływu jonosfery (L1 i L5 to dwa cywilne pasma sygnałów GPS; IS-GPS-705, specyfikacja interfejsu GPS dla sygnału L5, γ₁₅ ≈ 1,793), która stanowi podstawę DO-316 — src/sbas.rs. Algorytm poziomu ochrony jest zewnętrznie sprawdzony względem forka RTKLIB SBAS-PL (RTKLIB = otwarta biblioteka pozycjonowania kinematycznego w czasie rzeczywistym; PL = poziom ochrony) (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, DO-229D — poprzednia wersja DO-229 — dod. J) uruchomionego na rzeczywistych danych EGNOS (European Geostationary Navigation Overlay Service), odtwarzając jego HPL do < 2e-3 m (tests/sbas_reference.rs); gLAB (pakiet narzędzi GNSS Laboratory) v6.0.0 potwierdził identyczną konwencję. |
| Zegar i synchronizacja czasu | Dwustanowy holdover z filtrem Kalmana (kowariancja w postaci Josepha, stan zdrowia spójności NIS/NEES — znormalizowany kwadrat innowacji / znormalizowany kwadrat błędu estymacji); stabilność z rodziny Allana (ADEV / MDEV / TDEV / HDEV / MTIE — odchylenie Allana, zmodyfikowane Allana, czasu i Hadamarda oraz maksymalny błąd przedziału czasu) z przedziałami ufności zależnymi od typu szumu i pełnym dopasowaniem prawa potęgowego o pięciu współczynnikach wg IEEE-1139 (IEEE Std 1139, definicje metrologii częstotliwości i czasu Institute of Electrical and Electronics Engineers) — estymatory są sprawdzone na rzeczywistym sprzęcie względem Stable32: rzeczywisty wzorzec pierwotny cezowy 5071A względem masera wodorowego (556 990 próbek fazy, 16 współczynników uśredniania, OADEV/OHDEV — nakładające się odchylenie Allana/Hadamarda — do 1e-3; tests/cs5071a_reference.rs) oraz kanoniczna seria regresyjna Stable32 PHASE.DAT (139 współczynników uśredniania, OADEV/MDEV/TDEV do 1e-3; tests/phasedat_reference.rs); estymatory ADEV/MDEV/TDEV i telekomunikacyjna metryka wandrowania MTIE są dodatkowo sprawdzone krzyżowo względem niezależnej biblioteki allantools 2024,06 do < 1e-9 na serii NIST SP 1065 (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); korekcje geometryczne (Sagnac, wspólny widok GNSS); oraz operacyjne metody transferu — TWSTFT (dwudrogowy satelitarny transfer czasu i częstotliwości) z zamkniętą postacią Sagnaca wg BIPM (Międzynarodowe Biuro Miar), wspólny widok GNSS, transfer czasu PPP (precise point positioning) wolny od wpływu jonosfery, optyczne łącze w wolnej przestrzeni ze scyntylacją turbulencji oraz zespołowa (papierowa) skala czasu zegarów ważona odwrotnością wariancji, poniżej najlepszego zegara składowego. Kalkulator holdover zegara bez GNSS (src/holdover.rs) udostępnia zamkniętą postać wzrostu błędu lotu bezwładnego van Loana jako odwrócenie holdover do progu — jak długo zegar swobodnie biegnie, zanim jego błąd czasu przekroczy budżet — dla reprezentatywnych klas zegarów klasycznych i kwantowych; obliczone z modelu (sprawdzone krzyżowo względem wieloetapowej rekurencji kowariancji clock_state) oraz uczciwie zaznaczone, że dla bardzo stabilnego zegara holdover do ciasnego progu wyznacza założony próg szumu długiego tau, a nie podane ADEV. Warunkowy poziom ochrony czasu (src/tpl.rs) rozszerza holdover na spoofing: ograniczenie niewykrytego błędu czasu, przy niezależnej kontroli krzyżowej, składające próg monitora k-sigma, wariancję lotu bezwładnego van Loana w czasie opóźnienia detekcji oraz czas do alarmu CUSUM (cumulative-sum). Skalibrowane na rzeczywistym zarejestrowanym spoofingu (JammerTest 2024) i odtwarzalne przez cargo run --example tpl_jammertest; kompozycja MODELLED (bez budżetu ryzyka integralności na godzinę), warunkowa względem detekcji — nie istnieje skończone ograniczenie bezwarunkowe. |
| Dziedzina pomiarowa GNSS | Syntezę w przód pseudoodległości / Dopplera z jonosferą Klobuchara (nadawaną) i IONEX / siatką TEC (IONosphere map EXchange format / całkowita zawartość elektronów; mierzoną) — w tym parser plików IONEX, interpolację czasową między mapami i odwzorowanie nachylenia cienkiej powłoki — troposferą Saastamoinena + Niella oraz migawkowy RAIM (HPL/VPL). |
| Odporność | Zagłuszanie w budżecie łącza (J/S → efektywne C/N₀ → utrata synchronizacji — stosunek zagłuszacza do sygnału, stosunek gęstości nośnej do szumu — ze współczynnikiem rozdzielenia widmowego przeciw zagłuszaniu Q teraz wyprowadzonym z rzeczywistych widm mocy sygnału i zagłuszacza przez src/navsignal.rs — Q = 1/(R_c·κ), sprawdzonym krzyżowo w CI względem poprzedniej reprezentatywnej stałej); stochastyczny detektor spoofingu czasu (test energii Neymana–Pearsona / χ²₁ z zamkniętą postacią i Monte Carlo P_fa/P_md oraz wskaźnikiem jakości bezpieczeństwa (FoM) równym 1 − P_md); oraz wielowarstwowy detektor spoofingu łączący test parzystości spójności RAIM (z uczciwie zamodelowaną ślepą plamą trybu wspólnego), monitor mocy AGC RF (automatyczna regulacja wzmocnienia) i monitor jakości sygnału (SQM — monitorowanie jakości sygnału, wcześnie-minus-późno); oraz budżet błędów nawigacji zliczeniowej kwantowo-inercyjnej (QuantumNavBudget, src/inertial/quantum_imu.rs) składający białoszumowe błądzenie losowe prędkości interferometru zimnych atomów z resztkowym biasem (sprawdzone krzyżowo względem niezależnego integratora AccelModel) i błędem współczynnika skali w wartość dryfu pozycji w czasie holdover — inercyjny bliźniak holdover zegara. Silnik oceny odporności dostosowany do ram (src/resilience/) odwzorowuje symulowane zachowanie architektury na podwyniki dla poszczególnych wymiarów w siedmiu własnych kategoriach odporności Kshana (nie terminach DHS), dostosowanych do Resilient PNT Conformance Framework Departamentu Bezpieczeństwa Krajowego USA, a następnie bada stabilność decyzji dowolnego pojedynczego wyniku złożonego lub Poziomu dojrzałości przy sympleksie wag Dirichleta i zespole pięciu zagrożeń — niestabilność rang Kendalla-τ, częstość zmiany zwycięzcy top-1 i załamanie różnorodności trybu wspólnego (Hill-N2), z raportem zapewnienia z haszem integralności (35 ręcznie wyprowadzonych testów wyroczni). Odtwarzalne przez cargo run --example resilience_report; syntetyczne architektury MODELLED, samoocena dostosowana do RPCF v2.0, nie certyfikacja. Zob. docs/RESILIENCE-CROSSWALK.md. |
| Pasywna geolokalizacja RF | Geolokalizacja emitera TDOA/FDOA (różnica czasów / częstotliwości przybycia; src/geolocation.rs) — lokalizowanie zagłuszacza lub spoofera (albo źródła okazjonalnego dla reverse-PNT) z hiperboloid różnicy czasów przybycia w sieci odbiorników, rozwiązywanych metodą najmniejszych kwadratów Gaussa–Newtona; dodanie różnicy częstotliwości przybycia przy ruchomych odbiornikach pozwala łącznie odtworzyć położenie i prędkość emitera, z ograniczeniem Cramér–Rao dla kowariancji położenia wyprowadzonym z geometrii sieci. MODELLED (wyrocznie spójności wewnętrznej: przejścia w przód→wstecz, tożsamość J·CRLB = I, monotoniczność GDOP i estymator osiągający własne CRLB w Monte Carlo) — model źródła punktowego w linii widzenia, bez wielodrogowości / NLOS (bez linii widzenia), biasu zegara odbiornika i członów refrakcji. |
| Sygnał nawigacyjny i śledzenie kodu | Poziom sygnału między budżetem łącza a dziedziną pomiaru (src/navsignal.rs): widmowe gęstości mocy (PSD) o jednostkowym polu dla BPSK-R(n) (binarna modulacja fazy z chipami prostokątnymi) i sine-BOC(m,n) (binarna nośna z przesunięciem); współczynnik rozdzielenia widmowego (SSC) κ = ∫ G_s·G_i df, który wyprowadza współczynnik przeciw zagłuszaniu Q używany w modelu zagłuszania (Q = 1/(R_c·κ)) z rzeczywistych widm sygnału i zagłuszacza zamiast reprezentatywnej stałej; szerokość pasma RMS (Gabora) (BOC > BPSK — miara informacji odległościowej / Cramér–Rao); jitter szumu termicznego koherentnego śledzenia kodu DLL wcześnie–późno (DLL = pętla synchronizacji opóźnienia; Kaplan i Hegarty; ~poniżej metra dla C/A — kodu zgrubnego/akwizycyjnego GPS — przy 45 dB-Hz); oraz obwiednia błędu wielodrogowości (koherentny EML, wcześnie-minus-późno — tłumienie korelatora wąskiego). Sprawdzone względem zamkniętych punktów odniesienia (samo-SSC BPSK = 2/(3·R_c), PSD o jednostkowym polu, jitter C/A poniżej metra). To analiza osiągów sygnału, nie projekt sprzętu anteny / ładunku RF (rola partnera od ładunku). |
| Interoperacyjność | Wczytywanie efemeryd nadawanych wielu GNSS w RINEX-3 (GPS, Galileo, QZSS — japoński Quasi-Zenith Satellite System —, BeiDou MEO/IGSO — średnia orbita okołoziemska / nachylona orbita geosynchroniczna — wg IS-GPS-200, specyfikacji interfejsu GPS; GLONASS, rosyjski Global Navigation Satellite System, wg PZ-90 — rosyjskiego układu Parametry Zemli 1990 — z wektorem stanu RK4) użyteczne jako źródło konstelacji (RINEX na wejściu, geometria PNT na wyjściu); parser obserwacji RINEX-3 (pseudoodległość, faza nośnej, Doppler, siła sygnału; układ obserwacji 4,00 powinien się parsować, ale nie jest przetestowany, a pliki nawigacyjne RINEX 4 są odrzucane z nazwy zamiast błędnie dekodowane), który teraz zasila solver pozycjonowania jednopunktowego (SPP) (pvt) — rzeczywiste obserwacje kodowe na wejściu, rzeczywista pozycja odbiornika na wyjściu, sprawdzone na danych IGS; czytnik/zapisywacz precyzyjnych efemeryd SP3-c/d z interpolacją Lagrange'a 9. rzędu; oraz eksport CCSDS OEM 2,0 + OMM (Orbit Mean-elements Message) dla narzędzi dynamiki lotu (GMAT, Orekit, STK — Systems Tool Kit); oraz parsowanie i emisja komunikatów danych śledzenia CCSDS-TDM (503) dla radiometrycznego śledzenia w głębokiej przestrzeni. |
| Analiza misji (inżynieria systemów) | Budżety projektowe misji pierwszego rzędu, każdy jako uruchamialny rodzaj: dwuciałowa geometria startu i wznoszenia (launch-window — azymut startu sin Az = cos i/cos lat, minimalna inklinacja, premia z rotacji Ziemi, Δv zmiany płaszczyzny typu dogleg, dzienne okazje; src/launch.rs); korytarz balistycznego wejścia w atmosferę Allena–Eggersa (reentry — maksymalne opóźnienie, prędkość/wysokość przy maksymalnym przeciążeniu, prędkość przy maksymalnym nagrzewaniu; src/reentry.rs); geometria pokrycia obserwacji Ziemi (eo-coverage — pas obserwacji / nadirowy GSD (rozmiar próbki na gruncie) / dostęp poza nadirem / rewizyta przez trójkąt kosmiczny SMAD (Space Mission Analysis and Design); src/eo_payload.rs); 3-DOF budżet błędów orientacji i wskazywania (trzy stopnie swobody; attitude-budget — najgorszy przypadek momentu gradientu grawitacji + budżet wskazywania RSS (pierwiastek z sumy kwadratów); src/attitude_budget.rs); predykcja przelotów nad stacją naziemną (passes — AOS/TCA/LOS, uzyskanie sygnału / czas najmniejszego zbliżenia / utrata sygnału, maksymalna elewacja, czas dostępu; src/passes.rs); oraz jednokierunkowy budżet łącza według równania łącza CCSDS 401 / DSN 810-005 (standard częstotliwości radiowych i modulacji CCSDS / podręcznik projektowania łączy Deep Space Network; link-budget — FSPL (tłumienie w wolnej przestrzeni), C/N₀, Eb/N₀ (stosunek energii na bit do gęstości szumu), margines, domknięcie; src/linkbudget.rs). Analityczne budżety pierwszego rzędu MODELLED — warstwa przedsprzętowa pod STK/GMAT/Basilisk, nie zamiennik 6-DoF ani radiometryczny. |
| Analiza decyzji i kompromisy (MCDA) | Pełny zestaw wielokryterialnej analizy decyzji (MCDA) (src/mcda/) obejmujący wszystkie cztery rodziny metod — agregację wartości (WSM, WPM, WASPAS — model sumy ważonej, model iloczynu ważonego, ważona zagregowana ocena sumy i iloczynu), odległość do ideału (TOPSIS, Technique for Order of Preference by Similarity to Ideal Solution), programowanie kompromisowe (VIKOR, od serbskiego określenia optymalizacji wielokryterialnej i rozwiązania kompromisowego) oraz metody przewyższania (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I, od francuskiego określenia eliminacji i wyboru wyrażającego rzeczywistość), a także oparte na systemie współczynników MOORA (Multi-Objective Optimization on the basis of Ratio Analysis) i proporcjonalne COPRAS (Complex Proportional Assessment) — z ważeniem priorytetów metodą porównań parami AHP (Analytic Hierarchy Process) (współczynnik spójności), niezdominowanym frontem Pareto, analizą wrażliwości wag oraz wieloatrybutową oceną użyteczności. Dziewięć agregatorów odtwarza niezależne biblioteki zewnętrzne pymcdm (WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II) i pyDecision (ELECTRE I, COPRAS) do < 1e-9, a wektor priorytetów AHP i współczynnik spójności zgadzają się z tablicą Random-Index Saaty'ego i głównym eigensolverem SciPy/LAPACK do < 1e-9 (tests/mcda_*_reference.rs). VALIDATED — warstwa decyzyjna pod silnikiem badań kompromisów. |
| Środowisko kosmiczne | Model środowiska pogody kosmicznej (space-weather, src/space_weather.rs): wskaźniki aktywności słonecznej (F10.7 / F10.7a uśrednione centrowanym oknem 81 dni — strumień radiowy Słońca 10,7 cm) i geomagnetycznej (Kp, planetarny indeks K, z definicyjną tabelą Kp↔ap — ap to jego liniowa amplituda planetarna), napędzana nimi temperatura egzosferyczna Jacchii-1971 (sprawdzona względem opublikowanych wartości minimum/średniej/maksimum słonecznego) oraz gęstość neutralna termosfery skorygowana o aktywność w porównaniu ze statyczną na danej wysokości — zależność gęstości od cyklu słonecznego, której pomija statyczna atmosfera USSA76 (US Standard Atmosphere 1976). MODELLED: skalibrowane sprzężenie wysokości skali pierwszego rzędu, nie atmosfera (NRLMSISE — model egzosfery z radarem rozpraszania niespójnego US Naval Research Laboratory Mass Spectrometer and Incoherent Scatter Radar) sprawdzona na danych. |
| Ocena i kompromis uczenia maszynowego | Stanowisko oceny detekcji zakłóceń RF (impairment-eval, src/impairment_eval.rs): oznaczony, oparty na parametrach syntetyczny korpus (nominalny / zagłuszanie / spoofing czasu / spoofing pozycji / wielodrogowość), niezależna od detektora uprząż ROC/AUC (charakterystyka operacyjna odbiornika / pole pod krzywą) oceniająca dowolny detektor (energy | agc | sqm | parity | fused) z Pd dla każdej klasy (prawdopodobieństwo detekcji) przy docelowym Pfa (prawdopodobieństwo fałszywego alarmu) oraz luka optymizmu między danymi z rozkładu a spoza rozkładu (tryb przesunięcia rozkładu). Ponadto kompromis PNT kwantowe vs klasyczne (quantum-trade, src/quantum_trade.rs) określający ilościowo korzyść z holdover czasu/inercyjnego kandydującego zegara z krzywej zmierzonego ADEV względem punktu odniesienia klasycznego, z zastrzeżeniem progu długiego τ dołączonym do artefaktu oraz obwiednią odporności bez GNSS w funkcji czasu. Metryki oceny (AUC / macierz pomyłek / Pd-Pmd, Pmd to prawdopodobieństwo niewykrycia) są sprawdzone co do dokładnego odtworzenia względem scikit-learn 1.9.0 — w tym na rzeczywistej telemetrii ESA OPS-SAT (zbiór wykrywania anomalii OPSSAT-AD, Ruszczak i in. 2025, CC BY 4,0 — Creative Commons Attribution 4,0), gdzie ROC AUC Manna–Whitneya w Kshana odtwarza roc_auc_score ze scikit-learn do < 1e-9 na wydzielonym podziale testowym, a przejrzysty detektor liczby pików oddziela oznaczone anomalie przy AUC ≈ 0,85 (tests/opssat_ad_reference.rs) — oraz liczbowe jądra silnika kompromisów (dopasowanie ADEV NNLS — nieujemne najmniejsze kwadraty —, pasma spójności χ², van-Loan Q zegara) względem scipy 1.17.1; liczby korzyści urządzeń zbudowane na tym pozostają MODELLED charakterystykami operacyjnymi — nigdy danymi terenowymi/IQ (próbki fazy i kwadratury), bez werdyktu dobry/zły. Na bazie stanowiska głębsze badanie luki optymizmu (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) ocenia panel 13 detektorów (energy/AGC/SQM/parity oraz detektory z regresją logistyczną z ziarnem i jednowarstwowym MLP — perceptronem wielowarstwowym), dopasowuje prawa skalowania dla danych z rozkładu i spoza rozkładu z hipotezą zerową permutacyjną oraz uczy predyktora leave-one-out degradacji poza rozkładem ze statystyk z rozkładu (cargo run --example optimism_study). Front-end odbiornika definiowanego programowo (src/sdr.rs — surowe IQ/IF (częstotliwość pośrednia) → odczepy korelatora wcześnie/punktualnie/późno → SQM) i adaptery wczytywania rzeczywistych danych (src/realdata/ — RINEX, u-blox UBX (protokół binarny u-blox), GnssLogger, JammerTest, Yunnan, SatGrid) pozwalają tym samym detektorom działać na nagraniach dostarczonych lokalnie (żadne zbiory danych nie są zatwierdzone w repozytorium). Mapa punktu przecięcia odporności kwantowej i klasycznej przy niepewności parametrów (src/crossover.rs; cargo run --bin crossover_study) regeneruje badania punktu przecięcia inercyjnego i zegarowego stojące za wykresami wyników. |
| Demonstrator PNT z wykorzystaniem kwantowym | Trzy uruchamialne obszary zastosowań MODELLED za otwartym silnikiem, z których każdy emituje uczciwy TradeEvidence + zapis reprezentatywności / luk do lotu (src/representativeness.rs): zaufany kwantowy transfer czasu (quantum-time-transfer, src/timetransfer_chain.rs — kompletny budżet zegar optyczny na sieci + łącze fotoniczne vs CSAC (atomowy zegar w skali chipa) + dwudrogowe RF, z ponownie użytym poziomem ochrony czasu, wskaźnikiem jakości bezpieczeństwa wobec ataku opóźnienia/odtwarzania (1 − P_md) oraz detekcją anomalii zegara + opóźnieniem CUSUM); nawigacja kwantowa bez GNSS (quantum-gnss-free-nav, src/quantum_nav_od.rs — lot bezwładny interferometru zimnych atomów vs INS klasy nawigacyjnej podczas przerwy GNSS, z uczciwym zaznaczeniem, że bez zewnętrznej pozycji bias akcelerometru jest nieobserwowalny, więc błąd nadal rośnie); oraz detekcja uszkodzeń/anomalii systemów kwantowych (quantum-anomaly-detect, src/quantum_faults.rs — oznaczony katalog uszkodzeń z ROC AUC z przedziałem ufności metodą bootstrap (confidence interval) z zewnętrznie sprawdzonego eval_stats i minimalnym wykrywalnym uszkodzeniem przy ustalonej częstości fałszywych alarmów). Podstawę stanowią wspólna biblioteka modeli błędów urządzeń kwantowych (src/quantum_devices.rs) oraz ujednolicona uprząż kompromisu kwantowe vs klasyczne (src/qtrade.rs). Wykorzystywane są ponownie sprawdzone jądra, na których się opierają (metryki oceny vs scikit-learn, jądra kompromisów vs scipy); liczby korzyści urządzeń zbudowane na tym pozostają MODELLED — ilustracyjne parametry urządzeń/łączy ze źródeł publicznych, modeluje klasę, bez TRL / doświadczenia lotnego / certyfikacji, bez aprobaty agencji. |
| Inżynieria oszczędna i wpływ na integralność | Soczewka ROI kosztu na pokrycie (zwrot z inwestycji) (src/frugal.rs) — koszt na jednostkę dostarczonego pokrycia dla kompromisu architektury — oraz odwzorowanie niewykrycia detekcji → wpływ na integralność (src/integrity_impact.rs), które zamienia częstość niewykryć monitora w jego udział w ryzyku integralności. Addytywne budżety wspomagające decyzje MODELLED. |
| Wymiana artefaktów | Kshana Interchange Format (KIF) (src/interchange.rs) — wersjonowana, samoopisująca się koperta opakowująca wynik scenariusza wraz z jego rodzajem, wersją schematu i etykietami MODELLED/VALIDATED, tak aby zapisany artefakt pozostawał samodokumentujący, a starsze koperty były nadal czytelne także przez nowsze wersje. |
Każda możliwość jest dostępna jako API w Rust, uruchamialny scenariusz kind lub jedno i drugie. Dojrzałość każdej możliwości — sprawdzona, uruchamialna lub biblioteczna — jest śledzona w docs/CAPABILITY.md. Sprawdzana maszynowo macierz weryfikacji (src/verification.rs) przedstawia odsyłacze wymaganie → moduł → test → wyrocznia → status, z testowanymi jednostkowo niezmiennikami uczciwości, które dopuszczają etykietę sprawdzone tylko tam, gdzie wspiera ją niezależna zewnętrzna wyrocznia — oraz które odnotowują możliwości sprzętowe/PA (zapewnienie produktu), których Kshana celowo nie zapewnia.
Cztery pakiety czujników w pierwotnej publikacji (wyniki)
Wyniki#
Każdy scenariusz porównuje czujnik kwantowy z jego klasycznym odpowiednikiem w ciągu ~1,8 h przerwy GNSS. Liczby są odtwarzalne (scenario + seed + version).
Co dają czujniki kwantowe, gdy brakuje GNSS — clock-holdover · ziarno 42 · narysowane w silniku 0.40.0, a każda powyższa wartość jest ponownie sprawdzana względem bieżącego silnika przy każdej kompilacji przez tests/published_figures_still_reproduce.rs · SVG
Przewaga zależy od czasu przerwy i drgań, z jawnym punktem równowagi, w którym wygrywa klasyczne — pokazana uczciwie na drabinie gotowości technologicznej (wartości zegarów optycznych to cele demonstratorów naziemnych; żaden optyczny zegar strontowy nie poleciał w kosmos):
Punkt przecięcia odporności kwantowej i klasycznej — drabina TRL holdover zegara (góra) · mapa przewagi inercyjnej z konturem punktu równowagi (dół). Do ponownego wygenerowania przez cargo run --release --bin crossover_study.
Błąd pozycji w nawigacji zliczeniowej podczas przerwy GNSS: czujnik kwantowy (niebieski) pozostaje płaski blisko specyfikacji; czujnik klasyczny (czerwony) rozbiega się do dziesiątek kilometrów. Wygenerowane przez Kshana z scenarios/imu-deadreckoning.toml.
| Pakiet | Scenariusz | Kwantowy | Klasyczny |
|---|---|---|---|
| 1 — Holdover zegara | clock-holdover.toml (specyfikacja 20 ns) |
zegar optyczny wytrzymuje całą przerwę | CSAC przekracza specyfikację w środku przerwy |
| 2 — Nawigacja zliczeniowa inercyjna | imu-deadreckoning.toml (specyfikacja 100 m) |
zimnoatomowy: ~41 m, wytrzymuje całą przerwę | klasy nawigacyjnej: przekracza w ~350 s → dziesiątki km |
| 3 — Transfer czasu (optyczne łącze międzysatelitarne) | timetransfer.toml |
optyczny: odległościowanie ~0,3 mm | RF (TWSTFT): odległościowanie ~150 mm |
| 4 — Fuzja hybrydowa (zwieńczenie) | hybrid-pnt.toml |
pełna pozycja + czas przez całą przerwę | ograniczone pozycją przy ~350 s |
Zwieńczenie pokazuje tezę o fuzji: optyczny międzysatelitarny transfer czasu utrzymuje w synchronizacji nawet klasyczny zegar, co izoluje czujnik inercyjny jako słabe ogniwo zestawu klasycznego — czyli kwantowy czujnik inercyjny i optyczny pomiar czasu razem.
Holdover zegara podczas przerwy GNSS: zegar optyczny (niebieski) pozostaje w specyfikacji 20 ns przez cały lot bezwładny; zegar w skali chipa (czerwony) przekracza ją w trakcie. Wygenerowane przez Kshana z scenarios/clock-holdover.toml.
Kolejny scenariusz, orbit-gnss-challenged.toml, wyprowadza dostępność GNSS z geometrii orbitalnej, a nie z ręcznie zapisanych okien: statek kosmiczny wewnątrz powłoki GNSS jest propagowany względem konstelacji Walkera podobnej do GPS, a liczba widocznych satelitów (linia widzenia, przesłonięcie przez Ziemię, maska elewacji) ustala stan pozycji w każdym kroku. W ciągu doby użytkownik ma pozycję tylko przez ~59% czasu; zegar kwantowy utrzymuje rozwiązanie czasu 5 ns przez każdą lukę (dostępność 1.0), a zegar w skali chipa tylko ~0.83.
Błąd czasu w ciągu doby przy dostępności GNSS wyprowadzonej z geometrii orbitalnej: liczba widocznych satelitów (linia widzenia, przesłonięcie przez Ziemię, maska elewacji) ustala stan pozycji w każdym kroku, więc zegar musi przetrwać każdą lukę — zegar optyczny utrzymuje specyfikację 5 ns, a zegar w skali chipa ją przekracza. Wygenerowane przez Kshana z scenarios/orbit-gnss-challenged.toml.
Konstelację można też podać jako rzeczywiste zestawy elementów dwuwierszowych (TLE). Pełny TLE (wiersz 1 + wiersz 2) jest propagowany pełnym modelem SGP4/SDP4 — w tym z oporem atmosferycznym oraz członami rezonansowymi księżycowo-słonecznymi w głębokiej przestrzeni i 12 h / 24 h, które mają znaczenie dla orbit GNSS o okresie ~12 h — sprawdzonym względem oficjalnych wektorów AIAA 2006-6753 do najgorszego przypadku ≈ 4 mm. scenarios/orbit-sgp4-gps.toml zawiera rzeczywistą migawkę Celestrak gps-ops operacyjnej konstelacji GPS (2021-07-28, 30 satelitów) i wymaga poprawnych sum kontrolnych TLE — zestawy elementów dwuwierszowych to otwarte dane z katalogu US Space Force / 18th Space Defense Squadron, redystrybuowane przez Celestrak (dr T. S. Kelso, celestrak.org); odśwież poleceniem scripts/fetch_tles.sh. Blok tylko z wierszem 2 zachowuje analityczną propagację dwóch ciał (scenarios/orbit-real-tle.toml); obie formy można mieszać w jednej konstelacji. Konstelację można równie dobrze zbudować z bloku rekordów efemeryd nadawanych GPS w RINEX-3 — formacie, który dekoduje odbiornik — propagowanych algorytmem użytkownika IS-GPS-200 i podanych na wejście tej samej geometrii (scenarios/orbit-rinex.toml).
Czym jest, a czym nie jest, w pełnej formie
Czym jest, a czym nie jest#
Jest to: deterministyczny silnik o niewielkiej liczbie zależności, obejmujący cały stos PNT — geometrię orbit, nawigację inercyjną, fuzję GNSS/INS, integralność, zegary i czas. Uruchamia scenariusz (często przerwę GNSS), rozwija skalibrowane modele błędów czujników przez odpowiedni estymator i ocenia wynik względem operacyjnych wskaźników jakości — emitując odtwarzalny wynik JSON (JavaScript Object Notation) i wykres SVG, z biblioteki Rust, interfejsu wiersza poleceń (CLI), rozszerzenia Pythona, modułu WebAssembly w przeglądarce, serwera Model Context Protocol (MCP) dla agentów AI lub wtyczki do środowisk JetBrains IDE (zintegrowane środowisko programistyczne).
Nie jest to: sprzęt lotniczy, projekt ładunku kwantowego, pełny odbiornik sygnałów GNSS, symulator sygnałów radiowych (RF) ani stanowisko hardware-in-the-loop, ani certyfikowany produkt awioniczny — i nie zastępuje MATLAB/Simulink, STK (Systems Tool Kit) ani Orekit; działa obok nich i wymienia z nimi pliki. Wierność sprzętu kwantowego pochodzi z opublikowanych modeli błędów, a nie z tego narzędzia. Szczegółową dojrzałość każdej możliwości opisano w docs/CAPABILITY.md.
Nie jest to (jeszcze): pełny silnik fizyki interferometrii atomowej (większość czujników kwantowych korzysta z opublikowanych współczynników Allana/budżetu szumów; akcelerometr CAI (interferometr zimnych atomów) ma warstwę z pierwszych zasad — faza Macha–Zehndera, szum projekcji, zanik kontrastu i sprzężenie drgań, a także systematyka Coriolisa i przesunięcia świetlnego — ale systematyka czoła fali i rozwiązywanie niejednoznaczności prążków pozostają warstwą planu rozwoju P2 (faza 2 planu, warstwa fizyki kwantowej), zob. ROADMAP.md i docs/QUANTUM-MODELS.md); certyfikowany ani sprzętowy odbiornik GNSS (rozwiązuje jednopunktową pozycję PVT (pozycja, prędkość i czas) z rzeczywistych obserwacji kodowych RINEX (Receiver Independent Exchange Format) — sprawdzoną na rzeczywistych danych IGS (International GNSS Service) — a jego warstwa IQ (kshana iq, od 0.31.0) programowo wykonuje akwizycję i śledzenie zarejestrowanych lub wygenerowanych próbek pasma podstawowego, jako odbiornik analityczny: nie steruje sprzętem radiowym ani niczego nie nadaje, nie jest certyfikowanym odbiornikiem i nie wykonuje pozycjonowania na fazie nośnej (RTK ani PPP)); ani pełny zestaw do projektowania misji (ma elementy składowe Lambert / porkchop / manewr / wyznaczanie orbity, ale jest warstwą symulacji osiągów nad GMAT (General Mission Analysis Tool)/Orekit, a nie ich zamiennikiem). Wyznaczenie tego zakresu jest celowe. Jeśli potrzebne są budżety błędów interferometru zimnych atomów z pierwszych zasad (np. klasy CARIOQA-PMP — Cold Atom Rubidium Interferometry in Orbit for Quantum Accelerometry, Pathfinder Mission Preparation — lub walidacja w stylu X-37B), zob. plan P2 i skontaktuj się, aby podjąć współpracę.
Nawigacja z niskiej orbity okołoziemskiej#
Satelity na niskiej orbicie okołoziemskiej (LEO) przelatują szybko i głośno. Rodzaj leo-pnt-chain śledzi jeden system przez każdy etap: sygnał, przelot i jego łącze, komunikat nawigacyjny oraz połączone rozwiązanie pozycji, prędkości i czasu (PVT) i precyzyjne pozycjonowanie punktowe (PPP). Każdy etap przekazuje swoje liczby następnemu. Zob. docs/LEO-PNT.md.
Każdy rodzaj scenariusza według rodziny#
Rodzaje scenariuszy silnika, uporządkowane w rodziny. Każda rodzina ma stronę z jednym wpisem na rodzaj (opis i pola silnika, przykładowe polecenie, główne liczby z przebiegu, wiersze macierzy weryfikacji, które go wymieniają, oraz wykres zapisywany przez sam silnik) i arkusz poglądowy tych wykresów; docs/KINDS.md indeksuje je wszystkie. Tabelę zapisuje tools/gen_readme_blocks.py, a strony tools/gen_kinds_index.py, i oba narzędzia kończą się niepowodzeniem, jeśli silnik zyska rodzaj, którego nie wymienia żadna rodzina.
| Rodzina | Na co odpowiada | Rodzaje | Uruchom jeden |
|---|---|---|---|
| Zegary, synchronizacja czasu i holdover | jak długo zegar utrzymuje czas bez GNSS i jak system czasu radzi sobie względem swoich masek | clock, sweep, sweep-nd, telecom-timing, slot-timing, timetransfer, time-transfer-budget, holdover-test, quantum-time-transfer |
kshana scenarios/clock-holdover.toml |
| Czujniki inercyjne, fuzja i czujniki kwantowe | nawigacja zliczeniowa i fuzja czujników podczas przerwy GNSS, z czujnikami klasycznymi i kwantowymi | inertial, hybrid, fusion, hybrid-ukf, gnss-ins, ins-trn-coast, quantum-gnss-free-nav, quantum-anomaly-detect, quantum-trade |
kshana scenarios/gnss-ins.toml |
| Alternatywne PNT w warunkach braku GPS | nawigowanie z grawitacji, terenu i innych pól, gdy brakuje GNSS | gravity-map, terrain-nav, terrain-slam, combined-altpnt, conflict-resilience |
kshana scenarios/combined-altpnt.toml |
| Konstelacje, pokrycie i geometria | gdzie są satelity, kto je widzi i jak dobra jest geometria, wokół Ziemi, Księżyca lub Marsa | orbit, ephemeris, constellation-design, solar-system, body-pnt, mars-pnt, passes |
kshana scenarios/orbit-gnss-challenged.toml |
| Pomiary GNSS, pozycjonowanie i integralność | pseudoodległości, pozycje, poziomy ochrony i środowisko kosmiczne | integrity, gnss-sim, pvt, araim-reference-check, space-weather, realtime-frame-eop |
kshana scenarios/integrity-raim.toml |
| Zagłuszanie (jamming), spoofing i widmo | jak zakłócenia docierają do odbiornika i czy są wykrywane | jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval |
kshana scenarios/jamming-demo.toml |
| Nawigacja z niskiej orbity okołoziemskiej | przelot, łącze, komunikat nawigacyjny i połączone rozwiązanie pozycji, etap po etapie | leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain |
kshana scenarios/leo-pnt-end-to-end.toml |
| Księżycowe i cislunarne | nawigacja, czas, układy odniesienia i geodezja na Księżycu | 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 |
| Nawigacja użytkownika w przestrzeni kosmicznej | sygnały GNSS dla statków kosmicznych nad orbitami GNSS, wokół nich i poza nimi | gnss-ssv |
kshana scenarios/gnss-ssv-shell.toml |
| Optyczne PNT | łącza optyczne przez atmosferę oraz wskaźniki jakości optyczne plus RF | optical-atmosphere, hybrid-optical-rf |
kshana scenarios/optical-atmosphere-network.toml |
| Analiza misji, łącza i operacje kosmiczne | start, wznoszenie, wejście w atmosferę, orientacja, łącza, planowanie kontaktów i formaty plików | 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 |
| Wątki misji | budżet błędu nawigacji i czasu łańcucha faz od startu do wejścia w atmosferę | mission-thread |
kshana scenarios/mission-thread-artemis-class.toml |
| Kampanie | misje łańcuchowe, przeglądy i zespoły zbudowane z innych rodzajów | campaign |
kshana scenarios/campaign-jam-spoof-holdover-integrity.toml |
Każde polecenie#
kshana <scenario.toml> uruchamia scenariusz; każde inne polecenie jest podpoleceniem, a kshana --help wypisuje sposób użycia wszystkich. Polecenia to --study, --validate, kinds, example, receiver-trust (z live i 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 i skyline. docs/COMMANDS.md podaje przeznaczenie każdego z nich, zweryfikowany przykład i jego stronę w dokumentacji.
Każda powierzchnia#
Jeden silnik, te same wyniki wszędzie: wiersz poleceń, biblioteka Rust, Python, JavaScript i WebAssembly, serwer MCP z poleceniami wtyczek i umiejętnościami, Kshana Studio (każda strona działa w przeglądarce, bez instalacji, nic nie jest wysyłane), integracje ROS 2, Signal K, OpenCPN, GNSS-SDR i gnss_lib_py, zestawy wdrożeniowe systemd, Docker i Grafana oraz wtyczka JetBrains. docs/ALL-SURFACES.md wymienia je wraz ze sposobem uzyskania każdego oraz nazwami wszystkich poleceń wtyczek, umiejętności i stron Studio; docs/SURFACES.md podaje dla każdego polecenia i rodzaju, która powierzchnia go obsługuje, a która nie, wraz z powodem.
Jak działa przebieg#
Scenariusz to plik TOML (Tom's Obvious, Minimal Language): rodzaj, ziarno i parametry. Silnik go uruchamia i zapisuje obok wynik, wykres i raport oraz zażądane eksporty.
Ten dołączony scenariusz trwa 2 h: 10 min z GNSS, a potem około 1,8 h bez GNSS. Pyta, jak długo optyczny zegar na sieci strontowej i atomowy zegar w skali chipa (CSAC) utrzymują czas w granicach 20 ns.
kshana example clock-holdover > clock-holdover.toml
kshana clock-holdover.toml
scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote clock-holdover.result.json, clock-holdover.chart.svg, clock-holdover.report.html, and clock-holdover.report.json
Zegar optyczny utrzymuje budżet 20 ns przez całą przerwę 6600 s; CSAC utrzymuje go przez 2610 s i mieści się w budżecie przez 95,6% przebiegu wobec 100% dla zegara optycznego. kshana example wymienia każdy dołączony scenariusz.
Misje#
Dziesięć sektorów zadaje dziesięć różnych pytań temu samemu silnikowi. Każdy ma dołączone scenariusze na początek.
| Sektor | Zacznij od |
|---|---|
| Obronność i bezpieczeństwo | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Kosmos, orbita okołoziemska | orbit-gnss-challenged, leo-pnt-end-to-end |
| Księżyc, Mars i głęboka przestrzeń | lunar-relay-constellation, mars-orbit-pnt |
| Lotnictwo i drony | small-uas-jammed-nav, araim-gps-galileo |
| Morskie | maritime-strait-jamming, maritime-port-approach-coast |
| Drogi | automotive-urban-canyon |
| Kolej | rail-tunnel-coast |
| Infrastruktura krytyczna i czas | clock-holdover, clock-ensemble |
| Telekomunikacja i 5G (piąta generacja sieci komórkowych) | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Nauka i badania | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Pytanie, które zadaje każdy sektor
| Sektor | Pytanie, które zadaje | Zacznij od |
|---|---|---|
| Obronność i bezpieczeństwo | Jak długo nasza nawigacja i czas pozostają wiarygodne w warunkach zagłuszania i spoofingu i które warstwy utrzymują nas w specyfikacji? | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Kosmos: orbita okołoziemska | Czy mój statek kosmiczny widzi dość satelitów nawigacyjnych, jak długo jego zegar utrzymuje czas między pozycjami i co dodałaby warstwa nawigacyjna na niskiej orbicie? | orbit-gnss-challenged, leo-pnt-end-to-end |
| Księżyc i głęboka przestrzeń | Czy lądownik, łazik lub orbiter przy Księżycu, przy Marsie lub dalej uzyska wiarygodną pozycję i czas? | lunar-relay-constellation, mars-orbit-pnt |
| Lotnictwo i drony | Gdy zagłuszacz odbierze GNSS, jak długo mój bezzałogowy system powietrzny (UAS) mieści się w budżecie pozycji i czy integralność jest dostępna na mojej trasie? | small-uas-jammed-nav, araim-gps-galileo |
| Morskie | Jak daleko nad wodą sięga zagłuszacz, czy przesunięcie pozycji zostałoby wykryte i jak długo statek może dryfować do portu? | maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast |
| Drogi i motoryzacja | Jak daleko dryfuje samochód pod wiaduktem lub obok przydrożnego zagłuszacza? | automotive-urban-canyon |
| Kolej | Ile sekund po wjeździe do tunelu pociąg nadal potrafi stwierdzić, na którym torze się znajduje? | rail-tunnel-coast |
| Infrastruktura krytyczna i czas | Jeśli czas GNSS zostanie utracony lub sfałszowany, jak długo sieć energetyczna, giełda lub centrum danych utrzymują identyfikowalny czas? | clock-holdover, clock-ensemble |
| Telekomunikacja i 5G | Jeśli zostanie utracone odniesienie czasu GNSS, czy zegar mojej sieci mieści się w maskach ITU-T i jak długo? | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Nauka i badania | Czy mogę odtworzyć, rozszerzyć i zacytować wynik PNT, aż do ziarna? | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Dowody#
176 z 401 możliwości sprawdzono względem niezależnych wyroczni zewnętrznych; 221 uczciwie oznaczono jako obliczone z modelu. Każdy wiersz macierzy weryfikacji wymienia możliwość, wyrocznię, względem której jest sprawdzana, test, który wykonuje sprawdzenie, i etykietę, która z tego wynika. Ciągła integracja (CI) uniemożliwia nazwanie możliwości VALIDATED bez niezależnej wyroczni zewnętrznej.
| Etykieta | Wiersze | Znaczenie |
|---|---|---|
| VALIDATED | 176 | niezależna wyrocznia zewnętrzna się zgadza: rzeczywiste dane, niezależna implementacja lub opublikowane wektory referencyjne |
| MODELLED | 221 | sprawdzone względem prawdy analitycznej lub samospójności symulacji i powiedziane wprost |
| PARTNER | 4 | odpowiada za to partner sprzętowy; Kshana nie ma dla tego wyroczni |
Kilka z kontroli: wszystkie 666 wektorów AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 SGP4 (Simplified General Perturbations 4) do 4,12 mm; model sił Cowella do 0,08 m względem Orekit 12,2; Galileo do 0,61 m i Swarm-A do 0,10 m względem rzeczywistych precyzyjnych efemeryd Europejskiej Agencji Kosmicznej (ESA). Testy obejmują około 95 % pokrycia linii src/, z progiem 85 % w CI. Rejestr (ledger) to docs/VERIFICATION-MATRIX.md, generowany z src/verification.rs: pełna macierz 401 wierszy oraz powód, dla którego każdy wiersz obliczony z modelu nie ma zewnętrznej wyroczni, w docs/MODELLED-RATIONALE.md.
Jak działa walidacja, wyselekcjonowana tabela najważniejszych wyników i wykresy dowodowe
Walidacja, odtwarzalność i uczciwość#
- Każdy człon szumu jest skalibrowany do opublikowanej, cytowanej wartości i sprawdzony względem standardowej zależności (odchylenie Allana dla zegarów; wzrost błędu nawigacji zliczeniowej wg Grovesa dla inercyjnych; przeliczenie czasu na odległość dla transferu czasu). Status każdego członu jest śledzony w
docs/VALIDATION.mdjakovalidatedlubnot modeled— nic nie jest przedstawiane jako sprawdzone, jeśli nie jest. - Odtwarzalne z założenia:
scenario + seed + engine version → identical bits.scripts/check-reproducible.shto wymusza; przebiegi kwantowe i klasyczne używają niezależnych ziaren, więc ich szum jest nieskorelowany. - Dojrzałość jest podana uczciwie: wartości zegarów optycznych i łączy optycznych to wyniki celów / demonstratorów naziemnych, a nie lotów.
Etykieta dowodowa przy każdej wartości#
Każda wartość i tabela zapisywana przez przebieg mówi, na ile jej ufać i na których wierszach rejestru się opiera. JSON wyniku ma klucz evidence, SVG wykresu wiersz pod wykresem (oraz element <metadata id="kshana-evidence">), a tabela CSV z przodu # evidence: wierszy komentarza (odczytywanych z comment='#'). Podaje poziom, VALIDATED, MODELLED lub PARTNER, oraz identyfikatory (VM- i osiem cyfr szesnastkowych) wierszy macierzy weryfikacji, które przebieg wykorzystał. Poziom jest najsłabszy z tych wierszy, więc przebieg opierający się na jednym wierszu obliczonym z modelu jest oznaczony MODELLED, ile by obok niego nie było wierszy sprawdzonych; etykieta nigdy nie może twierdzić więcej niż rejestr. Wiersze, statusy i identyfikatory są odczytywane z macierzy, a nie wpisywane (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), a tests/evidence_labels_doc_sync.rs kończy się niepowodzeniem, jeśli wartość nie ma etykiety lub etykieta nie zgadza się z macierzą.
Walidacja w skrócie#
Każdy wiersz jest wymuszany przez nazwany test w CI. Ta tabela to wyselekcjonowane najważniejsze wyniki; pełna, sprawdzana maszynowo macierz ma 401 wierszy — 176 VALIDATED, 221 MODELLED, 4 PARTNER (src/verification.rs), z kompletnymi dowodami (i tym, co uczciwie nie jest jeszcze sprawdzone) w docs/VALIDATION.md oraz w artefakcie kshana-validation-summary.html dla każdego wydania (generowanym przez cargo run --bin validation_report, z atestacją SLSA — Supply-chain Levels for Software Artifacts).
Kolumna Status podaje rodzaj dowodu, zgodnie z drabiną walidacji powyżej: VALIDATED = sprawdzone względem niezależnej wyroczni zewnętrznej (rzeczywiste dane, niezależna biblioteka lub opublikowane wektory referencyjne); MODELLED = sprawdzone względem prawdy analitycznej lub samospójności symulacji (bez niezależnego zewnętrznego zbioru danych). VALIDATED opisuje metodę sprawdzania, a nie zaliczenie/niezaliczenie — uczciwe niedotrafienie względem rzeczywistej wyroczni zewnętrznej pozostaje VALIDATED, natomiast porównanie, którego żaden wiersz macierzy nie wymienia jako wyroczni (dopasowanie LRO — Lunar Reconnaissance Orbiter — powyżej), jest pokazane jako MODELLED. Wiersze CI to zabezpieczenia procesu, a nie wskaźniki jakości. Kilka wysp rzeczywistych danych (mierzony zegar cezowy, Stable32 PHASE.DAT oraz kontrole OPS-SAT/ICGEM, gdzie surowe wejścia nie mają licencji na redystrybucję) jest bramkowanych danymi: test wypisuje komunikat o pominięciu i pozostaje zielony, gdy wejścia brakuje, a publiczne liczby referencyjne są zatwierdzone w tests/fixtures/. Surowe wejścia odtworzysz odpowiednim scripts/fetch_*.sh.
| Status | Możliwość | Wynik porównania | Odniesienie / wyrocznia |
|---|---|---|---|
| VALIDATED | Propagacja SGP4/SDP4 | 666/666 wektorów, najgorzej 4,12 mm | AIAA 2006-6753 (Vallado tcppver.out) + bezpośrednie porównanie z niezależną biblioteką sgp4 |
| VALIDATED | Układy odniesienia — nutacja IAU 2000A/B, łańcuch CIO IAU 2006/2000A, ERA | co do bitu (X,Y do 1e-14, s do 1e-18, ERA do 1e-12) | ERFA/SOFA eraXys06a · eraC2ixys · eraEra00 · eraNut00a/b |
| MODELLED | GCRS→ITRS względem niezależnego silnika SPICE | maks. 0.028″ → ≤ 0,86 m na powierzchni Ziemi, ≤ 3,6 m na orbicie GNSS | ANISE (czysto rustowy NAIF/SPICE), te same IERS finals2000A EOP, 8 epok 2020–2023 (porównane z tym odniesieniem; żaden wiersz macierzy weryfikacji nie wymienia go jako wyroczni zewnętrznej, więc nie jest oznaczone jako VALIDATED) |
| MODELLED | Geopotencjał EGM2008 (stopień/rząd 70) | przyspieszenie = ∇V do < 1e-6; zapadnięcie zonalne do sprawdzonego J2 | współczynniki NGA EGM2008 + analityczna tożsamość ∇V |
| VALIDATED | Synteza funkcjonałów grawitacji (mapa nawigacji wspomaganej grawitacją / bez GNSS) | GRS80 Somigliana + γ_e/γ_p do 3.5e-12; rzeczywista mapa zaburzeń EGM2008 fizyczna (RMS ≈ 26 mGal, d/o 70) | GRS80 (Moritz 1980, IAG — International Association of Geodesy) grawitacja normalna Somigliany + rzeczywiste ICGEM EGM2008 (tests/icgem_gravity_reference.rs) |
| VALIDATED | Estymatory Allana (ADEV/MDEV/TDEV/HDEV) + pasma ufności | odtwarzają odchylenia referencyjne; pasma χ² się zgadzają | NIST SP 1065 (Riley), 1000 punktów, Tabela 31/32 |
| VALIDATED | Estymatory Allana na rzeczywistym zmierzonym zegarze cezowym | OADEV/OHDEV do 1e-3 (zaobserwowano ≤ 3e-5), 16 współczynników uśredniania | Stable32 na rzeczywistym 5071A Cs vs maser wodorowy, 556 990 punktów (tests/cs5071a_reference.rs, bramkowane danymi) |
| VALIDATED | Estymatory Allana na kanonicznym Stable32 PHASE.DAT | OADEV/MDEV/TDEV do 1e-3 (zaobserwowano ≤ 5e-5), 139 współczynników uśredniania | Odchylenia referencyjne Stable32 dla PHASE.DAT (tests/phasedat_reference.rs, bramkowane danymi) |
| MODELLED | Model błędów IMU — ARW / VRW / niestabilność biasu | odtworzone do < 5 % (niestabilność biasu < 15 %) | karta katalogowa Analog Devices ADIS16465; profil referencyjny NaveGo |
| VALIDATED | Numeryczny propagator Cowella + model sił (poziomy zachowawcze) | najgorszy błąd położenia 0,08 m w ciągu 24 h, 278 epok (LEO + GTO) | Orekit 12,2 NumericalPropagator/DormandPrince853 (CS GROUP), tests/numerical_cowell_propagator_reference.rs |
| MODELLED | Poziom oporu Cowella + bezwzględne wejścia efemeryd Słońca/Księżyca i gęstości | poziom oporu scharakteryzowany ≈ 333 m / 24 h; bez perturbacji zgadza się z Keplerem w zmiennych uniwersalnych poniżej metra, energia/pęd ~1e-9 | wbudowane efemerydy niskiej dokładności + analityczny Kepler |
| MODELLED | Lambert · Ciołkowski · porkchop | przejście w obie strony do prawdy dwuciałowej; ΔV < 0.01 % | Izzo 2015 · równanie rakietowe · analityczne minimum Hohmanna |
| MODELLED | Wyznaczanie orbity (wsadowe Gaussa–Newtona) | poniżej m / mm·s⁻¹ bez szumu; ~2 m przy progu szumu 5 m | dwa ciała + J2 na łuku RK4 |
| MODELLED | Dopasowanie modelu sił do precyzyjnych efemeryd Galileo (cały łuk) | 0,61 m RMS 3D, 24 h, d/o-70, tylko siły | ESA/ESOC ESA0MGNFIN orbita końcowa (E11), rzeczywiste finals2000A EOP (porównane z tym odniesieniem; żaden wiersz macierzy weryfikacji nie wymienia go jako wyroczni zewnętrznej, więc nie jest oznaczone jako VALIDATED) |
| MODELLED | Dopasowanie modelu sił do precyzyjnych efemeryd Swarm-A (zredukowana dynamika) | 0,10 m RMS 3D (granica poziomu empirycznego, a nie miara) | ESA SW_OPER_SP3ACOM_2_ orbita precyzyjna (porównana z tym odniesieniem; żaden wiersz macierzy weryfikacji nie wymienia go jako wyroczni zewnętrznej, więc nie jest oznaczone jako VALIDATED) |
| MODELLED | Dopasowanie modelu sił do księżycowego LRO (uczciwe niedotrafienie) | 6,67 m przy zredukowanej dynamice, powyżej celu 5 m | JPL Horizons LRO (NAIF −85) + GRAIL (Gravity Recovery and Interior Laboratory) GRGM660PRIM (porównane z tym odniesieniem; żaden wiersz macierzy weryfikacji nie wymienia go jako wyroczni zewnętrznej, więc nie jest oznaczone jako VALIDATED) |
| MODELLED | OD Marsa w głębokiej przestrzeni (SRIF ze zredukowaną dynamiką) | ≈ 0,2 m Mars-LMO (wskaźnik jakości symulacji, nie rzeczywistej misji) | syntetyczne OD w pętli zamkniętej — walidacja mechanizmu estymatora |
| MODELLED | Dynamika Marsa ze Słońcem w centrum względem JPL DE440 | 137 m @ łuk 1-dobowy (rośnie z łukiem = niemodelowane n-ciał) | JPL DE440 przez ANISE (xval/anise-mars-od, bramkowane jądrem) (porównane z tym odniesieniem; żaden wiersz macierzy weryfikacji nie wymienia go jako wyroczni zewnętrznej, więc nie jest oznaczone jako VALIDATED) |
| VALIDATED | Pozycjonowanie jednopunktowe względem zmierzonej współrzędnej IGS (rzeczywiste obserwacje) | 5,7 m RMS 3D / 1,1 m poziomo, dwuczęstotliwościowy SPP z kodu wolnego od wpływu jonosfery | pomiar stacji IGS ABMF + efemerydy nadawane GPS, 2018-05-13 (tests/pvt_abmf.rs) |
| MODELLED | Ściśle sprzężony UKF GNSS/INS | 0,77 m RMS w 30-minutowym przelocie LEO z przerwą 120 s | lot bezwładny według modelu sił, wyprowadzony ręcznie |
| MODELLED | Nawigacja z mapy grawitacji bez GPS | dryf INS ~70 km → odtworzone ~145 m | cel Quantum Wayfarer w ESA NAVISP |
| MODELLED | Nawigacja odniesiona do terenu (TERCOM/SITAN) | dryf 70 km → < 500 m (próg rozdzielczości siatki ~140 m) | SRTM .hgt DEM; dryf wstrzyknięty ręcznie (kontrola nieokrężna) |
| MODELLED | Główne pole IGRF-14 (stopień/rząd 13) | biegun ~80,7°N, dipol ~29,7 µT, pasmo fizyczne 22–67 µT | IAGA (International Association of Geomagnetism and Aeronomy) igrf14coeffs.txt (półznormalizowane wg Schmidta) |
| MODELLED | Modulacja sygnału nawigacyjnego i śledzenie kodu | samo-SSC BPSK = 2/(3·R_c); PSD o jednostkowym polu; jitter DLL dla C/A poniżej metra @ 45 dB-Hz | Zamknięte punkty odniesienia SSC/PSD + wzór na szum termiczny DLL wg Kaplana i Hegarty'ego |
| MODELLED | Korektor różnicowy halo/NRHO w CR3BP | STM = różnice skończone; orbita zamyka się z dokładnością maszynową; L2 9:2 NRHO ≈ 6,57 d / peryluń ≈ 3 250 km | sprawdzenie STM różnicami skończonymi + opublikowana południowa L2 9:2 NRHO (≈ 6,56 d / ≈ 3 370 km) — CR3BP, a nie rzeczywiste efemerydy Gateway |
| MODELLED | Integralność ARAIM dla dwóch konstelacji | tryb uszkodzenia całej konstelacji na rzeczywistych GPS + Galileo | EU ARAIM TR (raport techniczny) / DO-316; Celestrak gps-ops 2021-07-28 (porównane z tym odniesieniem; żaden wiersz macierzy weryfikacji nie wymienia go jako wyroczni zewnętrznej, więc nie jest oznaczone jako VALIDATED) |
| VALIDATED | Geometria GNSS / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) | wynik zgodny do 1e-6 względnie w 8 geometriach (dobrze uwarunkowane → bliskie osobliwości) | gnss_lib_py 1.0.4 (Stanford NAV Lab) — niezależna biblioteka (tests/dop_reference.rs) |
| VALIDATED | Metryki oceny detektorów ML (AUC/ROC/macierz pomyłek/Pd-Pmd/precyzja/F1) | dokładne liczności + < 1e-9 dla 5 zbiorów danych × 24 progów | scikit-learn 1.9.0 (Pedregosa i in., JMLR — Journal of Machine Learning Research — 2011) — niezależna biblioteka (tests/eval_metrics_reference.rs) |
| VALIDATED | ROC AUC wykrywania anomalii na rzeczywistej telemetrii ESA OPS-SAT | AUC odtwarza scikit-learn do < 1e-9; AUC detektora liczby pików ≈ 0.85 na oznaczonym podziale testowym | roc_auc_score ze scikit-learn na podziale testowym OPSSAT-AD (Ruszczak i in. 2025, CC BY 4,0) — rzeczywista telemetria OPS-SAT (tests/opssat_ad_reference.rs) |
| VALIDATED | Liczbowe jądra kompromisu kwantowego (dopasowanie ADEV NNLS · pasma spójności χ² · van-Loan Q zegara) | NNLS + Q dokładnie; χ² < 5e-4 przy operacyjnych stopniach swobody ≥ 48 | scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm (tests/scipy_reference.rs) |
| VALIDATED | Telekomunikacyjne metryki wandrowania MTIE / MDEV / TDEV (ITU-T G.810/G.823/G.8261/G.811 — zalecenia Sektora Normalizacji Telekomunikacji Międzynarodowego Związku Telekomunikacyjnego) | MTIE (9 współczynników uśredniania, co do bitu) oraz MDEV + TDEV (8 współczynników, względnie < 1e-9) na serii LCG (liniowy generator kongruencyjny) NIST SP 1065 | allantools 2024,06 mtie / mdev / tdev — niezależna biblioteka (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs) |
| VALIDATED | Metody badań kompromisów MCDA — wszystkie cztery rodziny decyzyjne, dziewięć zewnętrznie sprawdzonych agregatorów (WSM · WPM · WASPAS · MOORA · COPRAS · TOPSIS · VIKOR · PROMETHEE II · ELECTRE I) plus ważenie priorytetów metodą porównań parami AHP | wyniki / rankingi / macierze uzgodnień odtworzone do < 1e-9 | pymcdm + pyDecision (niezależne biblioteki MCDA stron trzecich) + Saaty RI (Random Index) / eig SciPy-LAPACK (tests/mcda_*_reference.rs) |
| VALIDATED | Obwiednia Dopplera LEO z orbity i nośnej | Iridium maksymalnie w granicach 5 % opublikowanych ±36 kHz; Xona Pulsar X1 w granicach opublikowanych 32–34 kHz | wyniki testów RNTF LEO PNT; Leclère, Marathe i Reid, arXiv:2509,19551 (tests/leo_doppler_reference.rs) |
| MODELLED | Zbieżność PPP z uzupełnieniem LEO | 7,4 → 4,8 / 3,2 / 2,7 / 2,3 min przy 60 / 96 / 192 / 288 satelitach LEO, monotonicznie; NEES filtra w paśmie χ² | trend porównany z Li i in., J. Geod. 93:749 (2019) (9,6 → 7,0 / 3,2 / 2,1 / 1,3 min); konstelacje i szum nie zostały odtworzone |
| MODELLED | Warunkowy poziom ochrony czasu (niewykryty błąd czasu ograniczony przez holdover przy spoofingu) | kompozycja odtwarza wieloetapową rekurencję kowariancji clock_state; skalibrowane na rzeczywistym zarejestrowanym spoofingu |
skalary JammerTest 2024 (Zenodo 15911589) + zamknięte postaci van Loana / CUSUM (examples/tpl_jammertest) |
| MODELLED | Ocena odporności PNT + niestabilność decyzji | 35 ręcznie wyprowadzonych testów wyroczni; artefakt badania deterministyczny co do bajtu (stałe ziarno) | mapowanie DHS RPCF v2.0 + zamknięte postaci Dirichleta / Kendalla-τ / Hill-N2 — syntetyczne architektury, nie certyfikacja |
| MODELLED | Badanie luki optymizmu dla zakłóceń RF (prawa skalowania + predyktor leave-one-out) | istotność względem hipotezy zerowej permutacyjnej; artefakt deterministyczny co do bajtu (5 ziaren) | syntetyczny korpus oparty na parametrach — metryki oceny są VALIDATED względem scikit-learn (powyżej); samo badanie jest MODELLED |
| CI | Odtwarzalność między platformami | identyczne co do bitu dane wejściowe + wzorce kształtu na 3 systemach operacyjnych | macierz CI Linux / macOS / Windows, wzorce SHA-256 |
| CI | Pokrycie testami | ~95 % linii w src/ z wyłączeniem src/*_data.rs i src/main.rs, z progiem ≥ 85 % |
cargo-tarpaulin (silnik LLVM) |
Jak możliwość zyskuje swoją etykietę — niezmiennik wymuszany w CI: brak zewnętrznej wyroczni ⇒ nie może być uznana za sprawdzoną · SVG
Góra: każdy sprawdzony wiersz jest poparty zewnętrznym zbiorem danych z konstrukcji. Dół: SGP4 zgadza się z oficjalnym odniesieniem w każdym reżimie (najgorzej 4,12 mm). SVG · SVG
176 sprawdzonych · 221 obliczonych z modelu · 4 partnera — SVG
Dziedziny możliwości#
Każda możliwość z publicznej mapy, według dziedziny, z etykietą z rejestru (ledger). Tabela dziedzin jest zapisywana przez tools/gen_readme_blocks.py z web/capabilities.json, tego samego pliku, który czyta mapa wszystkiego w Studio.
Pełna tabela, dziedzina po dziedzinie, z każdą możliwością i jej etykietą, to docs/CAPABILITY-DOMAINS.md.
Instalacja#
Jedna linia daje narzędzie wiersza poleceń: cargo install kshana. Każdy kanał dostarcza v0.40.0 z tego samego otagowanego commita.
| Kanał | Instalacja | Przewodnik |
|---|---|---|
| Wypróbuj w przeglądarce | otwórz https://kshana.dev | Przewodnik po Studio |
| Wiersz poleceń (Rust) | cargo install kshana |
Użycie wiersza poleceń |
| Biblioteka Rust | cargo add kshana |
Dokumentacja API na docs.rs |
| Python | pip install kshana |
Przewodnik po API Pythona |
| JavaScript i WebAssembly | npm install kshana |
Przewodnik po npm i WebAssembly |
| Asystent AI (serwer MCP, cargo) | cargo install kshana-mcp |
Przewodnik po serwerze MCP |
| Obraz Dockera | docker run --rm -i ghcr.io/ashfordeou/kshana-mcp |
Przewodnik po serwerze MCP: Docker |
| Cursor (jedno kliknięcie) | Dodaj do Cursor (npx) · Dodaj do Cursor (Docker) · npx -y kshana-mcp@0.40.0 |
Wszystkie fragmenty instalacji MCP |
| VS Code (jedno kliknięcie) | Zainstaluj w VS Code (npx) · Zainstaluj w VS Code (Docker) · npx -y kshana-mcp@0.40.0 |
Wszystkie fragmenty instalacji MCP |
| npx | npx -y kshana-mcp@0.40.0 |
Wszystkie fragmenty instalacji MCP |
| uvx / pipx | uvx kshana-mcp==0.40.0 |
Wszystkie fragmenty instalacji MCP |
| Homebrew | brew install ashfordeOU/tap/kshana-mcp |
Wszystkie fragmenty instalacji MCP |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp |
Wszystkie fragmenty instalacji MCP |
| winget | winget install AshfordeOU.KshanaMcp |
Wszystkie fragmenty instalacji MCP |
| Gotowy plik binarny | pobierz kshana-mcp-<target> z wydania i sprawdź go względem SHA256SUMS | Wszystkie fragmenty instalacji MCP |
| Oficjalny rejestr MCP | wyszukaj io.github.ashfordeOU/kshana-mcp | Wszystkie fragmenty instalacji MCP |
| Zdalnie (streamable HTTP), hostowane samodzielnie | kshana-mcp --http 127.0.0.1:8080 |
Przewodnik po samodzielnym hostowaniu |
| Wtyczka IDE JetBrains | Settings → Plugins → Marketplace → wyszukaj „Kshana” (identyfikator wtyczki dev.kshana.ide) | Przewodnik po wtyczce |
| Wtyczka Signal K | npm install signalk-kshana-trust |
Przewodnik po wtyczce Signal K |
| Wtyczka OpenCPN | pobierz archiwum tar wtyczki z wydania | Zgłoszenie do katalogu OpenCPN |
| Pulpit Grafana | zaimportuj kshana-grafana-*.json z wydania | Źródło pulpitu |
| Obraz kompilacji referencyjnej | docker pull ghcr.io/ashfordeou/kshana-reference-build |
Integracje morskie |
Kshana w JetBrains Marketplace Buduje się z Rust 1,88 lub nowszym, czyli rust-version z Cargo.toml
MCP to Model Context Protocol. Przypnij wydanie poleceniem cargo install kshana --version 0.40.0, pip install kshana==0.40.0 lub npm install kshana@0.40.0. Aby zbudować ze źródeł, zob. Install and build w sekcji Reference.
Uruchom scenariusz z Pythona i z WebAssembly
import json, kshana
toml = open("clock-holdover.toml").read()
result = json.loads(kshana.run(toml))
print(kshana.version(), result["quantum"]["fom"]["holdover_s"], result["classical"]["fom"]["holdover_s"])
# 0.40.0 6600.0 2610.0
Poza run moduł udostępnia run_full (JSON, SVG i jednowierszowe podsumowanie naraz), run_typed, validate_toml, list_kinds / scenario_kinds oraz error_kind; zob. docs/PYTHON_API.md.
Pakiet npm to cały silnik skompilowany do WebAssembly. W Node.js przekaż binarkę do initSync; w przeglądarce await init() ją pobiera (zob. 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));
Architektura#
Jeden otwarty silnik jest w centrum i każda powierzchnia go uruchamia: wiersz poleceń, biblioteka Rust, Python, WebAssembly i Kshana Studio, serwer MCP, obraz Docker i wtyczka JetBrains. Ten sam plik scenariusza daje te same bajty na każdej. Kshana Pro stoi na wierzchu jako osobna nakładka, która zależy od silnika i nigdy go nie rozwidla.
Wnętrze silnika: warstwy dziedzinowe i rejestr weryfikacji
Jeden silnik, wiele drzwi wejściowych. Jeden rdzeń w Rust (kshana) uruchamia każdy scenariusz, dostępny przez CLI, rozszerzenie Pythona, moduł WebAssembly w przeglądarce, serwer MCP dla agentów AI i wtyczkę do JetBrains IDE — wszystkie zbiegają się w jednym dyspozytorze api::run_toml. Wewnątrz pakiety czujników podłączają się do wspólnego interfejsu modeli błędów; obok nich znajdują się warstwa układów odniesienia (precesja–nutacja IAU 2006/2000A i redukcja GCRS↔ITRS oparta na CIO), warstwa astrodynamiki/numeryczna (analityczny SGP4/SDP4 oraz numeryczny propagator Cowella z modelem sił EGM2008/perturbacji, projektowaniem manewrów i wyznaczaniem orbity), warstwa integralności/GNSS (RAIM/ARAIM, SBAS, dziedzina pomiaru, zagłuszanie, cislunar), warstwa fuzji / alt-PNT (estymatory GNSS/INS oraz dopasowywacze map grawitacji/terenu/magnetyzmu), warstwa głębokiej przestrzeni i Księżyca (radiometryczne Mars-PNT i zestaw PNT księżycowego, z poziomem dowodowym każdego elementu w macierzy — czas LTC, VLBI, wspólne OD+zegar, realizacja układu odniesienia, obszar usługi, różnicowy PNT, interoperacyjność), warstwa analizy misji (budżety startu / wejścia w atmosferę / pokrycia / wskazywania / przelotu / łącza oraz środowisko pogody kosmicznej) oraz otwarta warstwa badań odporności i uczenia maszynowego (ocena odporności RPCF, luka optymizmu zakłóceń RF i demonstrator PNT z wykorzystaniem kwantowym), której odtwarzalne artefakty opierają się na sprawdzonych jądrach.
Dwa samodzielne pakiety (crate), wyłączone z przestrzeni roboczej, leżą obok rdzenia — mcp/kshana-mcp (serwer MCP, zbudowany na SDK rmcp w edycji 2024) i xval/anise-frames (kontrola krzyżowa układów ANISE/SPICE, która ściąga zależności na licencji MPL-2.0 (Mozilla Public License 2,0)) — i są trzymane poza grafem zależności opublikowanego pakietu, Cargo.lock, bramką licencji i budową MSRV (minimalna obsługiwana wersja Rust) przez listę exclude w głównym Cargo.toml. Wtyczka JetBrains (ide/jetbrains) to osobny projekt w Kotlinie. Pełny zestaw diagramów zob. docs/ARCHITECTURE.md.
Wyrenderowane diagramy (przepływ silnika, mapa modułów, dystrybucja) są w docs/ARCHITECTURE.md.
Diagramy#
Diagramy to źródła Mermaid w docs/diagrams/, renderowane do SVG i PNG w docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> w Linuksie, pozostałe dwa skrypty render-diagram gdzie indziej), a rekord wiąże każdy PNG z dokładnym SVG, z którego pochodzi. Testy przypinają liczby, które podają. Wykresy w powyższych sekcjach są rysowane przez narzędzia z przebiegów silnika; te pokazują, jak części do siebie pasują.

Jeden dyspozytor, jeden silnik, odtwarzalny wynik · SVG · źródło system-overview.mmd

Każda powierzchnia z tego samego silnika · SVG · źródło surfaces.mmd

Wewnętrzna pętla przebiegu · SVG · źródło engine-flow.mmd

Od dziennika odbiornika do wskaźnika zaufania i tego, co go używa · SVG · źródło trust-flow.mmd

Od scenariusza do podpisanego pakietu; Kshana nigdy nie wytwarza ani nie odtwarza sygnału · SVG · źródło lab-round-trip.mmd

Jak działa Studio, lokalnie · SVG · źródło studio-flow.mmd

Przepływ testów i wydania, od lokalnych bramek do zweryfikowanego wydania i ścieżki tylko dla witryny · SVG · źródło release-flow.mmd · docs/RELEASING.md

Gdzie leży kod · SVG · źródło module-map.mmd

Co gdzie trafia i co to sprawdza · SVG · źródło distribution.mmd
Asystent AI#
kshana-mcp to serwer MCP: Twój asystent uruchamia prawdziwy silnik i odczytuje jego JSON, zamiast zgadywać matematykę. Każde z jego 49 narzędzi jest cienką nakładką na publiczną funkcję biblioteki kshana, więc w serwerze nie ma żadnej logiki symulacji.
Instalacja serwera MCP#
Wyłącznie doradczo, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu: za nawigację odpowiada nadal operator. Serwer działa na Twoim komputerze; nic nie jest wysyłane do Ashforde OÜ.
Fragment wymieniający zewnętrznych klientów AI został tu pominięty; jest w README.md na GitHubie.
| Kanał | Polecenie lub przycisk | Wymaga | Postać przypięta |
|---|---|---|---|
| Cursor (jedno kliknięcie) | npx (Node) · Docker | Node lub Docker | kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| VS Code (jedno kliknięcie) | npx (Node) · Docker · Insiders (npx) | Node lub 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+ z uv lub 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 | formuła dla v0.40.0 |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket, następnie scoop install kshana-mcp |
Scoop (Windows) | manifest dla 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 |
| Gotowy plik binarny | strona wydania: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], sprawdzane przez SHA256SUMS i gh attestation verify |
brak | v0.40.0 |
| Rejestr MCP | io.github.ashfordeOU/kshana-mcp (znajdowany przez klientów obsługujących rejestr) |
klient obsługujący rejestr | 0.40.0 |
| Zdalnie (streamable HTTP) | kshana-mcp --http 127.0.0.1:8080, we własnym hostingu: zob. docs/deploy/mcp-http.md |
własny host | v0.40.0 |
kshana-mcp na Glama, wskaźnik jakości jego serwera MCP
Fragment wymieniający zewnętrznych klientów AI został tu pominięty; jest w README.md na GitHubie.
Konfiguracja dla poszczególnych klientów jest w docs/integrations.md. Serwer jest wymieniony w oficjalnym rejestrze MCP jako io.github.ashfordeOU/kshana-mcp.
49 narzędzi
Scenariusze i raporty
| Narzędzie | Co robi |
|---|---|
run_scenario |
Uruchom scenariusz z definicji TOML (Tom's Obvious, Minimal Language) |
list_scenario_kinds |
92 wbudowanych rodzajów scenariuszy z opisami + polami wymaganymi/opcjonalnymi — aby agent mógł zbudować poprawny scenariusz |
validate_scenario |
Kontrola wstępna: sparsuj TOML i wykryj jego rodzaj, bez uruchamiania |
list_example_scenarios |
Dołączone scenariusze referencyjne jako JSON |
get_example_scenario |
Tekst TOML jednego dołączonego scenariusza referencyjnego, bajt w bajt taki jak plik w scenarios/ |
report_scenario |
Uruchom scenariusz i zwróć jego raport |
animate_scenario |
Uruchom scenariusz i zwróć jego szereg czasowy jako animację |
sky_geometry |
Geometria nieba pod horyzontem zależnym od azymutu: widoczne i ukryte satelity, DOP, kowariancja wschód-północ-góra i elipsa błędu poziomego; albo preset horyzontu z jego pochodzeniem |
Eksport i interoperacyjność
| Narzędzie | Co robi |
|---|---|
list_export_formats |
Które formaty interoperacyjności mają zastosowanie do scenariusza (czml, kml, geojson, stk, sigmf), powód, gdy któryś nie ma, oraz specyfikacja, którą stosuje każdy zapisywacz |
export_interop |
Eksportuj scenariusz jako CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, efemerydy STK (Systems Tool Kit) .e lub SigMF (Signal Metadata |
import_route |
Zapisz trasę GeoJSON LineString w scenariuszu, który leci po torze punktów drogi (terrain-nav, terrain-slam, gravity-map, combined-altpnt), i zwróć nowy TOML |
export_sp3 |
Eksportuj konstelację scenariusza orbit jako precyzyjne efemerydy SP3-c (Standard Product 3, wersja c) |
export_omm |
Eksportuj elementy scenariusza orbit jako katalog CCSDS (Consultative Committee for Space Data Systems) 502.0-B-2 OMM (Orbit Mean-elements Message) |
export_oem |
Eksportuj szereg stanów scenariusza orbit jako efemerydy CCSDS OEM (Orbit Ephemeris Message) 2,0 — położenie TEME (true equator, mean equinox) i |
export_table_csv |
Uruchom scenariusz i zwróć jego tabelę odtwarzalności jako CSV (wartości rozdzielane przecinkami) — tabelę stabilną co do bajtu, którą CLI (interfejs wiersza poleceń) zapisuje jako <scenario>.table.csv |
export_test_bench |
Ruch pojazdu i zdarzenia ze scenariusza dla laboratoryjnego symulatora GNSS (kshana bench-export) |
Zaufanie do odbiornika i statku
| Narzędzie | Co robi |
|---|---|
assess_receiver_log |
Oceń rzeczywisty dziennik odbiornika GNSS (globalny system nawigacji satelitarnej) pod kątem zaufania |
assess_vessel_stream |
Oceń ograniczony fragment NMEA 0183 (co najwyżej 2 MiB i 20 000 epok |
assess_vessel_log |
Dziennik NMEA 0183 statku (co najwyżej 4 MiB) jako przebieg wsadowy, z sesyjnym TOML podającym limity statku |
create_evidence_pack |
Podpisany pakiet dowodowy dla okna dziennika statku (kshana receiver-trust evidence) |
attach_evidence_timestamp |
Powiąż token znacznika czasu RFC 3161 (base64 bajtów .tsr) z pakietem, w pamięci (kshana evidence attach-timestamp) |
verify_evidence_pack |
Zweryfikuj pakiet (kshana evidence verify) |
generate_training_nmea |
Syntetyczne NMEA 0183 mostka do szkolenia załóg z TOML nmea-scenario (zagłuszanie, przesunięcie pozycji, spoofing czasu, opóźnienie odtwarzania) z dziennikiem instruktora (kshana-nmea-training/1) |
build_interference_map |
Mapa zakłóceń GNSS z raportów pozycji ADS-B lub AIS w postaci tekstu CSV (najwyżej 4 MiB) |
route_exposure |
Udział długości trasy przypadający na komórki jednej lub kilku map zakłóceń: zdegradowane, niezdegradowane, nieocenione i nieobserwowane, opcjonalnie w zadanym przedziale dat |
trust_telemetry |
Strumień zaufania (linie JSON) lub wynik receiver-trust zapisany jako tekst Prometheus, linie syslog CEF lub LEEF albo ładunek OTLP JSON, z koderami kshana trust-telemetry |
jammertest_import |
Odczytuje opublikowany katalog testów Jammertest i plan nadawania (NPRA/jammertest-plan, MIT) jako zaplanowaną prawdę odniesienia (kshana jammertest import): przedziały jednego obszaru testowego stają się zdarzeniami zaufania do odbiornika z identyfikatorem katalogowym i rokiem w każdej etykiecie. Przedziały planowane, a nie zarejestrowane czasy emisji; żadne pole kontaktowe planu nie jest odczytywane. MODELLED. Zob. docs/JAMMERTEST.md. |
jammertest_score |
Ocenia dziennik odbiornika względem tego harmonogramu (kshana jammertest score): dla każdego testu opóźnienie detekcji, pominięte alarmy i czas powrotu do normy oraz fałszywe alarmy poza każdym przedziałem. Dzienniki tekstowe jako log, binarne (ubx, sbf) jako log_base64. Podpisany pakiet wymaga klucza: wiersz poleceń. Wyłącznie doradczo; MODELLED. |
fit_imu_log |
Parametry akcelerometru i żyroskopu scenariuszy hybrid i fusion dopasowane z nieruchomego dziennika IMU (CSV lub EuRoC) za pomocą odchylenia Allana, z gotową do wklejenia tabelą [accel_classical] i SHA-256 dziennika (kshana imu-fit). Tekst na wejściu, JSON na wyjściu; MODELLED. |
GNSS IQ (pliki w katalogu roboczym; wyłączone w trybie HTTP)
| Narzędzie | Co robi |
|---|---|
iq_signals |
Konfiguracja warstwy GNSS IQ |
iq_info |
Opisuje jedno nagranie IQ (składowa synfazowa i kwadraturowa) w katalogu roboczym bez jego przetwarzania |
iq_scene |
Generuje wielosatelitarną scenę GNSS IQ w katalogu roboczym (kshana iq scene) |
iq_acquire |
Akwizycja metodą FFT (szybka transformata Fouriera) jednego lub kilku PRN (kodów pseudolosowych) w nagraniu (kshana iq acquire), opcjonalnie za etapami toru wejściowego |
iq_track |
Akwizycja, a następnie śledzenie bankiem DLL/PLL/FLL (pętle synchronizacji opóźnienia, fazy i częstotliwości) (kshana iq track), z pętlami z `kshana.loop-desig |
iq_frontend |
Stosuje cyfrowe przetwarzanie sygnałów (DSP, digital signal processing) toru wejściowego odbiornika i łagodzenia zakłóceń |
iq_sweep |
Odtwarza jedno nagranie IQ z katalogu roboczego dla kilku konstrukcji pętli śledzenia (kshana iq sweep) |
iq_monitor |
Uruchamia monitory detekcji zakłóceń i spoofingu na nagraniu IQ z katalogu roboczego (kshana iq monitor) |
iq_labfit |
Dopasowuje model utraty synchronizacji pętli śledzenia do przebiegów laboratoryjnych (kshana iq labfit) ze scenariusza iq-labfit, którego dzienniki są podane w treści (text lub base64 |
iq_test_conditions |
Waliduje plik kshana.test-conditions/1 podany jako tekst i zwraca rozstrzygnięte warunki wraz z ich skrótem |
iq_campaign |
Uruchamia kampanię odtwarzania laboratoryjnego (kshana iq campaign) |
iq_campaign_status |
Postęp w folderze wyjściowym kampanii |
Mapowanie compliance
| Narzędzie | Co robi |
|---|---|
compliance_report |
Mapowanie na publiczne ramy, wypełnione z dokumentów wyników podanych jako tekst (kshana compliance-report) |
compliance_mapping |
Statyczne tabele mapowania (lub, z sources, dokumenty źródłowe, które cytują, z wersjami i adresami URL) w formacie Markdown, poprzedzone tym samym oświadczeniem |
list_standards_packs |
Pakiety standardów (kshana standards-pack list): punktowane zestawy scenariuszy dla profili testów ram DHS Resilient PNT, IMO MSC.1/Circ.1575 i ICAO Doc 9849 Appendix F |
run_standards_pack |
Jeden pakiet uruchomiony względem progów podanych przed przebiegiem: każdy test kończy się wynikiem MET, NOT MET lub NEEDS INPUT; MODELLED, nie ocenia żadnego produktu |
lunanet_afs_check |
LunaNet Augmented Forward Signal sprawdzony względem LNIS V5 AD1 Volume A (LSIS-AFS V1.0): kody względem drukowanych tabel lub strumień symboli względem formatu ramki; LDPC i CRC-24Q podramek od 2 do 4 nie są weryfikowane |
create_round_trip_pack |
Podpisany pakiet laboratoryjnej weryfikacji w obie strony: scenariusz, dokument kshana.test-conditions/1, dziennik odbiornika i wynik powiązane skrótem |
Benchmark
| Narzędzie | Co robi |
|---|---|
score_benchmark |
Zgłoszenie kshana-bench ocenione względem pliku wzorca prawdy, oba jako tekst JSON (kshana bench score, bench/SPEC.md): plik wyniku z wersją specyfikacji, podziałem, skrótami danych wejściowych i metrykami zadania. MODELLED; opisuje dziennik lub korpus, nigdy produkt. |
render_leaderboard |
Pliki wyników kshana-bench zapisane jako statyczna strona rankingu (tekst HTML), każdy wcześniej zwalidowany. |
Wydania#
Cały silnik jest bezpłatny. Kshana Pro i badania na zamówienie są dla programów, które potrzebują więcej, a każda płatna droga zaczyna się od wiadomości: nie ma tu cen.
| Bezpłatnie | Kshana Pro | Studium na zamówienie | |
|---|---|---|---|
| Czym jest | cały otwarty silnik, wszystkie 92 rodzajów scenariuszy, bez blokad funkcji | zastrzeżona nakładka na ten sam silnik, na podstawie umowy | badanie odporności PNT Twojego systemu, MODELLED, wykonane za Ciebie |
| Licencja | AGPL-3.0 (GNU Affero General Public License, wersja 3) lub licencja komercyjna | zastrzeżona | umowa |
| Jak zacząć | zainstaluj lub otwórz kshana.dev | zamów ocenę Pro | zamów badanie |
Czym jest Pro, jego własnymi słowami z docs/PRO.md:
Ścisły nadzbiór otwartej Kshana. Pro korzysta z otwartego silnika jako biblioteki i nigdy go nie rozwidla. Każdy otwarty rodzaj scenariusza działa w Pro bez zmian, a otwarty scenariusz działa w Pro w ogóle bez licencji.
Żadnej nowej fizyki. Pro nie dodaje żadnego modelu fizycznego i żadnego nie zmienia. Każda liczba z Pro pochodzi z przebiegów otwartego silnika, więc wartość z Pro jest tak wiarygodna jak otwarty rodzaj scenariusza, z którego pochodzi, i nigdy bardziej.
Pro odpowiada na kolejne pytania programu: jaki projekt wybrać do lotu (optymalizator projektu i jego front Pareto), jak pewna jest odpowiedź (niepewność i czułość) oraz czy misja spełnia swoje wymagania (dossier misji, śledzenie wymagań, badania kompromisowe, kontrola regresji scenariuszy, cyfrowe bliźniaki zegarów, dossier badania i usługa lokalna). Obserwuje też kampanię wartości i przerywa potok, gdy któraś się pogarsza, sprawdza kandydackie plany sygnałów względem otwartych sygnałów nawigacji satelitarnej w obu kierunkach (współistnienie widmowe) i kolejkuje badania w lokalnej usłudze zadań z rejestrem dostaw powiązanym łańcuchem skrótów. Każdy z tych elementów jest opisany w docs/PRO.md, wraz z tym, co daje i czego nie robi. Nic, co tworzy Pro, nie jest certyfikacją, a badanie na zamówienie również nią nie jest.
Co Kshana Pro odczytuje z otwartego silnika oraz wsparcie od Ashforde® OÜ
Na czym opiera się Kshana Pro. Każda część Pro pracuje na otwartym silniku i zostawia go bez zmian:
- Optymalizator projektu, badanie niepewności i dossier misji uruchamiają scenariusze otwartego silnika przez jego publiczny interfejs i obliczają każdą liczbę z wyników tych przebiegów. Każdy wynik zachowuje poziom VALIDATED, MODELLED lub PARTNER, który otwarty silnik nadał danej wartości, nigdy wyższy.
- Cyfrowe bliźniaki zegarów korzystają z modelu zegara otwartego silnika i jego estymatora odchylenia Allana: bliźniak jest kalibrowany do opublikowanego budżetu Allana urządzenia, a następnie sprawdzany przez oszacowanie odchylenia Allana bliźniaka otwartym estymatorem.
- Badania kompromisowe uruchamiają każdą opcję architektury jako scenariusz otwartego silnika, bez zmian, i szeregują opcje według wskaźnika jakości odczytanego z wyniku każdego przebiegu.
- Obserwacja kampanii odczytuje swoje wartości z wyników przebiegów scenariuszy z pakietu w otwartym silniku i porównuje je z poprzednim udanym przebiegiem.
- Współistnienie widmowe odczytuje każdą liczbę fizyczną z przebiegów otwartego silnika rodzajów
leo-signaliconstellation-design, a dodaje tylko sumę po widocznych satelitach i szeregowanie planów. - Lokalna usługa zadań uruchamia otwarte scenariusze i scenariusze Pro w tym samym silniku i zapisuje każdy wynik tak, jak zwrócił go przebieg.
- Pakiety dowodowe zapisują dla każdego przebiegu skrót scenariusza, który otwarty silnik umieszcza w wyniku, więc wartość z pakietu można odtworzyć, uruchamiając scenariusz ponownie.
- Inżynieria systemów i narzędzia programowe. Narzędzia Kshana Pro do inżynierii systemów opartej na modelach (MBSE) i do programów sprawdzają wymagania programu względem przebiegów otwartego silnika: importują wymagania jako wartości rozdzielane przecinkami (CSV) albo jako udokumentowany podzbiór Requirements Interchange Format (ReqIF) lub tekstu Systems Modeling Language w wersji 2 (SysML v2), oceniają każde kryterium akceptacji, z jego jednostką, względem wartości zapisanych przez przebieg i tworzą macierz odsyłaczy weryfikacji (VCRM), model SysML v2, raport wpływu zmian i pakiet dowodowy offline. Niczego nie uruchamia ponownie ani nie przelicza i odczytuje tylko to, co publikuje otwarty silnik:
result.jsonkażdego przebiegu (pola, które wskazuje kryterium, ich jednostki, znacznik odtwarzalności ze skrótem scenariusza, ziarnem, wersją silnika i wersją schematu oraz etykietę przebiegu i poziomy wartości), jegoreport.json(rodzaj, zapis odtwarzalności i etykiety możliwości), plik scenariusza (jego skrót, rodzaj, ziarno i parametry), schemat jednostek pól (jednostkę, pochodzenie i poziom dowodowy każdego pola) oraz macierz weryfikacji (etykietę VALIDATED, MODELLED lub PARTNER każdej możliwości).
Wsparcie i usługi profesjonalne#
Kshana jest bezpłatna i otwartoźródłowa na licencji AGPL-3.0 oraz profesjonalnie rozwijana i utrzymywana przez Ashforde® OÜ (Estonia). Otwarty silnik jest kompletny i można go używać samodzielnie. Dla organizacji, które potrzebują więcej, Ashforde® OÜ oferuje:
- Wsparcie komercyjne i integrację: osadzenie Kshana w Twoim zestawie narzędzi, scenariusze na zamówienie i poprawki z pierwszeństwem.
- Własne modele czujników: skalibrowane do Twojego sprzętu, w tym modele odporności objęte ograniczeniami eksportowymi, utrzymywane w prywatnej nakładce.
- Kshana Pro: zastrzeżone narzędzia do inżynierii systemów opartej na modelach (MBSE) i do programów, które sprawdzają wymagania programu względem przebiegów otwartego silnika i tworzą macierz odsyłaczy weryfikacji (VCRM), model Systems Modeling Language w wersji 2 (SysML v2), raport wpływu zmian i pakiet dowodowy offline. Niczego nie uruchamia ponownie i odczytuje tylko opublikowane wyjścia silnika:
result.jsonireport.jsonkażdego przebiegu, plik scenariusza, schemat jednostek pól i etykiety macierzy weryfikacji (pełna lista jest w sekcji Wydania). - Narzędzia Kshana Pro do projektowania, niepewności i misji: front Pareto przestrzeni projektowej, niepewność i czułość na tysiącach przebiegów oraz dossier misji jednym poleceniem, z macierzą weryfikacji i plikiem PDF; zob.
docs/PRO.md. - Obserwacja kampanii, współistnienie widmowe i usługa zadań w Kshana Pro: potok, który przerywa się, gdy obserwowana wartość się pogarsza, plany sygnałów sprawdzane względem otwartych sygnałów nawigacji satelitarnej w obu kierunkach oraz lokalna kolejka zadań z rejestrem dostaw powiązanym łańcuchem skrótów; zob.
docs/PRO.md. - Szkolenia i doradztwo w analizie wydajności kwantowych i klasycznych systemów PNT.
To model open-core: silnik ma i zachowa otwartą licencję; utrzymanie firmy opiera się na wiedzy, wsparciu i zastrzeżonych rozszerzeniach, a nie na opłatach licencyjnych. Kontakt: contact@ashforde.org · ashforde.org.
Badania#
Badania oparte na otwartym silniku są publikowane w arXiv. Każde wskazuje polecenie silnika, które za nimi stoi, więc jego liczby można odtworzyć ze zatwierdzonego przykładu scenariusza lub badania.
| Praca | Co pokazuje | Polecenie silnika |
|---|---|---|
| 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 |
Spadek wyniku detektora zakłóceń GNSS po zmianie warunków można przewidzieć wyłącznie ze statystyk z rozkładu pierwotnego, najpierw na otwartym stanowisku syntetycznym, a potem na otwartych nagraniach terenowych. | 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 |
Odbiornik czasu GNSS pod wpływem spoofingu nie ma skończonej bezwarunkowej granicy niewykrytego błędu czasu, więc praca podaje granicę warunkową, skalibrowaną na zarejestrowanym spoofingu w eterze z publicznej kampanii 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 |
Pojedynczy złożony wskaźnik odporności jest stabilną podstawą decyzji tylko tam, gdzie jeden projekt dominuje; tam, gdzie projekty rywalizują, samo przeważenie może zmienić zwycięzcę. | 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 |
Pomiary odległości wewnątrz konstelacji księżycowej pozostawiają bezwzględne położenie stacji powierzchniowej nieobserwowalne; opóźnienie interferometrii o bardzo długiej bazie (VLBI) z Ziemi przywraca je, gdy konstelacja jest rzadka, i wyostrza, gdy jest bogata. | rodzaj 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 |
Planowane konstelacje czterech do sześciu satelitów dają słabą geometrię na południowym biegunie Księżyca, a kilka powierzchniowych nadajników pomiarowych naprawia ją znacznie taniej niż dodatkowe satelity. | rodzaj 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 |
Rozmycie dokładności jest niezdefiniowane dla śledzenia cislunarnego samą odległością, ponieważ prędkość jest nieobserwowalna w pojedynczej chwili, więc praca używa gramianu obserwowalności na czterech płaskich orbitach dalekich wstecznych: sama odległość daje rząd 2 z 4 w pojedynczej chwili i potrzebuje łuku około 2,09 h, by stać się w pełni obserwowalna, a uwarunkowanie poprawia się wraz z wydłużaniem łuku; prędkość zmiany odległości (Doppler) daje rząd 4 natychmiast; a łączne estymowanie stacji ze stanami satelitów i zegarami pozostaje o jeden rząd niepełne, dopóki nie doda się zewnętrznej wielkości interferometrycznej. Wymagania należą do budżetów długości łuku, uwarunkowania i rodzaju pomiaru, a nie do DOP. | rodzaj cislunar-observability: kshana scenarios/cislunar-observability.toml (jego siostrzany cislunar-arc-recovery sprawdza próg niezależnym estymatorem różnic skończonych) |
Trzy przykłady badań zapisują artefakty deterministyczne co do bajta (stałe ziarna), które rejestrują wersję silnika, ziarna i skrót konfiguracji. Trzy prace księżycowe i cislunarne opierają się na zestawie księżycowym (poziom dowodowy każdego elementu jest w macierzy weryfikacji); ich twierdzenia o geometrii i rozmyciu dokładności są ponadto sprawdzane krzyżowo względem osobnych wyroczni w tests/validate_p*.rs. Więcej w Odtwarzalne artefakty badań w sekcji Reference.
Cytowanie#
Jeśli używasz Kshana w pracy naukowej lub technicznej, podaj użytą wersję wraz ze scenariuszem i ziarnem. CITATION.cff zawiera metadane czytelne maszynowo, a GitHub pokazuje na ich podstawie przycisk „Cite this repository”. Każde wydanie jest archiwizowane w Zenodo; DOI koncepcji (Digital Object Identifier) 10.5281/zenodo.20528627 zawsze wskazuje najnowszą wersję.
Baweja, C. (2026). Kshana — a PNT-resilience simulator with quantum-sensor performance models. Ashforde OÜ. https://doi.org/10.5281/zenodo.20528627
Powyższe prace:
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
Licencja#
Kshana ma podwójną licencję: GNU AGPL-3.0-only (LICENSE) albo licencję komercyjną od Ashforde® OÜ do zamkniętej integracji, której AGPL nie odpowiada. LICENSING.md wyjaśnia, która obowiązuje. Wkłady są licencjonowane przychodząco na AGPL i dodatkowo dają Ashforde® OÜ prawo do włączenia ich do wydania komercyjnego; każdy commit podpisuj poleceniem git commit -s (zob. CONTRIBUTING.md). „Kshana” i jej znaki są znakami towarowymi Ashforde® OÜ: licencja obejmuje kod, a nie nazwę, więc forkom należy nadać inną nazwę.
Źródła#
Długie materiały, zwinięte. Każdy dokument jest wymieniony w Dokumentacji.
Instalacja i budowanie ze źródeł
Instalacja i budowanie#
Wymaga toolchainu Rust (≥ 1,88, czyli rust-version w Cargo.toml; rozwijane na 1,93).
git clone https://github.com/ashfordeOU/kshana
cd kshana
cargo build --release
cargo test # all tests pass
Użycie: pełny wiersz poleceń
Sposób użycia#
Uruchom dowolny scenariusz; CLI rozpoznaje go po polu kind scenariusza i zapisuje obok niego <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html i <scenario>.report.json, a dla rodzajów, które publikują tabelę, także <scenario>.table.csv. Raport (strona HyperText Markup Language (HTML) i dokument JSON o tej samej treści) zawiera podsumowanie dla kadry kierowniczej, każde wejście z jego jednostką, wyniki i wykresy, tabele przeglądu kampanii, Monte Carlo lub łańcucha, oś zdarzeń, etykietę VALIDATED / MODELLED / PARTNER i źródło każdej możliwości użytej w przebiegu, to, czego nie modeluje, oraz zapis odtwarzalności (wersja silnika, skróty Secure Hash Algorithm 256-bit (SHA-256), ziarno, platforma i dokładne polecenie). Z przeglądarki drukuje się do czystego pliku PDF (Portable Document Format) na papierze A4 lub Letter; sam silnik nie zapisuje żadnego PDF. Zob. 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> zapisuje obok scenariusza CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON (Request for Comments 7946), efemerydy Ansys STK (Systems Tool Kit) .e i nagrania SigMF (Signal Metadata Format), a --import-route <route.geojson> wprowadza linię GeoJSON do rodzajów, w których śledzi się trasę. Każdy format jest walidowany względem opublikowanej specyfikacji, a scenariusz, do którego format nie ma zastosowania, podaje powód: zob. docs/INTEROP.md.
Inne tryby CLI: sprawdzenie scenariusza (lint), wczytanie rzeczywistych danych orientacji Ziemi lub uruchomienie całego zestawu:
# 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
Eksport animacji. --animate svg|html|frames|all zapisuje <scenario>.animation.svg (klatki kluczowe Cascading Style Sheets (CSS), bez skryptu), <scenario>.animation.html (odtwarzanie, pauza, przewijanie, prędkość i zsynchronizowane panele, bez zewnętrznych zasobów) i <scenario>.frames/ (frame_0000.svg, … oraz manifest.json z liczbą klatek na sekundę i czasem trwania). Kampania odtwarza swoje fazy i alarmy, przebieg widmowy swój wodospad; motyw podąża za prefers-color-scheme, a prefers-reduced-motion pokazuje gotowy obraz. Renderuje własne próbki przebiegu, identyczne co do bajta przy ponownym uruchomieniu, i nie dodaje dowodów. Zob. docs/ANIMATION.md.
Manifest zestawu to mały plik TOML (Tom's Obvious, Minimal Language): title i tablica scenarios = [ … ] ze ścieżkami scenariuszy, które silnik uruchamia kolejno, scalając każdy wynik (z jego etykietami MODELLED / VALIDATED) w jeden samoopisujący się artefakt badania. Zob. scenarios/quantum-pnt-demonstrator.suite.toml.
Rola w interoperacyjności. Kshana jest warstwą symulacji wydajności, która działa obok narzędzi przetwarzania końcowego, a nie ich zamiennikiem: jej wyjście RINEX podaj do RTKLIB lub gLAB, by uzyskać rozwiązanie pozycji, a jej wyjścia SP3 użyj jako precyzyjnego produktu orbitalnego w narzędziach takich jak Ginan; Kshana odpowiada na pytanie jaką odporność daje dana architektura PNT, zanim będą rzeczywiste sygnały, w formatach, które te narzędzia już przyjmują (--export-sp3 lub export_sp3 = true w scenariuszu orbit zapisuje <scenario>.sp3). Tę samą orbitę można opublikować jako średnie elementy CCSDS OMM ze ścieżki standaryzacyjnej (--export-omm lub export_omm = true zapisuje <scenario>.omm): jeden komunikat OMM 502,0 KVN (zapis słowo kluczowe = wartość) na każdego satelitę zdefiniowanego przez TLE, z rzeczywistym numerem katalogowym NORAD (North American Aerospace Defense Command), międzynarodowym oznaczeniem COSPAR (Committee on Space Research) i epoką każdego obiektu, dla dowolnego odbiorcy obsługującego OMM, zamiast dedykowanego dwuwierszowego zestawu elementów.
Przykładowe wyjście (holdover zegara; zwróć uwagę, jak raportowane są wskaźniki jakości Integrity i Security):
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
95. percentyl (p95) błędu czasu zegara optycznego wynosi 1.20e-4 ns: podsumowanie wypisuje małe wartości z cyframi znaczącymi, zamiast zaokrąglać je do 0.0. security pokazuje n/a (no attack), ponieważ ten scenariusz nie konfiguruje żadnego ataku, więc nie ma czego wykrywać. Wynik JSON nadal zawiera analityczną granicę wykrywalności spoofingu każdego zegara w fom.security (0,997 dla zegara optycznego, 0,000 dla zegara atomowego w skali układu scalonego, którego własny szum w oknie monitorowania przekracza specyfikację 20 ns), a jego blok figure_tiers oznacza tę wartość jako applicable: false. Rodzaj scenariusza spoof ocenia detekcję względem wstrzykniętego ataku. figure_tiers nadaje też każdej raportowanej wartości jej poziom weryfikacji (VALIDATED, czyli sprawdzone względem zewnętrznej wyroczni, lub MODELLED) oraz wiersz macierzy weryfikacji, z którego poziom odczytano. Scenariusz orbit dodatkowo raportuje blok geometrii: ułamek próbek z rozwiązaniem oraz najlepszy i medianowy pozycyjny współczynnik DOP (PDOP) i dokładność pozycji, obok wyniku zegara.
Przeczytaj uważnie te dwie liczby.
securityto analityczna granica wykrywalności spoofingu wyprowadzona ze stabilności każdego zegara; ma sens tylko dla skonfigurowanego scenariusza spoofingu i nie jest wielosatelitarnym detektorem RAIM.integrityoznacza tu samospójność filtra (ułamek próbek podczas przerwy mieszczących się w jego własnej granicy k-sigma), a nie lotniczą wartość integralności HPL/VPL. Zob.docs/INTEGRITY.md.Dla rzeczywistej integralności autonomicznej odbiornika rodzaj scenariusza
integrity(scenarios/integrity-raim.toml) uruchamia rzeczywisty RAIM migawkowy i z separacją rozwiązań (typu ARAIM) na propagowanej geometrii konstelacji: oblicza dla każdej epoki poziomy ochrony (HPL/VPL) w poziomie i w pionie oraz podaje ułamek epok, które mieszczą się w skonfigurowanych limitach alarmowych, z diagramem integralności Stanforda do klasyfikacji błąd–PL (poziom ochrony).
Odtwarzalne artefakty badań
Cztery otwarte badania odtwarzają po jednym artefakcie deterministycznym co do bajta (stałe ziarno) jednym poleceniem: liczby stojące za badaniami punktu przecięcia kwantowego i klasycznego, luki optymizmu detektorów zakłóceń RF, punktowania odporności PNT i poziomu ochrony czasu:
# 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
Każdy artefakt rejestruje wersję silnika, ziarna i skrót konfiguracji oraz nosi uczciwą etykietę MODELLED/VALIDATED. Sondy na rzeczywistych danych (*_probe) uruchamiają ten sam potok na nagraniach, które dostarczasz lokalnie; w repozytorium nie ma żadnych zbiorów danych. Badanie luki optymizmu detektorów zakłóceń RF opisano w preprincie arXiv:2606,22054, a warunkowy poziom ochrony czasu (tpl_jammertest powyżej) w preprincie arXiv:2606,24210 (zob. Cytowanie).
Opublikowane badania księżycowego PNT (arXiv:2607,06212 DOP z nadajnikami powierzchniowymi, arXiv:2607,02566 obserwowalność VLBI i arXiv:2610,23871 obserwowalność cislunarna względem długości łuku) mają swoje twierdzenia o geometrii, rozmyciu dokładności, przewidywaniu ramki czasu rzeczywistego i parametrów orientacji Ziemi (EOP), orbitach dalekich wstecznych i pomiarach odległości RF niezależnie sprawdzone krzyżowo w tests/validate_p*.rs względem osobnych wyroczni (scipy.special.j1, niezależne rozwiązanie DOP w NumPy z (HᵀH)⁻¹, ponowne sparsowanie w NumPy tych samych wierszy IERS finals2000A oraz baza NASA/JPL Three-Body Periodic Orbit Database). Są to dodatkowe kontrole regresji nad modelowanym zestawem księżycowym; nie zmieniają liczby pozycji macierzy sprawdzanych maszynowo.
Format scenariusza
Format scenariusza#
Scenariusze są deklaratywnym TOML. Pole najwyższego poziomu kind wybiera pakiet; jest ich w sumie pięćdziesiąt (clock jest domyślny, jeśli pole pominięto): 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 (stanowisko do oceny detekcji zakłóceń RF metodami uczenia maszynowego: oznakowany korpus syntetyczny, niezależna od detektora uprząż ROC/AUC i luka optymizmu między rozkładem pierwotnym a spoza niego), quantum-trade (kompromis między PNT kwantowym a klasycznym z wczytywaniem zmierzonego ADEV i obwiednią odporności bez GNSS; MODELLED), space-weather (wskaźniki słoneczne i geomagnetyczne, temperatura egzosferyczna Jacchia-71 i zależna od aktywności gęstość termosferyczna nad atmosferą statyczną; MODELLED), oem-interop (most importu i obiegu CCSDS OEM dla efemeryd GMAT/Orekit/STK; MODELLED), trójka analiz misji launch-window (azymut startu, zmiana płaszczyzny i okazje dla dwóch ciał), reentry (korytarz balistycznego wejścia w atmosferę Allena-Eggersa), eo-coverage (geometria pasa obserwacji, GSD, dostępu i rewizyty EO), space-packet (ramkowanie Space Packet CCSDS 133,0 TM/TC, czyli telemetrii i telekomend, z dokładnym układem bitów, zweryfikowane w obie strony) oraz attitude-budget (moment gradientu grawitacyjnego o 3 stopniach swobody i budżet błędu wskazywania RSS), passes (przewidywanie przejść nad stacją naziemną: AOS/TCA/LOS, maksymalna elewacja, dostęp) i link-budget (jednokierunkowe równanie łącza CCSDS/DSN: FSPL / Eb·N₀ / zapas / zamknięcie); telecom-timing (błąd czasu w holdover, MTIE i TDEV sprawdzone względem masek ITU-T); spectrum (całe pasmo L GNSS jako jedna widmowa gęstość mocy: wodospad częstotliwość–czas pod skryptowaną osią czasu zagłuszarki o fali ciągłej, wąskopasmowej, typu chirp lub o szumie dopasowanym, stosunek zagłuszarki do sygnału w każdym paśmie i efektywna gęstość nośna do szumu z widmowego współczynnika separacji oraz wejście i wyjście nagrań Signal Metadata Format (SigMF) z estymatami widmowymi Welcha; widma sygnałów VALIDATED względem wartości podręcznikowych, scenariusz zagłuszarki MODELLED; zob. docs/SPECTRUM.md; ten sam rodzaj rysuje panele pasm UHF, S i C z zaprojektowanymi sygnałami niskiej orbity okołoziemskiej); leo-signal (projekty sygnałów pozycjonowania, nawigacji i czasu na niskiej orbicie okołoziemskiej dla dowolnego systemu: widma ograniczone pasmowo, drżenie śledzenia kodu i dokładność pomiaru odległości, przeszukiwanie i czas akwizycji, separacja widmowa względem GPS i Galileo, odporność na zagłuszanie oraz kompromis między pasmami UHF i C, z publicznych ustawień wstępnych, takich jak Xona Pulsar, Iridium, Starlink i CentiSpace, lub z projektów podanych w treści; zależności w postaci zamkniętej i Doppler LEO VALIDATED, projekty MODELLED; zob. docs/LEO-SIGNAL.md); solar-system (Słońce, planety, Pluton, Księżyc i siedem dużych księżyców w jednej epoce: położenia, stałe, czasy światła i tory orbitalne; położenia planet VALIDATED względem JPL Horizons) i body-pnt (pozycjonowanie wokół dowolnego z tych ciał z lokalną konstelacją nawigacyjną i łączem dalekiego kosmosu z Ziemi; MODELLED); campaign (istniejące rodzaje złożone w łańcuchowy harmonogram misji ze stanem przekazywanym między fazami, przegląd parametru, zasiany zespół Monte Carlo lub kilka scenariuszy w jednym wspólnym warunku; MODELLED, zob. docs/CAMPAIGNS.md); constellation-design (wzory delta i star Walkera, listy elementów i projekty wielopowłokowe z ustawieniami wstępnymi GPS, Galileo, BeiDou i GLONASS oraz pokrycie i rozmycie dokładności na siatce szerokości i długości geograficznej; generator i globalny DOP GPS VALIDATED względem opublikowanych dokumentów usługi, zob. docs/CONSTELLATION-DESIGN.md); leo-pass (przejście satelity pozycjonowania, nawigacji i czasu (PNT) na niskiej orbicie okołoziemskiej (LEO) i jego budżet łącza pasmo po paśmie, dla dowolnej konstelacji i dowolnego projektu sygnału: kąty widzenia, Doppler i jego tempo, tłumienie ITU-R przez deszcz, gazy, scyntylacje i wnikanie do budynków, gęstość nośna do szumu względem satelitów GNSS MEO w zasięgu, jonosfera pierwszego rzędu i pary wolne od jonosfery, budżet namiaru o niskiej energii, sondowanie jonosfery z każdej pary pasm oraz monitory spoofingu według spójności Dopplera i geometrii przejścia i według spójności międzypasmowej; człony ITU-R i obwiednia Dopplera użytkownika nieruchomego VALIDATED, przejście MODELLED, zob. docs/LEO-PASS.md); leo-navmsg (komunikat efemeryd i zegara rozgłaszany przez satelitę PNT na niskiej orbicie okołoziemskiej (LEO), dla dowolnej orbity i nośnej: dopasowanie od całkowanej orbity prawdziwej do zestawu keplerowskiego Galileo, ten zestaw z wielomianami poprawek wzdłuż toru, w poprzek toru i radialnych, 22-parametrowy model Liu i in. 2025 lub wielomian ECEF ATOMIC z zerowym zegarem; błąd odległości sygnału w przestrzeni (SISRE) w funkcji przedziału dopasowania i okresu aktualizacji, kontrola ciągłości aktualizacji w trakcie przejścia, własna udokumentowana ramka binarna Kshana z cykliczną kontrolą nadmiarową CRC-24Q i budżetem kwantyzacji oraz blok w stylu RINEX-4 oznaczony jako rozszerzenie Kshana; wagi SISRE, algorytm użytkownika Galileo i CRC-24Q VALIDATED, dopasowania MODELLED; opcjonalne ustawienia wstępne dla Xona Pulsar, Iridium, Starlink, CentiSpace, reprezentatywnego systemu pasma C, ATOMIC i Celeste IOD; zob. docs/LEO-NAVMSG.md); trójka połączonego PNT MEO + LEO leo-pvt (pozycjonowanie Dopplerowskie z prędkości zmiany odległości LEO, wspólne namiary pseudoodległości GNSS + LEO z błędami międzysystemowymi i DOP w funkcji liczby satelitów LEO, pokrycie polarne i arktyczne oraz transfer czasu LEO do UTC, dla dowolnej konstelacji, z opcjonalnymi ustawieniami wstępnymi, takimi jak sygnały okazjonalne Xona Pulsar, Iridium i Starlink; obwiednia Dopplera LEO VALIDATED względem opublikowanych wartości Iridium i Xona), leo-ppp (zbieżność precyzyjnego pozycjonowania punktowego samym GNSS i z uzupełnieniem LEO, porównana z Li i in. 2019) i ntn-positioning (pozycjonowanie 5G w sieci pozaziemskiej z granicy Craméra-Rao dla pasma sygnału), MODELLED poza tą obwiednią, zob. docs/LEO-PNT-FUSION.md; leo-pnt-chain (jeden system LEO-PNT od końca do końca: projekt leo-signal niesiony przez pasmo leo-pass, C/N0 przejścia i błąd odległości sygnału w przestrzeni komunikatu nawigacyjnego przekazane do połączonego namiaru leo-pvt i zbieżności leo-ppp, z wypisanym każdym przekazaniem; MODELLED, zob. docs/LEO-PNT.md, które jest też przeglądem każdego rodzaju i scenariusza LEO-PNT, w tym kampanii odporności, po jednym scenariuszu na obszar zainteresowania eksperymentu i po jednym na pionową dziedzinę użytkownika końcowego); zestaw księżycowego PNT lunar-vlbi, lunar-joint-od-clock, lunar-frame-realisation, moonlight-service-volume, lunar-differential-pnt, lunar-interop-export; demonstrator PNT z wykorzystaniem kwantowym quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; oraz rodzaje badawcze bezpieczeństwa sygnałów, cislunarne i warstwowej odporności lunar-attack-surface, realtime-frame-eop, lunar-time-budget, hybrid-optical-rf, cislunar-observability, conflict-resilience. Trójka analiz misji i te późniejsze rodzaje są w całości MODELLED (każdy ze sprawdzonym rdzeniem w postaci zamkniętej; zob. macierz). Wspólne pola: seed, siatka [time], oś czasu dostępności [gnss] (źródło przerw) oraz bloki poszczególnych czujników z ciągami provenance cytującymi źródło każdej wartości. Przykład (clock):
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
Pola opcjonalne (wyłączone, gdy ich brak): zegar może dodać flicker_floor (poziom Allana szumu 1/f FM, czyli modulacji częstotliwości); czujnik inercyjny może dodać gyro_bias i q_arw (dryf żyroskopu i błądzenie kąta losowego) oraz bias_instability i q_aa (poziom Allana niestabilności biasu i błądzenie przyspieszenia losowego), razem jednoosiowy (1-DOF) budżet błędu akcelerometru (VRW/ARW, czyli błądzenie losowe prędkości i kąta, oraz niestabilność biasu). To jest budżet błędu, który uruchamia dostarczany pakiet scenariuszy inertial. Oddzielnie biblioteka zawiera teraz zweryfikowany 3-osiowy nawigator strapdown (src/inertial/{attitude,mechanization,imu_errors}.rs): orientację kwaternionową z kompensacją coningu i sculllingu, pełną mechanizację NED (człony prędkości obrotu Ziemi i prędkości transportu, grawitacja Somigliany WGS-84) oraz deterministyczny model błędów IMU, w którym współczynnik skali, niewspółosiowość, czułość na g, kwantyzacja i narastanie prędkości są modelowane (IEEE Std 952-1997, specyfikacja i procedura testowa żyroskopów IEEE, §A.2; Groves 2013 §4,3). Ta ścieżka 3-osiowa jest teraz podłączona do uruchamialnego pakietu luźno sprzężonego GNSS/INS (kind = "gnss-ins"): 15-stanowy filtr EKF stanu błędu dyscyplinuje rozwiązanie strapdown względem zaszumionych namiarów, gdy GNSS działa, a następnie przechodzi przez przerwę bez wsparcia, raportując połączony błąd poziomy na tle wybiegu samego INS w pętli otwartej. Dostępna jest też aktualizacja ściśle sprzężona w pseudoodległości (tworzy innowację w dziedzinie odległości, więc wciąż koryguje przy mniej niż czterech satelitach). Scenariusz holdover zegara może dodać runs (> 1), aby uruchomić zespół Monte Carlo: każdy wskaźnik jakości jest wtedy podawany jako średnia z rozrzutem między 5. a 95. percentylem, a wykres zacieniowuje pasmo ufności błędu (zob. scenarios/clock-ensemble.toml).
Scenariusz fusion (te same bloki co hybrid) uruchamia dwa niezależne estymatory Kalmana, jeden dla stanu zegara i jeden dla stanu pozycji, dyscyplinowane przez GNSS i wspomagane optycznym transferem czasu, i raportuje połączony wskaźnik jakości holdover. Te dwa bloki nie mają wspólnej kowariancji: to jest ułożona obok siebie para budżetów błędu, a nie prawdziwy sprzężony filtr wspólny zegara i pozycji (kowariancja między blokami jest pozycją planu rozwoju). Zob. scenarios/fusion-pnt.toml.
Scenariusz spoof wstrzykuje spoofing czasu, jeden z czterech rodzajów [attack.shape] (linear_ramp, step_jump, meaconing, replay; sama rate_ns_per_s jest nadal przyjmowana jako liniowa rampa), i uruchamia detektor spoofingu każdego zegara. Detektorem jest dwustronny test energii χ²₁ / test Neymana–Pearsona na statystyce monitora wspomaganej zegarem: próg jest ustawiany z docelowego budżetu fałszywych alarmów target_pfa, a prawdopodobieństwo niewykrycia P_md jest podawane zarówno w postaci zamkniętej, jak i metodą Monte Carlo (mc_runs prób na hipotezę; obie wartości zgadzają się do kilku ×1/√N). Wskaźnik jakości Security to 1 − P_md przy operacyjnie szkodliwej (specyfikowanej) wielkości, więc spokojny zegar, który wychwytuje spoofing o wielkości ze specyfikacji, dostaje ≈ 1, a hałaśliwy, który często go nie wychwytuje, dostaje mniej (zob. scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).
Scenariusz gnss-sim to symulacja w dziedzinie pomiarów: dla każdego widocznego satelity syntezuje pseudoodległość ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath i Dopplera L1, z jednoczęstotliwościową jonosferą Klobuchara ([iono], IS-GPS-200 §20.3.3.5.2.5) i zenitalną troposferą Saastamoinena rzutowaną funkcją odwzorowania Niella (1996) ([tropo]). Residua zasilają migawkowy RAIM dla HPL/VPL w każdej epoce, a pseudoodległość, Doppler, C/N₀ i poprawki jonosferyczne i troposferyczne każdego satelity są emitowane w tablicy JSON gnss_measurements. To symulator wprost (generuje pomiary ze znanej prawdy), a nie odbiornik ani solver: przebieg bez szumu odtwarza geometrię plus poprawki z dokładnością poniżej milimetra (zob. scenarios/gnss-sim-raim.toml).
Scenariusz jamming modeluje zakłócenia RF jako budżet łącza: [jammer] (położenie ECEF, moc nadawania power_dbw, typ) podnosi stosunek zagłuszarki do sygnału w [receiver] obserwującym [constellation] Walkera. Z geometrii (tłumienie w wolnej przestrzeni i zysk anteny odbiorczej w danym kierunku) oblicza J/S każdego satelity i efektywne C/N₀ ze standardowego równania antyzagłuszeniowego (zysk przetwarzania z rozproszenia widma × współczynnik separacji widmowej Q; Kaplan & Hegarty §9,4), oraz oznacza utratę synchronizacji poniżej konfigurowalnego progu śledzenia, raportując wskaźnik jakości availability_under_jamming. Zagłuszarka szerokopasmowa o mocy 10 W z odległości 1 km całkowicie uniemożliwia pracę odbiornika (J/S ≈ 72 dB); ta sama zagłuszarka z odległości 100 km tylko pogarsza łącza (zob. scenarios/jamming-demo.toml).
Scenariusz sweep prowadzi badanie kompromisowe: zmienia jeden parameter (threshold_ns, duration_s, quantum_q_wf lub classical_q_wf) od start do stop w steps punktach na scale lin lub log, zapisuje metric (np. holdover_s) dla obu zegarów i rysuje dwie krzywe. Scenariusz bazowy trafia do [base] (zob. scenarios/sweep-clock-stability.toml).
Scenariusz sweep-nd uogólnia to na dowolny pakiet i dowolną liczbę osi: zmienia klucze TOML w notacji z kropkami scenariusza [base] (o dowolnym kind) na iloczynie kartezjańskim [[axes]], ponownie uruchamia każdy węzeł siatki i zapisuje metrics podane jako ścieżki JSON w notacji z kropkami w wyniku (np. classical.fom.holdover_s). Działa dla każdego pakietu, ponieważ operuje na granicy TOML/wynik; uruchomienia natywne oceniają siatkę równolegle (bez dodatkowych zależności, wasm wraca do trybu sekwencyjnego), a wynik jest deterministyczny i w porządku wierszowym (zob. scenarios/sweep-nd-inertial.toml).
Scenariusz orbit wyprowadza oś czasu [gnss] z geometrii zamiast ją zapisywać: podaj orbitę [user], [constellation], mask_deg elewacji i dwa bloki zegarów. Raportuje też dokładność pozycji z geometrii satelitów; opcjonalne sigma_uere_m (błąd równoważny odległości użytkownika, 1-sigma, domyślnie 1 m) skaluje pozycyjne rozmycie dokładności do sigmy pozycji. Orbita użytkownika może być ekscentryczna dzięki eccentricity i argp_deg, a j2 = true dodaje wiekowy dryf od spłaszczenia Ziemi (zob. scenarios/orbit-molniya.toml). Konstelacja może być zamiast tego rzeczywista: podaj w [constellation] blok tle z zestawami elementów dwuwierszowych, a satelity zostaną z niego wczytane (zob. scenarios/orbit-real-tle.toml). Dodaj jeden lub więcej bloków [[constellations]] dla wielosystemowego GNSS (np. GPS + Galileo; zob. 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
Rodzaje alt-PNT bez GPS nawigują bez żadnego GNSS, dopasowując zmierzony ciąg pola do mapy filtrem cząsteczkowym. Scenariusz gravity-map prowadzi tor przez pole anomalii grawitacyjnych w harmonikach sferycznych i odzyskuje go z odczytu grawimetru z zimnymi atomami (scenarios/gps-denied-gravity-nav.toml); scenariusz terrain-nav robi to samo względem cyfrowego modelu terenu SRTM (TERCOM/SITAN, scenarios/terrain-nav.toml); a scenariusz combined-altpnt łączy w jednym filtrze grawitację + magnetyzm IGRF + teren (scenarios/combined-altpnt.toml).
Scenariusz lunar-integrity ocenia PNT cislunarne: wykonuje przebieg poziomu ochrony ARAIM na południowym biegunie Księżyca względem zestawu przekaźników LunaNet/LNIS i uczciwie raportuje lukę integralności: lunarne σ_URE rzędu ~30 m podnosi poziom ochrony znacznie ponad limit alarmowy 50 m, więc usługa jest niedostępna według reguł integralności w stylu lotniczym (scenarios/lunanet-araim.toml).
Scenariusz lunar-time-offset raportuje relatywistyczne tempo zegara Ziemia–Księżyc, podstawę skali Lunar Coordinate Time (LTC/TCL). Tożsamość postnewtonowska z pierwszych zasad sumuje różnicę potencjałów własnych (potencjał geoidy IAU L_G minus potencjał własny powierzchni Księżyca) i człon kinetyczny Księżyca (Doppler drugiego rzędu) do wiekowego tempa ≈ 57 µs/dobę, podawanego z opublikowanym pasmem 56–59 µs/dobę; podaje też skumulowane przesunięcie LTC−TT na horyzoncie oraz zespół z odwrotnością wariancji (księżycowy zegar papierowy). MODELLED: wartość nagłówkowa zależy od odniesienia (geoida Ziemi a selenoida Księżyca, okno uśredniania), dlatego podawane jest pasmo, a nie pojedyncza liczba uznana za wiążącą (scenarios/lunar-time-offset.toml).
Zob. scenarios/, gdzie jest co najmniej jeden działający przykład każdego rodzaju (92 rodzajów, 193 plików scenariuszy .toml + 1 manifest zestawu; kilka rodzajów ma więcej niż jeden przykład). Nie każdy rodzaj ma plik nazwany od siebie: lunar-integrity → scenarios/lunanet-araim.toml i gravity-map → scenarios/gps-denied-gravity-nav.toml to dwa z kilku takich przypadków. Rodzaje, które można uruchomić, wypiszesz w każdej chwili przez błędy cargo run -- --validate <file>, przez funkcję Pythona list_kinds() albo przez narzędzie MCP list_scenario_kinds.
Wynik
Wynik#
Artefakt wyniku to wersjonowany, samoopisujący się JSON: szeregi czasowe poszczególnych kroków, ocenione wskaźniki jakości, aktywne specyfikacje modeli (z pochodzeniem), ziarno, skrót scenariusza (dzięki któremu każdy wykres można odtworzyć z pliku) oraz, dla każdego zegara, adev_curve ([{tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi}]): nakładające się odchylenie Allana dla czasów uśredniania rozmieszczonych oktawowo (standardowy sposób odczytu stabilności zegara), teraz z pasmem ufności 95% zależnym od typu szumu przy każdym punkcie (typ potęgowy zapisu jest rozpoznawany z nachylenia zmodyfikowanego odchylenia Allana, a przedział χ² używa odpowiadających mu efektywnych stopni swobody NIST SP 1065). Plac zabaw w przeglądarce rysuje go jako wykres log-log „Stabilność zegara (ADEV)”. (MDEV, TDEV i HDEV są dostępne jako estymatory biblioteczne; eksportowaną krzywą wyniku jest nakładające się ADEV.) Każde pole, z jednostkami i wskazaniem źródła, jest udokumentowane w docs/SCHEMA.md.
Każdy wykres jest samoopisujący się. Plac zabaw w przeglądarce, eksport *.chart.svg z CLI i karta wyników HTML (HyperText Markup Language) opatrują każdy obraz wykresu stopką o treści Kshana v<version> · scenario <hash> · kshana.dev. scenario <hash> to pierwsze 12 znaków szesnastkowych skrótu scenariusza przebiegu: skrótu SHA-256 (256-bitowy Secure Hash Algorithm) z kanonicznej definicji scenariusza (ziarno, progi, parametry modelu, okna GNSS, …); raporty integralności i księżycowe, które nie mają własnego skrótu, używają SHA-256 ze źródła scenariusza. To ten sam odcisk, który widać w jednowierszowym podsumowaniu i w JSON wyniku, więc zapisany lub wklejony wykres zawsze niesie swoją wersję, dokładny scenariusz, który go wytworzył (do odtworzenia bit po bicie) i źródło: zmień dowolne wejście, a skrót się zmieni.
Wskaźniki jakości odpowiadają standardowym operacyjnym wskaźnikom jakości PNT:
| Wskaźnik jakości | Jak Kshana go oblicza |
|---|---|
| Wydajność czasowa (pakiety zegara i orbity) | błąd fazy zegara, RMS i 95. percentyl w czasie przerwy, w nanosekundach (timing_rms_ns): miara czasu, a nie pozycji |
| Wydajność pozycjonowania (pakiety inercyjne i hybrydowe) | RMS błędu pozycji 1-DOF i 95. percentyl w czasie przerwy, w metrach (pos_rms_m); jedna oś. Pojedynczy przebieg jest oznaczany monte_carlo: false; ustaw runs = N, aby uzyskać zespół Monte Carlo, który podaje dla każdej miary średnią, rozrzut i 95% przedział ufności metodą bootstrap (CI, confidence interval). Wciąż nie jest to 2-wymiarowe CEP/2DRMS (błąd kołowy prawdopodobny / dwukrotność pierwiastka ze średniej kwadratowej odległości) ani dokładność ważona DOP (te wymagają modelu 3-osiowego, pozycja planu rozwoju) |
| Autonomia | czas holdover: czas w specyfikacji po utracie GNSS (skwantowany siatką: dolne ograniczenie) |
| Odporność | nachylenie narastania błędu w czasie przerwy |
| Dostępność | ułamek przebiegu z rozwiązaniem w specyfikacji |
| Integralność | samospójność filtra: ułamek próbek podczas przerwy, których błąd mieści się we własnej granicy k-sigma filtra Kalmana. Nie jest to lotnicza miara integralności HPL/VPL/RAIM (zob. docs/INTEGRITY.md) |
| Bezpieczeństwo | analityczna granica wykrywalności spoofingu ze stabilności zegara: jak mały lub wolny spoofing czasu mógłby oznaczyć monitor spójności jednego zegara. Ma sens tylko ze skonfigurowanym atakiem; nie jest wielosatelitarnym detektorem RAIM |
Nowe pojęcia? Każde jest zdefiniowane prostym językiem w słowniczku.
Układ repozytorium
Układ repozytorium#
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 (często zadawane pytania)
FAQ#
Czy muszę rozumieć fizykę kwantową, żeby tego używać? Nie. Jeśli potrafisz uruchomić wiersz poleceń, uruchomisz Kshana. Zacznij od wprowadzenia prostym językiem; pojęć szukaj w słowniczku.
Czy to projekt sprzętu kwantowego albo oprogramowanie pokładowe? Nie. To symulator wydajności. Wierność sprzętu kwantowego pochodzi z opublikowanych modeli błędów, a nie z tego narzędzia. Zob. Czym jest, a czym nie jest.
Czy wyniki kwantowe są realistyczne, czy to marketing? Każdy parametr jest przypisany do karty katalogowej lub pracy, każdy model jest sprawdzony względem zależności podręcznikowej, a dojrzałość jest uczciwie oznaczona w VALIDATION.md, w tym to, że żaden optyczny zegar strontowy nie latał w kosmosie. Silnik jest neutralny: kwantowy i klasyczny to ten sam kod z różnymi opublikowanymi liczbami.
Czy mogę zaufać, że dwa przebiegi się zgadzają? Tak, przebiegi są deterministyczne: scenario + seed + engine version → bit-identical output, co wymusza scripts/check-reproducible.sh.
Czy mogę używać tego z Pythona lub w przeglądarce? Tak, zob. Instalacja: przykłady w Pythonie i WebAssembly są pod nią. Oba wywołują ten sam silnik.
Jak zamodelować własny czujnik? Napisz scenariusz .toml z opublikowanymi wartościami swojego czujnika w polach provenance. Zob. Format scenariusza i przykłady w scenarios/.
Czy jest bezpłatny do użytku komercyjnego? Tak, na licencji AGPL-3.0, także w warunkach komercyjnych, o ile przestrzegasz copyleftu AGPL (w szczególności: jeśli zmodyfikujesz Kshana i udostępnisz ją przez sieć, musisz udostępnić tym użytkownikom swój zmodyfikowany kod źródłowy). Jeśli to Ci nie odpowiada, np. musisz osadzić Kshana w zastrzeżonym produkcie lub uruchamiać zamkniętą usługę sieciową, licencja komercyjna jest dostępna od Ashforde® OÜ; zob. LICENSING.md i Wsparcie.
Rozwiązywanie problemów
Rozwiązywanie problemów#
cargo build kończy się błędem na starym toolchainie. Kshana wymaga Rust ≥ 1,88. Zaktualizuj poleceniem rustup update.
Budowanie rozszerzenia Pythona kończy się błędem konsolidacji w macOS (Undefined symbols … _Py…). Rozszerzenie Pythona rozwiązuje swoje symbole w czasie ładowania. maturin ustawia właściwą flagę konsolidatora automatycznie: użyj maturin develop --features python zamiast samego cargo build.
Kompilacja Pythona zgłasza, że interpreter jest nowszy, niż zna PyO3. Ustaw PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (koła abi3 są zgodne w przód między wersjami CPython).
Kompilacja WebAssembly nie może znaleźć celu. Zainstaluj go jednorazowo poleceniem rustup target add wasm32-unknown-unknown, a potem wasm-pack build --target web -- --features wasm.
Gdzie się podziało moje wyjście? Każdy przebieg zapisuje <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html i <scenario>.report.json obok wejściowego .toml, a dla rodzajów, które publikują tabelę, także <scenario>.table.csv. Wszystkie są celowo ignorowane przez git.
Wersjonowanie i wydania
Wersjonowanie i wydania#
Kshana stosuje Semantic Versioning. Przed wersją 1.0 publiczny schemat scenariuszy i wyników może się jeszcze zmieniać; zmiany niezgodne są wyraźnie opisane w CHANGELOG.md. Każdy wynik można odtworzyć z scenario + seed + engine version.
Każdy tag vX.Y.Z publikuje automatycznie wszystkie kanały, w jednej kolejności: najpierw na oznaczonym commicie działa pełny zestaw testów, nic nie jest publikowane, dopóki nie przejdzie, a potem potok sprawdza, czy każdy rejestr rzeczywiście udostępnia nową wersję (docs/RELEASING.md). Kanały:
| Kanał | Instalacja / pobranie | Spis treści |
|---|---|---|
| crates.io | cargo install kshana · kshana = "0.35" |
Biblioteka Rust + CLI |
| crates.io | cargo install kshana-mcp |
serwer MCP |
| PyPI (Python Package Index) | pip install kshana |
koła abi3 (Linux/macOS/Windows) + sdist (dystrybucja źródłowa) |
| npm | npm install kshana |
moduł WebAssembly + nakładka JS |
| ghcr.io | docker run -i ghcr.io/ashfordeou/kshana-mcp |
wieloarchitekturowy obraz OCI (Open Container Initiative), bez potrzeby toolchainu |
| npm | npx -y kshana-mcp@0.40.0 |
program uruchamiający: pobiera binarium wydania, weryfikuje SHA256SUMS i je uruchamia |
| PyPI | uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 |
ten sam program uruchamiający dla Pythona |
| Homebrew · Scoop · winget | brew install ashfordeOU/tap/kshana-mcp · scoop install kshana-mcp · winget install AshfordeOU.KshanaMcp |
binarium kshana-mcp, generowane z SHA256SUMS każdego wydania |
| oficjalny rejestr MCP | wykrywany automatycznie przez klientów MCP | io.github.ashfordeOU/kshana-mcp (obraz OCI, pakiety npm i PyPI) |
| JetBrains Marketplace | IDE → Plugins → wyszukaj „Kshana” | wtyczka IDE Kshana — PNT simulator |
| Zenodo | DOI | archiwum każdego wydania, które można cytować |
| kshana.dev | otwórz w przeglądarce | Kshana Studio, aplikacja WebAssembly w przeglądarce, odbudowywana z każdego taga wydania (więc wersja, którą pokazuje, jest wersją, którą uruchamia) |
Wersja crate, obrazu i rejestru serwera MCP podąża za silnikiem (zawiera on bibliotekę); wtyczka JetBrains ma niezależne wersjonowanie (wywołuje zainstalowane u Ciebie binarium kshana).
Plan rozwoju
Plan rozwoju#
Zob. ROADMAP.md, gdzie jest fazowy plan rozwoju, CHANGELOG.md, gdzie jest historia wydań, i docs/CAPABILITY.md, gdzie jest plan rozwoju poszczególnych możliwości. Kolejność priorytetów jest taka: najpierw dowody dla synchronizacji czasu i holdover w infrastrukturze krytycznej (maski telekomunikacyjne, dłuższy holdover ze starzeniem i szumem migotania, wczytywanie zmierzonych danych zegara); w drugiej kolejności neutralna metoda kompromisu między rozwiązaniami kwantowymi a klasycznymi (wyniki oznaczone MODELLED, dopóki zmierzone dane partnera ich nie awansują); oraz nawigacja księżycowa, cislunarna i w dalekim kosmosie jest utrzymywana, a nie rozwijana jako główny kierunek. Precyzyjna redukcja ramek ITRF jest już dostarczona: pełny łańcuch GCRS↔ITRS IAU 2006/2000A oparty na CIO (ruch bieguna + nutacja poniżej sekundy łuku), sprawdzony co do bitu względem SOFA/ERFA i niezależnie sprawdzony krzyżowo względem ANISE (SPICE w czystym Rust) do ≤ 3,6 m na orbicie GNSS. Pozycje bliskiego terminu to ściśle sprzężone łączenie fazy nośnej i udostępnienie luźno i ściśle sprzężonego nawigatora GNSS/INS w większej liczbie pakietów; silnik radiometrycznej nawigacji w dalekim kosmosie i na Marsie pojawił się w v0.17.0 (sprawdzony symulacją). Warstwa fizyki kwantowej jest pozycją P2: akcelerometr CAI jest teraz symulowany z pierwszych zasad (faza Macha–Zehndera, szum projekcji, zanik kontrastu, sprzężenie drgań), a czujniki zegara i transferu czasu są nadal sterowane opublikowanymi współczynnikami Allana i budżetu szumu. TEME↔ECEF oparte na GMST, systemy czasu IERS z sekundami przestępnymi (UTC/TAI/TT/UT1), propagacja orbit SGP4/SDP4 (v0.7.0, sprawdzona względem wektorów AIAA 2006-6753) i uruchamialny pakiet fuzji gnss-ins zostały dostarczone, a prędkość inercyjna jest udostępniona dalej. Na main trafiły: aktywny stochastyczny detektor spoofingu czasu (test energii Neymana–Pearsona / χ²₁ z P_fa/P_md metodą Monte Carlo i wskaźnikiem Security równym 1−P_md), model zagłuszania jako budżet łącza (J/S → efektywne C/N₀ → utrata synchronizacji), dostępność wielokonstelacyjna, jednoosiowy (1-DOF) budżet błędu IMU, dwa niezależne estymatory Kalmana (zegar + pozycja) raportowane jako połączony wskaźnik jakości, rzeczywista geometria konstelacji z TLE, raport w postaci karty wyników HTML, dostępność GNSS i rozmycie dokładności wyprowadzone z geometrii orbit keplerowskich z ekscentrycznością i dryfem J2, pasma ufności Monte Carlo, przeglądy parametrów w badaniach kompromisowych, plac zabaw WebAssembly w przeglądarce oraz opcjonalne wiązania Pythona (PyO3) i WebAssembly (wasm-bindgen).
Współtworzenie
Współtworzenie#
Zob. CONTRIBUTING.md. W skrócie: testy przechodzą (cargo test), dwa skrypty kontrolne przechodzą, Conventional Commits oraz wpis [Unreleased] w CHANGELOG.md dla każdej zmiany widocznej dla użytkownika. Udział w projekcie reguluje nasz Kodeks postępowania. Aby zgłosić problem bezpieczeństwa, zob. Politykę bezpieczeństwa; prosimy nie otwierać publicznego zgłoszenia o podatnościach.
Dokumentacja: każdy dokument i dla kogo jest
Dokumentacja#
| Dokument | Dla kogo | Co zawiera |
|---|---|---|
| Wprowadzenie do pojęć | dla wszystkich, zacznij tutaj | co Kshana robi i dlaczego, od zera do fizyki |
| Kshana Studio | dla wszystkich | uruchom silnik w przeglądarce (WebAssembly); uwagi o budowaniu i wdrażaniu |
| Słownik | dla wszystkich | definicje każdego pojęcia prostym językiem |
| Rodzaje scenariuszy | dla wszystkich | każdy rodzaj, który silnik obsługuje: co robi, jego pola, przykładowe polecenie, jego wiersze rejestru i wykres, który dla niego zapisuje silnik |
| Dane partnera | laboratoria i producenci posiadający zmierzone dane | które wiersze MODELLED mógłby awansować zmierzony zapis zegara lub IMU, jakie formaty, jak zgłoszenie jest sprawdzane (kshana partner check), oceniane i zaliczane |
| Architektura | programiści / recenzenci | mapa modułów, potok silnika, rozdzielanie i diagramy |
| Stan walidacji | recenzenci / cytujący | co jest validated, a co not modeled, z dowodami |
| Macierz weryfikacji | recenzenci / cytujący | sprawdzany maszynowo rejestr dowodów: każdy wiersz możliwości z jego statusem, modułem, testem i zewnętrzną wyrocznią, generowany z src/verification.rs |
| Uzasadnienie dla wartości modelowanych | recenzenci | dlaczego każdy wiersz modelowany nie ma zewnętrznej wyroczni, wyjaśnione wiersz po wierszu |
| Pochodzenie | recenzenci / cytujący | każdy parametr czujnika, model i zbiór danych powiązany z opublikowanym źródłem, w jednej tabeli nadającej się do cytowania |
| Odtwarzalność i pochodzenie | recenzenci / pakujący | gwarancje determinizmu, przypinanie wzorców (golden), SBOM (wykaz składników oprogramowania), pochodzenie kompilacji |
| Znaczniki platform kół | pakujący | macierz kół Pythona abi3: który znacznik platformy rozstrzyga pip install kshana |
| Pozycjonowanie | oceniający | gdzie Kshana stoi względem RTKLIB/gLAB (uzupełniająco) i warstwa bez instalacji w przeglądarce |
| Kshana Pro | oceniający / kierownicy programów | co zastrzeżona nakładka Pro dodaje do tego samego silnika: optymalizator projektu, niepewność i czułość, dossier misji, obserwacja kampanii, współistnienie widmowe, lokalna usługa zadań, śledzenie wymagań; co każdy z tych elementów daje i czego nie robi |
| Raport techniczny · Praca JOSS | recenzenci / cytujący / oceniający | pełna rozszerzona praca badawcza: architektura, modele poszczególnych dziedzin, walidacja, studia przypadków i ograniczenia, oraz zwięzłe zgłoszenie do JOSS (Journal of Open Source Software) |
| Walidacja SGP4 | recenzenci / cytujący | zgodność z wzorcem AIAA 2006-6753 (666 stanów, ~4 mm) oraz bezpośrednie porównanie z niezależnym crate sgp4 (zgodność do poziomu poniżej mikrometra / 4,12 mm) |
| Walidacja modelu sił | recenzenci / cytujący | silnik pełnych sił (src/precise_od.rs) dopasowany do efemeryd agencji: metodyka i sprawdzone residua |
| Przewodnik po rzeczywistych TLE | użytkownicy | prowadzenie scenariuszy z rzeczywistych TLE konstelacji z Celestrak / Space-Track (zamiast dołączonego syntetycznego zestawu Walkera) |
| Wskaźnik jakości Integrity | oceniający | co znaczą wartości integrity / security i czym nie są w porównaniu z lotniczym HPL/VPL |
| Opis ARAIM | recenzenci / integratorzy | otwarta implementacja poziomu ochrony ARAIM MHSS: rzut nominalnego biasu b_k, σ_URA a σ_URE oraz prawdopodobieństwa a priori trybów uszkodzeń |
| Modele kwantowe · szczegóły | recenzenci | warstwa fizyki interferometru z zimnymi atomami i miejsca, w których współczynniki są wciąż wyszukiwane |
| Compliance | oceniający | zakres algorytmów DO-229E / DO-316 i to, co nie jest deklaracją spełnienia normy |
| Zaufanie na morzu | żeglarze / integratorzy | wskaźnik zaufania do GNSS w skali 0-100 dla NMEA statku, jego monitory i ograniczenia (wyłącznie doradczo, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu) |
| Strumienie szkoleniowe NMEA | trenerzy morscy | syntetyczne NMEA z mostka ze skryptowanym zagłuszaniem i spoofingiem oraz dziennikiem instruktora; tylko tekst, nigdy do nawigacji na żywo |
| Mapa zakłóceń | analitycy / żeglarze | gdzie statki powietrzne i statki zgłaszały pogorszone dane nawigacyjne i jak duży fragment trasy to obejmuje |
| Pakiety dowodowe | operatorzy / ubezpieczyciele | podpisane zapisy techniczne zdarzenia zaufania i sposób ich weryfikacji |
| Telemetria zaufania | zespoły operacyjne / bezpieczeństwa | strumień zaufania jako metryki Prometheus, zdarzenia SIEM i OpenTelemetry, z panelem Grafana |
| Integracje morskie | właściciele jachtów / integratorzy | wtyczka Signal K, tryb bramki OpenCPN i budowa referencyjna |
| Test bench | producenci odbiorników | odtwarzanie wyeksportowanego scenariusza przez symulator laboratoryjny i ocena dziennika odbiornika |
| Mapowanie compliance | oceniający | publiczne ramy odporności zmapowane na wyniki Kshana, ze źródłami i lukami; kshana compliance-report |
| Notatniki | użytkownicy | uruchamialne samouczki z ich wyrenderowanym tekstem |
| Standardy i interoperacyjność | integratorzy | formaty wymiany GNSS / dynamiki lotu / agencji, które Kshana czyta i zapisuje (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …) |
| Fuzja LEO PNT | użytkownicy / oceniający | połączone pozycjonowanie, nawigacja i czas MEO + LEO: Doppler, wspólna pseudoodległość, zbieżność PPP, 5G NTN, pokrycie polarne i transfer czasu LEO dla dowolnej konstelacji; opcjonalne ustawienia wstępne i ich publiczne źródła |
| Kampanie | użytkownicy / oceniający | składanie scenariuszy: łańcuchowe harmonogramy misji, przeglądy parametrów, zespoły Monte Carlo i przebiegi we wspólnych warunkach, z tożsamościami składania, które przypinają testy |
| Katalog scenariuszy | użytkownicy / integratorzy | każdy rodzaj, który można uruchomić, z jego wymaganymi i opcjonalnymi polami TOML, generowany z api::list_scenario_kinds() |
| Schemat wyniku | integratorzy | każde pole JSON wyniku, z jednostkami i wskazaniem źródła |
| API Pythona | użytkownicy Pythona | powierzchnia wiązania PyO3: wywoływanie silnika, typy scenariusza i wyniku oraz przykłady |
| Twierdzenia a rzeczywistość | recenzenci | rejestr zamykania nadmiernych twierdzeń i strażnik CI (tests/no_overclaims.rs), który utrzymuje je jako rozstrzygnięte |
| Plan rozwoju | dla wszystkich | fazowy plan rozwoju: co zostało dostarczone, a co jest następne |
| Serwer MCP · Wtyczka JetBrains | agenci / użytkownicy IDE | uruchom Kshana z asystenta AI lub z IDE JetBrains |
| Przewodnik dla agenta · Powierzchnie | agenci / integratorzy | które narzędzie odpowiada na które pytanie i co zachować z każdą odpowiedzią; gdzie każda możliwość jest dostępna (CLI, Rust, Python, WASM, MCP, wtyczka, JetBrains, notatniki) i dlaczego komórka ma wartość N/A |
| Dziennik zmian | dla wszystkich | historia wydań (Keep a Changelog + SemVer, Semantic Versioning) |
| Współtworzenie | współtwórcy | budowanie, strażnicy, dyscyplina testów i cytowań, DCO (Developer Certificate of Origin) |
| Zarządzanie | współtwórcy / społeczność | jak zarządza się Kshana: kto decyduje, jak, oraz granica między otwartym a zamkniętym |
| Kodeks postępowania | społeczność | oczekiwane zachowanie (Contributor Covenant) |
| Polityka bezpieczeństwa | zgłaszający | jak zgłosić podatność; uwaga o podwójnym zastosowaniu |
Najważniejsze źródła
Najważniejsze źródła#
Wyrocznie walidacji i standardy: zewnętrzne autorytety, do których zakotwiczone są kontrole Kshana:
- Vallado, Crawford, Hujsak & Kelso — Revisiting Spacetrack Report #3 (AIAA 2006-6753; dane testowe): zestaw weryfikacyjny SGP4/SDP4, z którym Kshana zgadza się do 4,12 mm, oraz opracowane przykłady ramek, względem których sprawdza się łańcuch TEME→ITRF.
- IAU SOFA / ERFA — referencyjne procedury czasu i ramek, względem których nutacja IAU 2000A i redukcja GCRS↔ITRS oparta na CIO są sprawdzone co do bitu.
- Petit & Luzum (red.) — IERS Conventions (2010), IERS TN (Technical Note) 36 (orientacja Ziemi, ruch bieguna i standardy ramek).
- Riley — Handbook of Frequency Stability Analysis, NIST SP 1065 (zależności odchylenia Allana i szereg referencyjny NBS14; NBS = dawne amerykańskie National Bureau of Standards).
- Pedregosa i in. — scikit-learn: Machine Learning in Python, JMLR 12 (2011): referencyjne implementacje ROC/AUC, macierzy pomyłek oraz precyzji/czułości/F1, z którymi stanowisko do oceny detekcji zakłóceń RF jest dokładnie zgodne (
tests/eval_metrics_reference.rs). - Virtanen i in. — SciPy 1,0, Nature Methods 17 (2020):
optimize.nnls,stats.chi2ilinalg.expm, czyli procedury referencyjne, względem których sprawdzane są dopasowanie NNLS zmierzonego ADEV w kompromisie kwantowym, pasma spójności χ² oraz macierz kowariancji szumu procesu zegara van Loana (tests/scipy_reference.rs). - Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024): używane zarówno jako otwarty stan wiedzy (zob. Porównanie i otwarty stan wiedzy poniżej), jak i jako niezależna wyrocznia DOP, z którą obliczenia GDOP/PDOP/HDOP/VDOP/TDOP są zgodne do 1e-6 (
tests/dop_reference.rs). - Montenbruck & Gill — Satellite Orbits: Models, Methods and Applications (Springer): modele sił stojące za dopasowaniem modelu sił do precyzyjnych efemeryd agencji.
- 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 (rodziny halo/NRHO, które odtwarza korektor różnicowy CR3BP).
Fizyka urządzeń i metod: cytowane źródła stojące za modelami czujników:
- Origlia, Schiller, Bongs i in. — arXiv:1503,08457 (optyczny zegar sieciowy ze strontem, cel zorientowany na przestrzeń kosmiczną).
- Oelker i in., Nature Photonics (2019) — doi:10.1038/s41566-019-0493-4 (laboratoryjny zegar Sr, 4,8×10⁻¹⁷).
- Templier i in., Science Advances (2022) — arXiv:2209,13209 (hybrydowa trójka akcelerometrów kwantowych).
- Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation — samouczek IEEE AESS (Aerospace and Electronic Systems Society) (repozytorium University College London Discovery) (narastanie błędu nawigacji zliczeniowej).
- Giorgetta i in., Nature Photonics 7, 434 (2013) — arXiv:1211,4902; Deschênes i in., Phys. Rev. X 6, 021016 (2016) — APS (American Physical Society) (optyczny dwukierunkowy transfer czasu i częstotliwości; optyczne łącze międzysatelitarne wzorowane jest na tych pracach w budżecie niewzajemności).
- Betz — Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001), doi:10.1002/j.2161-4296.2001.tb00247.x (modulacja BOC i teoria separacji widmowej stojące za
src/navsignal.rs). - Kaplan & Hegarty (red.) — Understanding GPS/GNSS: Principles and Applications (wyd. 3, Artech House, 2017): równanie efektywnego C/N₀ przy zagłuszaniu oraz termiczne drżenie śledzenia kodu w DLL typu wczesny–późny, których używają modele sygnału nawigacyjnego i zagłuszania.
Porównanie i otwarty stan wiedzy: narzędzia i przeglądy, względem których pozycjonuje się Kshana:
- Humphreys i in. — TEXBAT (Texas Spoofing Test Battery; ION, Institute of Navigation, GNSS 2012): parametry baterii testów spoofingu, względem których charakteryzowany jest wielowarstwowy detektor.
- González i in. — NaveGo (2017): otwarte, sprawdzone profile błędów nawigacji inercyjnej używane jako klasyczny punkt odniesienia.
- Iiyama, Casadesús Vila & Gao — LuPNT (ION GNSS+ 2023, Stanford NavLab): otwarty symulator księżycowego PNT.
- Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024), doi:10.1016/j.softx.2024.101811: otwarta analiza danych GNSS.
- 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 i in. — Earth and Space Science 8(6) (2021), doi:10.1029/2020EA001454: zredukowane dynamicznie wyznaczanie orbity GRAIL, próg przyspieszenia empirycznego, który odtwarza dopasowanie LRO.