report.tex 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. \documentclass[10pt,a4paper]{article}
  2. \usepackage[dutch]{babel}
  3. \usepackage[utf8]{inputenc}
  4. \usepackage{amsmath,hyperref,graphicx,booktabs,float}
  5. % Link colors
  6. \hypersetup{colorlinks=true,linkcolor=black,urlcolor=blue}
  7. % Paragraph indentation
  8. \setlength{\parindent}{0pt}
  9. \setlength{\parskip}{1.5ex plus 0.5ex minus 0.2ex}
  10. \title{Projectvoorstel\\Universal Visualization Appliance}
  11. \author{\begin{tabular}{ll}
  12. Naam: & Taddeüs Kroes\\
  13. Collegekaartnummer: & 6054129\\
  14. E-mailadres: & \texttt{taddeus.kroes@student.uva.nl}\\
  15. Adres: & Wethouder van Wijckstraat 40, 1107 BR Amsterdam\\
  16. Telefoonnummer: & 06-23437025\\
  17. Begeleider: & Dr. R.G. Belleman (UvA)\\
  18. \end{tabular}}
  19. \begin{document}
  20. \maketitle
  21. \pagebreak
  22. \tableofcontents
  23. \pagebreak
  24. \section{Inleiding}
  25. \subsection{Probleemidentificatie}
  26. \label{sec:probleemidentificatie}
  27. % Ruwe probleemstelling
  28. Data wordt verzameld in alle hoeken van de wetenschap. Wanneer de data echter
  29. zijn verzameld, is het vaak een uitdaging om deze op een zodanige manier weer
  30. te geven dat er een waarneming kan worden gedaan. Deze visualisatie wordt
  31. veelal gedaan met de hulp van een visualisatie-specialist, omdat het voor de
  32. wetenschapper vaak zelf niet eenvoudig is om dit te realiseren.
  33. % Aanleiding
  34. Robert Belleman\footnote{\url{http://staff.science.uva.nl/~robbel/}} is een
  35. specialist op het gebied van visualisatie aan de Universiteit van Amsterdam
  36. (UvA), en deed de observatie dat bij gelijksoortige datasets de
  37. visualisatiemethode overeenkomstig is.
  38. % Ruwe doel
  39. Dit roept de vraag op of de visualisatiemethode kan worden bepaald door een
  40. computerprogramma dat de data analyseert, en op basis van die analyse een
  41. visualisatiemethode kiest. Dit zou werk uit handen nemen van de
  42. visualisatie-specialist, en de mogelijkheid geven voor wetenschappers om
  43. hun eigen data snel te kunnen bekijken. Om deze reden is dit project als
  44. afstudeerproject voor de bachelor Informatica beschikbaar gesteld.
  45. % Setting/afbakening
  46. Het doel van deze afstudeeropdracht is om een bijdrage te leveren aan de
  47. realisatie van een universeel visualisatieprogramma. Op lange termijn moet dit
  48. programma zoveel mogelijk soorten data kunnen analyseren en visualiseren.
  49. Het is de bedoeling van de onderzoekers dat het programma zodanig modulair
  50. wordt opgezet, dat er in de loop van de tijd meer modules op kunnen worden
  51. aangesloten voor nieuwe analyse- en visualisatiemethodes. Vanwege de
  52. beschikbare tijd om het onderzoek uit te voeren is besloten dat het
  53. resulterende programma een ``Proof of Concept'' moet zijn. Er is besloten dat
  54. het Proof of Concept 3D datasets moet kunnen visualiseren in interactie met
  55. een multi-touch tafel. Deze is beschikbaar gesteld voor dit onderzoek door de
  56. UvA.
  57. \emph{<Voordat het onderzoek begon was besloten om multitouch te doen, focus verlegd naar schrijven MT-library etc.>}
  58. \subsection{Opbouw verslag}
  59. In hoofdstuk \ref{sec:vraagstelling} wordt de probleemstelling vertaald naar
  60. een doelstelling en een centrale vraagstelling.
  61. Hoofdstuk \ref{sec:deelvragen} verdeelt de centrale vraagstelling in een
  62. aantal deelvragen, die elk kort worden toegelicht.
  63. Na de vraagstelling wordt in hoofdstuk \ref{sec:afbakening} de afbakening van
  64. het onderzoeksgebied aangegeven.
  65. Vervolgens wordt de gebruikte onderzoeksmethodiek beschreven in hoofdstuk
  66. \ref{sec:methodiek}, bestaande uit een faseverdeling en een globale
  67. tijdsplanning.
  68. Tot slot wordt in hoofdstuk \ref{sec:gerelateerd} een blik geworpen op een
  69. gerelateerd project.
  70. \emph{- Rest v/d hoofdstukken beschrijven}
  71. \section{Vraagstelling}
  72. \label{sec:vraagstelling}
  73. \subsection{Doelstelling}
  74. Het doel van dit onderzoek is om een bijdrage te leveren aan het ontwikkelen
  75. van een universeel datavisualisatie-programma.
  76. In dit projectvoorstel zal naar het programma worden verwezen met de afkorting
  77. ``UVA'' (Universal Visualizaton Appliance).
  78. \subsection{Centrale vraag}
  79. Hoe kan een Proof of Concept voor een universeel datavisualisatie-programma
  80. worden gerealiseerd, gericht op 3D-visualisatie en met multi-touch interactie?
  81. \subsection{Deelvragen}
  82. \label{sec:deelvragen}
  83. \begin{itemize}
  84. \item \emph{Welke taal (en evt. framework) zijn de beste keuze om het
  85. programma in te ontwikkelen?}
  86. Het kiezen van een taal is vooral afhankelijk van de beschikbaarheid van zgn.
  87. ``libraries'' met multi-touch ondersteuning. Voor
  88. Python\footnote{\url{http://python.org}} bestaat bijvoorbeeld het
  89. applicatieframework Kivy\footnote{\url{http://kivy.org}}.
  90. \item \emph{Hoe werkt de communicatie met de multi-touch tafel?}
  91. Het is nodig om te weten wat voor ``events'' er worden ondersteund door
  92. frameworks als Kivy, om te bepalen welke touch-gebaren kunnen worden
  93. geïmplementeerd.
  94. \item \emph{Welke soorten 3D datasets zijn er en welke daarvan zijn relevant
  95. om te ondersteunen in het Proof of Concept?}
  96. De term ``3D dataset'' is een generieke benaming. Omdat de multi-touch
  97. tafel in het bezit van de UvA is, zal het onderzoek zich in eerste
  98. instantie richten op bestandsformaten die op de UvA worden gebruikt om de kans op
  99. daadwerkelijk gebruik van het programma te vergroten.
  100. \item \emph{Hoe kunnen de verschillende 3D datasets worden gevisualiseerd?}
  101. Is het bijvoorbeeld makkelijk om OpenGL commando's te gebruiken? En wanneer er
  102. vele duizenden vectoren zijn, is het dan nuttig om bijvoorbeeld clusters van
  103. vectoren te groeperen tot een enkele vector?
  104. \item \emph{Hoe kunnen multi-touch gebaren worden gebruikt in de interactie
  105. met 3D datasets?}
  106. Er moet een intuïtieve manier worden ontwikkeld voor de interactie met 3D data
  107. op een 2D scherm.
  108. \item \emph{Wat is een goede structuur die toestaat om in de toekomst nieuwe
  109. visualisatiemethodes toe te voegen?}
  110. Een universeel programma moet flexibel zijn zodat ontwikkelaars gemakkelijk
  111. nieuwe methodes kunnen toevoegen. Een voorbeeld van een al bestaand is
  112. Eclipse. Elk component van Eclipse wordt gezien is een ``plugin''. Zo'n plugin
  113. heeft een vast formaat waardoor het kan worden gebruikt in combinatie met
  114. andere plugins. Een soortgelijke structuur is wellicht nuttig om te hanteren
  115. in het UVA-programma.
  116. De structuur moet flexibel genoeg zijn om een verschillende frameworks te
  117. kunnen gebruiken in verschillende visualisatiemethodes. Kivy maakt
  118. bijvoorbeeld gebruik van een eigen main loop (een functie die zorgt voor het
  119. functioneren van de grafische interface). De loop is ``blocking'', dus is het
  120. mogelijk nodig om gebruik te maken van threads voor continue taken.
  121. \end{itemize}
  122. \subsection{Afbakening}
  123. \label{sec:afbakening}
  124. Het onderzoek zou waarschijnlijk het best tot zijn recht komen wanneer het zou
  125. worden uitgevoerd door meerdere onderzoekers. Omdat er echter slechts een
  126. enkele onderzoeker is, en er een beperkte tijd voor het onderzoek beschikbaar
  127. is, is besloten tot het maken van een Proof of Concept.
  128. %Omdat het UVA-programma expliciet als opdracht is geformuleerd, wordt in dit
  129. %onderzoek aangenomen dat er nog geen universeel programma voor
  130. %datavisualisatie bestaat.
  131. \subsection{Programma-onderdelen}
  132. \emph{- Multitouch-library}
  133. \emph{- front-end in VTK}
  134. \section{Relatie met vergelijkbaar onderzoek}
  135. \label{sec:gerelateerd}
  136. Er is gezocht naar programma's met een soortgelijke strekking met
  137. het doel er inspiratie uit op te doen, zo is het programma ``UDAV'' gevonden.
  138. UDAV\footnote{\url{http://udav.sourceforge.net/}} is een programma waarmee
  139. data op verschillende manieren kan worden gevisualiseerd met behulp van
  140. MathGL\footnote{\url{http://mathgl.sourceforge.net/}}. Om dit programma te
  141. kunnen gebruiken is kennis nodig van de MathGL syntax, waar het UVA-programma
  142. juist als eigenschap heeft dat er weinig kennis nodig is van de gebruiker.
  143. Het zou echter wel een optie zijn om visualisatiemogelijkheden in de MathGL
  144. library onder te brengen in een module voor het UVA-programma.
  145. \section{Onderzoeksmethodiek}
  146. \label{sec:methodiek}
  147. \subsection{Methode}
  148. Het UVA-programma is een nieuw soort programma, er is nog geen bestaande
  149. variant van. Dit onderzoek maakt daarom gebruik van een experimentele
  150. onderzoeksmethode\footnote{\url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/}}:
  151. tijdens de ontwikkeling van het programma wordt geëxperimenteerd met de
  152. beschikbare opties voor implementatie, en wordt bepaald in hoeverre deze
  153. opties voldoen aan de vooraf gestelde eisen.
  154. \subsection{Fases}
  155. Het onderzoek kan worden verdeeld in vier hoofdfases:
  156. \subsubsection*{Oriëntatiefase}
  157. De eerste fase is de oriëntatie op het werken met de multi-touch interface, en
  158. op het weergeven van voorbeeld-datasets in 3D (gebruik makend van de OpenGL-
  159. bindings\footnote{\url{http://kivy.org/docs/api-kivy.graphics.opengl.html}} in
  160. Kivy).
  161. Er moet bijvoorbeeld worden uitgezocht welke touch-gebaren worden herkend. Dit
  162. kan worden getest met behulp van een testprogramma dat een bericht toont op
  163. het moment dat een event optreedt.
  164. Ook is het nuttig om een testprogramma te maken dat met behulp van de eerder
  165. genoemde OpenGL-bindings een 3D plot maakt van een voorbeeld-dataset, om
  166. bekend te worden met de OpenGL functionaliteit.
  167. Daarnaast moet worden bepaald welke soorten 3D data gaan worden gebruikt, en
  168. hoe het formaat hiervan eruit ziet.
  169. \subsubsection*{Ontwerpfase}
  170. Met de kennis die is opgedaan tijdens de oriëntatiefase kan een ontwerp worden
  171. gemaakt van het kerncomponent van het programma, en de aansluiting hiervan op
  172. de 3D/multi-touch visualisatiecomponenten.
  173. \subsubsection*{Implementatiefase}
  174. Deze fase bevat het daadwerkelijk programmeren van de ontworpen onderdelen.
  175. Tijdens deze fase zullen ook ontwerpproblemen op een gedetailleerd niveau
  176. worden opgelost. Denk aan het invullen van de grafische interface met knoppen
  177. en eventuele widgets.
  178. \subsubsection*{Verslaglegging}
  179. Het is de bedoeling dat al tijdens de eerste drie fases wordt gewerkt aan de
  180. basis van de afstudeerscriptie. Tijdens die fases kunnen een aantal deelvragen
  181. worden beantwoord.
  182. Er zal een logboek worden bijgehouden in de vorm van Version Control. Het
  183. gebruikte Version Control systeem is Git\footnote{\url{http://git-scm.com/}}.
  184. Bij de ``commits'' worden ``commit messages'' ingevuld zodat zichtbaar is op
  185. welk moment (in welke commit) bepaalde taken zijn uitgevoerd.
  186. Tijdens de laatste fase worden de antwoorden op de deelvragen waar nodig
  187. aangevuld, en worden de overige hoofdstukken geschreven.
  188. \section{Het TUIO-protocol}
  189. \emph{- Vertellen dat het op een UDP poort binnenkomt}\\
  190. \emph{- wat komt er dan binnen?}\\
  191. \emph{- wat doet de implementatie ermee?}
  192. \section{Multitouch-library}
  193. \subsection{Threads}
  194. \emph{- Meerdere threads nodig omdat er 3 loops zijn}\\
  195. \emph{- Daemon threads voor stabiliteit}
  196. \subsection{Gebaarherkenning}
  197. \subsubsection*{Rotatie}
  198. \emph{- Tangens-vergelijking voor rotatie om centroid}
  199. \subsubsection*{``Pinch''}
  200. \emph{- Relatief verschil in afstand tot centroid}
  201. \subsubsection*{Slepen met meerdere vingers}
  202. \emph{- meerdere vingers in dezelfde richting genereert drag event met beweging van
  203. centroid}
  204. \subsection{Afvuren ``event''}
  205. \emph{- Event binding uitleggen}\\
  206. \emph{- Waarom deze manier handig is}\\
  207. \emph{- Eventueel: beschrijven welk design pattern dit is}
  208. \subsection{Toewijzing aan ``event window''}
  209. \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''.}
  210. \section{Experimenten}
  211. \emph{- draw.py}\\
  212. \emph{- UVA front-end}
  213. \section{Conclusies}
  214. \section{Referenties}
  215. \begin{itemize}
  216. \item Homepage Robert Belleman \url{http://staff.science.uva.nl/~robbel/}
  217. \item Python homepage \url{http://python.org}
  218. \item Definitie experimentele onderzoeksmethode \url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/}
  219. \item Kivy homepage \url{http://kivy.org}
  220. \item Kivy OpenGL-bindings documentatie \url{http://kivy.org/docs/api-kivy.graphics.opengl.html}
  221. \item Git homepage \url{http://git-scm.com/}
  222. \item UDAV homepage \url{http://udav.sourceforge.net/}
  223. \item MathGL homepage \url{http://mathgl.sourceforge.net/}
  224. \end{itemize}
  225. \end{document}