• No results found

Spoorzoekertje: Een augmented reality applicatie met nauwkeurige locatiebepaling door map matching in realtime

N/A
N/A
Protected

Academic year: 2021

Share "Spoorzoekertje: Een augmented reality applicatie met nauwkeurige locatiebepaling door map matching in realtime"

Copied!
32
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Bachelor Informatica

Spoorzoekertje: Een

augmen-ted reality applicatie met

nauw-keurige locatiebepaling door map

matching in realtime

Remy van der Vegt

8 juni 2018

Supervisor(s): dhr. dr. R.G. Belleman, dhr. dr. B. Bredeweg

Inf

orma

tica

Universiteit

v

an

Ams

terd

am

(2)
(3)

Samenvatting

Spoorzoekertje is een augmented reality (AR) applicatie voor smartphones waarmee speurtochten gedaan kunnen worden. Deze speurtochten bestaan uit aanwijzingen die op verschillende plekken in de wereld kunnen liggen. De aanwijzingen worden alleen laten zien, wanneer een speler in de buurt van de aanwijzing is. Dit kan gedaan worden met behulp van een Global Positioning System (GPS), maar een GPS kan in sommige gevallen onnauwkeurige locaties geven. Een methode die nauwkeurig de locatie van bepalen, is map matching. Bij deze methode worden co¨ordinaten verplaatst op het wegennetwerk. In deze scriptie wordt gekeken hoe map matching werkt, waarom het het betere locaties kan geven dan GPS en welke map matching methodes er bestaan. Met behulp van deze methodes is een realtime map matching algoritme ge¨ımplementeerd dat gebruik maakt van een Hidden Markov Model (HMM). In dit HMM wordt rekening gehouden met de ruis van GPS co¨ordinaten en de connectiviteit van het wegennetwerk. Deze implementatie is getest door te kijken wat het algoritme doet bij een recht pad en een pad met een bocht. Uit deze resultaten van deze experimenten blijkt dat de implementatie een locatie kan bepalen binnen een nauwkeurigheid van vier meter.

(4)
(5)

Inhoudsopgave

1 Introductie 7 2 Gerelateerd werk 9 3 Methode 11 3.1 Map Matching . . . 11 3.1.1 Dichtstbijzijnde weg . . . 11

3.1.2 Hidden Markov Model . . . 13

3.1.3 Viterbi Algoritme . . . 15 4 Implementatie 17 4.1 Spoorzoekertje . . . 17 4.2 Unity . . . 17 4.3 OpenStreetMap . . . 18 4.3.1 Mapbox . . . 19 4.4 Database . . . 20 5 Experimenten en resultaten 23 6 Discussie 27 7 Conclusie 29

(6)
(7)

HOOFDSTUK 1

Introductie

Augmented reality (AR) is een technologie dat computer-gegenereerde objecten of virtuele in-houd in de echte wereld integreert [12]. Om deze integratie te kunnen doen is een apparaat nodig dat op een beeldscherm de echte wereld kan laten zien. Verder is een software applicatie nodig om de virtuele objecten op deze beelden te laten zien. Deze twee benodigdheden kunnen ervoor zorgen alsof het lijkt dat een virtueel object zich in de echte wereld bevindt. Een veelgebruikt apparaat waar dit op gedaan kan worden is een smartphone.

Een populaire applicatie die gebruik maakt van augmented reality is Pokemon Go [10]. Het doel in dit spel is om virtuele karakters te zoeken en vangen op publieke locaties, zoals parken en woonwijken. Deze virtuele karakters worden met behulp van augmented reality geplaatst in de echte wereld. Dit is tevens de enige vorm van augmented reality aanwezig in de applicatie. Toch is het spel zeer populair. Dit komt vooral doordat het spel de wereld als een speelveld gebruikt [6]. Spelers worden naar publieke plekken getrokken, doordat daar veel virtuele karakters te vinden zijn. Dit had als gevolg dat mensen meer naar buiten gingen en daardoor ook fysiek gezonder werden [1].

Om verder te bouwen op idee van Pokemon Go om mensen meer naar te buiten te brengen, is een AR applicatie gebouwd genaamd Spoorzoekertje. Bij deze applicatie worden speurtochten uitgezet waarbij aanwijzingen gevolgd moeten worden. Deze aanwijzingen zijn 3D objecten die met behulp van AR op het scherm van de smartphone te zien zijn. Deze aanwijzingen kunnen zich op verschillende plekken in de wereld bevinden en worden laten zien wanneer een speler in de buurt van de aanwijzing komt. Door deze aanwijzingen te volgen kan een route afgelegd worden naar een eindpunt.

Een essentieel onderdeel voor de werking van Spoorzoekertje, is het bepalen van de locatie van de spelers. Zonder het bepalen van deze locaties zal nooit gekeken kunnen worden of een speler in de buurt van een aanwijzing is. Het kijken of een aanwijzing in de buurt is, zal vaak achter elkaar gedaan moeten worden. Het kan namelijk zijn dat na een paar meter lopen sinds de vorige locatie een aanwijzing in de buurt is. Daarom moet de locatie van een speler in realtime bepaald worden. De eenvoudigste manier om deze locatie in realtime te verkrijgen, is met behulp van een “Global positioning system” (GPS) op een smartphone. De locatie die hier uit komt kan echter onnauwkeurig zijn. De nauwkeurigheid van een GPS locatie is namelijk afhankelijk van het aantal satellieten die gebruikt worden en de signalen van deze satellieten kunnen deels of helemaal geblokkeerd worden [11].

Omdat GPS onnauwkeurige locaties kan geven, zal onderzoek gedaan moeten worden naar me-thodes om de nauwkeurigheid te verbeteren. In deze scriptie zal gekeken worden naar het gebruik van map matching methodes, waarbij de locaties van een GPS verplaatst worden naar wegen. Er is voor deze methode gekozen, omdat bij Spoorzoekertje wordt vanuit gegaan dat de aanwij-zingen in straten geplaatst worden en dat spelers door straten lopen om deze aanwijaanwij-zingen te

(8)

vinden. Doordat map matching algoritmes GPS locaties naar deze straten kan verplaatsen, lijkt map matching een ideale methode om een locatie te kunnen bepalen die nauwkeuriger is dan een GPS. Om deze reden luidt de hoofdvraag van dit onderzoek als volgt:

• Hoe kan een map matching algoritme in realtime een nauwkeurigere locatie bepalen dan een GPS?

Deze hoofdvraag kan verdeeld worden in de volgende drie deelvragen: • Hoe werkt map matching?

• Waarom kan map matching een betere methode zijn dan GPS? • Welke map matching methodes bestaan er?

Om de hoofdvraag te kunnen beantwoorden, zullen eerst de deelvragen beantwoord moeten wor-den. Deze scriptie zal daarom eerst bespreken wat map matching inhoudt. Vervolgens zal naar een paar map matching methodes gekeken worden die proberen om een locatie nauwkeurig te bepalen. Daarna zal dieper ingegaan worden op een enkele map matching methode. Daarna zal een variant van deze methode ge¨ımplementeerd worden om locaties in realtime te kunnen bepalen. vervolgens zal met de implementatie experimenten gedaan worden om te kijken of de implementatie nauwkeuriger is dan GPS.

(9)

HOOFDSTUK 2

Gerelateerd werk

Buiten map matching wordt ook onderzoek gedaan naar andere methodes voor het nauwkeurig bepalen van locaties. In principe kan het bepalen van locaties verdeeld worden in twee catego-rie¨en. De eerste categorie bestaat uit methodes voor het bepalen van locaties binnen gebouwen. Bij deze methodes is het vooral van belang dat de kleinste veranderingen in de beweging gezien kunnen worden [13]. Dit wordt vaak gedaan door middel van Wi-Fi access points (AP) [8, 20]. Hierbij wordt gekeken naar welke Wi-Fi AP’s in de buurt zijn en vervolgens kan behulp van trigonometrische functies de locatie bepaald worden.

Ook is voor binnen gebouwen onderzoek gedaan naar het gebruik van meerdere sensoren tege-lijkertijd, ook wel sensor fusie genoemd [18]. Bij sensor fusie wordt bijvoorbeeld een GPS en de versnellingsmeter van een smartphone gebruikt. De versnellingsmeter wordt dan gebruikt om een voorspelling te doen waar iemand zich bevindt. Deze voorspelling ondervindt echter pro-blemen in de vorm van een drift error. Dit houdt in dat de fouten die gemaakt worden bij de voorspellingen in de loop van de tijd bij elkaar opgeteld kunnen worden tot een grotere fout. De drift error de ruis van een GPS kunnen verholpen worden door een Kalman Filter toe te passen [2, 3].

De tweede categorie is het bepalen van locaties buiten gebouwen. Hier wordt vaak gekozen voor een hybride versie die voor binnen en buiten gebouwen werkt. Vaak wordt dan gebruik gemaakt van een methode die kijkt naar cellulaire netwerken [5]. Hierbij wordt dan gekeken wat de sterkte van signalen zijn die van een zendmast komen en aan de hand van die sterkte kan de afstand tot de zendmast bepaald worden. Verder is ook onderzoek gedaan naar het gebruik van sensor fusie buiten gebouwen, zoals in [7]. Uit dit onderzoek kwam dat sensor fusie zeer goed werkt op plekken waar een GPS minder nauwkeurig is.

(10)
(11)

HOOFDSTUK 3

Methode

3.1

Map Matching

Map matching is een methode waarbij locaties, die eerder bepaald of gemeten zijn, verplaatst worden naar een bepaalde soort infrastructuur, zoals wegen. Om locaties te verplaatsen naar een bepaalde infrastructuur, zal een aanname gemaakt moeten worden dat de werkelijke locatie van een persoon zich op deze infrastructuur bevindt [17, 19]. Een voorbeeld waar map matching veel gebruikt wordt is in navigatiesystemen. Hier worden de locaties van auto’s gemeten met een GPS en verplaatst naar een weg als een GPS co¨ordinaat niet op de weg ligt. Navigatiesystemen kunnen er vanuit gegaan dat auto’s altijd op wegen rijden en daarom is map matching een zeer geschikte methode voor navigatiesystemen. Voor Spoorzoekertje wordt de aanname gemaakt dat speurtochten worden opgezet door aanwijzingen in straten te zetten en dat een speler deze aanwijzingen vindt door middel van het lopen door straten. Dus voor Spoorzoekertje lijkt map matching ook een geschikte methode te zijn.

Om een positie in realtime te plaatsen op een weg, zal rekening gehouden moeten worden met de snelheid van het gebruikte algoritme [4, 15]. Als het matchen te lang duurt, dan kan het zijn dat te laat bepaald wordt dat een aanwijzing laten zien met worden. Een speler kan namelijk de aanwijzing voorbij gelopen zijn en niet meer achterom kijken. Hierdoor kan een speler wel-licht een essenti¨ele aanwijzing missen waarmee het einde van een speurtocht bereikt kan worden. Vaak zullen afwegingen gemaakt moeten worden tussen de nauwkeurigheid van het matchen en de snelheid waarmee het matchen gebeurt. Een map matching algoritme dat veel data analy-seert en daardoor zeer accuraat is, maar lang over uitvoeren doet, is bijvoorbeeld niet handig als iemand achter elkaar zijn huidige positie nodig heeft.

3.1.1

Dichtstbijzijnde weg

Misschien wel de snelste manier om map matching toe te passen, is door de weg te kiezen met de kleinste afstand tot de gemeten GPS locatie [17, 19]. De kleinste afstand is de loodrechte afstand van een GPS meting op de weg. Het punt dat zich op basis van deze afstand op de weg bevindt, is de locatie die bepaalt waar de persoon zich bevindt. Dit is te zien in figuur 3.1. In dit figuur is de afstand tussen de werkelijke positie en het GPS co¨ordinaat aangeduid als r en de afstand tussen werkelijke positie en bepaalde positie met d. In het geval dat een GPS meting op het verlengde van de weg ligt, zal de bepaalde positie gelijk zijn aan deze GPS meting. Afstand d is dan gelijk aan afstand r. In alle andere gevallen zal afstand d altijd kleiner zijn dan afstand r. In elk geval zal de bepaalde locatie gelijk of dichter bij de werkelijke locatie liggen dan het gemeten GPS co¨ordinaat. Dit hoeft echter niet te zeggen dat de bepaalde locatie nauwkeurig is. Een GPS co¨ordinaat kan namelijk zo ver van de werkelijke positie zijn, dat de bepaalde positie ook heel ver ligt.

(12)

Figuur 3.1: Locatiebepaling aan de hand van de kortste afstand van een GPS meting naar de weg.

in de buurt zijn. Dit wordt in figuur 3.2 aangeduid als stippellijnen die van een GPS co¨ordinaat naar een weg gaan. Zoals bij GPS co¨ordinaten 1 en 3 te zien is, is dat meerdere wegen dezelfde afstand hebben tot het GPS co¨ordinaat. Hierdoor kan een weg die niet op de afgelegde route ligt gekozen worden als dichtstbijzijnde weg. In dit geval bestaat de mogelijkheid dat de af-stand vanaf de werkelijke positie naar de bepaalde positie groter is dan de afaf-stand naar het GPS co¨ordinaat. De dichtstbijzijnde weg methode kan dus de locatiebepaling verminderen als veel wegen dicht bij elkaar liggen.

Figuur 3.2: Map matching aan de hand van dichtstbijzijnde weg methode. De rode punten en bijbehorende getallen zijn GPS metingen. De stippellijnen stellen de kortste afstand van een GPS meting naar een weg voor.

Bij spoorzoekertje is het idee dat de speurtochten vooral in steden en woonwijken gedaan worden. In deze gebieden liggen veel straten dicht bij elkaar, waardoor de mogelijkheid bestaat dat vaak de verkeerde weg gekozen wordt. Dit kan als gevolg een locatiebepaling geven die slechter is dan

(13)

simpelweg het GPS co¨ordinaat overnemen.

3.1.2

Hidden Markov Model

Het grootste probleem met de dichtstbijzijnde weg methode is dat te weinig informatie gebruikt wordt om de juiste weg te kiezen. Toch is een grote bron aan extra informatie beschikbaar die gebruikt kan worden. E´en mogelijkheid is om te kijken naar de richting van de weg en de richting van de speler. Als een speler in dezelfde richting staat als de weg, dan is de waarschijnlijkheid groter dat de speler zich op die weg bevindt dan op een weg in loodrechte richting.

Een andere informatiebron is het gebruik van eerdere metingen en bepalingen en de connectivi-teit van het wegennetwerk. Hier kan bijvoorbeeld gekeken worden op welke weg de speler zich eerst bevond. Als een speler een paar seconden later nog een meting doet, dan zal de speler zich waarschijnlijk nog steeds op dezelfde weg bevinden. Om met behulp van eerdere metingen en de connectiviteit tussen wegen een beter map matching resultaat te krijgen, kan door een Hidden Markov Model (HMM) te gebruiken [17]. Een HMM is een algoritme dat bestaat uit staten en transities tussen deze staten. Deze transitie geeft de waarschijnlijkheid aan dat een staat naar een andere staat gaat. Dit kan dus gebruikt worden om te kijken wat de waarschijnlijkheid is dat een speler vanaf zijn eerdere positie op een weg naar een andere weg gaat.

Om map matching toe te passen op een HMM, kunnen de wegen gezien worden als de staten van een HMM. Dit betekent dat de staten van een HMM de wegen ri, i = 1...Nr zijn, waarbij

Nr het aantal wegen is. Met behulp van een GPS co¨ordinaat zt, waarbij t een tijdsmoment is

van een GPS meting, kunnen de transities tussen de staten bepaald worden. In figuur 3.3 is een voorbeeld te zien van een HMM. Hier is te zien dat de staat r2 op tijdsmoment t = 1 transities

heeft naar de staten r1 en r3, maar ook zichzelf. Het is namelijk mogelijk dat een speler zich op

dezelfde weg bevindt als eerst, maar wel een aantal meter verder weg.

Figuur 3.3: Voorbeeld van een Hidden markov model.

De transities tussen de staten worden bepaald aan de hand van drie waardes. De eerste waarde is de waarde van de vorige staat. De tweede waarde is waarschijnlijkheid p(zt|ri) dat een gemeten

GPS co¨ordinaat bij een bepaalde staat hoort in die tijdstap. Om deze waarde te bepalen, is de afstand tussen het GPS co¨ordinaat en de dichtstbijzijnde positie op de weg nodig. De dichtst-bijzijnde positie op de weg ri in tijdstap t kan aangeduid worden als xt,i. Omdat de Aarde

bolvormig is, kan de afstand tussen twee punten berekend worden met de grootcirkel afstand1. De afstand tussen een GPS co¨ordinaat en het dichtstbijzijnde punt op een weg, wordt aangeduid

(14)

als ||zt− xt,i| |great circle.

Als aangenomen wordt dat xt,ide werkelijke locatie van een speler is, dan kan de afstand tussen

deze locatie en het GPS co¨ordinaat gezien worden als de ruis van een GPS. Volgens [17] kan deze ruis gezien worden als een normaalverdeling. Met deze informatie kan vervolgens de waarschijn-lijkheid p(zt|ri) berekend worden met vergelijking 3.1. Bij deze vergelijking zal een weg met een

kleinere afstand tot het GPS co¨ordinaat een hogere waarschijnlijkheid hebben. Deze vergelijking kan daarom gezien worden als een soort dichtstbijzijnde weg methode.

p(zt|ri) = 1 √ 2πσz e −0.5

k

zt−xt,i

k

great circle σz

!2

(3.1)

In vergelijking 3.1 zit nog ´e´en onbekende, namelijk de standaarddeviatie σz. Dit is de

standaard-deviatie van GPS metingen. Deze waarde is alleen te bepalen wanneer kennis beschikbaar is over de afwijking is van een GPS in een smartphone. Dit kan gedaan worden door veel GPS metingen te doen, terwijl de exacte locatie bekend is en kijken hoeveel elke meting afwijkt van de werkelijke locatie. Uit experimenten gedaan in [17] kwam een standaarddeviatie van 4.07 meter voor GPS metingen. Deze waarde zal ook later in de implementatie gebruikt worden.

De derde en laatste waarde die nodig is, is de transitie waarde. Deze waarde moet aangeven wat de waarschijnlijkheid is dat een speler zich van de ene weg naar een andere weg verplaatst. Elke meting zt kan bij meerdere wegen horen en hetzelfde geldt voor de meting zt+1. Het kan

dus zijn dat bij meting zt+1 de meest waarschijnlijke staat anders is. Als vanuit gegaan wordt

dat de tijd tussen twee metingen klein is, dus dat ook de afstand tussen twee metingen klein is, dan kan aangenomen worden dat de afgelegde afstand vrijwel hetzelfde is [17]. Dus de afstand tussen zt en zt+1is ongeveer gelijk aan de afstand tussen positie xt,i op weg ri en positie xt+1,j

op weg rj. De afstand tussen deze twee laatstgenoemde posities is geen rechte lijn tussen de twee

punten. Om van weg naar weg te gaan, moet soms om huizen heen gelopen worden, daardoor moet een weg gevolgd worden tot een kruispunt en daarna kan pas de straat ingelopen worden. De afstand wordt dus bepaald door een route over wegen en deze route afstand wordt aangeduid als ||xt,i− xt+1,j| |route.

Volgens experimenten gedaan in [17] blijkt dat het verschil tussen de route afstand en de groot-cirkel afstand van twee metingen bijna gelijk zijn bij juiste transities. Dit komt doordat de werkelijke afstand tussen twee tijdsmomenten zo klein is dat de route afstand in de meeste geval-len een rechte weg is. De route afstand kan dus in veel gevalgeval-len gezien worden als een grootcirkel afstand. Verder heeft [17] een histogram gemaakt van de verschillen tussen de twee afstanden op juiste matches. Hieruit bleek dat de verschillen goed op een exponenti¨ele distributie fitten. De vergelijking van deze distributie is te zien in vergelijking 3.2. In deze vergelijking is dt het

verschil tussen de route- en grootcirkel afstand en kan berekend worden met vergelijking 3.3. De β in de vergelijking geeft aan wat het vertrouwen is in de verschillen van de route- en grootcirkel afstanden en kan bepaald worden met vergelijking 3.4. Een hogere β betekent dat wegen die niet direct met elkaar verbonden zijn een hogere waarschijnlijkheid krijgen.

p(dt) = 1 βe −dt β (3.2)

d

t

=

||z

t

− x

t,i

||

great circle

− ||x

t,i

− x

t+1,j

||

route

(3.3)

β = 1

(15)

Nu alle benodigde waardes berekend of bepaald kunnen worden, moeten de waardes samenge-voegd worden om tot ´e´en resultaat te komen. Aangezien de waardes onafhankelijke waarschijn-lijkheden van elkaar zijn, kunnen de waardes volgens de algemene vermenigvuldigingsregel2, met

elkaar vermenigvuldigt worden tot ´e´en waarschijnlijkheid. De waarde die uit de vermenigvuldi-ging komt, is de waarschijnlijkheid dat een speler van de ene staat naar de andere staat gaat.

3.1.3

Viterbi Algoritme

Om de staat te kiezen waar een speler zich hoogstwaarschijnlijk in hte HMM bevindt, kan het Viterbi algoritme gebruikt worden [17]. Dit algoritme zoekt in een reeks van staten naar het pad van staten dat het meest waarschijnlijk is. In de map matching HMM wordt gekeken wat de meest waarschijnlijke reeks wegen is, die een speler heeft afgelegd om op positie xt,i te komen.

Het algoritme kijkt op elk tijdsmoment welke staat de grootste waarschijnlijkheid heeft. De waarschijnlijkheid van een staat wordt bepaald door de transitie vanaf de vorige staat. Deze waarde kan berekend worden door middel van de vergelijkingen 3.1 en 3.2 en de waarde van de vorige staat. Echter kunnen meerdere staten van de vorige tijdstap een transitie hebben naar een staat in de huidige tijdstap. Om de waarschijnlijkheid van een staat te bepalen, worden de transities van alle vorige staten naar de huidige staat met elkaar vergeleken. De transitie met de hoogste waarschijnlijkheid is het meest waarschijnlijke pad naar een staat. Het vergelijken van alle transities van vorige staten naar een huidige staat, wordt gedaan voor alle staten in de huidige tijdstap. Elke huidige staat weet daardoor het meest waarschijnlijke pad vanaf het begin tot hemzelf. Echter kan maar ´e´en van de huidige staten de locatie van een speler zijn. Om deze locatie te bepalen wordt de staat met de hoogste waarschijnlijkheid genomen.

In algoritme 1 is de pseudocode van het Viterbi algoritme te zien. In deze pseudocode houdt elke staat bij wat zijn vorige staat was. Hierdoor kan later gebruik gemaakt worden van “backtrac-king” om het afgelegde pad te krijgen. Voor Spoorzoekertje is niet belangrijk wat het afgelegde pad was, dus kan dat deel van het algoritme weggelaten worden. Het enige wat belangrijk is, is dat de waardes van de staten uit de vorige tijdstap bekend zijn om de huidige staten te be-rekenen. Deze waardes bevatten het meest waarschijnlijke pad tot nu toe in de vorm van een waarschijnlijkheid. Omdat deze waardes het gehele afgelegde pad voorstellen kunnen alle staten in oudere tijdstappen vergeten worden. Hierdoor zal de applicatie niet onnodig veel geheugen hoeven innemen, wanneer de applicatie veel metingen doet.

Om het Viterbi algoritme te starten, moeten de allereerste staten een waarschijnlijkheid gegeven worden. Omdat dit de eerste staten zijn, hebben deze staten geen transities naar zich toe. Ze moeten daarom een startwaarde gegeven worden, zoals in de eerste forloop van algoritme 1 gedaan wordt. Deze startwaarde kan bepaald worden met verschillende methodes, zoals een uniforme distributie. Voor het map matching algoritme is gekozen om deze waarde te bepalen aan de hand van vergelijking 3.1. Deze waarde wordt dus bepaald door de waarschijnlijkheid dat een GPS co¨ordinaat bij een weg hoort. Dit kan in sommige gevallen tot een verkeerde locatiebepaling leiden in de eerste tijdstap. Echter zal deze fout minder bepalend zijn, naarmate meer metingen gedaan worden. Dit komt doordat de fout met elke volgende meting steeds een kleiner onderdeel vormt van de gehele waarschijnlijkheid.

2

(16)

Algoritme 1 Pseudocode van het Viterbi algoritme1.

{O: Dit zijn GPS metingen in elke tijdstap.} {S: Dit zijn alle staten van het HMM.}

{Π: Dit zijn de initi¨ele waarschijnlijkheden voor elke staat in de eerste tijdstap.} {Y: Dit is een reeks met alle tijdstappen.}

{A: Dit is een matrix met alle p(dt) waardes voor elke transitie tussen wegen.}

{B: Dit is een matrix met alle p(zt|ri) waardes voor elke staat in elke tijdstap.}

{X: Dit is een reeks staten van het meest waarschijnlijke pad.} function VITERBI(O,S,Π,Y ,A,B) : X

for each state i ∈ {1, 2, ..., K} do T1[i, 1] ← πi· Biy1

T2[i, 1] ← 0

end for

for each observation i = 2, 3, ..., T do for each state j ∈ {1, 2, ..., K} do

T1[j, i] ← max k (T1[k, i − 1] · Akj· Bjyi) T2[j, i] ← argmax k (T1[k, i − 1] · Akj· Bjyi) end for end for zT ← argmax k (T1[k, T ]) xT ← szT for i ← T, T − 1, ..., 2 do zi−1← T2[zi, i] xi−1← szi−1 end for return X end function 1https://en.wikipedia.org/wiki/Viterbi_algorithm#Pseudocode

(17)

HOOFDSTUK 4

Implementatie

4.1

Spoorzoekertje

Spoorzoekertje bestaat voornamelijk uit twee delen. Het eerste deel is het bepalen van de locatie van een speler en het tweede deel is het plaatsen van virtuele objecten aan de hand van deze locatie en AR. In algoritme 2 is pseudocode te zien hoe Spoorzoekertje werkt en hoe deze twee onderdelen met elkaar samenwerken. Het idee achter het algoritme is dat bij het opstarten van de applicatie een connectie met een database wordt gemaakt. Dit is nodig om speurtochten en aanwijzingen op te slaan en op te vragen. Daarna zal, totdat de applicatie wordt gesloten, steeds de locatie van een speler bepaald worden. Nadat de locatie van een speler bepaald is, zal gekeken worden welke aanwijzingen in de buurt zijn. Als ´e´en of meerdere aanwijzingen in de buurt zijn, dan wordt aan de hand van de camerabeelden van de smartphone gekeken waar in het beeld de aanwijzing geplaatst moet worden.

Algoritme 2 Pseudocode van het Spoorzoekertje algoritme. database = Connect DB(DB name, DB host, user, passwd) while true do

LatLng pos = GetLocation()

Hint[] Hints = GetHints(pos, radius, database) Feat[] cam features = GetCameraFeatures() for all hint in Hints do

Object feature = MatchFeature(hint.features, cam features) if feature then

T[][] posture = GetPosture(feature, hint) DrawObject(hint, posture)

end if end for end while

4.2

Unity

Om Spoorzoekertje te kunnen implementeren, moet rekening gehouden worden met het opvragen van GPS co¨ordinaten en moeten camerabeelden gebruikt kunnen worden voor het plaatsen van virtuele objecten. In de engine van Unity1 zijn deze twee taken mogelijk. Voor Spoorzoekertje

(18)

was ook besloten om de applicatie voor Android apparaten te maken en dit is mogelijk met Unity. GPS metingen kunnen in Unity opgevraagd worden door middel van de “Input” klasse. Om GPS te kunnen gebruiken, moet deze eerst aangezet worden. Dit kan ook met de “Input” klasse. Wanneer GPS volledig opgestart is, kan op elk moment de locatie aangevraagd worden. De locatie wordt echter niet constant ge¨updatet. Dit gebeurt pas wanneer een bepaalde afstand afgelegd is sinds de vorige meting. Standaard is dit om de tien meter, maar tijdens het opstarten van GPS kan dit aangepast worden. Verder kan bij het opstarten van GPS de gewenste nauwkeurigheid van GPS meegegeven worden. Hierdoor kunnen de co¨ordinaten nauwkeuriger gemaakt worden, maar dit kan tot meer stroomverbruik leiden2. Standaard staat de nauwkeurigheid op tien meter.

4.3

OpenStreetMap

Om map matching toe te kunnen passen, is data nodig van het wegennetwerk. Deze data is nodig om te kunnen kijken wat het dichtstbijzijnde punt op een weg is. Ook is deze data nodig voor het bepalen van de route afstand ||xt,i− xt+1,j| |route tussen de wegen. Een API waar dit

mee opgelost kan worden, is de Google Maps API [9]. Met deze API kan de dichtstbijzijnde weg ten opzichte van een meegegeven co¨ordinaat bepaald worden. Voor het map matching algoritme zijn deze co¨ordinaten voor meerdere wegen nodig. De Google Maps API kan echter ´e´en weg per co¨ordinaat terugsturen. De dichtstbijzijnde wegen kunnen dus niet met de Google Maps API opgevraagd worden.

Wel kan de Google Maps API de route afstand berekenen voor meerdere co¨ordinaten in ´e´en aanvraag. Bij deze aanvraag kunnen maximaal 25 beginpunten en maximaal 25 eindpunten meegegeven worden. Hierbij worden de route afstanden berekend van alle beginpunten naar alle eindpunten. Echter kunnen maximaal 100 afstanden gevraagd worden. Hierdoor is het beste resultaat een 10 bij 10 matrix van route afstanden. Dit zou betekenen dat voor het map mat-ching algoritme alleen de route afstanden berekend kunnen worden van tien eerdere staten naar de tien nieuwe staten. Om meerdere staten te gebruiken, kunnen meerdere aanvragen gedaan worden. Echter kunnen maar 100 afstanden per seconde aangevraagd worden. Elke aanvraag extra zorgt ervoor dat het bepalen van de locatie van een speler een seconde langer duurt. Omdat de locatie in realtime zo snel mogelijk bepaald moet worden, zijn meerdere aanvragen geen optie. Naast de Google Maps API zijn ook andere methodes mogelijk om de benodigde data te ver-krijgen. Een andere bron van data is bijvoorbeeld OpenStreetMap3. OpenStreetMap is een data verzameling van geografische gegevens, zoals het wegennetwerk. In deze data is de locatie van wegen te vinden. De locatie van een weg wordt weergegeven als een “linestring”. Dit is een reeks van co¨ordinaten die de segmenten van een weg voorstellen. Als de weg recht is, zal deze “linestring” vaak uit twee co¨ordinaten bestaan. Wegen met een curve zullen vaak meerdere co¨ordinaten hebben die kleine lijnen over de curve voorstellen.

OpenStreetMap bestaat uit veel data, maar toch moet op een snelle manier de data eruit gehaald worden. Dit doet OpenStreetMap door de data op te splitsen in kleinere stukjes data. Deze stuk-jes data worden “vector tiles” genoemd. Een “vector tile” stelt een deel van het oppervlak van de Aarde voor. Alle geografische informatie op dat oppervlak wordt in de “tile” opgeslagen. Ook worden deze “vector tiles” in verschillende lagen opgeslagen. Elke laag bestaat uit vier keer meer “tiles” dan de vorige laag, maar elke tegel is daarentegen twee keer zo klein. Door dit systeem van “vector tiles” en lagen kunnen “vector tiles” aangevraagd worden die bestaan uit de wegen in de buurt van een co¨ordinaat. Hierdoor hoeft niet gezocht te worden tussen data over wegen die niet in de buurt liggen.

OpenStreetMap is echter alleen een data verzameling. Het biedt geen functionaliteit aan, zoals het aanvragen van route afstanden. Hiervoor kan gebruik gemaakt worden van een software pakket. Omdat Spoorzoekertje in Unity gemaakt wordt, is het aantal software pakketten beperkt.

2https://docs.unity3d.com/ScriptReference/LocationService.Start.html 3https://www.openstreetmap.org

(19)

Drie pakketten voor Unity zijn beschikbaar en worden nog onderhouden. Deze drie pakketten zijn Mapbox, Utymap en Map-ity. In tabel 4.1 is voor elk pakket te zien of de benodigde functionaliteit aanwezig is. Ook moet het pakket gratis zijn, zodat Spoorzoekertje goedkoper onderhouden kan worden. Het kunnen opvragen van een afstand matrix, met daarin de route afstanden tussen wegen, is niet essentieel. Voor deze functionaliteit kan namelijk de Google Maps API gebruikt worden.

Tabel 4.1: Vergelijking van verschillende Unity pakketten Gratis Wegen in de buurt Afstand Matrix Mapbox Ja, maar

gelimiteerd Ja, Ja Utymap Ja, maar

gelimiteerd Ja, alleen met tegels Nee Map-ity Nee Ja Nee

4.3.1

Mapbox

Mapbox [14] is gekozen als pakket om te gebruiken. Dit pakket is gratis en biedt alle benodigde functionaliteit. Mapbox kan gebruikt worden door middel van aanvragen te doen over het in-ternet. Ook biedt Mapbox de mogelijkheid aan om een Software Development Kit (SDK) te gebruiken voor Unity. Deze SDK bestaat uit klassen die de aanvragen kunnen doen. Hierdoor hoeft niet zelf een aanvraag opgebouwd te worden. Ook zijn er klassen in deze SDK beschikbaar voor de resultaten van de aanvraag. Hierdoor is de data overzichtelijker en kan makkelijker met de data gewerkt worden.

Met Mapbox zijn meerdere methodes mogelijk om wegen in de buurt op te vragen. De eerste me-thode is om “vetcor tiles” op te vragen die zich rondom een GPS co¨ordinaat bevinden. Uit deze “vector tiles” kunnen de wegen gehaald worden. Vervolgens kunnen de dichtstbijzijnde locaties op de wegen xt,i berekend worden. Een simpelere methode is door middel van de “Tilequery”

API van Mapbox. Met deze API kunnen wegen in een radius rondom een GPS co¨ordinaat opge-vraagd worden. Hier wordt ook het dichtstbijzijnde punt op de weg berekend en de afstand van dit punt naar het GPS co¨ordinaat. Deze methode levert dus de gewenste data in minder stappen. Om Mapbox gratis te gebruiken, zitten beperkingen aan het aantal aanvragen dat gedaan kunnen worden. In tabel 4.2 staan de beperkingen van de benodigde functies voor het aantal aanvragen per minuut en per maand. De afstand matrix heeft nog een extra beperking. Om de afstand matrix aan te vragen, kunnen maar 25 co¨ordinaten meegegeven worden. Deze 25 co¨ordinaten worden door de API zowel als begin- en eindpunt gebruikt. Dit heeft als gevold dat maximaal twaalf eerdere en twaalf nieuwe wegen gebruikt kunnen worden voor ´e´en aanvraag. Dit is echter wel meer dan met de Google Maps API kan. Omdat meer dan twaalf wegen in de buurt kunnen liggen, moet een keuze gemaakt worden welke wegen gebruikt worden. Dit wordt gedaan door te kijken welke twaalf wegen de hoogste waarschijnlijkheden p(zt|ri) hebben. Deze twaalf wegen

worden in de volgende tijdstap weer gebruikt, maar dan als de oude wegen. Tabel 4.2: Aanvraag limitaties met mapbox

Afstand matrix Wegen in buurt Per minuut 60 300

(20)

4.4

Database

Bij Spoorzoekertje moet de mogelijkheid zijn dat meerdere speurtochten uitgezet kunnen wor-den. Ook moeten spelers deze speurtochten kunnen zien en uitvoeren. Om dit te kunnen doen, moeten de speurtochten opgeslagen worden in een database. Om de database simpel te houden, is besloten om een relationele database te gebruiken. Een relationele database bestaat uit ta-bellen, waarbij deze tabellen referenties naar elkaar kunnen hebben. Bij Spoorzoekertje bestaat een speurtocht uit aanwijzingen. Om de juiste aanwijzingen te krijgen bij een speurtocht, moet er een manier zijn om een link te maken tussen aanwijzingen en speurtochten.

Bij Spoorzoekertje moeten aanwijzingen, die in de buurt van een speler liggen, opgevraagd wor-den. Om dit te kunnen doen, moet de locatie van een aanwijzing opgeslagen worden in de database. Ook moet de afstand tussen twee co¨ordinaten berekend kunnen worden. Dit kan met behulp van spatiele datatypes en functies. Spatiele functionaliteit is echter niet in elke relati-onele database beschikbaar. Twee relatirelati-onele databases waar dit wel mogelijk is, zijn MySQL [16] en PostgreSQL4. Voor PostgreSQL moet echter een extensie, zoals PostGIS5, op de database

ge¨ınstalleerd worden. Deze PostGIS extensie biedt meer functionaliteit dan nodig is. Alleen een datatype voor locatie en een functie voor de grootcirkel afstand zijn nodig. Daarom is gekozen voor MySQL. Bij MySQL hoeven geen extra extensies ge¨ınstalleerd te worden de benodigde spa-tiele functionaliteit te gebruiken. In figuur 4.1 zijn de tabellen van de volledige database te zien.

Figuur 4.1: Overzicht van de tabellen van de database.

4https://www.postgresql.org/ 5https://postgis.net/

(21)

Om een locatie toe te voegen aan de database, moet een “POINT” datatype gebruikt worden. In deze datatype worden twee waardes opgeslagen. Voor spoorzoekertje zijn dit de latitude en longitude co¨ordinaten. In listing 4.1 is een voorbeeld te zien hoe een locatie in de database gezet kan worden.

Listing 4.1: Voorbeeld voor het toevoegen van een co¨ordinaat aan de database. INSERT INTO hint VALUES (GeomFromText(’POINT(40.741895 −73.989308)’));

Om aanwijzingen in de buurt van een speler op te vragen, moet gekeken worden naar de grootcir-kel afstand tussen de aanwijzing en de speler. MySQL heeft de functie “st distance sphere” die deze afstand kan berekenen. In listing 4.2 is een voorbeeld te zien hoe alle aanwijzingen binnen een radius rondom de speler opgevraagd kunnen worden voor een specifieke speurtocht.

Listing 4.2: Voorbeeld voor het opvragen van aanwijzingen in een radius van 50 meter voor route 1.

SELECT ∗ FROM hint WHERE hint.route id = 1

AND st distance sphere(hint.location,

(22)
(23)

HOOFDSTUK 5

Experimenten en resultaten

Bij de experimenten is gekeken hoe het map matching algoritme werkt in twee verschillende ge-vallen, namelijk bij een route van rechte weg en een route met een transitie tussen twee wegen. Bij Spoorzoekertje kunnen de aanwijzingen op dezelfde weg liggen of verspreid worden op meerdere wegen, waarbij transities plaatsvinden naar andere wegen. Omdat bij Spoorzoekertje de expe-rimenten veelvuldig voor kunnen komen, zijn de expeexpe-rimenten representatief voor het onderzoek. De experimenten werden uitgevoerd door de twee routes te lopen en GPS co¨ordinaten te verza-melen. Het verzamelen van GPS co¨ordinaten is gedaan met een LG Nexus 5x. nadat alle GPS co¨ordinaten van een route verzameld waren, werd de implementatie van het map matching algo-ritme op deze GPS co¨ordinaten uitgevoerd. Vervolgens werden de afstanden van GPS co¨ordinaten en bepaalde posities ten opzichte van de werkelijke posities berekend. De co¨ordinaten van de werkelijke posities werden bepaald tijdens het volgen van het pad. Dit werd gedaan door bij elke GPS meting te kijken wat de werkelijke locatie was. De afstanden die uit de berekeningen kwamen, werden daarna met elkaar vergeleken om een conclusie te kunnen trekken.

Bij het eerste experiment is gekeken hoe het algoritme werkt als een persoon over een rechte weg loopt, zoals in figuur 5.1a te zien is. Het pad begon bij het bovenste co¨ordinaat en werd gelopen over het voetpad naast de weg. GPS co¨ordinaten van de gelopen route zijn te zien in figuur 5.1b en in figuur 5.1c zijn de co¨ordinaten te zien die uit de implementatie kwamen.

Om een vergelijking te maken tussen GPS co¨ordinaten en de bepaalde co¨ordinaten, is gekeken naar welke van de twee co¨ordinaten de kleinste afstand heeft tot de werkelijke positie. Dit is gedaan door te kijken naar de gemiddeldes en standaarddeviaties van deze afstanden. Het gemid-delde kan gebruikt worden om te bepalen welke co¨ordinaten het dichtst bij de werkelijke positie liggen, gekeken over het gehele pad. De standaarddeviatie geeft aan hoeveel de afstanden onder-ling van elkaar afwijken. Dit betekent dat gekeken kan worden of de co¨ordinaten vaak slingeren rondom de werkelijke positie en. In tabel 5.1 zijn deze waardes te zien voor het eerste experiment. Het tweede experiment dat gedaan is, kijkt hoe het map matching algoritme werkt als een bocht in de route voorkomt. Met een bocht kan gekeken worden wat het map matching algoritme doet, wanneer een transitie tussen wegen plaatsvindt. De resultaten van dit experiment zijn te zien in figuur 5.2. De afgelegde route begon bij het co¨ordinaat aan de linkerkant en eindigde bij het co¨ordinaat rechtsboven. Bij dit experiment is ook naar de gemiddeldes en standaarddeviaties gekeken van de afstanden tussen GPS en bepaalde posities ten opzichte van de werkelijke positie. Deze waardes zijn terug te vinden in tabel 5.2.

(24)

(a) Gelopen route (b) GPS co¨ordinaten (c) Co¨ordinaten door mid-del van map matching

Figuur 5.1: Resultaten van het map matching algoritme op een rechte weg

Tabel 5.1: Gemiddeldes en standaarddeviaties in experiment 1, berekend uit 32 afstanden tussen de werkelijke positie en de posities van GPS en het map matching algoritme.

Gemiddelde Standaarddeviatie GPS 2.26117 meter 1.87503 meter Map matching 3.23758 meter 1.29409 meter

(25)

(a) Gelopen route (b) GPS co¨ordinaten

(c) Co¨ordinaten door middel van map matching

Figuur 5.2: Resultaten van het map matching algoritme op een pad met een bocht Tabel 5.2: Gemiddeldes en standaarddeviaties in experiment 2, berekend uit 34 afstanden tussen de werkelijke positie en de posities van GPS en het map matching algoritme.

Gemiddelde Standaarddeviatie GPS 2.47031 meter 1.08861 meter Map matching 2.66156 meter 1.11146 meter

(26)
(27)

HOOFDSTUK 6

Discussie

Aan de hand van de gemiddeldes uit de tabellen 5.1 en 5.2 blijkt dat de GPS co¨ordinaten beter presteren dan het map matching algoritme. Er werd verwacht dat het map matching algoritme beter presteert, aangezien door straten heen gelopen werd waar naar gematcht kon worden. De resultaten komen dus niet overeen met de verwachting.

Dit is te verklaren aan de hand van een aantal zaken. De meest waarschijnlijke verklaring is dat een te kleine steekproef is gedaan. Beide experimenten zijn namelijk ´e´en keer uitgevoerd. Dit levert voor experiment 1 en 2 respectievelijk 32 en 34 co¨ordinaten op. Dit zijn niet veel waardes om een goed beeld te krijgen van een werkelijke speurtocht in Spoorzoekertje. Bij een speurtocht zal al snel boven de duizend co¨ordinaten gematcht worden.

Een andere verklaring kan zijn dat de routes gelopen werden over een voetpad naast de weg. Doordat de implementatie de co¨ordinaten altijd matcht met het midden van een weg, is er een afstand tussen het midden van de weg en het voetpad. Deze afstand is de afstand die elk ge-matcht co¨ordinaat minimaal heeft ten opzichte van de werkelijke positie.

Dit onderzoek heeft zich echter alleen gefocust op wegen en niet op voetpaden. Dit is dus een beperking van het map matching algoritme en kan niet opgelost worden door het algoritme aan te passen of te verbeteren. Dit zou gedaan moeten worden door andere data te gebruiken die ook voetpaden gebruikt als wegen.

Het resultaat is ook mogelijk te verklaren aan het feit dat de werkelijke locaties handmatig zijn bepaald. Hierdoor kunnen kleine verschillen ontstaan met de echte locatie. Kleine verschillen kunnen de uitslag van het experiment bepalen. Bij het tweede experiment is bijvoorbeeld te zien in tabel 5.2 dat het verschil in gemiddeldes maar ongeveer 0.2 meter is.

Wat wel naar verwachting voortkwam uit het eerste experiment, is dat de co¨ordinaten van het map matching algoritme vaker op dezelfde afstand van de werkelijke positie lagen. In tabel 5.1 is dit te zien aan de standaarddeviaties.

Dit resultaat is te verklaren aan het feit dat het werkelijke pad niet slingerend, maar recht gelo-pen werd. Aangezien de co¨ordinaten van het map matching algoritme altijd op ´e´en rechte lijn op dezelfde weg liggen, zal de afstand tussen de twee co¨ordinaten hierdoor dus elke keer ongeveer gelijk zijn. Dit houdt echter ook in dat de afstand tussen de twee co¨ordinaten afhangen van een element buiten het algoritme. In dit geval zal dat waarschijnlijk de afstand zijn vanaf het midden van de weg naar het voetpad.

Een vervolgonderzoek zou zich kunnen focussen op het stroomverbruik van de GPS. De accuraat-heid van de GPS hangt namelijk samen met stroomverbruik. Als de accuraataccuraat-heid omlaag gezet wordt, dan wordt het stroomverbruik ook minder. Hier zou dus gekeken kunnen worden hoe

(28)

laag de accuraatheid gezet kan worden, terwijl de resultaten van het map matching algoritme niet minder worden. Ook zou daarbij gekeken kunnen worden wat de invloed is van grotere tijdstappen tussen GPS metingen op het algoritme.

(29)

HOOFDSTUK 7

Conclusie

In dit onderzoek is gezocht naar een antwoord op de vraag: “Hoe kan een map matching algo-ritme in realtime een nauwkeurigere locatie bepalen dan een GPS?” Hiervoor is een onderzoek uitgevoerd naar bestaande map matching algoritmes en is een variant ge¨ımplementeerd die in realtime werkt.

Uit het onderzoek naar bestaande map matching algoritmes kwam een methode die gebruikt maakt van een Hidden Markov Model. Dit model werd gebruikt om een realtime implementatie te maken van de map matching methode. Deze implementatie werd vervolgens getest op een rechte weg en een weg met een bocht. Uit deze experimenten volgde dat de locaties van het map matching algoritme minder dan vier meter nauwkeurig waren ten opzichte van de werkelijke locaties. Echter bleek ook uit de resultaten dat de GPS co¨ordinaten gemiddeld dichter bij de werkelijke locaties lagen dan de locaties van het map matching algoritme.

Uit dit onderzoek is dus gebleken dat een map matching algoritme met een Hidden Markov Model gebruikt kan worden in realtime om een nauwkeurige locatiebepaling te doen. Dit algoritme presteert echter minder goed dan de GPS.

(30)
(31)

Bibliografie

[1] Tim Althoff, Ryen W White en Eric Horvitz. “Influence of Pok´emon Go on physical activity: study and implications”. In: Journal of medical Internet research 18.12 (2016).

[2] Bruno Ando e.a. “An advanced tracking solution fully based on native sensing features of smartphone”. In: Sensors Applications Symposium (SAS), 2014 IEEE. IEEE. 2014, p. 141– 144.

[3] Erkan Bostanci e.a. “Sensor fusion of camera, GPS and IMU using fuzzy adaptive multiple motion models”. In: Soft Computing 22.8 (2018), p. 2619–2632.

[4] Sotiris Brakatsoulas e.a. “On map-matching vehicle tracking data”. In: Proceedings of the 31st international conference on Very large data bases. VLDB Endowment. 2005, p. 853– 864.

[5] Wan-Young Chung e.a. “Enhanced RSSI-based real-time user location tracking system for indoor and outdoor environments”. In: Convergence Information Technology, 2007. International Conference on. IEEE. 2007, p. 1213–1218.

[6] Alexander M Clark en Matthew TG Clark. Pokemon Go and research: qualitative, mixed methods research, and the supercomplexity of interventions. 2016.

[7] Hongwei Du e.a. “A hybrid outdoor localization scheme with high-position accuracy and low-power consumption”. In: EURASIP Journal on Wireless Communications and Net-working 2018.1 (2018), p. 4.

[8] Stuart A Golden en Steve S Bateman. “Sensor measurements for Wi-Fi location with emphasis on time-of-arrival ranging”. In: IEEE Transactions on Mobile Computing 6.10 (2007).

[9] Google Maps Platform Documentation. url: https://developers.google.com/maps/ documentation/ (bezocht op 2018).

[10] Katherine B Howe e.a. “Gotta catch’em all! Pok´emon GO and physical activity among young adults: difference in differences study”. In: bmj 355 (2016), p. i6270.

[11] Soyoung Hwang en Donghui Yu. “GPS localization improvement of smartphones using built-in sensors”. In: International Journal of Smart Home 6.3 (2012), p. 1–8.

[12] Carolien Kamphuis e.a. “Augmented reality in medical education?” In: Perspectives on medical education 3.4 (2014), p. 300–311.

[13] Soo-Cheol Kim, Young-Sik Jeong en Sang-Oh Park. “RFID-based indoor location tracking to ensure the safety of the elderly in smart home environments”. In: Personal and ubiquitous computing 17.8 (2013), p. 1699–1707.

[14] Mapbox API Documentation. url: https : / / www . mapbox . com / api - documentation/ (bezocht op 2018).

[15] Reham Mohamed, Heba Aly en Moustafa Youssef. “Accurate real-time map matching for challenging environments”. In: IEEE Transactions on Intelligent Transportation Systems 18.4 (2017), p. 847–857.

[16] MySQL 5.7 Reference Manual. url: https://dev.mysql.com/doc/refman/5.7/en/ (bezocht op 2018).

(32)

[17] Paul Newson en John Krumm. “Hidden Markov map matching through noise and sparse-ness”. In: Proceedings of the 17th ACM SIGSPATIAL international conference on advances in geographic information systems. ACM. 2009, p. 336–343.

[18] R¨udiger Pryss e.a. “Advanced algorithms for location-based smart mobile augmented rea-lity applications”. In: Procedia Computer Science 94 (2016), p. 97–104.

[19] Christopher E White, David Bernstein en Alain L Kornhauser. “Some map matching al-gorithms for personal navigation assistants”. In: Transportation research part c: emerging technologies 8.1-6 (2000), p. 91–108.

[20] Gergely V Z`aruba e.a. “Indoor location tracking using RSSI readings from a single Wi-Fi access point”. In: Wireless networks 13.2 (2007), p. 221–235.

Referenties

GERELATEERDE DOCUMENTEN

De voorstellen voor kostenbeheersing zijn niet evenwichtig: daar waar Zorgverzekeraars een centrale functie hebben gekregen die moet leiden tot meer marktwerking,

Nu wil je vinden voor welke p deze raaklijn de grafiek raakt in het punt met de x-co¨ ordinaat √

Met inachtneming van het voorgaande stelt ACM, gelet op artikel 23, Gaswet en artikel 55, E-wet, de wijziging van de voorwaarden, die bekend staan als Informatiecode Elektriciteit

De oplossingen krijgen we door de co¨ ordinaten die horen bij kolommen (voor de streep) zonder pivot (dus de derde) vrij te kiezen en de overige co¨ ordinaten uit te rekenen...

Door te dualiseren is in te zien, dat f eigenlijk een projectie is van een lijn op een lijn in een 2-dimensionale projectieve ruimte... a) (2p) Welke 2-dimensionale projectieve

Help Mimi om een lijst met alle eieren te maken en daarna deze ´e´en voor ´e´en te doorlopen en de co ¨ordinaten van de eieren af te drukken.. Open de wereld

Hint: waar ligt de top van een parabool ten opzichte van de nulpunten?. Vind de x-co¨ ordinaten van de snijpunten van f

Laat D een ’vlakke plaat’ zijn met dichtheid ρ (massa per oppervlakte-eenheid). Goddijn