Zabawy z GPS
czyli co można zrobić z GPS pod linuksemOstatnia zmiana: 2009-03-11 17:06
1. Technikalia
1.1. Podłączenie
1.2. Sprawdzenie połączenia
2. Oprogramowanie
2.1. gpsd
2.2. xgps
2.3. cgps
2.4. gpsdrive
2.5. wine
2.6. Gpsbabel
2.7. maemo-mapper
2.8. Qlandkarte
2.9. Navit
2.10. tangoGPS
3. Zabawy
3.1. Wizualizacja sieci WiFi
3.2. Czas
4. Linki
Co to jest GPS nie trzeba chyba już dziś nikomu tłumaczyć. Większość postrzega GPS jako narzędzie do nawigacji satelitarnej (w szczególności, także turystyki pieszej, rowerowej, wodnej itd.), niektóry mają też na myśli, ze dzięki temu można namierzyć np. samochód (niestety, potrzebne są też inne elementy do tego; sam GPS nie wystarczy). A co można zrobić z GPSem w linuksie? Oto niektóre z przykładów.
Technikalia
Sam odbiornik GPS należy najpierw dołączyć do komputera. Najczęściej spotyka się odbiorniki na złączu RS232C (popularny com - serial), USB lub bluetooth. W moim przypadku był to odbiornik Nokia LD-3W z interfejsem bluetooth. Z drugiej strony był laptop z no-name crs'owym dongle bluetooth podłączanym przez USB. Wymagane jest zainstalowanie i poprawne skonfigurowanie interfejsu bluetooth w komputerze (zwykle sprowadza się do instalacji pakietu bluez); system operacyjny to debian unstable z jądrem 2.6.16. Instalacja i konfiguracja bluetooth opisana jest w dokumencie PPP over GPRS.Podłączenie
- włączyć odbiornik GPS, jeżeli jest to wymagane to włączyć go w tryb poszukiwania urządzeń (zobacz instrukcję odbiornika)- uruchomić polecenie szukania urządzeń bluetooth
# hcitool scan
xx:xx:xx:xx:xx:xx Nokia LD-3W
# rfcomm connect rfcomm0 xx:xx:xx:xx:xx:xx
rfcomm0 {
bind yes;
device xx:xx:xx:xx:xx:xx;
channel 1;
comment "GPS";
}
Zobacz też informacje o połączeniu palmtopa Mio168 z windowsem ce i odbiornikiem GPS poprzez USB.
Sprawdzenie połączenia
Należy po prostu sprawdzić, czy odbiornik wysyła odpowiednie sekwencje NMEA (dla uproszczenia przyjęto, że odbiornik pracuje już w tym trybie. Jeżeli nie - zobacz instrukcję odbiornika jak przełączyć go w ten tryb). Do tego celu wystarczy zwykłe polecenie cat:
# cat < /dev/bluetooth/rfcomm/0
$GPGGA,155710.771,5207.8202,N,02104.0670,E,1,03,2.1,119.0,M,39.1,M,,0000*56
$GPGSA,A,2,28,22,29,,,,,,,,,,2.3,2.1,1.0*31
$GPGSV,3,1,11,26,73,222,,29,69,200,15,28,52,064,32,17,33,128,*78
$GPGSV,3,2,11,09,28,279,20,18,24,305,,08,23,090,,22,05,337,25*79
$GPGSV,3,3,11,11,02,056,21,10,01,200,,27,00,097,19*4A
$GPRMC,155710.771,A,5207.8202,N,02104.0670,E,1.28,291.48,290606,,,A*60
$GPGGA,155711.771,5207.8259,N,02104.0575,E,1,03,2.1,140.7,M,39.1,M,,0000*54
$GPGSA,A,2,28,22,29,,,,,,,,,,2.3,2.1,1.0*31
$GPGSV,3,1,11,26,73,222,,29,69,200,16,28,52,064,32,17,33,128,*7B
$GPGSV,3,2,11,09,28,279,20,18,24,305,,08,23,090,,22,05,337,25*79
$GPGSV,3,3,11,11,02,056,21,10,01,200,,27,00,097,18*4B
$GPRMC,155711.771,A,5207.8259,N,02104.0575,E,1.59,263.96,290606,,,A*61
$GPGGA,155712.771,5207.8304,N,02104.0507,E,1,03,2.1,153.4,M,39.1,M,,0000*5A
...
Oprogramowanie
Wymieniono tylko te, które moim zdaniem są najciekawsze i, co ważniejsze, działające.gpsd
Jeden z ważniejszych programów aspirujących do pełnienia standardem połączenia gps z linuksem (jak sane dla skanerów czy cups dla drukarek). Pełni rolę pomostu pomiędzy "surowym" urządzeniem gps a aplikacjami wymagającymi sekwencji NMEA. Instalacja jest jak zwykle prosta:
# aptitude install gpsd
Demon gpsd "słucha" na porcie 2947, więc żeby go sprawdzić należy się po prostu do niego podłączyć telnetem:
# telnet localhost 2947
xgps
Jest częścią pakiety gpsd i pozwala na wizualizację sekwencji NMEA do postaci graficznej. Instalujemy pakiet gpsd-clients
# aptitude install gpsd-clients

Program do działania wymaga demona gpsd.
cgps
"Odpowiednikiem" xgps dla konsoli tekstowej jest cgps. Podaje te same informacje co xgps.gpsdrive
Kolejny program mający aspirację pełnić programu nawigacyjnego. Pracuje ma mapach rastrowych (czyli zwykłych bitmapach, skanach), pozwala na nawigację i prezentację drogi. Niestety, nowa wersja nie pojawiła się już od kilku lat, ale rozwijanie tego programu odbywa się bardzo powoli. Program do działania wymaga demona gpsd, ale umie także bezpośrednio obsługiwać połączenia z gpsem.

wine
Jeżeli mamy program który daje się uruchomić pod wine, to prawdopodobnie będzie także działał z naszym gpsem. Cała konfiguracja wine sprawdza się do przypisania naszego połączenia do portu szeregowego (np com1):
$ ln -s /dev/bluetooth/rfcomm/0 $HOME/.wine/devices/com1
Jak przykład pokazano program GPSMapEdit wraz z mapą UMP Warszawa

Gpsbabel
Do tłumaczenia formatów plików można użyć gpsbabel. Pakiet dostępny jest w debianie.Przykład wywołania (gpx na ozi)
$ gpsbabel -i gpx -f plik.gpx -o ozi -F plik.plt
maemo-mapper
Oficjalnie program przeznaczony jest dla Nokii 770, ale powstał port na "normalne" gtk dla zwykłych maszyn patrz opisQlandkarte
Program odczytujący mapy w formacie IMG (garmina), czyli np. UMP będzie działała czy inne mapy dostępne w internecie.
Navit
Program opensource do nawigacji. Potrafi rysować mapy z różnych źródeł (OSM, Garmin), potrafi nawigować. Wielojęzyczny. http://www.navit-project.org/Niestety, program jest w powijakach i jego ergonomia i działanie pozostawia wiele do życzenia
tangoGPS
http://www.tangogps.org/gps/cat/About - Nie potrafi nawigować, ale podobnie jak maemo-mapper potrafi samodzielnie ściągać i wyświetlać mapy z GoogleMaps, OSM czy UMPpcPL. Za jego pomocą można też robić mapy dla OSM.Zabawy
Do czego można jeszcze użyć GPSa?Wizualizacja sieci WiFi
Znane chyba większości posiadaczy kart WiFi skaner kismet ma możliwość dołączenia informacji w współrzędnych wykrytych sieci WLAN. Oczywiście bezsensu do zastosowań domowych kiedy siedzimy w jednym miejscu, ale przydatne jeżeli chcemy zrobić mapę hotspotów czy do wardriving/warchalking (just for fun - do celów edukacyjnych ;).Kismet
Instalujemy (aptitude install kismet) i konfigurujemy kismeta. Konfiguracja zależy od posiadanej karty WLAN; oczywiście należy posiadać kartę która może przejść w tryb Monitor (rfmon - orinoco i jej klony, Intel 2200GB, Karty oparte o chip Prism2/2.5/3 itd. - szczegóły w dokumentacji kismeta). Jeżeli kismet działa poprawnie, należy dokonać drobnych zmian w pliku konfiguracyjnym:
gps=true
waypoints=true
waypointdata=~/.gpsdrive/way.txt
Czas
Dane z systemów GPS zawierają aktualną godzinę i datę, można więc pokusić się o stworzenie serwera czasu opartego o GPS (szukaj w internecie pod hasłem Linux PPS)Linki
Polska mapa UMPGPSMapEdit
Kismet
Spis aplikacji związanych z GPS pod linuksa