univerzita hradec králové1 1 Úvod již od pradávna je pro člověka důležité určování...
TRANSCRIPT
Univerzita Hradec Králové
Fakulta informatiky a managementu
Katedra informatiky a kvantitativních metod
Využití herních principů při zjišťování rádiových otisků
bezdrátových sítí
Diplomová práce
Autor: Bc. Martin Jedlička Studijní obor: Aplikovaná informatika
Vedoucí práce: doc. Ing. Filip Malý, Ph.D.
Hradec Králové Srpen 2016
Prohlášení:
Prohlašuji, že jsem diplomovou práci zpracoval samostatně a s použitím
uvedené literatury.
V Hradci Králové dne 15. 8. 2016 Bc. Martin Jedlička
Poděkování:
Děkuji vedoucímu diplomové práce doc. Ing. Filipu Malému, Ph.D. za metodickou,
pedagogickou a odbornou pomoc a cenné rady, které mi pomohly při zpracování
diplomové práce. Poděkování patří i mým rodičům a známým, kteří mě
podporovali po celou dobu studia.
Anotace
Diplomová práce se zabývá využitím mobilních zařízení pro získávání otisků
bezdrátových sítí za pomocí využití herních principů. Úvodní část práce se
zaměřuje na představení metod lokalizace. Je zde ve zkratce popsán GPS systém
a jeho funkčnost. Dále jsou v práci uvedeny způsoby, jak je možné navigovat
uživatele uvnitř budov a jaké metody k tomu lze využít. Dále jsou popsány síťové
modely, které je možné využít při stavbě komunikace. Obsahem druhé části
aplikace je vlastní řešení tohoto problému prostřednictvím Android aplikace
a využitím knihovny 2D OpenGL libGDX a aplikace Barcode Scanner, která
umožňuje čtení QR a čárových kódů. Řešení dále obsahuje webový server napsaný
v jazyce Java s frameworkem Spring MVC, pro ukládání otisků bezdrátových sítí.
Součástí těchto kapitol jsou ukázky zdrojových kódů, které souvisí
s obsahem a popis struktury aplikace. Na závěr se provádí šetření, zda se
navrhované řešení dá využít v praxi a jak je přesné. Dále se zmiňují další možnosti
rozšíření aplikace.
Annotation
Title: The use of game principles in determining the radio
fingerprint of wireless network
The diploma thesis deals with the use of mobile applications for gaining the
imprint of wireless network with the help of use of the game principles. The
opening part of the work focuses on the introduction of localization methods.
There is, briefly, described the GPS system and its functionality. Then there are
stated ways how to navigate users inside of buildings and which methods can be
used for doing so. Then there are described network models which can be used for
construction of communication. The content of the second part of the application is
a solution of this problem itself through the agency of Android application and
using 2D OpenGL libGDX library and application Barcode Scanner, which enables
reading QR and bar codes. The solution then contains web server which is written
in a language Java with framework Spring MVC which is used for saving imprints of
wireless network.
As parts of this chapter there are demonstrations of source codes, which
are connected with the content and the description of application structure. Finally
there is provided a research whether the proposed solution can be used in practice
or not and how accurate it is. Next there are mentions of another possibilities of
application expansion.
Obsah
1 Úvod ........................................................................................................................................................ 1
2 Metody lokalizace ............................................................................................................................. 3
2.1 Global Navitagion Satellite System .................................................................................. 3
2.2 Indoor navigace ........................................................................................................................ 5
3 Principy určení polohy uvnitř budovy ................................................................................... 7
3.1 Technologie pro určení polohy uvnitř budovy .......................................................... 7
3.1.1 Wi-Fi/ WLAN..................................................................................................................... 7
3.1.2 Bluetooth.......................................................................................................................... 10
3.1.3 RFID .................................................................................................................................... 12
3.1.4 Telefonní sítě mobilních operátorů .................................................................... 14
3.1.5 Optické senzory ............................................................................................................ 16
3.2 Metody a algoritmy pro určování polohy .................................................................. 18
3.2.1 Metoda nejbližšího přístupového bodu ............................................................ 18
3.2.2 Metoda trilaterace ....................................................................................................... 18
3.2.3 Time Of Arrival (TOA) ............................................................................................... 20
3.2.4 Time Difference Of Arrival (TDOA) ..................................................................... 20
3.2.5 Metoda „otisků signálů“ ............................................................................................ 21
4 Síťová komunikace a síťové modely .................................................................................... 24
4.1 Síťová architektura .............................................................................................................. 24
4.1.1 Model klient-server ..................................................................................................... 25
4.1.2 Peer-to-peer ................................................................................................................... 27
5 Analýza ............................................................................................................................................... 28
5.1 Požadavky na aplikaci ......................................................................................................... 28
5.2 Použité technologie .............................................................................................................. 29
5.2.1 Java ...................................................................................................................................... 29
5.2.2 Android ............................................................................................................................. 29
5.2.3 OpenGL ES 2.0/3.1 ...................................................................................................... 30
5.2.4 libGDX ................................................................................................................................ 31
5.2.5 Barcode Scanner ........................................................................................................... 31
5.2.6 Spring Framework....................................................................................................... 32
5.2.7 Hibernate ......................................................................................................................... 32
5.2.8 MySQL ................................................................................................................................ 32
5.2.9 IntelliJ IDEA .................................................................................................................... 33
5.2.10 Git ........................................................................................................................................ 33
5.2.11 QR kód ............................................................................................................................... 33
5.2.12 Tiled Map Editor ........................................................................................................... 33
6 Implementace .................................................................................................................................. 35
6.1 Klientská část .......................................................................................................................... 35
6.1.1 Struktura aplikace ....................................................................................................... 35
6.1.2 Ukázka implementace klientské části ................................................................ 39
6.2 Serverová část......................................................................................................................... 44
6.2.1 Struktura aplikace ....................................................................................................... 44
6.2.2 Ukázka implementace serverové části .............................................................. 46
7 Shrnutí výsledků a testování.................................................................................................... 50
8 Závěr .................................................................................................................................................... 57
9 Seznam použité literatury ......................................................................................................... 59
10 Seznam obrázků ......................................................................................................................... 64
11 Seznam tabulek ........................................................................................................................... 65
12 Seznam rovnic ............................................................................................................................. 66
Příloha č.1 - CD.......................................................................................................................................... 67
1
1 Úvod
Již od pradávna je pro člověka důležité určování polohy, orientace a plánování
trasy z počátečního bodu A do koncového bodu B. Historie map sahá hluboko do
minulosti, již první mapa byla vytvořena 14 tisíc let před naším letopočtem. Pro
vytvoření této dochované mapy bylo použito kamene a do něj vyryté čáry, které
měly znázorňovat důležité věci v okolí. Do prvních map se lidé snažili zaznamenat
toky řek, hory, jeskyně, vhodná místa pro pastvu a lov. [1] S poznáváním světa se
stávaly mapy čím dál důležitější a obsahovaly více informací, jako jsou například
kontinenty, obchodní trasy, cesty a města.
Mezi první přístroje pro určování polohy a orientace patří kompas, který
používali námořníci na svých plavbách. S nástupem informačních technologií tuto
úlohu částečně převzaly počítače, které s rozvojem internetu v 70. letech minulého
století umožňovaly po celém světě přístup k mapám.
V 70. letech minulého století byl zahájen vývoj systému GPS (Global
Positioning Systém), který znamenal průlom v určování pozice. Od jeho uvedení do
provozu v 80. letech navigaci plně převzaly počítače a to od distribuce až po
samotné vypočítávání tras. [2] Rozvoj chytrých telefonů, tato zařízení obsahují
různé moduly (například GPS, Wi-Fi), zapříčinil, že i tato zařízení mohou být
využita k navigaci a jejich hlavní výhodou je všudypřítomnost.
Aplikace pro mobilní zařízení (telefony a tablety) zažívají v současnosti
obrovského rozmachu. Úspěch aplikací je založen na vývoji chytrých telefonů
(smartphonů), které přinesly do informačních a komunikačních technologií
obrovskou revoluci a umožnily lidem pohodlně využívat jedno zařízení pro více
účelů. Pomocí dotykového displeje jsou uživateli pohodlně zobrazena data a dále
display umožňuje jednoduše ovládat zařízení pomocí dotyků a gest. Každé chytré
mobilní zařízení využívá operační systém a aplikační rozhraní, díky kterému si
každý uživatel může stáhnout jakoukoliv aplikaci, kterou se dá rozšířit
funkcionalita zařízení a přizpůsobit si ho podle svých představ.
Roku 1992 firma IBM představila svůj telefon Simon, jenž je prvním
chytrým telefonem, který se na trhu objevil roku 1994. Zařízení disponovalo 4,6“
černobílým dotykovým displejem. Umělo faxovat, přijímat a odesílat e-mail,
2
v zařízení se například nacházely aplikace jako kalkulačka, světový čas, adresář,
kalendář, poznámky a další [3].
V roce 2007 představila firma Apple telefon iPhone, který ovlivnil svět
chytrých zařízení. Nejednalo se přímo o chytrý telefon, protože se do něj zatím
nedaly instalovat aplikace, ale svým uživatelským prostředím zcela jasně definoval
směr, kterým se vydaly všechny chytré telefony v dalších letech [4]. Téhož roku
vstoupila na trh s mobilními zařízeními společnost Google, která představila
operační systém Android. Jedním z mnoha faktorů rychlého rozšíření následujícího
operačního systému mezi vývojáře a uživatele je, že byl uvolněn jako open source.
Představení chytrých telefonů znamenalo velký posun ve světě mobilních
zařízení. Do té doby bylo nemožné, aby lidé mohli být 24 hodin denně připojeni
k internetu, využívat jeho možnosti a protokoly (například SMTP, FTP atd.)
a přitom být schopni se pohybovat kdekoliv.
Zajímavostí je porovnání růstu mobilních zařízení a počítačů v posledních
letech. Z článku na webu Smart Insights [5] lze vyčíst, že podíl chytrých mobilních
zařízení roste od roku 2003 vyšším tempem než podíl počítačů. Z tohoto důvodu
firmy investují velké množství peněz do mobilních aplikací.
V první části se diplomová práce bude zabývat průzkumem různých
způsobů navigace v budově, přičemž zvolení vhodné metody významně určuje
přesnost určování polohy. Dále zde budou popsány různé typy síťových modelů,
které jsou nezbytné pro některé způsoby orientace.
Cílem práce je čtenáři poskytnout přehled o možných způsobech navigování
v budovách. V práci budou popsány jednotlivé způsoby, jejich klady a zápory.
Praktická část si klade za cíl vytvoření mobilní hry pro platformu Android. Hra je
vytvořena z důvodu sběru otisků bezdrátových sítí a jejich ukládání na server. Dále
zde budou popsány jednotlivé použité komponenty a popis implementovaného
řešení.
3
2 Metody lokalizace
Určování pozice a navigování pomocí GPS systému je již běžnou součástí lidského
života. Mnoho lidí, ať už se jedná o řidiče, cyklisty nebo turisty, si neumí představit
cestování bez této služby. Problém nastává ve vnitřních prostorách budov, kde je
systém GPS nefunkční. GPS systém spadá do Global Navigation Satellite
System (GNSS).
2.1 Global Navitagion Satellite System
GNSS jsou systémy, mezi které patří již výše zmíněný GPS systém, který je
spravovaný vládou USA, dále sem spadá ruský systém GLONASS1, evropský projekt
GALILEO.
Tyto výše uvedené satelitní systémy využívají ke své činnosti specifický
hardware – satelity, které se pohybují ve vzdálenosti asi 20 000km po eliptické
dráze kolem planety Země a díky nim se dá určit zeměpisná poloha přijímače
kdekoliv na světě.
V současné době obíhá planetu Zemi minimálně 24 funkčních družic
systému GPS. Aby družice mohly být funkční, využívají solární energii. Systém je
tvořen třemi segmenty. Kosmickým, řídícím a uživatelským segmentem. Tyto
segmenty musí mezi sebou tvořit „trojúhelník“ a musí být mezi nimi zajištěná
viditelnost. Pro určení polohy musí být dostupné všechny tři segmenty, jinak není
možné určit pozici. [6]
Pro stanovení polohy pomocí GPS zařízení existují dva principy. Prvním
z nich je princip časového intervalu, kde se poloha stanovuje pomocí vzdálenosti
mezi vysílačem a přijímačem pomocí časového intervalu mezi vysláním a přijetím
signálu. Signál tedy obsahuje informace, ze které družice byl vyslán a v jaký čas.
Princip stanovení polohy je zachycen na obrázku 1. Rovnice 1 zachycuje
zjednodušený výpočet, který probíhá při každé komunikaci mezi přijímačem
a satelitem. Rovnice 2 popisuje vzdálenost přijímače a satelitu.
1 Global Orbiting Navigation Satellite System
4
Obrázek 1: Princip stanovení polohy změřením časového intervalu [6]
Rovnice 1 [6]
di – vzdálenost antény přijímače od i-tého satelitu
x, y, z – určované souřadnice
xs ,ys ,zs – souřadnice satelitu, které se získají z vysílaných údajů
o drahách satelitu daného systému
PRS – pseudovzdálenost mezi přijímačem a satelitem
T – časová chyba přijímače
ES – součet všech chyb systému satelitní navigace
Rovnice 2 [6]
tdi – doba mezi vysláním signálu ze satelitu do přijímače
c – rychlost šíření elektromagnetických vln
Druhým způsobem určení polohy je metoda protínání imaginárních kružnic,
takzvaná metoda trilaterace. Středy těchto kružnic se nacházejí ve středech družic
a poloměr kružnice je dán vzdáleností přístroje od družice. Obrázek 2 znázorňuje
princip určení polohy pomocí délek tří bodů a jejich protnutím.
5
Obrázek 2: Princip stanovení polohy změřením délek [6]
2.2 Indoor navigace
Již mnoha lidem se stalo, že se ztratili ve velkých obchodních centrech či budovách.
Ze získaných statistických údajů se dá zjistit, že člověk denně průměrně tráví přes
80% svého času v budovách. Proto je lákavé se nechat navádět nebo si nechat určit
polohu i uvnitř v budově. Tyto služby nám nabízí systém IPS2.
Vnitřní polohový systém (IPS) je tedy obdobou GPS navigace, je využitelný
na místech (v budovách), kde nejsou funkční klasické GPS technologie. Z tohoto
důvodu je tato technologie často označována jako nová generace navigace, která
má využití v budovách. IPS není jen o zjištění polohy, pokud se v budově
nacházíme. Za hlavní cíl si klade orientaci v samotných budovách. Hlavní využití je
v rozlehlých komplexech, jako jsou nemocnice, výstaviště, letiště a nákupní centra.
Fungování systému pro zjištění aktuální pozice může být založeno na
několika způsobech. Jedná se o technologie založené na rádiových frekvencích,
které byly důkladně prozkoumány. Do rádiových frekvencí spadá například
Wireless Local Area Network (WLAN, také znám pod názvem Wi-Fi), sítě mobilních
operátorů, Bluetooth, rádio frekvenční identifikace (RFID), ultra širokopásmové
beacons, lasery atd. Tyto technologie dokážou dostatečně přesně určit pozici. [7]
Nejčastěji se používají technologie Wi-Fi nebo Bluetooth připojení nebo jejich
vzájemná kombinace.
Základem pro správné fungování navigace uvnitř budov je potřeba získat
mapové podklady, které nejsou součástí standardních navigací. Jedná se
2 Indoor positioning system
6
o půdorysy budov, parkovišť atd. V těchto půdorysech jsou zaznamenány nejen
komunikace, jako jsou chodby, schodiště, výtahy, ale především konkrétní místa
(místnosti), ke kterým potřebuje uživatel dovést nebo se v nich orientovat.
Na vývoji jednotlivých aplikací založených na službě IPS se podílejí velké
společnosti například Google, Cisco, společnosti patřící do In-Location Alliance [8]
nebo některé menší společnosti či jednotlivci. V současné době (rok 2016) existuje
několik desítek komerčních a open-source aplikací vytvořených pro různé mobilní
platformy. Bohužel zatím tato služba není dostupná ve všech zemích. Například
z dokumentace Google [9] se můžeme dozvědět, kde jejich Google Maps podporují
navigaci v budovách.
Google Maps od verze 6.0 pro platformu Android umožňují navigování
v interiérech budov. [10] Na obrázku 3 v levé části je zobrazeno využití pouze
služby GPS. Jak můžeme vidět, podle tohoto mapového podkladu se uživatel
nemůže orientovat. Jak bylo výše uvedeno, v budově je GPS systém nepoužitelný
nebo velmi omezený, z tohoto důvodu by určování polohy uživatele bylo nepřesné
či nemožné. V pravé části obrázku můžeme vidět využití služby IPS, kde jsou
zmapována jednotlivá patra budovy. Díky této službě a jednotlivým podlažím je
možné přesně určit, kde se daný uživatel nachází. A díky tomu mu usnadnit
orientaci.
Obrázek 3: Obchod v Minneapolis v USA se službou GPS a IPS [10]
7
3 Principy určení polohy uvnitř budovy
Jak již bylo výše zmíněno, pro lokalizaci v budovách je možné využít více
technologií. Některé z těchto technologií se pro určování polohy v budovách hodí
více, některé méně. Důvodů proč zvolit tyto technologie je více, ať už z vyšší
rozšířenosti či vyšší přesnosti.
3.1 Technologie pro určení polohy uvnitř budovy
V této kapitole budou popsány nejčastěji používané technologie pro určování
polohy uvnitř budov. V současné době jsou nejčastěji používány technologie Wi-Fi
a Bluetooth nebo jejich vzájemná kombinace, pomocí nichž se dá zlepšit přesnost
určování polohy.
3.1.1 Wi-Fi/ WLAN
S rozvojem internetového připojení a s následným rozvojem mobilních zařízení,
kdy v dnešní době člověk vlastní jedno či více chytrých zařízení nebo notebooků,
začal masivní rozvoj bezdrátových sítí. Na základě tohoto rozvoje začaly klesat
ceny zařízení (Routerů), které umožňují jednoduše připojit více zařízení, ať už
v domácnosti, v zaměstnání nebo v kavárně přes jednu internetovou přípojku. Díky
těmto routerům je vybudována infrastruktura, díky níž je možné navigovat
v budovách.
Wi-Fi je označení standardů založených na základě standardů IEEE3 802.11,
vyvinutých organizaci IEEE Standards Assaciations a popisující bezdrátovou
komunikaci v počítačových sítích. Standard 802.11 se dále dělí na různé verze
standardů, tyto verze jsou zachyceny v tabulce č. 1. Každá z uvedených verzí má
trochu jiné parametry. Liší se například ve frekvenci (nejčastěji se využívá 2.4GHz
nebo 5GHz), přenosové rychlosti a dosahu signálu. Nejčastěji používanými
standardy jsou 802.11g a 802.11n. [11]
3 IEEE – Institute of Electrical and Electronics Engineers
8
Tabulka 1: Přehled standardů IEEE 802.11 [12]
Z tabulky č. 1 můžeme dále vyčíst, že dosah jednotlivých Wi-Fi sítí je
omezen, navíc tyto hodnoty jsou uváděny ve volném prostranství za optimálních
podmínek. Pokud se mezi routerem a koncovým zařízením vyskytne nějaká
překážka, dochází k útlumu signálu. Útlum materiálu je zachycen v tabulce č 2.
Dále odchylky v měření mohou být způsobeny elementy, jako jsou například
postavení člověka, naklonění telefonu nebo HW zařízení, v tomto případě WiFi
modulem.
Materiál Útlum signálu (dB)
Masivní dřevěné dveře 1.75" 6
Prosklené dveře 1.75"/0.5" 4
Ocelové/protipožární dveře 1.75"/2.5" 13/19
Ocelová sekvenční vrata 1.5" 11
Cihla 3.5" 6
Betonová zeď 18“ 18
Skleněné příčky 0.5" 12
Dutá příčka 4"/6" 5/9
Masivní příčka 5" 14
Mramor 2" 6
Neprůstřelné sklo 1" 10
Okna dvojitá 1" 13
Okna jednoduchá 0.5" 7
Okno vnitřní 1" 3
Bezpečnostní drátěné sklo 0.25"/1" 3/13
Tabulka 2: Útlum Wi-Fi signálu na základě materiálu [13]
9
Signál též označený jako RSSI4 vysílaný z přístupového bodu neboli Wi-Fi
routeru může nabývat hodnot od 0dB do -99dB. Kde hodnota 0 znamená nejsilnější
sílu signálu. Hodnota -99 znamená, že Wi-Fi síť je nedostupná.
Wi-Fi router má v sobě několik spojených funkcí, které běžně zastává
několik různých zařízení. Jedná se například o Router a AP5. AP vysílají pomocí
všesměrových nebo směrových antén signál do okolí. Zde může docházet k útlumu,
protože větší anténa a její zisk nezvyšují její oblast pokrytí, jak si většina lidí myslí,
ale pouze její dosah. Vysílání všesměrové antény si lze představit jako „kapku“
kolmou k anténě, kde je její průměr, a tedy dosah signálu, je přímo úměrný zisku
antény. Viz obrázek č. 4. Z tohoto plyne, že při zvyšujícím průměru klesá tloušťka
této „kapky“. To znamená, pokud anténa má vyšší zisk, tak bude mít dobře pokryté
patro, na kterém se nachází vysílač, ale v ostatní patrech nebude buď žádný, nebo
velmi slabý signál. [14] Tomu se dá zabránit vhodným natočením antény, ale při
nesprávném natočení může docházet k horšímu šíření signálu.
Obrázek 4: Šíření signálu všesměrovou anténou [14]
4 RSSI – Received Signal Strength Indicator 5 AP – Access Point
10
Z důvodu omezeného dosahu Wi-Fi sítí a jejich útlumům nebo výskytu více
firem vyžadujících vlastní připojení k internetu je pro rozlehlé objekty nutné
použít více Wi-Fi sítí. Pro pokrytí většího prostoru Wi-Fi sítěmi ve stejném
frekvenčním pásmu je potřeba nejlépe tří nepřekrývajících se kanálů. Určování
polohy pomocí síly signálu je populární záležitostí, jelikož sílu signálu dokáží
změřit všechna dostupná zařízení jako mobilní telefony, tablety, chytré hodinky
nebo notebooky. Jelikož v jednom objektu může existovat více Wi-Fi síti se stejným
názvem, k lokalizaci je potřeba využívat jedinečný identifikátor, jedná se
o specifikaci BSSID6 definující BSSID jako MAC7 adresu zařízení na AP.
3.1.2 Bluetooth
Technologie Bluetooth je bezdrátovou technologií umožňující lidem pohodlně
propojit svá zařízení s jinými přístroji, například mobilní telefony, bezdrátová
sluchátka (Handsfree), chytré hodinky, na krátkou vzdálenost (jedná se zhruba
o 10m). Původně byla tato technologie vytvořena se záměrem nahrazení
kabelového připojení. Často se navzájem propojují dvě zařízení, ale některá
zařízení umožňují být najednou připojena k více zařízením, nejvíce však
maximálně k 7 zařízením. Komunikace je řízená pomocí hlavního prvku, který vždy
iniciuje spojení. Aby zařízení mohla být vzájemně propojená, je potřeba je
spárovat. To znamená, buď zadat do obou zařízení stejný číselný kód, nebo jedno
ze zařízení, které chceme propojit má již vygenerovaný číselný kód, který je
potřeba vložit do druhého zařízení a poté zařízení mohou spolu navzájem
komunikovat a přeposílat si data.
Bluetooth pracuje v pásmu ISM8 2.4GHz, stejné pásmo je využíváno Wi-Fi
sítěmi, jenž lze využívat za předpokladu dodržení závazných podmínek pro
vyzářený výkon. Volné použití pásma tedy znamená, že není potřeba žádat
o přidělení frekvenčního pásma a ani za něj platit jakékoliv poplatky, proto je
označováno jako bezlicenční.
6 BSSID – Basic Services Set IDentifier. 7 MAC – Media Access Control 8 ISM – industrial,scientific and medical
11
Pomocí standardu 802.15.1 je definována technologie Bluetooth, která
spadá do WPAN9 sítí. [15] Technologie Bluetooth se od svého objevení vyvíjela,
časem byly vytvořeny nové verze, které doplňují standardy 802.15.
Zařízení se dále dělí podle výkonnosti do tříd (class), což zachycuje tabulka
č. 3. Nelze jednoduše říct, že class 1 je lepší než ostatní class, protože s větším
dosahem stoupá energetická náročnost, která hraje u mobilních zařízení důležitou
roli. Pokud máme dvě zařízení, která podporují technologii Bluetooth a jedno
spadá do class 1 a druhé do class 2, tak zařízení budou moci spolu komunikovat
pouze na vzdálenost, která je rovna menšímu dosahu.
class maximální výkon dosah (přibližně)
class 1 100mW(20dBm) 100 m
class 2 2.5mW(4dBm) 10 m
class 3 1mW(0dBm) 1 m
Tabulka 3: Rozdělení zařízení podle výkonnosti [16]
Pro určování polohy pomocí Bluetooth se využívá technologie iBeacon. Tato
technologie vytvořená firmou Apple je založena na síti nízkoenergetických
Bluetooth (Bluetooth verze 4.0, též označována jako BLE 4.0) vysílačů. [17] Díky
technologii BLE 4.0 vydrží malá baterie do hodinek až 2 roky napájet vysílač, čímž
jsou zaručeny nízké pořizovací náklady. Tyto spoty (vysílače) se vhodně rozmístí
po budově, aby byla budova co nejlépe pokryta signálem. Dosah jednoho vysílače je
standardně okolo 70 metrů. Pro navigování uživatele je potřeba, aby jeho mobilní
zařízení podporovalo Bluetooth verze 4.0 a bylo zapnuto. Po splnění těchto
podmínek je možné uživatele navigovat či mobilní zařízení může reagovat na vstup
do určité zóny.
9 WPAN – Wireless Personal Area Network
12
Obrázek 5: Princip fungování iBeaconu [18]
3.1.3 RFID
Jedná se o moderní technologii identifikace objektů pomocí radiofrekvenčních vln
bez nutnosti přímé viditelnosti. S touto technologií se můžeme setkat v mnoha
průmyslových odvětvích. Čipy mohou být například implementovány na různé
druhy zboží. V obchodech se s nimi nejčastěji setkáme jako se zabezpečením proti
krádeži, ve firmách mohou sloužit jako technologie pro sledování pohybu
materiálu (u vjezdu a výjezdu bude instalován RFID snímač, poté se čip nalepí na
zboží a při vjezdu do skladu se zvýší počet kusů, při vyvezení dojde ke snížení
počtu kusů na skladě).
Systém se skládá ze tří základních komponent. Jedná se o antény, přijímače/
vysílače a nosiče informace. Nosič informace je elektrický programovatelný čip,
který může být přepisovatelný. [19] Princip fungování je založen na čtečkách, které
hledají nejbližší vysílače nebo pasivní značky. Čtečky mohou být různého tvaru
a velikosti. Například mohou být implementovány do rámů dveří nebo příručních
zařízení. Systém se provozuje na různých vlnových délkách, které jsou zachyceny
v tabulce č.4. Na základě různých frekvencí je omezen dosah, rychlost čtení a tím
následné využití. Technologie RFID se dá rozdělit na aktivní a pasivní typy čipů.
13
Frekvenční pásmo Čtecí
vzdálenost Rychlost čtení Využití Výhody + / nevýhody -
Nízkofrekvenční (LF) 125-134 KHz
do 0,5 m malá rychlost
čtení
-kontrola přístupů -identifikace a
sledování zvířat -imobilizéry aut
-identifikace kovových předmětů
+ možnost snímání na kovu a přes
kapalinu
- vysoké výrobní náklady
Vysokofrekvenční (HF) 13,56 MHz
do 1 m dostatečná
rychlost čtení
-chytré karty -bezkontaktní placení
-chytré etikety -označování zavazadel
při přepravě
+ nízká cena RFID tagů
+ celosvětově standardizována
frekvence
- vysoké výrobní náklady
- obtížné čtení přes kapalinu a
kov
Ultrafrekvenční (UHF) 860 - 960 MHz
do 3 m vysoká rychlost
čtení
-sledování palet při přepravě a ve skladě
-současná identifikace více zabalených
produktů -elektronické mýtné
-parkovací karty -sledování toku vratných obalů
+ levná výroba + možnost
vzdáleného čtení
- nečitelnost přes kapaliny
- obtížná čitelnost přes kovy
Mikrovlná 2,45 a 5,8 GHz
do 10 m rychlost i při extrémních rychlostech
-elektronické mýtné -identifikace
zavazadel při letecké přepravě
-bezdrátový záznam a přenos dat v reálném
čase
+ velká přenosová rychlost až 2Mb/s
- drahá a složitá
konstrukce
Tabulka 4: Rozdělení RFID podle standardizovaných nosných komunikačních frekvencí [20] [21]
Aktivní RFID čipy
Aktivní čipy jsou oproti pasivním čipům složitější a hlavně dražší z důvodu
vlastního energetického zdroje, který většinou vydrží 1-5 let. Kvůli těmto
podmínkám stoupají cenové náklady na pořízení aktivních čipů, i přes svoji znovu
použitelnost nejsou tak často využívány jako pasivní čipy. Tyto aktivní čipy vysílají
samy do svého okolí signál a čtečka (přijímač) pouze naslouchá. Dosah signálu je
14
většinou několik desítek metrů a z tohoto důvodu jsou vhodné k lokalizaci
předmětů, osob, zvířat atd. [22]
Pasivní RFID čipy
Systém pasivních RFID čipů je bez svého energetického zdroje. Z tohoto důvodu
jsou pořizovací ceny těchto čipů minimální, ale jsou pouze na jedno použití. Pracují
na principu, kdy vysílač v určitých intervalech vysílá signál. Pokud se v okolí objeví
pasivní čip, vysílač přijímaný signál využije k nabití svého napájecího
kondenzátoru a odešle odpověď. [22]
Pasivní čipy se dají také využít pro navigaci v budovách. Protože není
potřeba přímé viditelnosti, lze čipy umístit zespod koberce či na zeď těsně
u podlahy. Takto se v budovách vytvoří různé trasy, které se poté uloží do chytrých
zařízení, které se propojí se snímací anténou RFID čipu. Tato technologie je
především rozšířená pro nevidomé lidi, kteří využívají speciální slepecké hole
(obsahuje akumulátory a ve špičce hole je umístěn snímač RFID čipu) a následně
z této hole jsou data přeposílána do mobilního zařízení, kde dojde ke zpracování
speciální aplikací a přiřazení fráze, která je uživateli přečtena. [23]
3.1.4 Telefonní sítě mobilních operátorů
Nejstarší pokusy určování polohy mobilních zařízení jsou založeny na sítích
mobilních operátorů. V české republice zajišťují mobilní operátoři téměř 99%
pokrytí území. Určování polohy probíhá pomocí GSM10 sítí, které se skládají
z několika subsystému. Jedná se o subsystém základových stanic BSS11, síťové
a spínací subsystémy NSS12 (telefonní ústředny), operační subsystémy OSS13
(kontrola obou předchozích subsystému) a mobilní stanice.
Pro určení polohy jsou nejdůležitější subjekty základových stanic - jejich
základové stanice (BTS14) a mobilní telefony. Každý mobilní operátor zná přesnou
polohu svých BTS stanic, jejich rozdělení do sektorů a identifikační čísla
10 GSM – Global System for Mobile 11 BSS – Base Station Subsystem 12 NSS – Network and Switching Subsystem 13 OSS – Operation Subsystem 14 BTS – Base Transceiver Station
15
jednotlivých sektorů (označených jako Cell ID15 nebo CGI16). [24] BTS stanice jsou
rozmístěny po celém území každého státu. Toto území se rozděluje na jednotlivé
buňky, obsahující ve svých středech vysílače (BTS stanice). Každý vysílač má
nejčastěji několik antén se směrovým vyzařováním. Aby bylo pokryto celé okolí
okolo vysílače, používají se nejčastěji třísektorové BTS (výseč rozdělená po 120°)
nebo dvousektorové BTS (výseč rozdělená po 180°) či výjimečně jednosektorové
BTS (výseč o 360°), viz obrázek č.6. Dosah jednotlivých BTS stanicí je nejvíce 35
km, ale nejčastěji dosahují okolo 20 km, tato vzdálenost je ovlivněna terénem. [24]
Obrázek 6: Všesměrové a sektorové BTS stanice [25]
Hlavní nevýhodou této metody lokalizace je její nepřesnost, zvláště
v neobydlených či málo obydlených oblastech, kde není tolik GSM vysílačů. Pokud
se telefon nachází v oblasti, kde je několik vysílačů (jedná se převážně o města
a okolí dálnic), pak je zaměření – určení pozice mnohem přesnější. Navigování
pomocí mobilních operátorů není přesné jako pomocí výše uvedených metod.
Pomocí této metody se dá určit v jaké oblasti a budově se osoba nachází
a nabídnout jí nějaké výhody. Nejčastěji tento princip využívají jednotky
integrovaného záchranného systému, když pátrají po pohřešované osobě, nebo
když dochází k ověření místa výjezdu, aby nedošlo k výjezdu do stejně nazvané
obce, ale v jiném kraji.
15 Cell ID – jedinečný identifikátor každé BTS stanice 16 CGI – Cell Global Identity
16
3.1.5 Optické senzory
Určování polohy pomocí optických senzorů již není pouze náplní sci-fi filmů.
S touto metodou se můžeme čím dál častěji setkat. Díky miniaturizaci jednotlivých
komponent a technologickému vývoji, který nám přinesl vyšší výpočetní výkon, je
možné v reálném čase zpracovávat digitální obraz. Zpracování digitálního obrazu
v reálném čase umožňuje vytvoření systému, který je schopen uživatele navigovat
uvnitř budov. Určování pozice pomocí optických senzorů je založeno na
technologii využívající CCD17 čipy nebo stále populárnější PSD18 čipy (můžeme se
s nimi setkat u robotických vysavačů) pro snímání okolí. [26] [27]
Určování polohy pomocí optických senzorů nejčastěji využívají autonomní
roboti. Téměř každý robot má několik senzorů (kamery s CCD čipy, PSD čipy,
lasery nebo ultrazvuk), pomocí nichž získává informace z okolí, a díky tomu se
dokáže orientovat a zvolit vhodnou cestu. Při vizuální navigaci robot získává z CCD
kamer / PSD čipů (ze vstupního obrazu) pouze směr. Pokud se v obrazu objeví stín,
robot ho chápe jako překážku a musí reagovat. Z tohoto důvodu jsou roboti často
ještě vybaveni ultrazvukem, aby se přesvědčili, zda se opravdu jedná o překážku
a nejen o špatně získaný obraz. [28] Dalším důležitým faktorem u této technologie
je úhel snímání. Tento údaj opět ovlivňuje přesnost a spolehlivost určení pozice
robota. Problém se špatně získaným úhlem se dá snadno vyřešit pomocí dvou nebo
více nezávislých CCD senzorů. Tento postup dokáže zajistit dvojité či vícenásobné
snímání, které se velmi podobá lidskému vidění (zde každé oko představuje
jednotlivý snímač). Pro zpřesnění metody určování pozice se využívá laserů, které
jsou schopny jako ultrazvuk určovat fyzickou vzdálenost od objektu a tím zpřesnit
získaná data v okolí. [29]
Určování pomocí optických senzorů doplněných o nějaké další senzory je
velmi přesné a podobá se lidskému vnímání světa.
17 CCD – Charged Coupled Device 18 PSD - Position Sensitiv Detector
17
Metoda porovnání snímků
Metoda je založena na principu porovnávání snímků aktuálně získaných ze
senzorů se snímky předem pořízené trasy, které jsou uložený v databázi. Tímto
způsobem je možné určit aktuální polohu. Hlavní nevýhodou je rychlost
zpracování a porovnávání snímků, protože se nepředpokládá, že by bylo využito
aktivních nebo pasivních optických prvků, které by zjednodušovaly určování
pozice. Na snímku získaném pomocí senzoru se může nacházet stín, který může být
způsoben osvětlením. Toto osvětlení může způsobit získání jiné obrazové hodnoty
z databáze, která může zapříčinit špatné vyhodnocení pozice nebo nefunkčnost
robota. Dalším problém je velikost databáze, kde musí být uloženo velké množství
snímků interiéru budovy, aby se robot podle nich mohl orientovat. Prvními pokusy
bylo zjištěno, že pomocí této pozice se dá určit poloha v toleranci 30 cm. [30]
Optické orientační značky
Získávání polohy pouze pomocí metody porovnávání snímků může být za určitých
světelných podmínek velmi obtížné. Například různé fáze dne přináší různé
sluneční osvětlení, které může při porovnávání snímků dělat problém a histogram
by byl úplně jiný.
Za účelem zvýšení odolnosti a přesnosti systému se začaly využívat pro
lokalizaci orientační značky. Tyto značky jsou standardizovány pro dané systémy
a tím je zaručeno rychlejší vyhodnocení pozice. Pro každé místo je určená speciální
značka a z tohoto důvodu není potřeba složitých algoritmů pro výpočet pozice.
Ne v každé budově je možné rozmístit značky, které by umožňovaly
jednodušší orientaci. Tento problém se dá vyřešit pomocí optické projekce značek,
které mohou být viditelné i neviditelné. Pomocí infračerveného světla je možné
zajistit snímání těchto značek. Podmínkou je, aby snímací kamera nahlížela na
projekci značek ze stejného úhlu, jako má světelný zdroj. Tato metoda je
nejekonomičtější z důvodu nepotřeby úpravy interiéru a vytváření značek. Proto
se hodí například pro domácí robotické vysavače. [30]
18
3.2 Metody a algoritmy pro určování polohy
V současnosti existuje několik základních metod, jak určit pozici uživatele pomocí
bezdrátových sítí. Jedná se například o určení nejbližšího přístupového bodu (AP),
trilateraci, použití směru nebo úhlu příchodu signálu, metody založené na čase
nebo nejčastěji používaná metoda „otisků signálu“.
3.2.1 Metoda nejbližšího přístupového bodu
Jedná se o nejjednodušší metodu umožňující určit pozici uživatele pomocí
bezdrátových sítí. Určování polohy je založeno na principu nejbližšího
přístupového bodu, ke kterému je uživatel připojen. Nejbližší přístupový bod je
takový vysílač, který poskytuje nejsilnější signál v okolí uživatele. Aby bylo možné
určit pozici je potřeba znát přesnou polohu vysílače. Následně uživateli bude
přiřazena pozice, na které se nachází vysílač.
Jak bylo výše uvedeno, v praxi tato metoda není přesná. Hned z několika
důvodů, závisí na množství vysílačů v okolí a jejich dosahu (nejsilnějšího signálu).
Dále je známá pozice vysílače, a že je k němu uživatel připojen, ale nevíme kde
přesně uživatel je. Zda se nachází východně, jižně, západně nebo severně od
vysílače. Určení polohy je tedy pouze přibližné a je založeno na principu opsané
kružnice kolem přístupového bodu. A kdekoliv v této kružnici se uživatel může
nacházet.
3.2.2 Metoda trilaterace
Jedná se o metodu určování relativní nebo absolutní polohy objektů pomocí
geometrie (vztahů v trojúhelníku). [31] Zjišťování polohy pomocí metody
trilaterace již bylo částečně popsáno u GPS systému, ale tato metoda umožňuje
určovat pozici i uvnitř budov.
Určování polohy pomocí metody trilaterace tedy vychází z předpokladu, že
jsou známy přesné polohy jednotlivých přístupových bodů. Pro určení polohy je
potřeba současně přijímat signál nejméně ze dvou vysílačů (přístupových bodů),
lépe však ze tří. Z matematického hlediska se v praxi nejčastěji využívá tří vysílačů,
což zaručuje vyšší přesnost pro určení pozice. Nutným prvkem je určit vzdálenost
mezi uživatelem (zařízením přijímající signál) a dvěma nebo třemi vysílači. Tuto
19
vzdálenost lze získat, například pomocí metod Time of Arrival, Time Difference of
Arrival, nebo výpočtu ze signálu. Výpočet vzdálenosti pomocí signálu představuje
3.
Rovnice 3 [32]
di – vzdálenost od i-tého vysílače
pi – maximální dosah vysílače
mi – procentuální sila signálu z i-tého vysílače
Hodnoty signálu pro výpočet vzdálenosti jsou velmi ovlivněny rušivými
elementy, jako jsou okolní terén a povětrnostní podmínky. Následně získané
vzdálenosti nám určují poloměry kružnic, které jsou opsány okolo příslušných
vysílačů. Kružnice vytvoří průsečík, který tvoří jeden bod nebo výseč, která
představuje předpokládanou polohu uživatele. Princip určení pozice je zachycen
na obrázku č.7
Obrázek 7: Trilaterace pomocí tří přístupových bodů a) přesná poloha b) hrubý odhad polohy [33]
Souřadnice všech uzlů jsou dosazeny do obecných rovnic se středem
v bodě S[x?, y?]. Bod S[x?, y?] představuje polohu vysílače. Obecná rovnice má tvar
viz 4. Pro určení souřadnic xi a yi je potřeba zjistit vzájemnou polohu kružnic.
Protože máme tři rovnice o dvou neznámých, je třeba provést úpravy, po kterých
získáme dvě rovnice, viz 5. Z těchto rovnic je možné vypočítat polohu uživatele.
Rovnice 4
20
Rovnice 5
3.2.3 Time Of Arrival (TOA)
Jedná se o metodu určování polohy podle doby, kterou zabere cesta signálu
z vysílače do mobilního zařízení. [34] Tato metoda pro určení vzdálenosti je
využívána při trilateraci k zjištění vzdálenosti mezi vysílačem a zařízením. Jedná se
o jednosměrné nebo obousměrné (zpáteční) šíření signálu v čase.
Jednosměrné šíření signálu vychází z principu, známe rychlosti a změření
doby od vyslání signálu z vysílače po přijetí signálu přijímačem. Důležitým prvkem
je, aby byla obě zařízení časové synchronizována, jinak dochází k posunu času
a tím k nepřesnosti při určení polohy. Tuto technologii využívají GPS systémy,
bezdrátové sítě tuto technologii nevyužívají z důvodu vysoké ceny a HW
omezení. [35]
Obousměrné šíření signálu opět měří čas od vyslání signálu vysílačem po
přijetí přijímačem, ale oproti jednosměrnému šíření je signál odeslán zpět
k vysílači. Tím odpadá problém se synchronizací času na vysílači a přijímači.
Problém u této metody představuje doba zpracování signálu přijímačem
(přijmutím signálu) a odesláním zpět na vysílač. Dobu zpracování je tedy potřeba
změřit a následně odečíst od celkového času přenosu signálu. [35]
3.2.4 Time Difference Of Arrival (TDOA)
Tato metoda opět využívá ke zjištění polohy rozdíly v čase mezi přijetím signálů
z jednotlivých vysílačů. Na rozdíl od metody TOA, kde je měřen absolutní čas, je
měřen rozdíl časů příchodu jednotlivých signálů. Aby byla metoda funkční, je
potřeba zajistit, aby jednotlivé vysílače byly časově synchronizovány. Tímto
způsobem je zaručena schopnost vysílat signály ve stejný čas. Přijímač podle
pořadí jednotlivých signálů a jejich časových rozdílů následně vypočítá, jak daleko
se uživatel od příslušných vysílačů nachází. Aby bylo možné vypočítat
21
přepokládanou vzdálenost mezi uživatelem a vysílačem je potřeba přijímat signál
z několika vysílačů, u kterých je známá přesná pozice. Vypočtená vzdálenost
pomocí výše uvedeného principu se dosadí do trilaterační metody, pomocí niž se
určí poloha uživatele vůči vysílačům. [36]
3.2.5 Metoda „otisků signálů“
Metoda fingerprint („otisků signálů“) je založena na skenování bezdrátových sítí,
vytváření otisků jednotlivých sítí (intenzity RSSI) a jejich ukládání do databáze.
Jedná se o nejpoužívanější metodu pro lokalizaci pomocí rádiového signálu
z důvodu jednoduché implementace a nízkých nákladů na HW. Hlavním problém
této metody je vytvoření databáze otisků a udržování její aktuálnosti. Vytváření
otisků sítí může probíhat dvěma způsoby.
První způsob je pomocí empirického modelu šíření, který je popsán rovnicí
číslo6. Tento model rovněž bere v úvahu různé překážky mezi vysílačem
a přijímačem.
Rovnice 6 [37]
PL(d0)(dB) – výkon ve známé referenční vzdálenosti
n – spádový koeficient (koeficient útlumu), závisí na okolním prostředí
d – vzdálenost mezi přijímačem a vysílačem v metrech
d0 – vzdálenost typicky 1 metr
Xó – nulová střední hodnota Gaussova rozložení náhodné proměnné se střední
standardní odchylkou (vyjadřuje efekt stínění)
U této metody je potřeba získávat docela přesné vstupní data, pomocí nichž
se vytvoří model. I přes poměrně přesné vstupní data přináší tato metoda horší
výsledky než metoda pomocí měření z důvodu komplikovaného šíření rádiového
signálu v budovách. Kde dochází k šíření rádiové vlny od vysílače k přijímači
pomocí více cest, které jsou vytvořeny například pomocí lomu, ohybu a odrazu
signálu od různých překážek.
22
Druhý způsob je založený na prvotním získávání otisků sítí, jedná se tedy
o skenování bezdrátových sítí. Pomocí skenování se vytvářejí otisky vlastností
jednotlivých sítí, u nichž se získávají různé informace. Jako jsou intenzita, název
přístupového bodu, kanál, adresa přístupového bodu (MAC adresa) a jiné.
Každému vytvořenému otisku je nutné přiřadit pozici, kde byl získán. Poté může
dojít k uložení na server. Po vytvoření otisků a jejich následném uložení je možné
si nechat určovat pozici pomocí průchodu zmapovanou oblastí. Určování pozice
probíhá následujícím způsobem. Aplikace porovnává bezdrátové sítě v okolí se
sítěmi uloženými v databázi a hledá nejlepší shodu, která představuje
nejpravděpodobnější místo, kde se uživatel nachází. [38] Celý proces je zachycen
na obrázku č. 8.
Obrázek 8: Určení pozice pomocí metody „otisku signálu“ [39]
Při získávání otisků bezdrátových sítí narážíme na problém s okolím AP. Jak
již bylo dříve zmíněno, při průchodu signálu přes různé materiály dochází ke
snížení intenzity. Proto například, když dojde k přestavení místností, zbourání zdi
či jiným interiérovým změnám je potřeba aktualizovat databázi otisků. Pokud by
nedošlo k této aktualizaci, tak by navigování neodpovídalo realitě a mohlo zmást
uživatele.
Dalším problémem je různorodost mobilních zařízení k lokalizaci a snímání
otisků bezdrátových sítí. HW prvky a síťové protokoly nejsou navrženy pro využití
23
k navigování, ale pouze k přenosu dat. Z tohoto důvodu se můžeme setkat
s problémem, že mobilní zařízení od jiného výrobce bude ukazovat jiné naměřené
hodnoty RSSI. Proto je nutné provést více měření.
24
4 Síťová komunikace a síťové modely
Síťová komunikace patří mezi nejvýznamnější pilíře moderních počítačů
a chytrých mobilních zařízení. Jedná se o souhrn činností umožňující komunikaci
(výměnu dat) mezi jednotlivými systémy, podle určitých pravidel. Protože se jedná
o složitý model, bylo potřeba vytvořit standard. Z tohoto důvodu vznikl referenční
model ISO/OSI, který je považován za nejpoužívanější standard v počítačových
sítích. Jedná se o vrstvový model, ve kterém jsou vrstvy na sobě nezávislé a těžce
nahraditelné. V práci se předpokládá, že uživatel zná tento referenční model
a základní síťové prvky.
Mobilní telefony si již nevystačí jen s jedním komunikačním standardem,
proto nabízí další technologie, jako jsou Wi-Fi, Bluetooth a NFC19, které se
navzájem doplňují a umožňují využívat telefon nejen ke komunikaci. Například
standard NFC je považován za technologii budoucnosti. Tato technologie je
založená na rádiové bezdrátové komunikaci mezi elektronickými zařízeními na
velmi krátkou vzdálenost. Proto se dá využít například jako elektronická
peněženka, náhrada klíčů nebo čipová karta.
Tato práce je zaměřená na technologii Wi-Fi, kterou již disponuje každý
chytrý telefon.
4.1 Síťová architektura
K navržení síťové architektury je potřeba zvolit nejvhodnější síťový model, který
splňuje požadavky daného zadání. Zvolení správného návrhu síťové logiky je
potřeba promyslet důkladně dopředu, protože při špatném návrhu může dojít ke
špatně postavené infrastruktuře a může docházet ke kolizím, špatnému přenosu
informací nebo dokonce k úplnému znehodnocení komunikace.
Rozdělení počítačových sítí probíhá podle postavení uzlů v síti. Síť tedy
může být typu peer-to-peer (rovnocenného typu), též nazývaná jako klient-klient
nebo typu klient-server (server nebo více serverů je nadřazeno klientovi nebo více
19 NFC – Near Filed Communication
25
klientům). Na obrázku č. 9 jsou zobrazeny oba typy počítačových sítí podle
postavení uzlů.
Obrázek 9: Klient-server a peer-to-peer [40]
4.1.1 Model klient-server
Model klient-server je síťová architektura, ve které klient (často aplikace
s grafickým uživatelským rozhraním) přijímá nebo odesílá data na server
(hostitelský počítač).
Model klient-server je forma distribuovaného zpracování výpočetního
výkonu mezi serverem a koncovým zařízením, kteří si mezi sebou komunikují
a předávají si vzájemně informace přes počítačovou síť. Klient překládá požadavek
od uživatele tak, aby byl srozumitelný pro server. Zatímco klient čeká na odpověď,
server požadavek zpracuje a následně vrací zpět klientovi srozumitelnou odpověď,
kterou on přijme a zobrazí ji uživateli na obrazovce. V architektuře klient-server
tedy server zpracovává dotazy. Klient se stará o prezentaci přijatých odpovědí od
serveru, zajišťuje aplikační logiku a rozhraní pro uživatele. [41] Tento koncept
může být použit více způsoby, ale základ zůstává v podstatě stejný.
Tento model je jednou z hlavních myšlenek síťové topologie. Model se
uplatňuje především ve firemních či obchodních aplikacích a přístupu na web.
Například k internetovému bankovnictví, emailu atd.
Příkladem může být webový prohlížeč, což je klientský program na počítači,
pomocí nějž může uživatel přistupovat k libovolným informacím na libovolném
webovém serveru kdekoliv na světě. Například pokud se chce uživatel ze svého
26
počítače podívat na přehled vyúčtování služeb mobilního operátora, webový
prohlížeč předá tento dotaz webovému serveru mobilního operátora, tento server
dále předá dotaz databázovému programu, který pošle dotaz na databázový server.
Z tohoto serveru je požadovaný přehled vyúčtování vrácen zpět stejnou cestou do
databázového programu operátora, který požadovaný přehled zašle zpět do
webového prohlížeče, pomocí nějž se přehled zobrazí.
Tenký klient
Jedná se o zjednodušenou variantu počítače s odlehčeným operačním systémem
nebo počítačový program, který při provádění své práce silně závisí na jiném
počítači z důvodu malého nebo žádného výpočetního výkonu.
Nejčastěji se jedná o webový prohlížeč, který komunikuje se serverem
pomocí bezstavového protokolu HTTP20 a má za úkol pouze zobrazovat obdržená
data. Tenký klient neprovádí rozhodovací logiku ani ukládání dat. Z této
skutečnosti vyplývá, že nároky na instalaci, konfiguraci a podporu tenkých klientů
jsou minimální. Z důvodu provedení všeho výpočetního výkonu na straně serveru
je potřeba zajistit, aby byl server dostatečně výkonný a měl dostatečnou
paměťovou kapacitu.
Tlustý klient
Na rozdíl od tenkého klienta obsahuje tlustý klient obvykle jak prezenční tak
i aplikační vrstvu a ze serveru získává pouze základní data, která také často zasílá
zpět na server. Z důvodu získávání dat a následného přeposílání dat zpět na server
je patrné, že přes síť se přenáší velké množství dat. Kromě výměny dat se serverem
nemusí tlustý klient vůbec na server spoléhat, protože všechny výpočty je schopen
provést sám. Z toho plyne, že instalace, konfigurace a podpora tlustých klientů je
časové a finančně daleko náročnější než u tenkých klientů, protože je musíme
dostat na každé zařízení, kde bude tlustý klient provozován.
20 HTTP –Hypertext transfer protokol
27
Chytrý klient
Chytrý klient je vhodnou kombinací výhod tenkého a tlustého klienta a potlačuje
jejich nevýhody. Stejně jako tlustý klient využívá místní systémové zdroje, ale
dokáže využívat i síťové připojení k výpočetnímu serveru, aby mohl zpracovávat
určitá data. Ale jako tenký klient nevyužívá lokálního úložiště pro ukládání dat, ale
využívá serveru, čímž je zaručena podpora centrální správy. Běh programu je na
klientském počítači. Hlavní výhodou chytrého klienta je schopnost pracovat off-
line a využívat síťové připojení jen občas. Například při stahování nové verze
aplikace.
4.1.2 Peer-to-peer
Označení peer-to-peer se využívá pro sítě, které jsou založeny na vzájemné
komunikaci jednotlivých klientů. To znamená, že všichni klienti (počítače) si jsou
navzájem rovni a klienti sdílí své služby mezi ostatní. Viz obrázek 9. Často tato
architektura bývá označována jako klient - klient.
Tato architektura nevyužívá server, tím je znemožněno centrální
spravování a všechny procesy si jsou rovny a působí zároveň jako klient (přijímání,
vysílání požadavků) a server (zpracování požadavku a odeslání dat).
U architektury klient-server platí, že čím více klientů je připojeno k serveru, tím se
snižuje rychlost. U architektury Peer-to-peer je tomu naopak, protože při větším
množství klientů se vytváří robustnější síť, která umožňuje vyšší rychlost.
Typickým příkladem jsou tzv. torrenty, přes které lidé sdílejí různé soubory.
28
5 Analýza
V této kapitole jsou uvedeny požadavky na aplikaci, architekturu a použité
technologie.
Při návrhu každé aplikace se musí definovat a správně setřídit požadavky,
které by měla aplikace splňovat. Tento úkol je důležité provést hned při samotném
zahájení projektu, aby bylo známo, co se má vytvořit a co vše požadovaná aplikace
musí umět. Důležitým faktem je si uvědomit, že aplikace neplní jen požadavky
zákazníka, ale je potřeba zohlednit i vlastnosti a požadavky systému a hardwaru.
Požadavky vyjadřují, co má aplikace dělat, ale nepopisují, jak to má udělat.
5.1 Požadavky na aplikaci
Při stanovení požadované funkcionality je soustředěno především na získávání
otisků bezdrátových sítí a následně jejich ukládání. Aplikace je rozdělená do dvou
částí a to klient a server. Protože klient je určen pro platformu Android,
implementační část je postavená na programovacím jazyce Java a platformě
Android. Z důvodu robustnosti serverové části je implementační část postavená na
programovacím jazyce Java s frameworkem Spring MVC.
Komunikační mechanismus je založen na modelu klient – server z důvodu
centrálního úložiště, které usnadňuje správu. Dalším důvodem, proč byl zvolen
tento model, je, že čím více lidí vytvoří otisk na daném místě, tím bude přesnější,
a v poslední řadě z důvodu širší dostupnosti.
Serverová část bude komunikovat s klientskou částí pomocí HTTP
protokolu. Komunikace mezi klientem a serverem bude řešená pomocí mobilního
internetu nebo pomocí Wi-Fi připojení. Z frameworků, které jsou volně dostupně,
byl vybrán libGDX, který splňuje všechny požadavky, jimiž jsou podpora
2D OpenGL, fyzikální model Box2D, podpora a cena.
Stanoveným cílem je vytvořit hru, pomocí které se budou získávat otisky
bezdrátových sítí. Při skenování otisků budou odemykány další mapy, které budou
umožňovat postup ve hře. Pořadí skenování QR kódů bude dáno aplikací. Dalším
cílem je vytvoření serveru, na který se budou ukládat otisky bezdrátových sítí
vytvořených pomocí klientské aplikace. Dále se budou ukládat informace o typu
29
zařízení, z kterého byly otisky pořízené. Mezi další data, která se budou ukládat na
server, patří informace o mobilním operátorovi. Uloží se název operátora a také
intenzita signálu.
5.2 Použité technologie
Tato kapitola popisuje výčet jednotlivých technologií, které jsou využity k řešení
daného problému.
5.2.1 Java
Jedná se o vyspělý objektový programovací jazyk vytvořený společností Sun
Microsystems. Java je multiplatformní jazyk díky způsobu kompilace. To znamená,
že zdrojové kódy nejsou překládány do strojového kódu, ale jsou předzpracovány
do byte-kódu. Proto při spuštění java programu je zdrojový kód pomocí JVM21
přeložen do strojového kódu. Pro každý operační systém je různý JVM.
5.2.2 Android
Android je operační systém založený na linuxovém jádře a je především určený pro
mobilní zařízení. Jedná se o open source platformu podporovanou společností
Google.
V roce 2007 byla představená první verze tohoto operačního systému
a o rok později vyšel první mobilní telefon s tímto operačním systémem. Při vývoji
se myslelo na omezení, která sebou nesou mobilní zařízení. Jedná se například
o výdrž baterie, menší výkonnost atd. Zároveň se dbalo na to, aby jádro operačního
systému mohlo běžet na různém HW. Díky těmto krokům, a hlavně své otevřenosti
(volně dostupné zdrojové kódy, dostupný nástroj pro vývojáře zvaný Software
Developer Kit) se operační systém Android brzy po svém vydání vyrovnává
legendárnímu telefonu iPhone od společnosti Apple. V dnešní době (rok 2016) se
jedná o nejrozšířenější operační systém určený pro mobilní zařízení.
21 JVM – Java Virtual Machine
30
Architektura je rozdělená do 5 základních vrstev, kde každá vrstva plní svůj
účel a nemusí být přímo oddělená od ostatních částí. Vrstvy jsou následující:
linuxové jádro, knihovny, Android Runtime, aplikační framework a aplikace.
Za zmínku stojí vrstva Android Runtime, která je primárně určená pro běh
aplikací. Protože aplikace jsou napsány v Java kódu a ne v nativním, musí se při
každém běhu přeložit. Toto zajišťuje virtuální stroj Dalvik, který je od verze 4.4
nahrazen běhovým prostředím ART22. Toto prostředí přeloží aplikaci do nativního
kódu ihned při instalaci, což zajišťuje vyšší rychlost při spuštění aplikace a vyšší
výdrž baterie. [42]
5.2.3 OpenGL ES 2.0/3.1
OpenGL ES je průmyslový standard pro vytváření 2D a 3D grafiky, především pro
chytré telefony, tablety. OpenGL ES je použitelné na různých operačních systémech
a podporuje několik programovacích jazyků (Java, C++ atd.). Na vývoji se podílí
nezisková skupina Khronos, což je holding společností ATI, NVIDIA a Intel.
Verze OpenGL ES 2.0 vychází ze známé grafické knihovny OpenGL 2.0
a přináší plně programovatelnou 3D grafiku. Tím umožňuje programátorovi plnou
kontrolu na renderovací pipeline. Aby OpenGL 2.0 mohlo co nejlépe pracovat
s mobilními zařízeními, bylo potřeba odstranit nějaké funkce, které mohly být
nahrazeny shadery. To zapříčinilo, že chybí kompatibilita se staršími verzemi 1.0
a 1.1. [43]
Nejnovější verzí je OpenGL ES 3.1, které je zpětně kompatibilní s verzi
OpenGL ES 2.0 a OpenGL ES 3.0 a poskytuje funkce odlehčeného OpenGL 4.4 pro
desktop prostředí. Nejdůležitější funkcí je přidání compute shaderu, který
poskytuje větší flexibilitu a volnost k programování obecných výpočtů než pixel
shader. Používá se tedy pro složitější algoritmy a akceleraci úloh, které nesouvisí
s vykreslováním grafiky. To by mělo přispět k lepšímu grafickému efektu a lepší
simulaci grafiky. Geometry shader stále není součástí OpenGL ES 3.1. [44]
22 ART – Android runtime
31
5.2.4 libGDX
LibGDX je open source (spadá pod Apache licenci), multiplatformní (podporuje
tyto platformy iOS, Android, Desktop – Windows i Mac OS, HTML a BlackBerry)
vývojová herní knihovna založená na OpenGL. Tato knihovna umožňuje vývoj her
a tvorbu vizualizace pomocí programovacího jazyka Java.
Jednou z největších výhod tohoto frameworku je, že se kód pro všechny
platformy píše pouze jednou a je okamžitě spustitelný na všech podporovaných
platformách. Proto není potřeba při každé změně kompilovat zdrojový kód
a testovat ho na všech platformách, na kterých má aplikace běžet. Díky této
vlastnosti se urychluje vývojový cyklus aplikace. Podpora různých platforem je
možná díky tomu, že libGDX poskytuje vlastní API23, které zaobaluje rozdíly všech
platforem. Dále poskytuje transparentní API pro práci s OpenGL, kde pro každou
funkci existuje wrapper, který umožňuje spustit nativně kód na jakékoliv
platformě. Práce s knihovnou OpenGL je na spodní úrovni napsána v nativním
kódu a díky tomu je zaručen vysoký výkon. [45] Framework je především
zaměřený na vývoj 2D her, ale není problém pomocí něj vytvořit i 3D hru. Kromě
běžného API pro práci s grafikou, zvuky, kamerou, uživatelskými vstupy atd.,
knihovna obsahuje také integrovanou fyzikální knihovnu Box2D.
Knihovna obsahuje velké množství dodatečných rozšíření. Například nástroj
Hiero, který slouží ke generování bitmapových fontů. Dále Particle Editor, který
umožňuje generovat částicové efekty. A mnoho dalších rozšíření.
Dokumentace se dá považovat za velmi zdařilou a obsahuje několik
přehledných tutoriálů a ukázkových her, které usnadňují začátky vývoje. Za libGDX
stojí komunita vývojářů a stále se tato knihovna zdokonaluje a díky tomu se
zvyšuje podíl her založených na tomto frameworku.
5.2.5 Barcode Scanner
Barcode Scanner je aplikace, která pomocí fotoaparátu dokáže číst čárové kódy
nebo QR24 kódy. Aplikace je dostupná pro platformy Android, iOS, Windows 10
23 API – Application Programming Interface – rozhraní pro programování aplikací 24 QR – Quick Response
32
Mobile, BlackBerry. Po spuštění této aplikace se z telefonu stává čtečka. Následně
je potřeba fotoaparát namířit na kód, který chceme naskenovat (vzdálenost mezi
kódem a telefonem by měla být přibližně 10 cm) a počkat dokud se neozve pípnutí.
Dochází k dekódování kódu a získání obsahu. Aplikace je vybavená automatickým
ostřením, rychlým rozpoznáváním a automatickým detekováním kódů.
5.2.6 Spring Framework
Spring Framework je populární open source framework pro vývoj webových
aplikací. Především je využívaný pro vývoj firemních aplikací. Je to modulární
framework, pomocí nějž se mohou vytvářet všechny vrstvy aplikace nebo pouze
vybrané vrstvy aplikace. Hlavním účelem tohoto frameworku je zjednodušit návrh
webových aplikací se zaměřením na architekturu aplikace než na použité
technologie.
V aplikaci byl Spring Framework využit pro serverovou část.
5.2.7 Hibernate
Hibernate je framework napsaný v jazyce Java pro objektově-relační mapování
a persistenci dat. To znamená, že Hibernate převede Java objekty na entity
v databázi a udržuje je i po ukončení běhu aplikace (v persistentním stavu). Po
vytvoření objektů v databázi je možné se na ně dotazovat pomocí jazyka HQL25,
který je odvozen od jazyka SQL26 a je mu velmi podobný. Jazyk HQL je plně
objektově orientovaný jazyk – umožňuje dědění, polymorfismus nebo asociaci.
5.2.8 MySQL
MySQL je open source databázový systém vyvíjený společností Oracle. Hlavní
výhodou je, že se jedná o multiplatformní databázi. To znamená, že může být
instalován na jakémkoliv operačním systému. Dalšími výhodami jsou vysoký výkon
a rychlost. MySQL je tedy relační databáze typu DBMS a využívá deklarativního
programovacího jazyka SQL.
25 HQL – Hibernate Query Language 26 SQL – Structured Query Language
33
5.2.9 IntelliJ IDEA
IntelliJ IDEA je komerční vývojové prostředí od české společnosti JetBrains. Kromě
komerční verze (Ultimace) je dostupná i bezplatná verze (Community). Hlavním
cílem tohoto IDE je dosažení co nejvyšší produktivity programátora. Dále je
jediným prostředím pro Javu, které nabízí ihned po instalaci komplexní sadu
nástrojů pro nejmodernější technologie, bez potíží s doplňky.
5.2.10 Git
Jedná se o multiplatformní verzovací systém pro správu souborů. Git je
distribuovaný systém správy verzí. To znamená, že každý vývojář má lokální kopii
všech verzí programu a může pracovat nezávisle na internetovém připojení.
Pomocí tohoto programu lze zaznamenávat historii úprav projektu, značení verzí
nebo poskytovat aktuální zdrojový kód více uživatelům.
5.2.11 QR kód
OR kódy jsou obdobou čárových kódů, ale proti nim dokáží zakódovat větší
množství informací. Informace jsou ukládány do čtverců bílé a černé barvy, které
jsou uspořádány do čtvercové matice. Velikost této matice je dána počtem
informací, které chceme uložit do QR kódu. Pro rozkódování QR kódu je potřeba
mít nainstalovanou nějakou QR čtečku (například Barcode Scanner). Uplatnění
těchto kódů se dá využít téměř kdekoliv, kde je potřeba rychle předat větší
množství informací a informace nechceme ručně přepisovat.
5.2.12 Tiled Map Editor
Tiled Map Editor je multiplatformní a volně dostupný program. Tento program
nabízí tvorbu herních prostředí, map a jejich editaci. Editor umožňuje vývojáři
jednoduše vytvářet dlaždicové mapy pomocí jednoduchého klikání myší. Pro
tvorbu map lze využít vlastních grafických prvků, existujících prvků nebo pouze
geometrických tvarů bez grafických elementů. Existující grafické prvky jsou
dostupné například na adrese: http://www.spriters-resource.com/nes/.
34
Pomocí objektové vrstvy, která musí obsahovat slovo enemis, lze vytvořit
a rozmístit nepřítele a pomocí vrstvy nesoucí název collision, jsou řešeny pevné
objekty – objekty, přes které se nedá projít.
Tiled Map Editor ukládá vytvořené mapy do formátu TMX27, který má
strukturu XML28 formátu.
27 Translation Memory eXchange 28 Extensible Markup Language
35
6 Implementace
V této části je popsána implementace navrženého modelu aplikace pro získávání
otisků bezdrátových sítí a jejich ukládání. Jak již bylo výše zmíněno, aplikace je
rozdělená na dvě části, na klientskou část a serverovou část. Pro obě části je
rozebrána struktura aplikace a popsány ukázky zajímavých částí samotné
implementace.
6.1 Klientská část
Veškerý zdrojový kód této části byl psán ve vývojovém prostředí Android Studio,
které je založené na vývojovém prostředí IntelliJ IDEA. Z důvodu použití knihovny
libGDX má projekt rozdílnou strukturu oproti klasickým Android aplikacím.
6.1.1 Struktura aplikace
Aplikace je rozdělená pomocí Gradle na tři sub-projekty (moduly): android, core,
desktop. Rozdělení modulů s popisem se nachází na adrese:
https://github.com/libgdx/libgdx/wiki/Project-Setup-Gradle. Modul core
obsahuje společný kód, ke kterému smí přistupovat ostatní moduly, které
odpovídají platformě, na které má aplikace běžet. V projektu android je umístěn
Assets Manager, který představuje správce souborů a slouží jako jednotné místo
v rámci celé aplikace, přes které se přistupuje k datovým souborům.
Projekt dostal označení MyGame a jednoznačný identifikátor (package
name) cz.uhk.fim.jedlima3.game, tento identifikátor musí být jedinečný z důvodu
distribuce v marketu Google Play.
V kořenovém modulu core se nachází třída MyGame a šest balíčků. Každý
z těchto balíčků obsahuje třídy, které provádějí určitou činnost. Zapouzdření tříd
do balíčků se využívá z důvodu zpřehlednění kódu a určení, které třídy k sobě
patří.
Pro pochopení projektu budou vysvětleny jednotlivé balíčky a funkcionalita
nejdůležitějších tříd. Na obrázku č. 10 je zachycena struktura modulu core.
MyGame – jedná se o spouštěcí třídu, která se nachází v kořenovém modulu
core. Tato třída je potomkem třídy Game, která zodpovídá za životní cyklus
36
grafické knihovny. Struktura cyklu je velmi podobná jako u obyčejné activity
Androidu. Obsahuje tedy metody create(), render(), pause(), resume() a dispose().
Jedná se o třídu, která tvoří základ aplikace a umožňuje použití obrazovek třídy
Screen, které lze dynamicky měnit. Tedy každá obrazovka je specializována pouze
na jednu činnost. Například menu, nápověda atd.
control – v balíčku se nachází jedna třída pojmenovaná Control. V této třídě
je nastaveno rozložení tlačítek pro platformu Android, aby bylo možné snadno
ovládat postavu.
json – balíček reprezentuje třídy starající se o načítání JSON souboru, který
obsahuje pozice QR kódů. Pomocí těchto QR kódů je umožněn postup ve hře
(odemykají se další mapy). JSON formát byl zvolen z důvodu snadné implementace
ve všech modulech.
scenes – balíček obsahující třídu Hud, která má na starost zobrazovat
uživateli informace o tom, v kterém levelu se nachází a jaké je jeho aktuální skóre.
screenes – balíček obsahuje třídy implementující třídu Screen. Třída Screen
je dalším stavebním prvkem knihovny libGDX při vývoji her. Každý objekt
implementující tuto třídu představuje ve hře jednu obrazovku. V tomto balíčku se
tedy nachází jednotlivé obrazovky, které se vyskytují ve hře.
sprites – balíček obsahuje třídy, pomocí kterých jsou vytvořeny postavy
a body ve hře.
tools – balíček obsahující dvě třídy. Třídu WorldCreator, která se stará
o vytváření světa. Tato třída bude dále více popsána. Druhou třídou je třída
WorldContactListener. Tato třída má na starost řešení situace, kdy dojde ke kolizi
mezi běžcem (postava, kterou uživatel ovládá) a nepřítelem nebo s bodem.
utils – v tomto balíčku se nachází třídy, které obsahují konstanty, přístup
k nastavení aplikace (level, skóre, zda je naskenován správný QR kód).
37
Obrázek 10: Struktura modulu core (zdroj: vlastní)
Dalším modulem, který je nutné popsat je modul android, viz obrázek č. 11.
Zde se nachází zdrojové kódy pro platformu Android. V kořenovém adresáři se
nachází třídy MainActivity a AndroidLauncher, dále se zde nachází osm balíčků.
Každý z těchto osmi balíčků představuje jinou část aplikace.
AndroidLauncher – jedná se o třídu, která umožňuje spuštění aplikace na
platformě Android a načíst kód, který se nachází v modulu core.
MainActivity – třída, která se stará o aktivitu v Androidu. Tato třída bude
dále podrobněji popsána.
determine – v balíčku se nachází čtyři třídy, které slouží jako pomocné
třídy pro určování požadovaných informací.
38
dialogs – v tomto balíčku se nachází tři třídy, které obsahují podtřídy
AlertDialogu. Tyto podtřídy jsou potomky třídy Dialog. Třídy, které se nachází
v balíčku, slouží k zobrazení informačních nebo chybových dialogů.
dto – balíček obsahuje tři třídy, které slouží jako pomocné třídy pro
předávání dat. Jedná se o tzv. „Data transfer object“.
jsonParser – balíček obsahující jednu třídu, která slouží k parsování
odpovědi ze serveru. Pomocí této třídy je uživateli oznámeno, kde se nachází.
postData – balíček obsahuje jednu třídu, která převádí získaná data do
objektu ve formátu JSON a poté odešle post na příslušnou adresu serveru.
utils – tento balíček obsahuje dvě pomocné třídy. První třída obsahuje
konstanty a druhá třída má za úkol kontrolu, zda je povoleno a zda je aktivní
připojení k internetu nebo Wi-Fi síti.
wifiInfo – balíček obsahuje třídu WifiScanReceiver, která bude dále více
popsána.
xmlParser – v balíčku se nachází třída, která zajišťuje parsování XML
dokumentu. V tomto případě se jedná o parsování naskenovaného QR kódu. Pro
parsování je využit XmlPullParser, který je založen na postupném čtení kódu
složeného z tagů pomocí metody next().
39
Obrázek 11: Struktura modulu android (zdroj: vlastní)
6.1.2 Ukázka implementace klientské části
První třídou, která byla zvolena pro ukázku implementace, je třída WorldCreator,
nacházející se v modulu core a stará o vytváření světa. V této třídě jsou vytvářeny
mapy, postavy a další. Vytváření těchto prvků probíhá pomocí načítání
objektových vrstev, které jsou vytvořeny pomocí Tiled Map Editor. Načítání
objektových vrstev je zachyceno na obrázku č. 12. Nejprve se načte příslušná
vrstva, které se přiřadí typ těla. Typ StaticBody je využit například u překážek
nebo bodů, kde objekt bude přesně na definovaných souřadnicích a nesmí se
pohybovat. Typ DynamicBody je využit u nepřítele (enemies), kde je vyžadováno,
40
aby se pohyboval. Poté se nastaví, jaký má mít vytvořený objekt tvar (kruh nebo
krabice) a nastaví se rozměry.
Obrázek 12: Načítání objektových vrstev z Tiled Map Editor (zdroj: vlastní)
Další třídou, která byla zvolena pro ukázku, je třída WorldContactListener,
která má za úkol zachytávat kolize mezi běžcem (Runner) a ostatními prvky
a vyhodnocovat, co se má stát. Tato třída implementuje metody z třídy
ContactListener, která je vestavěnou třídou libGDX. V třídě WorldContactListener
se nachází metoda beginContact (Contact contact). Metoda je automaticky volána
při střetu běžce s nějakým prvkem, který se nachází v herním světě. Aby mohla být
tato metoda zavolána, je potřeba u běžce vytvořit senzory, které budou zachytávat
tuto událost.
Po zachycení události a detekování srážky dojde k vyhodnocení a určení, co
se má stát. Detekování srážek běžce s okolními prvky je zachyceno na obrázku
č. 13.
41
Obrázek 13: Zjištění kolize běžce s překážkou a provedení příslušné operace (zdroj: vlastní)
Další třídou, u které bude nastíněná implementace, je třída Settings. V této
třídě se nacházejí metody, které mají za úkol načítat a ukládat skóre, level
a nastavení, zda je načten správný QR kód, pomocí kterého se odemyká další level.
Pro ukládání dat je využito tzv. properties souboru.
Poslední třídou z modulu core pro ukázku implementace je třída PlayScreen.
Tato třída má za úkol vykreslování herní scény. V této třídě je inicializována
kamera, která se má pohybovat s běžcem, aby bylo možné zobrazit herní svět. Dále
jsou zde inicializovány všechny potřebné objekty, aby bylo možné hrát hru. Jedná
se například o načtení světa, nepřátel, běžce. V této třídě se nachází metoda
update(float dt), která má za úkol zajišťovat a aktualizovat vykreslování světa. Tato
metoda reprezentuje stav běžící (running) a je volána v nekonečné smyčce. Jedná
se tedy o hlavní metodu, ve které se volají funkce pro vykreslení dat na obrazovku
a také funkce pro aktualizaci dat ve hře. V tomto případě se z metody volá metoda
update.
42
Z modulu android je první třídou zvolenou k ukázce implementace třída
MainActivity dědící z Activity. Po ověření, dostupnosti aplikace Barcode scanner se
zavolá startActivityForResult(intent,0);, která dává najevo, že si přeje získat data
vrácená spuštěnou aktivitou. Získání těchto dat proběhne pomocí metody
onActivityResult(int requestCode, int resultCode, Intent intent). Aby spouštěcí
aktivita poznala, která spuštěná aktivita ji něco vrací, je využito resultCode.
V metodě onActivityResult(int requestCode, int resultCode, Intent intent)
dochází k ověření, zda se jedná o správný QR kód. Ověření probíhá pomocí metody
získání prvních tří a posledních osmi znaků a porovnání s předpokládanými
hodnotami. Po ověření správnosti QR kódu se porovná id QR kódu s číslem QR
kódu a pokud souhlasí, odemkne se další level. Pokud ne, dojde pouze
k naskenování QR kódu a odeslání otisků bezdrátových sítí a dalších informací na
server. Metoda je zachycená na obrázku číslo 14.
43
Obrázek 14: Metoda onActivityResult (zdroj: vlastní)
Další třídou zvolenou z modulu android je třída WifiScanReceiver dědící od
třídy BroadcastReceiver. Ve třídě se nachází metoda onReceive(Context c,
Intent intent), pomocí které se zjišťují Wi-Fi sítě v okolí. Princip zjišťování
a ukládání bezdrátových sítí do ArrayListu je znázorněn na obrázku č. 15.
44
Obrázek 15: Zjištění Wi-Fi sítí v okolí (zdroj: vlastní)
6.2 Serverová část
Zdrojové kódy této části byly napsány ve vývojovém prostředí IntelliJ IDEA
s frameworkem Spring MVC 4.2.0 RELEASE. Server běží nad databází od
společnosti Microsoft (MySQL).
6.2.1 Struktura aplikace
Serverová část aplikace je napsána pomocí architektury softwarového návrhového
vzoru MVC (Model View Controllor). Toto řešení od sebe odděluje datový model
aplikace, uživatelské rozhraní a řídící logiku do tří nezávislých komponent. Tento
model zaručuje, že modifikace některé komponenty má minimální vliv na ostatní
komponenty.
Na obrázku č. 16 je zachycená struktura javovského kódu, která je složená
z 10 balíčků a kde každý balíček představuje určitou část aplikace.
checkDatabase – jedná se o balíček, který obsahuje pomocné třídy, které
mají na starost zajistit, jestli se zadaný údaj nachází v databázi či ne.
controller – v balíčku se nachází controllery webového přístupu. Jejich
úkolem je přijímat požadavky od klienta a odesílat data uživateli.
domain – v tomto balíčku se nachází třídy, které se využívají pro přenos dat
objektů a zapouzdření dat, která jsou přenášena mezi vrstvami nebo subsystémy.
entity – třídy, které slouží pro vytváření objektů reprezentující data
v databázi. Typicky entitní třída reprezentuje tabulku v relační databázi a každá
instance této třídy odpovídá jednomu řádku v tabulce. Každá entitní třída musí
splňovat určité podmínky, jako jsou například anotace.
45
enumeration – tento balíček obsahuje třídu, která obsahuje deklaraci
výčtového typu jednotlivých rolí, které mohou být nastaveny uživateli. Podle
těchto rolí jsou přidělena práva uživatelům.
position – balíček obsahuje třídu CalculateDistance pro výpočet uživatelské
pozice. Tato třída bude dále podrobněji popsána.
repository – v balíčku se nachází třídy přistupující k databázi. K databázi se
přistupuje pomocí modulu usnadňující implementaci repositářů postavených na
JPA29. Dotazy je možné skládat buď pomocí připravených CRUD30 operací nebo
pomocí anotací s JPQL31/HQL32 dotazy. Dotazy mohou být také složeny z prvků,
které mají obsahovat. Například: public User findUserByUsername(String
username);. Takto deklarovaný dotaz se přeloží do JPQL/HQL, který je poté předán
frameworku Hibernate, který dotaz převede na SQL dotaz, který je aplikován na
databázi.
security – zde se nachází třída, která má za úkol převést heslo do
zašifrované podoby pomocí BCryptPasswordEncoder, aby nebylo možné ho zjistit.
service – jedná se o mezivrstvu, přes kterou komunikují controllery
s domain. Balíček obsahuje rozhraní pro jednotlivé objekty. Nachází se zde balíček
imp, který obsahuje třídy implementující rozhraní a vytváří tak objekty.
validators – balíček obsahuje třídy, které mají za úkol provádět kontrolu
správnosti vyplněných formulářů na webové stránce.
29 JPA – Java Persistence API 30 CRUD – Create, Read, Update, Delete 31 JPQL – Java Persistence Query Language 32 HQL – Hibernate Query Language
46
Obrázek 16: Struktura serverové části (zdroj: vlastní)
6.2.2 Ukázka implementace serverové části
Třída, která byla zvolena k ukázce implementace má za úkol ukládat pozici
uživatele s WiFi sítěmi v okolí. Nejprve je potřeba přijmou požadavek od klientské
části, o to se stará třída JsonController a v ní metoda addPoint. Metoda má vstupní
parametr JSON a je mapována na webovou adresu domena/json a metoda HTTP je
post. Vně metody se volá třída CheckPoint, obsahující metodu check();.
47
Metoda check má za úkol zjistit, zda se daný bod nachází v databázi. Pokud
se najde shoda, je potřeba provést kontrolu Wi-Fi sítí. Pokud se v databázi nachází
všechny Wi-Fi sítě, provede se pouze update dat (navýšení počtu skenování,
přičtení aktuální intenzity, porovnání maximální a minimální intenzity). Pokud by
se síť v databázi nevyskytovala je potřeba ji přidat k existujícímu bodu. A pokud se
bod vůbec v databázi nenachází, je potřeba ho vytvořit a přiřadit k němu sítě
nacházející se v okolí. Na obrázku č. 17 je zachycen průběh zjištění, porovnání nebo
vytvoření bodu do databáze.
Obrázek 17: Zjištění zda se síť nachází v databázi (zdroj: vlastní)
Dále byl pro ukázku implementace vybrán požadavek na určení pozice
uživatele. Nejdříve se přijme požadavek od uživatele, to má za úkol třída
JsonController a v ní metoda getWifi, jak je vidět na obrázku č. 18. Vstupním
parametrem je JSON s aktuálními Wi-Fi sítěmi v okolí. Anotace nad třídou
znamená, že webový přístup bude následující domena/wifi a metoda HTTP je
POST. Uvnitř metody se volá třída CalculateDistance, pomocí niž dochází k výpočtu
pozice.
48
Obrázek 18: Metoda pro přijmutí Wi-Fi sítí a vrácení odpovědi (zdroj: vlastní)
Třída CalculateDistance obsahuje metodu nearestPoint(), pomocí které je
určená nejpravděpodobnější poloha uživatele. Metoda je zachycená na obrázku
č. 19. V metodě se nejdříve načtou všechny body uložené v databázi. Poté se
porovnávají hodnoty ze vstupu s otisky, které se nacházejí v databázi. Pokud se
najde shoda, změní se hodnota z mínus 99 na hodnotu příslušného otisku. Když je
nalezena shoda hodnot na vstupu s hodnotou v databázi, příslušná hodnota ze
vstupu je odstraněna, aby docházelo k rychlejšímu prohledávání listu. Po projití
celého listu se vypočítává Euklidova vzdálenost, podle které se zjistí, který bod je
nejblíže k uživateli.
49
Obrázek 19: Zjištění pozice uživatele (zdroj: vlastní)
Rovnice Euklidovy vzdálenosti spadá do algoritmů nejbližších sousedů
a vypadá následovně:
Rovnice 7 [46]
2)(= d ii ba
kde a, b jsou vektory o stejném počtu prvků a d je vypočtená vzdálenost.
50
7 Shrnutí výsledků a testování
Výsledná aplikace splňuje všechny požadavky na aplikaci, které jsou zmíněny
v kapitole 5.1 Požadavky na aplikaci a jsou využity všechny popsané technologie.
Architektura aplikace klient – server je zvolená z důvodu, aby aplikace byla
co nejjednodušší a aby všechny složité výpočty byly odkloněny od klientské části
a prováděny na výkonném serveru. Dalším důvodem ke zvolení této architektury je
využití jednoho centrálního úložiště, které je dostupné všem uživatelům. Využití
databáze na straně serveru má výhodu v tom, že čím více měření bude v daném
místě provedeno, tím přesnější bude uložená hodnota otisku.
Nejdříve bylo potřeba navrhnout, jak bude probíhat sběr bezdrátových sítí
a bylo zaručeno, že každému otisku bude přiřazena poloha, kde byl otisk pořízen.
Z tohoto důvodu je využito QR kódů, které budou rozmístěny na určitá místa
v budově. Dalším důležitým bodem bylo navrhnout strukturu a obsah textu, který
se bude nacházet v QR kódu. Pro uložení dat do QR kódu je zvoleno formátu XML,
který umožňuje jednoduše a efektivně zpracovávat obsažený text. Formát
uloženého textu do QR kódu je zobrazen níže s vysvětlením. Dalším faktorem byla
motivace, jak přimět uživatele sbírat QR kódy. Z tohoto důvodu byla navržena
a vytvořena hra, kde je potřeba sbírat QR kódy, aby si uživatel musel odemykat
další mapy a mohl postupovat ve hře. Struktura QR kódu je následující:
<id>4</id><building>H</building><floor>2NP</floor><indication>J8</indicatio
n><area>15.219</area><doors>1</doors><priority>8</priority><typ>mistnost<
/typ><coordX>8.05</coordX><coordY>9.215</coordY>
id - datový typ int, unikátní číslo qr kódu
building - datový typ String, zkratka budovy
floor - datový typ String, určuje podlaží (1PP,1NP)
indication - datový typ String, název místnosti
area - datový typ double, velikost místnosti v m2
doors - datový typ int, počet dveří v místnosti
priority - datový typ int, udává prioritu místnosti (10 - chodba, 9 -
průchozí místnost, 8 – koncový pokoj)
51
typ - datový typ String, určuje, o jaký typ místnosti se jedná (chodba,
výtah, mísnost) a zda je bezbariérový označení bz_TYP
coordX - datový typ double, pozice X místnosti
coordY - datový typ double, pozice Y místnosti
Obrázek č. 20 zachycuje návrh vytváření otisků bezdrátových sítí pomocí klientské
aplikace.
Obrázek 20: Vývojový diagram vytvoření otisku sítě (zdroj: vlastní)
52
Na obrázku č. 21 je úvodní obrazovka s hlavním menu celé hry. Pomocí
tohoto menu uživatel může začít hrát hru nebo v ní pokračovat, přečíst si
nápovědu nebo ukončit hru.
Obrázek 21: Úvodní obrazovka (zdroj: vlastní)
Po spuštění hry se zobrazí obrazovka s herním světem, což zachycuje
obrázek č. 22. Z obrázku je patrné, že v levém dolním rohu se nachází ovládání pro
pohyb běžce do stran a v pravém dolním rohu se nachází tlačítko, pomocí něhož se
provádí skok. Dále je z obrázku patrné, že se zde nachází různé překážky. Jedná se
o krabice, které jsou většinou spojené s podkladem. Dále je zde vidět menší
krabice, která představuje bod, který může uživatel sbírat. Také jsou zde zobrazeni
nepřátelé. Jedná se o růžové kruhy s čepicí, které jde zničit skokem na jejich hlavu.
Dále za zmínění stojí zobrazení aktuálního skóre a levelu.
53
Obrázek 22: Začátek hry (zdroj: vlastní)
Obrázek č. 23 zachycuje místo, pomocí kterého je možné se dostat do
dalšího levelu. Jedná se o horu před běžcem. Pro přejití do dalšího levelu je potřeba
vyskočit na horu a zmáčknou šipku nahoru. Tím dojde k ukončení aktuálního
levelu.
Obrázek 23: Místo, pomocí kterého se dostane běžec do dalšího levelu (zdroj: vlastní)
Po dokončení levelu se uživateli zobrazí instrukce, které je potřeba vykonat
pro odemčení další mapy. Tyto instrukce zachycuje obrázek č. 24. Po dojití na dané
místo je potřeba zmáčknout tlačítko „Skenovat“ a poté se zobrazí obrazovka
s dvěma tlačítky „start scan“ a „position“. Pomocí tlačítka „start scan“ se přejde do
aplikace Barcode Scanner a je možné naskenovat příslušný QR kód. Pomocí tlačítka
„position“ se dá určit poloha, kde se uživatel nachází. Po naskenování správného
kódu se odblokuje mapa a uživatel může pokračovat ve hře.
54
Obrázek 24: Místo, kde se nachází QR kód pro otevření další mapy (zdroj: vlastní)
Na obrázku č. 25 je zobrazen webový server s tabulkou obsahující již
naskenované QR kódy spolu s informacemi, které obsahují dané kódy. V pravé části
tabulky se v každém řádku nachází dvě tlačítka. Pomocí prvního tlačítka se uživatel
dostane na přehled Wi-Fi sítí v okolí, viz obrázek č. 26. Pomocí druhého tlačítka
dojde ke smazání daného QR kódu s Wi-Fi sítěmi náležícími danému kódu.
Obrázek 25: Přehled naskenovaných bodů (zdroj: vlastní)
55
Obrázek 26: Přehled příslušných Wi-Fi sítí u daného bodu (zdroj: vlastní)
Testování finální aplikace bylo rozděleno do několika částí. Nejprve se
testovala klientská část. U ní se v první řadě testovalo zjišťování Wi-Fi sítí v okolí
a jejich intenzity, zjištění mobilního operátora, typ a výrobce zařízení a verzi
operačního systému. Zde bylo potřeba se zaměřit na zařízení, které nepodporují
SIM karty, aby se u těchto zařízení nezjišťoval operátor. Dále se u klientské části
testovala hra. Zde se kladl důraz, aby se na různých obrazovkách stejně
vykreslovala. Především tlačítka sloužící k ovládání postavy, aby při hraní
docházelo k požadovanému chování apod.
Dalším krokem testování byla serverová část. Zde se testovalo ukládání
a aktualizování záznamů v databázi a jejich správa. Zde bylo potřeba upravit
ukládání otisků bezdrátových sítí z důvodu, že každé zařízení na stejné pozici
získalo otisk bezdrátových sítí s různými intenzitami. Při testování
nejpravděpodobnější pozice, kde se nachází uživatel, docházelo ke zdlouhavému
a náročnému výpočtu. Z časové úspory a snížení vytížení HW zařízení byl výpočet
upraven, aby byl jednodušší a snížil se čas a zatížení HW.
Posledním dílčím krokem bylo opět testování klientské aplikace a to
přesnost určování pozice zařízení na počtu Wi-Fi sítí v okolí, což zachycují
následující tabulky. Tímto krokem se zjišťuje přesnost získaných otisků.
56
název místnosti
vzdálenost 1m vzdálenost 2m
pokus č. 1 pokus č. 2 pokus č. 3 pokus č. 1 pokus č. 2 pokus č. 3
místnost 1 ANO ANO ANO ANO ANO ANO
místnost 2 ANO ANO ANO - - -
místnost 3 ANO ANO ANO ANO NE ANO
místnost 4 ANO ANO ANO ANO ANO ANO
místnost 5 ANO ANO ANO ANO ANO ANO
místnost 6 ANO ANO ANO ANO ANO ANO
místnost 7 ANO ANO ANO ANO ANO ANO Tabulka 5: Zjištění, zda se jedná o stejnou místnost v určité vzdálenosti od QR kódu (zdroj:
vlastní)
Jak můžeme vidět, v tabulce číslo 5 je znázorněno určování polohy pomocí
QR kódů, které se nacházejí ve středu místností. Měření bylo provedeno v každé
místnosti v určité vzdálenosti, která je uvedená v tabulce. Pro každou vzdálenost
byla provedena tři měření. Když se uživatel nacházel v dané místnosti, do tabulky
byla doplněna hodnota ANO, pokud ne, tak hodnota NE. U místnosti číslo 2
nemohlo být provedeno měření ve vzdálenosti dvou metrů z důvodu malého
rozměru místnosti.
Na základě tohoto úsudku a měření lze říci, že získané otisky jsou přesné
a dají se využít v reálném světě pro vnitřní navigaci.
57
8 Závěr
Cílem práce bylo naprogramování hry „My Game“, která slouží k získávání otisků
bezdrátových sítí a vytvoření webového serveru, na který se budou ukládat
získané otisky bezdrátových sítí.
Samotná hra, která je určená pro platformu Android je postavena na herní
knihovně libGDX s fyzikálním rozšířením Box2D. Hra dále využívá externí aplikace
Barcode Scanner, pomocí níž jsou skenovány QR kódy. Webový server je postaven
na programovacím jazyce Java s frameworkem Spring MVC a databází MySQL.
Server slouží jako centrální úložiště otisků bezdrátových sítí a dále na něm
probíhají výpočty uživatelovi pozice.
Tento text shrnul techniky využitelné pro indoor navigace. Věnoval se
popisu existujících technik pro navigaci, kde zdůraznil jejich specifické vlastnosti.
Dále se zde nachází algoritmy, pomocí nichž je možné určit pozici uživatele.
V teoretické části jsou dále popsány typy síťové komunikace a modely síťové
architektury.
Testování aplikace bylo prováděno na reálných zařízeních HTC Desire X,
s operačním systémem Android verze 4.1.1 a Nexus 7 2013 s verzí operačního
systému Android 6.0.1. U testování nenastaly žádné problémy mezi kompatibilitou
systému a aplikace, všechny požadované informace se podařilo získat. Pouze
u zařízení Nexus 7 2013 nebylo možné získat informace o operátorovi, protože
neobsahuje 3G modul.
Co se týče možnosti budoucího vývoje hry, je potřeba se zaměřit na její
úpravu. Zde je potřeba především vytvořit grafické prvky, které nejsou součástí
této práce a z tohoto důvodu nebyly implementovány. Mezi další rozšíření by
mohlo patřit vytvoření více hracích map, které by obsahovaly těžší překážky
a další nástrahy.
Další rozšíření by mohlo dostat i určování polohy, kde by bylo vhodné
doplnit mapové podklady a v nich vykreslovat pozici uživatele.
Na straně serveru by mohlo dojít v budoucnu k vytvoření jednotlivých
uživatelských profilů pro hráče, kteří by byli registrováni ve hře. Pomocí
registrovaných profilů by se dalo zjišťovat, zda hráč byl opravdu na určitém místě
58
a pokud by došlo k podvádění, tak by bylo možné ho smazat ze systému
a znemožnit mu hraní hry.
59
9 Seznam použité literatury
1. Nejstarší mapa světa má čtrnáct tisíc let. Deník.cz [online]. 7. srpen 2009 [vid. 27. leden 2016]. Získáno z: http://www.denik.cz/ze_sveta/nejstarsi-mapa-sveta-ma-ctrnact-tisic-let20090806.html
2. Global positioning system, standard positioning service, performance standard [online]. 2008. Získáno z: http://www.gps.gov/technical/ps/2008-SPS-performance-standard.pdf
3. První smartphone na světě je na prodej, připravte si nejméně 16 000 korun - iDNES.cz [online]. [vid. 18. listopad 2015]. Získáno z: http://mobil.idnes.cz/prvni-smartphone-sveta-ibm-simon-v-aukci-na-ebay-ftm-/mob_tech.aspx?c=A120908_161925_mob_tech_vok
4. Smartphonům je 20 let. Projděte si jejich historii. iDNES.cz [online]. [vid. 18. listopad 2015]. Získáno z: http://mobil.idnes.cz/smartphonum-je-20-let-projdete-si-jejich-historii-fus-/mob_tech.aspx?c=A121028_220246_mob_tech_vok
5. Mobile marketing statistics 2016. Smart Insights [online]. 22. červenec 2015 [vid. 1. únor 2016]. Získáno z: http://www.smartinsights.com/mobile-marketing/mobile-marketing-analytics/mobile-marketing-statistics/
6. SCHEJBAL, Ctirad (1936- ), Vladimír HOMOLA a František STANĚK. Geoinformatika. [Seňa]: PONT, 2004. ISBN 80-967611-8-8.
7. ZHANG, Peng, Qile ZHAO, You LI, Xiaoji NIU, Yuan ZHUANG a Jingnan LIU. Collaborative WiFi Fingerprinting Using Sensor-Based Navigation on Smartphones. Sensors [online]. 2015, roč. 15, č. 7, s. 17534–17557. Získáno z: doi:10.3390/s150717534
8. THALJAOUI, A., T. VAL, N. NASRI a D. BRULIN. BLE localization using RSSI measurements and iRingLA. In: 2015 IEEE International Conference on Industrial Technology (ICIT): 2015 IEEE International Conference on Industrial Technology (ICIT) [online]. 2015, s. 2178–2183. Získáno z: doi:10.1109/ICIT.2015.7125418
9. O službě - Mapy Google [online]. [vid. 23. prosinec 2015]. Získáno z: https://www.google.com/maps/about/partners/indoormaps/
10. A new frontier for Google Maps: mapping the indoors. Official Google Blog [online]. [vid. 4. únor 2016]. Získáno z: https://googleblog.blogspot.com/2011/11/new-frontier-for-google-maps-mapping.html
60
11. KOS, Antonín Trčálek, Dušan. Nový standard Wi-Fi: Gigabit vzduchem. Živě.cz [online]. [vid. 11. únor 2016]. Získáno z: http://www.zive.cz/clanky/novy-standard-wi-fi-gigabit-vzduchem/sc-3-a-165687/
12. HUFF, Lisa. How Wireless Local Area Networks Affect Connector Content. Connector and Cable Assembly Supplier [online]. 2. únor 2015 [vid. 11. únor 2016]. Získáno z: http://www.connectorsupplier.com/how-wireless-local-area-networks-affect-connector-content/
13. Cumberland, MD [online]. Získáno z: http://www.cumberlandmd.gov/DocumentCenter/View/962
14. A.S, Mladá fronta. Wi-Fi: Jak si zajistit velké pokrytí, rychlost a silný signál - 2 .kapitola. Živě.cz [online]. [vid. 13. únor 2016]. Získáno z: http://www.zive.cz/clanky/wi-fi-jak-si-zajistit-velke-pokryti-rychlost-a-silny-signal/anteny-a-jejich-nastaveni-deformace-a-ztrata-signalu-mereni/sc-3-a-172347-ch-90933/
15. What is 802.15? - Definition from WhatIs.com. SearchMobileComputing [online]. [vid. 14. únor 2016]. Získáno z: http://searchmobilecomputing.techtarget.com/definition/80215
16. Bluetooth Power Classes: Class 1, 2 and 3 [online]. [vid. 16. únor 2016]. Získáno z: http://bluetoothinsight.blogspot.cz/2008/01/bluetooth-power-classes.html
17. Mobile Marketing conference 2014: iBeacons jsou budoucností geolokačního marketingu. www.m-journal.cz [online]. [vid. 16. únor 2016]. Získáno z: http://www.m-journal.cz/cs/podpora-prodeje/mobile-marketing-conference-2014--ibeacons-jsou-budoucnosti-geolokacniho-marketingu__s282x10898.html
18. How does an Estimote Beacon work? Estimote Community Portal [online]. [vid. 16. únor 2016]. Získáno z: http://community.estimote.com/hc/en-us/articles/204086423-How-does-an-Estimote-Beacon-work-
19. WEBSERVIS.CZ. RFID ve výrobě a skladech? [online]. [vid. 17. únor 2016]. Získáno z: http://www.systemonline.cz/clanky/rfid-ve-vyrobe-a-skladech.htm
20. Id Karta - identifikační systémy. RFID - Identifikace - ČIPY, karty a náramky [online]. [vid. 17. únor 2016]. Získáno z: http://www.id-karta.cz/identifikace-3/rfid-34/
21. (WWW.OPTIMATO.CZ), Optimato a SKA TOM TOM, RAM, ZEM. Obecně o RFID technologii - Eprin. Čárové kódy, sklady, etiketovací systémy [online]. [vid. 17. únor 2016]. Získáno z: http://www.eprin.cz/rfid-technologie.html
61
22. KOCHANÍČEK, Bc Ludvík. Seznámení s RFID čipy. http://www.kodys.cz/rfid.html http://www.eprin.cz/index.php?info=r-tech http://www.rfidportal.cz/ http://cs.wikipedia.org/wiki/RFID http://www.kzk.cz/carovy-kod-rfid A. Dokoupil - Podpora práce s RFID čipy ve firemním informačním systému [online]. 16. únor 2011 [vid. 17. únor 2016]. Získáno z: http://coptel.coptkm.cz/index.php?action=2&doc=12149
23. NAVIGÁTOR PRO NEVIDOMÉ - Navigační slepecká hůl | Helpnet. AVIGÁTOR PRO NEVIDOMÉ - Navigační slepecká hůl | Helpnet [online]. Získáno z: http://www.helpnet.cz/aktualne/navigator-pro-nevidome-navigacni-slepecka-hul
24. Jak se zjišťuje poloha mobilního telefonu? iDNES.cz [online]. 23. červenec 2001 [vid. 20. únor 2016]. Získáno z: http://mobil.idnes.cz/jak-se-zjistuje-poloha-mobilniho-telefonu-fi3-/mob_tech.aspx?c=A010719_0036942_mob_tech
25. 3. Base Station Subsystem (BSS) - gsmtheory [online]. [vid. 20. únor 2016]. Získáno z: https://sites.google.com/site/gsmtheory/home/4-2-bearer-independent-circuit-switched-core-network-umts-release-4-/3-base-station-subsystem-bss-
26. WWW.OXYONLINE.CZ, oxy Online s r o. Fotomobily: snímací čipy CMOS vs. CCD. Digimanie.cz [online]. [vid. 21. únor 2016]. Získáno z: http://www.digimanie.cz/fotomobily-snimaci-cipy-cmos-vs-ccd/2885
27. ADAMS, Martin David. Sensor Modelling, Design and Data Processing for Autonomous Navigation. B.m.: World Scientific, 1999. ISBN 978-981-02-3496-6.
28. CHOI, S., T. JIN a J. LEE. Obstacle avoidance algorithm for visual navigation using ultrasonic sensors and a CCD camera. Artificial Life and Robotics [online]. 2003, roč. 7, č. 3, s. 132–135. ISSN 1433-5298, 1614-7456. Získáno z: doi:10.1007/BF02481161
29. KOHOUTEK, Tobias K., Rainer MAUTZ a Andreas DONAUBAUER. Real-time indoor positioning using range imaging sensors. In: [online]. 2010, s. 77240K–77240K–8 [vid. 21. únor 2016]. Získáno z: doi:10.1117/12.853688
30. MAUTZ RAINER a TILCH SEBASTIAN. Survey of optical indoor positioning systems. IPIN. 2011, roč. 11, s. 1–7.
31. HENNIGES ROBIN. Current approaches of Wi-Fi positioning. IEEE Conference Publications. nedatováno, roč. 2012, s. 1–8.
32. MAHIDDIN, Nor Aida, Noaizan SAFIE, Elissa NADIA, Suhailan SAFEI a Engku FADZLI. INDOOR POSITION DETECTION USING WIFI AND TRILATERATION TECHNIQUE. In: The International Conference on Informatics and Applications (ICIA2012) [online]. B.m.: The Society of Digital Information and Wireless
62
Communication, 2012, s. 362–366 [vid. 20. prosinec 2015]. Získáno z: http://sdiwc.net/digital-library/indoor-position-detection-using-wifi-and-trilateration-technique
33. RVMILLER. Wifi-based trilateration on Android. Ryan Miller’s Blog [online]. [vid. 5. březen 2016]. Získáno z: http://rvmiller.com/2013/05/part-1-wifi-based-trilateration-on-android/
34. NAYEF ALSINDI, Xinrong Li. Analysis of Time of Arrival Estimation Using Wideband Measurements of Indoor Radio Propagations. Instrumentation and Measurement, IEEE Transactions on [online]. 2007, roč. 56, č. 5, s. 1537–1545. ISSN 0018-9456. Získáno z: doi:10.1109/TIM.2007.904481
35. MAHALIK, Nitaigour P. Sensor Networks and Configuration: Fundamentals, Standards, Platforms, and Applications. B.m.: Springer Science & Business Media, 2007. ISBN 978-3-540-37366-7.
36. WEBB, T. A., P. D. GROVES, P. A. CROSS, R. J. MASON a J. H. HARRISON. A new differential positioning method using modulation correlation of signals of opportunity. In: Position Location and Navigation Symposium (PLANS), 2010 IEEE/ION: Position Location and Navigation Symposium (PLANS), 2010 IEEE/ION [online]. 2010, s. 972–981. Získáno z: doi:10.1109/PLANS.2010.5507270
37. III, Stanley L. Cebula. Empirical Channel Model for 2.4GHz IEEE 802.11 WLAN *. 2012.
38. QUAN, Michael, Eduardo NAVARRO a Benjamin PEUKER. Wi-Fi Localization Using RSSI Fingerprinting. Computer Engineering [online]. 2010. Získáno z: http://digitalcommons.calpoly.edu/cpesp/17
39. CHEN, Lina, Binghao LI, Kai ZHAO, Chris RIZOS a Zhengqi ZHENG. An Improved Algorithm to Generate a Wi-Fi Fingerprint Database for Indoor Positioning. Sensors [online]. 2013, roč. 13, č. 8, s. 11085–11096. Získáno z: doi:10.3390/s130811085
40. DAVISON, Andrew. Killer Game Programming in Java. B.m.: O’Reilly Media, Inc., 2005. ISBN 978-0-596-55290-9.
41. MANAGEMENTMANIA. Architektura klient-server. ManagementMania.com [online]. [vid. 7. červenec 2016]. Získáno z: https://managementmania.com/cs/architektura-klient-server
42. CHROUST, Martin. Google mění Android: přepněte si na ART. MobilMania.cz [online]. [vid. 11. červenec 2016]. Získáno z: http://www.mobilmania.cz/bleskovky/google-meni-android-prepnete-si-na-art/sc-4-a-1325316/default.aspx
63
43. S.R.O, oxy Online. OpenGL ES 2.0: plně programovatelná 3D akcelerace pro mobilní zařízení i PS3. Svethardware.cz [online]. [vid. 13. červenec 2016]. Získáno z: http://www.svethardware.cz/opengl-es-20-plne-programovatelna-3d-akcelerace-pro-mobilni-zarizeni-i-ps3/12396
44. OpenGL ES 3.1 je hotové. Mobilním GPU dává compute shader a další nové funkce | Cnews.cz [online]. [vid. 13. červenec 2016]. Získáno z: http://www.cnews.cz/opengl-es-31-je-hotove-mobilnim-gpu-dava-compute-shader-dalsi-nove-funkce
45. libgdx [online]. [vid. 12. červenec 2016]. Získáno z: https://libgdx.badlogicgames.com/features.php
46. WEISSTEIN, Eric W. Distance [online]. [vid. 6. srpen 2016]. Získáno z: http://mathworld.wolfram.com/Distance.html
64
10 Seznam obrázků
Obrázek 1: Princip stanovení polohy změřením časového intervalu [6] ........................ 4
Obrázek 2: Princip stanovení polohy změřením délek [6] ..................................................... 5
Obrázek 3: Obchod v Minneapolis v USA se službou GPS a IPS [10] ................................. 6
Obrázek 4: Šíření signálu všesměrovou anténou [14] .............................................................. 9
Obrázek 5: Princip fungování iBeaconu [18] ............................................................................. 12
Obrázek 6: Všesměrové a sektorové BTS stanice [25] .......................................................... 15
Obrázek 7: Trilaterace pomocí tří přístupových bodů a) přesná poloha b) hrubý
odhad polohy [33] ................................................................................................................................... 19
Obrázek 8: Určení pozice pomocí metody „otisku signálu“ [39] ...................................... 22
Obrázek 9: Klient-server a peer-to-peer [40] ............................................................................ 25
Obrázek 10: Struktura modulu core (zdroj: vlastní) .............................................................. 37
Obrázek 11: Struktura modulu android (zdroj: vlastní) ...................................................... 39
Obrázek 12: Načítání objektových vrstev z Tiled Map Editor (zdroj: vlastní) ........... 40
Obrázek 13: Zjištění kolize běžce s překážkou a provedení příslušné operace
(zdroj: vlastní) .......................................................................................................................................... 41
Obrázek 14: Metoda onActivityResult (zdroj: vlastní) .......................................................... 43
Obrázek 15: Zjištění Wi-Fi sítí v okolí (zdroj: vlastní) ........................................................... 44
Obrázek 16: Struktura serverové části (zdroj: vlastní)......................................................... 46
Obrázek 17: Zjištění zda se síť nachází v databázi (zdroj: vlastní) ................................. 47
Obrázek 18: Metoda pro přijmutí Wi-Fi sítí a vrácení odpovědi (zdroj: vlastní) ..... 48
Obrázek 19: Zjištění pozice uživatele (zdroj: vlastní) ........................................................... 49
Obrázek 20: Vývojový diagram vytvoření otisku sítě (zdroj: vlastní) ........................... 51
Obrázek 21: Úvodní obrazovka (zdroj: vlastní)........................................................................ 52
Obrázek 22: Začátek hry (zdroj: vlastní) ..................................................................................... 53
Obrázek 23: Místo, pomocí kterého se dostane běžec do dalšího levelu (zdroj:
vlastní) .......................................................................................................................................................... 53
Obrázek 24: Místo, kde se nachází QR kód pro otevření další mapy (zdroj: vlastní)
.......................................................................................................................................................................... 54
Obrázek 25: Přehled naskenovaných bodů (zdroj: vlastní) ............................................... 54
Obrázek 26: Přehled příslušných Wi-Fi sítí u daného bodu (zdroj: vlastní) .............. 55
65
11 Seznam tabulek
Tabulka 1: Přehled standardů IEEE 802.11 [12] ........................................................................ 8
Tabulka 2: Útlum Wi-Fi signálu na základě materiálu [13] ................................................... 8
Tabulka 3: Rozdělení zařízení podle výkonnosti [16] ........................................................... 11
Tabulka 4: Rozdělení RFID podle standardizovaných nosných komunikačních
frekvencí [20] [21] .................................................................................................................................. 13
Tabulka 5: Zjištění, zda se jedná o stejnou místnost v určité vzdálenosti od QR kódu
(zdroj: vlastní) .......................................................................................................................................... 56
66
12 Seznam rovnic
Rovnice 1 [6] ................................................................................................................................................. 4
Rovnice 2 [6] ................................................................................................................................................. 4
Rovnice 3 [32] ........................................................................................................................................... 19
Rovnice 4 ..................................................................................................................................................... 19
Rovnice 5 ..................................................................................................................................................... 20
Rovnice 6 [37] ........................................................................................................................................... 21
Rovnice 7 [46] ........................................................................................................................................... 49
67
Příloha č.1 - CD
Součástí diplomové práce je CD s následujícím obsahem:
zdrojové kódy aplikace (klient – server)
diplomová práce v digitální podobě
manuál
qr kódy
sql insert do tabulky User a UserRole
68