GPS
systém pro globální lokalizaci
Znalost pozice je velice důležitá nejenom v robotice, ale i např. ve vojenství. Z tohoto důvodu byl americkou armádou před více jak třiceti lety vyvinut systém pro lokalizaci označovaný jako GPS (Global Position System). V dnešní době je informace o pozici volně dostupná každému, kdo má GPS přijímač (nejlevnější jsou tak okolo 2000Kč) a tak se množství GPS aplikací značně rozšířilo…
Problematika satelitní navigace je značně rozsáhlá a existuje o ní i několik
dobrých zdrojů v češtině. Zájemcům bychom např. doporučili skripta ČVUT:
Rádiové určování polohy (Družicový systém GPS) Hrdina, Pánek, Vejražka. Zde
se momentálně soustředíme pouze na pár detailů, které by mohly být nápomocny
účastníkům outdoor soutěže RoboTour. V budoucnu
očekáváme postupné rozšiřování textu…
O čem tedy bude řeč? Nejprve se podíváme na formát NMEA-0183, ve kterém předává
informace o pozici většina komerčně dostupných GPS přijímačů. Dále se budeme
věnovat zjišťování přesnosti pozice, konkrétně co přesně znamená PDOP
(Positional Dilution of Precision).
Formát NMEA-0183
NMEA — National Marine Electronics Association (národní asociace pro námořní
elektroniku) vytvořila standard, který definuje rozhraní mezi elektronickými
zařízeními používanými pro lodní dopravu. Tento standard umožnuje výměnu
informací mezi počítačem a různými zařízeními, v našem případě GPS přijímačem.
V NMEA-0183 formátu jsou data posílána po řádcích. Každý řádek začína znakem '$',
následuje dvojpísmenná zkratka zařízení (GP = GPS) a dále trojpísmenný kód
určující formát zprávy. Každý řádek pak končí hvězdičkou a hexadecimálně
zapsaným kontrolním součtem (XOR všech znaků na řádku mezi '$' a '*'). Délka
řádku je omezena na maximálně 80 znaků a jednotlivé položky jsou od sebe
odděleny čárkami.
Ze všech možných formátů NMEA vět (viz třeba
Glenn Baddeley - GPS -
NMEA sentence information) nás bude zajímat pouze několik nejčastějších —
RMC (základní informace o pozici), GGA (rozšířené informace o pozici včetně
nadmořské výšky, odhadované chyby či počtu viditelných satelitů), GSA a GSV
(informace o statelitech).
RMC věty
RMC je zkratka pro Recommended minimum specific GPS/Transit data a je to
tedy jakési doporučené minimum, které by měla poskytovat většina GPS zařízení.
Příklad věty může být např.:
$GPRMC,181038.0,A,5006.3171,N,01425.6622,E,0.00,42.00,150606,,*37
- 181038.0 - určuje čas, konkrétně 18:10:38.0 UTC
- A - status (A=active, V=void) platná či neplatná pozice
- 5006.3171,N - latitude: 50 stupňů, 6.3171 minut, severní šířky
- 01425.6622,E - longitude: 14 stupňů, 25.6622 minut, východní délky
- 0.00 - rychlost v námořních uzlech
- 42.00 - azimut ve stupních
- 150606 - datum 15. června 2006
- chybí záznam o magnetickém rozptylu
- a jeho směru (W nebo E)
GGA věty
Druhá nejpoužívanější GPS věta má zkratku GGA, Global Positioning System
Fix Data. Opět použijeme příkladu:
$GPGGA,161016.000,5005.0334,N,01430.3369,E,1,06,2.1,242.9,M,45.5,M,,0000*5C
- 161016.000 … stejné jako u RMC, čas a souřadnice
- 5005.0334,N
- 01430.3369,E
- 1 - kvalita pozice (0 invalid, 1 GPS, 2 DGPS)
- 06 - počet sledovaných satelitů
- 2.1 - relativní chyba v horizontálním směru (Horizontal Dilution of Precision)
- 242.9,M - nadmořská výška v metrech
- 45.5,M - výška geoidu nad WGS84 elipsoidem (45.5m)
- chybí doba od poslední DGPS korekce
- 0000 - chybí ID referenční DGPS stanice
GSA a GSV věty
Pokud vás zajímá seznam satelitů a síla signálu, tak tuto informaci lze nalézt
v GSA (GPS DOP and Active Satellites) a v GSV (GPS Satellites in View)
větách:
$GPGSA,A,3,26,08,18,29,28,09,,,,,,,2.9,2.1,1.9*3F
- A,3 - Automatic mode v 3D pozicí (M = Manual, 1 = chybí pozice, 2 = pouze 2D pozice)
- 26,08,18,29,28,09,,,,,,, - kódy viditelných satelitů (maximálně 12)
- 2.9 - chyba pozice (Positional Dilution of Precision)
- 2.1 - horizontální chyba (Horizontal Dilution of Precision)
- 1.9 - vertikální chyba (Vertical Dilution of Precision)
$GPGSV,3,1,09,29,82,232,26,26,77,279,33,28,57,070,32,08,29,077,24*77
$GPGSV,3,2,09,18,22,314,25,09,21,269,18,17,20,128,11,10,16,197,*71
$GPGSV,3,3,09,27,06,085,11*4E
- 3,1 - celkový počet zpáv 3, toto je zpráva 1
- 09 - počet satelitů ve výhledu
- 29,82,232,26 - PRN číslo satelitu, elevace ve stupních (90max), azimut 000..359, síla signálu dB 00..99
- 26,77,279,33 … stejný význam jako u předešlé čtveřice
- 28,57,070,32
- 08,29,077,24
Maximálně 4 satelity v jedné větě.
Přesnost GPS pozice
Přesnost GPS pozice závisí nejen na schopnostech měření doby letu signálů, ale
také na množství viditelných satelitů a jejich geometrické konfiguraci.
Představíte-li si 2D případ, kdy by výsledná pozice byla průnikem tří kružnic
(známe jejich středy — pozice satelitů, a relativní rozdíly poloměrů). Naše
měření jsou však nepřesná a tak místo kružnic počítáme průsečíky tří
mezikruží. Výsledný průnik má pak nenulový obsah a jeho velikost záleží jak
na chybě jednotlivých měření, tak na vzájemné poloze satelitů.
Chceme-li tuto geometrickou nepřesnost nějak uchopit, tak k popisu použijeme
místo kružnic první členy Taylorovy řady v okolí bodu blízkého očekávaného
průsečíku R0. Průsečík mezikruží tak nahradíme průsečíkem pásů.
Matematicky pak můžeme úlohu popsat pomocí matic, kde nás, za předpokladu
nekorelovaných chyb měření, zajímá pouze matice C, jejiž řádky jsou normované
vektory (satelit,R0). Výsledná kovarianční matice P = sigma^2 * (C^T*C)^-1.
Posledním krokem je určení chyby v místní souřadné soustavě (zeměpisná délka,
šířka a výška). To lze provést transformací souřadnic vektorů pro matici C, a
pak členy na diagonále (rozptyly chyb času a polohových souřadnic sigmaSever,
sigmaVýchod, sigmaVýška) odpovídají PDOP (odmocnina se součtu čtverců
sigmaSever, sigmaVýchod a sigmaVýška), HDOP (odmocnina ze součtu čtverců
sigmaSever a sigmaVýchod) a VDOP (sigmaVýška).
Podrobnější informace o výpočtu zhoršení přesnosti PDOP naleznete ve dříve
zmíněných skriptech: Rádiové určování polohy (Družicový systém GPS) Hrdina,
Pánek, Vejražka, str. 42.
Linky
- Glenn Baddeley - GPS - NMEA sentence information
- http://www.gpsinformation.org/dale/nmea.htm
- http://www.nmea.org/
- Geometric Dilution of Precision
- GPS (wikipedia)
Generování C/A kódu
Každá 1023 bitů dlouhá sekvence je XOR dvou 1023 bitových vzorů G1 a G2i. G2i
je pak generována z kódu G2 s posunem od 5 do 950. G1 a G2 se generují pomocí
10 urovňového posuvného registru, který odpovídá polynomům:
- G1 = X10 + X3 + 1
- G2 = X10 + X9 + X8 + X6 + X3 + X2 + 1
Počáteční hodnota posuvných registrů je 1111111111. Celkem je vybráno 36 PRN
(Pseudo Random Noise) kódů.