Masintõlge, mida emakeelne kõneleja pole üle vaadanud. Võrdlusallikaks on ingliskeelne versioon.

Compliance ja test benchMuuda GitHubisSource: docs/TEST-BENCH.md

Vastuvõtja käitamine eksporditud stsenaariumi vastu

Vastuvõtjatootja, kellel on laboratoorne GNSS simulaator, saab selle kaudu taasesitada Kshana stsenaariumi sõiduki liikumise, salvestada, mida katsetatav vastuvõtja teeb, ja hinnata seda logi käsuga kshana receiver-trust enne käivitust esitatud sündmuste vastu. Kshana annab liikumise, sündmuste ajad ja hindamise. See kirjutab ühtegi signaali ei: miski siin eksporditu ei sünteesi, modelleeri ega edasta raadiosageduslikku ega baasriba lainekuju ning eksporditud sündmus on sildistatud ajavahemik, mitte retsept häire tekitamiseks. Simulaator ja selle operaator annavad signaalid ning operaator vastutab selle eest, et neid käitatakse ainult seal, kus see on lubatud (juhtmega või varjestatult, simulaatori enda ohutusjuhiste järgi).

See leht on meetod. See ei avalda tulemusi.

1. Eksport#

kshana bench-export scenarios/gnss-ins.toml --out run1 --epoch 2025-03-01T10:00:00Z

Kehtib liigile gnss-ins (sõiduprofiil asendiga; navigatsiooniseisundi katkestused on sündmused) ning liikidele jamming ja gnss-sim (paigalseisev vastuvõtja stsenaariumi kestuse jooksul; stsenaariumi jamming segaja on üks sündmus kogu käivituse jooksul). Teised liigid ütlevad, miks neil sõiduki trajektoori ei ole. --epoch on liikumise nullaja UTC hetk (vaikimisi 2024-01-01T00:00:00Z); stsenaariumidel ei ole sõiduki liikumise jaoks oma kalendrikuupäeva. See peab olema tegelik UTC hetk, YYYY-MM-DDTHH:MM:SS (lõpetav Z on lubatud), aastaga vahemikus 2000 kuni 2099 ja iga väli vahemikus; kõik muu lükatakse tagasi. Väljund on sama stsenaariumi ja epohhi korral bait-baidilt identne.

Fail Sisu
run1.motion.csv üks rida näidise kohta: time_s, Maaga seotud x_m,y_m,z_m, vx_m_s,vy_m_s,vz_m_s, geodeetiline lat_deg,lon_deg,h_m, heading_deg,pitch_deg,roll_deg, utc, kshana_row
run1.motion.json selle CSV epohh, raamistikud, ühikud, veerud ja edasi-tagasi tolerantsid
run1.nmea NMEA 0183 laused GGA ja RMC näidise kohta, koos kontrollsummadega
run1.waypoints.txt RESOLUTION: <ms> rida ja siis longitude,latitude,altitude read (kirjutatakse ainult siis, kui iga näidiste intervall on sama täisarv millisekundeid; kui see on välja jäetud, ütleb käsk põhjuse standardveas)
run1.events.csv label,kind,onset_s,end_s,description
run1.events.toml samad sündmused [[events]] plokkidena stsenaariumi receiver-trust jaoks
run1.conditions.json käivitus dokumendina kshana.test-conditions/1 salvestuse receiver-log jaoks: sündmused öeldud tõena, kusjuures recording.path, recording.sha256, receiver.*, iga sündmuse type ja võimsus jäetakse laboratooriumile täitmiseks

Raamistikud ja kokkulepped#

  • Asukoht: WGS 84, Maaga seotud (ECEF: x läbi ekvaatori peameridiaanil, z läbi pooluse); lat_deg, lon_deg, h_m annavad sama asukoha geodeetiliselt, h_m ellipsoidi kohal.
  • Kiirus: Maaga seotud teljed, Maa suhtes.
  • Attitude: heading_deg kellaosuti suunas tõelisest põhjast vahemikus [0, 360), pitch_deg nina üles positiivne, roll_deg parem tiib alla positiivne; kursi-tõusunurga-ristlemise (3-2-1) järjekord kohalikust põhja-ida-alla raamistikust keha telgedeni x ette, y paremale, z alla. Paigalseisev allikas kirjutab nullid. NMEA ja teekonnapunktide tekst asendit ei kanna.
  • Kurss on keha pööre ümber vertikaaltelje, mitte liikumissuund. Sõiduprofiilis gnss-ins pöörleb keha ruutlainena, samal ajal kui kiirus järgib, nii et kurss ja maapealne liikumissuund võivad erineda kümnete kraadide võrra (kuni umbes 77 kraadi kaasasolevas stsenaariumis automotive-urban-canyon). NMEA RMC kurss on maapealne liikumissuund, kiirusvektori suund, seega näevad simulaator, mis loeb kursi liikumisfailist, ja simulaator, mis loeb kursi NMEA failist, erinevaid nurki. CSV maapealne liikumissuund on selle kiiruse atan2(v_east, v_north), pööratud põhja-ida-alla raamistikku.
  • Kõrgus järgib stsenaariumi. Stsenaariumi gnss-ins puhul on h_m liigi enda puutujatasandil sammutamine selle tõe osas ja seda ei hoita konstantsena (umbes 7 m stsenaariumi automotive-urban-canyon 180 s jooksul); see on stsenaariumi liikumine, kirjutatud sellisena, nagu see on.
  • NMEA GGA kohatäited. Fiksi kvaliteet (1), kasutatud satelliidid (12) ja HDOP (1,0) kirjutatakse ainult selleks, et lause oleks korrektselt vormistatud. Need ei ütle midagi stsenaariumi geomeetria ega ühegi vastuvõtja oleku kohta.
  • Time: time_s pärast epohhi, UTC, liigsekundeid ei modelleerita.
  • NMEA kõrgused on ellipsoidsed. GGA kõrgus sisaldab ellipsoidset kõrgust ja geoidi eraldust kirjutatakse väärtusena 0,0. Simulaator, mis käsitleb kõrgust kui kõrgust keskmisest merepinnast, paigutab sõiduki kohaliku geoidi lainetuse võrra valesti.
  • Edasi-tagasi tolerantsid (testitud iga faili tagasi lugemisega): CSV asukoht 0,1 mm, laius- ja pikkuskraad 1e-9 kraadi, kiirus 0,1 mm/s, nurgad 1e-6 kraadi; NMEA horisontaalne asukoht 5 mm, kõrgus 1 mm, kiirus 0,001 sõlme, kurss 0,001 kraadi.

Failide laadimine simulaatorisse#

Laboratoorsed simulaatorid erinevad ja see hoidla ei reprodutseeri ühegi simulaatori kasutusjuhendit. Kontrollige, milliseid ülaltoodud vorminguid teie oma loeb, ja selle esitatud nõudeid:

  • Paljud liikumisimportijad eeldavad fikseeritud uuendussagedust, tavaliselt 10 Hz. Stsenaarium gnss-ins sammub 0,1 s sammuga; paigalseisva stsenaariumi puhul määrata [time] step_s sagedusele, mida teie simulaator soovib.
  • Mõned importijad jätavad vahele näidised, mis jäävad täissekundite vahele, või ignoreerivad ajaveergu ja kasutavad ridade järjekorda. Alustada liikumist täissekundil ja hoida ruudustik korrapärane.
  • CSV importija, mis laseb veerge vastendada, saab lugeda faili run1.motion.csv otse: valida Maaga seotud või geodeetilised veerud ja määrata nende ühikud failist run1.motion.json. Kümnendkohtade kärpimine tekitab valekiirendust, seega säilitada kirjutatud täpsus.
  • Fail on ainult liikumine. Konstellatsioon, häire ja vastuvõtja esiots seadistatakse simulaatoris ning ajastatakse failis run1.events.csv olevate sündmustega.

Kshana ei kirjuta ühtegi tarnija skriptiliidest.

Kontrollitud ühe avatud lähtekoodiga simulaatori lugejatega

Programmi gps-sdr-sim (MIT, commit 28ca29a6) liikumislugejatele anti kaheksa kaasasoleva stsenaariumi eksport. Iga lugeja tagastas eksporditud trajektoori (tests/testbench_gpssdrsim_oracle.rs, eelregistreeritud failis xval/testbench-gpssdrsim/PREREGISTRATION.md):

gps-sdr-sim valik Anda sellele Halvim erinevus CSV-st
-g (NMEA GGA) run1.nmea nagu kirjutatud 1,2 mm
-x (aeg, laius, pikkus, kõrgus) tail -n +2 run1.motion.csv | cut -d, -f1,8,9,10 0,15 mm
-u (aeg, x, y, z) tail -n +2 run1.motion.csv | cut -d, -f1-4 täpne
  • Ärge andke käsule -u täielikku liikumise CSV-d. Selle lugeja hoiab 100 märki rea kohta ja CSV rida on umbes 160 märki, nii et iga rida loetakse kahe näidisena. Päiserida loetakse veel üheks näidiseks, milles pole numbreid.
  • gps-sdr-sim hoiab kuni 3000 näidist, 300 s selle fikseeritud 10 Hz juures, ja ignoreerib ajaveergu. Eksport gnss-ins sammub täpselt 0,1 s sammuga. Pikemad stsenaariumid, näiteks 20-minutiline gnss-ins-maritime, loetakse ainult nende esimese 300 s ulatuses.
  • See kontrollib, et failid loetakse sellisena, nagu need on kirjutatud. See ei kontrolli stsenaariumi füüsikat ega midagi, mida simulaator edastab.

2. Öelda enne käivitust, mida hinnata#

Sündmuste fail annab stsenaariumi defineeritud intervallid. Kopeerida run1.events.toml stsenaariumisse receiver-trust, lisada kõik prognoosid, mida soovite kontrollida, ning fikseerida monitooride läved ja tolerantsid enne vastuvõtja käivitamist. Neid ei tohi pärast logi nägemist kohandada; stsenaarium, läved ja logi SHA-256 on kõik tulemuse räsis.

kind = "receiver-trust"
name = "bench session 1"

[log]
format = "ubx"                 # ubx, rinex, android or nmea
path = "receiver-log.ubx"

[monitors]
calibration_s = 60.0

# paste run1.events.toml here, and shift onsets by the log offset (step 4)
[[events]]
label = "gnss-denied-1"
kind = "other"
onset_s = 100.0
end_s = 160.0

Eksporditud sündmused kannavad stsenaariumi enda liiki: stsenaariumi jamming segaja on jamming; navigatsiooniseisundi katkestus on other, sest stsenaarium väidab, et GNSS ei olnud saadaval, mitte kuidas. Muuta stsenaariumi kind-id vastavaks sellele, mida simulaatoris seadistate.

3. Käivitada vastuvõtja#

Käivitada vastuvõtja ja selle logija, käivitada simulaatori stsenaarium liikumisfailiga ning lasta käivitusel katta kalibreerimisintervall, iga sündmus ja varu pärast viimast. Hoida vastuvõtja enda logi alles (UBX, RINEX 3 vaatlused, Androidi logija CSV või NMEA satelliidi olekulausetega). Logi, milles pole satelliidipõhist signaali tugevust, saab siiski hinnata vastuvõtja enda asukoha alusel, kuid kandja ja müra suhte monitoorid vajavad seda.

4. Joondada kellad#

receiver-trust loeb sündmuste aegu vastuvõtja logi esimesest epohhist; liikumisfail loeb oma esimesest näidisest. Kui logi algab d sekundit enne liikumise esimest näidist, lisada d igale onset_s ja end_s. Salvestada nihe ja kuidas seda mõõdeti ning märkida see stsenaariumi name või kommentaari, sest vale nihe liigutab iga hinnet. Ainult sündmuste ajad ei ütle nihet; kasutada simulaatori stsenaariumi alguse märki või vastuvõtja enda ajatempleid.

5. Hindamine#

kshana receiver-trust bench-session.toml

kirjutab bench-session.result.json, .trust.csv ja .trust.svg. Iga sündmuse kohta annab tulemus valehäired enne algust, esimese häire ja selle monitoorid, latentsuse ning tulemuse (detected, late, missed, not-evaluable), pluss prognoositud ja vaadeldud kandja ja müra suhte languse, kui te prognoosi esitasite. Lahknevust raporteeritakse, seda ei häälestata kunagi ära. Vt RECEIVER-TRUST.md.

Et näha, milliseid avalikke raamistiku ridu seanss toetab tõendeid (supports evidence for):

kshana compliance-report bench-session.result.json

Vt compliance/README.md. See aruanne kirjeldab tõendeid käivitustes, mille te sellele annate; see ei tee ühtegi järeldust vastuvõtja ega ühegi raamistiku kohta.

Pärast hindamist seob kshana evidence round-trip neli kirjet kokku: eksporditud stsenaarium, laboratooriumi katsetingimused, vastuvõtja logi ja hinne. Täita run1.conditions.json (logi tee ja SHA-256, katsetatav vastuvõtja, iga sündmuse tüüp ja esitatud võimsus), seejärel:

kshana evidence keygen --out lab.key
kshana evidence round-trip bench-session.toml --scenario scenarios/gnss-ins.toml \
    --conditions run1.conditions.json --from 0 --to 180 --key lab.key --out round-trip-pack
kshana evidence verify round-trip-pack --pubkey <signer public key>

round-trip-pack/config.json kannab plokki round_trip (kshana.round-trip/1) koos scenario_sha256, conditions_hash, log_sha256 ja hindega (tuvastatud sündmused hinnatavatest, esimene häire), mida katavad manifesti räsid ja allkiri. Käsk lükkab tagasi paketi, mille tingimused ja hindamissündmused lähevad vastuollu või mille esitatud logi räsi ei ole logi oma. Nagu iga tõendipakett, on see tehniline kirje, mitte õiguslik arvamus.

Läbitöötatud näide: gps-sdr-sim kirjutab faili#

See näide kasutab avatud lähtekoodiga simulaatorit gps-sdr-sim ainult selleks, et kirjutada baasriba fail eksporditud liikumisest. Kshana ei edasta ning miski sellel lehel ei automatiseeri selle faili taasesitamist raadio kaudu. Kui teie laboratoorium esitab sellise faili vastuvõtjale, on see teie operaatori vastutus ja seda tehakse ainult seal, kus see on lubatud (kaabliga või varjestatult, simulaatori ja raadio enda ohutusjuhiseid järgides), ning Kshana seda ei dokumenteeri ega mähi.

kshana bench-export scenarios/gnss-ins.toml --out run1 --epoch 2025-03-01T10:00:00Z
tail -n +2 run1.motion.csv | cut -d, -f1-4 > run1.xyz          # time, x, y, z (see above)
gps-sdr-sim -e brdc0600.25n -u run1.xyz -b 8 -o run1.iq        # writes a file, nothing else

Mida laboratoorium siis ka failiga run1.iq ei teeks, toimub väljaspool Kshanat. Vastuvõtja enda logi, olenemata sellest, kuidas see saadi, on see, mida samm 5 hindab ja samm 6 seob. Kshana enda eksportide failid ja kontrollid on testitud ainult sünteetilistel andmetel (tests/round_trip_pack.rs); siin ei väideta ühtegi laboratoorset käivitust.

Mida see meetod ei tee#

  • See ei tekita signaali ega ütle, millist häiret simulaator peaks genereerima. Sündmused ütlevad, millal, mitte mida.
  • Üks seanss on üks andmepunkt. Tulemus kirjeldab seda logi selle konfiguratsiooni all ega ütle midagi teiste vastuvõtjate, püsivara, antennide ega tegeliku häire kohta.
  • Kõrguseid, kiirusi ja ajajoondust peab operaator simulaatori suhtes kontrollima; eksport esitab oma kokkulepped ja tolerantsid ega rohkemat.