2013-06-29

Implementacja i wykorzystanie mapy cyfrowej w systemach internetowych

System nawigacji satelitarnej od czasu powstania przechodził wiele przeobrażeń. Udoskonalano satelity będące podstawą systemu, jak również (głównie) zdecydowanie ulepszono technologie stosowane w odbiornikach GPS. Coraz dokładniej potrafiono określać położenie poszczególnych obiektów, dzięki stosowaniu coraz bardziej ulepszonych algorytmów i technologii. Wraz z tą ewolucją technologia GPS zyskiwała coraz większe spektrum zastosowań. Obok projektów wojskowych (aktualizacja strategicznych rejonów map, akcje ratunkowe, lokalizacja żołnierzy, niszczenie strategicznych celów nieprzyjaciela, pociski samonaprowadzające, lokalizacja miejsc ataków jądrowych, itp.) system GPS znalazł swoje zastosowanie również w sferze cywilnej zarówno na lądzie (logistyka, ratownictwo, rolnictwo rekreacja, geodezja, ochrona mienia, budownictwo, itp.), powietrzu (ratownictwo lotnicze, lotnictwo, fotogrametria, itp.) jak i wodzie (batymetria, hydrografia, rybołówstwo, ratownictwo morskie, żegluga, itp.). Pomimo mnogości i różnorodności zastosowań, większość z nich spotyka się w tym samym punkcie – w momencie wizualizacji danych na mapie cyfrowej. Obecnie jednymi z najbardziej popularnych są sieciowe mapy cyfrowe dostępne za pomocą interfejsu przeglądarki internetowej. Wśród nich możemy wyróżnić serwis Google Maps oraz Open Street Maps (OSM).

Techniki wspomagające system GPS

AGPS/ A-GPS
System GPS jest niezwykle przydatnym narzędziem. Jednak ma pewne słabości. Możemy do nich zaliczyć stosunkowo słabą  moc sygnału, używanego do określania pozycji. Zwykły system GPS bardzo dobrze sprawdza się na otwartej przestrzeni. Gorzej jest już w przypadku określania pozycji w otoczeniu drzew lub budynków. A wewnątrz budynków określenie pozycji z powodu zanikającego sygnału jest praktycznie niemożliwe (może prócz ostatnich pięter, niektórych miejsc przy oknie lub budynków wykonanych z drewna – gdzie sygnał nie jest silnie tłumiony). Odbiorniki GPS (jakim najczęściej obecnie są telefony komórkowe)  nie funkcjonują dobrze (a nawet mogą nie działać) jeśli ich anteny nie znajdują się na otwartej przestrzeni.

Wszystkie te powyższe problemy rozwiązuje technologia AGPS (inny skrót A-GPS; ang.:Assisted GPS). Jej założeniem jest współpraca z odbiornikiem GPS urządzeń zewnętrznych takich jak serwer wspomagający (ang.: assistance server;  dalej nazwany AGPS serwer) wraz z odpowiednią siecią komunikacyjną GSM/CDMA/LTE (w przypadku tej pracy opisywana sieć to GSM, sieć telefonii komórkowej) lub w niektórych przypadkach nawet Wi-Fi.

W opisywanej architekturze serwer AGPS odbiera sygnały emitowane z satelitów krążących nad ziemią, przetwarza je i zapisuje w podłączonej do niego bazie danych. Odbiornik GPS może połączyć się poprzez sieć i pobrać odpowiednio przygotowane przez serwer AGPS dane. Wśród nich można wyróżnić: dane na temat orbit danego satelity (efemeryda), inicjalna pozycja i czas, pozycja odbiornika GPS (Rysunek 5). W ten sposób dane lokalizacyjne są znacznie szybciej przekazywane i odbiornik w mniejszym czasie może określić przybliżoną lokalizację. Ma to ogromne znaczenie przy najbardziej krytycznym momencie określania pozycji, mianowicie przy starcie odbiornika kiedy to odbiornik wylicza pierwszą prawidłową pozycję w oparciu o dane z satelity (opisane wyżej almanach, efemeryda i dane do obliczenia odległości od satelity), gdzie każde przeszkodzenie w odbiorze sygnału powoduje ponowienie odbioru danych od początku.

Przerzucenie samego przetwarzania sygnałów GPS na zewnętrzny serwer wpływa na oszczędność energii i zasobów pamięciowych odbiornika GPS. Należy jednak  mieć na uwadze fakt, iż dokładność pomiarów AGPS zależy bezpośrednio od zasięgu telefonii komórkowej (w szczególności transmisji GPRS).

Drugim minusem są koszty tego systemu. Podczas gdy zwykły GPS jest całkowicie darmowy, za dane ściągane z serwera AGPS trzeba zapłacić (koszty stawek operatora GSM za transmisję danych).


DGPS

Wykorzystując referencyjną stację bazową, której pozycja jest precyzyjnie określona (znajduje się w dokładnie geodezyjnie wyznaczonym punkcie) można znacznie zwiększyć precyzję pomiaru GPS do rzędu 0,5 do 2 m. Technika ta nazywana jest różnicowym GPS – w skrócie DGPS (ang.: Differential Global Positioning System).
            Zadaniem referencyjnej stacji bazowej jest odbiór sygnału GPS z satelitów i wyznaczanie na ich podstawie poprawek. Pozwala to wyeliminować większość błędów (błąd zegara satelity) i opóźnień związanych z emisją sygnału z satelity przez poszczególne warstwy atmosfery (np.: opóźnienie jonosferyczne i troposferyczne) pojawiających się przy standardowym pomiarze jednym odbiornikiem (Betke, 2001).
Poprawki wyliczone przez referencyjną stację  bazową odbierane są przez odbiornik GPS przez np. łącze satelitarne lub sieć GPS, WLAN.

Wykorzystanie odbiornika GPS do określenia kontekstu

Wykorzystując informacje pochodzące z interfejsu GPS można z dokładnością do kilku metrów określić poszczególny punkt na mapie. W przeciwieństwie do pozostałych interfejsów urządzeń mobilnych przy pomocy GPS nie ustalimy większego obszaru czy otoczenia a jedynie pojedyncze miejsce, ściśle określone przez koordynaty wyliczone w oparciu o sygnały odebrane z satelitów systemu GPS. Możemy więc stworzyć profil kontekstu lokalizacyjnego zawierający bardzo precyzyjne dane o lokalizacji na całej kuli ziemskiej. Ograniczeniem popularnych odbiorników jest niezbyt silna antena umożliwiająca pomiar sygnału GPS jedynie na otwartej przestrzeni, co również odróżnia kontekst GPS od kontekstów określanych w oparciu o obecność urządzeń Wi-Fi czy też Bluetooth, które to najczęściej spotykane są w zamkniętych budynkach lub ich otoczeniu. W związku z tym, iż błąd pomiarów odbiornika w oparciu o dane systemu GPS wynosi kilka metrów, kontekst ten będzie opisywać lokalizację w przestrzeni o promieniu kilku metrów. Dodatkowo można wykorzystać informację o prędkości poruszania się odbiornika, którą to również otrzymujemy w oparciu o informacje z systemu GPS obliczone na podstawie różnicy odległości między dwoma punktami pomiaru i czasu między pomiarami. W ten sposób można w łatwy sposób określić kontekst prędkości poruszania się urządzenia mobilnego zaopatrzonego w odbiornik GPS.  

GPS - wyznaczanie pozycji i precyzja pomiaru

Algorytm wyznaczania pozycji


Metoda wyznaczania pozycji przy pomocy sygnału GPS opiera się na matematycznym wyliczeniu drogi sygnału od satelity do odbiornika. Znając czas jaki był potrzebny do przesłania sygnału odległość tą można wyliczyć ze wzoru:

                       
D= ∆τ∙c

gdzie:
D  – droga sygnału; 
 – różnica czasu potrzebna na dotarcie sygnału z satelity do odbiornika;
C  – prędkość światła (300 000 km/s).

Do wyznaczenia różnicy czasu wykorzystuje się najczęściej jedną z kilku metod różniących się obarczonym błędem pomiarów (Zogg, 2009).
 

Precyzja pomiaru

Aby możliwe było wyznaczenie współrzędnych odbiornik GPS powinien odbierać sygnał jednocześnie z minimum 3 satelitów lub 4 dla pomiaru wysokości bezwzględnej. Określając promienie sfer w oparciu o odległość nadajników do odbiornika (gdzie centrum sfery jest pojedynczy satelita) możemy w oparciu o miejsca przecięcia się sfer oszacować położenie odbiornika GPS.

Precyzja pomiaru położenia przeprowadzonego w oparciu o dane systemu GPS zależna jest od kilku czynników takich jak dokładność położenia i poruszania się po orbicie satelity, zakłócenia sygnału radiowego (szum), panujące w trakcie pomiaru warunki atmosferyczne czy też naturalne lub sztuczne przeszkody fizyczne. W przypadku błędnie zmierzonego czasu przesłania sygnału z satelity do odbiornika o 1 µs odchylenie od prawidłowej pozycji może wynieść nawet do 300 m (Zogg, 2009). Bariery fizyczne, które znajdą się pomiędzy odbiornikiem a nadajnikiem (jak budynki, ściany czy też wysokie góry) mogą wpłynąć na błąd pomiaru do 30 m. Zaś sam szum generowany przez urządzenia lub przedmioty znajdujące się w pobliżu odbiornika GPS może spowodować pomyłkę rzędu do 10 m. Jest to jeden z najczęściej spotykanych czynników wywierających wpływ na pomiar położenia (informacje oparte o artykuł zamieszczony pod adresem: http://www.maps-gps-info.com/gps-accuracy.html). Z przytoczonych informacji jasno wynika, iż sygnał GPS jest bardzo narażony na zakłócenia co skutkować może błędem obliczenia pozycji. Najbardziej dokładnie koordynaty lokalizacji obliczone zostaną kiedy odbiornik i satelita znajdować się będą wprost na linii „wzroku” przy dobrej pogodzie (bez chmur). Istnieją oczywiście systemy pomocnicze, których działanie niweluje błędy pomiaru GPS, do których można zaliczyć AGPS, DGPS czy też systemy różnicowe WAAS/EGNOS/MSAS/GAGAN.

2013-06-25

Architektura systemu GPS

Segment kosmiczny

Na wysokości około 20 tysięcy kilometrów nad powierzchnią ziemi na orbicie okołoziemskiej, umieszczone są sztuczne satelity (Rysunek 1). Tak zwany segment kosmiczny składa się z 24 satelitów, krążących po 6 wytyczonych orbitach. Prędkości poruszania się jak i trajektorie orbit są tak opracowane aby w każdej chwili, w dowolnym miejscu na Ziemi widocznych było dla odbiornika GPS 8 do 12 satelitów. W każdej chwili czasu wiadomo, który satelita gdzie się znajduje, na jakiej wysokości, z jaką prędkością i w którym kierunku się porusza a także w jakim czasie sygnał od niego powinien dotrzeć do Ziemi. Bardzo ważna jest również precyzyjna w czasie emisja sygnału z satelity do Ziemi, która to opiera się na danych z zegarów atomowych (opisanych poniżej), w które zaopatrzone są satelity. Te wszystkie precyzyjne dane teoretyczne (wraz z informacją o stanie danej satelity) na temat całej konstelacji satelitów składają się na dane zwane almanachem. Almanach przechowywany jest przez każdą z satelitów i wysyłany jest do odbiornika GPS w chwili kiedy ten jest włączany. Almanachu informuje odbiornik GPS o stanie satelitów oraz którego z nich należy w danym czasie szukać. Ważność danych almanachu może wynosić kilka dni.

Segment kontrolny

Pomimo wielkiej precyzji systemu satelitów może wystąpić sytuacja awaryjna mogąca spowodować błędne funkcjonowanie systemu GPS np.: zboczenie danej satelity z kursu czy też inną prędkość transmisji sygnału. W celu kontroli czy nie wystąpiła wyżej opisana sytuacja każdy sygnał emitowany z każdego satelitę analizowany jest szczegółowo przez sieć naziemnych stacji zlokalizowanych w kilku miejscach na kuli ziemskiej. Sieć ta nazywana jest segmentem kontrolnym. Jego głównym celem jest sprawdzanie zgodności działania systemu z założeniami jak i korekcja trajektorii satelity (poprzez uruchamianie mini-silniczków rakietowych satelity). Dane dotyczące orbity danego satelity przechowywane są w postaci tzw. efemerydy. Efemerydy przesyłane są do odbiornika GPS zaraz po otrzymaniu przez niego sygnału zawierającego almanach z pojedynczego satelity i są niezbędne do wyliczenia pozycji odbiornika. Ważność danych efemerydy wynosi kilka godzin.

Segment użytkownika

W skład tak zwanego segmentu użytkownika wchodzi odbiornik GPS wraz z oprogramowaniem wspomagającym odbiór i obróbkę sygnału emitowanego przez satelity.

Podstawowy sygnał GPS satelity

Oprócz opisanych powyżej danych almanachu i efemerydy odbiornik GPS otrzymuje trzeci rodzaj danych emitowany przez daną satelitę służący do obliczenia odległości odbiornika GPS od danej satelity.

Idea funkcjonowania systemu GPS opiera się na odpowiedniej interpretacji informacji otrzymanych właśnie z tych satelitów.
Rysunek 1. Model rozmieszczenia satelitów operacyjnych systemu GPS (http://www2.jpl.nasa.gov/basics/bsf9-1.php).

Każdy satelita okrąża dwukrotnie kulę ziemską w ciągu doby z dużą prędkością. W tym czasie w sposób ciągły transmituje sygnał w kierunku powierzchni ziemi używając dwóch częstotliwości, wojskowej (1227,60 MHz) oraz cywilnej (1575,42 MHz). Prędkość transmisji sygnału z satelity wynosi około 50b/s. Wszystkie satelity (obecnie 31) do transmisji używają tych samych częstotliwości wykorzystując metodę CDMA (ang. „Code Division Multiple Access”), w której sygnał każdej z nich podlega modulacji umożliwiającej ich identyfikację.

Dane wysyłane przez satelity przekazywane są przy pomocy protokołu komunikacyjnego o nazwie NMEA 0183 (skrót od amerykańskiej organizacji rozwijającej protokół: „National Marine Electronics Association). Każdy odbiornik GPS otrzymuje dane w postaci łańcucha ASCII (do 82 znaków). Sentencję rozpoczyna identyfikator zdania – nazwa znacznika poprzedzona znakiem początku linii „$”. Kolejne pola w sentencji opisują między innymi informacje o pozycji odbiornika GPS i jej jakości, zawierają dane o ilości śledzonych satelitów wraz z ich położeniem jak i czas wyznaczenia pozycji w oparciu o informacje z zegarów atomowych, w które to zaopatrzone są satelity (w celu synchronizacji pracy całego systemu). Terminem zegar atomowy określa się niezwykle precyzyjne urządzenia do pomiaru czasu, które wg definicji mogą pomylić się o 1 sekundę raz na 30 tys. do 1 mln lat.  Poglądowy schemat wiadomości NMEA przedstawiony został na Rysunek 2.


Rysunek 2. Przykład wiadomości NMEA wysyłanej przez satelitę do odbiorników GPS (na podstawie informacji ze strony http://www.gpsinformation.org).

Skrócona historia systemu GPS

W roku 1973 Departament Obrony Stanów Zjednoczonych Ameryki (USA) opracował system nawigacji satelitarnej (GPS; ang. “Global Positioning System”). Pierwotnie opracowany na potrzeby wojskowe marynarki i lotnictwa USA, do użytku publicznego został udostępniony w 1993 roku.


Tworzony system miał za zadanie określać pozycję z czasem w dowolnym miejscu kuli ziemskiej. Dokonywane pomiary miały dawać wyniki z jak największą precyzją niezależnie od  panujących warunków atmosferycznych. Stąd wzięła się pełna nazwa systemu NAVSTAR – GPS, w rozwinięciu Układ Nawigacji Satelitarnej Określania Czasu i Odległości Globalnego Systemu Pozycjonowania (ang. ”Navigational Satellite Time and Ranging, Global Positioning System”). Proces określania pozycji powinien odbywać się w czasie rzeczywistym, zaś precyzja pomiarów powinna wynosić około 5 m.

2013-06-21

Tomcat - konfiguracja DataSource

Konfiguracja połączenia kontenera Tomcat z bazą danych Oracle. 


Wersja Tomcat 5.5/7.0;
Wersja DB Oracle: 11g;
Wersja Java: 1.5/1.7;
Ścieżka instalacji Tomcat: TOMCAT_HOME=c:\Program Files\Apache Software Foundation\Tomcat 5.5\



wrzucamy bibliotekę do połączenia z bazą danych oracle 





definicja DataSource po stronie serwera Tomcat 


  • plik: %TOMCAT_HOME%\conf\context.xml 
  • konfiguracja do dodania:


konfiguracja po stronie aplikacji
  • w pliku web.xml dodajemy:

2013-06-11

Wzbudzenie wibracji w systemie Android

Aby wykorzystać wibracje w urządzeniu z systemem Android wystarczy minuta przygotowań.

Po pierwsze tworzymy zmienną  obiektową w klasie Activity o typie Vibrator (Android.os.Vibrator). 
Po drugie inicjujemy zmienną. Przypisujemy do niej serwis sytemowy odpowiedzialny za wibrację, podając odpowiedni kontekst wibracji (Context.VIBRATOR_SERVICE);
Na końcu wywołujemy specjalną metodę obiektu wibratora - vibrate: void android.os.Vibrator.vibrate(long milliseconds).

Przykładowy kod poniżej:


2013-06-10

Wyświetlenie obiektu ProgressDialog w trakcie logowania i tworzenia nowego Activity

Aby wyświetlić obiekt ProgressDialog w Activity systemu Android, w trakcie kiedy oczekujemy na zakończenie długo wykonującej się akcji (typu logowanie, połączenie do serwera zewnętrznego i oczekiwanie na odpowiedź) musimy obiekt ten zainicjować w osobny, równolegle przetwarzającym się wątku.



Do wyświetlenia ProgressDialog potrzebujemy tylko klika linijek kodu (a właściwie to jednej):


Zakańczamy wyświetlanie informacji o postępie wywołując prostą funkcję:

Jak widać ta część jest banalna. Niestety bez zastosowania osobnego wątku nie będzie to działało - obiekt nie pokaże się na ekranie smartfonu. Całość należy zgrabnie opakować w osobny wątek. A zmienne "wynieść" do zmiennych obiektowych (pola obiektu):