L’associazione NMEA (National Marine Electronic Association) nasce nel 1957 come punto di contatto tra produttori e rivenditori di elettronica.
Tra le diverse attività, l’associazione ha definito una serie di protocolli di comunicazione, di cui possiede il copyright, che definiscono degli standard di comunicazione per scambiare informazioni tra dispositivi marini.
Negli anni, la diffusione e la flessibilità di alcuni fra tali protocolli, li hanno resi adatti anche ad altri campi di applicazione.
Numerose sono state le versioni successive dell’NMEA, che hanno essenzialmente aggiunto la possibilità di trasferire ulteriori informazioni. Attualmente, in ambito GNSS, le versioni più utilizzate sono l’NMEA0183 e l’NMEA2000.
Utilizzo del formato NMEA
Operativamente, nel flusso di lavoro delle operazioni di rilievo e, più in generale, di positioning mediante ricevitori GNSS, il formato NMEA è utilizzato per trasferire informazioni sulla posizione e su una serie di parametri a corredo. Alcuni di questi parametri danno informazioni sulla qualità del posizionamento, altri definiscono le caratteristiche dei segnali osservati o della geometria degli stessi.
È però da avere ben chiaro che nel messaggio NMEA non sono contenuti i dati grezzi.
In altre parole, nel messaggio NMEA, sono presenti soltanto informazioni relative alle soluzioni. Informazioni più articolate rispetto alle sole coordinate, che consentono di fare delle, seppur superficiali, analisi di qualità delle soluzioni stesse. Ma con le sole informazioni contenute nel messaggio NMEA non può essere effettuato alcun post processamento!
Per chiarire meglio il concetto, facciamo due esempi concreti, entrambi relativi al rilievo NRTK.
Quando il rover si connette alla rete di stazioni permanenti, per ricevere le correzioni differenziali, in taluni casi deve prima inviare, al servizio di rete stessa, le proprie coordinate approssimate. Questo passaggio si rende necessario perché alcune correzioni differenziali (ad esempio le VRS), creano dei modelli ad-hoc per il rover stesso. È evidente che, per creare delle correzioni ad-hoc, per la posizione in cui il rover si trova in quel momento, sia necessario che il centro di controllo conosca, almeno approssimativamente, dove si trova il ricevitore stesso. Proprio per questo motivo, viene inviata, dal ricevitore al server di rete, una stringa NMEA che, appunto, fornisce tali tipi di informazioni. Nella stringa NMEA ,vi sono, tra le altre cose, le coordinate che il ricevitore ha calcolato in autonomia, quindi in modalità stand alone.
Quando poi, una volta ricevute le correzioni differenziali e avviata la fase vera e propria del rilievo, il ricevitore calcola la propria posizione con una precisione più alta, vi è la necessità di archiviare le coordinate dei punti che vengono battuti. In generale, tutti o quasi i software per gestire le operazioni di campo consentono di scegliere l’NMEA tra i fomati di output con cui, appunto, salvare le coordinate del punto.
Le alternative, in genere, sono formati più snelli e semplici. Ad esempio lat, long, h oppure XYZ o altri simili.
In genere, se non si hanno esigenze specifiche, il formato NMEA è da preferirsi poiché, oltre alle coordinate, contiene una serie di altre informazioni che possono essere utili per valutare la qualità del posizionamento o, più in generale, per dare informazioni di contesto.
Fig. 1 – Monitor del messaggio NMEA
Struttura e campi del formato NMEA
Vediamo, allora, quali sono le informazioni che il formato NMEA può contenere. Tale formato si compone di numerosi campi, definiti come “sentenze“, che contengono una serie di informazioni specifiche.
Ne analizzeremo alcuni, che sono quelli di interesse per l’utilizzo del GNSS.
Ognuno dei suddetti campi si presenta come una riga del file di testo, composta da un determinato numero di valori separati da virgola. Per ogni posizione, viene inserita una specifica informazione, in caso sia presente. Qualora tale informazione non sia presente, lo spazio viene lasciato vuoto.
A titolo di esempio, si riporta, in Fig. 2, una parte di messaggio NMEA estratto da un’epoca di posizionamento navigazionale:
Fig. 2 – Parte di messaggio NMEA estratto da un’epoca di posizionamento navigazionale
Ogni riga del messaggio NMEA contiene specifiche informazioni che, nel seguito, vengono descritte per una più completa comprensione:
$GPGGA, 1,2,N,3,E,4,5,6,7,M,8,9
-
-
- Ora UTC in cui è stata calcolata la posizione
- Latitudine espressa in gradi
- Longitudine espressa in gradi
- Qualità del posizionamento
- 0= invalido
- 1= GNSS fix
- 2= DGPS fix
- 3= PPS
- 4= Posizionamento RTK
- 6= posizione stimata (dead reckoning)
- 7= Posizione inserita manualmente
- 8= Posizione ottenuta da osservazioni simulate
- Numero di satelliti utilizzato
- HDOP
- Quota sul livello del mare
- Ondulazione del geoide rispetto all’ellissoide WGS84
La riga $GPGGA è utile perché contiene, oltre alle coordinate, le informazioni base e le più semplici informazioni sulla costellazione satellitare usata per il posizionamento.
-
-
- Latitudine nel seguente formato dd mm,mmmmm
- Longitudine nel seguente formato ddd mm,mmmmm
- Ora UTC in cui è stata calcolata la posizione
- Indicatore di stato:
-
- A: dato valido
- V: dato non valido
Questo parametro è strettamente legato al successivo. Esso viene indicato con V (dato non valido) per tutti i “mode Indicator” del campo successivo, eccetto per i valori A e D
-
- Mode Indicator:
-
-
- A: Posizionamento autonomo
- D: Posizionamento differenziale
- E: Posizionamento stimato (dead reckoning)
- M: Valore inserito manualmente
- S: Valore simulato
- N: Dato non valido
-
-
-