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

AloitaMuokkaa GitHubissaLähde: docs/tutorials/README.md

Opetusohjelmat

Käytännönläheisiä, läpikäytyjä esimerkkejä, jotka vievät sinut vaiheesta ”aja toimitettu skenaario” vaiheeseen ”kvantifioi ja puolusta tulosta”. Jokainen kolmessa opetusohjelmassa mainittu luku on todellinen moottorin tuloste, ankkuroitu ulkoiseen (kehäpäättelystä vapaaseen) auktoritatiiviseen oraakkeliin ja lukittu integraatiotestillä (tests/tutorials.rs), joten opetusohjelma ei voi huomaamatta ajautua erilleen siitä, mitä moottori todella tekee. Jos opetusohjelma sanoo, että optinen kello pitää 6600 s, testi kaataa koonnin sinä päivänä, kun se lakkaa pitämästä paikkansa.

Kshana on paikannuksen, navigoinnin ja ajanmäärityksen (PNT) simulaattori. Opetusohjelmissa käytetään muutamia muita lyhenteitä, jotka kukin avataan ensimmäisellä esiintymiskerralla: GNSS (Global Navigation Satellite System), GPS (Global Positioning System), CLI (komentorivikäyttöliittymä) ja TOML (Tom's Obvious Minimal Language, skenaariotiedostojen muoto).

Oletko uusi projektissa? Lue ensin peruskäsitteiden johdanto ja sanasto ja palaa sitten tänne.

Kolme läpikäytyä esimerkkiä#

# Opetusohjelma Mitä opit Skenaariotyyppi Vaikeustaso ~Aika
1 Ensimmäinen kiertoratani: missä GPS-satelliitit ovat laske oikean GPS-satelliittitähdistön radat, lue saatavuus, sijainnin tarkkuuden heikkenemiskerroin (PDOP) ja sijaintitarkkuus, ja vie satelliittien todelliset sijainnit (SP3-tarkka rataformaatti) orbit aloittelija 15 min
2 Kellon holdover: kuinka pitkään voit ajautua aja GNSS-estetty kellon holdover, lue ajoituksen laatumittari ja ymmärrä sen takana oleva kasvulaki √(q_wf·T) clock aloittelija 20 min
3 Kvantti vs. klassinen GNSS-kestävyys päätösosa: harhautuksen ilmaisin (spoof) ja täysi fuusioitu PNT-paketti (hybrid), sekä kuinka tietoturvaa, eheyttä ja inertiapaikannusta luetaan yhdessä spoof + hybrid keskitaso 35 min

Muistikirjat#

Ajettavia Jupyter-muistikirjoja, jotka käyttävät synteettistä dataa ja vain repositoriossa säilytettäviä julkisia elementtijoukkoja, on hakemistossa notebooks/:

Notebook Mitä opit
Aluksen luottamus ja koulutus tuota synteettinen sillan NMEA-virta ohjatulla tapahtumalla ja pisteytä se aluksen luottamusvalvojilla (ohjeellinen, ei tyyppihyväksytty navigointilaite)
Häiriökartta ja reitin altistus missä navigointidata on näyttänyt heikentyneeltä ja kuinka suureen osaan reittiä se vaikuttaa
Compliance-kartoitus ja testi-bench-vienti minkä julkisten kehysten rivien osalta joukko ajoja tukee todisteita (supports evidence for), ei koskaan sitä, että kehys täyttyisi, sekä skenaarion liike ja tapahtumat vietynä tekstinä laboratorion GNSS-simulaattoria varten (signaalia ei kirjoiteta)
Kvantti vs. klassinen GDOP sama satelliittitähdistön geometria kvantti- ja klassisella anturilla, vertailtuna tarkkuuden heikkenemiskertoimella
Taivaan geometria siluetin alla satelliitit, jotka paikka näkee kadun tai laiturin siluetin alla, niiden DOP ja virhe-ellipsi, elementtijoukoista laskettu päivätty taivas ja kovarianssia vasten ajettu siemenluvulla toistettu Monte Carlo (MODELLED)

Kuinka opetusohjelma ajetaan#

Jokainen opetusohjelma ajaa saman skenaarion kolmella tavalla; valitse sinulle sopiva. Ne kaikki kutsuvat yhtä moottoria, joten luvut ovat identtiset (vastaa README-tiedoston Käyttö-osiota).

Komentorivi. CLI valitsee toiminnon skenaarion kentän kind mukaan ja kirjoittaa tiedostot <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html ja <scenario>.report.json syötteen viereen (JSON on JavaScript Object Notation, SVG Scalable Vector Graphics, HTML HyperText Markup Language). Muutama tyyppi julkaisee myös toistettavuustaulukon tiedostona <scenario>.table.csv (pilkuilla erotetut arvot): realtime-frame-eop, lunar-time-budget, lunar-jamming, leo-navmsg, telecom-timing ja moonlight-service-volume, kun vientipaikka on asetettu. Mikään kolmesta opetusohjelmasta ei ole niitä, joten et näe tätä tiedostoa tässä.

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

cargo run -- rakentaa CLI:n tästä paikallisesta kopiosta. Asennetulla binäärillä (cargo install kshana) sama komento on kshana scenarios/orbit-sgp4-gps.toml. Ilman paikallista kopiota useimmat toimitetut skenaariot on niputettu binääriin: kshana example luettelee ne (ja nimeää ne harvat, joita ei ole niputettu, syineen), ja kshana example orbit-sgp4-gps > orbit-sgp4-gps.toml kirjoittaa yhden ulos: tiedoston scenarios/orbit-sgp4-gps.toml kopion, jolla binääri rakennettiin.

Python. Rakenna laajennus tästä paikallisesta kopiosta kerran maturinilla aktiivisessa virtuaaliympäristössä ja kutsu sitten 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 asentaa sen sijaan julkaistun wheel-paketin. Se voi olla tätä kopiota jäljessä: json.loads(kshana.list_kinds()) kertoo, mitä skenaariotyyppejä versiossasi on.

Selaimen leikkikenttä. Ei asennusta: avaa Studio, valitse skenaario, muokkaa parametreja ja lue tulos. Mitään ei lähetetä; moottori toimii asiakaspuolella WebAssemblynä.

Opetusohjelmat esittävät CLI-komennot, mutta jokaisella komennolla on yllä oleva Python- ja leikkikenttävastine. Jokainen tulos on toistettavissa tiedoista scenario + seed + engine version: aja se kahdesti, niin saat bitilleen identtisen tulosteen.

Kommentoidut opetusskenaariot#

Jokaista ominaisuusaluetta varten on yksi runsaasti kommentoitu tiedosto (.toml) hakemistossa scenarios/: kanonisen skenaarion opetuskopio, jossa jokainen kenttä on selitetty rivillä, siteerattu oraakkeli on nimetty ja odotettu yhden rivin yhteenveto on kirjattu kommenttina # expected:. Kenttien arvot ovat identtiset vanhemman arvojen kanssa repositorion ylätason hakemistossa scenarios/ (tests/tutorials.rs vertaa jäsennettyä TOML-sisältöä), joten dokumentoitu tuloste pysyy todenmukaisena. Myös golden-tiivisteet ovat koskemattomia: kommentti ei koskaan muuta skenaarion tiivistettä.

Alue Opetustiedosto Tyyppi Johdettu lähteestä
Kellon holdover scenarios/clock.toml clock scenarios/clock-holdover.toml
Rata ja geometria scenarios/orbit.toml orbit scenarios/orbit-sgp4-gps.toml
Eheys (RAIM, vastaanottimen autonominen eheyden valvonta) scenarios/integrity.toml integrity scenarios/integrity-raim.toml
Tietoturva (harhautus) scenarios/security.toml spoof scenarios/spoof-attack.toml
Hybridi-PNT scenarios/hybrid.toml hybrid scenarios/hybrid-pnt.toml
Inertiapaikannus (dead-reckoning) scenarios/inertial.toml inertial scenarios/imu-deadreckoning.toml
Ajansiirto scenarios/timetransfer.toml timetransfer scenarios/timetransfer.toml
GNSS-mittausalue scenarios/gnss-sim.toml gnss-sim scenarios/gnss-sim-raim.toml

Tietoturvan opetustiedosto sisältää rivin kind = "spoof": tietoturvan laatumittarin (1 − P_md, yksi miinus havaitsematta jäämisen todennäköisyys) tuottaa harhautuspaketti. Tiedoston nimi seuraa ominaisuutta (tietoturva), kenttä kind seuraa pakettia (spoof). Tiedoston otsikko tuo tämän esiin.

Täydellinen skenaariotyyppien luettelo#

Moottori valitsee toiminnon skenaarion kentän kind mukaan. Alla oleva taulukko luettelee yleisimmin käytetyt tyypit (yllä olevat kahdeksan opetusaluetta sekä niiden lähimmät naapurit). Se ei ole täydellinen joukko: src/api.rs::list_scenario_kinds() palauttaa kaikki 92 sisäänrakennettua tyyppiä. Tämä funktio (Python- ja WebAssembly (WASM) -sidonnoissa nimellä list_kinds() ja komentorivillä komennolla kshana kinds --json) on auktoritatiivinen, aina ajan tasalla oleva luettelo, ja SCENARIOS.md on sen generoitu luettelointi, yksi osio tyyppiä kohti, pakollisine ja valinnaisine TOML-kenttineen. tests/tutorials.rs::tutorial_scenarios_use_real_kinds pakottaa, että jokainen opetusohjelmassa dokumentoitu tyyppi on todellinen toiminnon valintatyyppi, joten tämän taulukon mikään rivi ei voi nimetä olematonta tyyppiä.

Tyyppi Mitä se tekee
clock Kellon holdover vs. määrittely; valinnainen Monte Carlo -joukko (runs > 1).
inertial 1-DOF (yksi vapausaste) inertiapaikannus (dead-reckoning) GNSS-katkon aikana.
orbit GNSS-saatavuus + DOP satelliittitähdistöstä (Walker / kaksirivinen elementtijoukko / RINEX, Receiver Independent Exchange -formaatti).
integrity Snapshot / ratkaisun erotus / ARAIM (kehittynyt RAIM) vaaka- ja pystysuuntaisilla suojaustasoilla (HPL/VPL) + Stanford-diagrammi.
lunar-integrity Kuun etelänavan ARAIM-suojaustason läpikäynti LunaNet-releiden joukkoa vasten.
timetransfer Optinen vs. radiotaajuinen (RF) kaksisuuntainen aika-/taajuussiirto.
hybrid Hybridi-PNT-päätösosa: kello + inertiamittausyksikkö (IMU) + ajansiirtoavusteisuus.
fusion Yhteinen Kalman-anturifuusio-PNT samoilla hybridisyötteillä.
gnss-ins Löyhästi ja tiukasti kytketty GNSS/INS (inertianavigointijärjestelmä) virhetilan laajennettu Kalman-suodatin.
gnss-sim Mittausalueen pseudoetäisyyssimulaatio (Klobucharin ionosfääri, Saastamoinen/Niell-troposfääri) + RAIM.
jamming Linkkibudjetin häirintä (jamming): häirintä-signaalisuhde (J/S) → tehollinen kantoaalto-kohinatiheys (C/N₀) → lukituksen menetys.
spoof Stokastinen aikaharhautuksen ilmaisin (Neyman–Pearson / χ²₁) Monte Carlo -pohjaisilla väärän hälytyksen ja havaitsematta jäämisen todennäköisyyksillä (P_fa/P_md).
sweep 1-ulotteinen vaihtoehtovertailun pyyhkäisy kellopaketin parametrin yli.
sweep-nd Yleinen N-ulotteinen pyyhkäisy minkä tahansa paketin yli pisteytettyjen TOML-avainten / JSON-metriikkapolkujen avulla.

Opetusohjelmien jälkeen: uudemmat ominaisuudet#

Kolme opetusohjelmaa pysyvät klassisissa kello-, kiertorata- ja tietoturvapaketeissa. Moottori on kasvanut niitä paljon pidemmälle. Jokainen alla oleva rivi on toimitettu skenaario, jonka voit ajaa sellaisenaan (cargo run -- <file> tai kshana <file>); yhteenveto on ensimmäinen rivi, jonka kshana 0.35.0 tulosti siitä 2026-10-10. Toisin kuin opetusohjelmien luvut, nämä rivit ovat yhden ajon tallenne, eikä niitä ole lukittu tiedostolla tests/tutorials.rs: aja skenaario uudelleen saadaksesi nykyisen arvon. Tulokset kertovat oman rajauksensa (useimmissa on label), ja varmennusmatriisi kertoo, mitkä ominaisuudet on VALIDATED ulkoista oraakkelia vasten ja mitkä MODELLED.

Ominaisuus Skenaario Tyyppi Yhteenvedon ensimmäinen rivi Lue lisää
L-kaistan spektri ja häirinnän vesiputouskuvaaja 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
Aurinkokunta yhdellä ajanhetkellä 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
Paikannus toisen taivaankappaleen ympärillä scenarios/europa-surface-pnt.toml body-pnt Positioning around Europa — surface user, 12 relays at 4500 km, 171 epochs SCENARIOS.md
Satelliittitähdistön suunnittelu laajassa mittakaavassa 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
Kampanjat: tyypit ketjutettuina yhdelle aikajanalle 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
Yksi LEO-PNT-järjestelmä päästä päähän scenarios/leo-pnt-end-to-end.toml leo-pnt-chain LEO-PNT end to end, generic 1080 km constellation LEO-PNT.md
Fuusioitu MEO + LEO -paikannus scenarios/meo-leo-fused-pvt.toml leo-pvt LEO PVT (joint) at 40.42, -3.70 over 1800 s LEO-PNT-FUSION.md
LEO-signaalit, ylilennot ja navigointiviestit 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 (ylilento) LEO-SIGNAL.md, LEO-PASS.md, LEO-NAVMSG.md
PPP-konvergenssi LEO-kerroksella; 5G-paikannus 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
Kestävyys: GNSS häiritty, LEO kantaa käyttäjää 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
Sovellusalat: rautatie, meriliikenne, telealat, ajoneuvot, arktinen alue scenarios/leo-vertical-rail-maritime.toml (ja muut tiedostot leo-vertical-*) campaign campaign 49575d27b696 | Railway and maritime with a LEO layer | chain: 3 phases over 2520 s, … CAMPAIGNS.md
Telealan holdover ITU-T:n (International Telecommunication Union, Telecommunication Standardization Sector) G.8272-kellorajoja vasten 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 on matala Maan kiertorata ja MEO keskikorkea Maan kiertorata; PVT on sijainti, nopeus ja aika; PPP on tarkka pistepaikannus; 5G on viidennen sukupolven mobiilistandardi; TDB on barysentrinen dynaaminen aika (Barycentric Dynamical Time); JD on juliaaninen päivämäärä; TE on aikavirhe.

CLI lisää minkä tahansa ajon päälle kolme tulostetta:

  • Raportit. Jokainen ajo kirjoittaa tiedostot <scenario>.report.html ja <scenario>.report.json (katso REPORTS.md). Komento kshana --study <suite.toml> ajaa skenaariojoukon ja tuottaa tiedostot .study.json ja .study.html, esimerkiksi kshana --study scenarios/quantum-pnt-demonstrator.suite.toml.
  • Animation. Komento kshana <scenario.toml> --animate <svg|html|frames|all> piirtää ajon aikasarjan, esimerkiksi komento --animate html skenaariolle scenarios/orbit-sgp4-gps.toml kirjoittaa tiedoston orbit-sgp4-gps.animation.html. Tyyppi, jolla ei ole näytteistettyä aika-akselia (kuten solar-system), hylätään virheellä; katso ANIMATION.md.
  • Yhteentoimivuusviennit. Komento --export <czml|kml|geojson|stk|sigmf|all|list> kirjoittaa tuloksen muita työkaluja varten: CZML (Cesium Language), KML (Keyhole Markup Language, Google Earthia varten), GeoJSON (geographic JSON), STK:n (Systems Tool Kit) efemeridi tai SigMF-tallenne (Signal Metadata Format). Komento --export list kertoo, mitkä formaatit sopivat skenaarioon; SigMF sopii vain tyyppiin spectrum. Kiertoratapaketti vie myös --export-sp3, --export-omm ja --export-oem (CCSDS, Consultative Committee for Space Data Systems, -ratasanomat). Katso INTEROP.md.

Arvioitavat harjoitukset#

Käy tikkaat läpi. Jokainen taso on edellistä vaikeampi ja puolustettavampi; esimerkkiratkaisut ovat hakemistossa exercises/.

Taso Tavoite Mitä teet Esimerkkiratkaisu
Taso 1 — aja ja lue aja toimitettu skenaario muuttamattomana ja lue yksi laatumittari Aja tiedosto scenarios/clock-holdover.toml; tulosta kvantti- ja klassinen holdover_s. CLI, leikkikenttä tai yhden rivin Python-kutsu. exercises/tier1_run.py
Taso 2 — muokkaa ja pyyhkäise muuta yhtä parametria ja havaitse monotoninen vaikutus Kiristä kellon määrittelyä (threshold_ns) tai pidennä katkoa ja seuraa holdoverin laskua; tai taulukoi se tyypillä kind = "sweep"/"sweep-nd". exercises/tier2_sweep.py
Taso 3 — kvantifioi ja puolusta Monte Carlo, luottamusvälit, toistettavuus ja suojaustaso Aja kellojoukko (runs = N), lue [p05–p95]-väli, varmista että kaksi ajoa antaa identtisen arvon scenario_hash, ja lue eheys- / Stanford-tulos. exercises/tier3_montecarlo.py

Esimerkkiratkaisut käyttävät Python-laajennusta (ensin maturin develop --features python). Kun komento ajetaan repositorion juuresta, tiedosto tier2_sweep.py tulostaa sirutason atomikellon holdoverin putoavan arvosta 2610 s 20 ns:n määrittelyllä arvoon 1140 s 5 ns:n määrittelyllä.

Haluatko tuoretta dataa?#

Näiden opetusohjelmien pääluvut ajetaan kokonaan repositoriossa jo olevista skenaarioista. Mitään ei haeta, minkä ansiosta ne ovat toistettavia ja turvallisia ajaa jatkuvassa integroinnissa (CI). ”Laajenna sitä” -harjoituksiin voit hakea live-dataa:

  • GPS:n kaksirivisiä elementtijoukkoja (TLE) (päivitä kiertoratatähdistö): https://celestrak.org/NORAD/elements/gp.php?GROUP=gps-ops&FORMAT=tle, pelkkää tekstiä olevia 3-rivisiä elementtijoukkoja (nimi + rivi 1 + rivi 2). Apuri: scripts/fetch_tles.sh. Avoin data (US Space Forcen 18th Space Defense Squadronin luettelo, Celestrakin jakelema, Dr T. S. Kelso).
  • SGP4:n (Simplified General Perturbations 4) varmennusoraakkeli (jo mukana, älä hae uudelleen): AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 ”Revisiting Spacetrack Report #3” -testivektorit, https://celestrak.org/publications/AIAA/2006-6753/, tiedoston tests/sgp4_verification.rs käyttämät; katso docs/SGP4-VALIDATION.md.
  • Kellon vakauden relaatioiden oraakkeli: NIST (National Institute of Standards and Technology) Special Publication 1065 (Riley, Handbook of Frequency Stability Analysis), https://tf.nist.gov/general/pdf/2220.pdf, σ_y(τ)↔vaihe-relaatiot, joihin opetusohjelma 2 perustuu.