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

SkenaariotMuokkaa GitHubissaLähde: docs/REAL_TLE_GUIDE.md

Todellisten satelliittitähdistön TLE-tietojen käyttö

Mukana toimitettu scenarios/orbit-sgp4-gps.toml sisältää jo todellisia TLE-tietoja (two-line element set): Celestrakin tilannekuvan gps-ops toiminnassa olevasta GPS-tähdistöstä (Global Positioning System), luetteloituna 2021-07-28, 30 satelliittia, asetuksella strict_checksum = true. Jokainen satelliitti propagoidaan SGP4/SDP4:llä (Simplified General Perturbations 4 / Simplified Deep-space Perturbations 4), joka on validoitu virallisia AIAA 2006-6753 -vektoreita (American Institute of Aeronautics and Astronautics) vasten. Sama tilannekuva on vendoroitu tiedostoksi tests/fixtures/celestrak/gps-ops_2021-07-28.txt, ja scripts/fetch_tles.sh noutaa tuoreen. Lue osio 3 ennen kuin siteeraat siitä geometrialukua: tuo skenaario propagoi jokaisen satelliitin sen omasta epookista.

Synteettistä, itsenäistä esimerkkiä varten scenarios/orbit-real-tle.toml antaa kuusi GPS:n kaltaista satelliittia pelkkinä rivin 2 tietueina, propagoituna analyyttisinä Kepler-alkioina, ja jokainen skenaario, jonka tyyppi on orbit, ilman lohkoa tle rakentaa Walker-tähdistön.

Tutkiaksesi nykyistä GPS-tähdistöä (tai mitä tahansa muuta), lisää tuore tilannekuva.

1. Lataa tuore tilannekuva#

Celestrak jakelee NORAD-luettelon (North American Aerospace Defense Command) elementtijoukkoja, päivitettynä vähintään päivittäin. GPS:lle:

curl -o gps-ops.txt "https://celestrak.org/NORAD/elements/gp.php?GROUP=gps-ops&FORMAT=tle"

Muita hyödyllisiä ryhmiä: galileo, glo-ops (GLONASS, Venäjän maailmanlaajuinen satelliittinavigointijärjestelmä), beidou, stations (ISS eli kansainvälinen avaruusasema ja muut miehitetyt asemat).

Tiedosto on kolmen rivin tietueiden jono (nimi, rivi 1, rivi 2). Kshanan jäsennin ohittaa nimirivit, joten voit liittää tiedoston sellaisenaan.

2. Lisää se skenaarioon#

Aseta missä tahansa rata-skenaariossa tähdistön lohko tle tilannekuvan sisällöksi:

[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 pseudosatunnaiskoodin numero, jonka GPS-satelliitti lähettää.)

Rivin 1 + rivin 2 pari propagoidaan SGP4/SDP4:llä (vastus- ja syväavaruustermit); pelkkä rivi 2 käsitellään analyyttisinä Keplerin keskialkioina. Näitä voi sekoittaa.

Asetus strict_checksum = true hylkää jokaisen rivin, jonka sarakkeen 69 modulo-10-tarkistussumma on väärä — hyvä eheystarkistus juuri ladatulle tiedostolle. Oletus on false, koska synteettiset opetusskenaariot käyttävät paikkamerkkitarkistussummia.

3. Huomioita epookeista — lue tämä ennen kuin siteeraat geometrialukua#

SGP4 propagoi jokaisen satelliitin sen oman TLE-epookin mukaan, ja parse_propagators (tiedostossa src/tle.rs) palauttaa vain propagaattorit, joten skenaarioaika t sovelletaan jokaiseen satelliittiin erikseen muodossa tsince = t. Se on oikea käytäntö vain, jos kaikilla tiedoston elementtijoukoilla on yhteinen epookki.

Celestrakin ryhmätiedosto ei anna sitä. Tiedosto ladataan yhtenä hetkenä, mutta kunkin satelliitin elementtijoukko päivitetään omalla tahdillaan, joten tiedoston epookit ovat hajaantuneet usean päivän ajalle. Mitattuna tähän repositorioon vendoroiduista joukoista (rivi 1, sarakkeet 19–32):

testiaineisto joukot epookin hajonta
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 vastaa 5,9 GPS-kierrosta. Sellaisenaan propagoituna tasonsisäinen vaiheistus sekoittuu: satelliitit ovat oikeilla korkeuksilla ja inklinaatioilla, mutta eivät siellä, missä ne olivat minään yksittäisenä päivänä, joten näkyvä joukko, DOP (tarkkuuden heikkenemiskerroin) ja niistä laskettu saatavuus kuvaavat tähdistöä, jota ei ole koskaan ollut. Mikään jäsentimessä ei mittaa tätä hajontaa puolestasi, ja tyypit orbit ja integrity eivät tasaa epookkeja: skenaarion TLE-lohko propagoidaan aina satelliittikohtaisen epookin mukaan.

Tee sen sijaan näin. Pidä epookki propagaattorin vierellä, valitse yksi viitehetki ja siirrä kunkin satelliitin tsince siihen. Tle::epoch_days_1950 on julkinen, joten jäsennyssilmukka on lyhyt; tests/igs_real_data.rs (real_gps_tle_snapshot) on tämän puun läpikäyty esimerkki:

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 todellisen päiväntasaajan ja keskimääräisen kevätpisteen koordinaatisto, jossa SGP4 toimii; tests/igs_real_data.rs kiertää sen Maahan kiinnitettyihin koordinaatteihin funktiolla teme_to_ecef.

Jos et tasaa, kerro se lukua raportoidessasi: se on lausuma kiertoradan kuorista, ei todellisesta taivaasta.

Tämän merkitys on mitattu tiedostossa tests/araim_dual_real_data.rs, joka soveltaa samoja siirtymiä (viitehetki: yhdistettyjen GPS- + Galileo-testiaineistojen uusin epookki, 2026-06-07T07:21:04 UTC (koordinoitu yleisaika)) kaksitähdistö-ARAIM-saatavuusajon (kehittynyt vastaanottimen autonominen eheyden valvonta) läpi, jonka kesto on 24 h. Kun VAL (pystysuuntainen hälytysraja) on 12 m, tasattu taivas antaa pelkälle GPS:lle 0,993, yhdistetylle GPS+Galileolle 1,000 ja tähdistövikoja kestävälle kaksoisratkaisulle 0,990; tasaamaton satelliittikohtaisen epookin käytäntö antaa samoilla syötteillä 0,208, 0,671 ja 0,031 — eri johtopäätös, ei pieni virhe.

Katso myös#

  • README.md — rata-skenaariot.
  • SCENARIOS.md — tyypin orbit kentät; tyypit integrity, gnss-sim, jamming ja constellation-design käyttävät samaa taulua constellation, ja ephemeris ottaa yhden kohteen tle.
  • INTEGRITY.md — ARAIM-moottori, jota todellisen taivaan testi ajaa.
  • src/tle.rs — jäsennin (parse_propagators, ParseOpts { strict_checksum }).