leo-navmsg (rodzaj scenariusza)
Rodzaj scenariusza silnika v0.40.0, rodzina Nawigacja z niskiej orbity okołoziemskiej. Wyłącznie doradczo: wynik analizy z narzędzia badawczo-inżynieryjnego; nie jest to sprzęt nawigacyjny z zatwierdzeniem typu ani usługa bezpieczeństwa życia. Każda etykieta tutaj pochodzi z silnika lub z macierzy weryfikacji; rodzaj jest MODELLED, chyba że macierz stanowi inaczej (jak zdobywa się etykietę: sekcja Evidence w README).
Co robi#
Komunikat nawigacyjny LEO: rozgłaszane efemerydy i zegar satelity pozycjonowania, nawigacji i czasu na niskiej orbicie okołoziemskiej (LEO), dla dowolnej orbity, nośnej i modelu, z opcjonalnymi nazwanymi ustawieniami wstępnymi (Xona Pulsar, Iridium, Starlink, CentiSpace, reprezentatywny system pasma C, model zerowego zegara ATOMIC, Celeste IOD). ZAWARTOŚĆ: dane pomocnicze (SVID, numer wydania danych, pasmo, stan sygnału), synchronizacja (tydzień, czas tygodnia, wielomian zegara drugiego rzędu af0-af2 względem toc), efemerydy w jednym z czterech modeli -- 16-parametrowy zestaw keplerowski z Galileo OS SIS ICD; ten zestaw plus wielomiany poprawek wzdłuż toru, w poprzek toru i radialnych; 22-parametrowy model Liu et al. 2025; wielomian ECEF bez składników zegara (zerowy zegar ATOMIC) -- oraz inne usługi (rozgłaszany zestaw Klobuchara, NeQuick-G ai0-ai2 z efektywnym poziomem jonizacji oraz parametry czasu systemowego do UTC z logiką sekund przestępnych z ICD). DOPASOWANIE: orbita prawdziwa całkowana z grawitacją zonalną J2-J6 lub EGM2008 do wybranego stopnia i oporem oraz zegar swobodny lub sterowany z ziarnem (seed); dopasowanie zestawu keplerowskiego metodą Levenberga–Marquardta na elementach niesingularnych, następnie liniowe wielomiany poprawek metodą najmniejszych kwadratów; zegar dopasowany po odjęciu składnika relatywistycznego, który dodaje użytkownik. ANALIZY: fit-interval-trade (błąd odległości sygnału w przestrzeni, SISRE, ze średnimi globalnymi wagami dla wysokości orbity, w funkcji przedziału dopasowania i okresu aktualizacji, tylko orbita i z zegarem), model-comparison (cztery modele, liczba parametrów, zakodowane bity oraz dopasowanie Kshana na wysokościach z Liu et al. obok opublikowanych wartości), midpass-update (najwyższy przelot nad użytkownikiem, skok położenia, zegara i odległości użytkownika przy każdej zmianie komunikatu, skok przy najgorszej geometrii, PASS/FAIL względem progu ciągłości), encode-decode (własna udokumentowana ramka binarna Kshana z CRC-24Q, budżet kwantyzacji pół kroku dla każdego pola, kontrola uszkodzonej ramki, eksport i import rekordu w stylu RINEX-4 oznaczony jako rozszerzenie Kshana oraz tabela CSV). VALIDATED: wagi SISRE względem opublikowanej tabeli MEO/GEO (Montenbruck et al. 2018); algorytm użytkownika Galileo względem RTKLIB na rzeczywistych rozgłaszanych efemerydach Galileo; CRC-24Q względem jego katalogowej wartości kontrolnej i przykładowej ramki RTCM 1005. MODELLED: każda wartość dopasowania i SISRE jest błędem reprezentacji względem prawdy całkowanej przez Kshana (bez błędu wyznaczania ani predykcji orbity); porównanie z Liu et al. używa innych orbit; formaty kodowania i tekstowe są własne Kshana.
Jeden przebieg scenarios/leo-navmsg-celeste-iod.toml podsumowuje się tak: LEO navigation message — 510 km, 97,4 deg, gravity degree 20, model kepler-rac SISRE weights: w_R 0,459, w_AC^2 1/2.53 (mask 0 deg) encode-decode: kepler-rac model, frame 152 bytes (1156 payload bits, 891 ephemeris+clock bits), CRC-24Q 0x58ADF2 quantisation: largest position change 0,52 mm, clock 0,09 mm; SISRE exact 0,0013 m, quantised 0,0013 m corrupted frame rejected: true; RINEX round trip 4.43e-6 m; CSV round trip 0.00e0 m fit-interval trade over 1800 s (usage period = fit interval): kepler16 60 s SISRE orbit RMS 0,0003 m max 0,0015 m with clock RMS 0,0006 m kepler16 120 s SISRE orbit RMS 0,0003 m max 0,0015 m with clock RMS 0,0007 m kepler16 300 s SISRE orbit RMS 0,0036 m max 0,0141 m with clock RMS 0,0037 m kepler16 600 s SISRE orbit RMS 0,0293 m max 0,1023 m with clock RMS 0,0293 m kepler16 900 s SISRE orbit RMS 0,1073 m max 0,3812 m with clock RMS 0,1075 m kepler-rac 60 s SISRE orbit RMS 0,0000 m max 0,0000 m with clock RMS 0,0005 m kepler-rac 120 s SISRE orbit RMS 0,0001 m max 0,0002 m with clock RMS 0,0007 m kepler-rac 300 s SISRE orbit RMS 0,0005 m max 0,0021 m with clock RMS 0,0012 m kepler-rac 600 s SISRE orbit RMS 0,0097 m max 0,0395 m with clock RMS 0,0096 m kepler-rac 900 s SISRE orbit RMS 0,0388 m max 0,1143 m with clock RMS 0,0390 m 16-parametrowy zestaw keplerowski pogarsza się z 0,0003 m przy 60 s do 0,1073 m przy 900 s: jeden zestaw keplerowski z harmonicznymi dwa razy na obieg nie potrafi śledzić wyższoczęstotliwościowych składników grawitacji i oporu łuku LEO dłużej niż kilka minut, a jego reszta metody najmniejszych kwadratów oscyluje w oknie. Wielomiany wzdłuż/w poprzek/radialne, wyższego stopnia niż obejmuje zestaw keplerowski, pochłaniają to, co zostaje, dając 0,0388 m przy 900 s.
Wejścia#
Ze schematu (kshana kinds --json):
- Pola wymagane: brak
- Pola opcjonalne:
name,description,seed,analysis,preset,orbit,clock,message,trade,comparison,midpass
Przykład scenarios/leo-navmsg-celeste-iod.toml ustawia między innymi:
| Pole | Wartość | Jednostka |
|---|---|---|
analysis |
[encode-decode, fit-interval-trade] | nie podano |
kind |
leo-navmsg | tekst |
message.csv_schema |
celeste-iod | tekst |
name |
Komunikat Celeste IOD (ustawienie wstępne warsztatowe) | tekst |
preset |
celeste-iod | tekst |
seed |
15 | nie podano |
trade.fit_intervals_s |
[60, 120, 300, 600, 900] | s |
trade.models |
[kepler16, kepler-rac] | nie podano |
trade.span_s |
1800 | s |
trade.update_fit_interval_s |
300 | s |
trade.update_periods_s |
[60, 150, 300] | s |
Uruchom#
kshana scenarios/leo-navmsg-celeste-iod.toml
Ten rodzaj stosuje 5 dołączonych scenariuszy; pozostałe są w scenarios/.
Co daje#
Wyniki skalarne tego przebiegu, z jednostkami podanymi przez silnik:
| Wynik | Wartość | Jednostka |
|---|---|---|
encode_decode.corrupted_frame_rejected |
true | flaga |
encode_decode.crc24q |
0x58ADF2 | tekst |
encode_decode.crc24q_check_value_123456789 |
0xCDE703 | tekst |
encode_decode.csv_round_trip_max_pos_m |
0 | m |
encode_decode.csv_schema |
celeste-iod | tekst |
encode_decode.ephemeris_clock_bits |
891 | bit |
encode_decode.frame_bytes |
152 | byte |
encode_decode.model |
kepler-rac | tekst |
encode_decode.payload_bits |
1156 | bit |
encode_decode.quantised_max_clock_m |
9.4929e-5 | m |
Etykieta wyniku (silnika): MIXED — elementy składowe VALIDATED, wyniki MODELLED. Wagi SISRE odtwarzają opublikowaną tabelę MEO/GEO (Montenbruck et al. 2018), algorytm użytkownika z ICD Galileo odtwarza RTKLIB na rzeczywistych rozgłaszanych efemerydach Galileo, a CRC-24Q odtwarza swoją katalogową wartość kontrolną i przykładową ramkę RTCM 1005
Dowody#
MODELLED 5 · VALIDATED 6: wiersze macierzy weryfikacji, które wymieniają ten rodzaj.
- VALIDATED leo_navmsg::sisre::sisre_weights: waga radialna w_R i kwadrat wagi poprzecznej w_AC^2 jako średnie z cos^2 i połowy sin^2 kąta nadirowego linii widzenia po użytkownikach rozłożonych równomiernie na widocznej czaszy Ziemi powyżej elevati
- VALIDATED leo_navmsg::elements::kepler_point: wyznaczanie keplerowskie z Galileo OS SIS ICD (równanie Keplera, poprawki drugiej harmonicznej, węzeł związany z Ziemią) napisane osobno od ewaluatora RINEX silnika, zwracające położenie z argumentem Testy: leo_navmsg_reference.rs.
- VALIDATED leo_navmsg::codec::crc24q: wielomian generujący 0x1864CFB, wartość początkowa 0, bez odbicia, bez końcowego XOR, kontrola, którą ramka LEO Kshana niesie nad każdym poprzedzającym bajtem
- VALIDATED Dopasowanie i przegląd rodzaju
leo-navmsg: orbita prawdziwa całkowana z grawitacją zonalną J2-J6 lub EGM2008 do wybranego stopnia i oporem oraz zegar swobodny lub sterowany z ziarnem (seed); dopasowanie Levenberga–Marquardta zestawu keplerowskiego Galileo na niesingularnych - oraz 7 kolejnych w macierzy.
Wiersze, które sam przebieg wykorzystał, wraz z wyrocznią, jaką macierz podaje dla każdego (publiczne źródła są tam wymienione):
- MODELLED Deterministyczne, haszowane na poziomie scenariusza, bramki SBOM i złotych wyników między platformami. Wyrocznia (ExternalDataset): zgodność SBOM z oficjalnym schematem JSON CycloneDX 1,5 (+ prawidłowe identyfikatory SPDX): zewnętrzny opublikowany standard, zero błędów walidacji w całym grafie zależności; część dotycząca determinizmu wskaźników jakości i odtwarzalności bajt w bajt pozostaje przypiętą kontrolą samospójności, więc wiersz pozostaje MODELLED
- VALIDATED leo_navmsg::sisre::sisre_weights: waga radialna w_R i kwadrat wagi poprzecznej w_AC^2 jako średnie z cos^2 i połowy sin^2 kąta nadirowego linii widzenia. Wyrocznia (ExternalDataset): opublikowana tabela współczynników wagowych SISRE z Montenbruck, Steigenberger i Hauschild (2018), Multi-GNSS signal-in-space range error assessment - Methodology and results, Advances in Space Research 61(12):3020-3038, doi 10.1016/j.asr.2018.03.041: GPS 0,98 i 1/49, GLONASS 0,98 i 1/45, Galileo 0,98 i 1/61, BeiDou MEO 0,98 i 1/54, BeiDou IGSO/GEO 0,99 i 1/126. Ta sama średnia obliczona dla promieni LEO daje
- VALIDATED leo_navmsg::elements::kepler_point: wyznaczanie keplerowskie z Galileo OS SIS ICD (równanie Keplera, poprawki drugiej harmonicznej, węzeł związany z Ziemią) napisane osobno. Wyrocznia (ExternalDataset): pozycje ECEF z RTKLIB 2.4.2-p13 eph2pos (niezależna implementacja tego samego algorytmu z ICD) dla rzeczywistych rekordów rozgłaszanych BKG/IGS z 2024-09-10, oba zatwierdzone z pochodzeniem w tests/fixtures/rinex_sp3_interop (NOTICE, rinex_ecef_reference.txt, brdc_multignss_slice.rnx). To potwierdza algorytm użytkownika keplerowski; poprawki wzdłuż/w poprzek/radialne dodane na wierzchu mają własne wiersze, a składniki Liu b
- VALIDATED leo_navmsg::codec::crc24q: wielomian generujący 0x1864CFB, wartość początkowa 0, bez odbicia, bez końcowego XOR, kontrola, którą ramka LEO Kshana niesie nad każdym poprzedz. Wyrocznia (ExternalDataset): katalogowa wartość kontrolna CRC dla tych parametrów (katalog CRC reveng.sourceforge.io, CRC-24/LTE-A: szerokość 24, poly 0x864CFB, init 0, check 0xCDE703), które są parametrami CRC-24Q z RTCM 10403 i Galileo OS SIS ICD, oraz przykładowa ramka typu komunikatu 1005 wydrukowana w RTCM 10403
- VALIDATED Dopasowanie i przegląd rodzaju
leo-navmsg: orbita prawdziwa całkowana z grawitacją zonalną J2-J6 lub EGM2008 do wybranego stopnia i oporem oraz zegar swobodny lub ster. Wyrocznia (ExternalDataset): rzeczywiste precyzyjne orbity naukowe jako prawda (operacyjne orbity redukowanej dynamiki TU Graz IfG/ITSG, do dowolnego użytku z podaniem źródła; wartości SHA-256 w NOTICE fixtury) dopasowane zestawem 16-parametrowym na łukach 20 i 30 min, względem statystyk, które Liu et al. 2025 (Remote Sensing 17(16):2894, CC BY 4,0) publikują dla tych samych satelitów i dni: RMS wzdłuż, w poprzek i radialnie, każdy w granicach 1.5x (zmierzone 0,804 do 1,087), SISR
Ograniczenia#
Co raport samego przebiegu podaje jako niemodelowane lub niesprawdzone względem niezależnego wzorca:
- SISRE jest błędem reprezentacji komunikatu względem prawdy, do której go dopasowano; błąd wyznaczania orbity i błąd predykcji orbity nie są modelowane. (wynik
limitations[0]) - Orbita prawdziwa jest numerycznym całkowaniem Kshana (grawitacja zonalna lub EGM2008, statyczny opór wykładniczy), a nie precyzyjną orbitą rzeczywistego satelity; bez ciała trzeciego, ciśnienia promieniowania słonecznego ani pływów. (wynik
limitations[1]) - Format binarny to własne udokumentowane kodowanie Kshana wzorowane na opublikowanych składnikach komunikatów; nie jest to układ bitów Celeste ani żadnego innego systemu (żaden nie jest publiczny). (wynik
limitations[2]) - Blok w stylu RINEX jest udokumentowanym rozszerzeniem Kshana; RINEX 4,02 nie definiuje rekordów nawigacyjnych LEO. (wynik
limitations[3]) - Współczynniki NeQuick-G są przenoszone, a efektywny poziom jonizacji jest obliczany, ale całkowanie gęstości elektronowej NeQuick, które zamienia go w opóźnienie, nie jest zaimplementowane; opóźnienie Klobuchara jest, skalowane do nośnej przez 1/f^2 bez korekty dla satelity lecącego wewnątrz jonosfery. (wynik
limitations[4]) - Składniki 22-parametrowe Liu et al. 2025 podążają za algorytmem użytkownika z artykułu (równ. 1-7) i strategią dopasowania (sekcja 2,3); jego wartości SISRE w funkcji wysokości używały rzeczywistych precyzyjnych orbit, więc to porównanie na orbicie całkowanej przez Kshana jest MODELLED, nie VALIDATED (porównanie na rzeczywistej orbicie to tests/leo_navmsg_fit_real_orbit_oracle.rs). (wynik
limitations[5]) - MIXED — elementy składowe VALIDATED, wyniki MODELLED. Wagi SISRE odtwarzają opublikowaną tabelę MEO/GEO (Montenbruck et al. 2018), algorytm użytkownika z ICD Galileo odtwarza RTKLIB na rzeczywistych rozgłaszanych efemerydach Galileo, a CRC-24Q odtwarza swoją katalogową wartość kontrolną i przykładową ramkę RTCM 1005. Każda wartość dopasowania, SISRE, ciągłości i kwantyzacji jest MODELLED: błąd reprezentacji komunikatu względem (wynik
label) - MODELLED: każda wartość dopasowania i SISRE jest błędem reprezentacji względem prawdy całkowanej przez Kshana (bez błędu wyznaczania ani predykcji orbity); Liu et al. (katalog rodzajów (
kshana kinds --json))
Zobacz też#
- Strona rodziny: Nawigacja z niskiej orbity okołoziemskiej
- Wszystkie rodzaje: KINDS.md
- Strona tematu: LEO-PNT.md
- Strona tematu: LEO-NAVMSG.md