Reaalsete konstellatsiooni TLE-de kasutamine
Kaasasolev scenarios/orbit-sgp4-gps.toml kannab juba reaalseid TLE-sid (kaherealised elemendikomplektid): Celestraki gps-ops hetktõmmis töötavast GPS-i (globaalne positsioneerimissüsteem) konstellatsioonist, mis on kataloogitud 2021-07-28, 30 satelliiti, koos strict_checksum = true. Iga satelliiti propageeritakse SGP4/SDP4-ga (Simplified General Perturbations 4 / Simplified Deep-space Perturbations 4), mida on valideeritud ametlike AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 vektorite vastu. Sama hetktõmmis on varustatud kujul tests/fixtures/celestrak/gps-ops_2021-07-28.txt ja scripts/fetch_tles.sh toob värske. Lugege jaotist 3 enne, kui sellest geomeetria arvu tsiteerite: see stsenaarium propageerib iga satelliiti tema enda epohhist.
Sünteetilise, isemajandava näite jaoks annab scenarios/orbit-real-tle.toml kuus GPS-i taolist satelliiti paljaste rea-2 kirjetena, propageerituna analüütiliste Kepleri elementidena, ning iga orbit stsenaarium ilma plokita tle ehitab Walkeri konstellatsiooni.
Praeguse GPS-i konstellatsiooni (või mis tahes muu) uurimiseks lisage värske hetktõmmis.
1. Laadige alla praegune hetktõmmis#
Celestrak levitab NORADi (North American Aerospace Defense Command) kataloogi elemendikomplekte, mida värskendatakse vähemalt iga päev. GPS-i jaoks:
curl -o gps-ops.txt "https://celestrak.org/NORAD/elements/gp.php?GROUP=gps-ops&FORMAT=tle"
Muud kasulikud rühmad: galileo, glo-ops (GLONASS, Venemaa globaalne satelliitnavigatsioonisüsteem), beidou, stations (ISS, rahvusvaheline kosmosejaam, ja muud pilootidega jaamad).
Fail on kolmerealiste kirjete jada (nimi, rida 1, rida 2). Kshana parser ignoreerib nimeridu, seega võite faili kleepida nii, nagu see on.
2. Lisage see stsenaariumi#
Mis tahes orbiidistsenaariumis määrake konstellatsiooni tle plokk hetktõmmise sisuks:
[constellation]
# Paste the Celestrak gps-ops block here (name/line1/line2 triples). Two real records
# from tests/fixtures/celestrak/gps-ops_2026-06-07.txt are shown; a real block has ~30.
strict_checksum = true # real Celestrak TLEs carry valid checksums; enforce them
tle = """
GPS BIIR-5 (PRN 22)
1 26407U 00040A 26158.26673196 .00000043 00000+0 00000+0 0 9990
2 26407 54.8526 215.5566 0121168 302.4173 18.5084 2.00557626189748
GPS BIIR-8 (PRN 16)
1 27663U 03005A 26157.61055816 .00000039 00000+0 00000+0 0 9995
2 27663 54.8837 215.3893 0147927 53.0597 289.9583 2.00561160171094
"""
(PRN on pseudojuhusliku müra koodi number, mida GPS-satelliit edastab.)
Rea 1 + rea 2 paari propageeritakse SGP4/SDP4-ga (takistuse ja sügavkosmose liikmed); paljast rida 2 käsitletakse analüütiliste Kepleri keskmiste elementidena. Neid võib segada.
strict_checksum = true lükkab tagasi iga rea, mille veerus 69 olev modulo-10 kontrollsumma on vale — hea terviklikkuse kontroll värskelt allalaaditud faili jaoks. Selle vaikeväärtus on false, sest sünteetilised õppestsenaariumid kasutavad kohatäitjana kontrollsummasid.
3. Märkused epohhide kohta — lugege seda enne, kui tsiteerite geomeetria arvu#
SGP4 propageerib iga satelliiti tema enda TLE epohhist ja parse_propagators (kohas src/tle.rs) tagastab ainult propageerijaid, seega rakendatakse stsenaariumi aega t kujul tsince = t igale satelliidile eraldi. See on õige konventsioon ainult siis, kui kõigil failis olevatel elemendikomplektidel on ühine epohh.
Celestraki rühmafail ei anna seda. Fail laaditakse alla ühel hetkel, kuid iga satelliidi elemendikomplekti värskendatakse omal sagedusel, seega on selles olevad epohhid hajutatud päevade peale. Mõõdetud siin hoidlas varustatud komplektidel (rida 1, veerud 19–32):
| fikstuur | komplekte | epohhide hajuvus |
|---|---|---|
tests/fixtures/celestrak/gps-ops_2026-06-07.txt |
32 | 70,6 h |
tests/fixtures/celestrak/gps-ops_2021-07-28.txt |
30 | 76,4 h |
tests/fixtures/celestrak/galileo_2026-06-07.txt |
33 | 335,7 h |
70,6 h on 5,9 GPS-i tiiru. Sellisena propageerituna on tasandisisene faasimine segi: satelliidid on õigetel kõrgustel ja kaldenurkadel, kuid mitte seal, kus nad olid ühelgi päeval, seega kirjeldavad nähtav hulk, DOP (täpsuse halvenemise tegur) ja neist arvutatud kättesaadavus konstellatsiooni, mida kunagi ei eksisteerinud. Parser ei mõõda seda hajuvust teie eest ning liigid orbit ja integrity ei joonda epohhe: stsenaariumi TLE-plokki propageeritakse alati satelliidi-epohhi kaupa.
Tehke selle asemel nii. Hoidke epohh propageerija kõrval, valige üks võrdlushetk ja nihutage iga satelliidi tsince selle suhtes. Tle::epoch_days_1950 on avalik, seega on parsimistsükkel lühike; tests/igs_real_data.rs (real_gps_tle_snapshot) on selle puu läbitöötatud näide:
use kshana::orbit::Propagator;
use kshana::sgp4::wgs72;
use kshana::tle::parse_tle;
/// TEME position (m) of one satellite at `t` seconds after the common reference
/// instant `t_ref_jd` (a Julian date), not after its own TLE epoch.
fn aligned_teme_m(line1: &str, line2: &str, t_ref_jd: f64, t: f64) -> Result<[f64; 3], String> {
let tle = parse_tle(line1, line2)?;
let jd_epoch = 2_433_281.5 + tle.epoch_days_1950;
let prop = Propagator::Sgp4(Box::new(tle.to_sgp4(wgs72(), false)));
let tsince_s = (t_ref_jd - jd_epoch) * 86_400.0 + t;
Ok(prop.position_eci(tsince_s))
}
TEME on tõelise ekvaatori, keskmise pööripäeva koordinaatsüsteem, milles SGP4 töötab; tests/igs_real_data.rs pöörab selle Maaga seotud koordinaatideks kasutades teme_to_ecef.
Kui te ei joonda, öelge seda arvu esitades: see on väide orbiidikihtide kohta, mitte reaalse taeva kohta.
Kui palju see loeb, on mõõdetud failis tests/araim_dual_real_data.rs, mis rakendab samu nihkeid (võrdlushetk: kombineeritud GPS + Galileo fikstuuride hiliseim epohh, 2026-06-07T07:21:04 UTC (koordineeritud maailmaaeg)) 24 h kahe konstellatsiooni ARAIM-i (täiustatud vastuvõtja autonoomne terviklikkuse monitooring) kättesaadavuse jooksul. VAL-i (vertikaalne hoiatuspiir) 12 m korral annab joondatud taevas ainult GPS-i 0,993, ühendatud GPS+Galileo 1,000 ja konstellatsioonirikke suhtes vastupidava kahe konstellatsiooni 0,990; joondamata satelliidi-epohhi kaupa konventsioon annab samade sisendite jaoks 0,208, 0,671 ja 0,031 — erinev järeldus, mitte väike viga.
Vt ka#
README.md— orbiidistsenaariumid.SCENARIOS.md— liigiorbitväljad; liigidintegrity,gnss-sim,jammingjaconstellation-designvõtavad sama tabeliconstellationningephemerisvõtab ühetle.INTEGRITY.md— ARAIM-i mootor, mida reaaltaeva test juhib.src/tle.rs— parser (parse_propagators,ParseOpts { strict_checksum }).