LEO navigatsioonisõnum
Stsenaariumi liik leo-navmsg koostab madala Maa orbiidi (LEO) positsioneerimise, navigatsiooni ja aja (PNT) satelliidi ringhäälestatud efemeriidi- ja kellasõnumi ning vastab küsimustele, mida sõnumi kavandaja esitab: kui kaua võib üks sõnum katta, mida iga lisaparameeter annab, mida kasutaja näeb, kui sõnum muutub läbilennu keskel, ja kui palju bitte kulub selle kandmiseks sentimeetrini.
See on süsteemist sõltumatu. Mis tahes orbiit, mis tahes kandelaine ja mis tahes neljast efemeriidimudelist töötab ilma ühegi eelseadistuseta; nimetatud eelseadistused on valikulised andmed (vt Eelseadistused).
Väljasta komplekti kuuluv näide käsuga kshana example <name> (üks nimi korraga) ja käivita see käsuga kshana scenarios/<name>.toml: leo-navmsg-fit-interval-trade, leo-navmsg-model-comparison, leo-navmsg-midpass-update ja leo-navmsg-encode-decode. Liik on ühtlasi liigi leo-pnt-chain sõnumietapp (LEO-PNT.md) ja kampaania leo-focus-data-services liige, mis koostab nelja sõnumikonfiguratsiooni ja annab aru igaühe kaadri pikkusest (146, 154, 159 ja 171 baiti).
Kood: src/leo_navmsg/ — elements.rs (kirjed ja kasutaja algoritm), truth.rs (tõeline orbiit ja kell), fit.rs (sobitaja), sisre.rs (signaal-ruumis kaugusviga), services.rs (ionosfäär ja koordineeritud maailmaaeg (UTC)), codec.rs (binaarvorming), text.rs (Receiver Independent Exchange Format (RINEX)-laadsed ja komadega eraldatud väärtuste (CSV) eksportfailid), presets/ (üks fail eelseadistuse kohta), mod.rs (liik).
Mida sõnum kannab#
| Osa | Sisu |
|---|---|
| Lisaandmed | kosmoseaparaadi identifikaator (SVID), andmeväljaanne (IOD), sagedusriba identifikaator, signaali tervisestaatus (Galileo tava: 0 OK, 1 teenusest väljas, 2 pikendatud töö, 3 katsetuses) |
| Sünkroniseerimine | nädalanumber, edastamise nädala aeg (TOW) ja teise astme kellapolünoom af0 + af1·(t − toc) + af2·(t − toc)² |
| Efemeriid | üks allolevast neljast mudelist |
| Muud teenused | Klobuchari ringhäälestatud ionosfäärikomplekt, Galileo NeQuick-G koefitsiendid ai0, ai1, ai2 koos viie tormilipuga ning süsteemiaja ja UTC vahelised parameetrid A0, A1, ΔtLS, t0t, WNot, WNLSF, DN, ΔtLSF |
Efemeriidimudelid#
| Kood | Mudel | Parameetrid |
|---|---|---|
kepler16 |
Galileo avateenuse signaal-ruumis liidese juhtdokumendi (OS SIS ICD) Kepleri komplekt: √A, e, i0, Ω0, ω, M0, Δn, Ω̇, i̇, Cuc, Cus, Crc, Crs, Cic, Cis, toe |
16 |
kepler-rac |
sama, pluss piki-, ristsuunalised ja radiaalsed (RAC) parandupolünoomid a0…, c0…, r0… ühikus τ = tk / tau_s, koefitsiendid meetrites, tau_s kahe aste, mis on vähemalt pool sobitusvahemikku (edastatakse), astmed määrab rac_degrees (vaikimisi 7, 5, 6) |
16 + 21 vaikimisi, pluss ajaskaala |
liu22 |
Liu, Su, Xie, Zhou ja Qu 22-parameetriline mudel (2025, Remote Sensing 17(16):2894, doi 10.3390/rs17162894): 16 pluss ȧ, ṅ, Crs3, Crc3, Crs1, Crc1 |
22 |
ecef-poly |
ATOMIC (Autonomous Time and Orbit Determination for Microsatellite Constellations) „nullkella“ mudel: Maaga seotud (ECEF) polünoom telje kohta muutujas τ = (t − t_ref) / 64 s (vaikimisi aste 6), kellaliikmeid pole, sest satelliidi kell on juhitud süsteemiajale (InsideGNSS) |
22 vaikimisi |
Kasutaja algoritm (elements::sat_state) on Galileo ICD järjestus (Kepleri võrrand, teise harmoonilise parandused, Maaga seotud sõlm), millele järgneb liigi kepler-rac korral kolm polünoomi piki Kepleri orbiidi enda koordinaatsüsteemi: radiaalne piki arvutatud asukohta, ristsuunaline piki orbiidi normaali parandatud kaldenurgast ja sõlmest, piki-suunaline, mis täiendab kolmiku. Kell lisab ICD relativistliku liikme F·e·√A·sin E; liigi ecef-poly korral on see üldkuju −2 r·v / c² polünoomist ja selle tuletisest.
Liu jt liikmed järgivad artikli kasutaja algoritmi (jaotis 2,2, valem 1-7): A = A0 + ȧ·tk, n = √(μ/A0³) + Δn + ṅ·tk (enne 0,30 väljaandeid kasutasid Global Positioning Systemi (GPS) tsiviilnavigatsiooni tava ½·ṅ·tk, seega on nende kirjutatud ṅ kaks korda artikli väärtus) ja Crs1·sin Φ + Crc1·cos Φ + Crs3·sin 3Φ + Crc3·cos 3Φ liidetud raadiusele, Φ on parandamata laiuskraadi argument. Mõõtkava ṅ tava on üle võetud artikli valemist 1; artikli võrdlus reaalsetel orbiitidel ei sõltu sellest (tegur ½ muutujal ṅ jätab iga sobitatud näitaja muutumatuks), seega edastatud väärtuse nDot tähendus pole seal valideeritud.
Kaks lugemist on Kshana enda omad ja neid esitatakse sellistena:
- RAC koordinaatsüsteem ja
τ = tk / tau_snormaliseerimine. Ükski avalik dokument ei määratle LEO parandussüsteemi ringhäälestatud sõnumi jaoks. - Nullkella sõnumi kell on kokku null: juhtsilmuse eeldatakse hoidvat näiva kella, relativistlik liige kaasa arvatud, süsteemiajas.
Sobitaja#
truth.rs integreerib orbiidi fikseeritud sammuga neljanda järgu Runge–Kutta meetodil koordinaatsüsteemis, mis läheb ühe pöörde θ(t) = θ0 + Ω̇e·t abil Maaga seotud telgedeks, sama ühe pöörde, mida ringhäälestatud kasutaja algoritm rakendab. Gravitatsioon on kahekeha (gravity_degree = 0), tsonaalsed harmoonilised J2 kuni J6 (2 kuni 6) või Earth Gravitational Model 2008 (EGM2008) väli astmeni ja järguni 7 kuni 70, mille tesseraalsed liikmed kannavad lühiperioodilist signatuuri, mis teeb LEO sobitamise raskeks. Atmosfääripidur on valikuline (staatiline eksponentsiaalne tihedus). Kell on vabalt jooksev (nihe, triiv, triivikiirus ja valge sagedusmüra etteantud ühesekundilise Alani hälbega, pluss perioodiline relativistlik liige) või juhitud (esimese järgu Gauss–Markovi jääk).
fit.rs sobitab Kepleri komplekti Levenbergi–Marquardti meetodil mittesinguljaarsetele elementidele (e·cos ω, e·sin ω, λ0 = M0 + ω): LEO orbiit on peaaegu ringjooneline, mistõttu ω ja M0 üksi on peaaegu eristamatud. See algab oskulatsiooniseisundist ajahetkel toe koos J2 sõlmekiirusega. Nõrgad nullile tsentreeritud eelteadmised piiravad kiirusi ja harmoonilisi, mida lühike kaar ei suuda lahendada; 1 cm vaatluskaaluga toimivad need ainult nendes nullsuundades. Sobitus liu22 kasutab selle asemel artikli jaotise 2,3 algust ja hindajat: see algab kõigi parandusliikmetega nullis, eelteadmisi pole (tavaline vähimruutude meetod) ja artikli 100 iteratsiooni ülempiir säilib. See peatub Kshana enda parameetrite koondumise reegli järgi, kui iga parameetri samm on väiksem kui 1e-3 selle formaalsest standardhälbest; artikkel peatub hoopis siis, kui RMS muutub vähem kui 0,1 mm. RAC polünoomid sobitatakse seejärel piki-/risti-/radiaaljääkidele lineaarsete vähimruutudega ning kellapolünoom tõelisele kellale, millest on lahutatud relativistlik liige, mille kasutaja tagasi lisab.
Leid, mille vaikeväärtused kodeerivad: pärast vähimruutude Kepleri sobitust on jääk konstruktsiooni järgi see, mida 16 parameetrit ei suuda katta, mistõttu see võnkub üle akna (mitu nullkohta igas komponendis), mitte ei triivi. Parandupolünoom eemaldab selle ainult siis, kui selle aste ületab seda, mida Kepleri komplekt juba katab: piki-suunas 7, ristsuunas 5 ja radiaalselt 6 viivad 15-minutilise jäägi sentimeetritest umbes millimeetrini, samal ajal kui madalamad ristsuunalised astmed ei eemalda peaaegu midagi (ristsuunaline jääk on akna keskme suhtes paaritu). Süsteem, mis tuletab oma Kepleri osa mõnel muul viisil, jätab teistsuguse kujuga jäägi ja vajalikud astmed tulenevad sellest. Celeste eelseadistuse enda paranduspolünoomide astmed (madalamad kui need; need asuvad ainult eelseadistuse failis, src/celeste_iod.rs) käivituvad siin Kshana vähimruutude baasil, mistõttu selle ristsuunalised liikmed annavad selles mootoris vähe: väide Kshana sobitaja kohta, mitte ühegi reaalse süsteemi kohta. toe ja toc on täissekundid, nagu binaarvorming neid kannab.
Iga sõnumit kasutatakse perioodi jooksul, mis on tsentreeritud selle sobitusaknasse (esimene kompromissitabel kasutab kogu akent). Signaal-ruumis kaugusvea (SISRE) näitajad mõõdavad sõnumi esitusviga selle tõelise orbiidi suhtes, mille külge see sobitati, ruutkeskmisena (RMS) ja maksimumina üle ulatuse. Orbiidi määramise ja orbiidi ennustamise viga, mille reaalne maa- või pardasegment lisab, ei ole modelleeritud.
Signaal-ruumis kaugusviga#
sisre.rs kasutab Montenbrucki, Steigenbergeri ja Hauschildi globaalkeskmist SISRE-d (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²) )
Kaalud on keskmised kasutajate üle, kes on ühtlaselt jaotatud nähtavale Maa kupli peal, mille määravad cos² η ja ½ sin² η, kus η on vaatejoone nadiirinurk satelliidil, arvutatud orbiidi enda raadiuse ja kõrgusnurga maski jaoks. 0° maski juures taastab arvutus artikli tabeli keskmise Maa orbiidi jaoks (GPS 0,98 ja 1/49, GLONASS 1/45, Galileo 1/61, BeiDou 1/54) ja geostatsionaarse orbiidi jaoks (0,99 ja 1/126): see on VALIDATED kontroll. LEO-l annab sama keskmistamine
| Kõrgus | w_R |
1 / w_AC² |
horisondi nadiirinurk |
|---|---|---|---|
| 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° |
seega tunneb LEO kasutaja, kes näeb satelliiti nadiirist kaugel, piki- ja ristsuunalisi vigu palju rohkem kui keskmise orbiidi kasutaja.
Analüüsid#
analysis = [...] valib mis tahes neljast (vaikimisi kõik).
Sobitusvahemiku kompromiss#
[trade] määrab ulatuse, sobitusvahemikud, uuendusperioodid ja mudelid. scenarios/leo-navmsg-fit-interval-trade.toml (550 km, 97,6°, EGM2008 astmeni 20 ja atmosfääripidur, 30 minutit sõnumeid) annab, kui kasutusperiood on võrdne sobitusvahemikuga:
| Mudel | Sobitusvahemik | SISRE orbiidi RMS | SISRE orbiidi maksimum | SISRE koos kellaga RMS | radiaalne / piki- / ristsuunaline 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 300 s sobitusega, muutes seda, kui sageli uus sõnum üle võtab:
| Mudel | Uuendusperiood | SISRE orbiidi RMS | SISRE orbiidi maksimum |
|---|---|---|---|
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-parameetriline Kepleri komplekt halveneb 0,04 cm-lt 60 s juures 9,35 cm-ni 900 s juures: üks Kepleri komplekt kaks korda pöörde kohta harmoonilistega ei suuda järgida LEO kaare kõrgema sagedusega gravitatsiooniliikmeid ja atmosfääripidurdust kauem kui mõni minut ning selle vähimruutude jääk võnkub üle akna. Piki-/risti-/radiaalpolünoomid (astmed 7, 5, 6) neelavad järele jääva: 1,01 cm 900 s juures, 0,21 cm 600 s juures. Lühimatel vahemikel on Kepleri näitajad alla millimeetri ega ole enam rangelt järjestatud (sobitust piirab siis konditsioneeritus, mitte mudel).
Mudelite võrdlus#
scenarios/leo-navmsg-model-comparison.toml käivitab neli mudelit 1, 5 ja 10 minutiga samal orbiidil, näidates parameetrite arvu ning efemeriidi ja kella bitte Kshana kodeeringus:
| Mudel | Sobitusvahemik | Parameetrid | Efemeriid + kella bitid | SISRE orbiidi RMS | SISRE koos kellaga 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 (nullkell) |
60 s | 22 | 750 | 0,000 cm | 28,784 cm |
ecef-poly (nullkell) |
300 s | 22 | 750 | 0,005 cm | 28,784 cm |
ecef-poly (nullkell) |
600 s | 22 | 750 | 0,561 cm | 28,774 cm |
Nullkella rida hinnatakse kella vastu, mida juhitakse 0,24 m jäägiga (ATOMIC-i näitaja), teisi vabalt jooksva kella vastu, mille külge need sobitati.
Liu jt 2025, SISRE võrreldes kõrgusega (MODELLED). Sama stsenaarium sobitab Kshana 22-parameetrilise mudeli 20-minutilistel kaartel artikli viiel kõrgusel, iga satelliidi kaldenurga juures:
| Satelliit | Kõrgus | Kaldenurk | Liu jt 2025 | Kshana (ainult orbiidi RMS) | suhe |
|---|---|---|---|---|---|
| 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 |
See ei ole valideerimine. Artikkel sobitas nimetatud satelliitide reaalseid täppisteadusorbiite (nende täieliku gravitatsiooni-, atmosfääripidurduse- ja mittegravitatsiooniajalooga); Kshana sobitab oma integreeritud orbiidi, hindab kuut lisaparameetrit ülalkirjeldatud viisil ja kasutab oma SISRE kaalusid. Võrdlus näitab trendi ja suurusjärku. Võrdlus samadel reaalsetel orbiitidel, mida artikkel sobitas, on tests/leo_navmsg_fit_real_orbit_oracle.rs (alates 0,30 langeb 22-parameetriline sobitus seal kokku eelregistreeritud teguri 1,5 piires, artikli päevadel ja kaheksal suletud päeval).
Läbilennu keskel uuendamine#
[midpass] paigutab kasutaja (vaikimisi 45° N, 10° E), leiab kõrgeima läbilennu maski kohal search_s piires ning ajastab sõnumid iga update_period_s järel. Igal läbilennusiseses ümberlülitusel annab see aru asukohahüppest, kellahüppest, kasutaja pseudovahemaa hüppest (uus sõnum miinus vana), suurimast hüppest, mida mis tahes nähtav kasutaja võiks näha (suletud kuju üle nadiirikoonuse), kaugusveast enne ja pärast ning PASS või FAIL vastu threshold_m. scenarios/leo-navmsg-midpass-update.toml (300 s sobitused uuendatud iga 150 s järel):
Päeva kõrgeim läbilend ulatub 43,7° ja kestab 455 s. Selle ümberlülitused:
| Ümberlülitus | Kõrgusnurk | Asukohahüpe | Kellahüpe | Kasutaja kaugushüpe | Halvima geomeetria hüpe |
|---|---|---|---|---|---|
| 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 |
Suurim kasutaja kaugushüpe 0,35 mm läve 5 cm vastu: PASS.
Kodeerimine ja dekodeerimine#
scenarios/leo-navmsg-encode-decode.toml kodeerib esimese kolmest sõnumist, dekodeerib selle, kontrollib CRC-d ja lükkab tagasi rikutud koopia, väljastab kvantimiseelarve ning kirjutab ja loeb tagasi RINEX-laadse bloki ja CSV tabeli:
- kaader: 171 baiti (1310 kasulikku koormusbitti, millest 1045 on efemeriid ja kell), 24-bitine tsükliline liiasuskontroll (CRC-24Q)
0x19105F; - ühegi üksiku välja suurim poolsammu mõju:
af0, 0,545 mm; - kogu sõnum pärast kvantimist: asukoht 1,126 mm ja kell 0,185 mm piires täpsest sõnumist; SISRE 0,113 cm täpne, 0,129 cm dekodeeritud;
- kaader ühe ümberläinud bitiga lükatakse tagasi: tõene;
- RINEX-laadne edasi-tagasi teisendus 5.0e-06 m piires, CSV edasi-tagasi teisendus 0.0e+00 m piires.
Platvormist sõltumatus#
Kaader on edastatud täisarvud, seega peavad need olema samad täisarvud igal pool ja igal viisil, kuidas stsenaarium töötab: natiivne binaar igal operatsioonisüsteemil, silumis- või väljalaskeversioon (debug või release) ning brauseris töötav WebAssembly (WASM) versioon. Teel oli kolm takistust. Hosti matemaatikateegi siinus, koosinus, arkustangens ja eksponent ei pea olema korrektselt ümardatud ning erinevad hostide vahel viimases kohas. Optimeeritud versioon macOS-is võtab ühe argumendi siinuse ja koosinuse süsteemi ühisest rutiinist, mis ei tagasta alati üksiku siinuse väärtust, mistõttu erinesid ka silumis- ja väljalaskeversioon. Ja tavaline normaaljaotuse valim kutsub oma harvaesinevates harudes hosti eksponenti ja logaritmi. Sobitus muudab nii väikese erinevuse erinevateks kvantitud väljadeks. Kogu liik (tõeline orbiit ja kell, sobitus, kasutaja algoritm, signaal-ruumis kaugusviga (SISRE), kodek) arvutab seetõttu iga sellise funktsiooni puhta Rusti crate'iga libm kaudu src/portable_math.rs, täisarvulised astmed otseste korrutistena ning normaaljaotuse juhuarvud polaarmeetodil generaatori toorväljundist. leo_navmsg::tests::the_encoded_frame_is_the_same_bytes_on_every_platform kinnitab allpool oleva kodeerimise ja dekodeerimise stsenaariumi 171-baidise kaadri ja ühe kontrollväärtuse efemeriidimudeli kohta; silumisversioon, väljalaskeversioon ja WASM versioon annavad kõigi viie komplekti kuuluva leo-navmsg stsenaariumi kohta baidi tasemel identsed tulemusdokumendid.
Binaarvorming#
See on Kshana enda dokumenteeritud kodeering. See kannab komponente, mida LEO navigatsioonisõnumite avaldatud kirjeldused nimetavad, modelleeritud Galileo ICD väljakomplekti järgi. See ei ole Celeste'i ega ühegi muu süsteemi bitipaigutus: ükski pole avalik.
Kaader: preambul 0xA7 (8 bitti), versioon 1 (4), mudel (4: 1 kepler16, 2 kepler-rac, 3 liu22, 4 ecef-poly), kasuliku koormuse pikkus baitides (12), baidini nullidega täidetud kasulik koormus, CRC-24Q (24-bitine tsükliline liiasuskontroll, 24 bitti) üle kõigi eelnevate baitide. CRC-24Q on Radio Technical Commission for Maritime Services standardi RTCM 10403 ja Galileo ICD kontroll (polünoom 0x1864CFB, algväärtus 0); kood reprodutseerib kataloogi kontrollväärtuse 0xCDE703 jaoks 123456789 ning RTCM 10403 sõnumitüübi 1005 näitekaadri kontrollbaidid (VALIDATED).
Galileo ICD sammud valiti keskmise Maa orbiidi jaoks ja need on sentimeetritäpse LEO sõnumi jaoks liiga jämedad: Crs sammudega 2⁻⁵ m (3,1 cm), Cuc 2⁻²⁹ rad (1,3 cm LEO raadiusel), nurgad 2⁻³¹ poolringi (1,0 cm) ja af0 2⁻³⁴ s (1,7 cm). Kshana säilitab ICD ühikud ja poolringi tava, täpsustab samme nii, et iga välja poolsammuviga jääb 15-minutilise akna jooksul alla 1 mm asukoha või kauguse osas, ning laiendab välju, et säilitada LEO sobitusele vajalikud vahemikud:
| Plokk | Väli | Bitid | Samm | Ühik |
|---|---|---|---|---|
| lisaandmed ja sünkroniseerimine | SVID |
8 | 1 | - |
| lisaandmed ja sünkroniseerimine | IOD |
10 | 1 | - |
| lisaandmed ja sünkroniseerimine | Band |
4 | 1 | - |
| lisaandmed ja sünkroniseerimine | Health |
2 | 1 | - |
| lisaandmed ja sünkroniseerimine | WeekNumber |
13 | 1 | nädal |
| lisaandmed ja sünkroniseerimine | ToW |
20 | 1 | s |
| lisaandmed ja sünkroniseerimine | Flags |
4 | 1 | - |
| kell (lipubitt 0) | toc |
20 | 1 | s |
| kell (lipubitt 0) | af0 |
34 | 2^-38 | s |
| kell (lipubitt 0) | af1 |
28 | 2^-50 | s/s |
| kell (lipubitt 0) | af2 |
20 | 2^-62 | s/s^2 |
| Kepleri (mudelid 1-3) | toe |
20 | 1 | s |
| Kepleri (mudelid 1-3) | M0 |
36 | 2^-35 | poolring |
| Kepleri (mudelid 1-3) | e |
32 | 2^-33 | - |
| Kepleri (mudelid 1-3) | sqrtA |
36 | 2^-23 | m^0,5 |
| Kepleri (mudelid 1-3) | Omega0 |
36 | 2^-35 | poolring |
| Kepleri (mudelid 1-3) | i0 |
36 | 2^-35 | poolring |
| Kepleri (mudelid 1-3) | omega |
36 | 2^-35 | poolring |
| Kepleri (mudelid 1-3) | deltaN |
29 | 2^-43 | semicircle/s |
| Kepleri (mudelid 1-3) | OmegaDot |
29 | 2^-43 | semicircle/s |
| Kepleri (mudelid 1-3) | iDot |
22 | 2^-43 | semicircle/s |
| Kepleri (mudelid 1-3) | Cuc |
26 | 2^-34 | rad |
| Kepleri (mudelid 1-3) | Cus |
26 | 2^-34 | rad |
| Kepleri (mudelid 1-3) | Crc |
26 | 2^-10 | m |
| Kepleri (mudelid 1-3) | Crs |
26 | 2^-10 | m |
| Kepleri (mudelid 1-3) | Cic |
26 | 2^-34 | rad |
| Kepleri (mudelid 1-3) | Cis |
26 | 2^-34 | rad |
| piki-/risti-/radiaalparandused (mudel 2) | degA |
3 | 1 | - |
| piki-/risti-/radiaalparandused (mudel 2) | degC |
3 | 1 | - |
| piki-/risti-/radiaalparandused (mudel 2) | degR |
3 | 1 | - |
| piki-/risti-/radiaalparandused (mudel 2) | racTauExp |
4 | 1 | log2(s) |
| piki-/risti-/radiaalparandused (mudel 2) | a_k, c_k, r_k |
22 | 2^-14 | m |
| Liu jt 2025 lisad (mudel 3) | aDot |
26 | 2^-20 | m/s |
| Liu jt 2025 lisad (mudel 3) | nDot |
30 | 2^-58 | poolring/s^2 |
| Liu jt 2025 lisad (mudel 3) | Crs3 |
26 | 2^-10 | m |
| Liu jt 2025 lisad (mudel 3) | Crc3 |
26 | 2^-10 | m |
| Liu jt 2025 lisad (mudel 3) | Crs1 |
26 | 2^-10 | m |
| Liu jt 2025 lisad (mudel 3) | Crc1 |
26 | 2^-10 | m |
| ECEF polünoom (mudel 4) | tref |
20 | 1 | s |
| ECEF polünoom (mudel 4) | degP |
4 | 1 | - |
| ECEF polünoom (mudel 4) | x0, y0, z0 |
38 | 2^-11 | m |
| ECEF polünoom (mudel 4) | x_k, y_k, z_k (k >= 1) |
34 | 2^-12 | m |
| Klobuchar (lipubitt 1) | alpha0 |
8 | 2^-30 | s |
| Klobuchar (lipubitt 1) | alpha1 |
8 | 2^-27 | s/semicircle |
| Klobuchar (lipubitt 1) | alpha2 |
8 | 2^-24 | s/poolring^2 |
| Klobuchar (lipubitt 1) | alpha3 |
8 | 2^-24 | s/poolring^3 |
| Klobuchar (lipubitt 1) | beta0 |
8 | 2^11 | s |
| Klobuchar (lipubitt 1) | beta1 |
8 | 2^14 | s/semicircle |
| Klobuchar (lipubitt 1) | beta2 |
8 | 2^16 | s/poolring^2 |
| Klobuchar (lipubitt 1) | beta3 |
8 | 2^16 | s/poolring^3 |
| NeQuick-G (lipubitt 2) | ai0 |
11 | 2^-2 | sfu |
| NeQuick-G (lipubitt 2) | ai1 |
11 | 2^-8 | sfu/deg |
| NeQuick-G (lipubitt 2) | ai2 |
14 | 2^-15 | sfu/deg^2 |
| NeQuick-G (lipubitt 2) | SF1-5 |
5 | 1 | - |
| UTC (lipubitt 3) | A0 |
32 | 2^-30 | s |
| UTC (lipubitt 3) | A1 |
24 | 2^-50 | s/s |
| UTC (lipubitt 3) | dtLS |
8 | 1 | s |
| UTC (lipubitt 3) | t0t |
8 | 3600 | s |
| UTC (lipubitt 3) | WNot |
8 | 1 | nädal |
| UTC (lipubitt 3) | WNLSF |
8 | 1 | nädal |
| UTC (lipubitt 3) | DN |
3 | 1 | päev |
| UTC (lipubitt 3) | dtLSF |
8 | 1 | s |
Väärtus väljaspool oma välja vahemikku lükatakse tagasi, mitte ei keerata ümber. Vahemikke kontrolliti, kodeerides sobitusi 300 kuni 2000 km juures, kaldenurkade 0° kuni 140° ja kuni 20 minuti pikkuste sobitusvahemikega: deltaN ja OmegaDot on laiad, sest peaaegu ekvatoriaalsel orbiidil on sõlm halvasti määratletud ja sobitus jagab nende vahel laiuskraadi argumendi J2 triivi, ning aDot ja nDot seetõttu, et 22-parameetriline sobitus 20 minuti jooksul neelab osa pooltelje lühiperioodilisest võnkumisest. Alates 0,30 on 22-parameetriline sobitus artikli lihtne vähimruutude meetod ilma eelteadmisteta ning ekvatoriaalne 800 km sobitus vajab siis nDot väärtust umbes 6.3e-10 poolringi/s^2, seega läks selle mõõtkava 2^-60-lt 2^-58-le. Liigi kepler-rac 7. astme piki-suunalised parandused mahuvad 22-bitisesse koefitsiendivahemikku kuni 15 minuti pikkuse sobitusega; pikem sobitus võib seda ületada ja lükatakse siis tagasi. quantisation_budget annab iga efemeriidi- ja kellaivälja kohta aru suurimast asukoha- ja kaugusmuutusest, mille poolsammu muutus põhjustab kasutusperioodi jooksul, ning kogu sõnumi muutusest pärast kvantimist.
Tekstieksport#
RINEX 4,02 ei määratle ühtki LEO navigatsioonikirjet (selle süsteemitähed on G, R, E, J, C, I ja S; International Global Navigation Satellite System (GNSS) Service (IGS) RINEX 4,02). Blokk, mille text.rs kirjutab, laenab RINEX 4 kuju — > EPH kirjepäis, satelliidi- ja epohhirida kolme kelliliikmega, ringhäälestatud orbiidi read nelja D19.12 väljaga — ja on dokumenteeritud Kshana laiendus: süsteemitäht L, kirjetüübid KP16, KRAC, LU22, APOL ja kolm päisekommentaari, mis seda ütlevad. Varasem töö LEO orbiitide kohta RINEX-4-laadsetes navigatsioonikirjetes: 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 tabel kannab kepler16 ja kepler-rac sõnumeid, üks rea kohta. Vaikimisi veerud kasutavad Galileo ICD nimesid (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 valib selle asemel eelseadistuse kirjapildi. Mõlemad vormingud loetakse tagasi.
Ionosfäär ja UTC#
- Klobuchar: mootori L1 mudel (
gnss_sim::klobuchar_delay_m, kontrollitud RTKLIB-i vastu), skaleeritud kandelainele esimese järgu seaduse(f_L1 / f)²järgi. - NeQuick-G: koefitsiendid liiguvad sõnumis ja
effective_ionisation_leveltagastabAz = ai0 + ai1·μ + ai2·μ²modifitseeritud kaldelaiuskraadiμjaoks, algoritmi reeglitega (kõik-null koefitsiendid annavad 63,7 päikesevoo ühikut, sfu; tulemus piiratakse vahemikku [0, 400] sfu). NeQuick elektrontiheduse mudelit ja selle kaldintegreerimist, mis muudavadAzviivituseks, ei ole teostatud. - Mõnesaja kilomeetri kõrgusel olev satelliit lendab ionosfääri sees. Kumbki ringhäälestatud mudel ei arvesta satelliidi kohal olevat elektronsisaldust ning selle jaoks ei rakendata parandust.
- UTC:
system_to_utcrakendab Galileo ICD §5.1.7 kolme juhtu (enne lisasekundi sündmust, kuue tunni jooksul sellest ja pärast seda); lisatud sekund loetakse 86400.
Eelseadistused#
Eelseadistused on andmed, üks fail igaühe kohta kataloogis src/leo_navmsg/presets/, koos nende allikatega. Mootor ja iga komplekti kuuluv stsenaarium peale Celeste'i oma töötavad ilma nendeta.
| Võti | Allikas | Orbiit | Kandelaine | Sõnumimudel |
|---|---|---|---|---|
xona-pulsar |
PUBLIC, arXiv 2509,19551 | 1080 km, 53° | X1 1593,3225 MHz | avaldamata |
xona-pulsar-0 |
PUBLIC, arXiv 2509,19551 | 520 km, 97° | X1 | avaldamata |
iridium |
PUBLIC, RNTF-i aruanne, konstellatsiooni kirjeldus | 781 km, 86,4° | 1621 MHz (1616–1626 MHz riba) | ringhäälestatud sõnumit pole |
starlink |
PUBLIC, NAVIGATION 72(1), konstellatsiooni kirjeldus | 550 km, 53° | Ku-riba, riba keskmine väärtus (esinduslik) | puudub (oportunistlikud signaalid) |
centispace |
PUBLIC, Sensors 2023, Satellite Navigation 2026 | 700 km, 55° | B1 lähedal (allikas varjatud; asendajana L1) | avaldamata |
cband-generic |
REPRESENTATIVE | 600 km, 97,8° | 5020 MHz (RNSS C-riba keskpunkt) | avaldamata |
atomic |
PUBLIC, InsideGNSS | 500 km (esinduslik) | L1 (esinduslik) | ecef-poly, aste 6, 60 s, värskendatud iga 30 s järel, nullkell, 0,24 m juhtimisjääk |
celeste-iod |
WORKSHOP ja PUBLIC | 510 km, 97,4° | 1191,795 MHz | kepler-rac, astmed ja kirjete vahe eelseadistuse failis |
RNSS on raadionavigatsiooni-satelliitteenus; RNTF on Resilient Navigation and Timing Foundation.
Celeste IOD. Euroopa Kosmoseagentuuri (ESA) Celeste'i orbiidil demonstreerimise (IOD) eelseadistus on ainus, mis kasutab ESA Navigation Innovation and Support Programme (NAVISP) LEO-PNT töötoas 2026 esitatud materjali: sõnumi struktuuri (Galileo Kepleri komplekt pluss piki-/risti-/radiaalparandupolünoomid, kellapolünoom, SVID, tervis, IOD, ionosfääri- ja UTC-parameetrid), kirjete vahet ja CSV veergude nimesid. Orbiit (510 km, peaaegu polaarne päikesesünkroonne) ja kandelaine pärinevad failis viidatud avalikest allikatest. Celeste'i bitipaigutus ei ole avalik ja seda ei reprodutseerita; hilisemad Celeste'i faasid ja Euroopa Liidu (EL) LEO-PNT süsteem võivad erineda. Iga töötoast pärinev väärtus asub faili src/celeste_iod.rs moodulis navmsg, mida kasutab scenarios/leo-navmsg-celeste-iod.toml. Kuidas eelseadistust tagasi hoitakse: iga mootori töötoast pärinev arv asub ühes failis, src/celeste_iod.rs, mille build.rs kompileerib sisse ainult siis, kui see olemas on, ja ainult hoidlas olevates stsenaariumides scenarios/*celeste-iod*.toml. Selle faili ja nende stsenaariumide kustutamine hoiab eelseadistuse tagasi ilma lähtekoodi muutmata; iga muu test, sõltumatu etalon ja stsenaarium töötab ilma selleta ning README stsenaariumifailide arv loeb tagasi hoitud failid ikka sisse.
Kontrollimine#
| Rida | Silt | Sõltumatu etalon |
|---|---|---|
| SISRE kaalud | VALIDATED | Montenbrucki jt 2018 tabel (GPS, GLONASS, Galileo, BeiDou, geostatsionaarne) |
| Galileo ICD kasutaja algoritm | VALIDATED | RTKLIB eph2pos nelja reaalse Galileo ringhäälestatud efemeriidi puhul, 1 mm telje kohta (tests/leo_navmsg_reference.rs) |
| CRC-24Q | VALIDATED | kataloogi kontrollväärtus 0xCDE703; RTCM 10403 1005 näitekaader |
| Sobitaja ja SISRE kompromiss | MODELLED | kahekeha tõeline seisund taastatud 1 mm täpsusega; parandatud J2–J6 sobitus 1 mm täpsusega; monotoonne kasv vahemikuga |
| Läbilennu keskel uuenduse pidevus | MODELLED | hüppe samasus; suletud kujuga koonuse ülempiir valimi vastu |
| Binaarvorming ja eelarve | MODELLED | edasi-tagasi teisendused; iga välja poolsamm alla 1 mm |
| RINEX-laadne ja CSV | MODELLED | edasi-tagasi teisendused |
| Liu jt 2025 22-parameetriline mudel ja sobitus | VALIDATED | TU Graz ITSG täppisorbiidid nelja satelliidi kohta artikli tabelite 4, 5, 6 ja 8 vastu: piki-, risti-, radiaal- ja SISRE suhted 0,755 kuni 1,138 artikli päevadel ja 0,683 kuni 1,186 kaheksal suletud päeval, 1.5x piires (tests/leo_navmsg_fit_real_orbit_oracle.rs) |
| ATOMIC nullkella polünoom ja viie kõrguse tabel | MODELLED | ATOMIC faktid InsideGNSS-ist; avaldatud Liu tabel trükitud Kshana integreeritud orbiidi sobituse kõrvale, kinnitamata |
| Ionosfäär ja UTC | MODELLED | ICD suletud kujuga valemid; RTKLIB-iga kontrollitud Klobuchari mudel |
Piirangud#
- SISRE on ainult esitusviga: orbiidi määramise või ennustamise viga puudub.
- Tõeline orbiit on Kshana integreerimine (kolmandat keha, päikesekiirguse survet ega looded arvestamata), mitte reaalse satelliidi täppisorbiit.
- Binaarvorming ja RINEX-laadne blokk on Kshana enda omad.
- NeQuick-G kantakse, kuid seda ei integreerita viivituseks; ionosfääri sees oleva satelliidi jaoks parandust pole.
- Liu jt võrdlus erineb orbiitide, parameetrite lugemise ja kaalude poolest.