Saltar al contenido principal

Protocolo NMEA

NMEA 0183 es el protocolo de comunicación estándar que usan prácticamente todos los receptores GNSS para transmitir datos de posición, satélites y precisión. Cuando conectas un receptor externo a Mapit GIS (por Bluetooth en Android, o por TCP/IP en cualquiera de las dos plataformas), el receptor envía un flujo continuo de sentencias NMEA por el enlace serie.

¿Qué es NMEA?

NMEA son las siglas de National Marine Electronics Association. El estándar NMEA 0183 define un protocolo basado en texto en el que cada mensaje (llamado sentencia) es una única línea de texto ASCII:

$GPGGA,120000.00,5133.82,N,00042.24,W,1,08,0.9,45.4,M,47.0,M,,*47

Todas las sentencias siguen la misma estructura:

ParteEjemploDescripción
Inicio$Toda sentencia empieza por un signo de dólar
Identificador del emisorGPIdentifica el sistema de satélites (GP = GPS, GL = GLONASS, GA = Galileo, GB/BD = BeiDou, GN = multi-GNSS)
Tipo de sentenciaGGACódigo de tres letras que identifica el formato de los datos
Campos de datos120000.00,5133.82,...Valores separados por comas
Suma de comprobación*47XOR de todos los bytes entre $ y *, codificado en dos dígitos hexadecimales
Terminador\r\nRetorno de carro y salto de línea

El identificador del emisor te dice qué constelación ha producido los datos:

IdentificadorConstelación
GPGPS (EE. UU.)
GLGLONASS (Rusia)
GAGalileo (Europa)
GB / BDBeiDou (China)
QZQZSS (Japón)
GNMulti-GNSS (solución combinada)

Tipos de sentencia admitidos

Mapit GIS interpreta los siguientes tipos de sentencia NMEA. El analizador NMEA (NmeaParser) procesa cada línea entrante, valida el formato y extrae los campos de datos relevantes.

GGA: datos de la solución GPS

La sentencia más importante en topografía. La GGA aporta la solución de posición esencial: coordenadas, altitud, calidad de la solución, número de satélites y precisión.

CampoDato
Hora UTCHoras, minutos y segundos
Latitud / longitudGrados y minutos decimales
Calidad de la solución0 = no válida, 1 = GPS, 2 = DGPS, 3 = PPS, 4 = RTK Fixed, 5 = RTK Float, 6 = navegación estimada, 7 = manual, 8 = simulación
Satélites en usoNúmero de satélites que contribuyen a la solución
HDOPDilución horizontal de la precisión
Altitud (sobre el nivel del mar)Altura sobre el nivel medio del mar, en metros
Separación del geoideDiferencia entre el elipsoide WGS 84 y el nivel medio del mar, en metros
Antigüedad DGPSSegundos transcurridos desde la última corrección diferencial
ID de la estación DGPSIdentificador de la estación de referencia

Identificadores admitidos: GPGGA, GNGGA

RMC: datos mínimos de navegación recomendados

Aportan la posición, la velocidad y el rumbo. Se usan como alternativa cuando no hay GGA disponible.

CampoDato
Fecha y hora UTCMarca de tiempo completa
EstadoA = activo (solución válida), V = nulo (sin solución)
Latitud / longitudPosición
Velocidad sobre el terrenoEn nudos (convertida internamente a m/s)
Ángulo de rumboRumbo verdadero en grados

Identificadores admitidos: GPRMC, GNRMC

GSA: DOP y satélites activos

Informa de los valores de dilución de la precisión y de qué satélites se están usando en la solución de posición.

CampoDato
ModoA = automático, M = manual
Tipo de solución1 = sin solución, 2 = solución 2D, 3 = solución 3D
PRN de los satélitesHasta 12 identificadores de satélite usados en la solución
PDOPDilución de la precisión de la posición
HDOPDilución horizontal de la precisión
VDOPDilución vertical de la precisión

Los receptores NMEA 4.10 y posteriores incluyen un campo de ID de sistema (el campo 19) para distinguir las constelaciones.

Identificadores admitidos: GPGSA, GNGSA, GLGSA, QZGSA, BDGSA, GBGSA

GSV: satélites a la vista

Aporta información detallada de cada satélite visible; se usa para dibujar el diagrama celeste y el gráfico de barras de señal del panel de información GPS.

CampoDato
Satélites a la vistaTotal de esta constelación
PRN del satéliteIdentificador
ElevaciónGrados sobre el horizonte (0-90)
AzimutGrados desde el norte verdadero (0-360)
SNRRelación señal-ruido en dB-Hz (0-99)

Cada sentencia GSV lleva datos de hasta 4 satélites, y varias sentencias forman un conjunto completo.

Identificadores admitidos: GPGSV, GLGSV, GAGSV, QZGSV, BDGSV, GBGSV

GST: estadísticas de error de pseudodistancia

Aporta estimaciones estadísticas de precisión. Es la fuente principal de los valores de precisión RMS que se muestran en el panel de información GPS.

CampoDato
RMSError medio cuadrático de los residuos de pseudodistancia
Error del semieje mayor / menorEjes de la elipse de error, en metros
OrientaciónGiro de la elipse de error, en grados
Error de latitud 1 sigmaDesviación típica, en metros
Error de longitud 1 sigmaDesviación típica, en metros
Error de altura 1 sigmaDesviación típica, en metros

A partir de estos valores, la aplicación calcula:

  • HRMS = raíz(error_lat² + error_lon²)
  • VRMS = error_altura
  • RMS 3D = raíz(error_lat² + error_lon² + error_altura²)

VTG: rumbo y velocidad sobre el terreno

Se usa internamente para hacer avanzar la máquina de estados NMEA, marcando el final de una secuencia de sentencias.

Identificadores admitidos: GPVTG, GNVTG

GLL: posición geográfica

Aporta la latitud y la longitud con la hora UTC. Solo se usa cuando el receptor no emite ni GGA ni RMC.

Identificadores admitidos: GPGLL, GNGLL

GNS: datos de solución GNSS

Un equivalente multi-GNSS de la GGA que incluye un indicador de modo por constelación. Actualiza el estado NMEA en consecuencia.

PNVGSDP: sentencia propietaria de precisión

Una sentencia propietaria (compatible con NovAtel) que aporta las desviaciones típicas de latitud, longitud y altura, más un carácter de modo de solución:

ModoSignificado
AAutónomo
DDiferencial
FRTK Float
RRTK Fixed
ENavegación estimada
NSin solución

Prioridad de las sentencias

El analizador usa una máquina de estados para no mezclar datos de épocas de solución distintas. Cuando varios tipos de sentencia aportan datos solapados, se aplica esta prioridad:

  1. GGA: preferida para la posición y la calidad de la solución
  2. RMC: se usa si no hay GGA (aporta velocidad y rumbo, que la GGA no tiene)
  3. GLL: último recurso, solo para la posición

Validación de la suma de comprobación

Cada sentencia NMEA termina con una suma de comprobación hexadecimal de dos caracteres precedida por *. Se calcula aplicando XOR a todos los bytes entre $ y *:

$GPGGA,120000,...*47
↑ XOR de estos ↑

El analizador verifica el formato de la suma de comprobación, pero es pragmático en la validación: las sentencias con problemas menores de formato se siguen procesando, para maximizar la compatibilidad con la gran variedad de receptores GNSS del mercado.