Maschinen- und Sensoreingaben (0,38)
Leser, die weitere Empfänger, Löser und Sensoren in die Art receiver-trust einbringen. Jeder ist nur lesend: reine Funktionen auf Bytes oder Text, die dieselbe Zeitleiste zurückgeben wie die Leser für UBX, RINEX, Android und NMEA und beschädigte Datensätze überspringen und zählen, statt zu scheitern. Alles hier ist MODELLED: Die Formate werden aus öffentlicher Dokumentation gelesen, und kein Ergebnis ist über das Angegebene hinaus gegen eine externe unabhängige Referenz validiert.
Beratende Software. Keine typzugelassene Navigationsausrüstung. Der Betreiber bleibt für die sichere Navigation des Schiffes verantwortlich.
RTKLIB .pos (format = "rtklib-pos")#
Die Lösungsdatei, die rnx2rtkp und RTKPOST von RTKLIB schreiben. Gelesen werden: die Zeit (Kalender yyyy/mm/dd hh:mm:ss.sss oder GPS-Woche und Sekunden der Woche), die Position (Breite und Länge in Grad mit Höhe oder ECEF X/Y/Z, in geodätische Koordinaten umgerechnet) und die Anzahl der Satelliten. Die Zeitskala im Spaltenkopf (GPST, UTC, JST) wird in der Bezeichnung mitgeführt. Dateien in Grad-Minuten-Sekunden werden abgelehnt. Zeilen, die mit % beginnen, sind Kopfzeilen.
NovAtel OEM7 (format = "novatel")#
ASCII-Logs (#BESTPOSA,...*crc) und Binär-Logs (Kopf AA 44 12), frei gemischt. Die Layouts folgen der öffentlichen OEM7-Dokumentation (docs.novatel.com): die Nachrichtenköpfe, die 32-Bit-CRC und die Feldtabellen von drei Logs. Datensätze, deren CRC nicht stimmt, werden übersprungen und gezählt.
| Log | ID | Verwendet |
|---|---|---|
BESTPOS |
42 | Lösungsstatus (nur SOL_COMPUTED ergibt eine Lösung), Breite, Länge, Höhe über dem mittleren Meeresspiegel plus Undulation (die Höhe der Lösung ist ellipsoidisch), verwendete Satelliten |
RANGE |
43 | C/No je Signal (dB-Hz); System aus den Tracking-Status-Bits 16-18, Signaltyp aus den Bits 21-25 |
RXSTATUS |
93 | Empfängerstatus-Bit 15 (Störsender erkannt) wird zum self_report der Epoche (Jamming 2 markiert, 1 nicht; RXSTATUS hat kein Spoofing-Flag), von receiver-self-report mit den Alarmen von Kshana verglichen; die 1 zusätzlichen Störsender-Bits (RF1-RF6) werden in NovatelRead.status zurückgegeben |
Die CRC-Routine wurde gegen die CRC geprüft, die die Dokumentation für ihr eigenes BESTPOSA-Beispiel angibt (zitiert, nicht wörtlich wiedergegeben); die Tests verwenden selbst geschriebene Zeilen. Nicht gelesen: abgekürztes ASCII, andere Logs. Das Störsender-Flag ist die eigene Meldung des Empfängers, nicht der Befund von Kshana; die Übereinstimmung mit den Monitoren von Kshana ist keine Validierung.
GNSS-SDR (format = "gnss-sdr")#
Siehe integrations/gnss-sdr/README.md. NMEA- und RINEX-Ausgaben von GNSS-SDR werden bereits mit nmea und rinex gelesen; die UDP-Ströme von Monitor und PVT-Monitor (Protocol Buffers) werden von relay.py in JSON-Zeilen weitergereicht und mit gnss-sdr gelesen.
IMU ([log.imu])#
format = "csv": eine Kopfzeile, die die Spalten benennt, dann ein Sample je Zeile. Spalten (beliebige Reihenfolge, Namen ohne Beachtung der Groß- und Kleinschreibung): t_s Sekunden auf der Uhr des Empfänger-Logs, gx, gy, gz Winkelrate in rad/s, ax, ay, az spezifische Kraft in m/s². format = "euroc": das Layout imu0 data.csv von EuRoC MAV (#timestamp [ns], w_RS_S_x/y/z [rad s^-1], a_RS_S_x/y/z [m s^-2]); das erste Sample ist t_s = 0. Zeilen, die sich nicht parsen lassen, und Zeilen, deren Zeit nicht zunimmt, werden übersprungen. Wie der Gyro-Kurs verwendet wird, steht in RECEIVER-TRUST.md.
IMU in die Hybrid- und Fusionsszenarien (kshana imu-fit)#
Die Szenarien hybrid und fusion (UKF mit 17 Zuständen) sind Simulationen: Sie nehmen Sensorrauschparameter ([accel_quantum], [accel_classical]: bias, q_va, gyro_bias, q_arw, bias_instability), keine gemessene Reihe. imu-fit liest diese Parameter aus einem Log einer ruhenden IMU ab, sodass ein Szenario mit dem Sensor ausgeführt werden kann, den Sie tatsächlich haben:
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: die überlappende Allan-Abweichung des integrierten Signals (allan::overlapping_adev_curve): q_va = (sigma(tau0) sqrt(tau0))^2, dasselbe für das z-Gyroskop (q_arw), bias und gyro_bias als Mittelwerte und bias_instability als Kurvenminimum, wenn die Kurve danach ansteigt. q_aa wird nicht angepasst (es braucht ein Log, das weit länger ist als die Untergrenze). Der Bericht trägt Rate und Zeitspanne des Logs und die frühe Allan-Steigung jedes Kanals (etwa -0.5, wo weißes Rauschen dominiert); ein Log, das nicht ruhig ist oder zu kurz (unter 2000 Samples) oder ungleichmäßig abgetastet ist, wird abgelehnt oder liefert Parameter, die die Steigungen markieren. Die Herkunft der Tabelle nennt den SHA-256 des Logs. MODELLED: Der Schätzer wird an synthetischen Weißrausch-Logs mit bekannten Koeffizienten geprüft (innerhalb von 10 % wiedergefunden), nicht gegen eine externe unabhängige Referenz. Verfügbar in der CLI, in Python (imu_fit), WebAssembly (imu_fit), MCP (fit_imu_log) und im Plugin (/kshana-fit-imu).
RTCM 3 MSM4 und MSM7 (format = "rtcm3")#
Ein Bytestrom aus RTCM-3-Rahmen (die Beobachtungsausgabe einer Basisstation oder eines Empfängers). Gelesen werden: MSM4- und MSM7-Nachrichten (GPS 1074/1077, GLONASS 1084/1087, Galileo 1094/1097, SBAS 1104/1107, QZSS 1114/1117, BeiDou 1124/1127, NavIC 1134/1137): die Epoche und das Träger-Rausch-Verhältnis jeder Signalzelle (MSM4: 6 Bit, dB-Hz; MSM7: 10 Bit, 1/16 dB-Hz), was die C/N0-Monitore brauchen. Pseudorange- und Phasenfelder werden übersprungen, nicht verwendet, sodass RTCM den Vertrauensmonitoren C/N0 und sonst nichts liefert; in MSM gibt es keine Position. Rahmen mit fehlerhaftem CRC-24Q werden übersprungen und gezählt.
Woher das Layout stammt. Nicht aus dem RTCM-Standard (ein kostenpflichtiges Dokument, nicht herangezogen): aus dem quelloffenen Dekoder pyrtcm 1.2.0, BSD 3-Clause, dessen Lizenz und Hinweis in NOTICE stehen (Entscheidung des Eigentümers vom 18. Okt. 2026: "use open decoders"). pyrtcm gibt an, dass seine Tabellen RTCM 10403,3 folgen; Kshana stützt sich auf die veröffentlichten Tabellen unter der Lizenz von pyrtcm und erhebt keinen Anspruch auf den Standard. Zeit: MSM trägt keine Woche, daher lauten die Bezeichnungen GPS TOW <s>; GLONASS-Epochen (Moskauer Zeit) werden mit GPS-UTC = 18 s (der Wert seit 2017-01-01) in GPS-Zeit verschoben.
Geprüft gegen: den Katalog-Prüfwert von CRC-24Q (123456789 ergibt 0xCDE703) und, einmalig während der Entwicklung, den eigenen Dekoder von pyrtcm auf denselben selbst geschriebenen Rahmen (gleiches C/N0). Die Fixtures sind selbst geschrieben; es wurde keine Aufzeichnung von einem echten Empfänger genommen, daher ist der Leser MODELLED, bis er eine gelesen hat.