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:
| Parte | Ejemplo | Descripción |
|---|---|---|
| Inicio | $ | Toda sentencia empieza por un signo de dólar |
| Identificador del emisor | GP | Identifica el sistema de satélites (GP = GPS, GL = GLONASS, GA = Galileo, GB/BD = BeiDou, GN = multi-GNSS) |
| Tipo de sentencia | GGA | Código de tres letras que identifica el formato de los datos |
| Campos de datos | 120000.00,5133.82,... | Valores separados por comas |
| Suma de comprobación | *47 | XOR de todos los bytes entre $ y *, codificado en dos dígitos hexadecimales |
| Terminador | \r\n | Retorno de carro y salto de línea |
El identificador del emisor te dice qué constelación ha producido los datos:
| Identificador | Constelación |
|---|---|
GP | GPS (EE. UU.) |
GL | GLONASS (Rusia) |
GA | Galileo (Europa) |
GB / BD | BeiDou (China) |
QZ | QZSS (Japón) |
GN | Multi-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.
| Campo | Dato |
|---|---|
| Hora UTC | Horas, minutos y segundos |
| Latitud / longitud | Grados y minutos decimales |
| Calidad de la solución | 0 = 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 uso | Número de satélites que contribuyen a la solución |
| HDOP | Dilución horizontal de la precisión |
| Altitud (sobre el nivel del mar) | Altura sobre el nivel medio del mar, en metros |
| Separación del geoide | Diferencia entre el elipsoide WGS 84 y el nivel medio del mar, en metros |
| Antigüedad DGPS | Segundos transcurridos desde la última corrección diferencial |
| ID de la estación DGPS | Identificador 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.
| Campo | Dato |
|---|---|
| Fecha y hora UTC | Marca de tiempo completa |
| Estado | A = activo (solución válida), V = nulo (sin solución) |
| Latitud / longitud | Posición |
| Velocidad sobre el terreno | En nudos (convertida internamente a m/s) |
| Ángulo de rumbo | Rumbo 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.
| Campo | Dato |
|---|---|
| Modo | A = automático, M = manual |
| Tipo de solución | 1 = sin solución, 2 = solución 2D, 3 = solución 3D |
| PRN de los satélites | Hasta 12 identificadores de satélite usados en la solución |
| PDOP | Dilución de la precisión de la posición |
| HDOP | Dilución horizontal de la precisión |
| VDOP | Dilució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.
| Campo | Dato |
|---|---|
| Satélites a la vista | Total de esta constelación |
| PRN del satélite | Identificador |
| Elevación | Grados sobre el horizonte (0-90) |
| Azimut | Grados desde el norte verdadero (0-360) |
| SNR | Relació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.
| Campo | Dato |
|---|---|
| RMS | Error medio cuadrático de los residuos de pseudodistancia |
| Error del semieje mayor / menor | Ejes de la elipse de error, en metros |
| Orientación | Giro de la elipse de error, en grados |
| Error de latitud 1 sigma | Desviación típica, en metros |
| Error de longitud 1 sigma | Desviación típica, en metros |
| Error de altura 1 sigma | Desviació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:
| Modo | Significado |
|---|---|
A | Autónomo |
D | Diferencial |
F | RTK Float |
R | RTK Fixed |
E | Navegación estimada |
N | Sin 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:
- GGA: preferida para la posición y la calidad de la solución
- RMC: se usa si no hay GGA (aporta velocidad y rumbo, que la GGA no tiene)
- 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.