Strojový překlad, nekontrolovaný rodilým mluvčím. Referenční je anglická verze.

ScénářeUpravit na GitHubuZdroj: docs/REAL_TLE_GUIDE.md

Použití skutečných TLE konstelací

Přibalený scenarios/orbit-sgp4-gps.toml již nese skutečné TLE (dvouřádkové sady elementů): snímek Celestraku gps-ops provozní konstelace GPS (Global Positioning System) katalogizované 2021-07-28, 30 družic, s strict_checksum = true. Každá družice je propagována pomocí SGP4/SDP4 (Simplified General Perturbations 4 / Simplified Deep-space Perturbations 4), která je ověřena proti oficiálním vektorům AIAA (American Institute of Aeronautics and Astronautics) 2006-6753. Týž snímek je vendorován jako tests/fixtures/celestrak/gps-ops_2021-07-28.txt a scripts/fetch_tles.sh stahuje čerstvý. Než z něj budete citovat číslo geometrie, přečtěte si oddíl 3: tento scénář propaguje každou družici od její vlastní epochy.

Pro syntetický, samostatný příklad dává scenarios/orbit-real-tle.toml šest družic podobných GPS jako holé záznamy řádku 2, propagované jako analytické keplerovské elementy, a každý scénář orbit bez bloku tle sestaví konstelaci Walker.

Chcete-li studovat aktuální konstelaci GPS (nebo jakoukoli jinou), vložte čerstvý snímek.

1. Stáhněte aktuální snímek#

Celestrak redistribuuje sady elementů z katalogu NORAD (North American Aerospace Defense Command), obnovované nejméně denně. Pro GPS:

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

Další užitečné skupiny: galileo, glo-ops (GLONASS, ruský Global Navigation Satellite System), beidou, stations (ISS, Mezinárodní kosmická stanice, a další stanice s posádkou).

Soubor je posloupnost třířádkových záznamů (jméno, řádek 1, řádek 2). Parser Kshany řádky se jmény ignoruje, takže soubor můžete vložit tak, jak je.

2. Vložte jej do scénáře#

V libovolném scénáři oběžné dráhy nastavte blok tle konstelace na obsah snímku:

[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 je číslo kódu pseudonáhodného šumu, který družice GPS vysílá.)

Dvojice řádek 1 + řádek 2 je propagována pomocí SGP4/SDP4 (členy odporu a hlubokého vesmíru); holý řádek 2 se bere jako analytické střední keplerovské elementy. Lze je míchat.

strict_checksum = true odmítne každý řádek, jehož kontrolní součet modulo 10 ve sloupci 69 je chybný — dobrá kontrola integrity čerstvě staženého souboru. Výchozí hodnota je false, protože syntetické výukové scénáře používají zástupné kontrolní součty.

3. Poznámky k epochám — přečtěte si před citováním čísla geometrie#

SGP4 propaguje každou družici od její vlastní epochy TLE a parse_propagators (v src/tle.rs) vrací pouze propagátory, takže čas scénáře t se na každou družici uplatňuje nezávisle jako tsince = t. To je správná konvence jen tehdy, když všechny sady elementů v souboru sdílejí epochu.

Skupinový soubor Celestraku vám to nedává. Soubor je stažen v jednom okamžiku, ale sada elementů každé družice se obnovuje vlastním tempem, takže epochy v něm jsou rozloženy na dny. Změřeno na sadách vendorovaných v tomto repozitáři (řádek 1, sloupce 19–32):

fixture sady rozptyl epoch
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 je 5,9 oběhu GPS. Při propagaci tak, jak je, je fázování v rovině zpřeházené: družice jsou ve správných výškách a sklonech, ale nejsou tam, kde byly v kterýkoli jeden den, takže viditelná množina, faktor DOP (zhoršení přesnosti) a z nich vypočtená dostupnost popisují konstelaci, která nikdy neexistovala. Nic v parseru tento rozptyl neměří a druhy orbit a integrity epochy nesjednocují: blok TLE ve scénáři se vždy propaguje s epochou každé družice zvlášť.

Udělejte raději toto. Uchovejte epochu vedle propagátoru, vyberte jeden referenční okamžik a posuňte k němu tsince každé družice. Tle::epoch_days_1950 je veřejné, takže smyčka zpracování je krátká; tests/igs_real_data.rs (real_gps_tle_snapshot) je řešený příklad v tomto stromu:

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 je soustava pravého rovníku a středního jarního bodu, ve které SGP4 pracuje; tests/igs_real_data.rs ji pomocí teme_to_ecef otáčí do souřadnic pevných vůči Zemi.

Pokud epochy nesjednotíte, uveďte to při vykazování čísla: je to výrok o orbitálních slupkách, nikoli o skutečné obloze.

Jak moc na tom záleží, je změřeno v tests/araim_dual_real_data.rs, které uplatňuje tytéž posuny (referenční okamžik: nejnovější epocha v kombinovaných fixture GPS + Galileo, 2026-06-07T07:21:04 UTC (koordinovaný světový čas)) během 24 h běhu dostupnosti dvoukonstelačního ARAIM (pokročilé autonomní monitorování integrity v přijímači). Při VAL (vertikální mez výstrahy) 12 m dává zarovnaná obloha pro samotné GPS 0,993, pro sloučené GPS+Galileo 1,000 a pro dvojí konstelaci odolnou proti poruše konstelace 0,990; nezarovnaná konvence s epochou každé družice zvlášť dává pro tytéž vstupy 0,208, 0,671 a 0,031 — jiný závěr, nikoli malou chybu.

Viz také#

  • README.md — scénáře oběžných drah.
  • SCENARIOS.md — pole druhu orbit; druhy integrity, gnss-sim, jamming a constellation-design berou stejnou tabulku constellation a ephemeris bere jediné tle.
  • INTEGRITY.md — engine ARAIM, který test se skutečnou oblohou řídí.
  • src/tle.rs — parser (parse_propagators, ParseOpts { strict_checksum }).