Maskin- og sensorinput (0,38)
Læsere, der bringer andre modtagere, solvere og sensorer ind i typen receiver-trust. Alle er skrivebeskyttede: rene funktioner på bytes eller tekst, der returnerer den samme tidslinje som UBX-, RINEX-, Android- og NMEA-læserne, og som springer ødelagte poster over og tæller dem i stedet for at fejle. Alt her er MODELLED: formaterne er læst fra offentlig dokumentation, og intet resultat er valideret mod en ekstern reference ud over det, der er angivet.
Vejledende software. Ikke typegodkendt navigationsudstyr. Operatøren er fortsat ansvarlig for fartøjets sikre navigation.
RTKLIB .pos (format = "rtklib-pos")#
Løsningsfilen, som RTKLIB's rnx2rtkp og RTKPOST skriver. Læst: tiden (kalender yyyy/mm/dd hh:mm:ss.sss eller GPS-uge og sekunder i ugen), positionen (breddegrad og længdegrad i grader med højde eller ECEF X/Y/Z konverteret til geodætisk) og antallet af satellitter. Tidsskalaen i kolonneoverskriften (GPST, UTC, JST) bæres i etiketten. Filer med grader-minutter-sekunder afvises. Linjer, der begynder med %, er headerlinjer.
NovAtel OEM7 (format = "novatel")#
ASCII-logs (#BESTPOSA,...*crc) og binære logs (AA 44 12-header), frit blandet. Layoutene følger den offentlige OEM7-dokumentation (docs.novatel.com): meddelelsesheaderne, 32-bit CRC og felttabellerne for tre logs. Poster, hvis CRC ikke stemmer, springes over og tælles.
| Log | ID | Brugt |
|---|---|---|
BESTPOS |
42 | løsningsstatus (kun SOL_COMPUTED giver en positionsbestemmelse), breddegrad, længdegrad, højde over middelhavets overflade plus undulation (positionsbestemmelsens højde er ellipsoidal), brugte satellitter |
RANGE |
43 | C/No pr. signal (dB-Hz); system fra sporingsstatusbit 16-18, signaltype fra bit 21-25 |
RXSTATUS |
93 | modtagerstatusbit 15 (jammer opdaget) bliver epokens self_report (jamming 2 markeret, 1 ikke; RXSTATUS har intet spoofing-flag), sammenlignet med Kshanas alarmer af receiver-self-report; de 1 hjælpebit for jammer (RF1-RF6) returneres i NovatelRead.status |
CRC-rutinen blev kontrolleret mod den CRC, som dokumentationen angiver for sit eget BESTPOSA-eksempel (citeret, ikke gengivet ordret); testene bruger selvskrevne linjer. Ikke læst: forkortet ASCII, andre logs. Jammer-flaget er modtagerens egen rapport, ikke Kshanas fund; at det stemmer med Kshanas monitorer er ikke validering.
GNSS-SDR (format = "gnss-sdr")#
Se integrations/gnss-sdr/README.md. NMEA- og RINEX-output fra GNSS-SDR kan allerede læses med nmea og rinex; UDP-strømmene Monitor og PVT-monitor (Protocol Buffers) videresendes som JSON-linjer af relay.py og læses med gnss-sdr.
IMU ([log.imu])#
format = "csv": en overskriftsrække med kolonnenavnene, derefter én måling pr. række. Kolonner (i vilkårlig rækkefølge, navne uden forskel på store og små bogstaver): t_s sekunder efter modtagerlogens ur, gx, gy, gz drejningshastighed i rad/s, ax, ay, az specifik kraft i m/s². format = "euroc": EuRoC MAV-layoutet imu0 data.csv (#timestamp [ns], w_RS_S_x/y/z [rad s^-1], a_RS_S_x/y/z [m s^-2]); den første måling er t_s = 0. Rækker, der ikke kan fortolkes, og rækker, hvis tid ikke vokser, springes over. Se RECEIVER-TRUST.md for, hvordan gyroens kurs bruges.
IMU i de hybride scenarier og fusionsscenarierne (kshana imu-fit)#
Scenarierne hybrid og fusion (UKF med 17 tilstande) er simuleringer: de tager sensorstøjparametre ([accel_quantum], [accel_classical]: bias, q_va, gyro_bias, q_arw, bias_instability), ikke en målt serie. imu-fit aflæser disse parametre ud fra en IMU-log i hvile, så et scenarie kan køres med den sensor, du faktisk har:
kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu # prints the TOML table
kshana imu-fit still.csv --axis z --expected-mean 9.80665 --json # whole report
Metode: den overlappende Allan-deviation af det integrerede signal (allan::overlapping_adev_curve): q_va = (sigma(tau0) sqrt(tau0))^2, det samme for z-gyroen (q_arw), bias og gyro_bias som middelværdierne og bias_instability som kurvens minimum, når kurven vender opad efter det. q_aa tilpasses ikke (den kræver en log, der er langt længere end gulvet). Rapporten angiver logens rate og spændvidde samt den tidlige Allan-hældning for hver kanal (omkring -0.5, hvor hvid støj dominerer); en log, der ikke er i hvile, eller som er for kort (under 2000 målinger) eller har ujævn sampling, afvises eller giver parametre, som hældningerne markerer. Tabellens proveniens nævner logens SHA-256. MODELLED: estimatoren er kontrolleret på syntetiske hvidstøjlogs med kendte koefficienter (genfundet inden for 10 %), ikke mod en ekstern uafhængig reference. Tilgængelig i CLI, Python (imu_fit), WebAssembly (imu_fit), MCP (fit_imu_log) og pluginet (/kshana-fit-imu).
RTCM 3 MSM4 og MSM7 (format = "rtcm3")#
En bytestrøm af RTCM 3-rammer (en basestations eller en modtagers observationsoutput). Læses: MSM4- og MSM7-beskeder (GPS 1074/1077, GLONASS 1084/1087, Galileo 1094/1097, SBAS 1104/1107, QZSS 1114/1117, BeiDou 1124/1127, NavIC 1134/1137): epoken og bærebølge-til-støj-forholdet for hver signalcelle (MSM4: 6 bit, dB-Hz; MSM7: 10 bit, 1/16 dB-Hz), som er det, C/N0-monitorerne har brug for. Felterne for pseudorange og fase springes over og bruges ikke, så RTCM giver tillidsmonitorerne C/N0 og intet andet; der er ingen position i MSM. Rammer med en forkert CRC-24Q springes over og tælles.
Hvor layoutet kommer fra. Ikke fra RTCM-standarden (et dokument, man skal betale for, og som ikke er brugt): men fra den åbne dekoder pyrtcm 1.2.0, BSD 3-Clause, hvis licens og meddelelse findes i NOTICE (ejerbeslutning af 18 okt. 2026: "brug åbne dekodere"). pyrtcm oplyser, at dens tabeller følger RTCM 10403,3; Kshana bygger på de offentliggjorte tabeller under pyrtcms licens og fremsætter ingen påstand om standarden. Tid: MSM har ingen uge, så mærkerne læses GPS TOW <s>; GLONASS-epoker (Moskva-tid) flyttes til GPS-tid med GPS-UTC = 18 s (værdien siden 2017-01-01).
Kontrolleret mod: CRC-24Q's katalogkontrolværdi (123456789 giver 0xCDE703) og, som en engangskontrol under udviklingen, pyrtcms egen dekoder på de samme selvskrevne rammer (samme C/N0). Prøvefilerne er selvskrevne; ingen optagelse er taget fra en virkelig modtager, så læseren er MODELLED, indtil den har læst en.