Maskinoversættelse, ikke gennemgået af en modersmålstalende. Engelsk er referencen.

Kom i gangRedigér på GitHubKilde: docs/tutorials/README.md

Vejledninger

Praktiske, gennemarbejdede eksempler, der fører dig fra “kør et medfølgende scenarie” til “kvantificér og forsvar et resultat.” Hvert tal i de tre tutorials er et rigtigt motoroutput, forankret i en ekstern (ikke-cirkulær) autoritativ uafhængig reference og fastlåst af en integrationstest (tests/tutorials.rs), så en tutorial aldrig i det skjulte kan glide væk fra det, motoren faktisk gør. Hvis en tutorial siger, at det optiske ur holder 6600 s, får testen buildet til at fejle den dag, det holder op med at være sandt.

Kshana er en simulator til positionering, navigation og tidssynkronisering (PNT). Tutorials bruger nogle få flere forkortelser, hver især skrevet ud, hvor den først optræder: GNSS (Global Navigation Satellite System), GPS (Global Positioning System), CLI (kommandolinjegrænseflade) og TOML (Tom's Obvious Minimal Language, scenariernes filformat).

Ny i projektet? Læs først begrebsintroduktionen og ordlisten, og vend så tilbage hertil.

De tre gennemarbejdede eksempler#

# Tutorial Hvad du lærer Scenarietype Sværhedsgrad ~Tid
1 Min første bane: hvor er GPS-satellitterne propagér en rigtig GPS-konstellation, aflæs tilgængelighed, præcisionsfortynding for position (PDOP) og positionsnøjagtighed, og eksportér, hvor satellitterne faktisk er (SP3, det præcise baneformat) orbit begynder 15 min
2 Ur-holdover: hvor længe kan du holde dig i gang kør en GNSS-nægtet ur-holdover, aflæs kvalitetsmålet for tid og forstå vækstloven √(q_wf·T) bag det clock begynder 20 min
3 Kvante mod klassisk GNSS-modstandsdygtighed slutstenen: en spoofing-detektor (spoof) og en komplet fusioneret PNT-suite (hybrid), og hvordan du aflæser sikkerhed / integritet / dødregning sammen spoof + hybrid mellem 35 min

Notebooks#

Kørbare Jupyter-notebooks på syntetiske data og offentlige elementsæt, som kun ligger i repositoriet, findes i notebooks/:

Notebook Hvad du lærer
Fartøjstillid og træning frembring en syntetisk NMEA-strøm fra en bro med en scriptet hændelse, og vurdér den derefter med fartøjets tillidsmonitorer (vejledende, ikke typegodkendt navigationsudstyr)
Interferenskort og eksponering på ruten hvor navigationsdata har set forringede ud, og hvor meget af en rute det berører
Compliance-kortlægning og eksport til testbænk hvilke rækker i offentlige rammeværker et sæt kørsler leverer belæg for (aldrig at et rammeværk er opfyldt), og et scenaries bevægelse og hændelser eksporteret som tekst til en GNSS-simulator i laboratoriet (der skrives intet signal)
Kvante mod klassisk GDOP den samme konstellationsgeometri med en kvante- og en klassisk sensor, sammenlignet ved præcisionsfortynding
Himmelgeometri under en skyline de satellitter, et sted ser under en gade- eller kajskyline, deres DOP og fejlellipse, en dateret himmel ud fra elementsæt og en Monte Carlo med seed mod kovariansen (MODELLED)

Sådan kører du en tutorial#

Hver tutorial kører det samme scenarie på tre måder; vælg den, der passer dig. De kalder alle den ene motor, så tallene er identiske (spejler afsnittet Brug i README).

Kommandolinje. CLI'en vælger efter scenariets felt kind og skriver <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html og <scenario>.report.json ved siden af inputtet (JSON er JavaScript Object Notation, SVG Scalable Vector Graphics, HTML HyperText Markup Language). Nogle få kinds udgiver også en reproducerbarhedstabel som <scenario>.table.csv (kommaseparerede værdier): realtime-frame-eop, lunar-time-budget, lunar-jamming, leo-navmsg, telecom-timing og moonlight-service-volume, når der er angivet et eksportsted. Ingen af de tre tutorials hører til dem, så du ser ikke den fil her.

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

cargo run -- bygger CLI'en fra dette checkout. Med en installeret binær (cargo install kshana) er den samme kommando kshana scenarios/orbit-sgp4-gps.toml. Uden et checkout er de fleste medfølgende scenarier indbygget i den binære: kshana example viser dem (og nævner de få, der ikke er indbygget, med begrundelsen), og kshana example orbit-sgp4-gps > orbit-sgp4-gps.toml skriver ét ud: den kopi af scenarios/orbit-sgp4-gps.toml, som den binære blev bygget med.

Python. Byg udvidelsen fra dette checkout én gang med maturin i et aktivt virtuelt miljø, og kald derefter 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 installerer i stedet det udgivne wheel. Det kan hænge bagud i forhold til dette checkout: json.loads(kshana.list_kinds()) fortæller dig, hvilke scenarietyper dit build har.

Legeplads i browseren. Ingen installation: åbn Studio, vælg et scenarie, redigér parametrene og aflæs resultatet. Intet uploades; motoren kører hos klienten som WebAssembly.

Tutorials citerer CLI'en, men hver kommando har en tilsvarende Python- og legepladsvariant ovenfor. Hvert resultat kan gengives ud fra scenario + seed + engine version: kør det to gange, og du får bit-identisk output.

Kommenterede undervisningsscenarier#

For hvert funktionsområde er der én kraftigt kommenteret .toml under scenarios/: en undervisningskopi af et kanonisk scenarie, hvor hvert felt er forklaret i linjen, den anførte uafhængige reference er nævnt, og den forventede opsummering på én linje er optaget som en kommentar # expected:. Feltværdierne er identiske med forældrenes i repoets mappe scenarios/ på øverste niveau (tests/tutorials.rs sammenligner den parsede TOML), så det dokumenterede output forbliver sandt. De gyldne hashes er heller ikke rørt: en kommentar ændrer aldrig et scenaries hash.

Domæne Undervisningsfil Type Afledt af
Urets holdover scenarios/clock.toml clock scenarios/clock-holdover.toml
Bane og geometri scenarios/orbit.toml orbit scenarios/orbit-sgp4-gps.toml
Integritet (RAIM, receiver autonomous integrity monitoring) scenarios/integrity.toml integrity scenarios/integrity-raim.toml
Sikkerhed (spoofing) scenarios/security.toml spoof scenarios/spoof-attack.toml
Hybrid PNT scenarios/hybrid.toml hybrid scenarios/hybrid-pnt.toml
Inertial dødregning scenarios/inertial.toml inertial scenarios/imu-deadreckoning.toml
Tidsoverførsel scenarios/timetransfer.toml timetransfer scenarios/timetransfer.toml
GNSS-måledomæne scenarios/gnss-sim.toml gnss-sim scenarios/gnss-sim-raim.toml

Undervisningsfilen for sikkerhed bruger kind = "spoof" indeni: kvalitetsmålet for sikkerhed (1 − P_md, én minus sandsynligheden for en overset detektion) frembringes af spoof-pakken. Filnavnet følger funktionen (sikkerhed), mens kind følger pakken (spoof). Filens header gør opmærksom på det.

Det fulde katalog over scenarietyper#

Motoren vælger efter scenariets kind. Tabellen nedenfor viser de mest brugte kinds (de otte tutorial-områder ovenfor og deres nærmeste naboer). Den er ikke den komplette mængde: src/api.rs::list_scenario_kinds() returnerer alle 92 indbyggede kinds. Den funktion (tilgængelig som list_kinds() i bindingerne til Python og WebAssembly (WASM) og som kshana kinds --json på kommandolinjen) er det autoritative, altid opdaterede katalog, og SCENARIOS.md er dens genererede oversigt, ét afsnit pr. kind med de påkrævede og valgfrie TOML-felter. tests/tutorials.rs::tutorial_scenarios_use_real_kinds sikrer, at hver kind, en tutorial dokumenterer, er en rigtig dispatch-kind, så intet i denne tabel kan nævne en kind, der ikke findes.

Type Hvad det gør
clock Ur-holdover mod specifikation; valgfrit Monte Carlo-ensemble (runs > 1).
inertial 1-DOF (én frihedsgrad) inertial dødregning under et GNSS-udfald.
orbit GNSS-tilgængelighed + præcisionsfortynding (DOP) ud fra en konstellation (Walker / two-line elements / RINEX, Receiver Independent Exchange-formatet).
integrity Snapshot / solution-separation / ARAIM (advanced RAIM) med horisontale og vertikale beskyttelsesniveauer (HPL/VPL) + Stanford-diagram.
lunar-integrity ARAIM-gennemløb for beskyttelsesniveau ved månens sydpol mod et LunaNet-relæsæt.
timetransfer Optisk mod radiofrekvent (RF) tovejs overførsel af tid/frekvens.
hybrid Slutsten for hybrid PNT: ur + inertimåleenhed (IMU) + støtte fra tidsoverførsel.
fusion Fælles Kalman-sensorfusion til PNT over de samme hybride input.
gnss-ins Løst og tæt koblet GNSS/INS (inertialt navigationssystem) fejltilstands-extended Kalman-filter.
gnss-sim Pseudoafstandssimulering i måledomænet (Klobuchar-ionosfære, Saastamoinen/Niell-troposfære) + RAIM.
jamming Jamming med link-budget: forhold mellem jammer og signal (J/S) → effektiv bærebølge-til-støj-tæthed (C/N₀) → tab af lås.
spoof Stokastisk detektor for tids-spoofing (Neyman–Pearson / χ²₁) med Monte Carlo-sandsynligheder for falsk alarm og oversete detektioner (P_fa/P_md).
sweep 1-D-sweep til afvejningsstudie over en parameter for en urpakke.
sweep-nd Generisk N-D-sweep over en vilkårlig pakke via punkterede TOML-nøgler / JSON-metrikstier.

Ud over tutorials: nyere funktioner#

De tre tutorials holder sig til de klassiske pakker for ur, bane og sikkerhed. Motoren er vokset langt ud over dem. Hver række nedenfor er et medfølgende scenarie, du kan køre, som det er (cargo run -- <file> eller kshana <file>); opsummeringen er den første linje, kshana 0.35.0 udskrev for det den 2026-10-10. I modsætning til tutorial-tallene er disse linjer en optegnelse af én kørsel og ikke fastlåst af tests/tutorials.rs: kør scenariet igen for at få den aktuelle værdi. Resultater angiver selv deres omfang (de fleste har en label), og verifikationsmatrixen angiver, hvilke funktioner der er VALIDATED mod en ekstern uafhængig reference, og hvilke der er MODELLED.

Funktion Scenarie Type Første linje af opsummeringen Læs mere
L-bånd-spektrum og jamming-vandfald 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
Solsystemet ved én epoke 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
Positionering omkring et andet legeme scenarios/europa-surface-pnt.toml body-pnt Positioning around Europa — surface user, 12 relays at 4500 km, 171 epochs SCENARIOS.md
Konstellationsudformning i stor skala 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
Kampagner: kinds kædet på én tidslinje 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
Ét LEO-PNT-system fra ende til anden scenarios/leo-pnt-end-to-end.toml leo-pnt-chain LEO-PNT end to end, generic 1080 km constellation LEO-PNT.md
Fusioneret MEO- + LEO-positionering scenarios/meo-leo-fused-pvt.toml leo-pvt LEO PVT (joint) at 40.42, -3.70 over 1800 s LEO-PNT-FUSION.md
LEO-signaler, gennemløb og navigationsmeddelelser 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 (gennemløbet) LEO-SIGNAL.md, LEO-PASS.md, LEO-NAVMSG.md
PPP-konvergens med et LEO-lag; 5G-positionering 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
Modstandsdygtighed: GNSS jammet, LEO bærer brugeren 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
Vertikaler: bane, søfart, telekommunikation, køretøjer, Arktis scenarios/leo-vertical-rail-maritime.toml (og de andre leo-vertical-*-filer) campaign campaign 49575d27b696 | Railway and maritime with a LEO layer | chain: 3 phases over 2520 s, … CAMPAIGNS.md
Holdover i telekommunikation mod urgrænserne i ITU-T (International Telecommunication Union, Telecommunication Standardization Sector) 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 er lav jordbane og MEO mellemhøj jordbane; PVT er position, hastighed og tid; PPP er præcis punktpositionering; 5G er femte generation af mobilstandarden; TDB er barycentrisk dynamisk tid; JD er juliansk dato; TE er tidsfejl.

CLI'en tilføjer tre outputs oven på enhver kørsel:

  • Rapporter. Hver kørsel skriver <scenario>.report.html og <scenario>.report.json (se REPORTS.md). kshana --study <suite.toml> kører en suite af scenarier ind i én .study.json og .study.html, for eksempel kshana --study scenarios/quantum-pnt-demonstrator.suite.toml.
  • Animation. kshana <scenario.toml> --animate <svg|html|frames|all> gengiver kørslens tidsserie, for eksempel skriver --animate html på scenarios/orbit-sgp4-gps.toml filen orbit-sgp4-gps.animation.html. En kind uden en samplet tidsakse (såsom solar-system) afvises med en fejl; se ANIMATION.md.
  • Interop-eksporter. --export <czml|kml|geojson|stk|sigmf|all|list> skriver resultatet til andre værktøjer: CZML (Cesium Language), KML (Keyhole Markup Language, til Google Earth), GeoJSON (geographic JSON), en STK-efemeride (Systems Tool Kit) eller en SigMF-optagelse (Signal Metadata Format). --export list fortæller, hvilke formater der gælder for et scenarie; SigMF gælder kun for spectrum. Bane-pakken eksporterer også --export-sp3, --export-omm og --export-oem (CCSDS, Consultative Committee for Space Data Systems, banemeddelelser). Se INTEROP.md.

Graderede øvelser#

Arbejd dig igennem stigen. Hvert niveau er sværere og mere forsvarligt end det forrige; referenceløsninger findes i exercises/.

Niveau Mål Hvad du gør Referenceløsning
Niveau 1 — kør og aflæs kør et medfølgende scenarie uændret og aflæs ét kvalitetsmål Kør scenarios/clock-holdover.toml; udskriv holdover_s for kvante mod klassisk. CLI, legeplads eller et Python-kald på én linje. exercises/tier1_run.py
Niveau 2 — redigér og sweep ændr én parameter og iagttag en monoton virkning Skærp urets specifikation (threshold_ns) eller forlæng udfaldet og se holdover falde; eller brug kind = "sweep"/"sweep-nd" til at stille det op i en tabel. exercises/tier2_sweep.py
Niveau 3 — kvantificér og forsvar Monte Carlo, konfidensbånd, reproducerbarhed og et beskyttelsesniveau Kør et urensemble (runs = N), aflæs [p05–p95]-båndet, bekræft, at to kørsler giver en identisk scenario_hash, og aflæs et integritets-/Stanford-resultat. exercises/tier3_montecarlo.py

Referenceløsningerne bruger Python-udvidelsen (først maturin develop --features python). Kørt fra repositoriets rod udskriver tier2_sweep.py chipskala-atomurets holdover faldende fra 2610 s ved en specifikation på 20 ns til 1140 s ved 5 ns.

Vil du have friske data?#

Hovedtallene i disse tutorials kører helt og holdent fra scenarier, der allerede ligger i repoet. Intet hentes, og det er det, der gør dem reproducerbare og sikre at køre i continuous integration (CI). Til øvelserne “udvid det” kan du hente levende data:

  • GPS two-line elements (TLE'er) (opdatér bane-konstellationen): https://celestrak.org/NORAD/elements/gp.php?GROUP=gps-ops&FORMAT=tle, elementsæt i ren tekst med 3 linjer (navn + linje 1 + linje 2). Hjælper: scripts/fetch_tles.sh. Åbne data (katalog fra US Space Force 18th Space Defense Squadron, videredistribueret af Celestrak, Dr T. S. Kelso).
  • Uafhængig verifikationsreference for SGP4 (Simplified General Perturbations 4) (allerede medleveret, hent ikke igen): testvektorerne fra AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 “Revisiting Spacetrack Report #3”, https://celestrak.org/publications/AIAA/2006-6753/, brugt af tests/sgp4_verification.rs; se docs/SGP4-VALIDATION.md.
  • Uafhængig reference for urstabilitetsrelationer: NIST (National Institute of Standards and Technology) Special Publication 1065 (Riley, Handbook of Frequency Stability Analysis), https://tf.nist.gov/general/pdf/2220.pdf, relationerne σ_y(τ)↔fase bag Tutorial 2.