Õpetused
Praktilised läbitöötatud näited, mis viivad „kaasasoleva stsenaariumi käivitamisest“ kuni „tulemuse kvantifitseerimise ja kaitsmiseni“. Iga kolmes õpetuses toodud arv on tegelik mootori väljund, ankurdatud välise (mitte-ringsõltuva) autoriteetse sõltumatu etaloni külge ja fikseeritud integratsioonitestiga (tests/tutorials.rs), nii et õpetus ei saa vaikselt lahkneda sellest, mida mootor tegelikult teeb. Kui õpetus ütleb, et optiline kell peab vastu 6600 s, siis test rikub ehituse sel päeval, kui see lakkab tõene olemast.
Kshana on positsioneerimise, navigatsiooni ja aja (PNT) simulaator. Õpetused kasutavad veel mõnda lühendit, millest igaüks on lahti kirjutatud seal, kus see esimest korda esineb: GNSS (ülemaailmne satelliitnavigatsioonisüsteem), GPS (Global Positioning System), CLI (käsurea liides) ja TOML (Tom's Obvious Minimal Language, stsenaariumifaili vorming).
Projektiga uus? Lugeda kõigepealt mõistete lühiülevaadet ja sõnastikku, seejärel tulla siia tagasi.
Kolm läbitöötatud näidet#
| # | Õpetus | Mida õpitakse | Stsenaariumi liik | Raskusaste | ~Aeg |
|---|---|---|---|---|---|
| 1 | Minu esimene orbiit: kus on GPS satelliidid | propageerida tegelik GPS konstellatsioon, lugeda kättesaadavust, positsiooni täpsuse halvenemise tegurit (PDOP) ja positsiooni täpsust ning eksportida, kus satelliidid tegelikult on (SP3 täppisorbiidi vorming) | orbit |
algaja | 15 min |
| 2 | Kella holdover: kui kaua saab veerida | käivitada GNSS-ita kella holdover, lugeda ajastuse kvaliteedinäitajat ja mõista selle taga olevat √(q_wf·T) kasvuseadust | clock |
algaja | 20 min |
| 3 | Kvant- ja klassikaline GNSS vastupidavus | kokkuvõte: spuufimisdetektor (spoof) ja täielik liidetud PNT komplekt (hybrid) ning kuidas lugeda koos turvalisust / terviklikkust / dead-reckoning-it |
spoof + hybrid |
kesktase | 35 min |
Märkmikud#
Käivitatavad Jupyteri märkmikud, sünteetilistel andmetel ja avalike elemendikomplektidega, mida hoitakse ainult hoidlas, on failis notebooks/:
| Märkmik | Mida õpitakse |
|---|---|
| Laeva usaldus ja treening | genereerida sünteetiline sillal NMEA voog skriptitud sündmusega, seejärel hinnata seda laeva usalduse monitooridega (nõuandev, mitte tüübikinnitust omav navigatsiooniseade) |
| Häirekaart ja marsruudi eksponeeritus | kus navigatsiooniandmed on näinud halvenenud välja ja kui suurt osa marsruudist see puudutab |
| Compliance-vastendus ja katsestendi eksport | milliste avalike raamistiku ridade jaoks käivituste kogum toetab tõendeid (supports evidence for) (mitte kunagi, et raamistik on täidetud), ning stsenaariumi liikumine ja sündmused eksporditud tekstina laboratoorse GNSS simulaatori jaoks (signaali ei kirjutata) |
| Kvant- ja klassikaline GDOP | sama konstellatsiooni geomeetria kvant- ja klassikalise anduriga, võrreldud täpsuse halvenemise teguri järgi |
| Taevageomeetria horisondijoone all | satelliidid, mida koht näeb tänava või kai horisondijoone all, nende DOP ja veaellips, elemendikomplektidest dateeritud taevas ja seemnestatud Monte Carlo kovariatsiooni vastu (MODELLED) |
Kuidas õpetust käivitada#
Iga õpetus käivitab sama stsenaariumi kolmel viisil; valida see, mis sobib. Kõik kutsuvad ühte mootorit, nii et arvud on identsed (peegeldab README jaotist Usage).
Käsurida. CLI jaotab töö stsenaariumi kind-id põhjal ja kirjutab sisendi kõrvale <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html ja <scenario>.report.json (JSON on JavaScript Object Notation, SVG Scalable Vector Graphics, HTML HyperText Markup Language). Mõned liigid avaldavad ka reprodutseeritavuse tabeli kujul <scenario>.table.csv (komadega eraldatud väärtused): realtime-frame-eop, lunar-time-budget, lunar-jamming, leo-navmsg, telecom-timing ja moonlight-service-volume, kui eksporditav koht on määratud. Ükski kolmest õpetusest ei ole nende hulgas, seega seda faili siin ei näe.
cargo run -- scenarios/orbit-sgp4-gps.toml
cargo run -- ehitab CLI sellest väljavõtust. Paigaldatud binaarfailiga (cargo install kshana) on sama käsk kshana scenarios/orbit-sgp4-gps.toml. Ilma väljavõtteta on enamik kaasasolevaid stsenaariume binaarfailis sees: kshana example loetleb need (ja nimetab mõned, mis ei ole sisse ehitatud, koos põhjusega) ning kshana example orbit-sgp4-gps > orbit-sgp4-gps.toml kirjutab ühe välja: faili scenarios/orbit-sgp4-gps.toml koopia, millega binaarfail ehitati.
Python. Ehitada laiendus sellest väljavõtust üks kord maturiniga, aktiivses virtuaalkeskkonnas, seejärel kutsuda 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 paigaldab selle asemel avaldatud wheel-i. See võib sellest väljavõttest maha jääda: json.loads(kshana.list_kinds()) ütleb, milliseid stsenaariumi liike teie ehitus sisaldab.
Brauseri mänguväljak. Null paigaldust: avada Studio, valida stsenaarium, muuta parameetreid ja lugeda tulemust. Midagi ei laadita üles; mootor töötab kliendi poolel WebAssembly-na.
Õpetused toovad CLI käske, kuid igal käsul on ülaltoodud Pythoni ja mänguväljaku vaste. Iga tulemus on reprodutseeritav failist scenario + seed + engine version: käivitada kaks korda ja väljund on bitt-bitilt identne.
Annoteeritud õppestsenaariumid#
Iga võimekuse valdkonna jaoks on üks tugevalt kommenteeritud .toml asukohas scenarios/: kanoonilise stsenaariumi õppekoopia, milles iga väli on sisetekstina seletatud, viidatud sõltumatu etalon nimetatud ja oodatav üherealine kokkuvõte salvestatud # expected: kommentaarina. Väljade väärtused on identsed vanema omadega hoidla ülemise taseme kataloogis scenarios/ (tests/tutorials.rs võrdleb parsitud TOML-i), nii et dokumenteeritud väljund jääb tõeseks. Kuldsed räsid on samuti puutumata: kommentaar ei muuda kunagi stsenaariumi räsi.
| Valdkond | Õppefail | Liik | Tuletatud failist |
|---|---|---|---|
| Kella holdover | scenarios/clock.toml | clock |
scenarios/clock-holdover.toml |
| Orbiit ja geomeetria | scenarios/orbit.toml | orbit |
scenarios/orbit-sgp4-gps.toml |
| Terviklikkus (RAIM, vastuvõtja autonoomne terviklikkuse seire) | scenarios/integrity.toml | integrity |
scenarios/integrity-raim.toml |
| Turvalisus (spuufimine) | scenarios/security.toml | spoof |
scenarios/spoof-attack.toml |
| Hübriid-PNT | scenarios/hybrid.toml | hybrid |
scenarios/hybrid-pnt.toml |
| Inertsiaalne dead-reckoning | scenarios/inertial.toml | inertial |
scenarios/imu-deadreckoning.toml |
| Aja edastamine | scenarios/timetransfer.toml | timetransfer |
scenarios/timetransfer.toml |
| GNSS-i mõõtmisruum | scenarios/gnss-sim.toml | gnss-sim |
scenarios/gnss-sim-raim.toml |
Turvalisuse õppefail kasutab sees faili
kind = "spoof": turvalisuse kvaliteedinäitaja (1 − P_md, üks miinus tuvastamata jäämise tõenäosus) tekitatakse spuufimispaketiga. Faili nimi järgib võimekust (turvalisus),kindjärgib paketti (spoof). Selle faili päis toob selle välja.
Stsenaariumi liikide täielik kataloog#
Mootor jaotab töö stsenaariumi kind-id põhjal. Allolev tabel loetleb kõige sagedamini kasutatavad liigid (ülalolevad kaheksa õpetuse valdkonda ja nende lähimad naabrid). See ei ole täielik hulk: src/api.rs::list_scenario_kinds() tagastab kõik 92 sisseehitatud liiki. See funktsioon (Pythoni ja WebAssembly (WASM) sidumistes list_kinds() ning käsureal kshana kinds --json) on autoriteetne, alati ajakohane kataloog ja SCENARIOS.md on selle genereeritud loend, üks jaotis liigi kohta koos nõutavate ja valikuliste TOML väljadega. tests/tutorials.rs::tutorial_scenarios_use_real_kinds tagab, et iga liik, mida õpetus dokumenteerib, on tegelik jaotusliik, nii et ükski rida selles tabelis ei saa nimetada liiki, mida pole olemas.
| Liik | Mida see teeb |
|---|---|
clock |
Kella holdover spetsifikatsiooni vastu; valikuline Monte Carlo ansambel (runs > 1). |
inertial |
1-DOF (üks vabadusaste) inertsiaalne dead-reckoning GNSS katkestuse ajal. |
orbit |
GNSS kättesaadavus + täpsuse halvenemise tegur (DOP) konstellatsioonist (Walker / kaherealised elemendikomplektid / RINEX, Receiver Independent Exchange vorming). |
integrity |
Hetktõmmis / lahenduste eraldamine / ARAIM (täiustatud RAIM) horisontaalsete ja vertikaalsete kaitsetasemetega (HPL/VPL) + Stanfordi diagramm. |
lunar-integrity |
Kuu lõunapooluse ARAIM kaitsetaseme läbimine LunaNet releekomplekti vastu. |
timetransfer |
Optiline versus raadiosageduslik (RF) kahesuunaline aja/sageduse edastamine. |
hybrid |
Hübriid-PNT kokkuvõte: kell + inertsmõõteseade (IMU) + aja edastamise abi. |
fusion |
Ühine Kalmani sensorite liitmise PNT samade hübriidsisendite üle. |
gnss-ins |
Lõdvalt ja tihedalt seotud GNSS/INS (inertsiaalnavigatsioonisüsteem) veaolekuga laiendatud Kalmani filter. |
gnss-sim |
Mõõtmisvaldkonna pseudovahemaa simulatsioon (Klobuchari ionosfäär, Saastamoineni/Niell’i troposfäär) + RAIM. |
jamming |
Sidelingi eelarvega segamine: segaja ja signaali suhe (J/S) → efektiivne kandja ja müra tihedus (C/N₀) → lukust väljalangemine. |
spoof |
Stohhastiline aja spuufimise detektor (Neyman–Pearson / χ²₁) Monte Carlo valehäire ja tuvastamata jäämise tõenäosustega (P_fa/P_md). |
sweep |
1-D kompromissiuuringu pühkimine kellapaketi parameetri kohal. |
sweep-nd |
Üldine N-D pühkimine mis tahes paketi kohal punktiga eraldatud TOML-võtmete / JSON-i mõõdikuteede kaudu. |
Lisaks õpetustele: uuemad võimekused#
Kolm õpetust jäävad klassikaliste kella-, orbiidi- ja turvapakettide juurde. Mootor on neist kaugele kasvanud. Iga allolev rida on kaasasolev stsenaarium, mida saab käivitada sellisena, nagu see on (cargo run -- <file> või kshana <file>); kokkuvõte on esimene rida, mille kshana 0.35.0 selle kohta 2026-10-10 trükkis. Erinevalt õpetuste arvudest on need read ühe käivituse kirje, mida tests/tutorials.rs ei fikseeri: praeguse väärtuse saamiseks käivitada stsenaarium uuesti. Tulemused esitavad oma ulatuse (enamik kannab label) ja kontrollimaatriks ütleb, millised võimekused on VALIDATED välise sõltumatu etaloni vastu ja millised MODELLED.
| Võimekus | Stsenaarium | Liik | Kokkuvõtte esimene rida | Loe edasi |
|---|---|---|---|---|
| L-riba spekter ja segamise juga | 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 |
| Päikesesüsteem ühel epohhil | 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 |
| Positsioneerimine teise keha ümber | scenarios/europa-surface-pnt.toml |
body-pnt |
Positioning around Europa — surface user, 12 relays at 4500 km, 171 epochs |
SCENARIOS.md |
| Konstellatsiooni kavandamine suures mahus | 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 |
| Kampaaniad: liigid aheldatud ühele ajajoonele | 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 |
| Üks LEO-PNT süsteem otsast lõpuni | scenarios/leo-pnt-end-to-end.toml |
leo-pnt-chain |
LEO-PNT end to end, generic 1080 km constellation |
LEO-PNT.md |
| Liidetud MEO + LEO positsioneerimine | scenarios/meo-leo-fused-pvt.toml |
leo-pvt |
LEO PVT (joint) at 40.42, -3.70 over 1800 s |
LEO-PNT-FUSION.md |
| LEO signaalid, läbilennud ja navigatsioonisõnumid | 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 (läbilend) |
LEO-SIGNAL.md, LEO-PASS.md, LEO-NAVMSG.md |
| PPP konvergents LEO kihiga; 5G positsioneerimine | 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 |
| Vastupidavus: GNSS segatud, LEO kannab kasutajat | 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 |
| Vertikaalid: raudtee, meresõit, telekommunikatsioon, sõidukid, Arktika | scenarios/leo-vertical-rail-maritime.toml (ja teised leo-vertical-* failid) |
campaign |
campaign 49575d27b696 | Railway and maritime with a LEO layer | chain: 3 phases over 2520 s, … |
CAMPAIGNS.md |
| Telekommunikatsiooni holdover ITU-T (International Telecommunication Union, Telecommunication Standardization Sector) G.8272 kellapiiride vastu | 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 madal Maa orbiit ja MEO keskmine Maa orbiit; PVT on asukoht, kiirus ja aeg; PPP on täppispunktpositsioneerimine; 5G on viienda põlvkonna mobiilistandard; TDB on barütsentriline dünaamiline aeg; JD on Juliuse kuupäev; TE on ajaviga.
CLI lisab mis tahes käivitusele kolm väljundit:
- Aruanded. Iga käivitus kirjutab
<scenario>.report.htmlja<scenario>.report.json(vt REPORTS.md).kshana --study <suite.toml>käivitab stsenaariumide komplekti üheks.study.jsonja.study.html, näitekskshana --study scenarios/quantum-pnt-demonstrator.suite.toml. - Animation.
kshana <scenario.toml> --animate <svg|html|frames|all>renderdab käivituse aegrea, näiteks--animate htmlfaililscenarios/orbit-sgp4-gps.tomlkirjutaborbit-sgp4-gps.animation.html. Liik, millel puudub diskreetitud ajatelg (näitekssolar-system), lükatakse veaga tagasi; vt ANIMATION.md. - Koostalitluse eksport.
--export <czml|kml|geojson|stk|sigmf|all|list>kirjutab tulemuse teiste tööriistade jaoks: CZML (Cesium Language), KML (Keyhole Markup Language, Google Earthi jaoks), GeoJSON (geographic JSON), STK (Systems Tool Kit) efemeriid või SigMF (Signal Metadata Format) salvestus.--export listütleb, millised vormingud stsenaariumi puhul kehtivad; SigMF kehtib ainult liigilespectrum. Orbiidipakett ekspordib ka--export-sp3,--export-ommja--export-oem(CCSDS, Consultative Committee for Space Data Systems, orbiidisõnumid). Vt INTEROP.md.
Astmestatud harjutused#
Läbida redel. Iga aste on eelmisest raskem ja kaitstavam; etalonlahendused on failis exercises/.
| Aste | Eesmärk | Mida teha | Etalonlahendus |
|---|---|---|---|
| Aste 1 — käivitada ja lugeda | käivitada kaasasolev stsenaarium muutmata kujul ja lugeda üks kvaliteedinäitaja | Käivitada scenarios/clock-holdover.toml; trükkida kvant- ja klassikaline holdover_s. CLI, mänguväljak või üherealine Pythoni kutse. |
exercises/tier1_run.py |
| Aste 2 — muuta ja pühkida | muuta üht parameetrit ja jälgida monotoonset mõju | Pingutada kella spetsifikatsiooni (threshold_ns) või pikendada katkestust ja jälgida holdover-i langust; või kasutada kind = "sweep"/"sweep-nd" selle tabelisse panemiseks. |
exercises/tier2_sweep.py |
| Aste 3 — kvantifitseerida ja kaitsta | Monte Carlo, usaldusvahemikud, reprodutseeritavus ja kaitsetase | Käivitada kella ansambel (runs = N), lugeda vahemikku [p05–p95], kinnitada, et kaks käivitust annavad identse scenario_hash, ning lugeda terviklikkuse / Stanfordi tulemust. |
exercises/tier3_montecarlo.py |
Etalonlahendused kasutavad Pythoni laiendust (maturin develop --features python esimesena). Hoidla juurest käivitatult trükib tier2_sweep.py kiibimõõtmelise aatomkella holdover-i languse väärtuselt 2610 s 20 ns spetsifikatsiooni juures väärtusele 1140 s 5 ns juures.
Soovite värskeid andmeid?#
Nende õpetuste põhiarvud töötavad täielikult hoidlas juba olevatest stsenaariumidest. Midagi ei tooda alla, mis hoiab need reprodutseeritavad ja turvalised pideva integratsiooni (CI) käitamiseks. „Laiendamise“ harjutuste jaoks saab tõmmata reaalajaandmeid:
- GPS kaherealised elemendikomplektid (TLE-d) (orbiidikonstellatsiooni värskendamiseks): https://celestrak.org/NORAD/elements/gp.php?GROUP=gps-ops&FORMAT=tle, lihttekstiga 3-realised elemendikomplektid (nimi + rida 1 + rida 2). Abiline:
scripts/fetch_tles.sh. Avaandmed (USA kosmosejõudude 18. kosmosekaitse eskadrilli kataloog, edasi jaotatud Celestraki poolt, dr T. S. Kelso). - SGP4 (Simplified General Perturbations 4) kontrollimise sõltumatu etalon (juba kaasatud, mitte uuesti tõmmata): AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 „Revisiting Spacetrack Report #3“ testvektorid, https://celestrak.org/publications/AIAA/2006-6753/, kasutab
tests/sgp4_verification.rs; vtdocs/SGP4-VALIDATION.md. - Kella stabiilsuse seoste sõltumatu etalon: 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(τ)↔faasi seosed õpetuse 2 taga.