2009-02-16 19 views
5

Sto analizzando i dati GPS NMEA da un dispositivo che invia timestamp senza millisecondi. Per quanto ho sentito, questi dispositivi useranno uno specifico trigger point quando inviano la frase con il timestamp .000 - dopo il $ nella frase GGA.Sincronizzazione GPS ora

Quindi sto analizzando la frase GGA e prendo il timestamp quando viene ricevuto $ (compenso per eventuali altri caratteri letti nella stessa operazione usando il baud rate della porta seriale).

Da queste informazioni calcolo l'offset per correggere il tempo di sistema, ma quando si confronta il tempo impostato su alcuni server NTP, otterrò una differenza costante di 250 ms - quando correggo manualmente, sono all'interno di una deviazione di 20 ms, che è ok per la mia applicazione.

Ma ovviamente non sono sicuro da dove viene questo offset e se è in qualche modo specifico per il mouse GPS che sto usando o il mio sistema. Sto usando il carattere $ sbagliato, o qualcuno sa come esattamente questo dovrebbe essere gestito? So che questa domanda è molto confusa, ma qualsiasi suggerimento su cosa potrebbe causare questo offset sarebbe molto utile!

Ecco alcuni dati di esempio dal mio dispositivo, con il carattere $ prenderò come offset tempo segnato:

$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 

risposta

2

Bisogna prendere in considerazione le cose che sono in corso nel dispositivo GPS:

  • riceve il segnale satellitare e calcola posizione, velocità e tempo.
  • preparare messaggio NMEA e metterlo in buffer di porta seriale
  • trasmettere il messaggio

dispositivi GPS hanno CPU relativamente lente (rispetto ai computer moderni), in modo da questa latenza si sta osservando è frutto di elaborazione che dispositivo deve fare tra la generazione della posizione e il momento in cui inizia a trasmettere i dati.

Here is one analysis di latenza in ricevitori GPS di livello consumer dal 2005. È possibile trovare la misurazione della latenza per specifiche frasi NMEA.

+0

Ok, quindi ho letto che l'abilitazione di un segnale PPS è una funzione proprietaria in alcuni dispositivi GPS, il che darebbe accuratezza msec - nel caso generale l'offset di 0,25 sec, come suggerito nella carta che hai postato, sembra essere un buona congettura :) Grazie! – VolkA