Konekäännös, jota äidinkielinen puhuja ei ole tarkistanut. Viitteenä on englanninkielinen versio.

Matalan Maan kiertoradan (LEO) navigointiMuokkaa GitHubissaLähde: docs/LEO-NAVMSG.md

LEO-navigointiviesti

Skenaariolaji leo-navmsg rakentaa matalan Maan kiertoradan (LEO) paikannus-, navigointi- ja ajanmääritys (PNT) -satelliitin lähettämän efemeridi- ja kelloviestin sekä vastaa kysymyksiin, joita viestin suunnittelija esittää: kuinka pitkän ajan yksi viesti voi kattaa, mitä kukin lisäparametri tuo, mitä käyttäjä näkee, kun viesti vaihtuu ylilennon aikana, ja montako bittiä tarvitaan sentin tarkkuuteen.

Se on järjestelmäriippumaton. Mikä tahansa kiertorata, mikä tahansa kantoaalto ja mikä tahansa neljästä efemeridimallista ajetaan ilman esiasetusta; nimetyt esiasetukset ovat valinnaista dataa (katso Esiasetukset).

Tulosta mukana tuleva esimerkki komennolla kshana example <name> (yksi nimi kutsua kohden) ja aja se komennolla kshana scenarios/<name>.toml: leo-navmsg-fit-interval-trade, leo-navmsg-model-comparison, leo-navmsg-midpass-update ja leo-navmsg-encode-decode. Laji on myös lajin leo-pnt-chain viestivaihe (LEO-PNT.md) ja kampanjan leo-focus-data-services jäsen, joka kokoaa neljä viestikonfiguraatiota ja raportoi kunkin kehyksen pituuden (146, 154, 159 ja 171 tavua).

Koodi: src/leo_navmsg/ — elements.rs (tietueet ja käyttäjäalgoritmi), truth.rs (todellinen rata ja kello), fit.rs (sovitin), sisre.rs (signaali avaruudessa -etäisyysvirhe), services.rs (ionosfääri ja yleisaika (UTC)), codec.rs (binäärimuoto), text.rs (RINEX-tyyliset ja pilkuilla erotetut (CSV) viennit), presets/ (yksi tiedosto esiasetusta kohden), mod.rs (laji).

Mitä viesti sisältää#

Osa Sisältö
Aputiedot avaruusaluksen tunniste (SVID), datan julkaisutunniste (IOD), kaistatunniste, signaalin terveystila (Galileon käytäntö: 0 OK, 1 pois käytöstä, 2 laajennettu toiminta, 3 testauksessa)
Synkronointi viikkonumero, lähetyksen viikon aika (TOW) ja toisen asteen kellopolynomi af0 + af1·(t − toc) + af2·(t − toc)²
Efemeridi yksi alla olevista neljästä mallista
Muut palvelut Klobucharin lähetetty ionosfäärijoukko, Galileon NeQuick-G-kertoimet ai0, ai1, ai2 viidellä myrskylipulla sekä järjestelmäajan ja UTC:n väliset parametrit A0, A1, ΔtLS, t0t, WNot, WNLSF, DN, ΔtLSF

Efemeridimallit#

Koodi Malli Parametrit
kepler16 Galileo Open Service Signal-in-Space Interface Control Documentin (OS SIS ICD) Keplerin joukko: √A, e, i0, Ω0, ω, M0, Δn, Ω̇, i̇, Cuc, Cus, Crc, Crs, Cic, Cis, toe 16
kepler-rac sama, lisäksi radansuuntaiset, poikittaiset ja radiaaliset (RAC) korjauspolynomit a0…, c0…, r0… kentässä τ = tk / tau_s, kertoimet metreinä, tau_s kakkosen potenssi, joka on vähintään puolet sovitusvälistä (lähetetään), asteluvut määräytyvät kentästä rac_degrees (oletus 7, 5, 6) oletuksena 16 + 21, lisäksi aika-asteikko
liu22 Liun, Sun, Xien, Zhoun ja Qun 22 parametrin malli (2025, Remote Sensing 17(16):2894, doi 10.3390/rs17162894): 16 plus ȧ, ṅ, Crs3, Crc3, Crs1, Crc1 22
ecef-poly ATOMICin (Autonomous Time and Orbit Determination for Microsatellite Constellations) nollakellomalli: Maan keskipisteinen Maan mukana pyörivä (ECEF) polynomi akselia kohden kentässä τ = (t − t_ref) / 64 s (oletusaste 6), ei kelloparametreja, koska satelliitin kello ohjataan järjestelmäaikaan (InsideGNSS) oletuksena 22

Käyttäjäalgoritmi (elements::sat_state) on Galileon ICD:n sarja (Keplerin yhtälö, toisen harmonisen korjaukset, Maan mukana pyörivä solmu), jonka jälkeen kohteelle kepler-rac lasketaan kolme polynomia Keplerin radan omassa koordinaatistossa: radiaalinen arvioitua paikkaa pitkin, poikittainen radan normaalia pitkin korjatusta inklinaatiosta ja solmusta, radansuuntainen täydentää kolmikon. Kello lisää ICD:n suhteellisuusteoreettisen termin F·e·√A·sin E; kohteelle ecef-poly se on yleinen muoto −2 r·v / c² polynomista ja sen derivaatasta.

Liun ym. termit noudattavat artikkelin käyttäjäalgoritmia (kohta 2,2, yhtälöt 1-7): A = A0 + ȧ·tk, n = √(μ/A0³) + Δn + ṅ·tk (versiot ennen 0,30 käyttivät Global Positioning Systemin (GPS) siviilinavigoinnin käytäntöä ½·ṅ·tk, joten niiden kirjoittama ṅ on kaksi kertaa artikkelin arvo) sekä Crs1·sin Φ + Crc1·cos Φ + Crs3·sin 3Φ + Crc3·cos 3Φ lisättynä säteeseen, Φ korjaamaton leveysargumentti. Mittakaavakäytäntö ṅ on kirjattu artikkelin yhtälöstä 1; artikkelin vertailu todellisilla radoilla ei riipu siitä (kerroin ½ kohteessa ṅ jättää jokaisen sovitetun luvun ennalleen), joten lähetetyn arvon nDot merkitystä ei siellä validoida.

Kaksi tulkintaa on Kshanan omia ja ne ilmoitetaan sellaisina:

  • RAC-koordinaatisto ja normalisointi τ = tk / tau_s. Mikään julkinen asiakirja ei määritä LEO-korjauskoordinaatistoa lähetetylle viestille.
  • Nollakello-viestin kello on kokonaisuudessaan nolla: ohjaussilmukan oletetaan pitävän näennäisen kellon, suhteellisuusteoreettinen termi mukaan lukien, järjestelmäajassa.

Sovitin#

truth.rs integroi radan kiinteäaskelisella neljännen kertaluvun Runge–Kutta-menetelmällä koordinaatistossa, joka muuttuu Maan mukana pyöriviksi akseleiksi yhdellä kierrolla, θ(t) = θ0 + Ω̇e·t, samalla yhdellä kierrolla, jonka lähetetty käyttäjäalgoritmi soveltaa. Painovoima on kaksikappale (gravity_degree = 0), vyöhykeharmoniset J2–J6 (2 – 6) tai Earth Gravitational Model 2008 (EGM2008) -kenttä asteluvulle ja kertaluvulle 7–70, jonka tesseraaliset termit kantavat lyhytjaksoisen allekirjoituksen, joka tekee LEO-sovituksesta vaikean. Ilmanvastus on valinnainen (staattinen eksponentiaalinen tiheys). Kello on vapaasti käyvä (bias, ajautuma, ajautuman nopeus ja valkoinen taajuuskohina ilmoitetulla yhden sekunnin Allanin poikkeamalla, plus jaksollinen suhteellisuusteoreettinen termi) tai ohjattu (ensimmäisen kertaluvun Gauss–Markov-jäännös).

fit.rs sovittaa Keplerin joukon Levenberg–Marquardt-menetelmällä ei-singulaarisille alkioille (e·cos ω, e·sin ω, λ0 = M0 + ω): LEO-rata on lähes ympyrä, joten ω ja M0 yksinään ovat lähes erottamattomia. Se lähtee oskuloivasta tilasta kohdassa toe J2-solmunopeudella. Heikot nollakeskiset priorit rajoittavat nopeudet ja harmoniset, joita lyhyt kaari ei pysty ratkaisemaan; havaintopainolla 1 cm ne vaikuttavat vain näissä nollasuunnissa. Sovitus liu22 ottaa sen sijaan artikkelin kohdan 2,3 lähdön ja estimaattorin: se alkaa kaikilla korjaustermeillä nollana, ei käytä prioreita (tavallinen pienimmän neliösumman menetelmä) ja pitää artikkelin 100 iteraation katon. Se pysähtyy Kshanan omaan parametrien suppenemissääntöön, kun jokainen parametriaskel on alle 1e-3 sen muodollisesta keskihajonnasta; artikkeli pysähtyy sen sijaan, kun RMS muuttuu alle 0,1 mm. RAC-polynomit sovitetaan sitten radansuuntaisiin, poikittaisiin ja radiaalisiin jäännöksiin lineaarisella pienimmän neliösumman menetelmällä, ja kellopolynomi todelliseen kelloon vähennettynä suhteellisuusteoreettinen termi, jonka käyttäjä lisää takaisin.

Oletusarvojen koodaama havainto: Keplerin pienimmän neliösumman sovituksen jälkeen jäännös on rakenteensa mukaan se, mitä 16 parametria eivät voi kattaa, joten se värähtelee ikkunan yli (useita nollanylityksiä kussakin komponentissa) eikä ajaudu. Korjauspolynomi poistaa sen vain, kun sen aste ylittää sen, minkä Keplerin joukko jo kattaa: radansuuntainen 7, poikittainen 5 ja radiaalinen 6 vievät 15 minuutin jäännöksen senttimetreistä noin millimetriin, kun taas matalammat poikittaisasteet poistavat lähes mitään (poikittainen jäännös on pariton ikkunan keskipisteen suhteen). Järjestelmä, joka johtaa Keplerin osan jollain muulla tavalla, jättää eri muotoisen jäännöksen, ja tarvittavat asteet seuraavat siitä. Celeste-esiasetuksen omat korjausasteet (matalammat kuin nämä; ne ovat vain esiasetustiedostossa, src/celeste_iod.rs) ajetaan tässä Kshanan pienimmän neliösumman pohjalla, minkä vuoksi sen poikittaistermit vaikuttavat tässä moottorissa vähän: lausuma Kshanan sovittimesta, ei mistään todellisesta järjestelmästä. toe ja toc ovat kokonaisia sekunteja, kuten binäärimuoto ne kantaa.

Kutakin viestiä käytetään sovitusikkunansa keskelle sijoitetun jakson ajan (ensimmäinen kompromissitaulukko käyttää koko ikkunaa). Signaali avaruudessa -etäisyysvirheen (SISRE) luvut mittaavat viestin esitysvirhettä suhteessa totuuteen, johon se sovitettiin, neliökeskiarvona (RMS) ja jakson maksimina. Radanmäärityksen ja ratakennusteen virhettä, jonka todellinen maa- tai aluksella oleva segmentti lisää päälle, ei mallinneta.

Signaali avaruudessa -etäisyysvirhe#

sisre.rs käyttää Montenbruckin, Steigenbergerin ja Hauschildin maailmanlaajuista keskimääräistä SISRE:a (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²) )

Painot ovat keskiarvoja käyttäjille, jotka on jaettu tasaisesti näkyvälle Maan kalotille, kohteille cos² η ja ½ sin² η, missä η on näkölinjan nadirkulma satelliitilla, laskettuna radan omalle säteelle ja korkeuskulman maskille. Maskikulmalla 0° laskenta toistaa artikkelin taulukon keskikorkealla kiertoradalla (GPS 0,98 ja 1/49, GLONASS 1/45, Galileo 1/61, BeiDou 1/54) ja geostationaarisella kiertoradalla (0,99 ja 1/126): se on VALIDATED-tarkistus. LEO:lla sama keskiarvo antaa

Korkeus w_R 1 / w_AC² horisontin nadirkulma
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°

joten LEO-käyttäjä, joka näkee satelliitin kaukana nadirista, tuntee radansuuntaiset ja poikittaiset virheet paljon voimakkaammin kuin keskikorkean radan käyttäjä.

Analyysit#

analysis = [...] valitsee minkä tahansa neljästä (oletuksena kaikki).

Sovitusvälin kompromissi#

[trade] asettaa jakson, sovitusvälit, päivitysjaksot ja mallit. scenarios/leo-navmsg-fit-interval-trade.toml (550 km, 97,6°, EGM2008 asteelle 20 ja ilmanvastus, 30 minuuttia viestejä) antaa, kun käyttöjakso on yhtä pitkä kuin sovitusväli:

Malli Sovitusväli SISRE-radan RMS SISRE-radan maksimi SISRE kellon kanssa, RMS radiaalinen / radansuuntainen / poikittainen 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

Ja kun sovitus on 300 s ja vaihdellaan sitä, kuinka usein uusi viesti ottaa vallan:

Malli Päivitysjakso SISRE-radan RMS SISRE-radan maksimi
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

16 parametrin Keplerin joukko heikkenee arvosta 0,04 cm kohdassa 60 s arvoon 9,35 cm kohdassa 900 s: yksi Keplerin joukko kaksi kertaa kierrosta kohden olevilla harmonisilla ei pysty seuraamaan LEO-kaaren korkeataajuisempia painovoimatermejä ja ilmanvastusta kuin muutaman minuutin ajan, ja sen pienimmän neliösumman jäännös värähtelee ikkunan yli. Radansuuntaiset/poikittaiset/radiaaliset polynomit (asteet 7, 5, 6) vaimentavat jäljelle jäävän: 1,01 cm kohdassa 900 s, 0,21 cm kohdassa 600 s. Lyhimmillä väleillä Keplerin luvut ovat millimetrin alapuolella eivätkä enää ole tiukasti järjestyksessä (sovitusta rajoittaa silloin ehdollisuus, ei malli).

Mallien vertailu#

scenarios/leo-navmsg-model-comparison.toml ajaa neljä mallia 1, 5 ja 10 minuutin välein samalla radalla, parametrien lukumäärällä ja efemeridin ja kellon biteillä Kshanan koodauksessa:

Malli Sovitusväli Parametrit Efemeridin + kellon bitit SISRE-radan RMS SISRE kellon kanssa, 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 (nollakello) 60 s 22 750 0,000 cm 28,784 cm
ecef-poly (nollakello) 300 s 22 750 0,005 cm 28,784 cm
ecef-poly (nollakello) 600 s 22 750 0,561 cm 28,774 cm

Nollakellorivi pisteytetään kelloa vastaan, joka on ohjattu jäännöksellä 0,24 m (ATOMIC-luku), muut vapaasti käyvää kelloa vastaan, johon ne sovittuvat.

Liu ym. 2025, SISRE korkeuden funktiona (MODELLED). Sama skenaario sovittaa Kshanan 22 parametrin mallin 20 minuutin kaarille artikkelin viidellä korkeudella, kunkin satelliitin inklinaatiolla:

Satelliitti Korkeus Inklinaatio Liu ym. 2025 Kshana (vain radan RMS) suhde
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

Tämä ei ole validointi. Artikkeli sovitti nimettyjen satelliittien todellisia tarkkoja tieteellisiä ratoja (täydellä painovoima-, ilmanvastus- ja ei-gravitaatiohistorialla); Kshana sovittaa oman integroidun ratansa, arvioi kuusi lisäparametria edellä kuvatulla tavalla ja käyttää omia SISRE-painojaan. Vertailu osoittaa suuntauksen ja suuruusluokan. Vertailu samoilla todellisilla radoilla, jotka artikkeli sovitti, on tests/leo_navmsg_fit_real_orbit_oracle.rs (versiosta 0,30 lähtien 22 parametrin sovitus on siellä yhtä mieltä ennakkorekisteröidyn kertoimen 1,5 sisällä, artikkelin päivinä ja kahdeksana pidätettynä päivänä).

Päivitys kesken ylilennon#

[midpass] sijoittaa käyttäjän (oletus 45° N, 10° E), etsii korkeimman maskin yläpuolisen ylilennon jaksosta search_s ja ajoittaa viestit välein update_period_s. Jokaisessa ylilennon sisäisessä vaihdossa se raportoi paikkahypyn, kellohypyn, käyttäjän pseudoetäisyyshypyn (uusi viesti miinus vanha), suurimman hypyn, jonka mikä tahansa näkyvä käyttäjä voisi nähdä (suljettu muoto nadirkartion yli), etäisyysvirheen ennen ja jälkeen sekä PASS tai FAIL vastaan threshold_m. scenarios/leo-navmsg-midpass-update.toml (sovitukset 300 s, päivitettynä 150 s välein):

Vuorokauden korkein ylilento saavuttaa korkeuskulman 43,7° ja kestää 455 s. Sen vaihdot:

Vaihto Korkeuskulma Paikkahyppy Kellohyppy Käyttäjän etäisyyshyppy Pahimman geometrian hyppy
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

Suurin käyttäjän etäisyyshyppy 0,35 mm kynnystä 5 cm vastaan: PASS.

Koodaus ja purku#

scenarios/leo-navmsg-encode-decode.toml koodaa kolmesta viestistä ensimmäisen, purkaa sen, tarkistaa CRC:n ja hylkää turmeltuneen kopion, tulostaa kvantisointibudjetin sekä kirjoittaa ja lukee takaisin RINEX-tyylisen lohkon ja CSV-taulukon:

  • kehys: 171 tavua (1310 hyötykuormabittiä, joista 1045 on efemeridiä ja kelloa), 24-bittinen syklinen redundanssitarkistus (CRC-24Q) 0x19105F;
  • minkä tahansa yksittäisen kentän suurin puoliaskelvaikutus: af0, 0,545 mm;
  • koko viesti kvantisoinnin jälkeen: paikka 1,126 mm:n ja kello 0,185 mm:n sisällä täsmällisestä viestistä; SISRE 0,113 cm täsmällisenä, 0,129 cm puretussa;
  • kehys, jossa yksi bitti on käännetty, hylätään: tosi;
  • RINEX-tyylinen edestakainen kierros 5.0e-06 m:n sisällä, CSV-edestakainen kierros 0.0e+00 m:n sisällä.

Alustariippumattomuus#

Kehys on lähetettyjä kokonaislukuja, joten sen on oltava samat kokonaisluvut missä ja miten tahansa skenaario ajetaan: natiivi binääri millä tahansa käyttöjärjestelmällä, debug- tai release-käännös sekä selaimessa toimiva WebAssembly (WASM) -käännös. Tiellä oli kolme asiaa. Isäntäkoneen matematiikkakirjaston sini, kosini, arkustangentti ja eksponentti eivät välttämättä ole oikein pyöristettyjä ja eroavat isäntien välillä viimeisessä numerossa. Optimoitu käännös macOS:ssä ottaa yhden argumentin sinin ja kosinin järjestelmän yhdistetystä rutiinista, joka ei aina palauta yksittäisen sinin arvoa, joten debug- ja release-käännös erosivat myös. Ja tavallinen normaalijakaumanäytteistin kutsuu isännän eksponenttia ja logaritmia harvinaisissa haaroissaan. Sovitus muuttaa näin pienen eron erilaisiksi kvantisoiduiksi kentiksi. Koko laji (todellinen rata ja kello, sovitus, käyttäjäalgoritmi, signaali avaruudessa -etäisyysvirhe (SISRE), koodekki) laskee siksi jokaisen tällaisen funktion puhtaalla Rust-kirjastolla (crate) libm kautta src/portable_math.rs, kokonaislukupotenssit eksplisiittisinä tuloina ja normaalipoikkeamat napamenetelmällä generaattorin raakatulosteesta. leo_navmsg::tests::the_encoded_frame_is_the_same_bytes_on_every_platform lukitsee alla olevan koodaus- ja purkuskenaarion 171 tavun kehyksen ja yhden tarkistusarvon efemeridimallia kohden; debug-käännös, release-käännös ja WASM-käännös antavat tavu tavulta identtiset tulosasiakirjat kaikille viidelle mukana tulevalle skenaariolle lajista leo-navmsg.

Binäärimuoto#

Tämä on Kshanan oma dokumentoitu koodaus. Se kantaa ne osat, jotka LEO-navigointiviestien julkaistut kuvaukset nimeävät, mallinnettuna Galileon ICD-kenttäjoukon mukaan. Se ei ole Celesten tai minkään muun järjestelmän bittirakenne: yksikään ei ole julkinen.

Kehys: johdanto 0xA7 (8 bittiä), versio 1 (4), malli (4: 1 kepler16, 2 kepler-rac, 3 liu22, 4 ecef-poly), hyötykuorman pituus tavuina (12), hyötykuorma nollatäytettynä tavun rajaan, CRC-24Q (24-bittinen syklinen redundanssitarkistus, 24 bittiä) jokaisen edeltävän tavun yli. CRC-24Q on Radio Technical Commission for Maritime Services -standardin RTCM 10403 ja Galileon ICD:n tarkistus (polynomi 0x1864CFB, alkuarvo 0); koodi toistaa luettelon tarkistusarvon 0xCDE703 syötteelle 123456789 ja RTCM 10403 -viestityypin 1005 esimerkkikehyksen tarkistustavut (VALIDATED).

Galileon ICD:n askeleet valittiin keskikorkealle kiertoradalle, ja ne ovat liian karkeita senttitason LEO-viestille: Crs askelin 2⁻⁵ m (3,1 cm), Cuc 2⁻²⁹ rad (1,3 cm LEO-säteellä), kulmat 2⁻³¹ puoliympyrää (1,0 cm) ja af0 2⁻³⁴ s (1,7 cm). Kshana säilyttää ICD:n yksiköt ja puoliympyräkäytännön, tihentää askeleet niin, että jokaisen kentän puoliaskelvirhe pysyy alle 1 mm:n paikkaa tai etäisyyttä 15 minuutin ikkunassa, ja leventää kenttiä, jotta LEO-sovituksen tarvitsemat alueet säilyvät:

Lohko Kenttä Bitit Askel Yksikkö
aputiedot ja synkronointi SVID 8 1 -
aputiedot ja synkronointi IOD 10 1 -
aputiedot ja synkronointi Band 4 1 -
aputiedot ja synkronointi Health 2 1 -
aputiedot ja synkronointi WeekNumber 13 1 viikko
aputiedot ja synkronointi ToW 20 1 s
aputiedot ja synkronointi Flags 4 1 -
kello (lippubitti 0) toc 20 1 s
kello (lippubitti 0) af0 34 2^-38 s
kello (lippubitti 0) af1 28 2^-50 s/s
kello (lippubitti 0) af2 20 2^-62 s/s^2
Keplerin (mallit 1-3) toe 20 1 s
Keplerin (mallit 1-3) M0 36 2^-35 puoliympyrä
Keplerin (mallit 1-3) e 32 2^-33 -
Keplerin (mallit 1-3) sqrtA 36 2^-23 m^0,5
Keplerin (mallit 1-3) Omega0 36 2^-35 puoliympyrä
Keplerin (mallit 1-3) i0 36 2^-35 puoliympyrä
Keplerin (mallit 1-3) omega 36 2^-35 puoliympyrä
Keplerin (mallit 1-3) deltaN 29 2^-43 semicircle/s
Keplerin (mallit 1-3) OmegaDot 29 2^-43 semicircle/s
Keplerin (mallit 1-3) iDot 22 2^-43 semicircle/s
Keplerin (mallit 1-3) Cuc 26 2^-34 rad
Keplerin (mallit 1-3) Cus 26 2^-34 rad
Keplerin (mallit 1-3) Crc 26 2^-10 m
Keplerin (mallit 1-3) Crs 26 2^-10 m
Keplerin (mallit 1-3) Cic 26 2^-34 rad
Keplerin (mallit 1-3) Cis 26 2^-34 rad
radansuuntaiset/poikittaiset/radiaaliset korjaukset (malli 2) degA 3 1 -
radansuuntaiset/poikittaiset/radiaaliset korjaukset (malli 2) degC 3 1 -
radansuuntaiset/poikittaiset/radiaaliset korjaukset (malli 2) degR 3 1 -
radansuuntaiset/poikittaiset/radiaaliset korjaukset (malli 2) racTauExp 4 1 log2(s)
radansuuntaiset/poikittaiset/radiaaliset korjaukset (malli 2) a_k, c_k, r_k 22 2^-14 m
Liu ym. 2025 lisät (malli 3) aDot 26 2^-20 m/s
Liu ym. 2025 lisät (malli 3) nDot 30 2^-58 puoliympyrä/s^2
Liu ym. 2025 lisät (malli 3) Crs3 26 2^-10 m
Liu ym. 2025 lisät (malli 3) Crc3 26 2^-10 m
Liu ym. 2025 lisät (malli 3) Crs1 26 2^-10 m
Liu ym. 2025 lisät (malli 3) Crc1 26 2^-10 m
ECEF-polynomi (malli 4) tref 20 1 s
ECEF-polynomi (malli 4) degP 4 1 -
ECEF-polynomi (malli 4) x0, y0, z0 38 2^-11 m
ECEF-polynomi (malli 4) x_k, y_k, z_k (k >= 1) 34 2^-12 m
Klobuchar (lippubitti 1) alpha0 8 2^-30 s
Klobuchar (lippubitti 1) alpha1 8 2^-27 s/semicircle
Klobuchar (lippubitti 1) alpha2 8 2^-24 s/puoliympyrä^2
Klobuchar (lippubitti 1) alpha3 8 2^-24 s/puoliympyrä^3
Klobuchar (lippubitti 1) beta0 8 2^11 s
Klobuchar (lippubitti 1) beta1 8 2^14 s/semicircle
Klobuchar (lippubitti 1) beta2 8 2^16 s/puoliympyrä^2
Klobuchar (lippubitti 1) beta3 8 2^16 s/puoliympyrä^3
NeQuick-G (lippubitti 2) ai0 11 2^-2 sfu
NeQuick-G (lippubitti 2) ai1 11 2^-8 sfu/deg
NeQuick-G (lippubitti 2) ai2 14 2^-15 sfu/deg^2
NeQuick-G (lippubitti 2) SF1-5 5 1 -
UTC (lippubitti 3) A0 32 2^-30 s
UTC (lippubitti 3) A1 24 2^-50 s/s
UTC (lippubitti 3) dtLS 8 1 s
UTC (lippubitti 3) t0t 8 3600 s
UTC (lippubitti 3) WNot 8 1 viikko
UTC (lippubitti 3) WNLSF 8 1 viikko
UTC (lippubitti 3) DN 3 1 day
UTC (lippubitti 3) dtLSF 8 1 s

Arvo, joka on kentän alueen ulkopuolella, hylätään, ei kierretä ympäri. Alueet tarkistettiin koodaamalla sovituksia korkeuksilla 300–2000 km, inklinaatioilla 0°–140° ja sovitusväleillä enintään 20 minuuttia: deltaN ja OmegaDot ovat leveitä, koska lähes päiväntasaajan radalla solmu on huonosti määritelty ja sovitus jakaa leveysargumentin J2-ajautuman niiden kesken, ja aDot ja nDot siksi, että 22 parametrin sovitus 20 minuutin yli imee osan isoakselin lyhytjaksoisesta värähtelystä. Versiosta 0,30 lähtien 22 parametrin sovitus on artikkelin tavallinen pienimmän neliösumman menetelmä ilman prioreita, ja päiväntasaajan 800 km:n sovitus tarvitsee silloin arvon nDot noin 6.3e-10 puoliympyrää/s^2, joten sen mittakaava muuttui arvosta 2^-60 arvoon 2^-58. Kohteen kepler-rac 7. asteen radansuuntaiset korjaukset mahtuvat 22-bittiseen kerroinalueeseen 15 minuuttiin asti; pidempi sovitus voi ylittää sen ja hylätään silloin. quantisation_budget raportoi jokaiselle efemeridin ja kellon kentälle suurimman paikan ja etäisyyden muutoksen, jonka puoliaskelmuutos aiheuttaa käyttöjakson aikana, sekä koko viestin muutoksen kvantisoinnin jälkeen.

Tekstiviennit#

RINEX 4,02 ei määritä LEO-navigointitietueita (sen järjestelmätunnukset ovat G, R, E, J, C, I ja S; International Global Navigation Satellite System (GNSS) Service (IGS) RINEX 4,02). Lohko, jonka text.rs kirjoittaa, lainaa RINEX 4 -muodon rakennetta — tietueen otsikko > EPH, satelliitti- ja epookkirivi kolmella kelloparametrilla, lähetetyn radan rivit, joilla on neljä D19.12-kenttää — ja on dokumentoitu Kshanan laajennus: järjestelmätunnus L, tietuetyypit KP16, KRAC, LU22, APOL ja kolme otsikkokommenttia, jotka sen kertovat. Aiempaa työtä LEO-radoista RINEX-4-tyylisissä navigointitietueissa: 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-taulukko kantaa viestit kepler16 ja kepler-rac yhden riviä kohden. Oletussarakkeet käyttävät Galileon ICD:n nimiä (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 valitsee sen sijaan esiasetuksen kirjoitusasun. Molemmat muodot luetaan takaisin.

Ionosfääri ja UTC#

  • Klobuchar: moottorin L1-malli (gnss_sim::klobuchar_delay_m, tarkistettu RTKLIB:ia vastaan) skaalattuna kantoaallolle ensimmäisen kertaluvun lailla (f_L1 / f)².
  • NeQuick-G: kertoimet kulkevat viestissä ja effective_ionisation_level palauttaa arvon Az = ai0 + ai1·μ + ai2·μ² muunnetulle dip-leveysasteelle μ, algoritmin säännöillä (kaikki nollakertoimet antavat 63,7 aurinkovuoyksikköä, sfu; tulos rajataan välille [0, 400] sfu). NeQuickin elektronitiheysmallia ja sen vinointegrointia, jotka muuttavat suureen Az viiveeksi, ei ole toteutettu.
  • Satelliitti muutaman sadan kilometrin korkeudella lentää ionosfäärin sisällä. Kumpikaan lähetetty malli ei huomioi satelliitin yläpuolista elektronipitoisuutta, eikä sille käytetä korjausta.
  • UTC: system_to_utc soveltaa Galileon ICD:n kohdan § 5.1.7 kolmea tapausta (ennen karkaussekuntitapahtumaa, kuuden tunnin sisällä siitä ja sen jälkeen); lisätty sekunti lukee 86400.

Esiasetukset#

Esiasetukset ovat dataa, yksi tiedosto kutakin hakemistossa src/leo_navmsg/presets/, lähteineen. Moottori ja jokainen mukana tuleva skenaario Celesteä lukuun ottamatta ajetaan ilman niitä.

Avain Lähde Kiertorata Kantoaalto Viestimalli
xona-pulsar PUBLIC, arXiv 2509,19551 1080 km, 53° X1 1593,3225 MHz ei julkaistu
xona-pulsar-0 PUBLIC, arXiv 2509,19551 520 km, 97° X1 ei julkaistu
iridium PUBLIC, RNTF report, tähdistön kuvaus 781 km, 86,4° 1621 MHz (1616–1626 MHz band) ei lähetystä
starlink PUBLIC, NAVIGATION 72(1), tähdistön kuvaus 550 km, 53° Ku-kaista, kaistan keskiarvo (edustava) ei mitään (opportunistiset signaalit)
centispace PUBLIC, Sensors 2023, Satellite Navigation 2026 700 km, 55° lähellä B1:tä (peitetty lähteessä; L1 sijaisena) ei julkaistu
cband-generic REPRESENTATIVE 600 km, 97,8° 5020 MHz (RNSS C-kaistan keskikohta) ei julkaistu
atomic PUBLIC, InsideGNSS 500 km (edustava) L1 (edustava) ecef-poly, aste 6, 60 s, päivitetään 30 s välein, nollakello, 0,24 m ohjausjäännös
celeste-iod WORKSHOP and PUBLIC 510 km, 97,4° 1191,795 MHz kepler-rac, asteet ja tietueväli esiasetustiedostossa

RNSS on radionavigointisatelliittipalvelu; RNTF on Resilient Navigation and Timing Foundation.

Celeste IOD. Euroopan avaruusjärjestön (ESA) Celeste-kiertoratademonstraation (IOD) esiasetus on ainoa, joka käyttää ESA:n Navigation Innovation and Support Programme (NAVISP) LEO-PNT-työpajassa vuonna 2026 esitettyä aineistoa: viestin rakenne (Galileon Keplerin joukko plus radansuuntaiset/poikittaiset/radiaaliset korjauspolynomit, kellopolynomi, SVID, terveys, IOD, ionosfääri- ja UTC-parametrit), tietueväli ja CSV-sarakenimet. Kiertorata (510 km, lähes napainen aurinkosynkroninen) ja kantoaalto tulevat tiedostossa mainituista julkisista lähteistä. Celesten bittirakenne ei ole julkinen eikä sitä toisteta; myöhemmät Celesten vaiheet ja Euroopan unionin (EU) LEO-PNT-järjestelmä voivat poiketa. Jokainen työpajasta johdettu arvo on tiedoston src/celeste_iod.rs moduulissa navmsg, jota käyttää scenarios/leo-navmsg-celeste-iod.toml. Esiasetus pidetään pois näin: jokainen moottorin työpajasta johdettu luku on yhdessä tiedostossa, src/celeste_iod.rs, jonka build.rs käännökseen mukaan vain, jos se on olemassa, sekä vain repositoriossa olevissa skenaarioissa scenarios/*celeste-iod*.toml. Poistamalla tuo tiedosto ja ne skenaariot esiasetus pidetään pois ilman lähdekoodimuutosta; jokainen muu testi, oraakkeli ja skenaario ajetaan ilman sitä, ja README:n skenaariotiedostojen lukumäärä laskee edelleen pois pidetyt tiedostot.

Varmennus#

Rivi Merkintä Oraakkeli
SISRE-painot VALIDATED Montenbruck ym. 2018 taulukko (GPS, GLONASS, Galileo, BeiDou, geostationaarinen)
Galileon ICD:n käyttäjäalgoritmi VALIDATED RTKLIB eph2pos neljällä todellisella Galileon lähetetyllä efemeridillä, 1 mm akselia kohden (tests/leo_navmsg_reference.rs)
CRC-24Q VALIDATED luettelon tarkistusarvo 0xCDE703; RTCM 10403 1005 -esimerkkikehys
Sovittimen ja SISRE:n kompromissi MODELLED kaksikappaletotuus palautettu 1 mm:n tarkkuudella; korjattu J2–J6-sovitus 1 mm:n tarkkuudella; monotoninen kasvu välin mukana
Ylilennon aikainen jatkuvuus MODELLED hyppyidentiteetti; suljetun muodon kartiorajoite näytteenottoa vasten
Binäärimuoto ja budjetti MODELLED edestakaiset kierrokset; jokaisen kentän puoliaskel alle 1 mm
RINEX-tyylinen ja CSV MODELLED edestakaiset kierrokset
Liu ym. 2025 22 parametrin malli ja sovitus VALIDATED TU Grazin ITSG-tarkat radat neljälle satelliitille vastaan artikkelin taulukot 4, 5, 6 ja 8: radansuuntaiset, poikittaiset, radiaaliset ja SISRE-suhteet 0,755–1,138 artikkelin päivinä ja 0,683–1,186 kahdeksana pidätettynä päivänä, 1.5x:n sisällä (tests/leo_navmsg_fit_real_orbit_oracle.rs)
ATOMICin nollakellopolynomi ja viiden korkeuden taulukko MODELLED ATOMIC-tiedot lähteestä InsideGNSS; julkaistu Liun taulukko Kshanan integroidun radan sovituksen rinnalla tulostettuna, ei lukittu
Ionosfääri ja UTC MODELLED ICD:n suljetut muodot; RTKLIB:lla tarkistettu Klobuchar-malli

Rajoitukset#

  • SISRE on vain esitysvirhe: ei radanmääritys- tai ratakennusteen virhettä.
  • Totuus on Kshanan integrointi (ei kolmatta kappaletta, auringon säteilypainetta tai vuorovesiä), ei todellisen satelliitin tarkka rata.
  • Binäärimuoto ja RINEX-tyylinen lohko ovat Kshanan omia.
  • NeQuick-G kuljetetaan, ei integroida viiveeksi; ei korjausta ionosfäärin sisällä olevalle satelliitille.
  • Liun ym. vertailu eroaa radoissa, parametrien tulkinnassa ja painoissa.