How High

More Info
expand_more

Abstract

Het bachelorproject `How High' heeft als doel het opbouwen en testen van een algoritme waarmee worpen van een telefoon gedetecteerd kunnen worden, en waarmee de bereikte hoogte bepaald kan worden. Dit algoritme dient daarna te worden toegepast in een game voor mobiele telefoons. Voor de detectie kan gebruik gemaakt worden van verschillende hardware in telefoons, maar vanwege een te laag voorkomen of te hoge onnauwkeurigheid van de overige hardware, gebruiken we in ons algoritme alleen de versnellingsmeter. Het detecteren van een gooi is relatief simpel, aangezien dit gekenmerkt wordt door een vrije val. Het is lastiger de duur van de gooi, en daarmee de hoogte, te bepalen. Ook moeten nepgooien worden gelterd. Na een poging om de benodigde sleutelwaarden te bepalen aan de hand van opvallende punten in grafieken van de versnelling van een telefoon, kwamen we erachter dat dit erg lastig werd zodra de telefoon in de lucht draaide. Omdat het berekenen van het tijdstip van de top ook een lastige opgave was, hebben we besloten ervan uit te gaan dat de telefoon even hoog wordt gegooid als gevangen. Met behulp van een neuraal netwerk hebben we geprobeerd hoogtes te bepalen, maar ook dit gaf niet de gewenste resultaten. Het uiteindelijke algoritme is gebaseerd op fuzzy logica. Met behulp van verschillende fuzzy verzamelingen wordt een beslissing genomen over een mogelijke gooi. Als beslist wordt dat er een gooi was, wordt deze nog gevalideerd om er zeker van te zijn dat de gooi bijvoorbeeld geen na-stuiter was. Het ontwerp van de functiebibliotheek heeft als uitgangspunt de integratie in andere applicaties. De bibliotheek is geïmplementeerd in Java, gebruik makend van de Android API. De game `Catchy' is geschreven met ondersteuning van de engine AndEngine. In de game kan de speler verschillende spellen spelen waarin een bepaald doel bereikt moet worden door de telefoon omhoog te gooien. Ons algoritme is gevalideerd met een testopstelling waarbij de echte sleutelwaarden en hoogte vergeleken zijn met de door het algoritme berekende waarden. Met behulp van de resultaten is het algoritme verbeterd, wat een algoritme heeft opgeleverd met een gemiddelde fout van nul centimeter, en een standaardafwijking van nog geen twee centimeter.