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.
2013-06-29
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:
gdzie:
D – droga sygnału;
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
- biblioteka: ojdbc5.jar
- docelowy katalog serwera Tomcat: %TOMCAT_HOME%\server\lib
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:
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):
Subskrybuj:
Posty (Atom)
