czyli co można zrobić z GPS pod linuksem
Ostatnia zmiana: 2013-11-26 18:43

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

- połączyć się z GPSem


    # rfcomm connect rfcomm0 xx:xx:xx:xx:xx:xx

Jeżeli chcemy na stałe zaszyć parametry połączenia, można wyedytować plik /etc/bluetooth/rfcomm.conf:


    rfcomm0 {
        bind yes;
        device xx:xx:xx:xx:xx:xx;
        channel 1;
        comment "GPS";
    }

a następnie ponownie uruchomić serwis bluetooth.

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

Jeżeli urządzenia nie zostały wcześniej sparowane, to system może żądać wprowadzenia hasła pin. Dla gpsów jest to zwykle 0000 lub 1234.

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

Następnie należy go skonfigurować - dla debiana należy wyedytować plik /etc/defaults/gpsd i jako DEVICE podać /dev/bluetooth/rfcomm/0 (lub /dev/rfcomm0 jeżeli wykorzystujemy udev'a). Następnie należy uruchomić ponownie demona gpsd (należy pamiętać o wcześniejszym podłączeniu bluetootha do GPS!)
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

a następnie wydać polecenie r. Powinniśmy zobaczyć na ekranie sekwencje NMEA podobne jak w poprzednim połączeniu. Przerwanie połączenia to Ctrl-C, wyjście w telnetu to e

xgps

Jest częścią pakiety gpsd i pozwala na wizualizację sekwencji NMEA do postaci graficznej. Instalujemy pakiet gpsd-clients


    # aptitude install gpsd-clients

a następnie, jeżeli gpsd jest uruchomiony na tym samym komputerze, uruchamiamy program poleceniem xgps. Przykładowy zrzut ekranu:

image

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.

image

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

uruchomienia programu pod wine i wskazanie COM1 jako portu odbiornika gps.
Jak przykład pokazano program GPSMapEdit wraz z mapą UMP Warszawa

image

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

Zobacz też GPS Info dla maemo-mapper - to jest jest program linuksowy!

maemo-mapper

Oficjalnie program przeznaczony jest dla Nokii 770, ale powstał port na "normalne" gtk dla zwykłych maszyn patrz opis

Qlandkarte

Program odczytujący mapy w formacie IMG (garmina), czyli np. UMP będzie działała czy inne mapy dostępne w internecie.
image

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

Instalując dodatkowo GPSDrive i MySQL można zbierać dane, a następnie całość wyświetlić w postaci mapy, np GoogleEarth. Przykładowy przepis zawarty jest na stronie http://www.larsen-b.com/Article/212.html czy http://www.niquille.com/kismet-earth/

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 UMP
GPSMapEdit
Kismet
Spis aplikacji związanych z GPS pod linuksa