Maskinoversættelse, ikke gennemgået af en modersmålstalende. Engelsk er referencen.

Navigation i lav jordbane (LEO)Redigér på GitHubKilde: docs/LEO-NAVMSG.md

LEO-navigationsbesked

Scenarietypen leo-navmsg bygger den udsendte efemeride- og urmeddelelse for en PNT-satellit (positionering, navigation og tidssynkronisering) i lav jordbane (LEO) og besvarer de spørgsmål, en meddelelsesudformer stiller: hvor længe kan én meddelelse dække, hvad køber hver ekstra parameter, hvad ser en bruger, når meddelelsen skifter midt i en passage, og hvor mange bits kræver det at bære den til centimeteren.

Den er systemuafhængig. Enhver bane, enhver bærebølge og enhver af fire efemeridemodeller kører helt uden forudindstilling; de navngivne forudindstillinger er valgfrie data (se Presets).

Udskriv et medfølgende eksempel med kshana example <name> (ét navn pr. kald) og kør det med kshana scenarios/<name>.toml: leo-navmsg-fit-interval-trade, leo-navmsg-model-comparison, leo-navmsg-midpass-update og leo-navmsg-encode-decode. Typen er også meddelelsestrinnet i typen leo-pnt-chain (LEO-PNT.md) og medlem af kampagnen leo-focus-data-services, som sammensætter fire meddelelseskonfigurationer og rapporterer hver ens rammelængde (146, 154, 159 og 171 bytes).

Kode: src/leo_navmsg/ — elements.rs (poster og brugeralgoritme), truth.rs (sand bane og sandt ur), fit.rs (tilpasningsrutine), sisre.rs (afstandsfejl for signal i rummet), services.rs (ionosfære og Coordinated Universal Time (UTC)), codec.rs (binært format), text.rs (eksport i Receiver Independent Exchange Format (RINEX)-stil og kommasepareret (CSV) form), presets/ (én fil pr. forudindstilling), mod.rs (selve typen).

Hvad en meddelelse indeholder#

Del Indhold
Hjælpedata rumfartøjsidentifikator (SVID), dataudgave (IOD), båndidentifikator, signalets sundhedsstatus (Galileo-konvention: 0 OK, 1 ude af drift, 2 udvidet drift, 3 under test)
Synkronisering ugenummer, ugetid (TOW) for afsendelsen og et andenordens urpolynomium af0 + af1·(t − toc) + af2·(t − toc)²
Efemeride én af de fire modeller nedenfor
Andre tjenester et udsendt Klobuchar-ionosfærisk sæt, Galileo NeQuick-G-koefficienter ai0, ai1, ai2 med fem stormflag og parametre fra systemtid til UTC A0, A1, ΔtLS, t0t, WNot, WNLSF, DN, ΔtLSF

Efemeridemodeller#

Kode Model Parametre
kepler16 Galileo Open Service Signal-in-Space Interface Control Document (OS SIS ICD) Keplerske sæt: √A, e, i0, Ω0, ω, M0, Δn, Ω̇, i̇, Cuc, Cus, Crc, Crs, Cic, Cis, toe 16
kepler-rac det samme plus polynomier for korrektion langs banen, på tværs af banen og radialt (RAC) a0…, c0…, r0… i τ = tk / tau_s, koefficienter i meter, tau_s toerpotensen ved eller over halvdelen af tilpasningsintervallet (udsendt), grader fastsat af rac_degrees (standard 7, 5, 6) 16 + 21 som standard, plus tidsskalaen
liu22 22-parametermodellen af Liu, Su, Xie, Zhou og Qu (2025, Remote Sensing 17(16):2894, doi 10.3390/rs17162894): de 16 plus ȧ, ṅ, Crs3, Crc3, Crs1, Crc1 22
ecef-poly ATOMIC-modellen (Autonomous Time and Orbit Determination for Microsatellite Constellations) med "nul-ur": et jordcentreret jordfast (ECEF) polynomium pr. akse i τ = (t − t_ref) / 64 s (standardgrad 6), ingen urled, fordi satellitens ur styres mod systemtid (InsideGNSS) 22 som standard

Brugeralgoritmen (elements::sat_state) er Galileo-ICD-sekvensen (Keplers ligning, andenharmoniske korrektioner, jordfast knude) efterfulgt, for kepler-rac, af de tre polynomier langs den Keplerske banes eget system: radialt langs den evaluerede position, på tværs af banen langs banenormalen ud fra den korrigerede inklinering og knude, langs banen, så triaden fuldføres. Uret tilføjer ICD'ets relativistiske led F·e·√A·sin E; for ecef-poly er det den generelle form −2 r·v / c² ud fra polynomiet og dets afledede.

Leddene fra Liu et al. følger artiklens brugeralgoritme (Section 2,2, Eq. 1-7): A = A0 + ȧ·tk, n = √(μ/A0³) + Δn + ṅ·tk (udgivelser før 0,30 brugte konventionen for Global Positioning System (GPS) civil navigation ½·ṅ·tk, så en ṅ, de skrev, er det dobbelte af artiklens), og Crs1·sin Φ + Crc1·cos Φ + Crs3·sin 3Φ + Crc3·cos 3Φ lagt til radius, Φ det ukorrigerede breddegradsargument. Skalakonventionen for ṅ er afskrevet fra artiklens Eq. 1; sammenligningen med artiklen på reelle baner afhænger ikke af den (en faktor ½ på ṅ lader alle tilpassede tal være uændrede), så betydningen af en udsendt nDot-værdi er ikke valideret dér.

To aflæsninger er Kshanas egne og angives som sådan:

  • RAC-systemet og normaliseringen τ = tk / tau_s. Intet offentligt dokument definerer et korrektionssystem for LEO til en udsendt meddelelse.
  • Et nul-urs meddelelse har i alt nul ur: styresløjfen antages at holde det tilsyneladende ur, relativistisk led inklusive, på systemtid.

Tilpasningsrutinen#

truth.rs integrerer banen med en fjerdeordens Runge–Kutta med fast trin i et system, der drejes over i jordfaste akser ved én rotation, θ(t) = θ0 + Ω̇e·t, den samme enkelte rotation, som en udsendt brugeralgoritme anvender. Tyngdekraften er tolegeme (gravity_degree = 0), de zonale harmoniske J2 til J6 (2 til 6), eller feltet Earth Gravitational Model 2008 (EGM2008) til grad og orden 7 til 70, hvis tesserale led bærer det kortperiodiske aftryk, der gør en LEO-tilpasning svær. Luftmodstand er valgfri (statisk eksponentiel massefylde). Uret er frit løbende (bias, drift, driftrate og hvid frekvensstøj ved en angiven Allan-deviation på ét sekund, plus det periodiske relativistiske led) eller styret (en førsteordens Gauss–Markov-residual).

fit.rs tilpasser det Keplerske sæt med Levenberg–Marquardt på ikke-singulære elementer (e·cos ω, e·sin ω, λ0 = M0 + ω): en LEO-bane er næsten cirkulær, så ω og M0 hver for sig er næsten umulige at skelne. Den starter fra den oskulerende tilstand ved toe med J2-knuderaten. Svage nul-centrerede apriorier begrænser de rater og harmoniske, som en kort bue ikke kan opløse; med en observationsvægt på 1 cm virker de kun i disse nulretninger. Tilpasningen liu22 tager i stedet artiklens Section 2,3 start og estimator: den starter med alle korrektionsled lig nul, har ingen apriorier (almindelig mindste kvadraters metode) og beholder artiklens loft på 100 iterationer. Den stopper efter Kshanas egen konvergensregel for parametre, når hvert parametertrin er under 1e-3 af dets formelle standardafvigelse; artiklen stopper i stedet, når RMS ændrer sig med mindre end 0,1 mm. RAC-polynomierne tilpasses derefter til residualerne langs/på tværs/radialt med lineær mindste kvadraters metode, og urpolynomiet til det sande ur minus det relativistiske led, som brugeren lægger til igen.

Et fund, som standardværdierne afspejler: efter en Keplersk tilpasning med mindste kvadrater er residualen pr. konstruktion det, som de 16 parametre ikke kan spænde over, så den svinger hen over vinduet (flere nulgennemgange i hver komponent) frem for at drive. Et korrektionspolynomium fjerner den kun, når dets grad overstiger det, det Keplerske sæt allerede spænder over: langs banen 7, på tværs af banen 5 og radialt 6 bringer en 15-minutters residual fra centimeter til omkring en millimeter, mens lavere grader på tværs af banen fjerner næsten intet (residualen på tværs af banen er ulige om vinduets midte). Et system, der udleder sin Keplerske del på anden vis, efterlader en residual af en anden form, og de grader, det kræver, følger heraf. Forudindstillingen Celestes egne korrektionsgrader (lavere end disse; de findes kun i forudindstillingsfilen, src/celeste_iod.rs) kører her på Kshanas mindste-kvadraters-grundlag, hvorfor dens led på tværs af banen bidrager lidt i denne motor: en udtalelse om Kshanas tilpasningsrutine, ikke om noget reelt system. toe og toc er hele sekunder, som det binære format bærer dem.

Hver meddelelse bruges over en periode centreret i sit tilpasningsvindue (den første afvejningstabel bruger hele vinduet). Det, tallene for signal-i-rummet-afstandsfejl (SISRE) måler, er meddelelsens repræsentationsfejl mod den sandhed, den blev tilpasset til, som root mean square (RMS) og et maksimum over spændet. Fejlen ved banebestemmelse og baneprædiktion, som et reelt jord- eller ombordsegment tilføjer ovenpå, er ikke modelleret.

Afstandsfejl for signal i rummet#

sisre.rs bruger den globale gennemsnitlige SISRE fra Montenbruck, Steigenberger og Hauschild (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ægtene er gennemsnittene over brugere jævnt fordelt på den synlige jordkalot af cos² η og ½ sin² η, hvor η er synslinjens nadirvinkel ved satellitten, beregnet for banens egen radius og elevationsmaske. Ved en maske på 0° gengiver beregningen artiklens tabel for mellemhøj jordbane (GPS 0,98 og 1/49, GLONASS 1/45, Galileo 1/61, BeiDou 1/54) og geostationær bane (0,99 og 1/126): det er den VALIDATED kontrol. I LEO giver det samme gennemsnit

Højde w_R 1 / w_AC² nadirvinkel ved horisonten
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°

så en LEO-bruger, der ser satellitten langt fra nadir, mærker fejl langs og på tværs af banen langt mere end en bruger i mellemhøj bane.

Analyser#

analysis = [...] vælger en hvilken som helst af de fire (standard alle).

Afvejning af tilpasningsinterval#

[trade] angiver spændet, tilpasningsintervallerne, opdateringsperioderne og modellerne. scenarios/leo-navmsg-fit-interval-trade.toml (550 km, 97,6°, EGM2008 til grad 20 og luftmodstand, 30 minutters meddelelser) giver, med brugsperioden lig tilpasningsintervallet:

Model Tilpasningsinterval SISRE bane-RMS SISRE bane-maks. SISRE med ur-RMS radial / langs / på tværs 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

Og med en tilpasning på 300 s, idet det varieres, hvor ofte en ny meddelelse overtager:

Model Opdateringsperiode SISRE bane-RMS SISRE bane-maks.
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

Det Keplerske sæt med 16 parametre forringes fra 0,04 cm ved 60 s til 9,35 cm ved 900 s: ét Kepler-sæt med harmoniske to gange pr. omløb kan ikke følge tyngdekraftens højfrekvente led og luftmodstanden på en LEO-bue i mere end nogle få minutter, og dets residual efter mindste kvadrater svinger hen over vinduet. Polynomierne langs/på tværs/radialt (grader 7, 5, 6) optager det, der er tilbage: 1,01 cm ved 900 s, 0,21 cm ved 600 s. Ved de korteste intervaller er de Keplerske tal under en millimeter og ikke længere strengt ordnede (tilpasningen er da begrænset af kondition, ikke af modellen).

Modelsammenligning#

scenarios/leo-navmsg-model-comparison.toml kører de fire modeller ved 1, 5 og 10 minutter på samme bane, med antallet af parametre og efemeride- og urbits i Kshanas kodning:

Model Tilpasningsinterval Parametre Efemeride- og urbits SISRE bane-RMS SISRE med ur-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 (nul-ur) 60 s 22 750 0,000 cm 28,784 cm
ecef-poly (nul-ur) 300 s 22 750 0,005 cm 28,784 cm
ecef-poly (nul-ur) 600 s 22 750 0,561 cm 28,774 cm

Rækken med nul-ur bedømmes mod et ur styret med en residual på 0,24 m (ATOMIC-tallet), de øvrige mod det frit løbende ur, de tilpasser.

Liu et al. 2025, SISRE som funktion af højde (MODELLED). Det samme scenarie tilpasser Kshanas 22-parametermodel over 20-minutters buer i artiklens fem højder, ved hver satellits inklinering:

Satellit Højde Inklinering Liu et al. 2025 Kshana (kun bane-RMS) forhold
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

Dette er ikke en validering. Artiklen tilpassede reelle præcise videnskabelige baner for de nævnte satellitter (med deres fulde tyngde-, luftmodstands- og ikke-gravitationelle historik); Kshana tilpasser sin egen integrerede bane, evaluerer de seks tilføjede parametre som beskrevet ovenfor og bruger sine egne SISRE-vægte. Sammenligningen viser tendensen og størrelsesordenen. Sammenligningen på de samme reelle baner, som artiklen tilpassede, er tests/leo_navmsg_fit_real_orbit_oracle.rs (siden 0,30 stemmer 22-parametertilpasningen dér inden for den på forhånd fastsatte faktor 1,5, på artiklens dage og på otte tilbageholdte dage).

Opdatering midt i passagen#

[midpass] placerer en bruger (standard 45° N, 10° E), finder den højeste passage over masken inden for search_s og planlægger meddelelser hver update_period_s. Ved hvert skift inden i passagen rapporterer den positionsspringet, urspringet, brugerens pseudoafstandsspring (ny meddelelse minus gammel), det største spring, en synlig bruger kunne se (lukket form over nadirkeglen), afstandsfejlen før og efter, og PASS eller FAIL mod threshold_m. scenarios/leo-navmsg-midpass-update.toml (300 s tilpasninger opdateret hver 150 s):

Den højeste passage på et døgn når 43,7° og varer 455 s. Dens skift:

Skift Elevation Positionsspring Urspring Spring i brugerafstand Spring ved dårligste geometri
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

Største spring i brugerafstand 0,35 mm mod en tærskel på 5 cm: PASS.

Kodning og afkodning#

scenarios/leo-navmsg-encode-decode.toml koder den første af tre meddelelser, afkoder den, kontrollerer CRC'en og afviser en beskadiget kopi, udskriver kvantiseringsbudgettet og skriver og indlæser igen RINEX-lignende blok og CSV-tabel:

  • ramme: 171 bytes (1310 nyttelastbits, heraf 1045 efemeride og ur), 24-bit cyklisk redundanskontrol (CRC-24Q) 0x19105F;
  • største halvtrinseffekt for et enkelt felt: af0, 0,545 mm;
  • hele meddelelsen efter kvantisering: position inden for 1,126 mm og ur inden for 0,185 mm af den nøjagtige meddelelse; SISRE 0,113 cm nøjagtig, 0,129 cm afkodet;
  • en ramme med én vendt bit afvises: sandt;
  • RINEX-lignende rundtur inden for 5.0e-06 m, CSV-rundtur inden for 0.0e+00 m.

Platformsuafhængighed#

En ramme er transmitterede heltal, så den skal være de samme heltal, uanset hvor og hvordan scenariet køres: den native binære fil på ethvert operativsystem, et debug- eller et release-build og WebAssembly-buildet (WASM) i en browser. Tre ting stod i vejen. Sinus, cosinus, arcustangens og eksponentialfunktion i en værts matematikbibliotek skal ikke være korrekt afrundede og afviger mellem værter i sidste decimal. Et optimeret build på macOS henter sinus og cosinus af ét argument fra systemets kombinerede rutine, som ikke altid returnerer samme værdi som den enkelte sinus, så et debug- og et release-build afveg også fra hinanden. Og den sædvanlige normalfordelingssampler kalder værtens eksponential- og logaritmefunktion i sine sjældne grene. Tilpasningen gør en så lille forskel til forskellige kvantiserede felter. Hele typen (sand bane og sandt ur, tilpasning, brugeralgoritme, signal-i-rummet-afstandsfejl (SISRE), kodek) beregner derfor alle sådanne funktioner med den rene Rust-kasse libm via src/portable_math.rs, heltalspotenser som eksplicitte produkter og normalfordelte afvigelser med polarmetoden på generatorens rå output. leo_navmsg::tests::the_encoded_frame_is_the_same_bytes_on_every_platform fastlåser rammen på 171 bytes fra scenariet med kodning og afkodning nedenfor og én kontrolværdi pr. efemeridemodel; et debug-build, et release-build og WASM-buildet giver byte-identiske resultatdokumenter for alle fem medfølgende leo-navmsg-scenarier.

Binært format#

Dette er Kshanas egen dokumenterede kodning. Den bærer de komponenter, som de offentliggjorte beskrivelser af LEO-navigationsmeddelelser nævner, modelleret efter Galileo ICD's feltsæt. Den er ikke bitlayoutet for Celeste eller noget andet system: ingen er offentlige.

Ramme: præambel 0xA7 (8 bits), version 1 (4), model (4: 1 kepler16, 2 kepler-rac, 3 liu22, 4 ecef-poly), nyttelastlængde i bytes (12), nyttelast udfyldt med nuller til en hel byte, CRC-24Q (en 24-bit cyklisk redundanskontrol, 24 bits) over alle foregående bytes. CRC-24Q er kontrollen i standarden RTCM 10403 fra Radio Technical Commission for Maritime Services og i Galileo ICD (polynomium 0x1864CFB, startværdi 0); koden gengiver katalogets kontrolværdi 0xCDE703 for 123456789 og kontrolbytes i eksempelrammen af RTCM 10403 meddelelsestype 1005 (VALIDATED).

Galileo ICD's trin blev valgt til middelhøj jordbane og er for grove til en LEO-meddelelse på centimeterniveau: Crs i trin på 2⁻⁵ m (3,1 cm), Cuc 2⁻²⁹ rad (1,3 cm ved LEO-radius), vinklerne 2⁻³¹ halvcirkler (1,0 cm) og af0 2⁻³⁴ s (1,7 cm). Kshana beholder ICD-enhederne og halvcirkelkonventionen, forfiner trinnene, så hvert felts halvtrinsfejl holdes under 1 mm i position eller afstand over et 15-minutters vindue, og udvider felterne, så de dækker de intervaller, en LEO-tilpasning har brug for:

Blok Felt Bits Trin Enhed
hjælpe- og synkroniseringsdata SVID 8 1 -
hjælpe- og synkroniseringsdata IOD 10 1 -
hjælpe- og synkroniseringsdata Band 4 1 -
hjælpe- og synkroniseringsdata Health 2 1 -
hjælpe- og synkroniseringsdata WeekNumber 13 1 uge
hjælpe- og synkroniseringsdata ToW 20 1 s
hjælpe- og synkroniseringsdata Flags 4 1 -
ur (flagbit 0) toc 20 1 s
ur (flagbit 0) af0 34 2^-38 s
ur (flagbit 0) af1 28 2^-50 s/s
ur (flagbit 0) af2 20 2^-62 s/s^2
Kepler (modeller 1-3) toe 20 1 s
Kepler (modeller 1-3) M0 36 2^-35 halvcirkel
Kepler (modeller 1-3) e 32 2^-33 -
Kepler (modeller 1-3) sqrtA 36 2^-23 m^0,5
Kepler (modeller 1-3) Omega0 36 2^-35 halvcirkel
Kepler (modeller 1-3) i0 36 2^-35 halvcirkel
Kepler (modeller 1-3) omega 36 2^-35 halvcirkel
Kepler (modeller 1-3) deltaN 29 2^-43 semicircle/s
Kepler (modeller 1-3) OmegaDot 29 2^-43 semicircle/s
Kepler (modeller 1-3) iDot 22 2^-43 semicircle/s
Kepler (modeller 1-3) Cuc 26 2^-34 rad
Kepler (modeller 1-3) Cus 26 2^-34 rad
Kepler (modeller 1-3) Crc 26 2^-10 m
Kepler (modeller 1-3) Crs 26 2^-10 m
Kepler (modeller 1-3) Cic 26 2^-34 rad
Kepler (modeller 1-3) Cis 26 2^-34 rad
langs-/tværs-/radiale korrektioner (model 2) degA 3 1 -
langs-/tværs-/radiale korrektioner (model 2) degC 3 1 -
langs-/tværs-/radiale korrektioner (model 2) degR 3 1 -
langs-/tværs-/radiale korrektioner (model 2) racTauExp 4 1 log2(s)
langs-/tværs-/radiale korrektioner (model 2) a_k, c_k, r_k 22 2^-14 m
Liu et al. 2025 ekstra led (model 3) aDot 26 2^-20 m/s
Liu et al. 2025 ekstra led (model 3) nDot 30 2^-58 halvcirkel/s^2
Liu et al. 2025 ekstra led (model 3) Crs3 26 2^-10 m
Liu et al. 2025 ekstra led (model 3) Crc3 26 2^-10 m
Liu et al. 2025 ekstra led (model 3) Crs1 26 2^-10 m
Liu et al. 2025 ekstra led (model 3) Crc1 26 2^-10 m
ECEF-polynomium (model 4) tref 20 1 s
ECEF-polynomium (model 4) degP 4 1 -
ECEF-polynomium (model 4) x0, y0, z0 38 2^-11 m
ECEF-polynomium (model 4) x_k, y_k, z_k (k >= 1) 34 2^-12 m
Klobuchar (flagbit 1) alpha0 8 2^-30 s
Klobuchar (flagbit 1) alpha1 8 2^-27 s/semicircle
Klobuchar (flagbit 1) alpha2 8 2^-24 s/halvcirkel^2
Klobuchar (flagbit 1) alpha3 8 2^-24 s/halvcirkel^3
Klobuchar (flagbit 1) beta0 8 2^11 s
Klobuchar (flagbit 1) beta1 8 2^14 s/semicircle
Klobuchar (flagbit 1) beta2 8 2^16 s/halvcirkel^2
Klobuchar (flagbit 1) beta3 8 2^16 s/halvcirkel^3
NeQuick-G (flagbit 2) ai0 11 2^-2 sfu
NeQuick-G (flagbit 2) ai1 11 2^-8 sfu/deg
NeQuick-G (flagbit 2) ai2 14 2^-15 sfu/deg^2
NeQuick-G (flagbit 2) SF1-5 5 1 -
UTC (flagbit 3) A0 32 2^-30 s
UTC (flagbit 3) A1 24 2^-50 s/s
UTC (flagbit 3) dtLS 8 1 s
UTC (flagbit 3) t0t 8 3600 s
UTC (flagbit 3) WNot 8 1 uge
UTC (flagbit 3) WNLSF 8 1 uge
UTC (flagbit 3) DN 3 1 day
UTC (flagbit 3) dtLSF 8 1 s

En værdi uden for sit felts interval afvises og ombrydes ikke. Intervallerne blev kontrolleret ved at kode tilpasninger ved 300 til 2000 km, banehældninger fra 0° til 140° og tilpasningsintervaller op til 20 minutter: deltaN og OmegaDot er brede, fordi knuden er dårligt defineret på en næsten ækvatorial bane, og tilpasningen fordeler argumentets J2-drift for breddevinklen mellem dem, og aDot og nDot er det, fordi 22-parametertilpasningen over 20 minutter optager en del af den kortperiodiske svingning i den halve storakse. Siden 0,30 er 22-parametertilpasningen artiklens almindelige mindste kvadraters metode uden apriori-værdier, og en ækvatorial tilpasning ved 800 km har da brug for nDot på omkring 6.3e-10 halvcirkel/s^2, så dens skala gik fra 2^-60 til 2^-58. De langsgående korrektioner af grad 7 for kepler-rac passer i koefficientintervallet på 22 bit op til 15 minutter; en længere tilpasning kan overskride det og afvises da. quantisation_budget rapporterer for hvert efemeride- og urfelt den største ændring i position og afstand, som en ændring på et halvt trin giver over brugsperioden, samt ændringen i hele meddelelsen efter kvantisering.

Teksteksport#

RINEX 4,02 definerer ingen LEO-navigationsposter (dets systembogstaver er G, R, E, J, C, I og S; International Global Navigation Satellite System (GNSS) Service (IGS) RINEX 4,02). Blokken, som text.rs skriver, låner formen fra RINEX 4 — en postoverskrift > EPH, en linje med satellit og epoke med tre urled, broadcast-banelinjer med fire D19.12-felter — og er en dokumenteret Kshana-udvidelse: systembogstav L, posttyper KP16, KRAC, LU22, APOL og tre overskriftskommentarer, der siger det. Tidligere arbejde om LEO-baner i navigationsposter i RINEX-4-stil: 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

CSV-tabellen bærer kepler16- og kepler-rac-meddelelser, én pr. række. Standardkolonnerne bruger Galileo ICD's navne (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 vælger i stedet en forudindstillings stavemåde. Begge formater kan læses tilbage.

Ionosfære og UTC#

  • Klobuchar: motorens L1-model (gnss_sim::klobuchar_delay_m, kontrolleret mod RTKLIB) skaleret til bærebølgen med førsteordens-loven (f_L1 / f)².
  • NeQuick-G: koefficienterne følger med i meddelelsen, og effective_ionisation_level returnerer Az = ai0 + ai1·μ + ai2·μ² for en modificeret dip-breddegrad μ efter algoritmens regler (koefficienter, der alle er nul, giver 63,7 solar flux units, sfu; resultatet begrænses til [0, 400] sfu). NeQuick-elektrontæthedsmodellen og dens integration langs skråvejen, som omsætter Az til en forsinkelse, er ikke implementeret.
  • En satellit i nogle hundrede kilometers højde flyver inde i ionosfæren. Ingen af de to broadcast-modeller tager højde for elektronindholdet over satellitten, og der anvendes ingen korrektion for det.
  • UTC: system_to_utc anvender de tre tilfælde i Galileo ICD §5.1.7 (før, inden for seks timer af og efter en skudsekundshændelse); et indskudt sekund læses som 86400.

Forudindstillinger#

Forudindstillinger er data, én fil hver under src/leo_navmsg/presets/, med deres kilder. Motoren og alle medfølgende scenarier undtagen Celeste-scenariet kører uden dem.

Nøgle Kilde Bane Bærebølge Meddelelsesmodel
xona-pulsar PUBLIC, arXiv 2509,19551 1080 km, 53° X1 1593,3225 MHz ikke offentliggjort
xona-pulsar-0 PUBLIC, arXiv 2509,19551 520 km, 97° X1 ikke offentliggjort
iridium PUBLIC, RNTF-rapport, beskrivelse af konstellationen 781 km, 86,4° 1621 MHz (1616–1626 MHz-bånd) ingen udsendes
starlink PUBLIC, NAVIGATION 72(1), beskrivelse af konstellationen 550 km, 53° Ku-bånd, værdi midt i båndet (repræsentativ) ingen (opportunistiske signaler)
centispace PUBLIC, Sensors 2023, Satellite Navigation 2026 700 km, 55° nær B1 (skjult i kilden; L1 som stedfortræder) ikke offentliggjort
cband-generic REPRESENTATIVE 600 km, 97,8° 5020 MHz (RNSS C-bånds centrum) ikke offentliggjort
atomic PUBLIC, InsideGNSS 500 km (repræsentativ) L1 (repræsentativ) ecef-poly, grad 6, 60 s, opdateret hvert 30 s, intet ur, 0,24 m styringsresidual
celeste-iod WORKSHOP og PUBLIC 510 km, 97,4° 1191,795 MHz kepler-rac, grader og postafstand i forudindstillingsfilen

RNSS er radionavigationssatellittjenesten; RNTF er Resilient Navigation and Timing Foundation.

Celeste IOD. Forudindstillingen for Den Europæiske Rumorganisations (ESA's) Celeste-demonstration i kredsløb (IOD) er den eneste, der bruger materiale fremlagt på ESA Navigation Innovation and Support Programme (NAVISP) LEO-PNT-workshoppen, 2026: meddelelsesstrukturen (Galileos Kepler-sæt plus korrektionspolynomier langs/på tværs/radialt, urpolynomium, SVID, helbred, IOD, ionosfære- og UTC-parametre), postafstanden og CSV-kolonnenavnene. Banen (510 km, næsten polær solsynkron) og bærebølgen stammer fra offentlige kilder, der er nævnt i filen. Celestes bitlayout er ikke offentligt og gengives ikke; senere Celeste-faser og Den Europæiske Unions (EU's) LEO-PNT-system kan afvige. Hver værdi afledt af workshoppen findes i modulet navmsg i src/celeste_iod.rs, som bruges af scenarios/leo-navmsg-celeste-iod.toml. Sådan holdes forudindstillingen tilbage: hvert tal i motoren, der stammer fra workshoppen, ligger i én fil, src/celeste_iod.rs, som build.rs kun kompilerer med, når den findes, og i de scenarier, der kun findes i repositoriet, scenarios/*celeste-iod*.toml. Sletter man den fil og de scenarier, holdes forudindstillingen tilbage uden nogen ændring af kildekoden; alle andre tests, uafhængige referencer og scenarier kører uden den, og READMEs antal scenariefiler tæller stadig de tilbageholdte filer med.

Verifikation#

Række Mærkat Uafhængig reference
SISRE-vægte VALIDATED Montenbruck et al. 2018 tabel (GPS, GLONASS, Galileo, BeiDou, geostationær)
Galileo ICD's brugeralgoritme VALIDATED RTKLIB eph2pos på fire virkelige Galileo-broadcast-efemerider, 1 mm pr. akse (tests/leo_navmsg_reference.rs)
CRC-24Q VALIDATED katalogets kontrolværdi 0xCDE703; eksempelramme RTCM 10403 1005
Tilpasning og SISRE-afvejning MODELLED totlegemesreference genfundet til 1 mm; korrigeret J2–J6-tilpasning til 1 mm; monoton vækst med intervallet
Kontinuitet midt i passagen MODELLED springidentitet; lukket kegleformel som grænse mod stikprøvetagning
Binært format og budget MODELLED rundture; hvert felts halve trin under 1 mm
RINEX-lignende og CSV MODELLED rundture
Liu et al. 2025 22-parametermodel og tilpasning VALIDATED Præcise TU Graz ITSG-baner for fire satellitter mod artiklens tabeller 4, 5, 6 og 8: forhold for langs, på tværs, radialt og SISRE fra 0,755 til 1,138 på artiklens dage og fra 0,683 til 1,186 på otte tilbageholdte dage, inden for 1,5x (tests/leo_navmsg_fit_real_orbit_oracle.rs)
ATOMIC-polynomium uden ur og tabellen med fem højder MODELLED ATOMIC-fakta fra InsideGNSS; den offentliggjorte Liu-tabel trykt ved siden af Kshanas tilpasning til integreret bane, ikke fastlåst
Ionosfære og UTC MODELLED ICD's lukkede formler; den mod RTKLIB kontrollerede Klobuchar-model

Begrænsninger#

  • SISRE er kun repræsentationsfejl: ingen fejl fra banebestemmelse eller prædiktion.
  • Referencen er en Kshana-integration (uden tredjelegeme, solstrålingstryk eller tidevand), ikke en virkelig satellits præcise bane.
  • Det binære format og den RINEX-lignende blok er Kshanas egne.
  • NeQuick-G bæres med, men integreres ikke til en forsinkelse; ingen korrektion for en satellit inde i ionosfæren.
  • Sammenligningen med Liu et al. afviger i baner, parameterlæsning og vægte.