gpvtg gpsrd gprmc gpgga google gga decodificar coordenadas convertir time gps nmea

time - gpsrd - Sincronización de hora del GPS



nmea gga frame (1)

Debe tener en cuenta las cosas que están sucediendo en el dispositivo GPS:

  • recibe señal de satélite y calcula la posición, la velocidad y el tiempo.
  • preparar el mensaje NMEA y ponerlo en el buffer del puerto serial
  • transmitir mensaje

Los dispositivos GPS tienen CPU relativamente lentas (en comparación con las computadoras modernas), por lo que esta latencia que observas es el resultado del procesamiento que el dispositivo debe hacer entre la generación de la posición y el momento en que comienza a transmitir los datos.

Aquí hay un análisis de latencia en receptores de GPS de grado de consumo desde 2005. Allí puede encontrar la medición de latencia para oraciones específicas de NMEA.

Estoy analizando datos de GPS NMEA desde un dispositivo que envía marcas de tiempo sin milisegundos. Por lo que he escuchado, estos dispositivos usarán un punto de activación específico cuando envíen la oración con la marca de tiempo .000 - afaik the $ en la oración de GGA.

Por lo tanto, estoy analizando la frase GGA y tomo la marca de tiempo cuando se recibe el $ (compenso los caracteres que se leen en la misma operación usando la velocidad en baudios del puerto serie).

A partir de esta información, calculo el desplazamiento para corregir la hora del sistema, pero cuando comparo el tiempo establecido en algunos servidores NTP, obtendré una diferencia constante de 250 ms. Cuando corrijo esto manualmente, estoy dentro de una desviación de 20 ms, que está bien para mi aplicación

Pero, por supuesto, no estoy seguro de dónde viene este desplazamiento, y si de alguna manera es específico para el mouse GPS que estoy usando o mi sistema. ¿Estoy usando el caracter $ incorrecto, o alguien sabe cómo se debe manejar esto exactamente? Sé que esta pregunta es muy difusa, pero cualquier sugerencia sobre lo que podría causar este desplazamiento sería muy útil.

Aquí hay algunos datos de muestra de mi dispositivo, con el carácter $ que tomaré como el marcado de tiempo marcado:

$GPGSA,A,3,17,12,22,18,09,30,14,,,,,,2.1,1.5,1.6*31 $GPRMC,003538.000,A,5046.8555,N,00606.2913,E,0.00,22.37,160209,,,A*58 -> $ <- GPGGA,003539.000,5046.8549,N,00606.2922,E,1,07,1.5,249.9,M,47.6,M,,0000*5C $GPGSA,A,3,17,12,22,18,09,30,14,,,,,,2.1,1.5,1.6*31 $GPGSV,3,1,10,09,77,107,17,12,63,243,30,05,51,249,16,14,26,315,20*7E $GPGSV,3,2,10,30,24,246,25,17,23,045,22,15,15,170,16,22,14,274,24*7E $GPGSV,3,3,10,04,08,092,22,18,07,243,22*74 $GPRMC,003539.000,A,5046.8549,N,00606.2922,E,0.00,22.37,160209,,,A*56 -> $ <- GPGGA,003540.000,5046.8536,N,00606.2935,E,1,07,1.5,249.0,M,47.6,M,,0000*55 $GPGSA,A,3,17,12,22,18,09,30,14,,,,,,2.1,1.5,1.6*31 $GPRMC,003540.000,A,5046.8536,N,00606.2935,E,0.00,22.37,160209,,,A*56 -> $ <- GPGGA,003541.000,5046.8521,N,00606.2948,E,1,07,1.5,247.8,M,47.6,M,,0000*5E