Strojový překlad, nekontrolovaný rodilým mluvčím. Referenční je anglická verze.

Navigace na nízké oběžné dráze Země (LEO)Upravit na GitHubuZdroj: docs/LEO-NAVMSG.md

Navigační zpráva LEO

Druh scénáře leo-navmsg sestavuje zprávu s broadcast efemeridami a hodinami družice pro určování polohy, navigaci a čas (PNT) na nízké oběžné dráze Země (LEO) a odpovídá na otázky, které si klade návrhář zprávy: jak dlouho může jedna zpráva pokrývat, co přináší každý další parametr, co uživatel vidí, když se zpráva změní uprostřed přeletu, a kolik bitů je třeba k jejímu přenosu s přesností na centimetr.

Je nezávislý na systému. Libovolná dráha, libovolná nosná a kterýkoli ze čtyř modelů efemerid běží bez jakékoli předvolby; pojmenované předvolby jsou volitelná data (viz Předvolby).

Vytiskněte přibalený příklad pomocí kshana example <name> (jedno jméno na volání) a spusťte jej pomocí kshana scenarios/<name>.toml: leo-navmsg-fit-interval-trade, leo-navmsg-model-comparison, leo-navmsg-midpass-update a leo-navmsg-encode-decode. Druh je také stupněm zprávy v druhu leo-pnt-chain (LEO-PNT.md) a členem kampaně leo-focus-data-services, která skládá čtyři konfigurace zprávy a uvádí délku rámce každé z nich (146, 154, 159 a 171 bajtů).

Kód: src/leo_navmsg/ — elements.rs (záznamy a uživatelský algoritmus), truth.rs (pravá dráha a hodiny), fit.rs (fitter), sisre.rs (chyba vzdálenosti signálu ve vesmíru), services.rs (ionosféra a koordinovaný světový čas (UTC)), codec.rs (binární formát), text.rs (exporty ve stylu Receiver Independent Exchange Format (RINEX) a hodnot oddělených čárkami (CSV)), presets/ (jeden soubor na předvolbu), mod.rs (druh).

Co zpráva přenáší#

Část Obsah
Pomocné údaje identifikátor kosmického vozidla (SVID), číslo vydání dat (IOD), identifikátor pásma, stav zdraví signálu (konvence Galileo: 0 v pořádku, 1 mimo provoz, 2 rozšířený provoz, 3 ve zkoušce)
Synchronizace číslo týdne, čas týdne (TOW) vysílání a hodinový polynom druhého řádu af0 + af1·(t − toc) + af2·(t − toc)²
Efemeridy jeden ze čtyř modelů níže
Další služby vysílaná ionosférická sada Klobuchar, koeficienty Galileo NeQuick-G ai0, ai1, ai2 s pěti příznaky bouře a parametry převodu systémového času na UTC A0, A1, ΔtLS, t0t, WNot, WNLSF, DN, ΔtLSF

Modely efemerid#

Kód Model Parametry
kepler16 keplerovská sada z dokumentu Galileo Open Service Signal-in-Space Interface Control Document (OS SIS ICD): √A, e, i0, Ω0, ω, M0, Δn, Ω̇, i̇, Cuc, Cus, Crc, Crs, Cic, Cis, toe 16
kepler-rac totéž plus korekční polynomy ve směru dráhy, napříč dráze a radiálním (RAC) a0…, c0…, r0… v τ = tk / tau_s, koeficienty v metrech, tau_s mocnina dvou rovná se alespoň polovině intervalu fitu nebo ji převyšuje (vysílá se), stupně dané rac_degrees (výchozí 7, 5, 6) výchozí 16 + 21 plus časová škála
liu22 22parametrový model Liu, Su, Xie, Zhou a Qu (2025, Remote Sensing 17(16):2894, doi 10.3390/rs17162894): 16 plus ȧ, ṅ, Crs3, Crc3, Crs1, Crc1 22
ecef-poly model „nulových hodin“ ATOMIC (Autonomous Time and Orbit Determination for Microsatellite Constellations): polynom v zemské pevné soustavě se středem v Zemi (ECEF) pro každou osu v τ = (t − t_ref) / 64 s (výchozí stupeň 6), bez hodinových členů, protože hodiny družice jsou řízeny k systémovému času (InsideGNSS) výchozí 22

Uživatelský algoritmus (elements::sat_state) je posloupnost z Galileo ICD (Keplerova rovnice, korekce druhé harmonické, uzel v zemské pevné soustavě), za níž pro kepler-rac následují tři polynomy v soustavě vlastní keplerovské dráhy: radiální podél vyhodnocené polohy, napříč dráze podél normály dráhy z korigované inklinace a uzlu, ve směru dráhy doplňující trojici. Hodiny přidávají relativistický člen z ICD F·e·√A·sin E; pro ecef-poly je to obecný tvar −2 r·v / c² z polynomu a jeho derivace.

Členy podle Liu et al. sledují uživatelský algoritmus z článku (oddíl 2,2, rov. 1-7): A = A0 + ȧ·tk, n = √(μ/A0³) + Δn + ṅ·tk (vydání před 0,30 používala konvenci civilní navigace Global Positioning System (GPS) ½·ṅ·tk, takže jimi zapsané ṅ bylo dvojnásobkem hodnoty z článku) a Crs1·sin Φ + Crc1·cos Φ + Crs3·sin 3Φ + Crc3·cos 3Φ přičtené k poloměru, Φ je nekorigovaný argument šířky. Konvence měřítka ṅ je přepsána z rov. 1 článku; srovnání s článkem na skutečných drahách na ní nezávisí (činitel ½ u ṅ nemění žádnou fitovanou hodnotu), takže význam vysílané hodnoty nDot tam není ověřen proti vnější referenci.

Dvě interpretace jsou vlastní interpretací Kshana a jako takové jsou uvedeny:

  • Soustava RAC a normalizace τ = tk / tau_s. Žádný veřejný dokument nedefinuje korekční soustavu LEO pro vysílanou zprávu.
  • Hodiny zprávy s nulovými hodinami jsou celkově nulové: předpokládá se, že řídicí smyčka drží zdánlivé hodiny, včetně relativistického členu, na systémovém čase.

Fitter#

truth.rs integruje dráhu čtyřstupňovou Rungeovou–Kuttovou metodou s pevným krokem v soustavě, která se jednou rotací převádí na osy pevné vůči Zemi, θ(t) = θ0 + Ω̇e·t, tedy toutéž jedinou rotací, kterou používá vysílaný uživatelský algoritmus. Gravitace je dvoutělesová (gravity_degree = 0), zonální harmonické J2 až J6 (2 až 6) nebo pole Earth Gravitational Model 2008 (EGM2008) do stupně a řádu 7 až 70, jehož tesserální členy nesou krátkoperiodický podpis, kvůli němuž je fit dráhy LEO obtížný. Odpor je volitelný (statická exponenciální hustota). Hodiny jsou buď volně běžící (bias, drift, rychlost driftu a bílý frekvenční šum při uvedené Allanově odchylce za jednu sekundu plus periodický relativistický člen), nebo řízené (zbytek Gaussova–Markovova procesu prvního řádu).

fit.rs fituje keplerovskou sadu metodou Levenberg–Marquardt na nesingulárních prvcích (e·cos ω, e·sin ω, λ0 = M0 + ω): dráha LEO je téměř kruhová, takže ω a M0 samy o sobě jsou téměř nerozlišitelné. Začíná z oskulačního stavu v toe s rychlostí uzlu od J2. Slabé apriorní hodnoty soustředěné kolem nuly omezují rychlosti a harmonické, které krátký oblouk nedokáže rozlišit; při váze pozorování 1 cm působí jen v těchto nulových směrech. Fit liu22 místo toho přebírá start a odhadovač z oddílu 2,3 článku: začíná se všemi korekčními členy nulovými, nemá žádné apriorní hodnoty (prostá metoda nejmenších čtverců) a ponechává limit článku 100 iterací. Zastavuje se podle vlastního pravidla konvergence parametrů Kshana, když je každý krok parametru menší než 1e-3 jeho formální směrodatné odchylky; článek se zastavuje naopak tehdy, když se RMS změní o méně než 0,1 mm. Polynomy RAC se pak fitují na zbytky ve směru dráhy / napříč dráze / radiálně lineární metodou nejmenších čtverců a hodinový polynom na pravé hodiny minus relativistický člen, který uživatel přičte zpět.

Zjištění, které výchozí hodnoty zakódovávají: po fitu keplerovské sady metodou nejmenších čtverců je zbytek z konstrukce tím, co 16 parametrů nemůže pokrýt, takže v okně kmitá (několik průchodů nulou v každé složce) a nedriftuje. Korekční polynom jej odstraní jen tehdy, když jeho stupeň převyšuje to, co keplerovská sada už pokrývá: ve směru dráhy 7, napříč dráze 5 a radiálně 6 sníží 15minutový zbytek z centimetrů na přibližně milimetr, zatímco nižší stupně napříč dráze neodstraní téměř nic (zbytek napříč dráze je lichý kolem středu okna). Systém, který svou keplerovskou část odvozuje jinak, zanechává zbytek jiného tvaru a stupně, které potřebuje, z toho plynou. Vlastní korekční stupně předvolby Celeste (nižší než tyto; existují jen v souboru předvolby, src/celeste_iod.rs) zde běží na základu Kshana s nejmenšími čtverci, proto jsou její členy napříč dráze v tomto enginu málo významné: jde o tvrzení o fitteru Kshana, nikoli o nějakém skutečném systému. toe a toc jsou celé sekundy, jak je nese binární formát.

Každá zpráva se používá po dobu vystředěnou v jejím okně fitu (první tabulka kompromisů používá celé okno). Hodnoty chyby vzdálenosti signálu ve vesmíru (SISRE) měří chybu reprezentace zprávy vůči pravdě, na kterou byla fitována, jako odmocninu ze střední kvadratické hodnoty (RMS) a maximum přes rozsah. Chyba určení a predikce dráhy, kterou ke skutečnému pozemnímu nebo palubnímu segmentu přibývá navíc, není modelována.

Chyba vzdálenosti signálu ve vesmíru#

sisre.rs používá globálně průměrnou SISRE podle Montenbrucka, Steigenbergera a Hauschilda (2018, Advances in Space Research 61(12):3020–3038, doi 10.1016/j.asr.2018.03.041):

SISRE_orb = sqrt( w_R² R² + w_AC² (A² + C²) )
SISRE     = sqrt( (w_R R − c·dT)² + w_AC² (A² + C²) )

Váhy jsou průměry přes uživatele rovnoměrně rozložené na viditelné čepičce Země z cos² η a ½ sin² η, kde η je úhel nadiru zorného paprsku u družice, vypočtený pro vlastní poloměr dráhy a elevační masku. Při masce 0° výpočet reprodukuje tabulku z článku pro střední oběžnou dráhu Země (GPS 0,98 a 1/49, GLONASS 1/45, Galileo 1/61, BeiDou 1/54) a geostacionární dráhu (0,99 a 1/126): to je kontrola VALIDATED. U LEO dává stejný průměr

Výška w_R 1 / w_AC² úhel nadiru k obzoru
320 km 0.384 2.35 72.2°
510 km 0.459 2.53 67.8°
550 km 0.472 2.57 67.0°
786 km 0.536 2.81 62.9°
1080 km 0.597 3.11 58.8°
1336 km 0.638 3.37 55.8°

takže uživatel LEO, který vidí družici daleko od nadiru, pociťuje chyby ve směru dráhy a napříč dráze mnohem více než uživatel na střední dráze.

Analýzy#

analysis = [...] vybírá kteroukoli ze čtyř (výchozí všechny).

Kompromis intervalu fitu#

[trade] nastavuje rozsah, intervaly fitu, periody aktualizace a modely. scenarios/leo-navmsg-fit-interval-trade.toml (550 km, 97,6°, EGM2008 do stupně 20 a odpor, 30 minut zpráv) dává při době použití rovné intervalu fitu:

Model Interval fitu SISRE dráhy RMS SISRE dráhy max SISRE s hodinami RMS radiálně / ve směru dráhy / napříč dráze RMS
kepler16 60 s 0,041 cm 0,179 cm 0,069 cm 0,09 / 0,01 / 0,00 cm
kepler16 120 s 0,032 cm 0,160 cm 0,079 cm 0,06 / 0,01 / 0,01 cm
kepler16 180 s 0,093 cm 0,540 cm 0,134 cm 0,18 / 0,06 / 0,00 cm
kepler16 300 s 0,310 cm 1,033 cm 0,329 cm 0,09 / 0,49 / 0,02 cm
kepler16 450 s 1,690 cm 7,542 cm 1,696 cm 0,72 / 2,65 / 0,04 cm
kepler16 600 s 2,875 cm 10,219 cm 2,866 cm 1,72 / 4,42 / 0,26 cm
kepler16 900 s 9,345 cm 34,032 cm 9,349 cm 6,46 / 14,14 / 0,91 cm
kepler-rac 60 s 0,000 cm 0,000 cm 0,057 cm 0,00 / 0,00 / 0,00 cm
kepler-rac 120 s 0,000 cm 0,000 cm 0,074 cm 0,00 / 0,00 / 0,00 cm
kepler-rac 180 s 0,000 cm 0,001 cm 0,090 cm 0,00 / 0,00 / 0,00 cm
kepler-rac 300 s 0,004 cm 0,014 cm 0,106 cm 0,00 / 0,00 / 0,01 cm
kepler-rac 450 s 0,037 cm 0,176 cm 0,127 cm 0,05 / 0,01 / 0,04 cm
kepler-rac 600 s 0,214 cm 0,643 cm 0,229 cm 0,28 / 0,09 / 0,26 cm
kepler-rac 900 s 1,015 cm 3,695 cm 1,062 cm 1,52 / 0,70 / 0,91 cm

A při fitu 300 s, kdy se mění, jak často se ujímá nová zpráva:

Model Perioda aktualizace SISRE dráhy RMS SISRE dráhy max
kepler16 30 s 0,314 cm 0,850 cm
kepler16 60 s 0,288 cm 0,859 cm
kepler16 150 s 0,219 cm 0,830 cm
kepler16 300 s 0,310 cm 1,033 cm
kepler-rac 30 s 0,004 cm 0,009 cm
kepler-rac 60 s 0,004 cm 0,009 cm
kepler-rac 150 s 0,004 cm 0,010 cm
kepler-rac 300 s 0,004 cm 0,014 cm

16parametrová keplerovská sada se zhoršuje z 0,04 cm při 60 s na 9,35 cm při 900 s: jedna keplerovská sada s harmonickými dvakrát za oběh nedokáže déle než několik minut sledovat vysokofrekvenční gravitační členy a odpor oblouku LEO a její zbytek metodou nejmenších čtverců v okně kmitá. Polynomy ve směru dráhy / napříč dráze / radiálně (stupně 7, 5, 6) pohltí zbytek: 1,01 cm při 900 s, 0,21 cm při 600 s. Při nejkratších intervalech jsou keplerovské hodnoty pod milimetrem a už nejsou přísně seřazeny (fit je pak omezen podmíněností, nikoli modelem).

Srovnání modelů#

scenarios/leo-navmsg-model-comparison.toml spouští čtyři modely při 1, 5 a 10 minutách na téže dráze, s počtem parametrů a počtem bitů efemerid a hodin v kódování Kshana:

Model Interval fitu Parametry Bity efemerid + hodin SISRE dráhy RMS SISRE s hodinami RMS
kepler16 60 s 16 570 0,022 cm 0,049 cm
kepler16 300 s 16 570 0,230 cm 0,260 cm
kepler16 600 s 16 570 3,061 cm 3,071 cm
kepler-rac 60 s 37 1045 0,000 cm 0,044 cm
kepler-rac 300 s 37 1045 0,005 cm 0,120 cm
kepler-rac 600 s 37 1045 0,160 cm 0,208 cm
liu22 60 s 22 730 0,014 cm 0,046 cm
liu22 300 s 22 730 0,074 cm 0,142 cm
liu22 600 s 22 730 0,258 cm 0,290 cm
ecef-poly (nulové hodiny) 60 s 22 750 0,000 cm 28,784 cm
ecef-poly (nulové hodiny) 300 s 22 750 0,005 cm 28,784 cm
ecef-poly (nulové hodiny) 600 s 22 750 0,561 cm 28,774 cm

Řádek s nulovými hodinami se hodnotí proti hodinám řízeným se zbytkem 0,24 m (hodnota ATOMIC), ostatní proti volně běžícím hodinám, které fitují.

Liu et al. 2025, SISRE v závislosti na výšce (MODELLED). Tentýž scénář fituje 22parametrový model Kshana na 20minutových obloucích v pěti výškách z článku, při inklinaci každé družice:

Družice Výška Inklinace Liu et al. 2025 Kshana (RMS jen dráhy) poměr
GRACE-A 320 km 89.00° 8,88 cm 4,25 cm 0.48
GRACE-C 475 km 89.00° 6,21 cm 2,87 cm 0.46
Sentinel-2A 786 km 98.57° 2,87 cm 2,20 cm 0.77
HY-2A 966 km 99.34° 2,11 cm 1,25 cm 0.59
Sentinel-6A 1336 km 66.04° 0,75 cm 0,51 cm 0.67

Nejde o ověření proti nezávislé vnější referenci. Článek fitoval skutečné přesné vědecké dráhy uvedených družic (s jejich úplnou historií gravitace, odporu a negravitačních sil); Kshana fituje vlastní integrovanou dráhu, vyhodnocuje šest přidaných parametrů tak, jak je popsáno výše, a používá vlastní váhy SISRE. Srovnání ukazuje trend a řád velikosti. Srovnání na týchž skutečných drahách, které článek fitoval, je tests/leo_navmsg_fit_real_orbit_oracle.rs (od 0,30 se 22parametrový fit tam shoduje v rámci předregistrovaného činitele 1,5, ve dnech z článku i v osmi utajených dnech).

Aktualizace uprostřed přeletu#

[midpass] umístí uživatele (výchozí 45° s. š., 10° v. d.), najde nejvyšší přelet nad maskou v rámci search_s a naplánuje zprávy každých update_period_s. Při každém přepnutí uvnitř přeletu uvádí skok polohy, skok hodin, skok pseudovzdálenosti uživatele (nová zpráva minus stará), největší skok, který by mohl vidět kterýkoli viditelný uživatel (uzavřený tvar přes kužel nadiru), chybu vzdálenosti před a po a PASS nebo FAIL vůči threshold_m. scenarios/leo-navmsg-midpass-update.toml (fity 300 s aktualizované každých 150 s):

Nejvyšší přelet za den dosahuje 43,7° a trvá 455 s. Jeho přepnutí:

Přepnutí Elevace Skok polohy Skok hodin Skok vzdálenosti uživatele Skok při nejhorší geometrii
IOD 270 → 271 12.7° 0,07 mm 0,19 mm -0.17 mm 0,27 mm
IOD 271 → 272 37.4° 0,14 mm 0,14 mm -0.24 mm 0,27 mm
IOD 272 → 273 28.2° 0,27 mm -0.22 mm 0,35 mm 0,48 mm

Největší skok vzdálenosti uživatele 0,35 mm oproti prahu 5 cm: PASS.

Kódování a dekódování#

scenarios/leo-navmsg-encode-decode.toml zakóduje první ze tří zpráv, dekóduje ji, zkontroluje CRC a odmítne poškozenou kopii, vytiskne rozpočet kvantizace a zapíše a zpětně načte blok ve stylu RINEX a tabulku CSV:

  • rámec: 171 bajtů (1310 bitů užitečného zatížení, z toho 1045 tvoří efemeridy a hodiny), 24bitová cyklická redundantní kontrola (CRC-24Q) 0x19105F;
  • největší účinek půlkroku kteréhokoli jednotlivého pole: af0, 0,545 mm;
  • celá zpráva po kvantizaci: poloha v rozmezí 1,126 mm a hodiny v rozmezí 0,185 mm od přesné zprávy; SISRE 0,113 cm přesně, 0,129 cm po dekódování;
  • rámec s jedním převráceným bitem je odmítnut: true;
  • zpětný převod RINEX v rozmezí 5.0e-06 m, zpětný převod CSV v rozmezí 0.0e+00 m.

Nezávislost na platformě#

Rámec jsou vysílaná celá čísla, takže musí být tatáž celá čísla, ať a jakkoli scénář běží: nativní binární program v libovolném operačním systému, ladicí nebo vydané sestavení a sestavení WebAssembly (WASM) v prohlížeči. Překážely tři věci. Sinus, kosinus, arkustangens a exponenciála matematické knihovny hostitele se nemusejí zaokrouhlovat správně a mezi hostiteli se liší na posledním místě. Optimalizované sestavení na macOS bere sinus a kosinus jednoho argumentu ze společné rutiny systému, která nevrací vždy hodnotu samostatného sinu, takže se lišilo i ladicí a vydané sestavení. A obvyklý generátor normálního rozdělení volá ve svých vzácných větvích exponenciálu a logaritmus hostitele. Fit z tak malého rozdílu udělá různá kvantizovaná pole. Celý druh (pravá dráha a hodiny, fit, uživatelský algoritmus, chyba vzdálenosti signálu ve vesmíru (SISRE), kodek) proto počítá každou takovou funkci pomocí knihovny libm v čistém Rustu přes src/portable_math.rs, celočíselné mocniny jako explicitní součiny a normální odchylky polární metodou ze surového výstupu generátoru. leo_navmsg::tests::the_encoded_frame_is_the_same_bytes_on_every_platform připíná 171bajtový rámec scénáře kódování a dekódování níže a jednu kontrolní hodnotu pro každý model efemerid; ladicí sestavení, vydané sestavení a sestavení WASM dávají bajtově shodné dokumenty výsledků pro všech pět přibalených scénářů leo-navmsg.

Binární formát#

Toto je vlastní zdokumentované kódování Kshana. Nese složky, které uvádějí zveřejněné popisy navigačních zpráv LEO, podle sady polí Galileo ICD. Není to bitové rozložení Celeste ani žádného jiného systému: žádné není veřejné.

Rámec: preambule 0xA7 (8 bitů), verze 1 (4), model (4: 1 kepler16, 2 kepler-rac, 3 liu22, 4 ecef-poly), délka užitečného zatížení v bajtech (12), užitečné zatížení doplněné nulami na celý bajt, CRC-24Q (24bitová cyklická redundantní kontrola, 24 bitů) přes každý předchozí bajt. CRC-24Q je kontrola standardu Radio Technical Commission for Maritime Services RTCM 10403 a Galileo ICD (polynom 0x1864CFB, počáteční hodnota 0); kód reprodukuje katalogovou kontrolní hodnotu 0xCDE703 pro 123456789 a kontrolní bajty příkladového rámce zprávy typu 1005 podle RTCM 10403 (VALIDATED).

Kroky Galileo ICD byly zvoleny pro střední oběžnou dráhu Země a pro centimetrovou zprávu LEO jsou příliš hrubé: Crs v krocích 2⁻⁵ m (3,1 cm), Cuc 2⁻²⁹ rad (1,3 cm při poloměru LEO), úhly 2⁻³¹ půlkruhu (1,0 cm) a af0 2⁻³⁴ s (1,7 cm). Kshana ponechává jednotky ICD a konvenci půlkruhu, zjemňuje kroky tak, aby chyba půlkroku každého pole zůstala pod 1 mm polohy nebo vzdálenosti v 15minutovém okně, a rozšiřuje pole, aby zachovala rozsahy, které fit LEO potřebuje:

Blok Pole Bity Krok Jednotka
pomocné údaje a synchronizace SVID 8 1 -
pomocné údaje a synchronizace IOD 10 1 -
pomocné údaje a synchronizace Band 4 1 -
pomocné údaje a synchronizace Health 2 1 -
pomocné údaje a synchronizace WeekNumber 13 1 týden
pomocné údaje a synchronizace ToW 20 1 s
pomocné údaje a synchronizace Flags 4 1 -
hodiny (příznakový bit 0) toc 20 1 s
hodiny (příznakový bit 0) af0 34 2^-38 s
hodiny (příznakový bit 0) af1 28 2^-50 s/s
hodiny (příznakový bit 0) af2 20 2^-62 s/s^2
keplerovské (modely 1-3) toe 20 1 s
keplerovské (modely 1-3) M0 36 2^-35 půlkruh
keplerovské (modely 1-3) e 32 2^-33 -
keplerovské (modely 1-3) sqrtA 36 2^-23 m^0,5
keplerovské (modely 1-3) Omega0 36 2^-35 půlkruh
keplerovské (modely 1-3) i0 36 2^-35 půlkruh
keplerovské (modely 1-3) omega 36 2^-35 půlkruh
keplerovské (modely 1-3) deltaN 29 2^-43 semicircle/s
keplerovské (modely 1-3) OmegaDot 29 2^-43 semicircle/s
keplerovské (modely 1-3) iDot 22 2^-43 semicircle/s
keplerovské (modely 1-3) Cuc 26 2^-34 rad
keplerovské (modely 1-3) Cus 26 2^-34 rad
keplerovské (modely 1-3) Crc 26 2^-10 m
keplerovské (modely 1-3) Crs 26 2^-10 m
keplerovské (modely 1-3) Cic 26 2^-34 rad
keplerovské (modely 1-3) Cis 26 2^-34 rad
korekce ve směru dráhy / napříč dráze / radiální (model 2) degA 3 1 -
korekce ve směru dráhy / napříč dráze / radiální (model 2) degC 3 1 -
korekce ve směru dráhy / napříč dráze / radiální (model 2) degR 3 1 -
korekce ve směru dráhy / napříč dráze / radiální (model 2) racTauExp 4 1 log2(s)
korekce ve směru dráhy / napříč dráze / radiální (model 2) a_k, c_k, r_k 22 2^-14 m
doplňky Liu et al. 2025 (model 3) aDot 26 2^-20 m/s
doplňky Liu et al. 2025 (model 3) nDot 30 2^-58 půlkruh/s^2
doplňky Liu et al. 2025 (model 3) Crs3 26 2^-10 m
doplňky Liu et al. 2025 (model 3) Crc3 26 2^-10 m
doplňky Liu et al. 2025 (model 3) Crs1 26 2^-10 m
doplňky Liu et al. 2025 (model 3) Crc1 26 2^-10 m
polynom ECEF (model 4) tref 20 1 s
polynom ECEF (model 4) degP 4 1 -
polynom ECEF (model 4) x0, y0, z0 38 2^-11 m
polynom ECEF (model 4) x_k, y_k, z_k (k >= 1) 34 2^-12 m
Klobuchar (příznakový bit 1) alpha0 8 2^-30 s
Klobuchar (příznakový bit 1) alpha1 8 2^-27 s/semicircle
Klobuchar (příznakový bit 1) alpha2 8 2^-24 s/půlkruh^2
Klobuchar (příznakový bit 1) alpha3 8 2^-24 s/půlkruh^3
Klobuchar (příznakový bit 1) beta0 8 2^11 s
Klobuchar (příznakový bit 1) beta1 8 2^14 s/semicircle
Klobuchar (příznakový bit 1) beta2 8 2^16 s/půlkruh^2
Klobuchar (příznakový bit 1) beta3 8 2^16 s/půlkruh^3
NeQuick-G (příznakový bit 2) ai0 11 2^-2 sfu
NeQuick-G (příznakový bit 2) ai1 11 2^-8 sfu/deg
NeQuick-G (příznakový bit 2) ai2 14 2^-15 sfu/deg^2
NeQuick-G (příznakový bit 2) SF1-5 5 1 -
UTC (příznakový bit 3) A0 32 2^-30 s
UTC (příznakový bit 3) A1 24 2^-50 s/s
UTC (příznakový bit 3) dtLS 8 1 s
UTC (příznakový bit 3) t0t 8 3600 s
UTC (příznakový bit 3) WNot 8 1 týden
UTC (příznakový bit 3) WNLSF 8 1 týden
UTC (příznakový bit 3) DN 3 1 den
UTC (příznakový bit 3) dtLSF 8 1 s

Hodnota mimo rozsah svého pole je odmítnuta, nikoli zalomena. Rozsahy byly ověřeny kódováním fitů při 300 až 2000 km, inklinacích od 0° do 140° a intervalech fitu do 20 minut: deltaN a OmegaDot jsou široké, protože na téměř rovníkové dráze je uzel špatně definován a fit mezi ně rozděluje drift J2 argumentu šířky, a aDot a nDot, protože 22parametrový fit přes 20 minut pohlcuje část krátkoperiodického kmitání hlavní poloosy. Od 0,30 je 22parametrový fit prostou metodou nejmenších čtverců z článku bez apriorních hodnot a rovníkový fit 800 km pak potřebuje nDot přibližně 6.3e-10 půlkruhu/s^2, takže jeho měřítko přešlo z 2^-60 na 2^-58. Korekce ve směru dráhy stupně 7 z kepler-rac se vejdou do rozsahu 22bitového koeficientu až do 15 minut; delší fit jej může překročit a je pak odmítnut. quantisation_budget pro každé pole efemerid a hodin uvádí největší změnu polohy a vzdálenosti, kterou způsobí změna o půl kroku v době použití, a změnu celé zprávy po kvantizaci.

Textové exporty#

RINEX 4,02 nedefinuje žádné navigační záznamy LEO (jeho písmena systémů jsou G, R, E, J, C, I a S; RINEX 4,02 z International Global Navigation Satellite System (GNSS) Service (IGS)). Blok, který zapisuje text.rs, přebírá tvar RINEX 4 — hlavičku záznamu > EPH, řádek družice a epochy se třemi hodinovými členy, řádky vysílané dráhy se čtyřmi poli D19.12 — a je zdokumentovaným rozšířením Kshana: písmeno systému L, typy záznamů KP16, KRAC, LU22, APOL a tři komentáře v hlavičce, které to uvádějí. Dřívější práce o drahách LEO v navigačních záznamech ve stylu RINEX 4: arXiv 2401,17767.

> EPH L04 KRAC
L04 yyyy mm dd hh mm ss  af0 af1 af2
     IOD      Crs      deltaN   M0
     Cuc      e        Cus      sqrtA
     toe      Cic      Omega0   Cis
     i0       Crc      omega    OmegaDot
     IDOT     Band     Week     Health
     txTOW    clock    degA     degC
     degR     tau_s    a0       a1         then the rest of a_k, c_k and r_k, four per line

Tabulka CSV nese zprávy kepler16 a kepler-rac, jednu na řádek. Výchozí sloupce používají názvy z Galileo ICD (SVID, IOD, Band, WeekNumber, ToW, Health, toc, af0, af1, af2, toe, M0, sqrtA, e, deltaN, Omega0, OmegaDot, iDot, i0, omega, Crc, Crs, Cic, Cis, Cuc, Cus, a0…, c0…, r0…, racTau); csv_schema místo nich vybírá pravopis předvolby. Oba formáty se načítají zpět.

Ionosféra a UTC#

  • Klobuchar: model L1 enginu (gnss_sim::klobuchar_delay_m, ověřený proti RTKLIB) přepočtený na nosnou zákonem prvního řádu (f_L1 / f)².
  • NeQuick-G: koeficienty putují ve zprávě a effective_ionisation_level vrací Az = ai0 + ai1·μ + ai2·μ² pro upravenou magnetickou šířku μ podle pravidel algoritmu (nulové koeficienty dávají 63,7 jednotek slunečního toku, sfu; výsledek je omezen na [0, 400] sfu). Model elektronové hustoty NeQuick a jeho integrace po šikmé dráze, které z Az dělají zpoždění, nejsou implementovány.
  • Družice ve výšce několika set kilometrů létá uvnitř ionosféry. Žádný z vysílaných modelů nezohledňuje elektronový obsah nad družicí a žádná korekce na něj se neuplatňuje.
  • UTC: system_to_utc uplatňuje tři případy z Galileo ICD §5.1.7 (před přestupnou sekundou, do šesti hodin od ní a po ní); vložená sekunda se čte jako 86400.

Předvolby#

Předvolby jsou data, každá v jednom souboru v src/leo_navmsg/presets/, i s uvedením zdrojů. Engine a každý přibalený scénář kromě scénáře Celeste běží i bez nich.

Klíč Zdroj Oběžná dráha Nosná Model zprávy
xona-pulsar PUBLIC, arXiv 2509,19551 1080 km, 53° X1 1593,3225 MHz nezveřejněno
xona-pulsar-0 PUBLIC, arXiv 2509,19551 520 km, 97° X1 nezveřejněno
iridium PUBLIC, zpráva RNTF, popis konstelace 781 km, 86,4° 1621 MHz (pásmo 1616–1626 MHz) nic se nevysílá
starlink PUBLIC, NAVIGATION 72(1), popis konstelace 550 km, 53° pásmo Ku, hodnota ze středu pásma (reprezentativní) žádná (signály příležitosti)
centispace PUBLIC, Sensors 2023, Satellite Navigation 2026 700 km, 55° blízko B1 (ve zdroji zakryto; náhradou L1) nezveřejněno
cband-generic REPRESENTATIVE 600 km, 97,8° 5020 MHz (střed pásma C pro RNSS) nezveřejněno
atomic PUBLIC, InsideGNSS 500 km (reprezentativní) L1 (reprezentativní) ecef-poly, stupeň 6, 60 s, obnovováno každých 30 s, nulové hodiny, zbytek řízení 0,24 m
celeste-iod WORKSHOP a PUBLIC 510 km, 97,4° 1191,795 MHz kepler-rac, stupně a rozestup záznamů jsou v souboru předvolby

RNSS je družicová služba radionavigace; RNTF je Resilient Navigation and Timing Foundation.

Celeste IOD. Předvolba demonstrace na oběžné dráze (IOD) Celeste Evropské kosmické agentury (ESA) je jediná, která využívá materiál prezentovaný na workshopu LEO-PNT programu ESA Navigation Innovation and Support Programme (NAVISP) v roce 2026: strukturu zprávy (galileovský keplerovský soubor prvků plus korekční polynomy podél, napříč a radiálně, polynom hodin, SVID, stav zdraví, IOD, ionosférické parametry a parametry UTC), rozestup záznamů a názvy sloupců CSV. Oběžná dráha (510 km, téměř polární heliosynchronní) a nosná pocházejí z veřejných zdrojů uvedených v souboru. Bitové rozvržení Celeste není veřejné a není reprodukováno; pozdější fáze Celeste a systém LEO-PNT Evropské unie (EU) se mohou lišit. Každá hodnota odvozená z workshopu je v modulu navmsg v src/celeste_iod.rs, používaném souborem scenarios/leo-navmsg-celeste-iod.toml. Jak se předvolba zadržuje: každé číslo enginu odvozené z workshopu je v jediném souboru src/celeste_iod.rs, který build.rs zkompiluje, jen pokud existuje, a ve scénářích dostupných pouze v repozitáři scenarios/*celeste-iod*.toml. Smazáním tohoto souboru a těchto scénářů se předvolba zadrží bez jakékoli úpravy zdrojového kódu; každý další test, orákulum i scénář běží i bez ní a počet souborů scénářů v README zadržené soubory stále započítává.

Verifikace#

Řádek Popisek Orákulum
Váhy SISRE VALIDATED tabulka Montenbruck et al. 2018 (GPS, GLONASS, Galileo, BeiDou, geostacionární)
uživatelský algoritmus z Galileo ICD VALIDATED RTKLIB eph2pos na čtyřech skutečných vysílaných efemeridách Galileo, 1 mm na osu (tests/leo_navmsg_reference.rs)
CRC-24Q VALIDATED katalogová kontrolní hodnota 0xCDE703; příkladový rámec RTCM 10403 1005
Fitter a kompromis SISRE MODELLED dvoutělesová pravda zpětně získána na 1 mm; opravený fit J2–J6 na 1 mm; monotónní růst s intervalem
Kontinuita uprostřed přeletu MODELLED identita skoku; kužel v uzavřeném tvaru jako mez proti vzorkování
Binární formát a rozpočet MODELLED zpětné převody beze ztráty; poloviční krok každého pole pod 1 mm
ve stylu RINEX a CSV MODELLED zpětné převody beze ztráty
22parametrový model a fit podle Liu et al. 2025 VALIDATED přesné dráhy TU Graz ITSG čtyř družic proti tabulkám 4, 5, 6 a 8 z článku: poměry podél, napříč, radiálně a SISRE 0,755 až 1,138 ve dnech z článku a 0,683 až 1,186 v osmi zadržených dnech, uvnitř 1,5× (tests/leo_navmsg_fit_real_orbit_oracle.rs)
polynom ATOMIC s nulovými hodinami a tabulka pěti výšek MODELLED fakta o ATOMIC z InsideGNSS; zveřejněná tabulka Liu vytištěná vedle fitu integrované dráhy v Kshana, bez připnutí
Ionosféra a UTC MODELLED uzavřené tvary z ICD; model Klobuchar zkontrolovaný proti RTKLIB

Omezení#

  • SISRE je pouze chyba reprezentace: nezahrnuje chybu určování ani předpovědi oběžné dráhy.
  • Pravda je integrace v Kshana (bez třetího tělesa, tlaku slunečního záření a slapů), nikoli přesná dráha skutečné družice.
  • Binární formát a blok ve stylu RINEX jsou vlastní formáty Kshana.
  • NeQuick-G se přenáší, ale neintegruje se do zpoždění; žádná korekce pro družici uvnitř ionosféry.
  • Srovnání s Liu et al. se liší dráhami, výkladem parametrů a vahami.