Mis keelt räägivad GPS–id?

(Arvutimaailm 2/04)

Kuigi enamus GPS–e räägib oma „emakeelt” — (Garmini, Magellani, Trimble jne protokollid), oskavad nad enamasti kõik ka „esperantot” — NMEA protokolli.

NMEA — National Marine Electronics Association — on mittetulunduslik ühendus, mis koondab mereelektroonika arengust huvitatud seademete tootjaid, edasimüüjaid, haridusasutusi jne. See on üldkasutatav protokoll mereinstrumentide omavaheliseks suhtlemiseks. Tegelikult sobib ta väga hästi ka maismaal kasutatavate GPS–ide jaoks. Tavaliselt ootame GPS–ilt lihtsalt oma asukohta tähistava punkti näitamist ekraanil või GIS–is, aga vahel on vaja näha ka „toorinfot”, mida vastuvõtja tekitab: näiteks selle kohta, kas aparaat töötab õigesti või andmete importimiseks tabelisse ja teistesse programmidesse.

Formaadid

NMEA formaate on mitu — 0180, 0182 (limiteeritud võimalustega) ning NMEA–0183, mille puhul edastatakse ASCII teksti kiirusel 4800 baudi. Andmed edastatakse lausenditena, mis algavad $–märgiga. Sellele järgneb kahetäheline seadme ID (näiteks: GP — GPS–vastuvõtja, LC — Loran–C vastuvõtja jne) ning rida komadega eraldatud andmevälju ning lõpuks kontrollsumma. Lausendi pikkus on kuni 82 märki. Puuduv info tähistatakse lausendis „null–baidiga” — kahe välju eraldava koma vahel lihtsalt ei ole midagi. Erinevad GPS–i mudelid on võimelised väljastama erinevat hulka lausendeid.

Kuidas kuulata GPS–i juttu?

Selleks tuleb vastuvõtja seada eksportima andmeid NMEA 0183 formaadis, ühendada see arvuti pordiga (NMEA edastamiseks on mõeldud järjestikport RS–232) ning käivitada terminalprogramm. Kui arvutis spetsiaalset tarkvara ei juhtu olema, siis võib kasutada kasvõi Windowsi HyperTerminali. Vaatame seda Windows XP näitel.

Menüüst Start valitakse Accessories, Communications, HyperTerminal. Ühendusele tuleb valida nimi ja ikoon ning Connect To dialoogikastis „Connect Using” rippmenüüst „Direct to ComX” (kus X on vaba pordi number) või „USB”. Seadetes tuleb määrata: Bits per Second to 4800, 8 bits, Parity NONE, Stop Bits 1, and Flow Control NONE (kui GPS–i juhendis ei ole öeldud teisiti) ja salvestada. Pordiga ühendatud GPS tuleb seada väljastama NMEA 0183 infot samal kiirusel (antud juhul baud rate 4800). Seejärel valida HyperTerminalis teksti kogumiseks vajaliku faili loomiseks Transfer ja Capture Text. Nüüd peaks näha olema rida rea järel kogunevaid andmeid. Kõike seda tuleks muidugi teha nii, et GPS ka satelliitidelt signaali saaks.

Tegelikult on lisaks Hyper Terminalile täiesti vabalt saadaval terve rida NMEA kogumiseks mõeldud programme. Proovida võiks järgmisi.

VisualGPS võimaldab logida ja taasesitada NMEA lausendeid, aga sellega saab ka visualiseerida satelliitide asendit, HDOP ja VDOP väärtusi, standardset kõrvalekallet, signaali kvaliteeti (signal to noise ratio), laius– ja pikkuskraadi seansi ajal. VisualGPS logib järgmisi NMEA 0183 lausendid: GPGGA, GPGSA ja GPGSV.

CommLinx Solutions pakub asjaliku programmi GPSDiagnostics, mis lisaks NMEA logimisele ja taasesitamisele näitab veel UTC aega, pikkus– ja laiuskraadi, kiirust, kõrgust, kurssi, signaali kvaliteeti, magnetilist deklinatsiooni jpm. Samuti leiab nende veebilehelt väga põhjalikke seletusi ja kirjeldusi NMEA kohta.

Samuti võib katsetada: NMEATool, GPSNMEA, NMEAgent jt. NMEA monitor olemas ka populaarsel programmil GPS Utility. Macikasutajatele peaks sobima GPSy.

Millest GPS pajatab?

GPS–vastuvõtjate väljastatavates andmetes võib sõltuvalt tootjafirmast olla väikeseid erinevusi, aga üldine kommunikatsiooniprotokoll on määratud National Marine Electronics Associationi standardiga NMEA 0183. Paljud vastuvõtjad võimaldavad valida väljastatavate lausendite tüüpi, sagedust jms. Üldiselt aga algab iga lausend identifikaatoriga ja lõpeb kontrollsummaga. Tavalisteks identifikaatoriteks on:

$GPGGA — satelliidi signaali tuvastamine (vastuvõtja kella, asukoha ja kõrguse fikseerimine);

$GPGLL — asukoha andmete lugemine (täpsustamine);

$GPGSA — satelliitide geomeetria ehk paiknemine taevalaotuses ja „aktiivsed” satelliidid (satelliidid, mille signaali kasutatakse vastuvõtja positsioneerimiseks;

$GPRMC — seadme tööks vajalik minimaalne hulk andmeid, mis kogutakse vähemalt kolmelt aktiivselt satelliidilt. Määratakse vastuvõtja aeg, asukoht ja liikumiskiirus;

$GPVTG — liikumise suund maapinnal (NOSW ehk ilmakaarte suhtes), kurss ja liikumise kiirus maapinnal (taustaks liikumatu maapind);

$GPZDA — kellaaeg ja kuupäev.

Osa informatsiooni võib sisalduda mitmetes lausendites — näiteks geograafilise asukoha andmed sisalduvad $GPGGA, $GPGLL ja $GPRMC lausendites jne.

Analoogselt saab deshifreerida teisigi GPS–ide poolt väljastatavaid lausendeid — CSV, GSV, GLL jt. Lähemalt ei hakka neil siinkohal peatuma, sest vastavaid kirjeldusi leiab iga huviline kasvõi Internetist piisavalt.

Näide

Et GPS–i juttu analüüsida, kogusin veidi seda folkloori Magellan SporTraki baasmudeli, sülearvuti ja GPS Utility abiga. GPS–is valisin NMEA versiooniks V2.1 GSA. Arvestada tuleb, et erinevad seadmed väljastavad NMEA lausendeid veidi erinevalt. Tulemus oli järgmine:

$GPRMC,124630.89,A,5821.1975,N,02640.5212,E,08.2,167.3,010204,07,E*4C

$GPGSA,A,3,21,15,16,18,06,02,03,10,29,,,,02.3,01.8,01.5*0A

$GPGSV,3,1,10,21,78,149,49,16,56,258,48,02,41,293,43,15,36,226,49*72

$GPGSV,3,2,10,06,33,116,45,18,27,158,46,03,22,286,41,10,16,034,41*74

$GPGSV,3,3,10,29,13,069,36,27,09,349,,120,14,227,,131,16,138,39*7C

$GPGLL,5821.1952,N,02640.5222,E,124631.894,A*34

$GPGGA,124631.89,5821.1952,N,02640.5222,E,2,09,1.8,00067,M,,,,*27

jne.

Olulisemad on lausendid, mis sisaldavad RMC (miinimum GPS–info), GGA (signaali tuvastamine) või GSA (satelliitide staatus ehk aktiivsed satelliidid) identifikaatoreid.

1. RMC

$GPRMC,124630.89,A,5821.1975,N,02640.5212,E,08.2,167.3,010204,07,E*4C, kus:

• $GPRMC = identifikaator;

• 124630.89 = UTC (Coordinated Universal Time) aeg vormingus hhmmss.ss (12 tundi, 46 minutit ja 30.89 sekundit);

• A = staatus (A = andmed on usaldusväärsed, V = hoiatus);

• 5821.1975,N = põhjalaius formaadis ddmm.mmmmmm (58 kraadi ja 21.1975 minutit põhjalaiust);

• 02640.5212,E = idapikkus samas formaadis (026 kraadi ja 40.5212 minutit idapikkust);

• 08.2 = liikumiskiirus sõlmedes;

• 167.3 = suundumus ehk seadme sisselülitamisest liikumise vektorsuund (summeerib kõrvalekalded ja sinka–vonkad);

• 010204 = kuupäev ddmmyy formaadis (1. veebruar 2004);

• 07,E = magnetiline deklinatsioon kraadides ja selle suund (kui on teada lähiümbruse magnetiline anomaalia, siis võib sisestada vastava veaparanduse). Sõltub piirkonnast. Eesti piires näiteks erineb keskmiselt 1–5 kraadi, aga kohati esineb kuni 12 kraadist anomaaliat ehk kõrvalekallet tegelikust magnetilisest põhjasuunast;

• *4C = * järgneb kontrollsumma.

Kui mingit osa andmetest ei ole võimalik kätte saada, jäetakse andmeväli komade vahel tühjaks.

GGA — põhilised signaali tuvastamise andmed, mis sisaldavad infot asukoha (3D) ja täpsuse kohta

2. GGA

$GPGGA,124631.89,5821.1952,N,02640.5222,E,2,09,1.8,00067,M,,,,*27, kus:

• $GPGGA = identifikaator;

• 124631.89 = UTC aeg;

• 5821.1952,N = põhjalaius;

• 02640.5222,E = andmete kvaliteet (0 = puudub, 1 = GPS, 2 = DGPS jne);

• 09 = satelliitide arv;

• 1.8 = HDOP (horizontal dilution of precision — horisontaalne täpsuskadu);

• 00067,M = kõrgus meetrites üle keskmise maailmamere nivoo ehk 0–punkti. Läänemeres siis ”Kroonlinna 0”;

• ,,, = puudu on antud juhul geoidi kõrgus, aeg sekunditest viimasest DGPS–parandusest ja DGPS–jaama ID;

• *27 = kontrollsumma.

Kuna geoidi kõrgus puudub, siis on ka kõrgus meetrites veidi kaheldav. Samas on GGA–lausend ainuke, milles sisaldub kõrgus.

Juhul kui GPS satelliitidelt signaali ei saa, näeks GGA–lausend välja selline:

$GPGGA, 124631.89,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,,,,0000*00

3. GSA

$GPGSA,A,3,21,15,16,18,06,02,03,10,29,,,,02.3,01.8,01.5*0A, kus:

• A = 2D või 3D automaatne valik (M = käsitsi)

• 3 = 3D lukustus (1 = lukustus puudub, 2 = 2D, 3 = 3D)

• 21,15,16,18,06,02,03,10,29 = kasutatud satelliitide PRN–d (ruumi on 12–le, vabad kohad hetkel tühjaks jäetud)

• 02.3 = PDOP (dilution of precision — täpsuskadu);

• 01.8 = HDOP (horizontal dilution of precision — horisontaalne täpsuskadu);

• 01.5 = VDOP (vertical dilution of precision — vertikaalne täpsuskadu);

• *0A = kontrollsumma.

Milleks see kõik?

Tavakasutajale ei ütle NMEA sümbolite ja numbrite jada midagi. Kes on GPS–e rohkem kasutanud, oskab juba hinnata oma asukoha täpsust ja tõenäosust, kui teab aktiivsete satelliitide arvu ja signaali tugevusi.

Professionaalidele mõeldud seadmed näitavad reeglina rohkem infot, et kasutaja saaks kohapeal välitöid tehes hinnata oma mõõdistamiste tulemuslikkust. Üsna kulukas ja ahastamapanev on sama tööd uuesti tegema sõita, kui kogutud andmed osutuvad hiljem ebausaldusväärseteks.

NMEA signaali kasutades saab programmeerida vastuvõtjaid ja neid toetavaid seadmeid (PDA, mobiiltelefon, laptop, PC jne). Kui mõnes programmis on kasutajale vaja pidevalt VDOP–i vms näidata, siis loetakse vastavad andmed just NMEA koodist ja esitatakse ekraanil. Samuti saab välistada liigse info kuvamist, kui kasutajat huvitavad vaid hetke asukoha X ja Y koordinaadid.

NMEA logid salvestatakse kas GPS–is või erinevates programmides. Vajadusel pakitakse andmed kokku ja saadetakse onlainis teistele kasutajatele või operaatoritele.

Sellised andmed liiguvad läbi GPRS–ide, kui jälgitakse näiteks autode või rongide liikumist. Sõidukil tulevad GPS–i, kütusepaagi jt jälgitavate osade anduritest signaalid, mis pakitakse sobivas formaadis kokku ja saadetakse läbi SMS või GPRS ühenduse kasvõi tuhandete kilomeetrite taha. Adressaadi vastuvõtjas pakitakse andmed lahti ja kuvatakse liikuva punktina kaardile. NMEA andmed ka salvestatakse, need võtavad üsna vähe mäluruumi ja vajadusel saab GPS– vastuvõtja liikumist taasesitatada ka aastaid hiljem.

Väikse mudelina toimib NMEA protokolli töötlus ja visualiseerimine igas GPS–seadmes, mida Eestis järjest julgemalt kasutatakse. Tuleb vaid hankida GPS, kaabel ja arvutisse mõni eelpool toodud programm, et seda kõike oma silmaga vaadata.

Lingid:

Kasutame veebilehel nn Cookie´sid, et toetada tehnilisi funktsioone ja pakkuda sellega paremat kasutajakogemust.

Kasutame ka andmeanalüütikat ja reklaamiteenuseid. Klõpsa nupul Rohkem teavet, kui tahad lähemalt teada.