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

ZačínámeUpravit na GitHubuZdroj: docs/tutorials/README.md

Tutoriály

Praktické pracovní příklady, které vás provedou od „spusťte dodaný scénář“ k „vyčíslete a obhajte výsledek“. Každé číslo uvedené ve třech tutoriálech je skutečným výstupem enginu, ukotveným k externímu (nekruhovému) směrodatnému orákulu a zafixovaným integračním testem (tests/tutorials.rs), takže tutoriál se nikdy nemůže tiše odchýlit od toho, co engine skutečně dělá. Pokud tutoriál říká, že optické hodiny drží 6600 s, test shodí sestavení v den, kdy to přestane platit.

Kshana je simulátor určování polohy, navigace a času (PNT). Tutoriály používají několik dalších zkratek, každá je rozepsána tam, kde se poprvé objeví: GNSS (globální družicový navigační systém), GPS (Global Positioning System), CLI (rozhraní příkazového řádku) a TOML (Tom's Obvious Minimal Language, formát souborů scénářů).

Jste v projektu noví? Přečtěte si nejprve úvodní přehled pojmů a slovník a pak se vraťte.

Tři pracovní příklady#

# Tutoriál Co se naučíte Druh scénáře Obtížnost ~Čas
1 Moje první oběžná dráha: kde jsou družice GPS propagovat skutečnou konstelaci GPS, přečíst dostupnost, faktor zhoršení přesnosti polohy (PDOP) a přesnost polohy a exportovat, kde družice skutečně jsou (formát přesných drah SP3) orbit začátečník 15 min
2 Holdover hodin: jak dlouho lze setrvat spustit holdover hodin bez GNSS, přečíst ukazatel kvality časování a pochopit zákon růstu √(q_wf·T), který za ním stojí clock začátečník 20 min
3 Kvantová a klasická odolnost GNSS vrcholový tutoriál: detektor spoofingu (spoof) a úplná fúzní sada PNT (hybrid) a jak číst bezpečnost, integritu a dead-reckoning společně spoof + hybrid pokročilejší 35 min

Notebooky#

Spustitelné notebooky Jupyter, na syntetických datech a veřejných sadách elementů uložených pouze v repozitáři, jsou v notebooks/:

Notebook Co se naučíte
Důvěra na plavidle a trénink vygenerovat syntetický proud NMEA z můstku se scénářovanou událostí a ohodnotit jej monitory důvěry plavidla (poradní, nikoli typově schválené navigační zařízení)
Mapa interference a expozice trasy kde navigační data vypadala zhoršeně a jak velké části trasy se to týká
Mapování compliance a export pro testovací bench jaké řádky veřejných rámců sada běhů podporuje důkazy pro (supports evidence for) (nikdy že je rámec splněn) a pohyb a události scénáře exportované jako text pro laboratorní simulátor GNSS (nezapisuje se žádný signál)
Kvantové a klasické GDOP stejná geometrie konstelace s kvantovým a klasickým senzorem, porovnaná podle faktoru zhoršení přesnosti
Geometrie oblohy pod skylinou družice, které místo vidí pod skylinou ulice nebo nábřeží, jejich DOP a chybová elipsa, datovaná obloha ze sad elementů a seedované Monte Carlo proti kovarianci (MODELLED)

Jak spustit tutoriál#

Každý tutoriál spouští stejný scénář třemi způsoby; vyberte si, který vám vyhovuje. Všechny volají jediný engine, takže čísla jsou shodná (odpovídá části Usage v README).

Příkazový řádek. CLI rozlišuje podle pole kind ve scénáři a zapisuje <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html a <scenario>.report.json vedle vstupu (JSON je JavaScript Object Notation, SVG Scalable Vector Graphics, HTML HyperText Markup Language). Několik druhů publikuje také tabulku reprodukovatelnosti jako <scenario>.table.csv (hodnoty oddělené čárkami): realtime-frame-eop, lunar-time-budget, lunar-jamming, leo-navmsg, telecom-timing a moonlight-service-volume, je-li nastaveno místo exportu. Žádný ze tří tutoriálů mezi ně nepatří, takže tento soubor zde neuvidíte.

cargo run -- scenarios/orbit-sgp4-gps.toml

cargo run -- sestaví CLI z tohoto checkoutu. S nainstalovanou binárkou (cargo install kshana) je stejný příkaz kshana scenarios/orbit-sgp4-gps.toml. Bez checkoutu je většina dodaných scénářů součástí binárky: kshana example je vypíše (a pojmenuje těch několik, které součástí nejsou, s důvodem) a kshana example orbit-sgp4-gps > orbit-sgp4-gps.toml jeden zapíše: kopii scenarios/orbit-sgp4-gps.toml, se kterou byla binárka sestavena.

Python. Jednou sestavte rozšíření z tohoto checkoutu pomocí maturin v aktivním virtuálním prostředí a poté zavolejte kshana.run:

pip install maturin
maturin develop --features python
import json, kshana
result = json.loads(kshana.run(open("scenarios/orbit-sgp4-gps.toml").read()))
print(result["geometry"]["best_pdop"])

pip install kshana nainstaluje místo toho publikovaný wheel. Ten může zaostávat za tímto checkoutem: json.loads(kshana.list_kinds()) vám řekne, které druhy scénářů vaše sestavení má.

Playground v prohlížeči. Bez instalace: otevřete Studio, zvolte scénář, upravte parametry a přečtěte si výsledek. Nic se nenahrává; engine běží na straně klienta jako WebAssembly.

Tutoriály uvádějí CLI, ale každý příkaz má výše uvedený ekvivalent v Pythonu a playgroundu. Každý výsledek je reprodukovatelný z scenario + seed + engine version: spusťte jej dvakrát a dostanete bitově shodný výstup.

Okomentované výukové scénáře#

Pro každou schopnostní doménu existuje jeden silně okomentovaný soubor .toml v scenarios/: výuková kopie kanonického scénáře s každým polem vysvětleným přímo v něm, pojmenovaným citovaným orákulem a očekávaným jednořádkovým shrnutím zaznamenaným jako komentář # expected:. Hodnoty polí jsou shodné s nadřazeným scénářem v nejvyšším adresáři scenarios/ repozitáře (tests/tutorials.rs porovnává zpracovaný TOML), takže zdokumentovaný výstup zůstává pravdivý. Zlaté hashe zůstávají rovněž nedotčeny: komentář nikdy nezmění hash scénáře.

Oblast Výukový soubor Druh Odvozeno z
Holdover hodin scenarios/clock.toml clock scenarios/clock-holdover.toml
Oběžná dráha a geometrie scenarios/orbit.toml orbit scenarios/orbit-sgp4-gps.toml
Integrita (RAIM, autonomní monitorování integrity přijímačem) scenarios/integrity.toml integrity scenarios/integrity-raim.toml
Bezpečnost (spoofing) scenarios/security.toml spoof scenarios/spoof-attack.toml
Hybridní PNT scenarios/hybrid.toml hybrid scenarios/hybrid-pnt.toml
Inerciální výpočet polohy z pohybu scenarios/inertial.toml inertial scenarios/imu-deadreckoning.toml
Přenos času scenarios/timetransfer.toml timetransfer scenarios/timetransfer.toml
Měřicí doména GNSS scenarios/gnss-sim.toml gnss-sim scenarios/gnss-sim-raim.toml

Výukový soubor pro bezpečnost uvnitř používá kind = "spoof": ukazatel kvality bezpečnosti (1 − P_md, jedna minus pravděpodobnost nezachycené události) vytváří balíček spoof. Název souboru se řídí schopností (bezpečnost), kind se řídí balíčkem (spoof). Hlavička tohoto souboru na to upozorňuje.

Úplný katalog druhů scénářů#

Engine rozlišuje podle kind scénáře. Tabulka níže uvádí nejčastěji používané druhy (osm výše uvedených tutoriálových domén a jejich nejbližší sousedy). Není to úplná množina: src/api.rs::list_scenario_kinds() vrací všech 92 vestavěných druhů. Tato funkce (zpřístupněná jako list_kinds() ve vazbách Pythonu a WebAssembly (WASM) a jako kshana kinds --json na příkazovém řádku) je směrodatným, vždy aktuálním katalogem a SCENARIOS.md je její generovaný výčet, jedna sekce na druh s povinnými a volitelnými poli TOML. tests/tutorials.rs::tutorial_scenarios_use_real_kinds vynucuje, aby každý druh, který tutoriál dokumentuje, byl skutečným druhem rozlišení, takže tato tabulka nemůže uvádět druh, který neexistuje.

Druh Co dělá
clock Holdover hodin vůči specifikaci; volitelný soubor Monte Carlo (runs > 1).
inertial 1-DOF (jeden stupeň volnosti) inerciální dead-reckoning během výpadku GNSS.
orbit Dostupnost GNSS + faktor zhoršení přesnosti (DOP) z konstelace (Walker / dvouřádkové elementy / RINEX, Receiver Independent Exchange format).
integrity Snapshot / separace řešení / ARAIM (pokročilý RAIM) s horizontálními a vertikálními ochrannými úrovněmi (HPL/VPL) + Stanfordský diagram.
lunar-integrity Průlet ARAIM s ochrannými úrovněmi na jižním pólu Měsíce proti sadě relé LunaNet.
timetransfer Optický vs. rádiofrekvenční (RF) obousměrný přenos času/frekvence.
hybrid Vrcholový hybridní PNT: hodiny + inerciální měřicí jednotka (IMU) + podpora přenosem času.
fusion Společná Kalmanova fúze senzorů PNT nad týmiž hybridními vstupy.
gnss-ins Volně a těsně vázaný rozšířený Kalmanův filtr chybového stavu GNSS/INS (inerciální navigační systém).
gnss-sim Simulace pseudovzdáleností v měřicí oblasti (ionosféra Klobuchar, troposféra Saastamoinen/Niell) + RAIM.
jamming Rozpočet spoje při rušení: poměr rušení k signálu (J/S) → efektivní hustota nosné k šumu (C/N₀) → ztráta zachycení.
spoof Stochastický detektor časového spoofingu (Neyman–Pearson / χ²₁) s pravděpodobnostmi falešného poplachu a nezachycené události z Monte Carlo (P_fa/P_md).
sweep 1-D průchod obchodní studie parametrem balíčku hodin.
sweep-nd Obecný N-rozměrný průchod libovolným balíčkem přes klíče TOML s tečkami / cesty metrik JSON.

Za hranicemi tutoriálů: novější schopnosti#

Tři tutoriály zůstávají u klasických balíčků hodin, oběžné dráhy a bezpečnosti. Engine od té doby výrazně vyrostl. Každý řádek níže je dodaný scénář, který můžete spustit tak, jak je (cargo run -- <file> nebo kshana <file>); shrnutí je první řádek, který kshana 0.35.0 pro něj vypsala dne 2026-10-10. Na rozdíl od údajů v tutoriálech jsou tyto řádky záznamem jednoho běhu a nejsou zafixovány tests/tutorials.rs: pro aktuální hodnotu scénář spusťte znovu. Výsledky uvádějí vlastní rozsah (většina nese label) a verifikační matice uvádí, které schopnosti jsou VALIDATED proti vnějšímu orákulu a které MODELLED.

Schopnost Scénář Druh První řádek shrnutí Číst dále
Spektrum pásma L a vodopád rušení scenarios/l-band-waterfall-jamming.toml spectrum scenario spectrum | 5 bands | 3 jammers | noise floor -202.0 dBW/Hz | worst band gps-l1ca min C/N0 3.2 dB-Hz (J/S 60.2 dB) SPECTRUM.md
Sluneční soustava v jedné epoše scenarios/solar-system-tour.toml solar-system Solar system at 2026-09-28T00:00:00 (JD 2461311.50080 TDB), 18 bodies, observer Earth SCENARIOS.md
Určování polohy kolem jiného tělesa scenarios/europa-surface-pnt.toml body-pnt Positioning around Europa — surface user, 12 relays at 4500 km, 171 epochs SCENARIOS.md
Návrh konstelace ve velkém měřítku scenarios/constellation-multi-gnss-coverage.toml constellation-design constellation-design: 102 satellites (GPS, Galileo, BeiDou, GLONASS) around the Earth; availability 100.00% (PDOP <= 6 at 10 deg mask), … CONSTELLATION-DESIGN.md
Kampaně: druhy řetězené na jedné časové ose scenarios/campaign-jam-spoof-holdover-integrity.toml campaign campaign f87a4a0e0bab | Jamming, spoofing, holdover and integrity: a chained mission | chain: 6 phases over 4570 s, … CAMPAIGNS.md
Jeden systém LEO-PNT od začátku do konce scenarios/leo-pnt-end-to-end.toml leo-pnt-chain LEO-PNT end to end, generic 1080 km constellation LEO-PNT.md
Fúzované určování polohy MEO + LEO scenarios/meo-leo-fused-pvt.toml leo-pvt LEO PVT (joint) at 40.42, -3.70 over 1800 s LEO-PNT-FUSION.md
Signály LEO, průlety a navigační zprávy scenarios/leo-band-trade.toml, scenarios/leo-pass-iridium.toml, scenarios/leo-navmsg-encode-decode.toml leo-signal, leo-pass, leo-navmsg LEO pass link budget, air user at 50.00, -30.00; 1 LEO satellite(s), 900 s window (průlet) LEO-SIGNAL.md, LEO-PASS.md, LEO-NAVMSG.md
Konvergence PPP s vrstvou LEO; určování polohy 5G scenarios/leo-ppp-convergence.toml, scenarios/ntn-5g-positioning.toml leo-ppp, ntn-positioning PPP convergence to 0.10 m horizontal / 0.10 m vertical, 12 runs per case, 96 GNSS satellites SCENARIOS.md
Odolnost: GNSS rušeno, uživatele nese LEO scenarios/leo-resilience-gnss-jammed-leo-carries.toml campaign campaign 248395b851cc | GNSS jammed, LEO-PNT carries the user, integrity maintained | chain: 3 phases over 2100 s, … RESILIENCE-CROSSWALK.md
Vertikály: železnice, námořní doprava, telekomunikace, vozidla, Arktida scenarios/leo-vertical-rail-maritime.toml (a další soubory leo-vertical-*) campaign campaign 49575d27b696 | Railway and maritime with a LEO layer | chain: 3 phases over 2520 s, … CAMPAIGNS.md
Telekomunikační holdover vůči limitům hodin ITU-T (Mezinárodní telekomunikační unie, sektor telekomunikační standardizace) G.8272 scenarios/telecom-prtc-holdover-24h.toml telecom-timing telecom-timing: max|TE| 603.2 ns over 90000 s; eprtc-a-holdover FAIL, prtc-a FAIL; 100 ns budget exceeded after 8206 s (MODELLED) TELECOM-TIMING.md

LEO je nízká oběžná dráha Země a MEO střední oběžná dráha Země; PVT je poloha, rychlost a čas; PPP je přesné bodové určování polohy; 5G je pátá generace mobilního standardu; TDB je barycentrický dynamický čas; JD je juliánské datum; TE je časová chyba.

CLI přidává ke každému běhu tři výstupy:

  • Zprávy. Každý běh zapisuje <scenario>.report.html a <scenario>.report.json (viz REPORTS.md). kshana --study <suite.toml> spustí sadu scénářů do jednoho .study.json a .study.html, například kshana --study scenarios/quantum-pnt-demonstrator.suite.toml.
  • Animation. kshana <scenario.toml> --animate <svg|html|frames|all> vykreslí časové řady běhu, například --animate html na scenarios/orbit-sgp4-gps.toml zapíše orbit-sgp4-gps.animation.html. Druh bez vzorkované časové osy (například solar-system) je odmítnut s chybou; viz ANIMATION.md.
  • Exporty pro interoperabilitu. --export <czml|kml|geojson|stk|sigmf|all|list> zapíše výsledek pro jiné nástroje: CZML (Cesium Language), KML (Keyhole Markup Language, pro Google Earth), GeoJSON (geografický JSON), efemeridy STK (Systems Tool Kit) nebo záznam SigMF (Signal Metadata Format). --export list říká, které formáty se na scénář vztahují; SigMF se vztahuje pouze na spectrum. Balíček oběžné dráhy také exportuje --export-sp3, --export-omm a --export-oem (zprávy o oběžné dráze CCSDS, Poradní výbor pro kosmické datové systémy). Viz INTEROP.md.

Odstupňovaná cvičení#

Projděte si žebříček. Každá úroveň je těžší a lépe obhajitelná než předchozí; referenční řešení jsou v exercises/.

Úroveň Cíl Co děláte Referenční řešení
Úroveň 1 — spustit a přečíst spustit dodaný scénář beze změny a přečíst jeden ukazatel kvality Spusťte scenarios/clock-holdover.toml; vypište holdover_s pro kvantové a klasické hodiny. CLI, playground nebo jednořádkové volání Pythonu. exercises/tier1_run.py
Úroveň 2 — upravit a proměřit změnit jeden parametr a sledovat monotónní účinek Zpřísněte specifikaci hodin (threshold_ns) nebo prodlužte výpadek a sledujte, jak holdover klesá; nebo k vytvoření tabulky použijte kind = "sweep"/"sweep-nd". exercises/tier2_sweep.py
Úroveň 3 — vyčíslit a obhájit Monte Carlo, pásma spolehlivosti, reprodukovatelnost a ochranná úroveň Spusťte soubor hodin (runs = N), přečtěte pásmo [p05–p95], ověřte, že dva běhy dávají shodný scenario_hash, a přečtěte si výsledek integrity / Stanfordova diagramu. exercises/tier3_montecarlo.py

Referenční řešení používají rozšíření Pythonu (nejprve maturin develop --features python). Spuštěno z kořene repozitáře, tier2_sweep.py vypíše pokles holdoveru čipových atomových hodin z 2610 s při specifikaci 20 ns na 1140 s při 5 ns.

Chcete čerstvá data?#

Úvodní čísla v těchto tutoriálech běží výhradně ze scénářů, které již jsou v repozitáři. Nic se nestahuje, a právě proto jsou reprodukovatelná a bezpečná ke spouštění v kontinuální integraci (CI). Pro cvičení „rozšiřte to“ můžete stáhnout živá data:

  • Dvouřádkové elementy GPS (TLE) (obnovení konstelace oběžné dráhy): https://celestrak.org/NORAD/elements/gp.php?GROUP=gps-ops&FORMAT=tle, textové 3řádkové sady elementů (název + řádek 1 + řádek 2). Pomocník: scripts/fetch_tles.sh. Otevřená data (katalog 18. eskadry kosmické obrany Vesmírných sil USA, redistribuovaný Celestrakem, Dr T. S. Kelso).
  • Ověřovací orákulum SGP4 (Simplified General Perturbations 4) (již součástí repozitáře, nestahujte znovu): testovací vektory AIAA (Americký institut pro letectví a kosmonautiku) 2006-6753 „Revisiting Spacetrack Report #3“, https://celestrak.org/publications/AIAA/2006-6753/, používané tests/sgp4_verification.rs; viz docs/SGP4-VALIDATION.md.
  • Orákulum vztahů stability hodin: NIST (Národní institut standardů a technologie) Special Publication 1065 (Riley, Handbook of Frequency Stability Analysis), https://tf.nist.gov/general/pdf/2220.pdf, vztahy σ_y(τ)↔fáze za Tutoriálem 2.