Maskinöversättning, inte granskad av en modersmålstalare. Engelska är referensen.

Mottagarförtroende och sjöfartRedigera på GitHubKälla: docs/MACHINE-INPUTS.md

Maskin- och sensorindata (0,38)

Läsare som för in andra mottagare, lösare och sensorer i typen receiver-trust. Alla är skrivskyddade: rena funktioner på byte eller text som returnerar samma tidslinje som läsarna för UBX, RINEX, Android och NMEA returnerar, och som hoppar över och räknar korrupta poster i stället för att misslyckas. Allt här är MODELLED: formaten läses ur offentlig dokumentation, och inget resultat är validerat mot någon oberoende extern referens utöver det som anges.

Rådgivande programvara. Inte typgodkänd navigationsutrustning. Operatören är fortsatt ansvarig för fartygets säkra navigering.

Vad `kshana imu-fit` läser ut ur en stillastående IMU-logg, från en verklig körning av motor v0.40.0 på en påhittad logg (20 000 sampel vid 100 Hz, 200 s): accelerometerns hastighetsslumpvandring q_va = 4.02e-06, gyrots vinkelslumpvandring q_arw = 9e-08, biasinstabiliteten 0,00296 och de tidiga Allan-lutningarna (-0.51 och -0.49; ungefär -0.5 där vitt brus dominerar). Tabellen bredvid är den TOML som kommandot skriver ut. Skattaren är bara kontrollerad på syntetiska loggar. Rådgivande: analysutdata från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livräddande tjänst.Vad `kshana imu-fit` läser ut ur en stillastående IMU-logg, från en verklig körning av motor v0.40.0 på en påhittad logg (20 000 sampel vid 100 Hz, 200 s): accelerometerns hastighetsslumpvandring q_va = 4.02e-06, gyrots vinkelslumpvandring q_arw = 9e-08, biasinstabiliteten 0,00296 och de tidiga Allan-lutningarna (-0.51 och -0.49; ungefär -0.5 där vitt brus dominerar). Tabellen bredvid är den TOML som kommandot skriver ut. Skattaren är bara kontrollerad på syntetiska loggar. Rådgivande: analysutdata från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livräddande tjänst.

RTKLIB .pos (format = "rtklib-pos")#

Lösningsfilen som RTKLIB:s rnx2rtkp och RTKPOST skriver. Läses: tiden (kalender yyyy/mm/dd hh:mm:ss.sss, eller GPS-vecka och sekunder i veckan), positionen (latitud och longitud i grader med höjd, eller ECEF X/Y/Z omräknat till geodetiskt) och antalet satelliter. Tidsskalan i kolumnhuvudet (GPST, UTC, JST) förs med i etiketten. Filer med grader-minuter-sekunder vägras. Rader som börjar med % är huvudrader.

NovAtel OEM7 (format = "novatel")#

ASCII-loggar (#BESTPOSA,...*crc) och binära loggar (AA 44 12-huvud), fritt blandade. Layouterna följer den offentliga OEM7-dokumentationen (docs.novatel.com): meddelandehuvudena, 32-bitars CRC och fälttabellerna för tre loggar. Poster vars CRC inte stämmer hoppas över och räknas.

Logg ID Används
BESTPOS 42 lösningsstatus (endast SOL_COMPUTED ger en positionsbestämning), latitud, longitud, höjd över medelhavsytan plus undulation (positionsbestämningens höjd är ellipsoidisk), använda satelliter
RANGE 43 C/No per signal (dB-Hz); system från bitarna 16-18 i spårningsstatus, signaltyp från bitarna 21-25
RXSTATUS 93 mottagarstatusbit 15 (jammer upptäckt) blir epokens self_report (jamming 2 flaggade, 1 inte; RXSTATUS har ingen spoofingflagga), jämförs med larmen från Kshana av receiver-self-report; de 1 extra jammerbitarna (RF1-RF6) returneras i NovatelRead.status

CRC-rutinen kontrollerades mot den CRC som dokumentationen anger för sitt eget BESTPOSA-exempel (citeras, återges inte); testerna använder egenskrivna rader. Läses inte: förkortad ASCII, andra loggar. Jammerflaggan är mottagarens egen rapport, inte fynd från Kshana; överensstämmelse med Kshanas övervakare är ingen validering.

GNSS-SDR (format = "gnss-sdr")#

Se integrations/gnss-sdr/README.md. NMEA- och RINEX-utdata från GNSS-SDR läses redan med nmea och rinex; UDP-strömmarna Monitor och PVT-monitor (Protocol Buffers) vidarebefordras som JSON-rader av relay.py och läses med gnss-sdr.

IMU ([log.imu])#

format = "csv": en rubrikrad som namnger kolumnerna, sedan ett sampel per rad. Kolumner (i valfri ordning, namnen är skiftlägesokänsliga): t_s sekunder på mottagarloggens klocka, gx, gy, gz vinkelhastighet i rad/s, ax, ay, az specifik kraft i m/s². format = "euroc": layouten för 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]); det första samplet är t_s = 0. Rader som inte kan tolkas, och rader vars tid inte ökar, hoppas över. Se RECEIVER-TRUST.md för hur gyrots riktning används.

IMU i hybrid- och fusionsscenarierna (kshana imu-fit)#

Scenarierna hybrid och fusion (UKF med 17 tillstånd) är simuleringar: de tar sensorbrusparametrar ([accel_quantum], [accel_classical]: bias, q_va, gyro_bias, q_arw, bias_instability), inte en uppmätt serie. imu-fit läser de parametrarna ur en stillastående IMU-logg, så att ett scenario kan köras med den sensor du faktiskt 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

Metod: den överlappande Allan-deviationen för den integrerade signalen (allan::overlapping_adev_curve): q_va = (sigma(tau0) sqrt(tau0))^2, detsamma för z-gyrot (q_arw), bias och gyro_bias som medelvärden, och bias_instability som kurvans minimum när kurvan vänder uppåt efter det. q_aa anpassas inte (det kräver en logg som är mycket längre än golvet). Rapporten anger loggens frekvens och längd samt den tidiga Allan-lutningen för varje kanal (ungefär -0.5 där vitt brus dominerar); en logg som inte är stilla, eller är för kort (under 2000 sampel) eller ojämnt samplad, vägras eller ger parametrar som lutningarna flaggar. Tabellens proveniens anger loggens SHA-256. MODELLED: skattaren är kontrollerad på syntetiska loggar med vitt brus och kända koefficienter (återfunna inom 10 %), inte mot någon oberoende extern referens. Finns i CLI, Python (imu_fit), WebAssembly (imu_fit), MCP (fit_imu_log) och insticksmodulen (/kshana-fit-imu).

RTCM 3 MSM4 och MSM7 (format = "rtcm3")#

En byteström av RTCM 3-ramar (en basstations eller en mottagares observationsutdata). Läses: meddelandena MSM4 och MSM7 (GPS 1074/1077, GLONASS 1084/1087, Galileo 1094/1097, SBAS 1104/1107, QZSS 1114/1117, BeiDou 1124/1127, NavIC 1134/1137): epoken och bärvåg-till-brus-förhållandet för varje signalcell (MSM4: 6 bitar, dB-Hz; MSM7: 10 bitar, 1/16 dB-Hz), vilket är vad C/N0-övervakarna behöver. Fälten för pseudoavstånd och fas stegas förbi och används inte, så RTCM ger förtroendeövervakarna C/N0 och inget annat; det finns ingen position i MSM. Ramar med felaktig CRC-24Q hoppas över och räknas.

Varifrån layouten kommer. Inte från RTCM-standarden (ett betaldokument som inte har konsulterats): från den öppna avkodaren pyrtcm 1.2.0, BSD 3-Clause, vars licens och meddelande finns i NOTICE (ägarbeslut den 18 okt 2026: "använd öppna avkodare"). pyrtcm anger att dess tabeller följer RTCM 10403,3; Kshana förlitar sig på de publicerade tabellerna under pyrtcms licens och gör inga påståenden om standarden. Tid: MSM har ingen vecka, så etiketterna läses GPS TOW <s>; GLONASS-epoker (Moskvatid) flyttas till GPS-tid med GPS-UTC = 18 s (värdet sedan 2017-01-01).

Kontrollerad mot: kontrollvärdet i katalogen för CRC-24Q (123456789 ger 0xCDE703) och, som en engångskontroll under utvecklingen, pyrtcms egen avkodare på samma egenskrivna ramar (samma C/N0). Testdata är egenskrivna; ingen inspelning har tagits från en verklig mottagare, så läsaren är MODELLED tills den har läst en.