Entradas de máquina y de sensor (0,38)
Lectores que incorporan otros receptores, solucionadores y sensores al tipo receiver-trust. Todos son de solo lectura: funciones puras sobre bytes o texto que devuelven la misma línea temporal que devuelven los lectores de UBX, RINEX, Android y NMEA, omitiendo y contando los registros dañados en lugar de fallar. Todo aquí es MODELLED: los formatos se leen de documentación pública y ningún resultado está validado frente a una referencia independiente externa más allá de lo indicado.
Software de carácter consultivo. No es un equipo de navegación homologado. El operador sigue siendo responsable de la navegación segura del buque.
RTKLIB .pos (format = "rtklib-pos")#
El archivo de solución que escriben rnx2rtkp y RTKPOST de RTKLIB. Se leen: la hora (calendario yyyy/mm/dd hh:mm:ss.sss, o semana GPS y segundos de la semana), la posición (latitud y longitud en grados con altura, o ECEF X/Y/Z convertidas a geodésicas) y el número de satélites. La escala de tiempo de la cabecera de columna (GPST, UTC, JST) se conserva en la etiqueta. Los archivos en grados-minutos-segundos se rechazan. Las líneas que empiezan por % son líneas de cabecera.
NovAtel OEM7 (format = "novatel")#
Registros ASCII (#BESTPOSA,...*crc) y binarios (cabecera AA 44 12), mezclados libremente. Los formatos siguen la documentación pública de OEM7 (docs.novatel.com): las cabeceras de mensaje, el CRC de 32 bits y las tablas de campos de tres registros. Los registros cuyo CRC no coincide se omiten y se cuentan.
| Registro | ID | Usado |
|---|---|---|
BESTPOS |
42 | estado de la solución (solo SOL_COMPUTED da una solución), latitud, longitud, altura sobre el nivel medio del mar más ondulación (la altura de la solución es elipsoidal), satélites usados |
RANGE |
43 | C/No por señal (dB-Hz); sistema a partir de los bits 16-18 del estado de seguimiento, tipo de señal a partir de los bits 21-25 |
RXSTATUS |
93 | el bit 15 del estado del receptor (inhibidor detectado) pasa a ser self_report de la época (inhibición 2 señalada, 1 no; RXSTATUS no tiene indicador de suplantación), comparado con las alarmas de Kshana por receiver-self-report; los 1 bits auxiliares de inhibidor (RF1-RF6) se devuelven en NovatelRead.status |
La rutina de CRC se comprobó con el CRC que la documentación indica para su propio ejemplo de BESTPOSA (citado, no reproducido); las pruebas usan líneas escritas por nosotros. No se leen: ASCII abreviado ni otros registros. El indicador de inhibidor es el propio informe del receptor, no un hallazgo de Kshana; la coincidencia con los monitores de Kshana no es validación.
GNSS-SDR (format = "gnss-sdr")#
Véase integrations/gnss-sdr/README.md. Las salidas NMEA y RINEX de GNSS-SDR ya se leen con nmea y rinex; los flujos UDP de Monitor y de monitor PVT (Protocol Buffers) los retransmite relay.py como líneas JSON y se leen con gnss-sdr.
IMU ([log.imu])#
format = "csv": una fila de cabecera que nombra las columnas y después una muestra por fila. Columnas (en cualquier orden, nombres sin distinguir mayúsculas): t_s segundos en el reloj del registro del receptor, gx, gy, gz velocidad angular en rad/s, ax, ay, az fuerza específica en m/s². format = "euroc": el formato 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]); la primera muestra es t_s = 0. Las filas que no se analizan y las filas cuyo tiempo no aumenta se omiten. Véase RECEIVER-TRUST.md para saber cómo se usa el rumbo del giróscopo.
IMU en los escenarios híbridos y de fusión (kshana imu-fit)#
Los escenarios hybrid y fusion (UKF de 17 estados) son simulaciones: toman parámetros de ruido del sensor ([accel_quantum], [accel_classical]: bias, q_va, gyro_bias, q_arw, bias_instability), no una serie medida. imu-fit lee esos parámetros de un registro de IMU estacionaria, de modo que un escenario puede ejecutarse con el sensor que realmente se tiene:
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
Método: la desviación de Allan solapada de la señal integrada (allan::overlapping_adev_curve): q_va = (sigma(tau0) sqrt(tau0))^2, lo mismo para el giróscopo z (q_arw), bias y gyro_bias como las medias, y bias_instability como el mínimo de la curva cuando esta sube después de él. q_aa no se ajusta (requiere un registro mucho más largo que el mínimo). El informe incluye la tasa y la duración del registro y la pendiente de Allan temprana de cada canal (en torno a -0.5 donde domina el ruido blanco); un registro que no esté quieto, que sea demasiado corto (menos de 2000 muestras) o que tenga un muestreo desigual se rechaza o da parámetros que las pendientes señalan. La procedencia de la tabla nombra el SHA-256 del registro. MODELLED: el estimador se comprueba con registros sintéticos de ruido blanco con coeficientes conocidos (recuperados con una diferencia de hasta 10 %), no frente a una referencia independiente externa. Disponible en la CLI, Python (imu_fit), WebAssembly (imu_fit), MCP (fit_imu_log) y el complemento (/kshana-fit-imu).
RTCM 3 MSM4 y MSM7 (format = "rtcm3")#
Un flujo de bytes de tramas RTCM 3 (la salida de observación de una estación base o de un receptor). Se leen: mensajes MSM4 y MSM7 (GPS 1074/1077, GLONASS 1084/1087, Galileo 1094/1097, SBAS 1104/1107, QZSS 1114/1117, BeiDou 1124/1127, NavIC 1134/1137): la época y la relación portadora a ruido de cada celda de señal (MSM4: 6 bits, dB-Hz; MSM7: 10 bits, 1/16 dB-Hz), que es lo que necesitan los monitores de C/N0. Los campos de seudodistancia y de fase se saltan, no se usan, de modo que RTCM aporta a los monitores de confianza la C/N0 y nada más; MSM no contiene posición. Las tramas con un CRC-24Q erróneo se omiten y se cuentan.
De dónde sale la disposición. No del estándar RTCM (un documento de pago, no consultado): sino del decodificador de código abierto pyrtcm 1.2.0, BSD 3-Clause, cuya licencia y aviso están en NOTICE (decisión del propietario del 18 de octubre de 2026: "usar decodificadores abiertos"). pyrtcm indica que sus tablas siguen RTCM 10403,3; Kshana se apoya en las tablas publicadas bajo la licencia de pyrtcm y no hace ninguna afirmación sobre el estándar. Tiempo: MSM no lleva semana, por lo que las etiquetas dicen GPS TOW <s>; las épocas de GLONASS (hora de Moscú) se pasan a tiempo GPS con GPS-UTC = 18 s (el valor desde 2017-01-01).
Comprobado frente a: el valor de comprobación del catálogo de CRC-24Q (123456789 da 0xCDE703) y, una sola vez durante el desarrollo, el propio decodificador de pyrtcm sobre las mismas tramas escritas por nosotros (la misma C/N0). Los datos de prueba están escritos por nosotros; no se tomó ninguna captura de un receptor real, de modo que el lector es MODELLED hasta que lea una.