czech english

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


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ů.