Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy...

52
Rok akademicki 2014/2015 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA INŻYNIERSKA Adam Karpiuk Aplikacja do monitorowania parametrów jazdy na platformę Android Opiekun pracy dr inż. Jerzy Chrząszcz Ocena: ..................................................... ................................................................ Podpis Przewodniczącego Komisji Egzaminu Dyplomowego

Transcript of Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy...

Page 1: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

Rok akademicki 2014/2015

Politechnika Warszawska

Wydział Elektroniki i Technik Informacyjnych

Instytut Informatyki

PRACA DYPLOMOWA INŻYNIERSKA

Adam Karpiuk

Aplikacja do monitorowania parametrów jazdy

na platformę Android

Opiekun pracy

dr inż. Jerzy Chrząszcz

Ocena: .....................................................

................................................................

Podpis Przewodniczącego

Komisji Egzaminu Dyplomowego

Page 2: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

Kierunek: Informatyka

Specjalność: Inżynieria Systemów Informatycznych

Data urodzenia: 1992.12.03

Data rozpoczęcia studiów: 2011.10.01

Życiorys

Urodziłem się 3 grudnia 1992 roku w Białymstoku. W latach 2008-2011 uczęszczałem

do I Liceum Ogólnokształcącego im. Adama Mickiewicza w Białymstoku, do klasy o profilu

matematyczno-informatyczno-fizycznym. W październiku 2011 roku rozpocząłem studia

inżynierskie na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej,

na kierunku Informatyka. Po ukończeniu pierwszych czterech semestrów wybrałem

specjalność Inżynieria Systemów Informatycznych.

.......................................................

Podpis studenta

EGZAMIN DYPLOMOWY

Złożył egzamin dyplomowy w dniu .................................................................................. 20__ r

z wynikiem ..................................................................................................................................

Ogólny wynik studiów: ...............................................................................................................

Dodatkowe wnioski i uwagi Komisji: .........................................................................................

......................................................................................................................................................

......................................................................................................................................................

Page 3: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

STRESZCZENIE

Niniejsza praca dotyczy wykorzystania urządzenia mobilnego do pomiaru wielkości

fizycznych. Przedstawia projekt aplikacji dla systemu Android, służącej do monitorowania

i rejestrowania parametrów jazdy pojazdów. Działanie aplikacji skoncentrowane jest przede

wszystkim na wykrywaniu nierówności nawierzchni za pomocą wbudowanych czujników –

akcelerometru i modułu GPS.

W ramach pracy dokonano przeglądu dostępnych czujników oraz istniejących rozwiązań.

Następnie przedstawiono wymagania dotyczące tworzonej aplikacji, projekt rozwiązania

i szczegóły jego implementacji. Opisano narzędzia i algorytmy wykorzystywane podczas

realizacji projektu. Zaprezentowano proces testowania i skomentowano otrzymane rezultaty.

Słowa kluczowe: urządzenie mobilne, czujnik, pomiar, parametry jazdy, aplikacja, Android.

ANDROID APPLICATION FOR MONITORING DRIVING PARAMETERS

This thesis concerns the use of mobile devices to measure physical quantities. It presents

a project of Android application for monitoring and recording of vehicle driving parameters.

The application is focused mainly on detection of road surface anomalies using built-in

sensors – accelerometer and GPS receiver.

In this thesis, the author surveyed available sensors and existing solutions. Next,

he introduced requirements regarding created application, project of the solution and its

implementation details. Tools and algorithms used during the project development phase were

described. The author presented testing process and commented obtained results.

Keywords: mobile device, sensor, measurement, driving parameters, application, Android.

Page 4: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

4

Spis treści

Wstęp ................................................................................................................................ 5

Cel i zakres pracy .......................................................................................................... 5

Struktura pracy .............................................................................................................. 6

1. Przegląd technologii ................................................................................................ 7

1.1 Android na tle innych platform .......................................................................... 7

1.2 Czujniki w urządzeniach mobilnych i ich zastosowania .................................... 8

1.3 Publikacje naukowe ......................................................................................... 13

1.4 Istniejące rozwiązania ...................................................................................... 14

2. Projekt rozwiązania ............................................................................................... 20

2.1 Przeznaczenie aplikacji .................................................................................... 20

2.2 Wymagania funkcjonalne ................................................................................. 20

2.3 Wymagania niefunkcjonalne ............................................................................ 21

2.4 Koncepcja rozwiązania .................................................................................... 22

2.5 Architektura rozwiązania ................................................................................. 25

3. Realizacja ............................................................................................................... 28

3.1 Stosowane narzędzia ........................................................................................ 28

3.2 Stosowane algorytmy ....................................................................................... 30

3.3 Opis implementacji .......................................................................................... 34

4. Testowanie .............................................................................................................. 40

Podsumowanie ............................................................................................................... 45

Dodatek .......................................................................................................................... 47

Podręcznik użytkownika ............................................................................................. 47

Spis ilustracji ................................................................................................................. 51

Spis tabel ........................................................................................................................ 51

Bibliografia .................................................................................................................... 52

Page 5: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

5

Wstęp

Trudno jest spotkać osobę, która nie miałaby zastrzeżeń do stanu polskich dróg.

Większość narzeka, że są dziurawe, źle zaprojektowane, niewłaściwie oznakowane lub

zakorkowane. Największym problemem utrudniającym poprawę tej sytuacji jest

zazwyczaj brak pieniędzy lub niewłaściwa ich dystrybucja. Jeśli nie jest możliwe

naprawienie wszystkich odcinków na raz, to należy wybrać te, które powinny zostać

przebudowane w pierwszej kolejności. Czasami trudno jest obiektywnie ocenić stan

nawierzchni, ale można spróbować przyjąć odpowiednie kryteria, na przykład wstrząsy

odczuwalne we wnętrzu pojazdu.

Wielu kierowców podróżuje z nawigacją uruchomioną na urządzeniu przenośnym.

Nic nie stoi na przeszkodzie, aby oprócz wskazywania właściwej trasy, urządzenie

rejestrowało wstrząsy z wykorzystaniem akcelerometru i przyporządkowywało je do

aktualnej lokalizacji wskazywanej przez moduł GPS. Dzięki takim danym możliwe jest

utworzenie bazy nierówności na drogach, z której mogliby korzystać zarówno

kierowcy – ostrzegani przed dziurami, jak również zarządcy dróg – informowani o stanie

nawierzchni. Wstrząsy są rozpoznawane jako gwałtowne przyspieszenia w osi pionowej,

jednakże mając do dyspozycji akcelerometr trójosiowy, możemy zrobić użytek z danych

rejestrowanych również w pozostałych osiach. W kontekście pojazdów, przeciążenia

w osi poziomej mogą być odczytywane jako intensywne przyspieszenie lub hamowanie.

Jak wiadomo, częste wytracanie prędkości i ponowne jej osiąganie niesie za sobą straty

energii, co przekłada się na wzrost zużycia paliwa, emisji spalin i co istotne, w efekcie na

wzrost kosztów transportu. Zbierane za pomocą akcelerometru i modułu GPS informacje

mogą pomóc kierowcy zoptymalizować styl jazdy i dostosować się do zasad popularnego

w ostatnich latach eco-drivingu.

Cel i zakres pracy

Celem mojej pracy inżynierskiej jest stworzenie aplikacji służącej do monitorowania

i rejestrowania parametrów jazdy pojazdów. Program ma działać na urządzeniach

mobilnych pod kontrolą systemu operacyjnego Android. Podstawą jego funkcjonowania

jest pomiar wielkości fizycznych z użyciem wbudowanych czujników. W pracy, jako

urządzenie mobilne rozumiem dowolny telefon komórkowy, smartfon lub tablet

działający w szczególności na platformie Android, ale również iOS, Windows Phone, itp.

Aplikacja implementowana na potrzeby pracy inżynierskiej ma za zadanie

zweryfikować możliwość i zakres zastosowania sensorów w urządzeniu mobilnym do

przestawionych celów. Tworząc jej wersję demonstracyjną, skupiam się na jednym

z możliwych efektów analizy danych otrzymanych z akcelerometru i modułu GPS, jakim

jest wykrywanie nierówności dróg. Zakres programu obejmuje rejestrowanie pomiarów,

ich proste przetwarzanie, analizę i wizualizację na ekranie urządzenia.

Page 6: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

6

Struktura pracy

Pierwszy rozdział zawiera przedstawienie systemu Android na tle innych platform,

przegląd czujników stosowanych w urządzeniach mobilnych, ze szczególnym

uwzględnieniem sensorów wykorzystywanych w tworzonej aplikacji, przegląd publikacji

naukowych poruszających podobną tematykę oraz opis istniejących programów

o zbliżonej funkcjonalności.

Rozdział drugi formułuje wymagania funkcjonalne i niefunkcjonalne oraz opisuje

projekt aplikacji, obejmujący koncepcję i architekturę rozwiązania.

W trzecim rozdziale zaprezentowane są stosowane przy realizacji projektu narzędzia

i algorytmy oraz wybrane szczegóły implementacji programu.

Czwarty rozdział dotyczy testowania – przedstawia metody wykorzystywane w celu

weryfikacji poprawności działania aplikacji i zgodności z wymaganiami oraz prezentuje

wyniki przeprowadzonych testów.

Podsumowanie zawiera wnioski i opisuje uzyskane rezultaty oraz zakres realizacji

celu pracy. Przedstawia koncepcje rozwoju projektu.

Jako dodatek dołączony jest podręcznik użytkownika aplikacji, ułatwiający

poruszanie się po wszystkich opcjach.

Page 7: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

7

1. Przegląd technologii

1.1 Android na tle innych platform

Android jest najpopularniejszym systemem operacyjnym działającym na

urządzeniach mobilnych. Według danych International Data Corporation (IDC) [1]

z trzeciego kwartału 2014 roku, udział smartfonów z tym systemem w światowym rynku

kształtuje się na poziomie 84%. Przewaga nad konkurencyjnymi platformami iOS

i Windows Phone powiększa się z każdym rokiem i obecnie wynosi ponad 70%. Warto

zauważyć, że Android jest jedyną platformą spośród wymienionych, która na przestrzeni

ostatnich lat nie odnotowała spadku popularności. W związku z tym, że zdecydowana

większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy

oprogramowania na urządzenia mobilne nie mogą nie uwzględnić tego faktu przy

produkcji nowych aplikacji.

Okres Android iOS Windows

Phone

BlackBerry

OS

Inne

Q3 2014 84,4% 11,7% 2,9% 0,5% 0,6%

Q3 2013 81,2% 12,8% 3,6% 1,7% 0,6%

Q3 2012 74,9% 14,4% 2,0% 4,1% 4,5%

Q3 2011 57,4% 13,8% 1,2% 9,6% 18,0%

Tabela 1. Udział poszczególnych systemów operacyjnych na smartfony w rynku [1]

Od strony programisty, Android nie stawia takich ograniczeń jak inne platformy.

Z powodzeniem można pisać aplikacje na komputerze zarówno z systemem Windows,

Linux, jak i Mac OS. W przypadku iOS i Windows Phone, skazani jesteśmy na

programowanie pod systemem z tej samej rodziny, co urządzenie docelowe. Językiem

programowania aplikacji dla Androida jest Java – język popularny i rozpowszechniony,

co jest niewątpliwą zaletą, gdyż łatwo jest uzyskać pomoc społeczności deweloperów

i przykłady kodu.

Oprócz wcześniej przedstawionych aspektów, wpływ na decyzję o wyborze

platformy docelowej miała również moja sympatia do Androida od strony użytkownika

oraz fakt posiadania urządzenia z tym systemem.

Page 8: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

8

Rysunek 1. Udział poszczególnych systemów operacyjnych na smartfony w rynku [1]

1.2 Czujniki w urządzeniach mobilnych i ich zastosowania

W ciągu ostatnich lat można zaobserwować rosnącą popularność czujników

w urządzeniach mobilnych. Producenci telefonów komórkowych i tabletów coraz

chętniej wyposażają swoje produkty w różnorodne sensory. Dzieje się tak za sprawą

szybkiego rozwoju elektroniki, co prowadzi do miniaturyzacji układów i spadku ich cen.

Obecnie czujniki zazwyczaj nie przekraczają rozmiarem ziarnka grochu, a kupić je można

nawet za kilkanaście złotych. Zastosowanie sensorów w przenośnych urządzeniach

znacznie zwiększa ich możliwości, a także daje pole do popisu producentom aplikacji

mobilnych.

Występowanie opisywanej tendencji można przedstawić na przykładzie liczby

stosowanych czujników w dwóch czołowych modelach telefonów firmy Samsung

z różnych okresów. W przypadku modelu Galaxy S z roku 2010 było to 5 sensorów,

natomiast w 2014 roku, w modelu Galaxy S5, liczba ta wzrosła dwukrotnie.

Zaprezentowany trend można zaobserwować również wśród urządzeń innych

producentów.

Page 9: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

9

Czym jest czujnik? Według encyklopedii PWN:

Czujnik (sensor) – element wejściowy systemu przetwarzania informacji, np. urządzenia

pomiarowego, przetwarzający wejściową (oznaczaną, mierzoną) wielkość fizyczną,

chemiczną lub biologiczną (sygnał wejściowy czujnika) na użyteczną wielkość wyjściową

(sygnał wyjściowy czujnika, zwany też sygnałem pomiarowym), z zachowaniem

informacji o przebiegu i wartościach charakterystycznych tej pierwszej [2].

W swojej pracy inżynierskiej skupiam się przede wszystkim na użyciu akcelerometru

i modułu GPS, dlatego opisuję je bardziej szczegółowo niż pozostałe czujniki.

Akcelerometr

Akcelerometr to czujnik, który mierzy przyspieszenie w trzech prostopadłych osiach.

Jego najważniejszym elementem jest tzw. masa bezwładna umieszczona na sprężynach,

która w wyniku przemieszczania się powoduje zmianę napięcia wyjściowego, a po

zastosowaniu przetwornika analogowo-cyfrowego otrzymujemy cyfrową informację

dotyczącą przyspieszenia w osiach x, y, z. Typowe akcelerometry mierzą przyspieszenie

w zakresach od 0 do maksymalnie +/- 1-16 g, czyli w przybliżeniu 10-160 m/s2,

z rozdzielczością wyjściową 10-16 bit. Urządzenie pozostające w spoczynku rejestruje

wartość przyspieszenia wynikającą z grawitacji, czyli ok. 9,81 m/s2, co wynika

z wewnętrznej budowy sensora [3].

Praktycznie wszystkie współczesne urządzenia z dotykowym ekranem mają

wbudowany akcelerometr. Używany jest przede wszystkim do zmieniania orientacji

ekranu, gdy obrócimy telefon. Wówczas aplikacje zazwyczaj dostosowują układ

interfejsu, czyniąc go wygodniejszym w obsłudze. Jednak przyspieszeniomierz można

wykorzystać również do innych celów. Odczyty z akcelerometru doskonale nadają się do

liczenia kroków, gdy osoba trzyma urządzenie przy ciele. Ponadto, czujnik ten ma

zastosowanie w nawigacji bezwładnościowej, gdy nie ma dostępu do sygnału z satelitów

ani innych źródeł, np. w pomieszczeniach lub tunelach. Pozwala również badać ruch

pojazdów, ich przyspieszenie, wykrywać drgania, wstrząsy. Stosowany jest do

stabilizacji obrazu w fotografii, ochrony dysku twardego przed uderzeniami.

Akcelerometrowi można znaleźć szereg zastosowań w nowoczesnej medycynie.

Żyroskop

Żyroskop służy do pomiaru prędkości kątowej, na podstawie której można określić

obrót urządzenia wokół trzech osi. Stosowany jest często w połączeniu z akcelerometrem,

wspomaga jego działanie i rozszerza możliwości. Dużą popularnością cieszą się gry,

w których sterowanie odbywa się poprzez poruszanie telefonu (tabletu). Kontrolery gier

do konsoli Sony PlayStation oraz Nintendo Wii, wyposażone w akcelerometry

i żyroskopy, wprowadziły nową jakość do świata gier.

Page 10: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

10

Moduł GPS

Moduł GPS (Global Positioning System) odpowiada za odczyt lokalizacji urządzenia.

Odbiera sygnał nadawany przez satelity, które krążą po orbitach wokół Ziemi. Obecnie

w skład systemu wchodzi trzydzieści jeden działających satelitów rozmieszczonych na

sześciu orbitach w ten sposób, że w danej chwili z każdego miejsca na powierzchni Ziemi

można zaobserwować cztery z nich. Wszystkie urządzenia pracujące w systemie muszą

mieć bardzo precyzyjnie zsynchronizowane zegary. Na podstawie czasów dotarcia

sygnałów urządzenie oblicza odległość od satelitów i dzięki metodzie trilateracji (znając

położenie satelitów na orbitach) określa aktualne współrzędne oraz przybliżoną

wysokość nad poziomem morza. Odbiornik otrzymuje informacje o czasie rozpoczęcia

transmisji, rejestruje czas zakończenia transmisji, a następnie, przyjmując prędkość

światła w próżni za prędkość rozchodzenia się fal radiowych, które przenoszą dane,

oblicza drogę, którą przebył sygnał, czyli odległość między satelitą a urządzeniem.

Do określenia długości i szerokości geograficznej potrzebne są sygnały z co najmniej

trzech satelitów, natomiast dane uzyskane z kolejnych satelitów pozwalają odczytać

również wysokość, na jakiej się znajdujemy oraz zwiększyć precyzję obliczeń. Aktualna

lokalizacja to punkt przecięcia sfer o środkach w miejscach, gdzie znajdują się satelity

i promieniach o długości równej odległościom od odbiornika. Zostało to zaprezentowane

w uproszczeniu na rys. 2. Dokładność określania pozycji wynosi nawet do kilku metrów,

a wpływ na nią ma wiele czynników. Źródłem błędów pomiaru mogą być m. in.

zakłócenia rozchodzenia się fal w jonosferze, troposferze czy atmosferze, odbicia

sygnałów od budynków, a także niedokładności zegarów satelitów oraz danych o ich

położeniu na orbitach.

Istotną wadą systemu GPS, zwłaszcza w kontekście urządzeń mobilnych, jest czas

uzyskiwania pierwszych danych o pozycji. W celu przyspieszenia procesu lokalizowania

wykorzystuje się często informacje z najbliższych komórkowych stacji bazowych lub

dostępnych sieci bezprzewodowych Wi-Fi, a ostatnio również odczyty z barometru.

Jednak ograniczeniem, którego nie da się obejść, jest brak możliwości używania systemu

GPS w zamkniętych pomieszczeniach, gdyż do prawidłowego działania wymagana jest

otwarta droga od satelity do odbiornika. Można przyjąć, że dane GPS uzyskamy bez

problemu w miejscach, gdzie niebo jest bezpośrednio widoczne. Oprócz

najpopularniejszego systemu pozycjonowania – amerykańskiego GPS, rozwijane są

również m. in. rosyjski GLONASS, europejski Galileo oraz chiński Compass.

Page 11: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

11

Rysunek 2. Trilateracja [4]

Punkt przecięcia sfer, uproszczonych na rysunku do postaci okręgów, wyznacza lokalizację odbiornika.

Barometr

Barometr służy do pomiaru ciśnienia atmosferycznego. Oprócz funkcji

informacyjnej, wykorzystywany jest do wspomagania modułu GPS. Na podstawie

wartości ciśnienia można oszacować wysokość i dzięki tej informacji lokalizacja

urządzenia przez GPS odbywa się szybciej.

Mikrofon

Mikrofon to stały element każdego urządzenia mobilnego. Jego podstawowym

zadaniem jest rejestrowanie mowy rozmówcy i przetwarzanie jej na postać cyfrową.

W celu udoskonalenia działania stosuje się dodatkowe mikrofony, które nagrywają

dźwięki otoczenia, co pozwala uzyskać głos pozbawiony zakłóceń. Oprócz oczywistych

zastosowań w telefonii, mikrofony wykorzystuje się również do rozpoznawania mowy

i przekształcania jej na tekst. W ten sposób można wprowadzać dane do urządzenia bez

użycia klawiatury. Co więcej, istnieje również możliwość sterowania podstawowymi

funkcjami urządzenia bez użycia rąk. Wystarczy jedynie wydawać polecenia głosowe,

a telefon rozpozna je i wykona odpowiednie operacje.

Czujnik obrazu

Cyfrowy aparat fotograficzny, którego głównym elementem jest czujnik obrazu,

zadomowił się w telefonach komórkowych na dobre w ciągu ostatniego dziesięciolecia.

Na początku, rozdzielczość obrazu rejestrowanego przez aparat była bardzo niska

(160 na 120 pikseli), co bardzo negatywnie wpływało na jego jakość. Jednak wraz

z rozwojem technologii, stosowane matryce CCD (Charge Coupled Device) oraz CMOS

(Complementary Metal Oxide Semiconductor) charakteryzowały się coraz wyższą

rozdzielczością, a urządzenia przenośne zostały wyposażone w funkcję nagrywania

Page 12: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

12

filmów. Obecnie niektóre telefony mogą śmiało konkurować z kompaktowymi aparatami

i kamerami – robią zdjęcia z rozdzielczością kilkunastu milionów pikseli (nawet 41 Mpix

w modelu Nokia Lumia 1020) i nagrywają filmy w standardzie UltraHD (3840 na 2160

pikseli). Droższe modele posiadają funkcję stabilizacji obrazu lub zbliżenia optycznego.

Oprócz zastosowań fotograficznych, czujniki obrazu wykorzystywane są również do

skanowania kodów kreskowych (lub QR), wykrywania twarzy (np. w celu odblokowania

ekranu tylko przez właściciela) lub rozpoznawania obiektów.

Pozostałe czujniki:

Magnetometr – mierzy natężenie pola magnetycznego, w szczególności pola

magnetycznego Ziemi, co pozwala określić kierunek północny (cyfrowy

kompas). Bardziej nietypowym zastosowaniem jest wykrywanie metali.

Termometr – pozwala określić temperaturę podzespołów, dzięki czemu układy

sterujące są w stanie zapobiec przegrzaniu urządzenia. Wówczas obniżane jest

taktowanie podzespołów, bądź też telefon jest awaryjnie wyłączany. Coraz

częściej montowane są również termometry, które odczytują temperaturę

otoczenia.

Czujnik wilgotności – pozwala zmierzyć wilgotność otoczenia.

Czujnik promieniowania ultrafioletowego – jeden z najnowszych sensorów

w urządzeniach przenośnych. Przestrzega użytkownika przed szkodliwym

działaniem promieni słonecznych, a odpowiednie aplikacje mogą doradzić jak się

chronić przed takimi warunkami.

Czujnik gestów – działa z wykorzystaniem promieniowania podczerwonego.

Dzięki niemu można sterować urządzeniem bez kontaktu z nim, z odległości

kilku, kilkunastu centymetrów.

Czytnik linii papilarnych – stosunkowo popularny w komputerach przenośnych,

w telefonach jest nowością. Można go wykorzystać do odblokowywania ekranu

lub autoryzacji transakcji bankowych przeprowadzanych przez telefon/tablet.

Jest to skuteczny typ zabezpieczeń, mogący zastąpić lub wspomóc zabezpieczenie

hasłem.

Czujnik tętna – inaczej pulsometr, służy do pomiaru pulsu. Co ciekawe, nie jest

on niezbędny, gdyż możliwe jest zmierzenie tętna ze zbliżoną dokładnością za

pomocą praktycznie dowolnego urządzenia wyposażonego w aparat, diodę LED

i odpowiednią aplikację.

Page 13: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

13

1.3 Publikacje naukowe

W ciągu ostatnich lat pojawiło się wiele publikacji naukowych na temat

monitorowania stanu dróg z wykorzystaniem sensorów. Badania w tym zakresie

prowadzone są w wielu krajach, co świadczy o tym, że opisywany problem jest globalnie

istotny i na czasie. Nie powinna dziwić znaczna liczba publikacji pochodzących z krajów

rozwijających się, takich jak Indie, gdyż zwłaszcza tam stan nawierzchni pozostawia

wiele do życzenia. Poniżej opisuję wybrane prace.

Naukowcy z Uniwersytetu Łotewskiego [5] zaproponowali system wykrywający

wyboje w czasie rzeczywistym, z wykorzystaniem urządzenia mobilnego z systemem

Android. System działa w oparciu o akcelerometr i moduł GPS. Badacze opisali cztery

różne algorytmy stosowane do wykrywania nierówności, przeprowadzili ich analizę

i starali się dobrać parametry w taki sposób, aby procent wykrywanych nierówności był

jak największy, a przy tym było jak najmniej fałszywych zgłoszeń. Dwa spośród

wymienionych algorytmów były w stanie analizować dane na bieżąco, a dwa pozostałe

po zakończeniu pomiarów.

Przeprowadzone zostały szczegółowe testy każdej z metod w różnych konfiguracjach.

Polegały na wielokrotnym przejechaniu tej samej trasy w jak najbardziej zbliżonych do

siebie warunkach ze zmienianymi ustawieniami. Trasa została uprzednio zbadana

empirycznie, a uszkodzenia nawierzchni zostały opisane i sklasyfikowane pod względem

wielkości na podstawie obserwacji wzrokowych. Wyniki testów były bardzo obiecujące,

gdyż przy odpowiedniej konfiguracji, wskaźnik wykrywalności wybojów wynosił od

73% do 92%, w zależności od wybranego algorytmu. Naukowcy w swojej pracy

zajmowali się przede wszystkim opracowaniem algorytmów wykrywania nierówności

i testowaniem ich skuteczności, natomiast nie przygotowywali aplikacji, która mogłaby

trafić do użytkowników.

Badacze z włoskiego Uniwersytetu Kalabrii [6] również wykrywali wyboje z użyciem

akcelerometru i modułu GPS. Analizowali odczyty przyspieszenia pod kątem zdarzeń

emitujących wysokie wartości energii. Podczas przetwarzania danych zastosowali trzy

filtry, które eliminowały niepożądane wartości odczytów. Testując aplikację, naukowcy

skupili się na rozpoznawaniu progów zwalniających. Wyznaczyli trasę testową, na której

znajduje się wiele progów i przejechali ją w określonych, stabilnych warunkach,

z urządzeniem przymocowanym wewnątrz samochodu. Wykryte wyboje naniesione na

mapę zestawili w sposób manualny ze zdjęciami satelitarnymi przebytej trasy, na których

da się zlokalizować spowalniacze. W wyniku analizy rezultatów uzyskano poziom

wykrywalności progów powyżej 90%. Warto zauważyć, że nie odnotowano przy tym

zgłoszeń fałszywych.

Page 14: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

14

Autorzy z indyjskiego V.E.S. Institute of Technology [7] postanowili wykorzystać

metody sztucznej inteligencji do wykrywania nierówności. Ich system działa na

urządzeniach mobilnych z systemem Android w oparciu o pomiary akcelerometru

i modułu GPS. Wykorzystuje sieci neuronowe do implementacji uczenia maszynowego.

Wyboje są wykrywane na podstawie przyjętych wartości progowych, a sztuczna

inteligencja pomaga ocenić ich trafność. W czasie testów, które nie są niestety opisane

w pracy, osiągnięto precyzję wykrywania nierówności na poziomie 95%.

1.4 Istniejące rozwiązania

W tym rozdziale przedstawię cztery programy o tematyce zbliżonej do poruszanej

przeze mnie: Accelerometer Monitor, Measurement of acceleration, Moje trasy oraz

Yanosik. Pierwszy z nich skoncentrowany jest wokół akcelerometru, wyświetla wyniki

pomiarów w przystępnej formie – graficznej i liczbowej, a także potrafi zareagować na

przekroczenie ustawionej wartości progowej przyspieszenia. Druga aplikacja również

korzysta z akcelerometru, a jego odczyty służą do pomiaru parametrów samochodu.

Kolejna wykorzystuje głównie moduł GPS do rejestracji aktualnego położenia,

a następnie prezentuje przebytą trasę na mapie oraz różnorodne statystyki na bazie

zebranych danych. Ostatni program spośród przytoczonych śledzi lokalizację

użytkownika-kierowcy (za pomocą GPS) i ostrzega go przed radarami oraz innymi

zdarzeniami na drodze posługując się informacjami dostarczanymi przez innych

użytkowników.

Page 15: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

15

Accelerometer Monitor

Accelerometer Monitor [8] to aplikacja, która wyświetla na wykresie aktualne

wartości przyspieszenia w trzech osiach. Posiada funkcję zapisu danych z akcelerometru

do pliku w pamięci zewnętrznej urządzenia. Umożliwia wybór częstotliwości

próbkowania pomiaru oraz wyzwolenie alarmu w przypadku przekroczenia ustawionej

wartości przyspieszenia. Jest dostępna dla użytkowników systemu Android, do pobrania

bezpłatnie ze sklepu Google Play. Program polskiego producenta, Mobile Tools, ma

niezbyt rozbudowane funkcje, jednak bardzo dobrze nadaje się do wizualizacji oraz

zapisu surowych danych z akcelerometru.

Rysunek 3. Aplikacja Accelerometer Monitor [8]

Page 16: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

16

Measurement of acceleration

Measurement of acceleration [9] to program służący do pomiaru parametrów

samochodu takich jak: przyspieszenie, moc oraz maksymalny moment obrotowy silnika.

Korzysta jedynie z akcelerometru i danych dostarczonych przez użytkownika. Aplikacja

umożliwia przeglądanie wykresów, a także wyeksportowanie wyników do postaci plików

xls. Program stworzył Sergey Vorobyev i umieścił go bezpłatnie w sklepie Google Play.

Rysunek 4. Aplikacja Measurement of

acceleration, pomiar przyspieszenia [9]

Rysunek 5. Aplikacja Measurement of

acceleration, wykres przyspieszenia [9]

Page 17: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

17

Moje trasy

Aplikacja Moje trasy [10] rejestruje drogę, prędkość, odległość i wysokość podczas

aktywności użytkownika na świeżym powietrzu, a także pozwala oszacować liczbę

spalonych kalorii, itp. Do swojego działania wykorzystuje przede wszystkim odczyty

z modułu GPS, a przetworzone dane wyświetla na bieżąco w formie statystyk lub

wykresów, nanosi na mapę i umożliwia ich eksport do usług internetowych lub pamięci

zewnętrznej. Produkt od firmy Google Inc. jest dostępny do pobrania bezpłatnie ze sklepu

Google Play.

Rysunek 6. Aplikacja Moje trasy, widok trasy

[10]

Rysunek 7. Aplikacja Moje trasy, widok statystyk

[10]

Page 18: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

18

Yanosik

Yanosik [11] to aplikacja pełniąca funkcję asystenta kierowcy, która informuje m. in.

o fotoradarach, kontrolach drogowych, patrolach policji czy wypadkach. Korzysta

z modułu GPS w celu określenia lokalizacji samochodu i powiadamia o najbliższym

zdarzeniu. Informacje z bazy danych pochodzą od innych użytkowników programu.

System zbiera trasy przejazdu kierowców i ich zgłoszenia dotyczące sytuacji na drodze,

które mogą dostarczać poprzez wybranie jednej z dostępnych na ekranie opcji. Program

oferuje również funkcję nawigacji opartej o aktualne informacje o natężeniu ruchu.

Produkt polskiej firmy Neptis SA jest darmowy i można go pobrać ze sklepu Google

Play.

Rysunek 8. Aplikacja Yanosik, widok zgłaszania

[11]

Rysunek 9. Aplikacja Yanosik, widok nawigacji

[11]

Page 19: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

19

Opisane przeze mnie aplikacje korzystają z akcelerometru i modułu GPS, ale żadna

nie używa obu jednocześnie. Każda z nich oferuje pewne ciekawe funkcje, które można

wykorzystać w opracowywanym projekcie. Dwa pierwsze programy rejestrują pomiary

przyspieszeń i interpretują je, trzeci prezentuje na mapie ostatnio odwiedzane miejsca,

a ostatni z wymienionych umożliwia użytkownikowi zgłoszenie sytuacji na drodze

w obecnej lokalizacji. Tworząc aplikację mogę wzorować się na Accelerometer Monitor

w kwestii zapisu danych z akcelerometru do pliku i reagowania na przekroczenie

ustawionej wartości. Natomiast przebyta trasa może być zaznaczana linią na mapie,

w sposób zbliżony, jak w aplikacji Moje trasy, z uwzględnieniem szczególnych miejsc

wyróżnianych oddzielnie.

Page 20: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

20

2. Projekt rozwiązania

2.1 Przeznaczenie aplikacji

Projektowana aplikacja przeznaczona jest dla kierowców pojazdów silnikowych,

w szczególności samochodów osobowych, ale także ciężarówek, autobusów, itp. Może

być również obsługiwana przez pasażerów. Służy przede wszystkim do zbierania

i gromadzenia danych dotyczących przyspieszeń, którym podlega pojazd podczas jazdy.

Efektem analizy rejestrowanych wartości powinno być automatyczne rozpoznawanie

wstrząsów, które można zakwalifikować jako nierówności drogi. Rezultaty powinny

zostać zaprezentowane na mapie i zapisane do pliku.

2.2 Wymagania funkcjonalne

Rejestrowanie przyspieszeń i położenia

Aplikacja powinna rejestrować i zapisywać w bazie danych odczyty

z akcelerometru w trzech osiach i wartość wypadkową przyspieszenia, a także

informacje o aktualnej lokalizacji w postaci współrzędnych geograficznych.

Wspomniane informacje powinny być powiązane ze sobą oraz z czasem pomiaru.

Dodatkowo, powyższe dane mogą być wyświetlane na bieżąco, aby potwierdzić

prawidłowe działanie aplikacji.

Automatyczne wykrywanie nierówności

Aplikacja powinna rozpoznawać i klasyfikować nierówności w czasie

rzeczywistym na podstawie wartości pionowej składowej przyspieszenia.

Wartość progowa, powyżej której wstrząsy będą traktowane jako znaczące, może

być wprowadzana przez użytkownika w ustawieniach, bądź też pozostać na

poziomie domyślnym. Współrzędne miejsca wystąpienia sytuacji wyjątkowej

powinny być zapisywane.

Zgłaszanie wybojów przez użytkownika

Aplikacja powinna umożliwiać użytkownikowi sygnalizowanie natrafienia na

nierówność w prosty sposób (na przykład głosowo), tak aby był w stanie

zareagować możliwie szybko po zdarzeniu. Ręczne zgłaszanie wybojów pozwala

na weryfikację wykrywalności za pomocą urządzenia oraz subiektywną

klasyfikację nierówności.

Page 21: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

21

Wyświetlanie przebytej trasy na mapie

Aplikacja powinna prezentować pokonaną drogę ze szczególnym wyróżnieniem

miejsc, w których odczuwalne były największe wstrząsy. Takie miejsca można

rozróżnić pod względem siły wstrząsów i przypisać do odrębnych kategorii,

zaznaczając je w odmienny sposób. Wyświetlane powinny być zarówno wyboje

rozpoznane automatycznie przez program, jak i te zgłoszone przez użytkownika.

Dodatkowo, na mapie ma być wyświetlona aktualna lokalizacja.

Zapis trasy do pliku

Aplikacja powinna zapisywać w pamięci urządzenia trasę wraz z naniesionymi

wybojami w formacie powszechnie używanym do prezentacji informacji

geograficznych, KML (Keyhole Markup Language), łatwym do otwarcia za

pomocą, na przykład, programu Google Earth.

Prezentowanie ekranu pomocy

Aplikacja powinna oferować ekran pomocy, w którym w sposób przystępny

objaśnione są poszczególne funkcje oraz zaprezentowane informacje o programie

i o autorze.

2.3 Wymagania niefunkcjonalne

Aplikacja może funkcjonować w podobny sposób jak istniejące systemy nawigacji

samochodowej. W ich przypadku oszczędność baterii nie ma najwyższego priorytetu,

gdyż niemal w każdym samochodzie znajduje się gniazdko elektryczne, do którego

w razie potrzeby można podłączyć ładowarkę. Dlatego aspekt energooszczędności,

tak istotny dla wielu aplikacji mobilnych, w moim projekcie nie jest kluczowy.

Aplikacja powinna być zbudowana ze standardowych komponentów dostarczanych

przez platformę, a jej interfejs graficzny powinien być zaprojektowany zgodnie

z wytycznymi przygotowanymi przez zespół specjalistów [12].

Wymagania dotyczące platformy:

Urządzenie mobilne (telefon komórkowy, tablet) z systemem Android w wersji

2.3 lub wyższej – powyższe wymaganie spełnia ponad 90% androidowych

urządzeń na rynku [13].

Wbudowane czujniki: akcelerometr, moduł GPS – występują na pokładzie

zdecydowanej większości urządzeń mobilnych.

Dostęp do internetu (za pośrednictwem sieci komórkowej lub Wi-Fi) –

do przyspieszenia określania położenia i do wczytania zawartości Map Google.

Dostęp do usług lokalizacyjnych – wymagany w celu określenia położenia.

Zainstalowane Usługi Google Play – potrzebne do wyświetlenia Map Google.

Page 22: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

22

2.4 Koncepcja rozwiązania

Głównym zadaniem projektowanej aplikacji jest rejestrowanie przeciążeń podczas

jazdy. W tym celu wykorzystywany jest wbudowany w urządzenie mobilne akcelerometr.

Jego odczyty pozwalają określić siłę i kierunek oddziaływania przeciążeń. Korzystając

z metod dostarczanych przez platformę Android, można otrzymać wartości

przyspieszenia w każdej z trzech osi układu współrzędnych. Są one wyrażone

w jednostkach fizycznych – m/s2.

Układ współrzędnych używany przez system definiuje osie w następujący sposób

w odniesieniu do urządzenia: oś x przebiega poziomo i jest skierowana w prawo,

oś y pionowo do góry, a oś z w stronę patrzącego na ekran. Zostało to zaprezentowane na

rys. 10. Należy pamiętać, że odczyty z akcelerometru obejmują przyspieszenie ziemskie,

którego wartość wynosi 9,81 m/s2. W związku z tym aplikacja stosuje algorytm, który

eliminuje wpływ grawitacji na wynik pomiaru, bez względu na położenie urządzenia

względem osi. Wówczas, wartość każdej składowej przyspieszenia powinna być równa

zero, gdy urządzenie leży nieruchomo.

Rysunek 10. Układ współrzędnych w systemie Android [14]

Analiza zmian przyspieszenia w rozbiciu na składowe umożliwia wykrywanie

różnych zdarzeń w kontekście ruchu pojazdów. Przyjmijmy, że telefon jest ułożony

pionowo, przymocowany do samochodu, a jego ekran skierowany w kierunku

przeciwnym do kierunku jazdy. W tej sytuacji, niezerowe wyniki pomiarów wzdłuż osi x

mogą oznaczać, że samochód pokonuje zakręt, gwałtowna zmiana w osi y może

sygnalizować najechanie na nierówność, natomiast w przypadku osi z – przyspieszanie

lub hamowanie. W celu zapewnienia wiarygodnych rezultatów, urządzenie podczas

pomiarów powinno być umieszczone w taki sposób, aby jedna z jego osi była prostopadła

do powierzchni Ziemi.

Page 23: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

23

Dane akcelerometru mogą być aktualizowane z różną częstotliwością. System daje

możliwość wyboru jednej z czterech domyślnych wartości, jednak nie jest możliwe

precyzyjne ustawienie próbkowania. Czasy rzędu 200 ms, 60 ms lub 20 ms to tylko

sugestie interwałów pomiędzy sąsiednimi pomiarami, które nie zawsze są uwzględniane

przez urządzenie. Ostatnia z opcji to najmniejsze możliwe opóźnienie, które całkowicie

zależy od konkretnego modelu.

Częstsze odczyty zwiększają obciążenie procesora i zużycie energii, natomiast zbyt

rzadkie zmniejszają precyzję odwzorowania wstrząsów. Dodatkowo, im częściej

rejestrujemy dane, tym większe są pliki, na których operujemy, a ich przetwarzanie trwa

dłużej. Dlatego, decydując się na rozwiązanie będące kompromisem, wybrałem

częstotliwość, która na urządzeniu testowym kształtowała się na poziomie 15 Hz.

W przypadku rejestrowania zdarzeń dotyczących pojazdów, większa częstotliwość nie

jest wymagana, chociażby z uwagi na ich dużą bezwładność.

Informacje o przeciążeniach w kontekście transportu staną się o wiele bardziej

przydatne, jeśli zostaną powiązane z miejscem, w którym występują. W wyniku

gromadzenia i analizy takich danych możliwe jest na przykład stworzenie mapy

nierówności drogowych. Aplikacja wykorzystuje moduł GPS w celu określenia

aktualnego położenia. W związku z tym, że pierwsze obliczenie lokalizacji wyłącznie na

podstawie sygnału GPS trwa stosunkowo długo, aplikacja wspomaga się również

metodami bazującymi na sieciach bezprzewodowych i komórkowych. Jednak na ogół są

one znacznie mniej dokładne, dlatego po początkowym ustaleniu pozycji nie są już

wykorzystywane.

Dane o lokalizacji odbierane są z największą dostępną częstotliwością, która zależy

od sprzętu oraz warunków zewnętrznych, aby możliwe było jak najdokładniejsze

przypisanie współrzędnych geograficznych do pomiarów przyspieszenia. Mimo to,

przyspieszenie jest próbkowane znacznie częściej niż lokalizacja, wobec czego jedno

miejsce może być opisane co najmniej kilkoma wartościami przyspieszenia. W praktyce,

moduły GPS stosowane we współczesnych urządzeniach mobilnych ograniczone są do

częstotliwości od jednego do kilku herców. Nie jest to jednak istotny problem,

gdyż precyzja umiejscowienia, np. nierówności, na poziomie kilku-kilkunastu metrów

powinna być wystarczająca dla większości zastosowań.

Jak już wcześniej uzasadniałem, dane akcelerometru są znaczące praktycznie jedynie

w powiązaniu z lokalizacją odczytaną na podstawie sygnału GPS. Dlatego w przypadku,

gdy aktualne współrzędne nie są dostępne, dane nie zostaną zapisane, a zdarzenia

drogowe nie będą wykrywane. Taka sytuacja występuje na początku, przez pewien czas

po rozpoczęciu pomiaru, ponieważ wartości przyspieszenia są dostępne w każdej chwili,

a informacje o dokładnej lokalizacji z opóźnieniem, które wynika z czasu określania jej

po raz pierwszy. Wszystkie odczytywane wyniki wyświetlane są na ekranie na bieżąco,

pochodzące z akcelerometru – cały czas, natomiast te z modułu GPS – odkąd zostaną

obliczone. Dzięki temu, użytkownik jest w stanie przynajmniej pobieżnie zweryfikować,

czy aplikacja działa poprawnie.

Page 24: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

24

Pomiary czujników zapisywane są na bieżąco w bazie danych. Do jej utworzenia

i obsługi wykorzystywany jest silnik bazodanowy SQLite, dostarczany przez system.

Baza znajduje się w pamięci urządzenia, w obszarze chronionym, do którego dostęp ma

wyłącznie opisywana aplikacja. Umożliwia łatwy dostęp do danych z poziomu programu.

Przy każdej aktualizacji odczytu z akcelerometru dodawany jest jeden rekord zawierający

czas pomiaru, informacje o przyspieszeniu i ostatnio odebranej lokalizacji.

W bazie danych gromadzone są pełne wyniki pomiarów dostarczanych przez

akcelerometr. Mogą one służyć do wykrywania rozmaitych sytuacji drogowych, badania

ruchu, itp. Opisywana aplikacja skupia się jednak na rezultatach dotyczących pionowej

składowej przyspieszenia i wartości wypadkowej przyspieszenia. Analiza powyższych

parametrów pozwala rozpoznać w sposób automatyczny nierówności drogi. Wstrząsy,

dla których składowa przyspieszenia przekracza wartość progową zdefiniowaną

w ustawieniach, traktowane są jako wykryte anomalie.

Dodatkowo, istnieje możliwość zgłaszania wybojów przez użytkownika, będąca

rozszerzeniem trybu automatycznego o opcję. Kierowca/pasażer może zasygnalizować

przejechanie szczególnie uciążliwej nierówności poprzez wciśnięcie odpowiedniego

przycisku na ekranie. Jest on dostępny przez cały czas w trybie pomiaru, aby odnalezienie

go było intuicyjne i nie absorbowało uwagi podczas jazdy. Wówczas, następuje zapis

lokalizacji i czasu, w którym sytuacja została zarejestrowana. Oznaczenie będzie zawsze

obarczone pewnym opóźnieniem i przesunięciem w przestrzeni, jednak nie da się ich

w prosty sposób wyeliminować, gdyż zależą od działań użytkownika. Z założenia, taka

funkcjonalność powinna służyć użytkownikowi, dlatego należy uwierzyć w dobre

intencje korzystającego i nie ograniczać możliwości zgłoszenia wybojów w dowolnym

miejscu i czasie.

Efekt analizy zgromadzonych danych prezentowany jest w postaci mapy

z zaznaczoną trasą oraz nierównościami. Wykorzystywany jest mechanizm Google

Maps, standardowy element systemu Android. Umożliwia on wyświetlanie aktualnej

pozycji, dowolne przybliżanie, oddalanie i przesuwanie widoku. Korzystając z danych

zgromadzonych w bazie podczas pomiaru, aplikacja wyświetla przebytą trasę. Kolejne

zapisane współrzędne łączone są ze sobą linią, a miejsca, w których zostały wykryte lub

zgłoszone wstrząsy, oznaczane punktami w dwóch różnych kolorach, w zależności od

źródła informacji. Zobrazowana w ten sposób trasa może być dodatkowo

wyeksportowana do pliku, co pozwala zaprezentować ją w przeglądarce internetowej lub

za pomocą zewnętrznej aplikacji. Plik .kml jest tworzony na żądanie użytkownika,

zgodnie z opisem standardu Keyhole Markup Language, tak aby był z nim w pełni

kompatybilny. Zapisywany jest w pamięci zewnętrznej urządzenia.

Page 25: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

25

2.5 Architektura rozwiązania

Aplikacje tworzone na platformę Android, z wykorzystaniem bibliotek systemowych

mają ściśle określoną strukturę. Zbudowane są z czterech rodzajów komponentów,

a każdy program musi zawierać co najmniej jeden z nich [15]:

Aktywność (ang. Activity) – ekran interfejsu użytkownika

Usługa (ang. Service) – komponent działający w tle

Dostawca treści (ang. BroadcastProvider) – komponent służący do

współdzielenia danych pomiędzy aplikacjami

Odbiornik komunikatów (ang. ContentProvider) – komponent reagujący na

globalne zdarzenia

Oprócz klas, które zawierają kod programu i są napisane w języku Java, aplikacje

posiadają również zbiór zasobów i plik manifestu. Zasoby wpływają na to, jak wygląda

interfejs użytkownika, natomiast AndroidManifest.xml to najważniejszy plik projektu.

Tworzona przeze mnie aplikacja została nazwana Sense (z ang. wyczuwać, wykrywać,

również zmysł, sens). Jest ona podzielona na kilka aktywności, co prezentuje poniższy

schemat.

Pierwsza, uruchamiana zawsze przy włączeniu programu to MainActivity. Obejmuje

ona menu główne, z którego można nawigować do innych części programu. Głównym

jej elementem są opcje, po wybraniu których uruchamiane są pozostałe komponenty:

widok pomiaru, ustawienia oraz pomoc.

Rysunek 11. Aktywności aplikacji

Start MainActivity SensingActivity MapsActivity

SettingsActivity HelpActivity

Page 26: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

26

Widok pomiaru reprezentowany jest przez aktywność SensingActivity. Po przejściu

do tego widoku rozpoczynają się odczyty przyspieszenia z akcelerometru oraz położenia

z modułu GPS. Nawiązywane jest połączenie z bazą danych i każdy zestaw

zarejestrowanych wartości zostaje do niej zapisany. Na tym ekranie wyświetlane są

aktualne wartości przyspieszenia jako każda składowa oddzielnie oraz wartość

wypadkowa, a także współrzędne geograficzne. Opisywana aktywność oferuje

możliwość manualnego zgłaszania nierówności. Dostępny w tym widoku pasek akcji

(ang. ActionBar), standardowy element platformy Android, umożliwia cofnięcie się do

menu głównego, ale również bezpośrednie przejście do ekranu pomocy lub ustawień.

Natomiast po zakończeniu pomiaru, tworzona jest nowa aktywność z widokiem mapy.

MapsActivity ładuje widok mapy Google Maps i konfiguruje wyświetlane elementy.

Odczytuje informacje z bazy danych i na ich podstawie nanosi przebytą trasę

i nierówności. Opisywana aktywność oferuje możliwość zapisu naniesionych danych do

pliku.

Widok ustawień, za który odpowiada aktywność SettingsActivity, umożliwia

użytkownikowi dostosowanie działania aplikacji do własnych potrzeb. Pozwala na

wprowadzenie pożądanego progu czułości wykrywania nierówności. Odbywa się to

poprzez wpisanie wartości liczbowej za pomocą klawiatury. Preferencje użytkownika są

zapamiętywane pomiędzy uruchomieniami aplikacji, zatem nie ma potrzeby

wprowadzania na nowo własnych ustawień po restarcie.

Ekran pomocy – HelpActivity przedstawia w skrócie poszczególne funkcje programu,

objaśnia stosowane nazewnictwo i symbole. W tym miejscu prezentowane są również

informacje o autorze aplikacji.

Klasa Database ułatwia dostęp do bazy danych. Dostarcza metody, które pozwalają

zapisywać i odczytywać informacje w prosty sposób. Odpowiedzialna jest za to, aby

poprawnie utworzyć bazę danych, jeśli jeszcze nie istnieje oraz ją aktualizować. Zamyka

w swojej strukturze działania, które wymagają wykorzystania języka SQL, aby na

zewnątrz klasy nie było konieczne jego użycie.

Baza danych zawiera jedną tabelę, w której przechowywane są wszystkie

rejestrowane informacje. Tabela sensor_values składa się z siedmiu kolumn. Atrybut time

zawiera informację o czasie pomiaru, reprezentowaną w postaci liczby milisekund, które

upłynęły od 1 stycznia 1970 roku. Liczba ta jest całkowita, dlatego zapisywana jest jako

bazodanowy typ danych INTEGER. Atrybuty x, y, z oraz result dotyczą przyspieszenia,

a ich wartości wyrażane są w metrach na sekundę do kwadratu, jako liczba rzeczywista

z częścią ułamkową. Kolumny longitude i latitude przechowują współrzędne w postaci

stopni dziesiętnych, zatem również są typu REAL.

Klasa SensorData zawiera pola przechowujące wyniki pomiaru oraz metody służące

do otrzymania każdego z nich z poziomu kodu programu. Zmienne są nazwane

analogicznie jak atrybuty tabeli sensor_values bazy danych. Zmienna time jest liczbą

całkowitą typu long, natomiast pozostałe to liczby zmiennoprzecinkowe: x, y, z, result –

typu float, natomiast longitude i latitude – typu double.

Page 27: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

27

Tabela sensor_values

Opis Czas

pomiaru

Wartości przyspieszenia Współrzędne

geograficzne

Oś X Oś Y Oś Z Łącznie Długość Szerokość

Nazwa

kolumny time x y z result longitude latitude

Typ

danych INTEGER REAL REAL REAL REAL REAL REAL

Tabela 2. Schemat tabeli sensor_values

Page 28: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

28

3. Realizacja

3.1 Stosowane narzędzia

Android Studio

Od pewnego czasu, oficjalnym środowiskiem programistycznym do tworzenia

aplikacji na platformę Android jest Android Studio. Program zbudowany na bazie IntelliJ

IDEA firmy JetBrains zastąpił w tej roli popularne środowisko Eclipse z wtyczką ADT.

Mimo iż do tej pory miałem większe doświadczenie w pracy z Eclipse, postanowiłem

pójść z duchem czasu i wybrałem Android Studio. Uznałem, że jest to doskonała okazja,

aby poznać narzędzie, które zbiera pochlebne opinie wśród użytkowników.

Nowe środowisko gromadzi wszystkie potrzebne komponenty w jednym

miejscu – oferuje zaawansowany edytor kodu, wygodny graficzny edytor interfejsu,

a także pozwala zbudować i uruchomić aplikację za pomocą jednego kliknięcia.

Do uruchomienia tworzonej aplikacji potrzebny jest emulator lub urządzenie docelowe

z systemem Android. Z uwagi na łatwą dostępność takiego urządzenia – jestem

posiadaczem jednego z nich – oraz szybsze działanie platformy i, co bardzo ważne,

fizyczną obecność wbudowanych czujników, zdecydowałem się rozwijać aplikację

z wykorzystaniem telefonu Samsung Galaxy S4 Mini (GT-I9195) z Androidem w wersji

4.4.2 (KitKat).

Git

Rozwijając swój projekt, korzystałem z systemu kontroli wersji Git, a repozytorium

umieściłem w serwisie Bitbucket. Git pozwala zarządzać kodem w prosty sposób na

różnych etapach projektu, dodawać nowe funkcjonalności lub rezygnować z nich bez

wpływu na pozostałe. Można śledzić historię zmian i w dowolnym momencie bez

problemu wrócić do którejś z poprzednich wersji. W stosunku do konkurencyjnych

rozwiązań (np. SVN, CVS, Mercurial) posiada wiele zalet: jest szybki, zaawansowany

funkcjonalnie i jednocześnie prosty w obsłudze, a także bardzo popularny wśród

programistów.

Dzięki temu, że kod znajduje się w prywatnym repozytorium w internecie, mam do

niego dostęp z dowolnego urządzenia podłączonego do sieci i nie muszę dodatkowo

martwić się o kopię zapasową. Wybór serwisu hostingowego padł na Bitbucket, gdyż

w przeciwieństwie do konkurencyjnego GitHuba, oferuje przechowywanie prywatnych

repozytoriów bezpłatnie.

Page 29: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

29

SQLite

Aby gromadzić dane rejestrowane przez czujniki, korzystam z bazy danych SQLite,

która jest dostarczana przez system Android [16]. Jest to najpowszechniej stosowany

silnik bazodanowy na świecie. Jego popularność wynika m. in. z ogromnych możliwości

przy zachowaniu niewielkiego rozmiaru, a także szybkości działania, dzięki czemu

doskonale nadaje się do zastosowania w urządzeniach mobilnych. Warto podkreślić,

że silnik SQLite jest darmowy, a jego kod źródłowy jest dostępny publicznie,

do dowolnego wykorzystania, również komercyjnego. Programista tworzy tabele bazy

danych, wprowadza do niej wartości oraz uzyskuje do nich dostęp przy użyciu instrukcji

języka SQL. Baza danych SQLite przyjmuje postać jednego pliku, który można w łatwy

sposób przenieść na inne urządzenie i nadal z niego korzystać. Uznałem, że jest to

najbardziej odpowiednie narzędzie do składowania odczytów z akcelerometru i modułu

GPS wraz z czasem ich rejestracji.

Google Maps Android API v2

Google Maps Android API v2 to narzędzie, które pozwala programiście umieścić

mapę jako element jego aplikacji. Jest częścią platformy usług Google Play, a zatem

wymaga posiadania tego komponentu na urządzeniu docelowym, aby prawidłowo

wyświetlać mapę oraz odpowiedniego zestawu narzędzi dla programistów w celu

zbudowania aplikacji. Mapy Google są w stanie wyświetlać różne rodzaje map, m. in.

drogową, satelitarną czy terenową, umożliwiają nanoszenie na powierzchnię własnych

linii, kształtów, obiektów i innych informacji. Ich zaletą jest duża dokładność i aktualność

danych, zwłaszcza, że społeczność użytkowników internetu może przyczyniać się do

współtworzenia projektu.

Narzędzie dostarczane przez firmę Google pozwala w stosunkowo dużym stopniu

dostosować sposób prezentacji map do potrzeb twórcy oprogramowania. Moim zamiarem

było zwizualizowanie rozmieszczenia nierówności dróg, co zrealizowałem poprzez

umieszczanie kolorowych punktów w miejscu ich występowania. Proces odbywa się

automatycznie, z wykorzystaniem możliwości dostępnych bibliotek.

Wadą wybranego narzędzia jest konieczność połączenia z internetem w celu pobrania

map. Istnieją co prawda konkurencyjne rozwiązania (np. Sygic, HERE, OsmAnd), które

korzystają z danych zapisanych w pamięci wewnętrznej lub zewnętrznej urządzenia i nie

wymagają dostępu do sieci, jednak takie podejście również nie jest pozbawione

niedoskonałości, gdyż aplikacja zajmuje znacznie więcej miejsca i dostarcza nie zawsze

najbardziej aktualne informacje. Ostatecznie, uważam, że zastosowanie Google Maps

API było rozsądnym wyborem.

Page 30: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

30

3.2 Stosowane algorytmy

Wartości przyspieszenia mierzone za pomocą akcelerometru są podstawą działania

opisywanej aplikacji. Otrzymane dane powinny jednak zostać poddane przetwarzaniu,

aby można było z nich skorzystać w większym stopniu. W tym celu warto zastosować

algorytmy służące kalibracji i filtracji.

Wbudowany akcelerometr dostarcza odczyty, na które wpływ mają siły grawitacji,

dlatego wartość pionowej składowej przyspieszenia jest zawsze powiększona o około

9,81 m/s2. Na potrzeby projektowanego systemu, istotne jest, aby ten wpływ

wyeliminować, a co za tym idzie, urządzenie pozostające w spoczynku wskazywało

zerową wartość przyspieszenia. Sposobem na uzyskanie pożądanego efektu może być

zastosowanie filtrów górno- i dolnoprzepustowych [3].

Algorytm filtrujący w pierwszym etapie stosuje filtr dolnoprzepustowy w celu

wydzielenia wpływu sił grawitacji. Nowa wartość przyspieszenia wynikająca z grawitacji

jest wynikiem dodawania poprzedniej wartości przyspieszenia ziemskiego, pomnożonej

przez pewną stałą ALPHA i nowej wartości przyspieszenia zmierzonej przez

akcelerometr, pomnożonej przez (1 – ALPHA). Stała ALPHA określa, w jakich

proporcjach zaktualizowana wartość grawitacji zależy od każdego ze składników. Stała

może przyjmować wartości w zakresie od 0 do 1. Im jest mniejsza, tym bardziej nowy

pomiar zmienia starą wartość grawitacji, a gdy stała zmierza do 1, nowy odczyt ma coraz

mniejszy wpływ. Może być dobrana w sposób eksperymentalny.

Następnie, mając już obliczony wpływ każdej składowej sił grawitacji, wystarczy

odjąć ich wartości od odpowiednich składowych aktualnego pomiaru akcelerometru, aby

otrzymać poszukiwane rezultaty. Poniżej znajduje się fragment kodu odpowiedzialny za

wykonanie algorytmu. Metoda highPassFilter przyjmuje jako argumenty wartości

poszczególnych składowych przyspieszenia, stosuje filtrację i w wyniku zwraca nowe

wartości składowych. Wywoływana jest za każdym razem, gdy aplikacja odbiera

aktualizację pomiarów.

private float[] highPassFilter(float x, float y, float z)

{

float[] filtered = new float[3];

// Filtr dolnoprzepustowy

gravity[0] = ALPHA * gravity[0] + (1 - ALPHA) * x;

gravity[1] = ALPHA * gravity[1] + (1 - ALPHA) * y;

gravity[2] = ALPHA * gravity[2] + (1 - ALPHA) * z;

// Filtr górnoprzepustowy

filtered[0] = x - gravity[0];

filtered[1] = y - gravity[1];

filtered[2] = z - gravity[2];

return filtered;

}

Page 31: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

31

Poniższa ilustracja prezentuje wpływ dwóch różnych wartości stałej (w tym

przypadku nazwanej a) na otrzymane wyniki filtracji. Surowe dane oscylują wokół

wartości pomiaru 1, natomiast po zastosowaniu filtru, przesunięcie zostało

wyeliminowane i sygnał oscyluje wokół 0. Przy uwzględnieniu stałej na poziomie 0,95

różnice między wartością minimalną i maksymalną zostają w przybliżeniu zachowane,

natomiast stała wynosząca 0,1 w bardzo dużym stopniu zniekształca dane wejściowe.

Rysunek 12. Filtr górnoprzepustowy z użyciem dwóch różnych wartości stałej a [3]

Rozpoznawanie wybojów polega na analizie pionowej składowej przyspieszenia.

Osie układu współrzędnych są zdefiniowane w odniesieniu do urządzenia, zatem po

obróceniu telefonu o 90°, inna oś odpowiada kierunkowi pionowemu. Aby możliwe było

wykrywanie nierówności niezależnie od tego, czy urządzenie jest ułożone pionowo, czy

poziomo, należy przedefiniować osie układu współrzędnych przed rozpoczęciem

pomiaru. Przy tym zakładam, że urządzenie umieszczone jest nieruchomo, w taki sposób,

że któraś z jego osi jest w przybliżeniu prostopadła do powierzchni ziemi.

Nieprzetworzone dane z akcelerometru zawierają wpływ sił grawitacji, zatem wartość

jednej ze składowych jest znacznie większa niż pozostałych. Na tej podstawie można

określić, która z osi urządzenia jest pionowa. Aby ograniczyć prawdopodobieństwo

błędnego rozpoznania, sumowane są wartości kilkunastu kolejnych odczytów, dla każdej

składowej oddzielnie i porównywane ze sobą. Do dalszej analizy pod kątem wykrywania

nierówności brana jest pod uwagę oś, dla której suma kolejnych wartości przyspieszenia

okazała się największa.

Gdyby urządzenie było wyraźnie przechylone, żadna z jego osi nie odpowiadałaby

kierunkowi działania grawitacji. Wówczas detekcja wstrząsów byłaby nieprecyzyjna,

ponieważ nawet gwałtowne hamowanie mogłoby być uznane za wybój. Jednak

w sytuacji, gdy oś jest nieznacznie odchylona od pionu (w zakresie do kilkunastu stopni),

wystarczy skorygować wartość progową stosowaną przy wykrywaniu nierówności.

Page 32: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

32

W tym celu, podczas kalibracji obliczane są średnie wartości przyspieszenia dla osi

zbliżonej do pionu i przyspieszenia wypadkowego. Stosunek pierwszej miary do drugiej

daje w rezultacie wartość współczynnika korekcyjnego, przez który należy pomnożyć

wartość progową ustawioną przez użytkownika, aby otrzymać wiarygodne wyniki

detekcji.

Istnieją różne algorytmy, których zadaniem jest wykrywanie nierówności. Cztery

odmienne podejścia zostały zaprezentowane w publikacji naukowców z Uniwersytetu

Łotewskiego [5].

Pierwszy algorytm wykorzystuje wartość bezwzględną pionowej składowej

przyspieszenia. Porównuje ją z przyjętym progiem, powyżej którego zdarzenie zostaje

zidentyfikowane jako wybój. Detekcja może się odbywać już w chwili odebrania pomiaru

z akcelerometru. Poniższy rysunek obrazuje działanie opisanej metody. Nierówność

rozpoznawana jest wówczas, gdy przyspieszenie przekroczy próg oznaczony na wykresie

przerywaną linią.

Rysunek 13. Algorytm rozpoznawania nierówności nr 1 [5]

Kolejny sposób polega na obliczaniu różnicy dwóch kolejnych pomiarów. Kiedy

rezultat przekracza określoną wartość progową, oznacza to wykrycie szarpnięcia,

co może świadczyć o nierówności.

Rysunek 14. Algorytm rozpoznawania nierówności nr 2 [5]

Page 33: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

33

Trzeci algorytm wykorzystuje właściwości odchylenia standardowego pionowej

składowej przyspieszenia. To podejście wymaga przetwarzania danych już po

zakończeniu pomiaru. Rozpoznawanie nierówności na bieżąco nie jest możliwe.

Szerokość okna oraz próg wykrywania muszą być podane.

Rysunek 15. Algorytm rozpoznawania nierówności nr 3 [5]

Ostatnia metoda polega na wykrywaniu sytuacji, dla których pomiary akcelerometru

we wszystkich trzech osiach wskazują wartości poniżej pewnego określonego progu.

Ten algorytm zakłada operowanie na wynikach z uwzględnieniem wpływu grawitacji

oraz nie wymaga znajomości ułożenia osi układu współrzędnych, jednak ma najniższą

skuteczność.

Rysunek 16. Algorytm rozpoznawania nierówności nr 4 [5]

W swoim projekcie zastosowałem pierwszy algorytm rozpoznawania nierówności.

Wydaje się on intuicyjny, stwarza możliwość zdefiniowania progu wykrywania wybojów

w prosty sposób, przystępny dla użytkownika bez specjalistycznej wiedzy. Co istotne, nie

wymaga skomplikowanych obliczeń, co pozytywnie wpływa na obciążenie urządzenia.

Page 34: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

34

3.3 Opis implementacji

AndroidManifest.xml

Plik AndroidManifest.xml jest obowiązkowym elementem każdego programu

tworzonego na platformę Android. Znajduje się w głównym katalogu aplikacji i zawiera

informacje o niej prezentowane na potrzeby systemu.

Rejestruje wszystkie komponenty, z których zbudowana jest aplikacja, takie jak:

Activity, Service, BroadcastProvider oraz ContentProvider.

Określa, która spośród aktywności jest główną, czyli taką, która zostaje wyświetlona

po uruchomieniu z menu systemowego. W przypadku tej aplikacji jest to

MainActivity, czyli ekran zawierający menu główne.

<activity

android:name=".MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"

/>

</intent-filter>

</activity>

Definiuje nazwę, pod jaką aplikacja występuje w systemie i ikonę, która jej

towarzyszy. Wartości tych parametrów są zapisane w zasobach. Nazwa to Sense,

a ikona umieszczona jest w katalogu drawable.

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

Wymienia uprawnienia, których program potrzebuje do prawidłowego działania

i zaprezentowania pełni możliwości. Dostęp do niektórych elementów systemu jest

ograniczony ze względu na bezpieczeństwo i ochronę prywatności, dlatego

programista musi zadeklarować w manifeście chęć korzystania z nich. Następnie,

przy instalacji programu użytkownik jest pytany, czy wyraża zgodę na użycie tych

komponentów.

Aplikacja Sense wymaga następujących uprawnień:

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"

/>

Dostęp do internetu oraz informacji o stanie sieci wymagany jest w celu pobrania

i wyświetlenia aktualnych map danego obszaru za pomocą usług Google Maps.

Page 35: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

35

<uses-permission

android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"

/>

Powyższe uprawnienia są konieczne, aby uzyskać dane o aktualnej lokalizacji.

ACCESS_COARSE_LOCATION odpowiada za określanie przybliżonego położenia na

bazie sieci komórkowych i Wi-Fi, natomiast z ACCESS_FINE_LOCATION można

odczytać dokładną lokalizację korzystając również z danych GPS.

<uses-permission

android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Dzięki tej linijce, możliwy jest zapis plików w pamięci zewnętrznej urządzenia,

co wykorzystywane jest przy eksporcie trasy do pliku KML.

<uses-permission

android:name="com.google.android.providers.gsf.permission.READ_GSERVIC

ES" />

Ostatnie z uprawnień umożliwia dostęp do usług Google, m. in. wykorzystanie

mechanizmu map w tworzonej aplikacji.

Aby móc korzystać z Google Maps Android API, trzeba uzyskać unikalny klucz,

rejestrując swój projekt za pomocą internetowego narzędzia Google APIs Console,

a następnie umieścić go w pliku manifestu w następujący sposób (wprowadzając klucz

w miejsce API_KEY):

<meta-data

android:name="com.google.android.maps.v2.API_KEY"

android:value="API_KEY"/>

Cykl życia aktywności

Aktywności są charakterystycznymi komponentami systemu Android, które

posiadają swój własny cykl życia. W danym momencie aktywność znajduje się w jednym

ze stanów: utworzona (created), uruchomiona (started), przywrócona (resumed),

wstrzymana (paused), zatrzymana (stopped) lub zniszczona (destroyed). W trakcie

działania aplikacji aktywność przechodzi z jednego stanu do następnego. Zmianami

stanów zarządza system, wywołując przy tym odpowiednie metody:

onCreate() – wywoływana podczas pierwszego uruchomienia aplikacji

onStart() – wywoływana tuż przed wyświetleniem aktywności

onResume() – wywoływana po wyświetleniu aktywności, gdy ta jest gotowa do

interakcji z użytkownikiem

Page 36: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

36

onPause() – wywoływana, gdy aktywność zostaje przesunięta na drugi plan, staje

się nieaktywna, choć częściowo widoczna

onStop() – wywoływana, gdy aktywność staje się niewidoczna dla użytkownika

onRestart() – wywoływana przed ponownym wyświetleniem aktywności, po

wyjściu ze stanu zatrzymana

onDestroy() – wywoływana przed zniszczeniem aktywności

Rysunek 17. Cykl życia aktywności w Androidzie [17]

Każda z implementowanych aktywności musi dziedziczyć po klasie Activity.

W przypadku prostszych aktywności wystarczy zaimplementować jedynie metodę

onCreate(), inicjując wewnątrz niej wymagane elementy. Natomiast w tych bardziej

złożonych należy przesłonić pozostałe metody według potrzeb.

Zgodnie z tym, co zostało zadeklarowane w pliku manifestu, po uruchomieniu

aplikacji wyświetlana jest aktywność MainActivity. W czasie jej tworzenia budowany jest

interfejs użytkownika w oparciu o odpowiedni plik xml, który definiuje jej wygląd. Plik

activity_main.xml opisuje ułożenie trzech przycisków na środku ekranu, ich etykiety oraz

działania związane z naciśnięciem każdego z nich. Ponadto, na początku ładowane są

wartości ustawień użytkownika. Klasa MainActivity rozszerza wbudowany komponent

ActionBarActivity, co oznacza, że u góry ekranu znajduje się pasek akcji, standardowy

element interfejsu Androida, który zawiera nazwę widoku i listę innych widoków. Klasa

zawiera metody wywoływane w reakcji na wybranie przycisków, które uruchamiają

odpowiadające im aktywności SensingActivity, SettingsActivity i HelpActivity. Ostatnie

dwie można wyświetlić przechodząc do nich również z listy paska akcji. Uruchomienie

nowej aktywności wiąże się z przejściem ostatnio aktywnej do stanu zatrzymana.

Page 37: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

37

Wybierając pierwszą opcję w menu głównym programu otworzymy widok

SensingActivity. Aktywność rozszerza ActionBarActivity, a z poziomu jej paska akcji

mamy dostęp do ustawień i pomocy. W dolnej części ekranu znajduje się duży, wyraźny

przycisk do manualnego zgłaszania nierówności. W związku z tym, że musi on być łatwo

dostępny, w trybie pomiaru wyświetlacz nie może być automatycznie wygaszany ani

blokowany. Przed wyświetleniem aktywności tworzony jest interfejs użytkownika, a pola

tekstowe są łączone z widokiem. Tworzony jest również obiekt do zarządzania bazą

danych, odczytywane są wartości ustawień oraz uzyskiwany jest dostęp do akcelerometru

i usług lokalizacyjnych.

Przed rozpoczęciem interakcji z użytkownikiem inicjowane jest odbieranie

aktualizacji wartości akcelerometru z częstotliwością około piętnaście razy na sekundę

oraz aktualizacji położenia na podstawie zarówno metod bazujących na sieci, jak i na

module GPS. Dane o lokalizacji uzyskiwane mają być możliwie jak najczęściej, bez

określania minimalnego odstępu czasu ani odległości pomiędzy aktualizacjami. Taki

sposób konfiguracji i wykorzystanie wszystkich dostępnych dostawców położenia

gwarantują najszybsze obliczenie współrzędnych i najświeższe dane. W przypadku

wstrzymania aktywności, w metodzie onPause() zatrzymywane jest odbieranie

aktualizacji pomiarów akcelerometru i danych GPS.

Gdy informacje o lokalizacji zostają zaktualizowane, wywoływana jest metoda

onLocationChanged. Przyjęto, że informacje pochodzące od dostawców sieciowych

służą jedynie do przyspieszenia określania lokalizacji, gdyż na ogół położenie na bazie

sygnału GPS jest określane precyzyjniej. Dlatego dane od NETWORK_PROVIDER są

ignorowane, a współrzędne zmierzone przez moduł GPS zapisywane jako aktualna

lokalizacja i wyświetlane na ekranie.

Jeśli natomiast zmienia się wartość pomiaru akcelerometru, wywoływana jest metoda

onSensorChanged. Najpierw, odczytane dane podlegają filtracji w celu wyeliminowania

wpływu sił grawitacji na wynik pomiaru przyspieszenia. Następnie, obliczana jest

wartość wypadkowa przyspieszenia i rezultaty pojawiają się na wyświetlaczu. Program

pobiera z systemu aktualny czas i na koniec zapisuje najnowsze pomiary przyspieszenia

w bazie danych. Gdy użytkownik zgłosi nierówność poprzez naciśnięcie przycisku,

w bazie danych zapisywane jest to zdarzenie powiązane z ostatnią lokalizacją i czasem

ostatniego odczytu przyspieszenia powiększonego o jedną milisekundę. Po naciśnięciu

przycisku kończącego pomiar aktywność zostaje zatrzymana na rzecz uruchomienia

widoku wyświetlającego przebytą trasę na mapie – MapsActivity.

Aktywność MapsActivity tworzy interfejs użytkownika, obiekt do zarządzania bazą

danych oraz inicjuje widok mapy. Niektóre elementy mapy mogą być ustawiane

programowo. Włączono wyświetlanie aktualnej lokalizacji oraz przycisków do

sterowania poziomem zbliżenia. Inne opcje, takie jak przesuwanie wyświetlanego

widoku czy obracanie ekranu za pomocą gestów są domyślnie dostępne. Ostatnim etapem

inicjalizacji mapy jest zaznaczenie zarejestrowanej trasy przejazdu i nierówności drogi.

Page 38: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

38

W tym celu posłużono się oferowanymi przez biblioteki metodami do rysowania linii

i punktów na mapie. Z bazy danych pobierane są wszystkie wyniki, a następnie

współrzędne geograficzne łączone są odcinkami, w kolejności występowania.

Równocześnie, stawiane są odpowiednie oznaczenia w miejscach, gdzie zarejestrowano

wstrząsy. Innym kolorem oznaczane są te wykryte automatycznie, a innym zgłoszone

przez użytkownika.

U dołu ekranu znajduje się przycisk, który pozwala zapisać zaznaczoną trasę do pliku

w pamięci zewnętrznej urządzenia. Wybrałem format KML, gdyż jest on obsługiwany

m. in. przez popularną aplikację Google Earth oraz internetowe usługi służące do

wyświetlania informacji geograficznych. Najpierw, sprawdzana jest dostępność pamięci

zewnętrznej do zapisu. Jeśli pamięć jest dostępna, tworzony jest nowy plik w domyślnej

lokalizacji. Zapisywane są do niego w postaci tekstu nagłówki konfigurujące

wyświetlanie pliku, a następnie wprowadzane są współrzędne w odpowiednim formacie.

Plik jest zakończony odpowiednimi znacznikami, a po jego pomyślnym zapisie

wyświetlane jest powiadomienie.

Klasa SettingsActivity rozszerza wbudowany komponent służący do wyświetlania

ekranu ustawień – PreferenceActivity. Aktywność jest praktycznie całkowicie

definiowana przez plik zasobów preferences.xml. Oferuje możliwość ustawienia wartości

progowej przyspieszenia, powyżej której wstrząsy są traktowane jako istotne nierówności

drogi. Po wybraniu tej opcji, wyświetla się okno dialogowe i klawiatura numeryczna.

Domyślną wartością jest 2.0, a użytkownik może wprowadzić dowolną dodatnią liczbę

jako ułamek dziesiętny. Z perspektywy programisty, wartości ustawień są dostępne

z każdego miejsca w programie. Są one automatycznie zachowywane pomiędzy

uruchomieniami programu, więc nie trzeba dodatkowo martwić się o zapis stanu aplikacji

przy zamykaniu jej.

Aktywność HelpActivity opisuje działanie programu, objaśnia poszczególne funkcje

i dostarcza informacje o autorze. Jej struktura i wygląd określone są w pliku

activity_help.xml, a treść wypełniana jest wewnątrz klasy. Aktywność nie oferuje

interakcji z użytkownikiem, a służy do zaprezentowania treści.

Klasa Database zarządza połączeniem z bazą danych SQLite. Rozszerza klasę

SQLiteOpenHelper, która jest dostarczana przez platformę Android i służy do obsługi

bazy danych. Przy implementacji tej klasy wykorzystałem wzorzec projektowy singleton,

aby obiekt Database był właściwie inicjalizowany. Klasa posiada statyczną metodę, która

służy do uzyskiwania jej instancji. Metoda sprawdza, czy instancja już istnieje, a jeśli nie,

to wywołuje prywatny konstruktor. Dzięki takiemu rozwiązaniu może istnieć tylko jedna

instancja omawianej klasy, co zapobiega występowaniu błędów przy połączeniu z bazą

danych.

Page 39: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

39

Tabela bazy danych jest tworzona przy użyciu instrukcji języka SQL, gdy plik bazy

danych wcześniej nie istniał. Dane są wstawiane do tabeli przy pomocy metody, która

przyjmuje jako argument obiekt zawierający wszystkie wyniki jednego pomiaru. Można

otrzymać listę wszystkich pomiarów znajdujących się w bazie danych, wywołując

odpowiednią metodę.

Zasoby

Wygląd interfejsu użytkownika zdefiniowany jest za pomocą plików znajdujących się

w specjalnym katalogu zasobów. Folder res podzielony jest na podkatalogi: drawable,

layout, menu, values i xml.

Katalog drawable zawiera pliki graficzne wykorzystywane w aplikacji. W moim

przypadku są to: ikona programu i obrazki służące do oznaczania

zarejestrowanych nierówności na mapie.

Katalog layout zawiera pliki XML, z których każdy odpowiada jednej aktywności

i służy do opisu jej układu, wyglądu i w pewnym stopniu też zachowania.

Android oferuje trzy podstawowe typy układów: LinearLayout, RelativeLayout

oraz FrameLayout, a ja w większości przypadków zdecydowałem się na

wykorzystanie pierwszego z nich. Wewnątrz układów umieszczane są różne

elementy, takie jak przyciski, etykiety, pola tekstowe. Ich wielkość, położenie

i inne właściwości definiowane są właśnie w takich plikach.

Katalog menu zawiera pliki, które opisują zawartość menu aplikacji (menu

kontekstowego lub opcji).

Katalog values zawiera pliki przechowujące różne wartości liczbowe, tekstowe,

ustawienia. Dzięki takiej koncepcji możliwe jest proste wprowadzanie zmian bez

zagłębiania się w kod programu. W moim projekcie znajdują się tu wymiary

różnych elementów widoku (w pliku dimens.xml) i zawartość wszystkich

stosowanych etykiet tekstowych, zatem przetłumaczenie aplikacji do innej wersji

językowej nie stanowiłoby problemu.

W folderze xml znajduje się tylko jeden plik – preferences.xml, który definiuje

zawartość menu ustawień.

Page 40: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

40

4. Testowanie

W celu weryfikacji poprawnego działania aplikacji zostały przeprowadzone ręczne

testy. Testowanie musi się odbywać w sposób manualny, ponieważ działanie aplikacji

wymaga interakcji z użytkownikiem, a także zależy od zewnętrznych czynników.

Program wykorzystuje fizyczne sensory, których nie da się symulować, dlatego należy

przeprowadzić testy na urządzeniu docelowym.

Wyświetlanie przebytej trasy na mapie

Warunki początkowe:

Aktywny dostęp do internetu.

Włączone usługi lokalizacyjne (GPS + sieciowe).

Urządzenie ułożone stabilnie.

Kolejne kroki:

1. Uruchomienie aplikacji.

2. Rozpoczęcie pomiaru.

3. Przejechanie trasy.

4. Zakończenie pomiaru.

Oczekiwany rezultat:

Wyświetlona mapa z zaznaczoną trasą, która zgadza się z rzeczywistością.

Dostępna opcja zapisu trasy do pliku.

Przebieg testu:

Jako trasę testową do prezentacji działania tej funkcjonalności wybrałem fragment

alei Armii Ludowej w Warszawie na odcinku Główny Urząd Statystyczny – Metro

Politechnika. Przejechałem ją autobusem komunikacji miejskiej, a telefon spoczywał na

półce przy szybie. Na załączonym zrzucie ekranu widać, że zaznaczona czarną linią trasa

pokrywa się z przebiegiem ulicy, a więc odpowiada rzeczywistości.

Page 41: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

41

Rysunek 18. Wyświetlanie trasy – widok mapy

Rysunek 19. Wyświetlanie trasy – Google Earth

Zapis trasy do pliku

Warunki początkowe oraz kolejno wykonywane kroki są takie same, jak w przypadku

wyświetlania trasy na mapie. Dochodzi jedynie piąty krok:

1.-4. Tak jak w scenariuszu Wyświetlanie przebytej trasy na mapie.

5. Zapisanie pliku KML.

Oczekiwany rezultat:

Wyświetlone powiadomienie o poprawnym zapisie pliku.

Plik track.kml w pamięci urządzenia, w katalogu Download.

Przebieg testu:

Po pokonaniu trasy opisanej w poprzednim punkcie zapisałem ją do pliku KML.

W celu sprawdzenia poprawności tej operacji przeszedłem do odpowiedniego katalogu

i otworzyłem plik za pomocą programu Google Earth. Jak widać na załączonym obrazku

naniesiona linia pokrywa się z jezdnią i wygląda bardzo podobnie do tej wyświetlonej

w widoku aplikacji.

Page 42: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

42

Plik track.kml można otworzyć również za pomocą edytora tekstu, aby zobaczyć jego

strukturę i zawartość:

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://www.opengis.net/kml/2.2">

<Document>

<Placemark>

<name>Track</name>

<Style>

<LineStyle><color>ff00ffff</color><width>4</width></LineStyle>

<PolyStyle><color>7f00ff00</color></PolyStyle>

</Style>

<LineString><extrude>1</extrude><altitudeMode>clampToGround

</altitudeMode>

<coordinates>

21.006017684936523,52.217166900634766,0.36093304

……………………………………………………

</coordinates>

</Placemark>

</Document>

</kml>

Automatyczne wykrywanie nierówności

Warunki początkowe oraz kolejno wykonywane kroki są takie same, jak w przypadku

wyświetlania trasy na mapie. Trasa przejazdu testowego powinna jednak uwzględniać

pokonanie znanej nierówności.

Oczekiwany rezultat:

Zaznaczone na mapie miejsce, w którym odczuwalny był wstrząs.

Przebieg testu:

W celu zarejestrowania nierówności na drodze wybrałem trasę prowadzącą przez

torowisko tramwajowe. Przejazdy tramwajowe lub kolejowe to typowe przykłady miejsc,

w których często występują wyboje. Za pomocą aplikacji monitorowałem odcinek ulicy

Waryńskiego w Warszawie, od Ronda Jazdy Polskiej w stronę placu Konstytucji.

Wybraną trasę przecinają tory tramwajowe w ciągu ulicy Nowowiejskiej.

Po zakończeniu pomiaru wyświetlona została mapa z zaznaczonym na czerwono

punktem, który oznacza wykrytą nierówność. Jak widać na rysunku poniżej, wspomniany

punkt znajduje się w bezpośrednim sąsiedztwie skrzyżowania, przez które biegną tory.

Wyboje zostały zatem wykryte w sposób prawidłowy.

Page 43: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

43

Rysunek 20. Rejestrowanie nierówności – automatyczne i manualne

Zgłaszanie wybojów przez użytkownika

Warunki początkowe oraz kolejno wykonywane kroki są bardzo zbliżone do

przypadku Automatyczne wykrywanie nierówności. Jedyną różnicą jest dodatkowe

wciśnięcie przycisku do zgłaszania nierówności po przejechaniu przez nią.

Oczekiwany rezultat:

Wyświetlone powiadomienie o zgłoszeniu nierówności.

Zaznaczone na mapie miejsce nieopodal miejsca wystąpienia wyboju.

Page 44: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

44

Przebieg testu:

Do zobrazowania manualnego zgłaszania wybojów został wykorzystany przejazd

opisany w poprzednim punkcie. Po przejechaniu torowiska, kiedy odczułem wstrząsy,

zgłosiłem nierówność wybierając odpowiednią opcję. Zdarzenie to zostało przedstawione

na mapie jako niebieski punkt w pobliżu skrzyżowania – widnieje na rysunku 20.

Znacznik jest nieco oddalony od torów, a wynika to z opóźnienia, z jakim wstrząs został

zgłoszony przez użytkownika. Obsługujący aplikację może dokonać zgłoszenia

w dowolnym momencie, a odległość znacznika od miejsca rzeczywistego wystąpienia

wyboju zależy od niego. Zaprezentowany przypadek potwierdza, że zgłaszanie

nierówności działa prawidłowo.

Zachowywanie wartości ustawień

Warunki początkowe – brak szczególnych.

Kolejne kroki:

1. Uruchomienie aplikacji.

2. Wyświetlenie widoku ustawień.

3. Zmiana parametru.

4. Wyłączenie aplikacji.

5. Ponowne włączenie aplikacji.

6. Wyświetlenie widoku ustawień.

7. Sprawdzenie wartości parametru.

Oczekiwany rezultat:

Wartość parametru po ponownym uruchomieniu aplikacji taka sama jak przed

wyłączeniem.

Test został przeprowadzony według podanych kroków i rezultat był zgodny

z oczekiwanym.

Page 45: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

45

Podsumowanie

Celem pracy było stworzenie aplikacji służącej do monitorowania i rejestrowania

parametrów jazdy pojazdów, działającej na urządzeniach mobilnych pod kontrolą

systemu Android. Aplikacja miała wykorzystywać do pomiarów wbudowane czujniki.

W ramach pracy zaimplementowano program, który odczytuje i gromadzi dane

z akcelerometru i modułu GPS. Niosą one informacje na temat przyspieszeń, jakim

podlega pojazd w ruchu drogowym. Zostały one wykorzystane do automatycznego

wykrywania nierówności nawierzchni. Efekty działania aplikacji prezentowane są

użytkownikowi w przystępny sposób oraz zapisywane, w celu umożliwienia dalszej ich

analizy.

Przegląd dostępnych publikacji naukowych dotyczących monitorowania stanu dróg

za pomocą urządzeń mobilnych umożliwił zapoznanie się z prowadzonymi dotychczas

badaniami na ten temat. Wymienione w nim artykuły opisują stosowane algorytmy

filtrowania danych i wykrywania nierówności, które można było wykorzystać w moim

projekcie. Natomiast przegląd istniejących aplikacji pozwolił zorientować się, jak

wygląda obecna sytuacja na rynku programów wykorzystujących sensory, jakie

technologie są stosowane i jakie funkcje oferują.

Sformułowane zostały wymagania stawiane tworzonemu rozwiązaniu. W wyniku ich

analizy powstała koncepcja rozwiązania, następnie zaproponowana została architektura,

po czym wykonano prace nad częścią implementacyjną. Przeprowadzone testy wykazały,

że aplikacja spełnia w satysfakcjonującym stopniu stawiane przed nią wymagania:

Rejestruje przyspieszenie i położenie, czego dowodem mogą być aktualne

wartości obu wielkości wyświetlane na bieżąco na ekranie. Dane są również

zapisywane w bazie danych.

Wykrywa nierówności w sposób automatyczny, stosując przy tym opisane

algorytmy i uwzględniając wartość progową ustawioną przez użytkownika.

Oferuje użytkownikowi możliwość manualnego zgłoszenia wybojów poprzez

naciśnięcie dużego przycisku na ekranie. Wówczas zdarzenie zostaje zapisywane

do bazy danych.

Wyświetla zarejestrowaną trasę i wyboje na mapie, rozróżniając te wykryte

automatycznie od zgłoszonych ręcznie. Umożliwia zapis nanoszonych na mapę

informacji do pliku KML, który da się otworzyć w programie Google Earth

i wyświetlić w prawidłowy sposób.

Prezentuje ekran pomocy, który jest dostępny z menu głównego oraz z widoku

pomiaru. Interfejs graficzny aplikacji jest przejrzysty, stworzony zgodnie

z zaleceniami zawartymi w przewodniku programisty/projektanta. Aplikacja

obsługuje urządzenia z systemem Android w wersji 2.3 oraz każdej nowszej.

Page 46: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

46

Efekty działania stworzonej aplikacji potwierdzają możliwość pomyślnego

zastosowania sensorów w urządzeniu mobilnym w celu wykrywania nierówności.

Ponadto, zostawiają otwartą furtkę dla rozwoju projektu. W obecnej formie aplikacja

może służyć pojedynczemu kierowcy, jako ciekawostka, aby mógł zobaczyć, w którym

miejscu były największe wstrząsy i porównać z własnymi odczuciami.

Dalsze prace

W ramach kolejnego etapu, wykraczającego poza ramy czasowe projektu

inżynierskiego, mogą być prowadzone dalsze prace nad rozwinięciem projektu. Można

pomyśleć o stworzeniu części serwerowej, która będzie gromadziła dane spływające

od wielu użytkowników. Na jej podstawie możliwe byłoby, m. in. utworzenie dokładnej

mapy nierówności drogowych. Po stronie urządzenia mobilnego należałoby opracować

metodę oszczędnej synchronizacji danych z serwerem. Dodatkowo, można rozszerzyć

działanie systemu o analizę także pozostałych osi, w celu wykrywania różnych innych

sytuacji drogowych. Wreszcie, warte uwagi byłoby, moim zdaniem, zintegrowanie

pomiarów przyspieszenia z istniejącymi systemami nawigacji samochodowej. Wówczas,

nawigacja działałaby w standardowy sposób, aktualizując co pewien czas lokalizację,

natomiast w tle, niemal niepostrzeżenie zbierane by były pomiary z akcelerometru

i cyklicznie przesyłane do serwera.

Page 47: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

47

Dodatek

Podręcznik użytkownika

Instalacja

Aby zainstalować aplikację Sense, na urządzeniu docelowym należy włączyć opcję

Nieznane źródła dostępną w ustawieniach (najczęściej Ustawienia – Zabezpieczenia lub

Ustawienia – Bezpieczeństwo). Następnie, należy przejść do folderu, w którym znajduje

się plik instalacyjny z rozszerzeniem .apk i go uruchomić. Po wyświetleniu się okna

z pytaniem o chęć instalacji i listą uprawnień (rys. 22), należy wybrać Instaluj. Po krótkiej

chwili aplikacja zostanie zainstalowana.

Rysunek 21. Instalacja – nieznane źródła

Rysunek 22. Instalacja – uprawnienia

Page 48: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

48

Uruchomienie

Aplikację można uruchomić z poziomu menu głównego wybierając ikonę

przedstawioną na rysunku 24, podpisaną nazwą Sense. Po uruchomieniu wyświetlone jest

menu główne, składające się z trzech pozycji: Start, Ustawienia i Pomoc.

Wybranie opcji Start powoduje wyświetlenie nowego ekranu i rozpoczęcie pomiaru.

Naciśnięcie przycisku Ustawienia przenosi do widoku ustawień aplikacji, a wybranie

opcji Pomoc wyświetla ekran pomocy z informacjami o aplikacji i o autorze. Przejście

do ustawień i pomocy możliwe jest też poprzez menu wyświetlane po naciśnięciu

symbolu trzech kropek, znajdującego się po prawej stronie górnego paska akcji (rys. 23).

Rysunek 23. Menu aplikacji Sense

Rysunek 24. Ikona aplikacji Sense [18]

Przed przystąpieniem do rozpoczęcia pomiarów należy się upewnić, że urządzenie

posiada aktywny dostęp do internetu oraz usługi lokalizacyjne są włączone.

Aby odczyty były wiarygodne, urządzenie musi spoczywać nieruchomo względem

samochodu, np. może być umieszczone w uchwycie na telefon. Usytuowanie urządzenia

pod przednią szybą pozwoli uzyskać możliwie najlepszy sygnał GPS, gdyż na drodze od

nadajnika do odbiornika nie znajdą się wówczas metalowe przeszkody w postaci

elementów konstrukcji pojazdu, co będzie skutkować precyzyjniej określoną lokalizacją.

Page 49: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

49

Zalecane jest również podłączenie urządzenia do ładowania, ponieważ działający bez

przerwy moduł GPS i stale włączony ekran mogą w stosunkowo krótkim czasie

rozładować baterię.

Widok pomiaru

W tym trybie na ekranie wyświetlane są odczyty z akcelerometru oraz dane GPS.

Na pasku akcji w górnej części ekranu, po lewej stronie znajduje się symbol strzałki, która

pozwala wrócić do głównego menu, a po prawej wysuwane menu, takie jak w głównym

widoku, umożliwiające przejście do ustawień i pomocy. W dolnej części jest większy

przycisk służący do zgłaszania nierówności oraz mniejszy do zakończenia pomiaru.

Na początku, aplikacja przeprowadza kalibrację pomiarów akcelerometru (przez 2-3

sekundy) i w tym czasie w sekcji Odczyty z akcelerometru wyświetlany jest stosowny

komunikat. Równocześnie odbywa się wyszukiwanie sygnału GPS i dopóki lokalizacja

nie zostanie obliczona, w części Dane GPS zamiast współrzędnych wyświetlana jest

odpowiednia informacja. W tej sytuacji, przycisk Zgłoś nierówność jest nieaktywny.

Po poprawnym zainicjowaniu pomiaru na ekranie widoczne są aktualne wartości

przyspieszenia, w rozbiciu na trzy składowe: x, y, z, a także wartość wypadkowa

przyspieszenia, wyświetlane w m/s2. Poniżej widnieją współrzędne geograficzne:

szerokość i długość, wyświetlone w formacie stopni dziesiętnych.

W trakcie pomiaru nie jest wymagana żadna aktywność użytkownika – program może

automatycznie rejestrować dane. Jednak aplikacja oferuje również możliwość

manualnego sygnalizowania nierówności. W tym celu wystarczy nacisnąć duży przycisk

Zgłoś nierówność, najlepiej możliwie szybko po przejechaniu wyboju, który użytkownik

postanowi zgłosić. Wówczas zapisane zostanie miejsce rejestracji, aby mogło być później

wyświetlone na mapie. Czynności towarzyszy wyświetlany komunikat o zgłoszeniu.

Po przejechaniu trasy, należy wybrać opcję Koniec pomiaru jeszcze, gdy urządzenie

spoczywa stabilnie, aby nie wprowadzać błędnych odczytów. Po zakończeniu pomiaru

wyświetlany jest nowy ekran z mapą.

Page 50: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

50

Rysunek 25. Aplikacja Sense – widok pomiaru

Rysunek 26. Aplikacja Sense – widok mapy

Widok mapy

Ekran zawiera mapę z typowymi elementami służącymi do zbliżania i oddalania

widoku oraz wyświetlania aktualnej pozycji. Ponadto, z dołu znajduje się przycisk

służący do zapisywania trasy do pliku KML. Przebyta trasa zaznaczona jest czarną linią,

wykryte automatycznie nierówności – czerwonym punktem, a zgłoszone przez

użytkownika – niebieskim. Po pomyślnym zapisaniu pliku wyświetlany jest stosowny

komunikat.

Ustawienia

W ustawieniach można zmienić wartość progową wykrywania nierówności. Jest to

wielkość przyspieszenia w osi pionowej, powyżej której wstrząs traktowany jest jako

wybój. Może przyjmować wartości dodatnie w postaci ułamków dziesiętnych. Parametr

może być dobierany eksperymentalnie, a sensowne wydają się wartości z przedziału od

1 do 5 m/s2.

Page 51: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

51

Spis ilustracji

Rysunek 1. Udział poszczególnych systemów operacyjnych na smartfony w rynku [1] . 8

Rysunek 2. Trilateracja [4] ............................................................................................. 11

Rysunek 3. Aplikacja Accelerometer Monitor [8] .......................................................... 15

Rysunek 4. Aplikacja Measurement of acceleration, pomiar przyspieszenia [9] .......... 16

Rysunek 5. Aplikacja Measurement of acceleration, wykres przyspieszenia [9] .......... 16

Rysunek 6. Aplikacja Moje trasy, widok trasy [10] ....................................................... 17

Rysunek 7. Aplikacja Moje trasy, widok statystyk [10] ................................................. 17

Rysunek 8. Aplikacja Yanosik, widok zgłaszania [11] ................................................... 18

Rysunek 9. Aplikacja Yanosik, widok nawigacji [11] .................................................... 18

Rysunek 10. Układ współrzędnych w systemie Android [14]........................................ 22

Rysunek 11. Aktywności aplikacji ................................................................................. 25

Rysunek 12. Filtr górnoprzepustowy z użyciem dwóch różnych wartości stałej a [3] .. 31

Rysunek 13. Algorytm rozpoznawania nierówności nr 1 [5] ......................................... 32

Rysunek 14. Algorytm rozpoznawania nierówności nr 2 [5] ......................................... 32

Rysunek 15. Algorytm rozpoznawania nierówności nr 3 [5] ......................................... 33

Rysunek 16. Algorytm rozpoznawania nierówności nr 4 [5] ......................................... 33

Rysunek 17. Cykl życia aktywności w Androidzie [17] ................................................ 36

Rysunek 18. Wyświetlanie trasy – widok mapy ............................................................. 41

Rysunek 19. Wyświetlanie trasy – Google Earth ........................................................... 41

Rysunek 20. Rejestrowanie nierówności – automatyczne i manualne ........................... 43

Rysunek 21. Instalacja – nieznane źródła ....................................................................... 47

Rysunek 22. Instalacja – uprawnienia ............................................................................ 47

Rysunek 23. Menu aplikacji Sense ................................................................................. 48

Rysunek 24. Ikona aplikacji Sense [18] .......................................................................... 48

Rysunek 25. Aplikacja Sense – widok pomiaru ............................................................. 50

Rysunek 26. Aplikacja Sense – widok mapy .................................................................. 50

Spis tabel

Tabela 1. Udział poszczególnych systemów operacyjnych na smartfony w rynku [1] .... 7

Tabela 2. Schemat tabeli sensor_values ......................................................................... 27

Page 52: Aplikacja do monitorowania parametrów jazdy na platformę ... · większość posiadaczy smartfonów jest użytkownikami systemu Android, twórcy oprogramowania na urządzenia mobilne

52

Bibliografia

[1] http://www.idc.com/prodserv/smartphone-os-market-share.jsp.

[Data uzyskania dostępu: 17.12.2014].

[2] http://encyklopedia.pwn.pl/haslo/czujnik;3889920.html.

[Data uzyskania dostępu: 17.12.2014].

[3] G. Milette i A. Stroud, Professional Android Sensor Programming, 2012.

[4] http://www.physics.org/article-questions.asp?id=55.

[Data uzyskania dostępu: 18.01.2015].

[5] A. Mednis, G. Strazdins, R. Zviedris, G. Kanonirs i L. Selavo, „Real time pothole

detection using Android smartphones with accelerometers” w International

Conference on Distributed Computing in Sensor Systems and Workshops

(DCOSS), 2011.

[6] V. Astarita, M. Caruso, G. Danieli, D. Festa, V. Giofrè, T. Iuele i R. Vaiana,

„A mobile application for road surface quality control: UNIquALroad”,

Procedia - Social and Behavioral Sciences, tom 54, pp. 1135-1144, 2012.

[7] A. Kulkarni, N. Mhalgi, D. Sagar Gurnani i N. Giri, „Pothole Detection System

using Machine Learning on Android”, International Journal of Emerging

Technology and Advanced Engineering, tom 4, nr 7, 2014.

[8] https://play.google.com/store/apps/details?id=com.lul.accelerometer.

[Data uzyskania dostępu: 17.12.2014].

[9] https://play.google.com/store/apps/details?id=ru.autotest.acceleration.

[Data uzyskania dostępu: 17.12.2014].

[10] https://play.google.com/store/apps/details?id=com.google.android.maps.mytracks.

[Data uzyskania dostępu: 17.12.2014].

[11] https://play.google.com/store/apps/details?id=pl.neptis.yanosik.mobi.android.

[Data uzyskania dostępu: 15.01.2015].

[12] http://developer.android.com/design/get-started/principles.html.

[Data uzyskania dostępu: 22.01.2015].

[13] http://developer.android.com/about/dashboards/index.html.

[Data uzyskania dostępu: 17.12.2014].

[14] http://developer.android.com/reference/android/hardware/SensorEvent.html.

[Data uzyskania dostępu: 15.01.2015].

[15] W. F. Ableson, Android w akcji, 2011.

[16] E. Burnette, Hello, Android, 2011.

[17] http://developer.android.com/training/basics/activity-lifecycle/starting.html.

[Data uzyskania dostępu: 20.01.2015].

[18] http://www.telegraph.co.uk/motoring/road-safety/8605892/New-road-sign-makes-

a-hole-lot-of-sense-for-motorists.html. [Data uzyskania dostępu: 25.01.2015].