Переглянути джерело

First version of final presentation.

Taddeus Kroes 13 роки тому
батько
коміт
8280ae9bb8
3 змінених файлів з 313 додано та 15 видалено
  1. 192 0
      docs/data/presentationdiagrams.tex
  2. 116 14
      docs/final_presentation.tex
  3. 5 1
      docs/rules.mk

+ 192 - 0
docs/data/presentationdiagrams.tex

@@ -0,0 +1,192 @@
+% Define node group background
+% The first 4 arguments are nodes that define the group borders in (left,
+% top, right, bottom) order, the last argument is a text label
+\usetikzlibrary{shapes,arrows,positioning,patterns}
+\pgfdeclarelayer{background}
+\pgfdeclarelayer{foreground}
+\pgfsetlayers{background,main,foreground}  % Layer order
+\newcommand{\group}[5]{
+    \begin{pgfonlayer}{background}
+        % Left top corner
+        \path (#1.west |- #2.north)+(-0.7, 0.7)
+            node (lefttop) {};
+        % Right bottom corner
+        \path (#3.east |- #4.south)+(0.7, -0.4)
+            node (rightbottom) {};
+        % Draw rectangle
+        \path[draw, rounded corners, dashed] (lefttop) rectangle (rightbottom);
+        % Text label
+        \path (rightbottom.west |- lefttop.south)+(-1.2, -0.3) node {\emph{#5}};
+    \end{pgfonlayer}
+}
+\tikzstyle{block} = [
+    rectangle,
+    draw=black,
+    fill=white,
+    thick,
+    minimum height=2em,
+    text centered,
+    rounded corners,
+    text width=6em
+]
+\tikzstyle{lineto} = [
+    ->,
+    thick,
+    shorten <= 2pt,
+    shorten >= 2pt
+]
+\tikzstyle{linefrom} = [
+    <-,
+    thick,
+    shorten <= 2pt,
+    shorten >= 2pt
+]
+\newcommand{\architecture}[1]{
+    \begin{tikzpicture}[node distance=6em, scale=0.7, transform shape]
+        \node[block] (driver) {Driver};
+        #1
+    \end{tikzpicture}
+}
+
+\def\basicdiagram{
+    \begin{figure}[h!]
+        \center
+        \begin{tikzpicture}[node distance=6em, scale=0.7, transform shape]
+            \node[block] (driver) {Device driver};
+            \node[block, below of=driver, dashed] (architecture) {Architecture}
+                edge[linefrom] node[right] {device-specific messages} (driver);
+            \node[block, below of=architecture] {Application}
+                edge[linefrom, dotted] node[right] {gesture} (architecture);
+        \end{tikzpicture}
+    \end{figure}
+}
+
+\def\eventdriverdiagram{
+    \begin{figure}[h!]
+        \center
+        \architecture{
+            \node[block, below of=driver] (eventdriver) {Event driver}
+                edge[linefrom] node[right, near end] {device-specific messages} (driver);
+            \node[block, below of=eventdriver, dashed] (analysis) {Event analysis}
+                edge[linefrom] node[right] {(low-level) event} (eventdriver);
+            \node[block, below of=analysis] {Application}
+                edge[linefrom, dotted] node[right, near start] {(high-level) gesture} (analysis);
+
+            \node[right of=eventdriver, xshift=2em] (dummy) {};
+            \group{eventdriver}{eventdriver}{dummy}{analysis}{Architecture}
+        }
+    \end{figure}
+}
+
+\def\lefthand{\includegraphics[width=50pt]{data/hand.png}}
+\def\righthand{\reflectbox{\includegraphics[width=50pt, angle=-45]{data/hand.png}}}
+
+\def\areaproblem{
+    \begin{figure}[H]
+        \center
+        \begin{tikzpicture}[transform shape, scale=0.7]
+            \draw node[draw, black, minimum width=190, minimum height=140] at (0,0) {};
+            \draw node[fill=gray!50, draw=black!70, minimum height=40, minimum width=40] at (-1,-1) {\lefthand};
+            \draw node[] at (1.2,1) {\righthand};
+            \draw node[draw=black!80, diamond, minimum height=70, minimum width=70] at (1.2,1) {};
+        \end{tikzpicture}
+    \end{figure}
+}
+
+\def\areadiagram{
+    \begin{figure}[H]
+        \center
+        \architecture{
+            \node[block, below of=driver] (eventdriver) {Event driver}
+                edge[linefrom] node[right, near end] {device-specific messages} (driver);
+            \node[block, below of=eventdriver] (area) {Event areas}
+                edge[linefrom] node[right] {event} (eventdriver);
+            \node[block, right of=area, xshift=7em, dashed] (tracker) {Gesture detection}
+                edge[linefrom, bend right=10] node[above] {event} (area)
+                edge[lineto, bend left=10, dotted] node[below] {gesture} (area);
+            \node[block, below of=area] {Application}
+                edge[linefrom, dotted] node[right, near start] {gesture} (area);
+
+            \group{eventdriver}{eventdriver}{tracker}{area}{Architecture}
+        }
+    \end{figure}
+}
+
+\def\propagationproblem{
+    \begin{figure}[H]
+        \center
+        \begin{tikzpicture}[node distance=5.5em, transform shape, scale=0.6]
+            \draw node[draw=black, minimum width=190, minimum height=140] at (0,0) {};
+            \draw node[draw=black!60, minimum height=100, minimum width=100, pattern=north east lines] at (-0.1,-0.1) {};
+            \draw node[fill=gray!60, draw=black!70, minimum height=40, minimum width=40] at (0.3,0.4) {};
+            \fill (0.4, 0.6) circle (0.15);
+        \end{tikzpicture}
+    \end{figure}
+}
+
+\def\propagationdiagram{
+    \begin{figure}[H]
+        \center
+        \begin{tikzpicture}[node distance=5.5em, transform shape, scale=0.7]
+            \draw node[block, yshift=-10em, xshift=-3em] (driver) {Event driver};
+            \draw node[block, below of=driver] (gray) {Outer event area}
+                edge[linefrom] node[left] {1} (driver);
+            \draw node[block, below of=gray] (white) {Inner event area}
+                edge[linefrom, bend left=15] node[left] {2} (gray)
+                edge[lineto, bend right=15, red] node[right, black] {6} (gray);
+            \draw node[block, right of=white, xshift=4em] {\emph{drag} tracker}
+                edge[linefrom, bend right=15] node[above] {3} (white)
+                edge[lineto, dotted, bend left=15] node[below] {4} (white);
+            \draw node[block, right of=gray, xshift=4em] {\emph{drag} tracker}
+                edge[linefrom, bend right=15, red] node[above, black] {7} (gray)
+                edge[lineto, dotted, bend left=15, red] node[below, black] {8} (gray);
+            \draw node[block, below of=white] {Application}
+                edge[linefrom, dotted, bend left=65, red] node[left, black] {9} (gray)
+                edge[linefrom, dotted] node[left] {5} (white);
+        \end{tikzpicture}
+    \end{figure}
+}
+
+\def\fulldiagram{
+    \begin{figure}[h!]
+        \center
+        \architecture{
+            \node[block, below of=driver] (eventdriver) {Event driver}
+                edge[linefrom] node[right, near end] {device-specific messages} (driver);
+            \node[block, below of=eventdriver] (area) {Event areas}
+                edge[linefrom] node[right] {event} (eventdriver);
+            \node[block, right of=area, xshift=7em] (tracker) {Gesture trackers}
+                edge[linefrom, bend right=10] node[above] {event} (area)
+                edge[lineto, bend left=10, dotted] node[below] {gesture} (area);
+            \node[block, below of=area] {Application}
+                edge[linefrom, dotted] node[right, near start] {gesture} (area);
+
+            \group{eventdriver}{eventdriver}{tracker}{area}{Architecture}
+        }
+    \end{figure}
+}
+
+\def\daemondiagram{
+    \begin{figure}[H]
+        \centering
+        \begin{tikzpicture}[node distance=4em, transform shape, scale=0.7]
+            \node[block] (daemon) {Daemon};
+
+            \node[block, above of=daemon] (driver) {Device driver}
+                edge[lineto] (daemon);
+            \node[block, xshift=-4em, left of=driver] {Device driver}
+                edge[lineto] (daemon);
+            \node[block, xshift=4em, right of=driver] {Device driver}
+                edge[lineto] (daemon);
+
+            \node[block, below of=daemon] (app) {Application}
+                edge[linefrom, dotted] (daemon);
+            \node[block, xshift=-4em, left of=app] {Application}
+                edge[linefrom, dotted] (daemon);
+            \node[block, xshift=4em, right of=app] {Application}
+                edge[linefrom, dotted] (daemon);
+
+            \draw[dashed] (app.north)+(-4, 0.35) -- node[right=4, yshift=1] {Network protocol} ++(4, 0.35);
+        \end{tikzpicture}
+    \end{figure}
+}

+ 116 - 14
docs/final_presentation.tex

@@ -1,18 +1,10 @@
 \documentclass{beamer}
-\usepackage[english]{babel}
+\usepackage[english,dutch]{babel}
 \usepackage[utf8]{inputenc}
-\usepackage{beamerthemesplit,graphics,subfigure,url,listings}
+\usepackage{beamerthemesplit,graphics,subfigure,url,float,tikz}
 
 \definecolor{kugreen}{RGB}{130,151,183}
 
-\lstset {
-  language=Python,
-  basicstyle=\footnotesize,
-  backgroundcolor=\color{white},
-  frame=single,
-  tabsize=4
-}
-
 \mode<presentation> {
 	\usetheme{PaloAlto}
 	\usecolortheme[named=kugreen]{structure}
@@ -24,23 +16,133 @@
 \title{A generic architecture for gesture-based interaction}
 \author{Taddeüs Kroes}
 \institute{Universiteit van Amsterdam}
-\date{june 29, 2012}
+\date{29 juni 2012}
 
 \begin{document}
 
+\input{data/presentationdiagrams}
+
 \frame {
 	\titlepage
 }
 
 \frame {
-	\frametitle{Overview}
+	\frametitle{Inhoud}
 	\tableofcontents
 }
 
-\section{Problem}
+\section{Probleem}
+
+\frame {
+	\frametitle{Probleemstelling}
+
+	\begin{itemize}
+        \item Steeds meer apparaten voor complexe interactie, maar driver API
+            blijft low-level
+		\item Applicatieframeworks zijn beperkend
+        \item Oplossing: generieke architectuur voor detectie gebaren uit
+            driverberichten
+	\end{itemize}
+}
+
+\section{Architectuur}
+
+\frame {
+	\frametitle{Ontwerp architectuur}
+
+	\basicdiagram
+}
+
+\frame {
+	\frametitle{Van driver-specifiek naar algemeen}
+
+	\begin{itemize}
+		\item Verschillende drivers hebben verschillende API's
+		\item Vertaal apparaat-specifiek naar algemeen formaat in ``event
+		    driver''
+	\end{itemize}
+
+	\eventdriverdiagram
+}
+
+\frame {
+	\frametitle{Groeperen events}
+
+	\begin{itemize}
+		\item Driver is niet op de hoogte van ``widgets''
+            \areaproblem
+		\item Gebaar toewijzen aan widget met een ``event area''
+	\end{itemize}
+}
+
+\frame {
+	\frametitle{Groeperen events (2)}
+
+	\areadiagram
+}
+
+\frame {
+	\frametitle{Boomstructuur}
+
+	\begin{itemize}
+		\item Event toewijzen aan event area moeilijk bij overlap
+		\propagationproblem
+        \item Oplossing: zet event areas in boomstructuur
+        \item Event wordt omhoog ``gepropageerd'' in de boom, tenzij gestopt
+	\end{itemize}
+}
+
+\frame {
+	\frametitle{Propagatie}
+
+    \propagationdiagram
+}
+
+\frame {
+	\frametitle{Gebaardetectie}
+
+	\begin{itemize}
+		\item Simpele gebaren zijn te detecteren met expliciete code, complexe
+		    gebaren bijv.met machine learning
+		\item Expliciete detectiecode wordt snel onbeheersbaar
+		\item Verpak verschillende detectiemethodes in ``gesture trackers''
+		\item Applicatieontwikkelaar kan zelf gesture trackers toevoegen
+	\end{itemize}
+}
+
+\frame {
+	\frametitle{Gebaardetectie (2)}
+
+	\fulldiagram
+}
+
+\frame {
+	\frametitle{Daemon}
+
+	\begin{itemize}
+		\item Communicatie door een netwerkprotocol
+		\item Taal-onafhankelijk
+		\item Platform-onafhankelijk
+		\item Meerdere appliaties tegelijkertijd
+	\end{itemize}
+
+	\daemondiagram
+}
+
+\section{Demo}
+
+\frame {
+	\frametitle{Demo}
+
+	\begin{itemize}
+		\item
+	\end{itemize}
+}
+
+\section{Toekomst}
 
 \frame {
-	\frametitle{}
+	\frametitle{Suggesties voor toekomstig onderzoek}
 
 	\begin{itemize}
 		\item

+ 5 - 1
docs/rules.mk

@@ -1,3 +1,5 @@
+PRESENTATION := final_presentation
+PRESENTATIONDIAGRAMS := data/presentationdiagrams
 REPORT := report
 DIAGRAMS := data/diagrams
 LATEX = TEXINPUTS=$(d):$(b): pdflatex -halt-on-error -interaction=nonstopmode \
@@ -7,7 +9,7 @@ REF_WARNING := "Rerun to get cross-references right"
 .PHONY: docs bibclean
 
 docs: $(b)$(REPORT).pdf $(b)proposal.pdf $(b)presentation.pdf \
-	$(b)final_presentation.pdf
+	$(b)$(PRESENTATION).pdf
 
 $(b)%.pdf: $(d)%.tex
 	mkdir -p $(@D)
@@ -17,6 +19,8 @@ $(b)%.pdf: $(d)%.tex
 		$(LATEX) $^; \
 	done
 
+$(b)$(PRESENTATION).pdf: $(d)$(PRESENTATIONDIAGRAMS).tex
+
 $(b)$(REPORT).pdf: $(d)$(DIAGRAMS).tex $(b)$(REPORT).bbl
 
 $(b)$(REPORT).bbl: $(d)$(REPORT).bib