| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- \documentclass[10pt,a4paper]{article}
- \usepackage[dutch]{babel}
- \usepackage[utf8]{inputenc}
- \usepackage{amsmath,hyperref,graphicx,booktabs,float}
- % Link colors
- \hypersetup{colorlinks=true,linkcolor=black,urlcolor=blue}
- % Paragraph indentation
- \setlength{\parindent}{0pt}
- \setlength{\parskip}{1.5ex plus 0.5ex minus 0.2ex}
- \title{Bachelor thesis\\Universal multi-touch event mechanism}
- \author{\begin{tabular}{ll}
- Name: & Taddeüs Kroes\\
- Student number: & 6054129\\
- E-mail address: & \texttt{taddeus.kroes@student.uva.nl}\\
- Adres: & Wethouder van Wijckstraat 40, 1107 BR Amsterdam\\
- Phone number: & 06-23437025\\
- supervisor: & Dr. R.G. Belleman (UvA)\\
- \end{tabular}}
- \begin{document}
- \maketitle
- \pagebreak
- \tableofcontents
- \pagebreak
- \section{Introduction}
- % Ruwe probleemstelling
- Multi-touch interaction is becoming increasingly common, mostly due to the wide
- use of touch screens in phones and tablets. When programming applications using
- this method of interaction, the programmer needs an abstraction of the raw data
- provided by the touch driver of the device. This abstraction exists in several
- multi-touch application frameworks like Nokia's
- Qt\footnote{\url{http://qt.nokia.com/}}. However, applications that do not use
- these frameworks consequently have no access to multi-touch events.
- % Aanleiding
- This problem was observed during an attempt to create a multi-touch
- ``interactor'' class for the Visualization Toolkit
- (VTK\footnote{\url{http://www.vtk.org/}}).
- % Ruw doel
- The goal of this thesis is to define a universal multi-touch event triggering mechanism.
- - Om een universeel multi-touch event 'gesture'-detectie te definiëren.
- % Setting/afbakening
- Dit onderzoek heeft als einddoel een Proof of Concept te maken, namelijk een
- toepassing van de universele multi-touch gesture-detectie in een VTK interactor.
- \subsection{Opbouw verslag}
- In hoofdstuk \ref{sec:vraagstelling} wordt de probleemstelling vertaald naar
- een doelstelling en een centrale vraagstelling.
- Hoofdstuk \ref{sec:deelvragen} verdeelt de centrale vraagstelling in een
- aantal deelvragen, die elk kort worden toegelicht.
- Na de vraagstelling wordt in hoofdstuk \ref{sec:afbakening} de afbakening van
- het onderzoeksgebied aangegeven.
- Vervolgens wordt de gebruikte onderzoeksmethodiek beschreven in hoofdstuk
- \ref{sec:methodiek}, bestaande uit een faseverdeling en een globale
- tijdsplanning.
- Tot slot wordt in hoofdstuk \ref{sec:gerelateerd} een blik geworpen op een
- gerelateerd project.
- \emph{- Rest v/d hoofdstukken beschrijven}
- \section{Vraagstelling}
- \label{sec:vraagstelling}
- \subsection{Doelstelling}
- Het doel van dit onderzoek is om een bijdrage te leveren aan het ontwikkelen
- van een universeel datavisualisatie-programma.
- In dit projectvoorstel zal naar het programma worden verwezen met de afkorting
- ``UVA'' (Universal Visualizaton Appliance).
- \subsection{Centrale vraag}
- Hoe kan een Proof of Concept voor een universeel datavisualisatie-programma
- worden gerealiseerd, gericht op 3D-visualisatie en met multi-touch interactie?
- \subsection{Deelvragen}
- \label{sec:deelvragen}
- \begin{itemize}
- \item \emph{Welke taal (en evt. framework) zijn de beste keuze om het
- programma in te ontwikkelen?}
- Het kiezen van een taal is vooral afhankelijk van de beschikbaarheid van zgn.
- ``libraries'' met multi-touch ondersteuning. Voor
- Python\footnote{\url{http://python.org}} bestaat bijvoorbeeld het
- applicatieframework Kivy\footnote{\url{http://kivy.org}}.
- \item \emph{Hoe werkt de communicatie met de multi-touch tafel?}
- Het is nodig om te weten wat voor ``events'' er worden ondersteund door
- frameworks als Kivy, om te bepalen welke touch-gebaren kunnen worden
- geïmplementeerd.
- \item \emph{Welke soorten 3D datasets zijn er en welke daarvan zijn relevant
- om te ondersteunen in het Proof of Concept?}
- De term ``3D dataset'' is een generieke benaming. Omdat de multi-touch
- tafel in het bezit van de UvA is, zal het onderzoek zich in eerste
- instantie richten op bestandsformaten die op de UvA worden gebruikt om de kans op
- daadwerkelijk gebruik van het programma te vergroten.
- \item \emph{Hoe kunnen de verschillende 3D datasets worden gevisualiseerd?}
- Is het bijvoorbeeld makkelijk om OpenGL commando's te gebruiken? En wanneer er
- vele duizenden vectoren zijn, is het dan nuttig om bijvoorbeeld clusters van
- vectoren te groeperen tot een enkele vector?
- \item \emph{Hoe kunnen multi-touch gebaren worden gebruikt in de interactie
- met 3D datasets?}
- Er moet een intuïtieve manier worden ontwikkeld voor de interactie met 3D data
- op een 2D scherm.
- \item \emph{Wat is een goede structuur die toestaat om in de toekomst nieuwe
- visualisatiemethodes toe te voegen?}
- Een universeel programma moet flexibel zijn zodat ontwikkelaars gemakkelijk
- nieuwe methodes kunnen toevoegen. Een voorbeeld van een al bestaand is
- Eclipse. Elk component van Eclipse wordt gezien is een ``plugin''. Zo'n plugin
- heeft een vast formaat waardoor het kan worden gebruikt in combinatie met
- andere plugins. Een soortgelijke structuur is wellicht nuttig om te hanteren
- in het UVA-programma.
- De structuur moet flexibel genoeg zijn om een verschillende frameworks te
- kunnen gebruiken in verschillende visualisatiemethodes. Kivy maakt
- bijvoorbeeld gebruik van een eigen main loop (een functie die zorgt voor het
- functioneren van de grafische interface). De loop is ``blocking'', dus is het
- mogelijk nodig om gebruik te maken van threads voor continue taken.
- \end{itemize}
- \subsection{Afbakening}
- \label{sec:afbakening}
- Het onderzoek zou waarschijnlijk het best tot zijn recht komen wanneer het zou
- worden uitgevoerd door meerdere onderzoekers. Omdat er echter slechts een
- enkele onderzoeker is, en er een beperkte tijd voor het onderzoek beschikbaar
- is, is besloten tot het maken van een Proof of Concept.
- %Omdat het UVA-programma expliciet als opdracht is geformuleerd, wordt in dit
- %onderzoek aangenomen dat er nog geen universeel programma voor
- %datavisualisatie bestaat.
- \subsection{Programma-onderdelen}
- \emph{- Multitouch-library}
- \emph{- front-end in VTK}
- \section{Relatie met vergelijkbaar onderzoek}
- \label{sec:gerelateerd}
- Er is gezocht naar programma's met een soortgelijke strekking met
- het doel er inspiratie uit op te doen, zo is het programma ``UDAV'' gevonden.
- UDAV\footnote{\url{http://udav.sourceforge.net/}} is een programma waarmee
- data op verschillende manieren kan worden gevisualiseerd met behulp van
- MathGL\footnote{\url{http://mathgl.sourceforge.net/}}. Om dit programma te
- kunnen gebruiken is kennis nodig van de MathGL syntax, waar het UVA-programma
- juist als eigenschap heeft dat er weinig kennis nodig is van de gebruiker.
- Het zou echter wel een optie zijn om visualisatiemogelijkheden in de MathGL
- library onder te brengen in een module voor het UVA-programma.
- \section{Onderzoeksmethodiek}
- \label{sec:methodiek}
- \subsection{Methode}
- Het UVA-programma is een nieuw soort programma, er is nog geen bestaande
- variant van. Dit onderzoek maakt daarom gebruik van een experimentele
- onderzoeksmethode\footnote{\url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/}}:
- tijdens de ontwikkeling van het programma wordt geëxperimenteerd met de
- beschikbare opties voor implementatie, en wordt bepaald in hoeverre deze
- opties voldoen aan de vooraf gestelde eisen.
- \subsection{Fases}
- Het onderzoek kan worden verdeeld in vier hoofdfases:
- \subsubsection*{Oriëntatiefase}
- De eerste fase is de oriëntatie op het werken met de multi-touch interface, en
- op het weergeven van voorbeeld-datasets in 3D (gebruik makend van de OpenGL-
- bindings\footnote{\url{http://kivy.org/docs/api-kivy.graphics.opengl.html}} in
- Kivy).
- Er moet bijvoorbeeld worden uitgezocht welke touch-gebaren worden herkend. Dit
- kan worden getest met behulp van een testprogramma dat een bericht toont op
- het moment dat een event optreedt.
- Ook is het nuttig om een testprogramma te maken dat met behulp van de eerder
- genoemde OpenGL-bindings een 3D plot maakt van een voorbeeld-dataset, om
- bekend te worden met de OpenGL functionaliteit.
- Daarnaast moet worden bepaald welke soorten 3D data gaan worden gebruikt, en
- hoe het formaat hiervan eruit ziet.
- \subsubsection*{Ontwerpfase}
- Met de kennis die is opgedaan tijdens de oriëntatiefase kan een ontwerp worden
- gemaakt van het kerncomponent van het programma, en de aansluiting hiervan op
- de 3D/multi-touch visualisatiecomponenten.
- \subsubsection*{Implementatiefase}
- Deze fase bevat het daadwerkelijk programmeren van de ontworpen onderdelen.
- Tijdens deze fase zullen ook ontwerpproblemen op een gedetailleerd niveau
- worden opgelost. Denk aan het invullen van de grafische interface met knoppen
- en eventuele widgets.
- \subsubsection*{Verslaglegging}
- Het is de bedoeling dat al tijdens de eerste drie fases wordt gewerkt aan de
- basis van de afstudeerscriptie. Tijdens die fases kunnen een aantal deelvragen
- worden beantwoord.
- Er zal een logboek worden bijgehouden in de vorm van Version Control. Het
- gebruikte Version Control systeem is Git\footnote{\url{http://git-scm.com/}}.
- Bij de ``commits'' worden ``commit messages'' ingevuld zodat zichtbaar is op
- welk moment (in welke commit) bepaalde taken zijn uitgevoerd.
- Tijdens de laatste fase worden de antwoorden op de deelvragen waar nodig
- aangevuld, en worden de overige hoofdstukken geschreven.
- \section{Het TUIO-protocol}
- \emph{- Vertellen dat het op een UDP poort binnenkomt}\\
- \emph{- wat komt er dan binnen?}\\
- \emph{- wat doet de implementatie ermee?}
- \section{Multitouch-library}
- \subsection{Threads}
- \emph{- Meerdere threads nodig omdat er 3 loops zijn}\\
- \emph{- Daemon threads voor stabiliteit}
- \subsection{Gebaarherkenning}
- \subsubsection*{Rotatie}
- \emph{- Tangens-vergelijking voor rotatie om centroid}
- \subsubsection*{``Pinch''}
- \emph{- Relatief verschil in afstand tot centroid}
- \subsubsection*{Slepen met meerdere vingers}
- \emph{- meerdere vingers in dezelfde richting genereert drag event met beweging van
- centroid}
- \subsection{Afvuren ``event''}
- \emph{- Event binding uitleggen}\\
- \emph{- Waarom deze manier handig is}\\
- \emph{- Eventueel: beschrijven welk design pattern dit is}
- \subsection{Toewijzing aan ``event window''}
- \emph{- TUIO coördinaten zijn over het hele scherm en van 0.0 tot 1.0, dus moeten worden vertaald naar pixelcoördinaten binnen een ``window''.}
- \section{Experimenten}
- \emph{- draw.py}\\
- \emph{- UVA front-end}
- \section{Conclusies}
- \section{Referenties}
- \begin{itemize}
- \item Homepage Robert Belleman \url{http://staff.science.uva.nl/~robbel/}
- \item Python homepage \url{http://python.org}
- \item Definitie experimentele onderzoeksmethode \url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/}
- \item Kivy homepage \url{http://kivy.org}
- \item Kivy OpenGL-bindings documentatie \url{http://kivy.org/docs/api-kivy.graphics.opengl.html}
- \item Git homepage \url{http://git-scm.com/}
- \item UDAV homepage \url{http://udav.sourceforge.net/}
- \item MathGL homepage \url{http://mathgl.sourceforge.net/}
- \end{itemize}
- \end{document}
|