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_levelvrací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é zAzdě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_utcuplatň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.