Protokół NMEA
NMEA 0183 to standardowy protokół komunikacyjny wykorzystywany praktycznie przez wszystkie odbiorniki GNSS do przesyłania danych o pozycji, satelitach i dokładności. Po podłączeniu zewnętrznego odbiornika do Mapit GIS (przez Bluetooth na Androidzie albo TCP/IP na obu platformach) odbiornik wysyła łączem szeregowym ciągły strumień komunikatów NMEA.
Czym jest NMEA?
NMEA to skrót od National Marine Electronics Association. Standard NMEA 0183 definiuje protokół tekstowy, w którym każdy komunikat (nazywany zdaniem) jest pojedynczym wierszem tekstu ASCII:
$GPGGA,120000.00,5133.82,N,00042.24,W,1,08,0.9,45.4,M,47.0,M,,*47
Każde zdanie ma tę samą budowę:
| Element | Przykład | Opis |
|---|---|---|
| Początek | $ | Każde zdanie zaczyna się od znaku dolara |
| Identyfikator nadawcy | GP | Wskazuje system satelitarny (GP = GPS, GL = GLONASS, GA = Galileo, GB/BD = BeiDou, GN = wiele systemów GNSS) |
| Typ zdania | GGA | Trzyliterowy kod określający format danych |
| Pola danych | 120000.00,5133.82,... | Wartości rozdzielone przecinkami |
| Suma kontrolna | *47 | XOR wszystkich bajtów między $ a *, zapisany jako dwie cyfry szesnastkowe |
| Zakończenie | \r\n | Powrót karetki i znak nowego wiersza |
Identyfikator nadawcy mówi, która konstelacja satelitarna dostarczyła dane:
| Identyfikator nadawcy | Konstelacja |
|---|---|
GP | GPS (USA) |
GL | GLONASS (Rosja) |
GA | Galileo (Europa) |
GB / BD | BeiDou (Chiny) |
QZ | QZSS (Japonia) |
GN | Wiele systemów GNSS (rozwiązanie łączone) |
Obsługiwane typy zdań
Mapit GIS analizuje następujące typy zdań NMEA. Analizator NMEA (NmeaParser) przetwarza każdy przychodzący wiersz, sprawdza poprawność formatu i odczytuje odpowiednie pola danych.
GGA - dane fixa systemu pozycjonowania
Najważniejsze zdanie przy pracach pomiarowych. GGA dostarcza podstawowe dane fixa: współrzędne, wysokość, jakość fixa, liczbę satelitów i dokładność.
| Pole | Dane |
|---|---|
| Czas UTC | Godziny, minuty, sekundy |
| Szerokość / długość geograficzna | Stopnie i minuty dziesiętne |
| Jakość fixa | 0 = nieprawidłowy, 1 = GPS, 2 = DGPS, 3 = PPS, 4 = RTK Fixed, 5 = RTK Float, 6 = zliczanie drogi, 7 = ręczny, 8 = symulacja |
| Liczba używanych satelitów | Liczba satelitów biorących udział w rozwiązaniu |
| HDOP | Poziome rozmycie dokładności |
| Wysokość nad poziomem morza | Wysokość nad średnim poziomem morza w metrach |
| Odstęp geoidy | Różnica między elipsoidą WGS 84 a średnim poziomem morza w metrach |
| Wiek poprawki DGPS | Liczba sekund od ostatniej poprawki różnicowej |
| Identyfikator stacji DGPS | Identyfikator stacji referencyjnej |
Obsługiwane identyfikatory nadawcy: GPGGA, GNGGA
RMC - zalecane minimum danych nawigacyjnych
Dostarcza pozycję, prędkość i azymut. Wykorzystywane zapasowo, gdy GGA jest niedostępne.
| Pole | Dane |
|---|---|
| Czas i data UTC | Pełny znacznik czasu |
| Status | A = aktywny (prawidłowy fix), V = nieważny (brak fixa) |
| Szerokość / długość geograficzna | Pozycja |
| Prędkość względem ziemi | W węzłach (wewnętrznie przeliczana na m/s) |
| Kąt drogi | Azymut rzeczywisty w stopniach |
Obsługiwane identyfikatory nadawcy: GPRMC, GNRMC
GSA - wartości DOP i aktywne satelity GNSS
Podaje wartości rozmycia dokładności oraz to, które satelity biorą udział w wyznaczeniu pozycji.
| Pole | Dane |
|---|---|
| Tryb | A = automatyczny, M = ręczny |
| Typ fixa | 1 = brak fixa, 2 = fix 2D, 3 = fix 3D |
| Numery PRN satelitów | Do 12 identyfikatorów satelitów użytych w rozwiązaniu |
| PDOP | Przestrzenne rozmycie dokładności |
| HDOP | Poziome rozmycie dokładności |
| VDOP | Pionowe rozmycie dokładności |
Odbiorniki zgodne z NMEA 4.10 i nowszym zawierają pole identyfikatora systemu (pole 19) pozwalające rozróżnić konstelacje.
Obsługiwane identyfikatory nadawcy: GPGSA, GNGSA, GLGSA, QZGSA, BDGSA, GBGSA
GSV - satelity GNSS widoczne
Dostarcza szczegółowe informacje o każdym widocznym satelicie - służą do zbudowania wykresu nieba i wykresu słupkowego sygnału w panelu informacji GPS.
| Pole | Dane |
|---|---|
| Satelity widoczne | Łączna liczba dla tej konstelacji |
| Numer PRN satelity | Identyfikator |
| Wysokość | Stopnie nad horyzontem (0-90) |
| Azymut | Stopnie od północy geograficznej (0-360) |
| SNR | Stosunek sygnału do szumu w dB-Hz (0-99) |
Każde zdanie GSV zawiera dane maksymalnie czterech satelitów, a pełny zestaw tworzy kilka zdań.
Obsługiwane identyfikatory nadawcy: GPGSV, GLGSV, GAGSV, QZGSV, BDGSV, GBGSV
GST - statystyki błędów pseudoodległości GNSS
Dostarcza statystyczne oszacowania dokładności. To podstawowe źródło wartości dokładności RMS wyświetlanych w panelu informacji GPS.
| Pole | Dane |
|---|---|
| RMS | Błąd średniokwadratowy reszt pseudoodległości |
| Półoś wielka / mała błędu | Osie elipsy błędu w metrach |
| Orientacja | Obrót elipsy błędu w stopniach |
| Błąd 1 sigma szerokości | Odchylenie standardowe w metrach |
| Błąd 1 sigma długości | Odchylenie standardowe w metrach |
| Błąd 1 sigma wysokości | Odchylenie standardowe w metrach |
Na podstawie tych wartości aplikacja wylicza:
- HRMS = pierwiastek(błąd_szer^2 + błąd_dł^2)
- VRMS = błąd_wysokości
- RMS 3D = pierwiastek(błąd_szer^2 + błąd_dł^2 + błąd_wysokości^2)
VTG - kurs i prędkość względem ziemi
Wykorzystywane wewnętrznie do przesuwania automatu stanów NMEA, oznaczając koniec sekwencji zdań.
Obsługiwane identyfikatory nadawcy: GPVTG, GNVTG
GLL - pozycja geograficzna
Dostarcza szerokość i długość geograficzną wraz z czasem UTC. Wykorzystywane wyłącznie wtedy, gdy odbiornik nie wysyła ani GGA, ani RMC.
Obsługiwane identyfikatory nadawcy: GPGLL, GNGLL
GNS - dane fixa GNSS
Wielosystemowy odpowiednik GGA zawierający wskaźnik trybu dla każdej konstelacji. Odpowiednio aktualizuje stan NMEA.
PNVGSDP - firmowe zdanie dokładności
Firmowe zdanie (zgodne z NovAtel) podające odchylenia standardowe szerokości, długości i wysokości oraz znak trybu fixa:
| Tryb | Znaczenie |
|---|---|
A | Autonomiczny |
D | Różnicowy |
F | RTK Float |
R | RTK Fixed |
E | Zliczanie drogi |
N | Brak fixa |
Priorytet zdań
Analizator korzysta z automatu stanów, aby nie mieszać danych z różnych epok pomiarowych. Gdy kilka typów zdań dostarcza pokrywające się dane, obowiązuje następujący priorytet:
- GGA - preferowane dla pozycji i jakości fixa
- RMC - używane, gdy brak GGA (dostarcza prędkość i azymut, których nie ma w GGA)
- GLL - ostateczność, wyłącznie dla pozycji
Weryfikacja sumy kontrolnej
Każde zdanie NMEA kończy się dwuznakową szesnastkową sumą kontrolną poprzedzoną znakiem *. Sumę wylicza się przez operację XOR na wszystkich bajtach między $ a *:
$GPGGA,120000,...*47
↑ XOR tych bajtów ↑
Analizator sprawdza format sumy kontrolnej, ale podchodzi do weryfikacji pragmatycznie - zdania z drobnymi usterkami formatowania są nadal przetwarzane, aby zapewnić maksymalną zgodność z szeroką gamą dostępnych na rynku odbiorników GNSS.