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:
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:
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
exgps
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:
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
uruchomienia programu pod wine i wskazanie COM1 jako portu odbiornika gps.
Jak przykład pokazano program
GPSMapEdit wraz z mapą
UMP WarszawaGpsbabel
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
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 ;).
KismetInstalujemy (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
UMPGPSMapEditKismetSpis aplikacji związanych z GPS pod linuksa