Academiejaar 2012-2013
Geassocieerde faculteit Toegepaste Ingenieurswetenschappen Valentin Vaerwyckweg 1, 9000 Gent
Studie van indoor positionering en integratie in een location based game
Masterproef voorgedragen tot het behalen van het diploma van ¨ MASTER IN DE INDUSTRIELE WETENSCHAPPEN: INFORMATICA
Glen DE SCHEERDER Promotoren: Intern: Marleen DENERT Extern: Kristof VAN DEN BRANDEN
Academiejaar 2012-2013
Geassocieerde faculteit Toegepaste Ingenieurswetenschappen Valentin Vaerwyckweg 1, 9000 Gent
Studie van indoor positionering en integratie in een location based game
Masterproef voorgedragen tot het behalen van het diploma van ¨ MASTER IN DE INDUSTRIELE WETENSCHAPPEN: INFORMATICA
Glen DE SCHEERDER Promotoren: Intern: Marleen DENERT Extern: Kristof VAN DEN BRANDEN
Voorwoord Vooreerst mijn oprechte dank aan Kristof Van den Branden, mijn externe promotor en Managing Director bij La mosca, voor de opvolging van mijn scriptie. Ik richt ook een woord van dank aan Marleen Denert, mijn interne promotor van Hogeschool Gent, voor het opvolgen van mijn scriptie, en voor het verlenen van tips voor de zaken beter te verwoorden. Ook aan Pieter Simoens, mijn tweede lezer van Hogeschool Gent, een woord van dank voor het nalezen en corrigeren van mijn scriptie. Mijn dank gaat speciaal uit naar Matthieu Delas, Project Manager en Technical Offers Responsible bij Insiteo, voor de goede ontvangst in Parijs en de uitgebreide hulp bij het opstellen van de demo. Ik wil mijn dank betuigen aan ir. Vladimir Budejicky, Managing Partner bij EForms, voor de goede ontvangst en demo op de Technische Universiteit van Delft. Mijn dank gaat ook uit naar Peter Bunus, Director of Business Development bij SenionLab, voor het maken van een demo. Ook aan Jurgen Caeyman, Business Development Manager EMEA bij Nokia Location & Commerce, voor de uitgebreide uitleg over de toekomstplannen bij Nokia. Daarnaast wil ik ook alle werknemers en stagiairs bij La mosca danken voor de hulp en steun tijdens de periodes dat ik daar aanwezig was. Ten slotte nog een speciaal woord van dank aan alle contactpersonen bij de andere bedrijven voor de informatie die zij gedeeld hebben. Glen De Scheerder, Oudenaarde, 26 januari 2013
i
Inleiding Deze scriptie beschrijft een onderzoek naar de verschillende bestaande systemen om personen of materiaal te positioneren binnen in een gebouw. Systemen die in aanmerking komen worden eerst uitgetest. De systemen die positief uit de test komen worden ge¨ıntegreerd in een eigen testapplicatie. La mosca is een bedrijf gevestigd in Gent dat spelen maakt waarbij de locatie van de gebruiker een belangrijke rol speelt. Deze spelen worden gemaakt voor mobiele telefoons en maken gebruik van gps. Omdat het gps-signaal niet sterk genoeg is om door te dringen in een gebouw, kunnen deze spelen enkel buiten uitgevoerd worden. Daardoor is de vraag naar deze spelen tijdens de wintermaanden en bij slecht weer laag. Om deze periodes te overbruggen is La mosca op zoek naar een oplossing om binnen in gebouwen soortgelijke spelen te organiseren. Voor de locaties wordt gedacht aan shoppingcentra, grote winkels (zoals IKEA) en musea, maar ook aan grote openbare ruimtes zoals stations en luchthavens. Omdat er geen standaard is voor de positionering van personen en/of materiaal binnen in gebouwen, wordt er een onderzoek gedaan naar de technologie¨en en methodes die toegepast kunnen worden. Het verzamelwerk van [3] is daarbij een grote hulp. Daardoor kan een beter beeld geschetst worden wat de problemen zijn bij elke van deze technologie¨en en methodes. Dit onderzoek is te vinden in Hoofdstuk 1. Daarna wordt er op zoek gegaan naar bedrijven die dergelijke systemen aanbieden, en wordt ook gekeken welke technologie¨en en technieken ze toepassen bij hun systemen. Er worden ook specifieke eisen opgesteld aan het te zoeken systeem, zoals een minimum aan hardware installatie en een minimum aan kostprijs voor hardware, software en services. Elk systeem wordt grondig geanalyseerd op vlak van nauwkeurigheid, betrouwbaarheid, compatibiliteit en kostprijs en wordt vergeleken met de opgelegde eisen. Daaruit wordt een keuze gemaakt voor enkele van de systemen die getest worden, en er worden ook enkele suggesties gedaan voor systemen die in de toekomst een verbetering kunnen bieden. Deze analyse is te vinden in Hoofdstuk 2. Er worden eerst enkele bestaande opstellingen getest voordat een eigen testomgeving opgesteld wordt. Enkele van de bestaande opstellingen zijn de Qubulus-opstelling in de Technische Universiteit van Delft, de Polestaropstelling in terminal 2E en 2F van de Charles De Gaulle luchthaven in Parijs en de Insiteo-opstelling in het Montparnasse shoppingcentrum te Parijs. De ii
iii tests waren veelbelovend, maar enkel van Qubulus en Insiteo is het mogelijk om een eigen testomgeving op te stellen. In overleg met de Hogeschool Gent wordt Gebouw B van de campus Schoonmeersen te Gent gebruikt als testomgeving. Op die locatie is een gedeelte van het gelijkvloers en een gedeelte van de eerste verdieping gebruikt, daardoor is er een combinatie van een open ruimte, lange gangen en overgangen tussen verdiepingen. De testen van Qubulus en Insiteo waren binnen de verwachtingen. De volledige uitleg van de testen is te vinden in Hoofdstuk 3. In dit hoofdstuk wordt ook een methode bepaald om de resultaten objectief te kunnen analyseren. Na het testen wordt gestart aan het opstellen van een framework1 die het systeem van Qubulus combineert met een eigen ontwikkelde methode op basis van de sensoren van de smartphone. Het systeem van Insiteo kan niet ge¨ıntegreerd worden omdat de bibliotheken niet vrij aanspreekbaar is. Dit framework is gemaakt voor Android2 2.3 of hoger, omdat de meeste bibliotheken van de systemen daarvoor geschreven zijn. Het framework kan uitgebreid worden met andere methodes die het systeem kunnen verbeteren. De structuur van het framework is te vinden in Hoofdstuk 4. Verder wordt in dit hoofdstuk het resultaat geanalyseerd en de nodige besluiten getrokken.
1 Dit is een geheel van bibliotheken en klassen die hergebruikt kunnen worden bij het ontwikkelen van applicaties. 2 Het besturingssysteem van Google voor smartphones en tablets.
Abstract Nederlands Het doel van deze masterproef is om te onderzoeken hoe positiebepaling kan worden gebruikt voor een spel dat binnen wordt gespeeld. Tegenwoordig wordt gps gebruikt om diverse zaken te lokaliseren en te volgen, maar deze technologie heeft zo zijn nadelen. Naarmate de bebouwing dichter wordt, wordt het moeilijker om een nauwkeurige positie te bekomen. Bovendien is een positiebepaling binnen in een gebouw niet mogelijk. Er wordt onderzocht welke technologie¨en hiervoor een alternatief bieden. In deze scriptie wordt een oplossing beschreven die een combinatie is van Wi-Fi-signaalsterkteanalyse, fingerprinting genoemd, en een voorspelling van de locatie met behulp van de sensoren van de smartphone. Er wordt een nauwkeurigheid binnen vijf meter behaald voor 53% van de metingen. Kernwoorden: locatie gebaseerde spelen; positionering binnen; fingerprinting; smarphone sensoren; Wifi-signaalsterkte
English The target of this thesis is to investigate how positioning can be achieved for an indoor game. At the moment GPS is being used to locate and track various items, but this technology has its disadvantages. If the positioning is made in an increasingly dense urbanization, the positioning will be harder and less accurate. On top of this the gps signals are not available for indoor positioning. An investigation about what technologies will propose an alternative will be executed. In this thesis a solution will be described that consists of a combination of Wi-Fi-signal-strength-analysis, called fingerprinting, and a prediction of the position based on the sensors from the smartphone. The achieved accuracy of this solution is within five meters for 53% of the measurments. Keywords: location based games; indoor positioning; smartphone sensors; Wifi-signal-strength
iv
fingerprinting;
Inhoudsopgave Voorwoord
i
Inleiding
ii
Abstract
iv
Inhoudsopgave
vi
Lijst met afkortingen
1
1 Technologie¨ en 1.1 Lokalisatiemethodes . . . . . . . . . . 1.1.1 Triangulatie . . . . . . . . . . . 1.1.2 Locatieanalyse (Fingerprinting) 1.1.3 Nabijheid (Proximity) . . . . . 1.2 Lokalisatie-infrastructuren . . . . . . . 1.3 Topologie¨en . . . . . . . . . . . . . . . 1.4 Overzicht . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
2 2 2 7 8 9 11 11
2 Vereisten en Marktanalyse 2.1 Criteria . . . . . . . . . . 2.2 Vereisten . . . . . . . . . 2.3 Marktanalyse . . . . . . . 2.3.1 Overzicht . . . . . 2.4 Resultaat . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
12 12 13 14 18 19
3 Testen en Voorbereidingen 3.1 Fingerprinting . . . . . . . 3.1.1 Qubulus . . . . . . 3.1.2 Insiteo . . . . . . . 3.1.3 Vergelijking . . . . 3.2 Sensoren . . . . . . . . . . 3.2.1 Richting . . . . . . 3.2.2 Verplaatsing . . . 3.2.3 Combinatie . . . . 3.2.4 Testresultaat . . . 3.3 Analyseproblematiek . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
20 21 21 24 27 28 29 31 32 33 35
v
INHOUDSOPGAVE
vi
4 Uitwerking en implementatie 4.1 De mobile applicatie . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Beschrijving van de onderdelen . . . . . . . . . . . . . . 4.1.2 De samenwerking van de onderdelen . . . . . . . . . . . 4.1.3 Combinatie van de positiebepalingssystemen . . . . . . 4.1.4 Integratie van het positiebepalingssysteem van Qubulus 4.1.5 Posities opslaan in KML bestanden . . . . . . . . . . . . 4.1.6 Frontend . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7 Resultaat . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Analyseren van de metingen . . . . . . . . . . . . . . . . . . . . 4.2.1 Resultaat . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
36 36 36 39 41 42 47 49 51 52 53 55
Besluit
56
Literatuurlijst
57
A Afbeelding Google Maps
60
B Codevoorbeelden B.1 Ophalen van rotatiegegevens op een Android smartphone . . B.2 Ophalen van versnellingsgegevens op een Android smartphone B.3 Combinatiemethode van de positiebepalingssytemen . . . . . B.4 KML referentiepunt voorbeeld . . . . . . . . . . . . . . . . . . B.5 KML metingen voorbeeld . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
62 62 63 64 65 66
C Diagrammen C.1 Android: levensloop van een Activity . . . C.2 Klassendiagram . . . . . . . . . . . . . . . C.3 Klasseschema van de frontend . . . . . . . C.4 Klasseschema van het analyseprogramma D Verslagen van gesprekken D.1 Verslag van het gesprek met D.2 Verslag van het gesprek met D.3 Verslag van het gesprek met D.4 Verslag van het gesprek met
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
67 67 68 69 70
AeroScout . . . . . . . Nokia . . . . . . . . . . Safelink . . . . . . . . . De Jeager Automation .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
71 71 73 74 75
. . . .
. . . .
. . . .
. . . .
. . . .
E Verslagen van e-mails 76 E.1 Senionlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 E.2 Space Systems Finland . . . . . . . . . . . . . . . . . . . . . . . . 77
Lijst met afkortingen AP ToA TDoA RSS(I) RToF RSPM PoA LoS AoA UWB RFID POE API
Access Point Time of Arrival Time Difference of Arrival Received Signal Strength (Indication) Roundtrip Time of Flight Received Signal Phase Method Phase of Arrival Line of Sight Angle of Arrival Ultra-Wideband Radio-Frequency Identification Power Over Ethernet Application Programming Interface
1
Hoofdstuk 1
Technologie¨ en Om een beter beeld te kunnen scheppen van de mogelijkheden en problemen volgt hier een overzicht van de toegepasbare methodes en de beschikbare technologie¨en.
1.1
Lokalisatiemethodes
De lokalisatiemethodes kunnen onderverdeeld worden in drie groepen op basis van de manier waarop de positie wordt bepaald: triangulatie, locatieanalyse en nabijheid.
1.1.1
Triangulatie
Triangulatie maakt gebruik van de eigenschappen van driehoeken om de positie te bepalen. Een driehoek is bepaald als een zijde en de twee aanliggende hoeken gekend zijn. Daaruit kan het derde hoekpunt berekend worden. Triangulatie heeft twee onderverdelingen: 1. Lateratie De afstanden van meerdere referentiepunten worden gebruikt om de positie te bepalen. Dit kan op verschillende manieren gedaan worden, bijvoorbeeld door de afstanden af te leiden uit de demping van de uitgezonden signaalsterktes of door de snelheid van de signalen te vermenigvuldigen met hun reistijd. Hieronder bevindt zich een gedetailleerder overzicht van de verschillende technieken die toegepast kunnen worden: • Time of Arrival (ToA) De afstand wordt berekend door middel van de tijd die het signaal nodig heeft om zich van de zender naar de ontvanger voort te planten. Dit signaal verspreidt zich even snel in alle richtingen. In twee dimensies vormt het signaal een cirkel rond de zender. Om een toestel te positioneren zijn er drie zenders nodig en verkrijgt men ´e´en punt door de intersectie van de drie cirkels. In Figuur 1.1 is een voorbeeld van een 2D positionering voorgesteld. Bij twee zenders zijn er twee mogelijke posities waar de ontvanger 2
¨ HOOFDSTUK 1. TECHNOLOGIEEN
3
zich kan bevinden. Dit zijn de punten op de intersectie van de twee cirkels: D en D’. Als een derde zender wordt toegevoegd zal ´e´en van die snijpunten overblijven.
Figuur 1.1: ToA: 2D positionering.
In drie dimensies vormt het signaal een bol rond een zender. Om de ontvanger te positioneren zijn er vier zenders nodig. De intersectie van twee zenders vormt een cirkel, met een derde zender wordt dit gereduceerd tot 2 punten, en met een vierde zender blijft ´e´en punt over. De invloed van meetfouten is omgekeerd evenredig met de afstand, want een fout in de reistijd bij een korte afstand heeft een groter effect dan eenzelfde fout bij een grote afstand. Het nadeel van deze methode is dat er gesynchroniseerde klokken nodig zijn bij de zenders en de ontvangers. [1, 2, 3] • Roundtrip Time of Flight (RToF) Deze methode maakt gebruikt van ToA, maar hier wordt de tijd gemeten dat het signaal nodig heeft om van de zender naar de ontvanger te gaan en terug te keren. Dit vermijdt het probleem dat gesynchroniseerde klokken nodig zijn bij de zenders en de ontvanger.[3] • Time Difference of Arrival (TDoA) Tussen elk paar zenders wordt het tijdsverschil van het ontvangen signaal berekend. Met dit tijdsverschil kan men een hyperbool opstellen die alle punten voorstelt die dat tijdsverschil hebben tussen die zenders. Om de positie van de ontvanger te weten in twee dimensies, heeft men twee van deze hyperbolen nodig of minimum drie ontvangers.[1, 2, 3] Op Figuur 1.2 wordt voor zenders AP1 en AP3 het tijdsverschil berekend, ∆t = |t1 − t3 |. Dit vormt de hyperbool AP1−3 . Dit wordt nogmaals gedaan voor 2 andere zenders, op de figuur zijn dit
¨ HOOFDSTUK 1. TECHNOLOGIEEN
4
AP1 en AP2 , waardoor men een tweede hyperbool bekomt, AP1−2 . Door de intersectie van deze hyperbolen vindt men de positie van de ontvanger, D.
Figuur 1.2: TDoA:
Dit kan ook toegepast worden om een positie te bepalen in drie dimensies. Daarbij wordt, per paar ontvangers, een hyperbolo¨ıde gevormd. De intersectie van twee hyperbolo¨ıden vormt een curve. Met behulp van een derde hyperbolo¨ıde zijn er maximum twee punten over. Hiervoor zijn dus minimum vier zenders nodig. Bij deze methode zijn gesynchroniseerde klokken nodig bij de zenders, maar niet meer bij de ontvanger. • Received Signal Strength (RSS) Een ontvanger meet de signaalsterkte van verschillende zenders. Het natuurlijk verval van de signaalsterkte kan geschat worden door middel van theoretische modellen en het feit dat een signaal zich even snel verspreidt in alle richtingen. Aan de hand daarvan kan de afstand van de ontvanger ten opzicht van de zender berekend worden. [1, 2, 3] Links in Figuur 1.3 meet de ontvanger D de signaalsterktes van de zenders in zijn buurt. Zo meet hij voor AP1 een signaalsterkte van 63%, voor AP2 71% en voor AP3 28%. Aan de hand van de signaalsterkte wordt afstand tot de zender bepaald, en omdat het signaal zich in alle richtingen even snel voortbeweegt, vormt de afstand een cirkel rond die zender. De intersectie van drie cirkels bepaalt de plaats van de ontvanger. In de praktijk wordt het signaal verzwakt en weerkaatst als het in aanraking komt met een obstakel, daardoor worden geen signaalsterktes verkregen die cirkelvormig zijn, zoals te zien is rechts in Figuur 1.3. Deze methode is daarom minder geschikt in omgevingen waar
¨ HOOFDSTUK 1. TECHNOLOGIEEN
5
er veel obstakels zijn. [1, 2, 3]
Figuur 1.3: RSS: Theoretisch en praktisch voorbeeld. • Received Signal Phase Method / Phase of Arrival (RSPM / PoA) Deze methode gaat er van uit dat elk uitgezonden signaal een perfecte sinuso¨ıdale golf is met dezelfde frequentie en zonder een faseverschuiving. De ontvanger meet de fase van het signaal en bepaalt de vertraging die opgelopen is. Een vereiste is dat de golflengte van het uitgezonden signaal langer is dan de diagonaal van de ruimte. De vertraging is dan een fractie van de golflengte en er is maar ´e´en positie binnen de ruimte die overeenkomt met die vertraging. Men kan dezelfde algoritmen toepassen van ToA en TDoA. Deze methode vereist een Line Of Sight (LOS) signaalpad tussen de verzenders en ontvanger. [3]
1
2. Angulatie Dit is een richting-gebaseerde techniek. De hoeken van het inkomende signaal of de Angle of Arrival (AoA) worden bepaald bij twee of meer ontvangers die een gekende afstand van elkaar staan. Die hoek kan bepaald worden op twee manieren: • Het kan gemeten worden met directionele antennes, die direct de hoek kunnen bepalen. • Het inkomende signaal kan gemeten worden door een reeks van antennes die dicht bij elkaar staan. Die antennes meten het verschil in aankomsttijd van het signaal tussen elke antenne. Daaruit kan de hoek afgeleid worden. 1 Het
is een pad tussen een zender en ontvanger waartussen geen belemmeringen zijn.
¨ HOOFDSTUK 1. TECHNOLOGIEEN
6
Zoals te zien is op Figuur 1.4 komt het signaal, afkomstig van D, onder een hoek α bij AP1 , en onder een hoek β bij AP2 toe. Vanuit AP1 vertrekt een lijn, de blauwe, onder die hoek α, en vanuit AP2 vertrelt ook een lijn, de groene, onder de hoek β. De positie van de zender wordt berekend door de intersectie van deze lijnen.
Figuur 1.4: AoA
Deze methode vereist complexe hardware en werkt optimaal als er een LOS pad tussen de ontvanger en verzender is. De nauwkeurigheid wordt be¨ınvloed door obstakels en reflecties van het signaal.[1, 2, 3]
¨ HOOFDSTUK 1. TECHNOLOGIEEN
1.1.2
7
Locatieanalyse (Fingerprinting)
Deze methode kan toegepast worden op een locatie waar een draadloos netwerk aanwezig is. In het gebied waar de positionering moet toegepast worden, worden op vaste afstanden van elkaar de sterktes van de signalen van de zenders op die plaats gemeten en opgeslagen. Dit kunnen zenders zijn van Wifi, GSM of Bluetooth. Figuur 1.5 is een voorbeeld van Qubulus, daar zijn de locaties van de metingen aangeduid met een rode bol. Bij dit voorbeeld is er enkel een positionering nodig in de gangen. Bij de oplossing van Ekahau wordt een warmtekaart van de signaalsterktes gegenereerd bij het meten. De metingen en hun posities worden opgeslagen in een databank. Er kunnen eventueel tussenliggende punten berekend worden die ook in de databank worden opgeslagen.
Figuur 1.5: Fingerprinting voorbeeld van Qubulus.
Tijdens de positiebepaling wordt gekeken welke zenders in de buurt zijn en wat hun signaalsterkte is. Deze gegevens worden verzameld en vergeleken met de gegevens in de database. De positie van het best overeenkomstige gegeven in de databank wordt gekozen. Dit best overeenkomstige gegeven wordt bepaald door middel van probabilistische methodes, de k-Nearest Neighbor, neurale netwerken, support vector machines of een Stable Marriage Probleem. De nauwkeurigheid kan vari¨eren door diffractie, reflectie en verspreiding van de signalen, maar is ook afhankelijk van het aantal metingen die uitgevoerd zijn op de locatie.[3, 21, 31]
¨ HOOFDSTUK 1. TECHNOLOGIEEN
1.1.3
8
Nabijheid (Proximity)
De locatie van het mobiele toestel wordt toegewezen aan de dichtstbijzijnde antenne, of de antenne met de grootste signaalsterkte. Deze methode is vooral geschikt als er een dicht netwerk van antennes beschikbaar is. In Figuur 1.6 zijn een paar Access Points opgesteld, het toestel B zal gepositioneerd worden aan Access Point 2 omdat dit er het dichtst bij gelegen is. De nauwkeurigheid is afhankelijk van de dichtheid van het netwerk en het dekkingsgebied van de antenne. Het is een relatief simpele methode om te implementeren. [3]
Figuur 1.6: Proximity voorbeeld.
¨ HOOFDSTUK 1. TECHNOLOGIEEN
1.2
9
Lokalisatie-infrastructuren
De positiebepaling kan gebruik maken van verschillende draadloze technologie¨en waarbij telkens uitgegaan wordt van een zender en een ontvanger. Kenmerken zoals nauwkeurigheid, schaalbaarheid, installatiegemak en kostprijs zullen een balangrijke rol spelen in de keuze van technologie die zal gebruikt worden. De beoordelingscriteria zijn opgesteld in Hoofdstuk 2.1. Hieronder een overzicht [3]: Mobiel GSM netwerk Het toestel wordt gedetecteerd door middel van lateratie. De eigenschappen van de gsm-masten zijn daarbij bekend, zoals de locatie, de afzwakking van het signaal, enz. Daarbij kan het toestel tot op enkele tientallen meters nauwkeurig gelokaliseerd worden. Deze toepassing wordt vooral gebruikt door de hulpdiensten om de afkomst van een noodoproep te bepalen. Wifi De positiebepaling maakt gebruikt van een bestaand draadloos netwerk, bijvoorbeeld Qubulus, of van aangepaste Access Points (AP) 2 , bijvoorbeeld Navizon. Een wifi netwerk kan een bereik hebben van enkele honderden meters en werkt op frequentiebanden 2,4 GHz en/of 5,0 GHz, die licentievrij zijn. Wifi wordt tegenwoordig standaard ge¨ıntegreerd in smartphones en laptops en op vele plaatsen zijn Wifi-netwerken ge¨ınstaleerd. Bluetooth Er moet bijna altijd zelf een netwerk opgesteld worden, omdat deze netwerken niet wijd verspreid zijn. Het bereik is beperkter dan Wifi, tot enkele tientallen meters. Het werkt ook op de 2,4 GHz frequentieband en is dus ook licentievrij. Bluetooth wordt tegenwoordig standaard ge¨ıntegreerd in smartphones en laptops. Ultra-Wideband (UWB) Dit is een laag energetisch signaal met een brede frequentieband, waardoor het een hoge datasnelheid kan bereiken door gegevens tegelijkertijd op verschillende frequenties te sturen. Een positiebepaling op basis van UWB bereikt een hoge accuraatheid door de precieze bepaling van TOA en TOF. UWB wordt niet standaard ge¨ıntegreerd op smartphones en laptops en daarom is er bijna altijd een extra zender nodig en moet er zelf een netwerk opgesteld worden. Radio-Frequency Identification (RFID) Er worden labels, die actief of passief kunnen zijn, en lezers of detectoren gebruikt. De passieve labels hebben een beperkt bereik van enkele meters, terwijl de actieve labels een bereik hebben van enkele tientallen meters. De actieve labels hebben stroom nodig in tegenstelling tot de passieve labels. RFID’s worden vooral gebruikt om producten te identificeren in transport en distributie, maar worden ook gebruikt als identificatiechips bij dieren. De installaties die al voor handen zijn, zijn meestal bedoeld voor een specifieke toepassing. Er zal een analyse moeten gemaakt worden of het bestaande netwerk wel voldoet aan de eisen. Zigbee Is een draadloze technologie die gebruikt wordt om verschillende types toestellen met elkaar te verbinden zodat deze kunnen samenwerken. Het 2 Dit is een apparaat dat compatibele draadloze toestellen in verbinding brengt met een bedraad netwerk en/of het internet.
¨ HOOFDSTUK 1. TECHNOLOGIEEN
10
is gebaseerd op standaarden in de draadloze technologie. Het werkt op de 2,4 GHz frequentieband en is ontworpen om een laag energieverbruik en een lage kostprijs te hebben. Het behaalt een datasnelheid tot 250 Kb/s en een bereik van 10 tot 1600 m, afhankelijk van de omgeving. Elke zender kan zijn gegevens doorsturen naar een andere zender, waardoor het netwerk zichzelf kan bijsturen en uitbreiden als er nieuwe zenders bij geplaatst worden. [40] FM/AM Een recente benadering, die nog in de testfase zit, gebruikt het spectrum van verschillende commerci¨ele radiozenders als een referentie voor een positie. Door het spectrum van verschillende bronnen te gebruiken, wordt het signaal meer bestand tegen interferentie, ruis en stoorzenders.[33] Ultrasound Een toestel zendt een ultrasoon geluid uit, dit weerkaatst in de omgeving en wordt terug opgevangen door het toestel. Aan de hand van het opgevangen geluid kan het toestel berekenen hoever het van objecten verwijderd is. Daaruit kan een positie vastgelegd worden. Dit systeem wordt toegepast bij echografie¨en en vleermuizen gebruiken dit om obstakels te omzeilen of om prooien te vangen. Pseudolites Dit zijn zenders die een signaal uitzenden op dezelfde frequentieband van gps. Deze zenders zijn relatief duur, maar de standaard gps ontvangers kunnen gebruikt worden om een positie te bepalen. Doordat deze oplossing duur is wordt deze bijna uitsluitend gebruikt door grote bedrijven. Om deze infrastructuur te gebruiken zal zelf een opstelling moeten gemaakt worden. Smartphone Sensoren De huidige smartphones bevatten verschillende sensoren. Door deze te combineren kan een positie voorspeld worden als de gebruiker een beginpositie heeft. Enkele van deze sensoren zijn: • Accelerometer: dit meet de versnelling van het toestel, • Gyroscoop: dit meet de ori¨entatie van het toestel, • Kompas: dit meet de richting tegen over het magnetische veld van de aarde, • Barometer: dit meet de luchtdruk. Doordat de sensoren niet 100% nauwkeurig zijn gaat de positiebepaling na verloop van tijd gaan afdwalen.
¨ HOOFDSTUK 1. TECHNOLOGIEEN
1.3
11
Topologie¨ en
De verwerking van de gegevens kan op twee manieren gebeuren [1]: Positionering van op afstand Het te positioneren toestel ontvangt de signalen van de zenders en verstuurt deze gegevens naar een centrale eenheid. Die berekent op zijn beurt de positie van het toestel en stuurt dit terug. Zelfpositionering Het te positioneren toestel meet de signalen van de verschillende zenders en berekent zelf zijn positie.
1.4
Overzicht
In Figuur 1.7 is een overzicht te zien van de technologie¨en en de methodes. De technologie¨en en methodes zijn uitgezet op de nauwkeurigheid van de positionering en de omgeving waarin ze werken. Deze figuur dateert uit 2007 en sindsdien zijn enkele oplossingen licht verschoven van plaats, maar het heeft nog steeds een duidelijke onderscheid.
Figuur 1.7: Overzicht van enkele technologie¨en en methodes (Bron: [3]).
Hoofdstuk 2
Vereisten en Marktanalyse 2.1
Criteria
De criteria waarop beoordeeld zal worden zijn: Nauwkeurigheid is de gemiddelde fout in afstand tussen de werkelijke positie en de bepaalde positie. Betrouwbaarheid is het percentage dat de nauwkeurigheid behaald wordt. Een systeem kan bijvoorbeeld een precisie hebben van 90% binnen 2 m en 98% binnen 3 m. Robuust in welke mate is de oplossing bestand tegen intensief gebruik en onvoorziene omstandigheden. Real-Time beschrijft de snelheid van de positiebepaling. Compatibiliteit is de oplossing integreerbaar in vele omgevingen of beperkt tot enkele omgevingen. Foutbestendig in hoeverre is de oplossing bestand tegen foute gegevens. Low-Cost beschrijft hoeveel geld moet besteed worden voor de integratie en het onderhoud. Schaalbaar is de oplossing uitbreidbaar en verplaatsbaar.
12
HOOFDSTUK 2. VEREISTEN EN MARKTANALYSE
2.2
13
Vereisten
De minimale vereisten voor de gebruikte technologie en de applicatie die ontwikkeld wordt, zijn: Nauwkeurigheid Moet minder dan 5 meter bedragen. Betrouwbaarheid: Moet hoog zijn, zodat de nauwkeurigheid zo goed mogelijk behouden blijft. Robuust: In een omgeving met veel gebruikers moeten de nauwkeurigheid en betrouwbaarheid zo goed mogelijk gegarandeerd blijven. Real-Time: Tussen twee positiebepalingen mogen er maximaal 5 seconden verlopen. Compatibiliteit: De gebruikte technologie moet integreerbaar zijn met Android en/of iOS. Als het compatibel is met HTML5 dan is dit een grotere meerwaarde naar de toekomst toe. Foutbestendig: De applicatie moet vlot reageren op fouten. Low-Cost: Er moet een minimum aan extra hardware vereist zijn. Schaalbaar: De oplossing moet makkelijk inzetbaar zijn op een nieuwe locatie en makkelijk uitbreidbaar zijn op een bestaande locatie.
HOOFDSTUK 2. VEREISTEN EN MARKTANALYSE
2.3
14
Marktanalyse
Hieronder bevindt zich een overzicht van bedrijven die een oplossing hebben voor indoor positionering. Voor elk bedrijf is er een korte beschrijving van wat hun oplossing is en de reden waarom deze wel of niet in aanmerking komen voor het te ontwikkelen systeem. De bedrijven zijn gegroepeerd in de mate dat hun oplossingen bruikbaar zijn. 1. Onvoldoende informatie of niet onderzocht: Blue Umbrella Inc. De positiebepaling werkt op basis van Bluetooth en vereist dat er op de locatie zenders worden geplaatst. [25] Het nadeel van Bleutooth is dat er noodzakelijke extra hardware vereist is. Buzby Networks De positiebepaling werkt op basis van Wifi en gebruikt het bestaande netwerk. Het vereist wel dat de gebruiker een tag bijhoudt. Er is geen ondersteuning voor iOS of Android en er is nog geen API of webservice beschikbaar. [17] Daardoor zijn de mogelijkheden beperkt. Cisco De oplossing is ontwikkeld samen met AeroScout. Voor meer informatie zie verder. Point Inside Biedt totaaloplossingen aan shoppingcentra in Amerika. [29, 11, 12] Er kwam geen reactie van het bedrijf. Sensor Platforms De positiebepaling werkt op basis van Wifi en de sensoren van de smartphone. [35] Er was geen reactie op de contactpogingen. 2. Voldoen niet aan de vereisten: AeroScout De positiebepaling werkt op basis van Wifi met behulp van triangulatie, maar kan gecombineerd worden met rfid, bluetooth, ultrasoon geluid, enz.. Het vereist een uitgebreide analyse van de locatie en werkt niet met elk type access point. Om meerdere verdiepingen te kunnen detecteren worden er indicatoren geplaatst aan alle in- en uitgangen van elke verdieping. Een uitgebreid verslag van de mondelinge communicatie bevindt zich in Bijlage D.1. [16] Een nadeel is het vele werk dat moet verricht worden om een locatie gebruiksklaar te maken. Combain Mobile AB De positie wordt bepaald door een database te raadplegen met de posities van gekende gsm-masten en gekende AP’s. [18] De positiebepaling is niet nauwkeurig genoeg, zie Figuur 2.1. Ekahau De positionering werkt op basis van Wifi, maar kan gecombineerd worden met andere technologie¨en voor een grotere nauwkeurigheid. [21, 6] De positiebepaling is niet nauwkeurig genoeg zonder extra hardware te verwerven.
HOOFDSTUK 2. VEREISTEN EN MARKTANALYSE
15
GloPos De positie wordt bepaald met behulp van de signalen van de gsm-masten. [22, 42] Deze benadering is niet nauwkeurig genoeg. Navizon De positie wordt bepaald op basis van Wifi met de AoAmethode. Daarvoor hebben ze hun eigen AP’s ontwikkeld [26, 44]. Het aanschaffen van extra hardware is verplicht, en deze hardware kan enkel gehuurd worden. Omnisense Technology De positiebepaling werkt met behulp van UWB en Zigbee. [27] Deze benadering vereist extra hardware. Plus Location Systems De positiebepaling werkt met behulp van UWB. Het heeft een hoge nauwkeurigheid, maar ook een hoge kostprijs. [28] Deze oplossing heeft en te hoge kostprijs en UWB vereist extra hardware. Skyhook Wireless De positiebepaling werkt volgens het zelfde principe als Combain Mobile AB, volgens de GSM-masten, de gekende wifiAP’s en GPS. [36] Deze oplossing is niet nauwkeurig genoeg, zie Figuur 2.1. Space Systems Finland De positie wordt bepaald door zelf ontworpen pseudolites. De nauwkeurigheid is groot, maar dit vereist extra hardware die niet goedkoop is. Een verslag is te vinden in Bijlage E.2. [37] Deze oplossing heeft een te hoge kostprijs en vereist extra hardware. Ubisense De positiebepaling maakt gebruik van UWB en vereist extra hardware. Een verslag van het kennismakingsgesprek is te vinden in Bijlage D.4. [39, 49] Zonith De positiebepaling werkt op basis van Bluetooth en vereist extra hardware. [41, 38] Bleutooth vereist de installatie van extra hardware. 3. Komen in aanmerking, maar werden niet getest: CRS4 De positie wordt enkel bepaald op basis van de sensoren op de smartphone vertrekkende vanuit een gekend referentiepunt. Het systeem is nog niet commercieel vrijgegeven en er worden nog geen samenwerkingen opgesteld [19]. Deze oplossing kan in de toekomst herbekeken worden, maar kon op dit moment niet gebruikt worden. Locata De positiebepaling wordt verkregen door eigen ontworpen pseudolites. [24, 8, 9] Het bedrijf werkt voorlopig alleen samen met heel grote bedrijven, waardoor het niet beschikbaar is. Nokia (Navteq) De positiebepaling is op basis van Bluetooth 4 en gebruikt de AoA-methode. Er is extra hardware vereist, maar de ontvangers zullen ge¨ıntegreerd worden in smartphones bij Bluetooth versie 4.1. Nokia heeft HTML5 compatibele kaarten en is bezig met
HOOFDSTUK 2. VEREISTEN EN MARKTANALYSE
16
plattegronden van gebouwen in Europa te integreren met hun kaarten. Door de nauwkeurige positiebepaling en de interessante nabije toekomstplannen, komt deze oplossing in aanmerking. Een verslag van het kennismakingsgesprek bevindt zich in Bijlage D.2. RedPin De positiebepaling werkt op basis van Wifi en gebruikt het bestaande draadloze netwerk. Deze oplossing werkt niet met specifieke gps co¨ ordinaten, maar duidt een gebied aan met een naam. Het heeft geen voorbereidend werk nodig, maar rekent erop dat de gebruikers de posities corrigeren waarop het zichzelf aanpast. De volledige oplossing is Open Source1 [32]. Deze software is gratis en vereist geen extra hardware, maar door de gebrekkige communicatie kon geen werkende test opgesteld worden. Safelink De positiebepaling werkt op basis van FM en AM radio signalen, daarvoor is een custom firmware update 2 van de smartphone nodig of wordt een hardware module aan de smartphone gekoppeld. Het bedrijf is momenteel op zoek naar een fabrikant om de hardware module te miniaturiseren en in te bouwen in smartphones. Een verslag van het kennismakingsgesprek bevindt zich in Bijlage D.3. [33] Deze oplossing werd niet gekozen, maar zou later herbekeken kunnen worden. SenionLab De positiebepaling is op basis van de smartphonesensoren, voor iOS, of in combinatie met Wifi, voor Android. Een verslag is te vinden in Bijlage E.1. [34] Door tijdsgebrek en gebrekkige communicatie konden problemen met de tests niet tijdig opgelost worden. 4. Komen in aanmerking, en werden getest: Insiteo De positie wordt bepaald door Wifi met behulp van het bestaande draadloze netwerk via de fingerprinting-methode of met behulp van een ge¨ınstalleerd proximity-netwerk. Het is compatibel met Android en in beperktere mate met iOS. De API kan gratis getest worden. Er is een demo beschikbaar voor het Montparnasse shoppingcentrum in Parijs, Frankrijk. [23, 43, 7] De demo in Parijs gaf een goed resultaat. Het vereist weinig extra hardware en de API kan gratis getest worden. Het melden van een probleem of het vragen van hulp kan gebeuren via Skype met ´e´en van de medewerkers of via mail. Als deze medewerker online is, is er rap een antwoord. Polestar De positionering gebruikt de fingerprinting-methode, op basis van het bestaande Wifi-netwerk. Het is compatibel met Android en in beperktere mate met iOS. Er is een applicatie beschikbaar voor het shoppingcentrum Les Quattre Temps in Partijs en voor enkele 1 Een programma waarbij de broncode vrij toehankelijk is, en waardoor iedereen zelf wijzigingen kan aanbrengen. 2 Dit is een versie van het besturingssysteem waarbij de aanpassingen niet gedaan zijn door de offici¨ ele verdeler van dat besturingssysteem.
HOOFDSTUK 2. VEREISTEN EN MARKTANALYSE
17
terminals op de luchthaven Charles De Gaulles in Parijs, Frankrijk. Er wordt een vergoeding gevraagd om een test op te stellen van de API op een eigen locatie.[30, 45] De applicatie van Charles De Gaulle is getest en gaf een goed resultaat, waarbij de nauwkeurigheid zich binnen 10m bevond. Dit systeem gebruikt dezelfde methode als Qubulus en Insiteo en een testopstelling van die twee zijn niet betalend. Qubulus De positionering is op basis van Wifi en maakt gebruik van de fingerprinting-methode. Het maakt daarbij gebruik van het bestaande Wifi-netwerk en er zijn geen bijkomende ontvangers nodig. De API is enkel ontworpen voor Android toestellen en kan gratis getest worden. Er is ook een demo beschikbaar op de Technische Universiteit van Delft, Nederland [31, 13, 14, 15, 46, 47, 48] Er is geen extra hardware vereist. Melden van problemen of het aanvragen van hulp kan gebeuren via mail of via een website met ticketsysteem. Een response kan enkele dagen op zicht laten wachten.
HOOFDSTUK 2. VEREISTEN EN MARKTANALYSE
2.3.1
18
Overzicht
In Figuur 2.1 bevindt zich een statistiek met de minimale en maximale nauwkeurigheid van de positiebepaling van de verschillende bedrijven. Hierop is ook de bovengrens van 5 m aangeduid, in het groen, die verwacht wordt van de te ontwikkelen applicatie.
Figuur 2.1: Overzicht van de nauwkeurigheid van de bedrijven ten opzichte van de minimum vereiste nauwkeurigheid.
HOOFDSTUK 2. VEREISTEN EN MARKTANALYSE
2.4
19
Resultaat
Omdat Wifi wereldwijd wordt ontplooid in openbare plaatsen en dit tegenwoordig standaard wordt ondersteund op smartphones, ging de voorkeur eerst uit naar een oplossing op basis van Wifi. Na de marktanalyse en de verschillende gesprekken is gebleken dat niet alle methodes bij Wifi even makkelijk te integreren zijn dan eerst werd aangenomen. Andere oplossingsmethodes zijn nooit volledig aan de kant geschoven en enkele van deze oplossingen kunnen even goed, soms zelf beter, presteren dan de Wifi alternatieven aan eenzelfde of een goedkopere kostprijs. Na een grondige vergelijking van de verschillende oplossingen en een afweging tegenover de opgelegde eisen, zijn volgende bedrijven gekozen met mogelijke commerci¨ele en technisch haalbare oplossingen: • Insiteo • Qubulus Er zijn ook enkele oplossingen die nog niet beschikbaar zijn of niet konden getest worden, die later voor eventuele verbeteringen kunnen zorgen. Deze bedrijven zijn: • CRS4 • Nokia • Safelink • Senionlab
Hoofdstuk 3
Testen en Voorbereidingen Voor het testen en de implementatie werd gezocht naar een locatie die makkelijk bereikbaar was. In samenspraak met Hogeschool Gent was het mogelijk om Gebouw B op Campus Schoonmeersen te Gent als testlocatie te gebruiken. Voor het testen is een smartphone nodig met Android versie 2.3 of hoger. De smartphone moet beschikken over een Wifi- of 3G-verbindingen tijdens de testen, en moet ook beschikken over acceleratie- en rotatiesensoren. Er waren 2 types smartphones ter beschikking om te testen. Dit waren de HTC Sensation XE en de Samsung Galaxy S Plus. Dit zijn beide Android toestellen met op de HTC versie 4.0.3 en op de Samsung versie 2.3.5 . In Figuur 3.1 vind u een foto van beide smartphones.
Figuur 3.1: De smartphones: de HTC links en de Samsung rechts.
Er werd gekozen om fingerprinting toe te passen omdat er een minimum aan hardware-installatie op de locatie nodig is. Het nadeel van deze oplossing is de tijdsintensieve metingen in de voorbereidingsfase. Er zijn twee bedrijven die een gelijkaardige oplossing aanbieden, namelijk Qubulus en Insiteo. De twee systemen worden hierna verder toegelicht. Om de nauwkeurigheid van de oplossing te verbeteren wordt onderzocht welke meerwaarde het voorspellen van de beweging door middel van de sensoren van de smartphones heeft.
20
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
3.1
21
Fingerprinting
3.1.1
Qubulus
Figuur 3.2: Logo van Qubulus. De fingerprinting positionering van Qubulus vereist enkele voorbereidingen: 1. Een grondplan van de locatie moet gepositioneerd worden op een kaart om de gps-co¨ ordinaten te bepalen van de hoekpunten. Dit kan gemakkelijk gedaan worden met Google Earth. Daarbij wordt een foto van het grondplan in Overlay1 op de kaart gepositioneerd tot het overeenkomt met de werkelijke locatie van het gebouw. Er worden dan twee markeringen geplaatst, ´e´en in de noordwesthoek en ´e´en in de zuidoosthoek en daarvan worden de gezochte co¨ ordinaten opgevraagd, zoals te zien is in Bijlage A. 2. In de volgende fase wordt bepaald op welke plaatsen in het gebouw de metingen uitgevoerd moeten worden. Elk meetpunt moet ongeveer 5 meter van elkaar verwijderd zijn. Figuur 3.3 geeft een voorbeeld van de plaatsen waar een meting moet worden uitgevoerd, deze zijn aangeduid door de oranje punten. De meetpunten kunnen op voorhand vastgelegd en aangeduid worden op het grondplan om een vlotte afhandeling van de metingen te bekomen.
Figuur 3.3: Bepaling van de meetpunten.
Om de veranderingen van verdieping te kunnen registreren worden gebieden afgebakend aan de in- en uitgangen van de verdieping. Een gebied 1 Dit is een functie in Google Earth waarbij een foto kan ingeladen worden en bovenop de kaart geplaatst wordt. Deze foto kan geroteerd, verplaatst en geschaald worden, en de transparantie kan ook aangepast worden. Daarna kunnen de co¨ ordinaten van de foto opgevraagd worden.
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
22
wordt afgebakend door drie meetpunten, in de vorm van een driehoek, aan elke in- en uitgang. Een voorbeeld wordt weergegeven in Figuur 3.4, de drie rode bollen stellen drie de meetpunten voor aan de in-/uitgang.
Figuur 3.4: Bepaling van de meetpunten aan de in- en uitgangen.
3. Het grondplan en de eerder vastgelegde co¨ordinaten van de hoekpunten kunnen nu gebruikt worden in de Gecko tool van Qubulus, zie Figuur 3.5. Deze tool begeleidt de gebruiker in het opnemen van de metingen. Met de tool kan aangeduid worden waar de gebruiker staat en kan voor die positie de meting uitgevoerd worden. Bij elk meetpunt moet tijdens de meting gedurende een minuut een rotatie gemaakt worden van 360◦ . Dit om voldoende gegevens te hebben van een meetpunt en om de fluctuaties van de Wifi-signalen te kunnen bepalen. Omdat het menselijk lichaam gedeeltelijk de signalen tegenhoudt, speelt de richting naar waar de gebruiker kijkt een rol bij de signaalsterktes.
Figuur 3.5: Gecko tool
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
23
Bij elke meting wordt een gps-co¨ordinaat en een verzameling van Wifisignaalsterktes met bijhorende MAC-adressen 2 van Access Points bijgehouden. De gps-co¨ ordinaat die vastgelegd wordt is bepaald ten opzichte van de twee co¨ ordinaten die hiervoor vastgelegd zijn. 4. Daarna moeten de meetgegevens opgestuurd worden naar Qubulus, die ze verwerkt tot een offline databasebestand en een database in de cloud. Het offline databasebestand kan enkel gebruik worden in de Gecko tool om al een indicatie te krijgen van de positionering, maar deze is minder accuraat dan de cloud database. De Gecko tool ondersteunt geen overgangen tussen verdiepingen. De cloud database kan aangesproken worden met behulp van de API. Een gebruiker krijgt daarvoor een gebruikersnaam en een nummer die de site aangeeft. Tijdens het positioneren worden aanvragen gedaan aan de cloud database, en naargelang de snelheid van de dataverbinding kan het 2 tot 5 seconden duren voordat er een antwoord is. Als er wordt gedetecteerd dat de gebruiker in het gebied van de in- en uitgang is op een verdieping, en daarna in een in- en uitgangsgebied van een andere verdieping, dan zal een verandering van verdieping gemeld worden. Testresultaat: De eerste test met de offline database gaf niet het gewenste resultaat. Op sommige plaatsten werd de persoon aan het andere eind van een gang gepositioneerd. De test met de cloud database daarentegen gaf wel het verwachte resultaat. De verplaatsingen tussen de verdiepingen werden bijna allemaal goed gedetecteerd, en op de momenten dat dit niet het geval was, werd dit bij de volgende positiebepaling gecorrigeerd. Met een nauwkeurigheid van ongeveer 3 tot 5 m voldoet dit aan de verwachtingen en valt het binnen de vereisten.
2 Dit
is een unieke naam voor een netwerkinterface.
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
3.1.2
24
Insiteo
Figuur 3.6: Logo van Insiteo.
Om een testopstelling van het systeem op te stellen moeten een paar handelingen doorlopen worden: 1. Eerst moet een plattegrond van de locatie samen met de schaal, ori¨entatie en een referentiepunt, uitgedrukt in lengte- en breedtegraad, verstuurd worden naar de ontwikkelaars bij Insiteo. Het referentiepunt, Punt A is te zien in Figuur 3.7.
Figuur 3.7: Insiteo referentiepunt voor schaal.
2. Op basis van die gegevens wordt een fingerprintingtool gemaakt. Enkele screenshots van de applicatie zijn te vinden in Figuur 3.8. Met deze tool worden de metingen van de Wifi-signaalsterktes doorheen het gebouw gemaakt. Voor elke verdieping van een locatie is een configuratiebestand opgesteld. Een meting wordt rechtstreeks op de plattegrond toegevoegd. Deze meting kan nog verplaatst en eventueel verwijderd worden. Bij het toevoegen van een meting aan een positie, worden 40 metingen gedaan om een variatie in het signaal te detecteren, zoals te zien is
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
25
Figuur 3.8: Insiteo fingerprint tool
op de rechtse afbeelding. Hierbij is het aan te raden om de 10 metingen 90◦ te draaien of als de meting in een lange smalle gang gebeurt, is een eenmalige draai van 180◦ na 20 metingen voldoende. Dit verbetert de positionering, omdat het menselijk lichaam het signaal kan verzwakken waardoor een meting niet volledig correct zou zijn. Deze metingen moeten in het gebouw worden gedaan met een tussenafstand van maximaal vijf meter. Na het voltooien van de metingen duiden groene bollen op de plattegrond aan waar elke meting is uitgevoerd. 3. Deze metingen worden ge¨exporteerd naar een Excel-bestand op de SDkaart. Dit bestand moet opgestuurd worden naar de medewerkers van Insiteo. De gegevens worden verwerkt en worden op een server geplaatst. 4. Er wordt een testapplicatie teruggestuurd, zie Figuur 3.9. Waarbij een identificatienummer, een versie en een taal moet worden opgegeven, zoals te zien is op de linkse screenshot. Deze applicatie kan volgende handelingen testen: • De gebruiker positioneren op het grondplan. • Gegevens van de huidige locatie weergeven. • Berekende posities, routes en overgangen tussen verdiepingen vergelijken met de werkelijke posities, routes en overgangen tussen verdiepingen. Dit is handig om de nauwkeurigheid van de positiebepalingen te controleren. Een voorbeeld van het verschil tussen de werkelijke positie en de berekende positie is te zien op de rechtse screenshot. Daarbij is de werkelijke positie aangegeven door de gele pin en de berekende positie aangegeven door de blauwe cirkel. Er kan opgemerkt worden dat de gele pin zich binnen het gebeid van de blauwe cirkels bevindt.
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
26
• De posities van andere gebruikers op de map controleren.
Figuur 3.9: Insiteo fingerprint testapplicatie
Bij problemen worden 2 soorten gegevens bijgehouden: 1. Het aantal gedetecteerde Access-Points en hun signaalsterktes per positiebepaling. 2. De waarde van de positiebepalingen. Testresultaat: De positionering komt goed overeen met de werkelijke positie. Het systeem heeft het moeilijk in regio’s met geen of weinig wifi-signalen. Veranderingen tussen verdiepingen worden goed gedecteerd.
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
3.1.3
27
Vergelijking
Hieronder is een vergelijking tussen de systemen van Qubulus en Insiteo: • De betrouwbaarheid van beide systemen is hoog. • Als enkele Access Points wegvallen zullen beide systemen blijven werken. • Beide systemen geven een positiebepaling binnen de 5 seconden. • Beide systemen kunnen gratis getest en opgesteld worden, maar vereisen licenties bij commercieel gebruik. • Beide systemen maken gebruik van Fingerprinting, waardoor het makkelijk uitbreidbaar is. • Beide systemen vereisen een verbinding met het internet om gegevens van hun servers te halen. • Het systeem van Insiteo is beschikbaar voor Android en iOS, terwijl deze van Qubulus enkel beschikbaar is voor Android. • De oplossing van Qubulus heeft een hogere nauwkeurigheid dan Insiteo • De overgang tussen twee verdiepingen tonen nog enkele kleine, maar snel corrigerende fouten bij het systeem van Qubulus. • De positiebepaling in gebieden met een zwak Wifi-signaal gaat moeilijk voor het systeem van Insiteo.
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
3.2
28
Sensoren
De smartphones hebben drie groepen sensoren die gebruikt kunnen worden: beweging, positie en omgeving. Niet elke smartphone is uitgerust met alle sensoren. Hieronder volgt een overzicht van enkele sensoren: • Bewegingssensoren: – Acceleratiemeter – Zwaartekrachtmeter – Gyroscoop – Rotatiemeter • Positiesensoren: – Magnetismemeter – Ori¨entatiemeter – Nabijheidsmeter • Omgevingssensoren: – Lichtsterktemeter – Vochtigheidsmeter – Luchtdrukmeter – Temperatuurmeter Om de sensoren aan te spreken, beschikken Android toestellen over het Sensor Framework. Daarvoor wordt er eerst een SensorManager ge¨ınitialiseerd, en kan daarna een specifieke sensor opgevraagd worden. private SensorManager mSensorManager ; mSensorManager = ( SensorManager ) c . g e t S y s t e m S e r v i c e ( Context . SENSOR SERVICE) ;
Listing 3.1: SensorManager initialiseren. Om een instantie van een sensor te initialieren, wordt het type van de sensor opgegeven. De beschikbare types kunnen gevonden worden op de Android Developer website en verwijzen meestal naar ´e´en van de hierboven opgesomde sensoren. private S e n s o r s S e n s o r ; s S e n s o r = mSensorManager . g e t D e f a u l t S e n s o r ( S e n s o r . TYPE . . . ) ;
Listing 3.2: Sensor instanti¨eren. Daarna wordt een SensorEventListener aan de instantie gekoppeld die periodiek de gegevens van de sensor ophaalt.
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
29
i f ( s R o t a t i o n V e c t o r != null ) mSensorManager . r e g i s t e r L i s t e n e r ( this , s S e n s o r , 1 0 0 0 0 0 0 ) ;
Listing 3.3: Listener voor sensor registreren. De sensorgegevens worden bijgehouden in een SensorEvent-object dat meegegeven wordt in de onSensorChanged functie die periodiek wordt opgeroepen. @Override public void onSensorChanged ( SensorEvent e v e n t ) { // Verwerken van de g e g e v e n s van de s e n s o r u i t h e t SensorEvent−o b j e c t }
Listing 3.4: onSensorChanged EventListener. Het SensorEvent-object bevat volgende elementen: • een Sensor-object dat een beschrijving heeft van een sensor, • een indicatie van de nauwkeurigheid van de meting, • een tijdsaanduiding die aangeeft wanneer de meting plaatsvond, • een verzameling die de metingen bevat.
3.2.1
Richting
Om de gegevens van de richting op te vragen wordt de rotatievector opgehaald. Deze bepaalt de rotatie van de smartphone ten opzichte van de assen van de aarde. Daarbij richt de x-as naar het oosten, de y-as naar het noorden en de z-as staat loodrecht op de grond. Dit assenstelsel is voorgesteld in Figuur 3.10.
Figuur 3.10: Assenstelsel aarde. (http://developer.android.com)
De rotatie wordt voorgesteld door drie vectoren: de rotatie rond de x-as, y-as en z-as. Als het toestel naar het noorden gericht is, zal de rotatie ten opzichte van het noorden 0◦ aangeven. De hoek tussen noord en zuid via het oosten
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
30
is positief tussen 0◦ en 180◦ . De hoek tussen noord en zuid via het westen is negatieve tussen 0◦ en -180◦ . Deze rotatiehoek ten opzichte van de noordas kan gebruikt worden als kompas. In Android kan een instantie van de rotatievector verkregen worden met behulp van het TYPE ROTATION VECTOR type. Dit type is evenwel maar beschikbaar vanaf Andriod versie 2.3. De rotatievectoren van de sensor kunnen opgevraagd worden uit het values-eigenschap van het SensorEventobject dat ter beschikking is. Met deze vectoren kan een rotatiematrix opgesteld worden, waaruit de rotatiehoek kan bepaald worden die gebruikt wordt als kompas. @Override public void onSensorChanged ( SensorEvent e v e n t ) { i f ( e v e n t . s e n s o r . getType ( ) == S e n s o r .TYPE ROTATION VECTOR) { f l o a t [ ] mRotationMatrix = new f l o a t [ 1 6 ] ; SensorManager . getRotationMatrixFromVector ( mRotationMatrix , e v e n t . v a l u e s ) ; SensorManager . g e t O r i e n t a t i o n ( mRotationMatrix , r o t a t i e s ); hoek = ( f l o a t ) Math . t o D e g r e e s ( r o t a t i e s [ 0 ] ) ; } }
Listing 3.5: onSensorChanged EventListener. Er moet wel opgemerkt worden dat de getOrientation-functie de waarden op basis van een licht gewijzigd assenstelsel vastlegt. Dit assenstelsel is te zien in Figuur 3.11.
Figuur 3.11: Assenstelsel van de orientatie. (http://developer.android.com)
De volledige code kan gevonden worden in Bijlage B.1.
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
31
Testresultaat: Uit de test met de twee toestellen is gebleken dat het kompas bij de HTC een goede indicatie van het noorden geeft met maar een kleine variatie, maar dat het kompas bij de Samsung een te grootte variatie en afwijking heeft om een duidelijke aanduiding van het noorden te bekomen.
3.2.2
Verplaatsing
Om de versnelling van het toestel op te vragen, kunnen twee types opgeroepen worden: TYPE ACCELEROMETER bevat de versnelling van het toestel langs zijn drie assen, maar bevat ook de zwaartekracht. Als het toestel plat op de grond ligt dan is de versnelling volgens zijn z-as 9,81 m/s2 . TYPE LINEAR ACCELERATION bevat ook de versnelling van het toestel langs zijn drie assen, maar bevat niet de zwaartekracht. Hier zal de versnelling volgens de z-as 0 m/s2 zijn als het toestel stil ligt. In Figuur 3.12 wordt de positie van de assen van het toestel weergegeven.
Figuur 3.12: Assenstelsel van het toestel. (http://developer.android.com)
Hier is het TYPE LINEAR ACCELERATION-type gebruikt. Dit type is ook maar beschikbaar vanaf android versie 2.3. De gegevens van de sensor worden opgevraagd uit het values-eigenschap van het SensorEvent-object. @Override public void onSensorChanged ( SensorEvent e v e n t ) {
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
32
i f ( e v e n t . s e n s o r . getType ( ) == S e n s o r . TYPE LINEAR ACCELERATION) { versnellingNG [ 0 ] = ( float ) event . values [ 0 ] ; versnellingNG [ 1 ] = ( float ) event . values [ 1 ] ; versnellingNG [ 2 ] = ( float ) event . values [ 2 ] ; } }
Listing 3.6: onSensorChanged EventListener. De volledige code kan gevonden worden in Bijlage B.2.
3.2.3
Combinatie
Om de versnelling van het toestel evenwijdig aan het aardoppervlak te weten, is een combinatie van de rotatie en de versnelling nodig. Figuur 3.13 geeft een grafische voorstelling waarbij het toestel geroteerd is rond de x-as. Daarbij moeten de versnellingen in het assenstelsel van het toestel, het groene assenstelsel, uitgezet worden op het assenstelsel van de aarde, het rode assenstelsel. Dit kan gedaan worden door de versnelling van de y-as en de z-as van het toestel, ys respectievelijk zs te ontbinden in de y- en z-component volgens de aarde, ya respectievelijk za . Van deze twee componenten is enkel de y-component nodig.
Figuur 3.13: Ontbinden van de versnelling van het toestel naar y-as van de aarde
De y-component op de aarde, aya , van de y-as van het toestel, ays , kan berekend worden met de volgende formule: ay a = cos(α) ∗ ay s ;
(3.1)
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
33
Daarbij is α de hoek tussen het aardoppervlak en het toestel. De y-component op de aarde, aza , van de z-as van het toestel, azs , kan op een gelijkaardige manier berekend worden: π − α) ∗ az s ; (3.2) 2 Om de werkelijke versnelling te bekomen moeten deze twee componenten bij elkaar opgeteld worden: az a = cos(
a = ay a + az a
(3.3)
Met deze versnelling kan de snelheid en de afgelegde weg berekend worden. Dit kan enkel gedaan worden als er een startsnelheid, startversnelling en startafstand bepaald is. Daarom wordt er vanuit gegaan dat het toestel start vanuit stilstand. De snelheid wordt berekend met volgende formule: s1 = s0 + (a ∗ ∆t)
(3.4)
Hierbij is s0 de huidige snelheid, ∆t de tijd die verstreken is na de vorige meting en a de huidige versnelling. De afgelegde weg wordt daarna berekend met de volgende formule: a1 = a0 + v0 ∗ ∆t +
a ∗ (∆t)2 2
(3.5)
Hierbij is a0 de huidige afstand, v0 de huidige snelheid, ∆t de tijd die verstreken is na de vorige meting en a de huidige versnelling. Omdat enkel het afstandsverschil belangrijk is kan deze formule hervormd worden tot: ∆a = v0 ∗ ∆t +
a ∗ (∆t)2 2
(3.6)
Hierdoor wordt de vereiste van een startafstand vermeden.
3.2.4
Testresultaat
Er werd een testwandeling uitgevoerd om gegevens te verzamelen van de sensorgegevens. Daarbij startte de gebruiker uit stilstand en wandelde hij 4 keer 10 meter met telkens een pauze tussen. In die pauze werd een rotatie van 180◦ gemaakt. Het resultaat is te vinden in Figuur 3.14. De versnelling wordt voorgesteld door de blauwe lijn. Volgende zaken kunnen opgemerkt worden: • Als de persoon wandelt, wordt een sinusvormige functie gevormd. • Als de persoon stilstaat, is maar een zwakke sinusvormige functie te zien. Dit komt door eventuele trillingen van de persoon. • Als de persoon een rotatie maakt, is een positieve curve te zien. Dit komt door de middelpuntsvliegende kracht bij de rotatie. De gegevens kunnen verwerkt worden om een duidelijk onderscheid te verkrijgen tussen beweging en stilstand:
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
34
Figuur 3.14: Analyse van de sensorgegevens voor een testwandeling van 4 keer 10 meter.
Initialisatiefase Om een eventuele afwijking van de sensoren te compenseren, worden de sensorgegevens voor de ingebruikname een tijd bijgehouden. Van deze gegevens wordt een gemiddelde berekend die dienst doet als correctiewaarde tijdens het gebruik. Absolute waarde Een verplaatsing resulteert in een waardebereik met een gemiddelde waarde bij 0 m/s2 . Om daaruit een versnelling uit af te leiden worden de absolute waarden van de metingen genomen. Drempelwaarde Een gebruiker in stilstand registreert nog steeds versnellingen, maar wel minder sterk als bij het verplaatsen. Dit zou resulteren in een detectie van een verplaatsing, ook al staat de gebruiker stil. Dit kan vermeden worden door een drempelwaarde voor het registreren van versnellingen in te stellen. Er kan ook een vaste waarde voor de versnelling ingesteld worden. Zo wordt op de grafiek een versnelling gedetecteerd als deze meer dan 0,7 m/s2 en wordt de versnelling dan ingesteld op 1,5 m/s2 . Voortschrijdend gemiddelde Hierbij wordt voortdurend eenzelfde aantal gegevens bijgehouden. Waarbij het oudste gegeven telkens wordt overschreven door een nieuw gegeven. Periodiek wordt een nieuwe versnellingswaarde berekend van deze bijgehouden gegevens. In het voorbeeld worden 50 gegevens bijgehouden en wordt elke 0,1 seconde een berekening gedaan. Het resultaat van deze bewerkingen is te zien als de rode lijn in Figuur 3.14. Daaruit is af te leiden dat de beweging goed wordt gedetecteerd en maar enkele foutieve bewegingsregistraties gebeuren.
HOOFDSTUK 3. TESTEN EN VOORBEREIDINGEN
3.3
35
Analyseproblematiek
Om het resultaat van de applicatie objectief te kunnen analyseren en te bepalen of dit betrouwbaar is in alle omstandigheden, moeten er metingen uitgevoerd worden in verschillende situaties: • Een moment met veel personen op de locatie, maar die geen of weinig gebruik maken van het draadloze netwerk, • Een moment met veel personen op de locatie, die intensief gebruik maakt van het draadloze netwerk, • Een moment met weinig personen op de locatie. Om metingen te kunnen vergelijken worden referentieposities bepaald, zoals de gele indicatoren in Figuur 3.15. Deze referentieposities bevatten gekende GPS-co¨ ordinaten. Voor elk referentiepunt worden enkele metingen uitgevoerd en worden de afwijkingen van het referentiepunt met de meting bepaald. Deze afwijking, uitgedrukt in meter, geeft een indicatie hoe ver de meting verwijderd is van zijn werkelijke positie. Voor elk referentiepunt wordt de meting een tiental keer herhaald, om de nauwkeurigheid van de positionering te bepalen van de volledige locatie. Op deze manier kunnen ook zones worden gedetecteerd waar de nauwkeurigheid niet aan de eisen voldoet en kunnen voor deze zones maatregels worden genomen om de nauwkeurigheid te verbeteren.
Figuur 3.15: Analyse referentie van het gelijksvloers.
Hoofdstuk 4
Uitwerking en implementatie 4.1
De mobile applicatie
De applicatie die de werking moet demonstreren wordt gemaakt in Android 2.3. De applicatie bestaat uit een bibliotheek, die de posities bepaalt en deze kan wegschrijven naar een KML-bestand, en een grafisch gedeelte om de posities te visualiseren op een plattegrond. Het volledige klassendiagram van de applicatie is te zien in Bijlage C.2
4.1.1
Beschrijving van de onderdelen
Om de verschillende oplossingen te combineren en verbeteren wordt een bibliotheek opgesteld zoals te zien is in Figuur 4.1.
Figuur 4.1: Klassendiagram van bibliotheek
36
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
37
De verschillende componenten zijn: Positioning is een abstracte klasse die de structuur van een positioneringsmethode vastlegt en de gegenereerde positie bijhoudt. De klasse is te zien in Figuur 4.2. Als het positioneringssysteem dit ondersteunt kan de positie eventueel aangepast worden van buitenaf met de updateLocation-functie, waarbij de nieuwe locatie wordt meegegeven. Het bevat ook een indicatie die aangeeft of het positioneringssysteem geldige posities kan bepalen of dat het eerst nog moet ge¨ınitialiseerd worden. Dit kan gecontroleerd worden met de isReady-functie. De verschillende positioneringssystemen implementeren deze klasse zodat een uniforme toegang tot de posities mogelijk is. Het systeem wordt gestopt met de stop-functie.
Figuur 4.2: Klasse Positioning.
QubulusPositioning is een implementatie van het positioneringssysteem van Qubulus, en wordt verder uitgelegd in Hoofdstuk 4.1.4. AbstractSensorReadings is een tweede implementatie en wordt hierna verder uitgelegd. AbstractSensorReadings is een abstracte klasse die de sensoren van de smartphone bepaalt die gebruikt worden voor deze positioneringsmethode. Deze klasse implementeert de Positioning-klasse, maar heeft wel een beginpositie nodig. De klasse is te zien in Figuur 4.3. Om nauwkeurige waardes van de acceleratiemeter te bekomen worden om een bepaalde tijd de gegevens van de sensor opgevraagd, aangegeven door het TIMEACC-attribuut. Voor de rotatiesensor wordt dit aangegeven door het TIMEROTVEC-attribuut. Deze attributen zijn instelbaar bij het implementeren van een AbstractSensorReadingsobject met behulp van de timeSensACC- en timeSensRot-parameters. SensorReadingsCombo is een implementatie van deze abstracte klasse, zie Hoofdstuk 3.2.4. Er kunnen ook implementaties gemaakt worden waarbij de gegevens van de sensoren anders verwerkt worden.
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
38
Figuur 4.3: Klasse SensorReadings.
AbstractPositioningEngine is een abstracte klasse die de structuur en het algoritme vastlegt voor het combineren van de verschillende positiebepalingssystemen. De klasse is te vinden in Figuur 4.4. De PositioningEngine berekent periodiek, aangegeven door het TIMERPERIODE-attribuut dat uitgedrukt is in milliseconden, de positie met behulp van de CalcPositon-klasse die een uitbreiding is van de TimerTask-klasse. Een uitgebreidere beschrijving van die functie wordt later toegelicht. De engine wordt gestart met de run-functie en wordt gestopt met de stop-functie. De klasse PositioningEngine is een implementatie waarbij twee positioneringssystemen gebruikt worden. Het interne SensorReadingsCombo en de externe QubulusPositioning. PositioningEngineStart is een AsyncTask waardoor de positioningEngine op de achtergrond kan uitgevoerd worden zonder dat de UI op resultaat moet wachten. De klasse is te vinden in Figuur 4.5. PositioningEngineListener is een interface met ´e´en functie onLocationChanged die wordt opgeroepen als een nieuwe positie bepaald is. Deze positie wordt meegeven in de parameter. De klasse is te vinden in Figuur 4.5.
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
39
Figuur 4.4: AbstractPositioningEngine
Figuur 4.5: PositioningEngineStart en PositioningEngineListener
4.1.2
De samenwerking van de onderdelen
De gegevensstroom tussen de verschillende klassen wordt ge¨ıllustreerd in Figuur 4.6. Bij het starten van de applicatie wordt de LamoscaIndoorActivity opgestart. Deze Activity doorloopt daarbij een paar functies, zie Bijlage C.1, waaronder de onCreate-functie. Hier wordt een PositioningEngineStart aangemaakt en ge¨ınitialiseerd. De Activity implementeert de PositioningEngineListener. Om de positionering te starten wordt de Execute-methode van de PositioningEngineStart opgeroepen. Hier wordt een timer gestart in een asynchrone thread die de PositioningEngine bevat. De PositioningEngine voegt ´e´en sensorpositionerings toe en ´e´en of meerdere externe positioneringssystemen en wordt gestart met de run-methode. Hier worden de verschillende positioneringssystemen die een positie zullen bepalen toegevoegd, waarbij deze worden ingesteld met hun specifieke instellingen. Deze positioneringssystemen kunnen tijdens de looptijd worden in en uitgeschakeld met de setSensorSupport- en de setWifiSupportmethodes. Er wordt een timer gestart die elke twee seconden een nieuwe positie berekent, zie Hoofdstuk 4.1.3. Als de applicatie gestopt wordt door de onStop-functie, wordt de asynchrone thread geannuleerd met de cancel-functie, en wordt daardoor elk positioneringssysteem afgesloten met zijn stop-functie.
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
40
Figuur 4.6: Sequentiediagram
Als er geen externe positioneringssystemen worden toegevoegd, kan enkel op de de interne sensorpositionering gewerkt worden. Dit systeem is wel afhankelijk van een beginpositie en zal na enige tijd afwijken van de werkelijke positie.
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
4.1.3
41
Combinatie van de positiebepalingssystemen
Om de positioneringsmethodes te combineren wordt eerst gekeken welke methodes klaar zijn om posities te generen. Dit gebeurt aan de hand van de isReady-functie van de positioneringsmethode. Vector
v L o c a t i o n s = new Vector
() ; f o r ( P o s i t i o n i n g pos : v P o s i t i o n i n g M e t h o d s ) { i f ( pos . isReady ( ) ) { v L o c a t i o n s . add ( pos ) ; } }
Listing 4.1: Positioneringsmethodes bepalen. Daarna wordt elk van deze posities verwerkt tot een enkele positie. De positie van het eerste positioneringssysteem wordt gebruikt als referentie, p1. Het Location-object van een positioneringssysteem wordt opgehaald aan de hand van de getLocation-functie. Voor elk bijkomend positioneringssysteem, p2, wordt de afstand, distance, en de richting, bearing, berekend tussen p1 en p2. Het midden tussen deze 2 posities wordt gekozen als nieuwe referentiepositie. De hoogte kan worden ingesteld door de setAltitude-functie te implementeren. P o s i t i o n i n g p1 = v L o c a t i o n s . g e t ( 0 ) ; L o c a t i o n l = p1 . g e t L o c a t i o n ( ) ; f o r ( i n t i =1; i
Listing 4.2: Verwerking van de posities Als volgt worden eventuele positioneringssystemen die afhankelijk zijn van een beginpositie, zoals het sensorpositioneringssysteem, bijgewerkt met de updateLocation-functie van de positioneringsmethode. i f ( isHasSensorSupport () ) { f o r ( P o s i t i o n i n g pos : v P o s i t i o n i n g M e t h o d s ) { i f ( pos . g e t C l a s s ( ) . g e t S u p e r c l a s s ( ) . e q u a l s ( AbstractSensorReadings . class ) ) { pos . u p d a t e L o c a t i o n ( l ) ; } } }
Listing 4.3: Sensorpositionering updaten. Als er geen externe positioneringsmethodes toegevoegd zijn, kan de positionering volgens de sensoren gebruikt worden. Met de functie setSensorSupport
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
42
kan het sensorpositioneringssysteem in- of uitgeschakeld worden. Bij het inschakelen wordt het sensorpositioneringssysteem ge¨ınitialiseerd met een startpositie en toegevoegd aan de verzameling met positioneringsmethodes, zie de addSensorSupport-functie. Deze startpositie wordt opgeroepen met de functie getInitLocation() en laad een lengte- en breedtegraad en een hoogte in van de instellingen. Bij het uitschakelen wordt in die verzameling gezocht naar het sensorpositioneringssysteem en verwijderd uit deze verzameling. public void s e t S e n s o r S u p p o r t ( boolean h a s S e n s o r S u p p o r t ) { this . hasSensorSupport = hasSensorSupport ; i f ( hasSensorSupport ) addSensorSupport ( g e t I n i t L o c a t i o n ( ) ) ; else { i n t j = −1; f o r ( i n t i= 0 ; i < v P o s i t i o n i n g M e t h o d s . s i z e ( ) ; i ++){ i f ( vPositioningMethods . get ( i ) . getClass () . getSuperclass () . equals ( AbstractSensorReadings . class ) ) j = i; } i f ( j > −1) v P o s i t i o n i n g M e t h o d s . removeElementAt ( j ) ; } } protected L o c a t i o n g e t I n i t L o c a t i o n ( ) { L o c a t i o n i n i t L o c = new L o c a t i o n ( ” ” ) ; S e t t i n g s s e t = new S e t t i n g s ( ) ; initLoc . setLatitude ( set . initLocation [ 0 ] ) ; initLoc . setLongitude ( set . initLocation [ 1 ] ) ; initLoc . setAltitude ( set . initLocation [ 2 ] ) ; return i n i t L o c ; } protected f i n a l void addSensorSupport ( L o c a t i o n l o c ) { A b s t r a c t S e n s o r R e a d i n g s s e n s o r R e a d i n g s = new SensorReadingsCombo ( c o n t e x t , 0 . 1 , 0 . 5 , 5 0 , l o c ) ; v P o s i t i o n i n g M e t h o d s . add ( s e n s o r R e a d i n g s ) ; h a s S e n s o r S u p p o r t = true ; }
Listing 4.4: Het sensorpositioneringssysteem in- of uitschakelen. De volledige code kan gevonden worden in Bijlage B.3.
4.1.4
Integratie van het positiebepalingssysteem van Qubulus
De QubulusPositioning-klasse is een uitbreiding van de Positioning-klasse, zoals te zien is in Figuur 4.1. Deze klasse voorziet de verwerking van de gegevens die ontvangen en verzonden worden van de cloud-server van Qubulus. Deze server is aanspreekbaar door de API die beschikbaar is. De klasse is te zien in Figuur 4.7. Voor de implementatie zijn enkele elementen vereist:
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
43
Figuur 4.7: Integratieklasse voor het systeem van Qubulus.
• Zo moet er een BroadcastReciever ge¨ımplementeerd worden die alle inkomende berichten afkomstig van de server ontvangt. • Er worden enkele parameters gebruikt om de service juist aan te kunnen spreken. Deze worden toegevoegd in het strings.xml-bestand dat zich in de res/values-map bevindt van het Android-project. Deze parameters zijn qps customer id, die de gebruiker identificeert, qps site id, die de site identificeert van de gebruiker, qps server, qps switch floor queue size en qps switch floor queue time tollerance. Een voorbeeld is te zien in Figuur 4.8.
Figuur 4.8: Verplichte gegevens voor de Qubulus implementatie.
• Voor de applicatie zijn machtigingen nodig en een vermelding van de Service van Qubulus. Dit wordt toegevoegd aan het AndroidManifest.xmlbestand. De machtigingen zijn nodig om bepaalde handelingen op de smartphone te doen, zoals het aanspreken van de gegevens van de Wifi. Een voorbeeld is te zien in Figuur 4.9. Om de Qubulusserver aan te spreken is eerst een IntentFilter nodig die enkel de Intents1 van een bepaalde actie zal toelaten. Hier is Intent.Position de Intent die gebroadcast wordt als een positie gevonden is en Intent.UnknownPosition de intent die gebroadcast wordt als er geen positie gevonden is. Om de filter te activeren, is een BroadcastReceiver nodig die de berichten verder verwerkt, hier mQpsReciever genoemd. De filter kan geactiveerd worden door de functie Context.registerReceiver(BroadcastReceiver, IntentFilter) op te roepen. Een instantie van de klasse die client-side toegang verleent aan de positioneringsservice wordt opgehaald met de PositioningManager.get(Context)-functie. Een 1 Dit is een beschrijving van een operatie. Een uitgebreide beschrijfing is te vinden op http://developer.android.com/reference/android/content/Intent.html
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
44
Figuur 4.9: Verplichte machtigingen en service vermelding voor de Qubulus implementatie.
aanvraag voor een positie wordt daarna opgevraagd van die instantie met de requestPosition-functie. Dit wordt periodiek opgevraagd met behulp van een timer. private f i n a l Timer t I n t e r v a l = new Timer ( ) ; private TimerTask t t I n t e r v a l ; private s t a t i c P o s i t i o n i n g M a n a g e r manager ; public Q u b u l u s P o s i t i o n i n g ( A c t i v i t y c ) { super ( c ) ; I n t e n t F i l t e r i n t e n t F i l t e r = new I n t e n t F i l t e r ( ) ; i n t e n t F i l t e r . addAction ( I n t e n t s . P o s i t i o n .ACTION) ; i n t e n t F i l t e r . addAction ( I n t e n t s . UnknwownPosition .ACTION) ; c o n t e x t . r e g i s t e r R e c e i v e r ( mQpsReceiver , i n t e n t F i l t e r ) ; manager = P o s i t i o n i n g M a n a g e r . g e t ( c o n t e x t ) ; t t I n t e r v a l = new TimerTask ( ) { @Override public void run ( ) { manager . r e q u e s t P o s i t i o n ( ) ; } }; t I n t e r v a l . schedule ( t t I n t e r v a l , 1000 , PositioningManager . POSITION REQ INTERVAL) ; }
Listing 4.5: QubulusPositionering starten. Als een positie aangevraagd is, wordt een broadcast bericht teruggestuurd. Dit bericht wordt opgevangen door de OnRecieve-functie van de BroadcastReceiver. Uit de intent-parameter kan het type actie en de meegestuurde extra gegevens opgevraagd worden. De actie wordt hier tijdelijk opgeslagen in de action-String en de extra gegevens in de e-Bundle. Deze bundel is een verzamelobject met naam-waarde paren. De extra gegevens bevatten de positiegevens, foutmel-
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
45
dingen of kan leeg zijn. Eerst wordt de actie gecontroleerd of de Intent een geldige positie teruggeeft, Intents.Position.Action.equals(action)), of niet, Intents.UnknwownPosition.ACTION.equals(action). Als een geldige positie ontvangen is kunnen de waardes, lengte- en breedtegraad en hoogte, opgevraagd worden uit het e-Bundle object. Als geen geldige positie ontvangen is, bevat het e-Bundle een foutmelding. @Override public void o n R e c e i v e ( Context c o n t e x t , I n t e n t i n t e n t ) { String action = intent . getAction () ; Bundle e = i n t e n t . g e t E x t r a s ( ) ; i f ( I n t e n t s . P o s i t i o n .ACTION. e q u a l s ( a c t i o n ) ) { // Got a p o s i t i o n e s t i m a t e setReady ( true ) ; double l a t = e . getDouble ( I n t e n t s . P o s i t i o n . E x t r a s . LATITUDE. name ( ) ) ; double l n g = e . getDouble ( I n t e n t s . P o s i t i o n . E x t r a s . LONGITUDE. name ( ) ) ; S t r i n g f l o o r = e . g e t S t r i n g ( I n t e n t s . P o s i t i o n . E x t r a s .MAP . name ( ) ) ; getGeoLocation ( ) . s e t L a t i t u d e ( l a t ) ; getGeoLocation ( ) . setLongitude ( lng ) ; getGeoLocation ( ) . s e t A l t i t u d e ( I n t e g e r . p a r s e I n t ( f l o o r ) ) ; } e l s e i f ( I n t e n t s . UnknwownPosition .ACTION. e q u a l s ( a c t i o n ) ) { i f ( e != null ) { // Could n o t e s t i m a t e p o s i t i o n b e c a u s e o f a runtime e r r o r f i n a l S t r i n g EXTRA WIFI = I n t e n t s . UnknwownPosition . E x t r a s . WIFI OFF . name ( ) ; f i n a l S t r i n g EXTRA ERROR = I n t e n t s . UnknwownPosition . E x t r a s .ERROR. name ( ) ; i f ( e . g e t B o o l e a n (EXTRA WIFI) ) { L o g g i n g H e l p e r . l o g ( ”Unknown p o s i t i o n , w i f i disabled ”) ; } e l s e i f ( e . g e t S t r i n g (EXTRA ERROR) != null ) { S t r i n g msg = e . g e t S t r i n g (EXTRA ERROR) ; L o g g i n g H e l p e r . l o g ( ”Unknown p o s i t i o n , e r r o r : ” + msg ) ; } } else { // I m p o s s i b l e t o e s t i m a t e a c u r r e n t p o s i t i o n , most l i k e l y b e c a u s e t h e u s e r i s f a r from t h e s i t e L o g g i n g H e l p e r . l o g ( ”Unknown p o s i t i o n ” ) ; } } }
Listing 4.6: QubulusPositionering positie ontvangen. De connectie met de service wordt gestopt door de PositioningManager.stopService-functie op te roepen. De BroadcastReciever
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
46
wordt gestopt door de Context.unregisterReceiver(BroadcastReceiver)-functie. @Override public void s t o p ( ) { super . s t o p ( ) ; manager . s t o p S e r v i c e ( ) ; // U n r e g i s t e r p o s i t i o n u p d a t e s c o n t e x t . u n r e g i s t e r R e c e i v e r ( mQpsReceiver ) ; ttInterval . cancel () ; }
Listing 4.7: QubulusPositionering stoppen.
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
4.1.5
47
Posities opslaan in KML bestanden
Om de nauwkeurigheid van het ontwikkelde positioneringssysteem te kunnen analyseren, worden de gemeten en berekende posities opgeslagen. Daarbij wordt gebruikt gemaakt van het gestandaardiseerde KML-formaat van Google 2 . Hierdoor kunnen de gegevens ook gebruikt worden in andere toepassingen die dit formaat ondersteunen. Zoals bijvoorbeeld Google Earth. Een KML-bestand is een tekstbestand op basis van xml-tags. Voor het opslaan van de posities wordt gebruik gemaakt van de Point- en LineString-tag. De Point-tag beschrijft een positie van een punt volgens zijn lengtegraad, breedtegraad en hoogte. Een LineString-tag beschrijft een traject en tekent een lijn tussen opeenvolgende koppels van posities. Hieronder een voorbeeld. 2 0 1 2 . 1 1 . 2 2 T 15 : 1 0 : 4 6 : −− 2 0 1 2 . 1 1 . 2 2 T 15 : 1 6 : 3 8< /name> <MultiGeometry> 3.701691587941992 ,51.031360130593015 ,0.0 3 . 7 0 1 5 0 0 3 5 6 9 4 6 8 8 5 6 , 5 1 . 0 3 1 3 6 7 2 3 8 7 8 1 9 9 6 , 0 . 0< / c o o r d i n a t e s> L i n e S t r i n g> MultiGeometry> Placemark> 15 : 1 0 : 4 6 3 . 7 0 1 6 9 1 5 8 7 9 4 1 9 9 2 , 5 1 . 0 3 1 3 6 0 1 3 0 5 9 3 0 1 5 , 0 . 0 c o o r d i n a t e s> P o i n t> Placemark> 15 : 1 0 : 4 8 3 . 7 0 1 5 0 0 3 5 6 9 4 6 8 8 5 6 , 5 1 . 0 3 1 3 6 7 2 3 8 7 8 1 9 9 6 , 0 . 0 c o o r d i n a t e s> P o i n t> Placemark>
Listing 4.8: KML voorbeeld. In Google Earth heeft dit het resultaat zoals in Figuur 4.10. Daar wordt de LineString voorgesteld door de zwarte lijn tussen de 2 gele spelden. Elke gele speld is een Point. Om dit gemakkelijk te kunnen uitvoeren is een klasse KMLLocationLogger voorzien. Het klassenschema is te zien in Figuur 4.11. Om een waarde aan een bestand toe te voegen is het enkel nodig om de add-methode op te roepen met als parameter een Location-object. Het loggen kan gepauzeerd, gestopt en herstart worden. als het loggen gestopt wordt zal een nieuw bestand 2 Meer informatie over documentation/kmlreference
het
formaat
zie
https://developers.google.com/kml/
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
48
Figuur 4.10: KML voorbeeld. worden gemaakt bij het opnieuw starten. De gegevens worden op de SD-kaart van de smartphone opgeslagen in de map /sdcard/Android/data/be.lamosca. Elk bestand heeft een aanduiding in de bestandsnaam van de tijd wanneer het aangemaakt is.
Figuur 4.11: De logger naar KML voor de posities.
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
4.1.6
49
Frontend
Het grondplan wordt recht op het scherm van de smartphone getoond. Hierbij zijn de hoekpunten gegeven in GPS-co¨ordinaten ten opzichte van de aarde. De gegenereerde co¨ ordinaten moeten dus omgevormd worden naar pixels om op de juiste plaats op het scherm van de smartphone getoond te worden. Daarbij moet rekening worden gehouden met de rotatie en schaling van het grondplan ten opzichte van het scherm van de smartphone. Zoals ge¨ıllustreerd is in Figuur 4.12. Daarbij stellen de rode lijnen het assenstelsel van het scherm en het grondplan
Figuur 4.12: Rotatie van de kaart ten opzichte van het scherm. voor en de blauwe lijnen het assenstelsel van de aarde. Het nulpunt van de assenstelsels wordt gekozen in de linkerbovenhoek van het grondplan. Punt A en punt B zijn de gekende co¨ ordinaten van de noordwesthoek respectievelijk de zuidoosthoek, zie Hoofstuk 3.1.1. Rotatie Eerst wordt de hoek α bepaald van de diagonaal, de lijn tussen punt A en punt B, op het grondplan. Daarna wordt de hoek β bepaald van de diagonaal in het aardse assenstelsel. Uit deze twee hoeken wordt de rotatie Θ van het aardse assenstelsel ten opzichte van het grondplan berekend. Schaling Voor de schaling wordt gebruik gemaakt van het aantal pixels van de diagonaal van het grondplan op het scherm, dat bepaald wordt, en de gekende afstand tussen de punten A en B uitgedrukt in meter. Uit deze twee waarden wordt een transformatiefactor berekend die het aantal meter omzet in het aantal pixels op het scherm. Om een punt P op het scherm weer te geven moeten zijn co¨ordinaten ten opzichte van het aardse assenstelsel worden omgezet. Dit is ge¨ıllustreerd in Figuur 4.13. Deze omvorming kan eenvoudig in poolco¨ordinaten. Is P (r, α) de voorstelling van een punt tegenover het aardse assenstelsel, dan is P (r, α + Θ) de voorstelling van een punt tegenover het schermassenstelsel. De x- en y-componenten worden vervolgens omgerekend tot pixelwaarden met de eerder
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
50
Figuur 4.13: Icoon positioneren op de kaart.
berekende transformatiefactor. Android bevat enkele functies om de berekeningen gemakkelijk uit te voeren: • Zo wordt de afstand in meter tussen twee gps-co¨ordinaten verkregen door de methode Location.distanceTo(Location) van het Location-object op te roepen, waarbij elk Location-object een gps-co¨ordinaten voorstelt. • De hoek tussen twee gps-co¨ordinaten kan verkregen worden door de methode Location.bearingTo(Location) van het Location-object op te roepen. Het klasseschema is te vinden in Bijlage C.3. De onLocationChanged-methode is de implementatie van de PositioningEngineListener. Hier wordt het Locationobject verwerkt voor weergave op het scherm.
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
4.1.7
51
Resultaat
Enkele voorbeelden van de applicatie zijn te zien in Figuur 4.14. Het roze icoon toont de positie van de gebruiker. Dit icoon draait zich in de richting van de gebruiker. Het grondplan van het gebouw kan verplaatst, vergroot en verkleind worden. In het menu is een Reset-optie beschikbaar. Deze zorgt ervoor dat het positioneringssysteem herstart. Er zijn ook opties om de posities op te slaan en de positionering met de Sensoren en de Wifi aan of uit te schakelen. Als geen positie bepaald kan worden zal het roze icoon blijven staan in de linkerbovenhoek, of als de positie buiten het bereik van het grondplan gaat, zal het roze icoon niet meer zichtbaar zijn op het scherm.
Figuur 4.14: Positiebepaling.
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
4.2
52
Analyseren van de metingen
Voor de analyse van de KML-gegevens is gekozen om een Java-applicatie te maken. Een voorbeeld is te zien in Figuur 4.15.
Figuur 4.15: Analyse programma.
Deze applicatie vraagt een output-folder voor de Excel-bestanden en leest twee KML-bestanden in, voor meer info over KML-bestanden zie Hoofstuk 4.1.5: Referentiepunt Een KML-bestand dat ´e´en Placemark-tag bevat, met een Point-tag in, dat het referentiepunt beschrijft. Metingen Een KML-bestand dat ´e´en of meerdere Placemark-tags bevatten, die elk een Point-tag heeft. Elke Placemark staat voor ´e´en meting. Een voorbeeld van beide bestanden is te vinden in Bijlage B.4 en B.5. Omdat een KML-bestand afgeleid is van een xml-bestand, kan dit ingelezen worden zoals een xml-bestand. Na het inlezen wordt voor elk meetpunt de afwijking tegenover het referentiepunt bepaald, uitgedrukt in meter. Van deze resultaten wordt een grafiek gegenereerd en deze wordt samen met de afwijkingen ge¨exporteerd naar een Excel-bestand. Een voorbeeld van dit Excel-bestand is te zien in Figuur 4.16. De grafiek wordt gegenereerd met de JFreeChart-bibliotheek 3 en het Excel-bestand wordt gegenereerd met de JEXCEL-bibliotheek 4 . Het klassendiagram is te vinden in Bijlage C.4.
3 http://www.jfree.org/jfreechart/index.html 4 http://jexcelapi.sourceforge.net
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
53
Figuur 4.16: Voorbeeld van analyseresultaat.
4.2.1
Resultaat
Door het stopzetten van de ondersteuning voor de gebruikte API van Qubulus is het niet mogelijk om alle situaties te meten, maar het is wel mogelijk om de beschikbare meetresultaten te gebruiken voor de analyse. De volgende resultaten zijn gemeten op een donderdag tijdens de lessen. Grafiek 4.17 toont de verschillende meetresultaten van het gelijkvloers. Op de horizontale as staan
Figuur 4.17: Analysedata
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
54
bereiken met afwijkingen in meter in stappen van 0,2 meter. Op de linkse verticale as staan het aantal metingen die overeenkomen met het bereik. De rechtse verticale as heeft het totale percentage van de meetpunten die geanalyseerd zijn weer die in dat bereik of lager zitten. Uit deze grafiek is af te leiden dat 53,33% van de gemeten punten binnen de 5 meter afwijking liggen en dat 75,55% binnen de 10 meter afwijking. Maar er is ook uit af te leiden dat 14,44% boven de 20 meter afwijking zitten. Bij een verdere analyse van de meetwaarden door de grafiek en waarden van de aparte meetpunten te bekijken, kunnen de plaatsen met problemen vastgesteld worden. Een probleempunt heeft een resultaat zoals rechts op Figuur 4.18 en een goed punt heeft een resultaat zoals links op die figuur. Uit deze verdere analyse is af te leiden dat probleempunten zich bij referentiepunten 1 tot 3, 17, 18 en 24 op Figuur 3.15. Punten 1, 2, 3 en 24 liggen op het einde van een gang wat kan indiceren dat het wifi-signaal op die plaats niet sterk genoeg is of dat de initi¨ele meting niet goed gedaan is, ook punten 17 en 18 liggen bij elkaar in de buurt.
Figuur 4.18: Voorbeeld van een referentiepunt met goede en met slechte metingen.
HOOFDSTUK 4. UITWERKING EN IMPLEMENTATIE
4.3
55
Besluit
Na het analyseren van de gemeten punten ten tegenover de referentiepunten voor ´e´en van de situaties kan worden vastgesteld dat de helft van de geanalyseerde punten binnen de opgelegde 5 meter liggen in die situatie. Dit is niet wat verwacht werd, maar dit kan een vertekend beeld geven door de beperkte analysegegevens. Bij de probleempunten kan een herinitialisatie uitgevoerd worden om dat probleem misschien te verhelpen of kan een automatische handeling ingebouwd worden waarbij bij probleemzones wordt overgeschakeld op sensoren alleen. De applicatie doet het beter dan GPS, maar is niet voldoende voor een positiebepaling in een gebouw. Een belangrijke vermelding is dat het afhankelijk is van de ondersteuning door het externe bedrijf en dat een systeem daardoor snel inactief kan zijn.
Besluit Uit de analyse van de beschikbare systemen is af te leiden dat de installatie van de nodige infrastructuur op de locaties de grootste moeilijkheid is. Daarbij zijn systemen die op bestaande of licht gewijzigde infrastructuur werken een grote hulp om dat probleem te omzeilen. Er bestaan systemen die heel nauwkeurig zijn, tot op enkele tientallen centimeters, maar deze hebben dan een hoge kostprijs. Daardoor is gezocht voor een compromis tussen kostprijs en nauwkeurigheid en is gekozen voor een oplossing op basis van bestaande Wifi-netwerken. Dit heeft als voordeel dat er een besparing is op de hardware, maar dat de nauwkeurigheid zich vooral onder de 10 meter bevindt. Dit is veel beter dan de nauwkeurigheid van 30 meter voor GPS-systemen. Daardoor zal het spel moeten worden aangepast aan de nauwkeurigheid van het ontworpen systeem. Uit de analyse is ook vastgesteld dat bijna alle oplossing voor smartphones ontwikkeld zijn voor het besturingssysteem Android versie 2.3 of hoger. En omdat Android een open systeem is waar alle gegevens makkelijk opgeroepen kunnen worden. Dit in tegenstelling tot Apple dat de toegang tot Wifi op zijn iPhone’s beperkt, waardoor geen voldoende gegevens kunnen opgeroepen worden voor een degelijke positiebepaling. Uit de gesprekken met verschillende bedrijven is duidelijk geworden dat een spel alleen waarschijnlijk commercieel niet voldoende zal zijn, en dat daar extra functionaliteiten moeten bijgevoegd worden. Voorbeelden van extra functionaliteit zijn: traceren van personeel en materiaal, bewakings- en beveiligingstoepassingen, navigatie, enz. De applicatie is ontwikkeld in Android 2.3.3 en heeft, bij de analyse van de beperkte meetresultaten, een nauwkeurigheid van 53,33% onder de 5 meter en 75,55% onder de 10 meter. Maar dit is afhankelijk van de dekking van het Wifi-signaal in het gebouw en de kwaliteit van de initi¨ele meting. Zo kan op plaatsen waar er een zwak Wifi-signaal ontvangen wordt of een slechte initi¨ele meting uitgevoerd is een afwijking boven de 20 meter optreden. Een belangrijk nadeel is dat een externe service wordt aangesproken die niet in eigen beheer is. Daardoor is deze oplossing afhankelijk van beslissingen van de eigenaar van die service. De resultaten zijn niet binnen de verwachtingen en bieden een indicatie van wat verwacht kan worden van de huidige technologie¨en en technieken. Dit kan daarbij een hulp zijn naar het bedenken van een spel voor indoor positionering.
56
Literatuurlijst [1] Kolodziej, K. W. & Hjelm, J. (2006). Local Positioning Systems. CRC Press. [2] Cisco Systems, Inc. (2008). Wi-Fi Location-Based Services 4.1 Design Guide. [3] Hui Liu et al. (2007). Survey of Wireless Indoor Positioning Techniques and Systems. IEEE Systems, Man, and Cybernetics, Part C, Vol. 37, Nr. 6, pp. 1067-1080. [4] Steele, J. & To, N. (2011). The Android Developer’s Cookbook. New York: Addison-Wesley. [5] Liu, Y. & Yang, Z. (2011). Location, Localization, and Localizability. Springer.
[6] Nielandt, Z. (2010). Ekahau HeatMapper: Wifi in kaart. Geraadpleegd op 19 oktober 2011 via http://www.zdnet.be/downloads/115958/ekahauheatmapper/. [7] Towards a fully global system? (2010). Geraadpleegd op 19 september 2011 via http://www.application-days.eu/presentations/day2/lbs/8.insitio.pdf. [8] Langley, R. (2010). A Prototype System for Navigation in GPSChallenged Environments. Geraadpleegd op 23 september 2011 via http://www.gpsworld.com/gnss-system/algorithms-methods/innovationhybrid-positioning-9628. [9] Leica Geosystems Mining Partners with Locata on Jigsaw (2011). Geraadpleegd op 23 september 2011 via http://www.gpsworld.com/machinecontrol-ag/mining/news/leica-geosystems-mining-partners-locata-jigsaw12089. [10] http://thenokiablog.com/2011/11/29/nokia-research-indoor-mapping. Geraadpleegd op 12 maart 2012. [11] Woodward, C. (2011).Point Inside’s GPS for Shoppers Grows Revenue, Looks for More Investment. Geraadpleegd op 23 september 2011 via http://www.xconomy.com/seattle/2011/08/18/point-inside
57
LITERATUURLIJST
58
[12] Is indoor mapping set to emerge as the anchor for contextually relevant and timely information? (2011). Geraadpleegd op 23 september 2011 via http://www.thewherebusiness.com/ubiquitouslocation/interviewsdl.shtml. [13] Indoor Positioning Company Qubulus First To Solve Vertical Positioning With QPS (2011). Geraadpleegd op 19 september 2011 via http://qubulus.pressdoc.com/16421-indoor-positioning-company-qubulusfirst-to-solve-vertical-positioning-with-qps. [14] Meet Qubulus: location based work force support [Video interview] (2011). Geraadpleegd op 19 september 2011 via http://thenextweb.com/eu/2011/05/02/meet-qubulus-location-basedwork-force-support-video-interview-tnw2011/. [15] Scott, N. (2011). Qubulus: Indoor positioning is here whether you like it or not. Geraadpleegd op 19 september 2011 via http://venturebeat.com/2011/04/28/qubulus-indoor-positioning-is-herewhether-you-like-it-or-not/.
[16] http://www.aeroscout.com. Geraadpleegd op 22 september 2011. [17] http://www.buzbynetworks.com. Geraadpleegd op 22 september 2011. [18] http://www.combain.com. Geraadpleegd op 20 september 2011. [19] http://geoweb.crs4.it. Geraadpleegd op 23 september 2011. [20] http://www.csr.com/markets/mobile-operators. Geraadpleegd op 20 september 2011. [21] http://www.ekahau.com. Geraadpleegd op 16 september 2011. [22] http://www.glopos.com. Geraadpleegd op 19 september 2011. [23] http://www.insiteo.com/?lang=en. Geraadpleegd op 19 september 2011. [24] http://www.locatacorp.com. Geraadpleegd op 19 september 2011. [25] http://www.nav4indoor.com. Geraadpleegd op 20 september 2011. [26] http://www.navizon.com. Geraadpleegd op 16 september 2011. [27] http://www.omnisense.co.uk. Geraadpleegd op 22 september 2011. [28] http://www.plus-ls.com/. Geraadpleegd op 22 september 2011. [29] http://www.pointinside.com. Geraadpleegd op 16 september 2011. [30] http://www.polestar.eu/en/. Geraadpleegd op 19 september 2011. [31] http://www.qubulus.com. Geraadpleegd op 19 september 2011. [32] http://redpin.org. Geraadpleegd op 21 september 2011.
LITERATUURLIJST
59
[33] http://www.safe-link.com. Geraadpleegd op 22 september 2011. [34] http://www.senionlab.com. Geraadpleegd op 12 oktober 2011. [35] http://www.sensorplatforms.com. Geraadpleegd op 20 september 2011. [36] http://www.skyhookwireless.com. Geraadpleegd op 16 september 2011. [37] http://www.ssf.fi/pages/index.php?fid=40&pid=4. Geraadpleegd op 22 september 2011. [38] http://www.teldio.com/zonith/indoor positioning. Geraadpleegd op 21 september 2011. [39] http://www.ubisense.net/en/. Geraadpleegd op 19 september 2011. [40] http://www.zigbee.org. Geraadpleegd op 26 maart 2012. [41] http://www.zonith.com/products/ips/. Geraadpleegd op 21 september 2011.
[42] GloPos - A Revolution in Indoor Positioning (2009). Geraadpleegd op 19 oktober 2011 via http://www.youtube.com/watch?v=K0fDXcfo- 4. [43] 2010 12 Baudis (2010). Geraadpleegd op 19 september 2011 via http://www.youtube.com/watch?v=jfBgyZP2P8c. [44] Navizon Indoor Triangulation System Live king (2010). Geraadpleegd op 19 oktober 2011 http://www.youtube.com/watch?v=KMcNQfO9Uq4&NR=1.
tracvia
[45] NAO Campus on Android: The First Indoor Location Solution that the Market Expected (2010). Geraadpleegd op 19 september 2011 via http://www.youtube.com/watch?v= lRUr0UaRjk. [46] The LocLizard Platform Hansa Mall (2011). Geraadpleegd op 19 september http://www.youtube.com/watch?v=xmLJTHGPnf0.
App 2011
Demo via
[47] Qubulus Gecko Live Demo (2010). Geraadpleegd op 19 september 2011 via http://www.youtube.com/watch?v=EiCrA5DiEoY. [48] Qubulus Presentation (2011). Geraadpleegd op 19 september 2011 via http://www.youtube.com/watch?v=3DKk52aJHiI. [49] BMW (2011). Geraadpleegd op 19 september http://www.youtube.com/watch?v=WHRzKufkAlQ.
2011
via
60
BIJLAGE A. AFBEELDING GOOGLE MAPS
Bijlage A
Afbeelding Google Maps
61
Bijlage B
Codevoorbeelden B.1
Ophalen van rotatiegegevens op een Android smartphone
Figuur B.1: Ophalen van rotatiegegevens van een Android smartphone.
62
BIJLAGE B. CODEVOORBEELDEN
B.2
63
Ophalen van versnellingsgegevens op een Android smartphone
Figuur B.2: Ophalen van versnellingsgegevens van een Android smartphone.
BIJLAGE B. CODEVOORBEELDEN
B.3
64
Combinatiemethode van de positiebepalingssytemen
Figuur B.3: Combinatiemethode van de positiebepalingssystemen.
BIJLAGE B. CODEVOORBEELDEN
B.4
KML referentiepunt voorbeeld
Figuur B.4: Voorbeeld van een KML-bestand met een referentiepunt.
65
BIJLAGE B. CODEVOORBEELDEN
B.5
KML metingen voorbeeld
Figuur B.5: Voorbeeld van een KML-bestand met metingen.
66
Bijlage C
Diagrammen C.1
Android: levensloop van een Activity
Figuur C.1: Levensloop van een Activity in Android met indicatie van de opgeroepen functies. (Bron: [4]).
67
BIJLAGE C. DIAGRAMMEN
C.2
Klassendiagram
Figuur C.2: Klassendiagram van de applicatie.
68
BIJLAGE C. DIAGRAMMEN
C.3
Klasseschema van de frontend
Figuur C.3: klasse LamoscaIndoorActivity.
69
BIJLAGE C. DIAGRAMMEN
C.4
Klasseschema van het analyseprogramma
Figuur C.4: Klassendiagram
70
Bijlage D
Verslagen van gesprekken D.1
Verslag van het gesprek met AeroScout
Hieronder volgt een samenvatting van het gesprek met Wim Verduyn, de Senior Key Account Manager bij Phi Data, een Belgische verdeler van AeroScout. Dit gesprek vond plaats op 28 februari 2012 in het kantoor van La mosca, Ferdinand Lousbergskaai 117, 9000 Gent.
AeroScout is een Amerikaans bedrijf dat een systeem heeft ontwikkeld voor indoor positionering in samenwerking met Cisco. Het systeem werkt hoofdzakelijk op basis van Wifi met de RSSI- en TDOA-methodes. Daarvoor zijn minstens 3 zenders nodig om de positionering in 3D te verkrijgen. Om de verschillende verdiepingen te detecteren maken ze gebruik van exciters. Dit zijn labels op lage frequentie die gebruik maken van proximity. Door deze labels aan alle in-/uitgangen te plaatsen kan gedetecteerd worden wanneer iemand een verdieping binnenkomt of verlaat. Gewone Wifi-clients kunnen gedetecteerd worden maar ook specifieke Wifi-labels, die op andere toestellen bevestigd worden. Dit kan gecombineerd worden met GPS, UWB, Ultrasound, enz. om een hogere nauwkeurigheid te bekomen. Bij een installatie worden eerst een paar stappen doorlopen: • Eerst wordt de locatie ge¨ınspecteerd. Daarbij wordt gecontroleerd of het bestaande netwerk voldoende is of dat het noodzakelijk is om extra routers te plaatsen. Deze routers moeten van hoge kwaliteit zijn, zoals: Ruckus, Motorola, Cisco, enz. Een router heeft enkel een netwerkkabel nodig waarbij het gebruik maakt van Power Over Ethernet (POE) voor de stroom en automatisch een meshnetwerk1 opzet. 1 Dit is een netwerk waarbij elke zender zijn eigen data verwerkt en de data van andere zender doorstuurt naar andere zenders op het netwerk.
71
BIJLAGE D. VERSLAGEN VAN GESPREKKEN
72
• Daarna wordt een offerte opgesteld. • Na het goedkeuren van de offerte wordt over gegaan tot de installatie van de routers en de server. • Na de installatie wordt de software klaargezet. Met het programma Mobile View kan elk toestel en label gevolgd worden op een kaart. • De software bevat een API die kan gebruikt worden om een eigen toepassing te maken. Het behaalt een nauwkeurigheid van 3 tot 10 m, alleen gebruik makend van Wifi. Dit kan verbeterd worden tot 30cm met behulp van UWB en andere technologie¨en. De kostprijs van het systeem is afhankelijk van het aantal routers, tags en gebruikers. Een systeem voor 20 gebruikers heeft een eenmalige kost van ongeveer e600 voor de server en de software. Een systeem voor 100 gebruikers heeft een eenmalige kost van ongeveer e26 500. Jaarlijks moet 18% van de aankoopprijs betaald worden voor upgrades en support. Een router kost ongeveer e600 en ´e´en tag kost ongeveer e65.
BIJLAGE D. VERSLAGEN VAN GESPREKKEN
D.2
73
Verslag van het gesprek met Nokia
Hieronder volgt een samenvatting van het gesprek met Jurgen Caeyman, de Business Development Manager EMEA bij Nokia Location & Commerce. Dit gesprek vond plaats op 22 maart 2012 in het kantoor van La mosca, Ferdinand Lousbergskaai 117, 9000 Gent.
Nokia is een Fins bedrijf dat zit vooral bezig houdt met GSM’s, smartphones en andere mobiele zaken. Het systeem dat zij gebruiken voor indoor positionering zit nog in de testfase, maar krijgt veel interesse van andere bedrijven. Het systeem noemt Hight Accuracy Indoor Positioning (HAIP). HAIP werkt op basis van Bluetooth 4 met behulp van de AoA-methode. De zender heeft een conisch uitzendgebied. Met behulp van ´e´en zender kan al een 2D positie vastgelegd worden, als de ontvanger op een bepaalde hoogte verwacht wordt, en met twee zenders kan al een 3D positie bepaald worden. In een demo-opstelling heeft men een nauwkeurigheid van 10 ` a 15 cm behaald met een heel hoge betrouwbaarheid. [10] Nauwkeurigheid Betrouwbaarheid Robuust Real-Time Compatibiliteit Low-Cost Schaalbaar
Tot 10 cm Heel hoog, zelf als het buiten de opgelegde limieten gaat is de afwijking klein. Er kunnen tot 100 toestellen gepositioneerd worden per locatie. De positie wordt in real-time berekend en weergegeven. Er is een API voor Symbian en MeeGo, en er bestaat een HTML5 webservice. Een zender kost e400 en een label kost tussen de e10 `a e15. Bij het plaatsen van bijkomende zenders moet een ethernetkabel aangesloten worden.
Tabel D.1: De eigenschappen van het systeem van Nokia. Het systeem wordt ge¨ınstalleerd op verschillende locaties in Europa in het derde kwartaal van 2012. Voorlopig moet nog een extra label aan de smartphone geplaatst worden, maar dit zal vervallen bij Bluetooth versie 4.1.
BIJLAGE D. VERSLAGEN VAN GESPREKKEN
D.3
74
Verslag van het gesprek met Safelink
Hieronder volgt een samenvatting van het gesprek met Andy Zomaya, de President bij Safelink Partners. Dit gesprek vond plaats via Skype op 22 maart 2012 in het kantoor van La mosca, Ferdinand Lousbergskaai 117, 9000 Gent.
Safelink is een Amerikaans bedrijf dat indoor positionering realiseert op basis van FM en AM radiosignalen. Daarvoor wordt het spectrum van de commerci¨ele zenders geanalyseerd. Op plaatsen waar geen zenders zijn, kunnen licentie vrije zenders geplaatst worden. Er zijn drie verschillende implementaties voor de ontvanger: • Een hardware module die gekoppeld kan worden aan een laptop of smartphone. • Een specifieke module die volledig op zichzelf werkt. • Een firmware upgrade voor laptops en smartphones die een ingebouwde radio-ontvanger hebben. De nauwkeurigheid is beter dan gps en er wordt zeker 5 m gegarandeerd, zelfs door betonnen muren. Op dit ogenblik is dit bedrijf op zoek naar voldoende klanten of aanvragen om daarmee naar een fabrikant te gaan die de hardware wil miniaturiseren en inbouwen in smartphones. Dit kan in de toekomst wel interessant worden om te integreren in het project.
BIJLAGE D. VERSLAGEN VAN GESPREKKEN
D.4
75
Verslag van het gesprek met De Jeager Automation
Hieronder volgt een samenvatting van het gesprek met Patrick Dejeager. Dit gesprek vond plaats op 9 december 2011 in het kantoor van De Jeager Automation, Hendrik Consciencelaan 79, 9950 Waarschoot.
De Jeager Automation is een verdeler van het Britse Ubisense in de Benelux. De positiebepaling die zij aanbieden is op basis van Ultra-Wide Band. Daarvoor is een installatie van een bedraad UWB-netwerk nodig dat verbonden is met een server en zijn er zenders nodig, ter grootte van een grote knop, om een toestel of persoon te traceren. De methode die toegepast wordt is een combinatie van AoA en TDoA. Daarmee kan een nauwkeurige positiebepaling gedaan worden tot op een halve meter. Het nadeel is dat het gevoelig is voor obstakels en dat daarvoor het UWB-netwerk moet aangepast worden. De volledige opstelling kan gedaan worden door De Jeager, waarbij zij de omgeving bestuderen en bepalen hoeveel sensoren moeten geplaatst worden en waar deze moeten komen. Een opstelling bestaat uit volgende elementen: Het UWB netwerk Dit bevat de sensoren en het bedraad netwerk. Een sensor heeft een kostprijs tussen e3000 en e3500. De software is inbegrepen in de prijs. De server Daarop draait de software die de sensoren en zenders beheert. De zenders Een zender kost e65. Als een zender in het bereik komt van een sensor vraagt de sensor een signaal van de zender. Dit systeem is moeilijk uitbreidbaar omdat het netwerk daarvoor moet uitgebreid worden. Het vereist ook dat een gebruiker een extra item, de zender, bij zich heeft naast de smartphone.
Bijlage E
Verslagen van e-mails E.1
Senionlab
Hier volgt een verslag van de communicatie via e-mail met Peter Bunus, [email protected], Director of Business Development bij SenionLab AB.
SenionLab is voorlopig enkel actief in America, maar heeft al onderhandelingen gestart met Europese bedrijven om hun oplossing in winkelcentra, luchthavens en musea te kunnen plaatsen. Het heeft een indoor positioneringsmethode die de sensoren van de smartphone combineert met Wifi-fingerprinting. Bij een goede opstelling met minimum twee Access-Points en voldoende metingen kan een nauwkeurigheid van drie tot zeven meter worden bereikt. Het bedrijf voorziet in een API om hun systeem aan te spreken, maar ze voorzien zelf niet in volledig werkende applicaties. De API is compatibel met Android en iOS, maar bij iOS zijn er beperkingen bij het aanspreken van de Wifi-signaalsterkte. Deze API, met de volledige documentatie en een voorbeeld, is beschikbaar na een licentieovereenkomst die jaarlijks moet worden betaald. Het bedrag van de licentie is afhankelijk van de grote van de locatie en het aantal gebruikers. De licentie is inclusief onderhoudskosten. Om een voorbeeld te geven: voor een winkel ter grootte van IKEA en een ongelimiteerd aantal gebruikers wordt jaarlijks een bedrag tussen de 30 000 en 50 000 USD aangerekend, inclusief onderhoud en upgrades van de software tijdens de duur van de licentie. Dit is het bedrag als het bedrijf zelf een bedrijf opzoekt om de applicatie te maken, de prijs die betaald wordt als de applicatie zelf wordt gemaakt is tussen de 25 en 35 procent van de totale ontwikkelingskosten. Het systeem kan gratis getest worden door een afbeelding of een pdf van een grondplan op te sturen. Aan de hand daarvan wordt een demoapplicatie gemaakt waarmee de Wifi-metingen kunnen uitgevoerd worden. 76
BIJLAGE E. VERSLAGEN VAN E-MAILS
E.2
77
Space Systems Finland
Hier volgt een verslag van de communicatie via e-mail met Veera Sylvius, [email protected], Manager Director bij Space Systems Finland.
Space Systems Finland heeft een systeem dat werkt op eigen ontworpen pseudolites. Met dit systeem kan in een open ruimte een nauwkeurigheid van enkele decimeters verkregen worden. Voor een opstelling zijn enkele pseudolites nodig, afhankelijk van de grootte van het gebouw, een basisstation en een ontvanger met NAVIndoor firmware. Bij gebouwen met veel muren en metalen constructies zullen meer pseudolites moeten geplaatst worden. Het is mogelijk om een positionering over verschillende verdiepingen te hebben, maar dan is een installatie per verdieping nodig. Dit omdat een LOS vereist is tussen de pseudolites en de ontvanger. Het is mogelijk om een eigen applicatie bovenop hun systeem te maken, omdat hun systeem enkel co¨ ordinaten doorstuurt. Een installatie van 6 pseudolites, heeft een kostprijs van e55 000.
een basisstation en een ontvanger