Machine- en sensorinvoer (0,38)
Lezers die andere ontvangers, solvers en sensoren in de soort receiver-trust brengen. Elk is alleen-lezen: pure functies op bytes of tekst die dezelfde tijdlijn teruggeven als de UBX-, RINEX-, Android- en NMEA-lezers, waarbij beschadigde records worden overgeslagen en geteld in plaats van te falen. Alles hier is MODELLED: de formaten zijn uit openbare documentatie gelezen, en geen resultaat is getoetst aan een externe onafhankelijke referentie buiten wat is vermeld.
Adviserende software. Geen typegoedgekeurde navigatieapparatuur. De exploitant blijft verantwoordelijk voor de veilige navigatie van het vaartuig.
RTKLIB .pos (format = "rtklib-pos")#
Het oplossingsbestand dat rnx2rtkp van RTKLIB en RTKPOST schrijven. Gelezen: de tijd (kalender yyyy/mm/dd hh:mm:ss.sss, of GPS-week en seconden van de week), de positie (breedte en lengte in graden met hoogte, of ECEF X/Y/Z omgezet naar geodetisch) en het aantal satellieten. De tijdschaal in de kolomkop (GPST, UTC, JST) wordt in het label meegedragen. Bestanden in graden-minuten-seconden worden geweigerd. Regels die met % beginnen zijn kopregels.
NovAtel OEM7 (format = "novatel")#
ASCII-logs (#BESTPOSA,...*crc) en binaire logs (kop AA 44 12), vrij door elkaar. De indelingen volgen de openbare OEM7-documentatie (docs.novatel.com): de berichtkoppen, de 32-bits CRC en de veldtabellen van drie logs. Records waarvan de CRC niet overeenkomt, worden overgeslagen en geteld.
| Log | ID | Gebruikt |
|---|---|---|
BESTPOS |
42 | oplossingsstatus (alleen SOL_COMPUTED geeft een positiebepaling), breedte, lengte, hoogte boven gemiddeld zeeniveau plus undulatie (de hoogte van de positiebepaling is ellipsoïdaal), gebruikte satellieten |
RANGE |
43 | C/No per signaal (dB-Hz); stelsel uit de trackingstatusbits 16-18, signaaltype uit bits 21-25 |
RXSTATUS |
93 | ontvangerstatusbit 15 (jammer gedetecteerd) wordt de self_report van de epoch (jamming 2 gemarkeerd, 1 niet; RXSTATUS heeft geen spoofingvlag), vergeleken met de alarmen van Kshana door receiver-self-report; de 1 extra jammerbits (RF1-RF6) worden teruggegeven in NovatelRead.status |
De CRC-routine is gecontroleerd tegen de CRC die de documentatie voor haar eigen BESTPOSA-voorbeeld vermeldt (aangehaald, niet geciteerd); de tests gebruiken zelfgeschreven regels. Niet gelezen: verkorte ASCII, andere logs. De jammervlag is de eigen melding van de ontvanger, niet de bevinding van Kshana; overeenstemming met de monitors van Kshana is geen validatie.
GNSS-SDR (format = "gnss-sdr")#
Zie integrations/gnss-sdr/README.md. NMEA- en RINEX-uitvoer van GNSS-SDR wordt al gelezen met nmea en rinex; de UDP-streams van Monitor en PVT-monitor (Protocol Buffers) worden door relay.py doorgegeven als JSON-regels en gelezen met gnss-sdr.
IMU ([log.imu])#
format = "csv": een kopregel die de kolommen benoemt, daarna één sample per rij. Kolommen (in willekeurige volgorde, namen niet hoofdlettergevoelig): t_s seconden op de klok van het ontvangerlog, gx, gy, gz hoeksnelheid in rad/s, ax, ay, az specifieke kracht in m/s². format = "euroc": de indeling van de EuRoC MAV imu0 data.csv (#timestamp [ns], w_RS_S_x/y/z [rad s^-1], a_RS_S_x/y/z [m s^-2]); het eerste sample is t_s = 0. Rijen die niet te parsen zijn en rijen waarvan de tijd niet toeneemt, worden overgeslagen. Zie RECEIVER-TRUST.md voor hoe de gyrokoers wordt gebruikt.
IMU in de scenario's hybrid en fusion (kshana imu-fit)#
De scenario's hybrid en fusion (UKF met 17 toestanden) zijn simulaties: zij nemen parameters voor sensorruis ([accel_quantum], [accel_classical]: bias, q_va, gyro_bias, q_arw, bias_instability), geen gemeten reeks. imu-fit leest die parameters af uit een stilstaand IMU-log, zodat een scenario kan worden uitgevoerd met de sensor die u werkelijk hebt:
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
Methode: de overlappende Allan-deviatie van het geïntegreerde signaal (allan::overlapping_adev_curve): q_va = (sigma(tau0) sqrt(tau0))^2, hetzelfde voor de z-gyro (q_arw), bias en gyro_bias als de gemiddelden, en bias_instability als het minimum van de curve wanneer de curve daarna omhooggaat. q_aa wordt niet gefit (het vergt een log die veel langer is dan de ondergrens). Het rapport bevat de samplefrequentie en de duur van het log en de vroege Allan-helling van elk kanaal (ongeveer -0.5 waar witte ruis domineert); een log dat niet stilstaat, of te kort is (minder dan 2000 samples) of ongelijk is bemonsterd, wordt geweigerd of geeft parameters die de hellingen markeren. De herkomst van de tabel noemt de SHA-256 van het log. MODELLED: de schatter is gecontroleerd op synthetische logs met witte ruis en bekende coëfficiënten (teruggevonden binnen 10 %), niet aan een externe onafhankelijke referentie. Beschikbaar in de CLI, Python (imu_fit), WebAssembly (imu_fit), MCP (fit_imu_log) en de plug-in (/kshana-fit-imu).
RTCM 3 MSM4 en MSM7 (format = "rtcm3")#
Een bytestroom van RTCM 3-frames (de observatie-uitvoer van een basisstation of een ontvanger). Gelezen: MSM4- en MSM7-berichten (GPS 1074/1077, GLONASS 1084/1087, Galileo 1094/1097, SBAS 1104/1107, QZSS 1114/1117, BeiDou 1124/1127, NavIC 1134/1137): de epoch en de draaggolf-ruisverhouding van elke signaalcel (MSM4: 6 bits, dB-Hz; MSM7: 10 bits, 1/16 dB-Hz), wat de C/N0-monitors nodig hebben. Pseudorange- en fasevelden worden overgestapt, niet gebruikt, dus RTCM geeft de vertrouwensmonitors C/N0 en niets anders; in MSM zit geen positie. Frames met een slechte CRC-24Q worden overgeslagen en geteld.
Waar de indeling vandaan komt. Niet uit de RTCM-standaard (een betaald document, niet geraadpleegd): uit de opensourcedecoder pyrtcm 1.2.0, BSD 3-Clause, waarvan de licentie en de vermelding in NOTICE staan (besluit van de eigenaar van 18 okt 2026: "use open decoders"). pyrtcm stelt dat haar tabellen RTCM 10403,3 volgen; Kshana vertrouwt op de gepubliceerde tabellen onder de licentie van pyrtcm en doet geen uitspraak over de standaard. Tijd: MSM draagt geen week, dus labels luiden GPS TOW <s>; GLONASS-epochs (Moskouse tijd) worden naar GPS-tijd verplaatst met GPS-UTC = 18 s (de waarde sinds 2017-01-01).
Gecontroleerd aan: de controlewaarde uit de catalogus voor CRC-24Q (123456789 geeft 0xCDE703) en, eenmalig tijdens de ontwikkeling, de eigen decoder van pyrtcm op dezelfde zelfgeschreven frames (dezelfde C/N0). De fixtures zijn zelfgeschreven; er is geen opname van een echte ontvanger gemaakt, dus de lezer is MODELLED totdat zij er een heeft gelezen.