Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
multitouch
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Taddeüs Kroes
multitouch
Commits
d509d424
Commit
d509d424
authored
Jun 11, 2012
by
Taddeüs Kroes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved 'Introduction' and 'Design - Supporting multiple drivers' in report.
parent
019f0e6d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
140 additions
and
85 deletions
+140
-85
docs/report.bib
docs/report.bib
+22
-0
docs/report.tex
docs/report.tex
+118
-85
No files found.
docs/report.bib
View file @
d509d424
...
@@ -114,3 +114,25 @@
...
@@ -114,3 +114,25 @@
x-fetchedfrom = "Bibsonomy",
x-fetchedfrom = "Bibsonomy",
year = 2012
year = 2012
}
}
@misc{mssurface,
author = "Corporation, Microsoft",
howpublished = "\url{http://www.samsunglfd.com/product/feature.do?modelCd=SUR40}",
title = "{Microsoft Surface}",
year = "2011"
}
@misc{kinect,
author = "Corporation, Microsoft",
howpublished = "\url{http://www.microsoft.com/en-us/kinectforwindows/}",
title = "{Microsoft kinect}",
year = "2010"
}
@misc{leap,
author = "{David Holz}, Michael Buckwald (the Leap Motion team)",
howpublished = "\url{http://leapmotion.com/}",
title = "{Leap}",
year = "2012"
}
docs/report.tex
View file @
d509d424
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
\hypersetup
{
colorlinks=true,linkcolor=black,urlcolor=blue,citecolor=DarkGreen
}
\hypersetup
{
colorlinks=true,linkcolor=black,urlcolor=blue,citecolor=DarkGreen
}
% Title Page
% Title Page
\title
{
A generic architecture for
the detection of multi-touch gestures
}
\title
{
A generic architecture for
gesture-based interaction
}
\author
{
Taddeüs Kroes
}
\author
{
Taddeüs Kroes
}
\supervisors
{
Dr. Robert G. Belleman (UvA)
}
\supervisors
{
Dr. Robert G. Belleman (UvA)
}
\signedby
{
Dr. Robert G. Belleman (UvA)
}
\signedby
{
Dr. Robert G. Belleman (UvA)
}
...
@@ -30,57 +30,72 @@
...
@@ -30,57 +30,72 @@
\chapter
{
Introduction
}
\chapter
{
Introduction
}
% TODO: put Qt link in bibtex
Surface-touch devices have evolved from pen-based tablets to single-touch
Multi-touch devices enable a user to interact with software using intuitive
trackpads, to multi-touch devices like smartphones and tablets. Multi-touch
hand gestures, rather with interaction tools like mouse and keyboard. With the
devices enable a user to interact with software using hand gestures, making the
increasing use of touch screens in phones and tablets, multi-touch interaction is
interaction more expressive and intuitive. These gestures are more complex than
becoming increasingly common.The driver of a touch device provides low-level
primitive ``click'' or ``tap'' events that are used by single-touch devices.
events. The most basic representation of these low-level events consists of
Some examples of more complex gestures are so-called ``pinch''
\footnote
{
A
\emph
{
down
}
,
\emph
{
move
}
and
\emph
{
up
}
events.
``pinch'' gesture is formed by performing a pinching movement with multiple
fingers on a multi-touch surface. Pinch gestures are often used to zoom in or
More complex gestures must be designed in such a way, that they can be
out on an object.
}
and ``flick''
\footnote
{
A ``flick'' gesture is the act of
represented by a sequence of basic events. For example, a ``tap'' gesture can
grabbing an object and throwing it in a direction on a touch surface, giving
be represented as a
\emph
{
down
}
event that is followed by an
\emph
{
up
}
event
it momentum to move for some time after the hand releases the surface.
}
within a certain time.
gestures.
The translation process of driver-specific messages to basic events, and events
The complexity of gestures is not limited to navigation in smartphones. Some
to multi-touch gestures is a process that is often embedded in multi-touch
multi-touch devices are already capable of recognizing objects touching the
application frameworks, like Nokia's Qt
\cite
{
qt
}
. However, there is no
screen
\cite
[Microsoft Surface]
{
mssurface
}
. In the near future, touch screens
separate implementation of the process itself. Consequently, an application
will possibly be extended or even replaced with in-air interaction (Microsoft's
developer who wants to use multi-touch interaction in an application is forced
Kinect
\cite
{
kinect
}
and the Leap
\cite
{
leap
}
).
to choose an application framework that includes support for multi-touch
gestures. Moreover, the set of supported gestures is limited by the application
The interaction devices mentioned above generate primitive events. In the case
framework. To incorporate some custom event in an application, the chosen
of surface-touch devices, these are
\emph
{
down
}
,
\emph
{
move
}
and
\emph
{
up
}
framework needs to provide a way to extend existing multi-touch gestures.
events. Application programmers who want to incorporate complex, intuitive
gestures in their application face the challenge of interpreting these
% Hoofdvraag
primitive events as gestures. With the increasing complexity of gestures, the
The goal of this thesis is to create a generic architecture for the support of
complexity of the logic required to detect these gestures increases as well.
multi-touch gestures in applications. To test the design of the architecture, a
This challenge limits, or even deters the application developer to use complex
reference implementation is written in Python. The architecture should
gestures in an application.
incorporate the translation process of low-level driver messages to multi-touch
gestures. It should be able to run beside an application framework. The
The main question in this research project is whether a generic architecture
definition of multi-touch gestures should allow extensions, so that custom
for the detection of complex interaction gestures can be designed, with the
gestures can be defined.
capability of managing the complexity of gesture detection logic.
% Deelvragen
Application frameworks for surface-touch devices, such as Nokia's Qt
\cite
{
qt
}
,
To design such an architecture properly, the following questions are relevant:
include the detection of commonly used gestures like
\emph
{
pinch
}
gestures.
\begin{itemize}
However, this detection logic is dependent on the application framework.
\item
What is the input of the architecture? This is determined by the
Consequently, an application developer who wants to use multi-touch interaction
output of multi-touch drivers.
in an application is forced to choose an application framework that includes
\item
How can extendability of the supported gestures be accomplished?
support for multi-touch gestures. Therefore, a requirement of the generic
% TODO: zijn onderstaande nog relevant? beter omschrijven naar "Design"
architecture is that it must not be bound to a specific application framework.
% gerelateerde vragen?
Moreover, the set of supported gestures is limited by the application framework
\item
How can the architecture be used by different programming languages?
of choice. To incorporate a custom event in an application, the application
A generic architecture should not be limited to one language.
developer needs to extend the framework. This requires extensive knowledge of
\item
How can the architecture serve multiple applications at the same
the framework's architecture. Also, if the same gesture is used in another
time?
application that is based on another framework, the detection logic has to be
\end{itemize}
translated for use in that framework. Nevertheless, application frameworks are
a necessity when it comes to fast, cross-platform development. Therefore, the
architecture design should aim to be compatible with existing frameworks, but
% Afbakening
provide a way to detect and extend gestures independent of the framework.
The scope of this thesis includes the design of a generic multi-touch detection
architecture, a reference implementation of this design, and the integration of
An application framework is written in a specific programming language. A
the reference implementation in a test case application.
generic architecture should not limited to a single programming language. The
ultimate goal of this thesis is to provide support for complex gesture
interaction in any application. Thus, applications should be able to address
the architecture using a language-independent method of communication. This
intention leads towards the concept of a dedicated gesture detection
application that serves gestures to multiple programs at the same time.
The scope of this thesis is limited to the detection of gestures on multi-touch
surface devices. It presents a design for a generic gesture detection
architecture for use in multi-touch based applications. A reference
implementation of this design is used in some test case applications, whose
goal is to test the effectiveness of the design and detect its shortcomings.
% FIXME: Moet deze nog in de introductie?
% How can the input of the architecture be normalized? This is needed, because
% multi-touch drivers use their own specific message format.
\section
{
Structure of this document
}
\section
{
Structure of this document
}
...
@@ -109,9 +124,7 @@ the reference implementation in a test case application.
...
@@ -109,9 +124,7 @@ the reference implementation in a test case application.
gestures and flexibility in rule definitions, over-complexity can be
gestures and flexibility in rule definitions, over-complexity can be
avoided.
avoided.
% oplossing: trackers. bijv. TapTracker, TransformationTracker gescheiden
\section
{
Gesture recognition implementation for Windows 7
}
\section
{
Gesture recognition software for Windows 7
}
The online article
\cite
{
win7touch
}
presents a Windows 7 application,
The online article
\cite
{
win7touch
}
presents a Windows 7 application,
written in Microsofts .NET. The application shows detected gestures in a
written in Microsofts .NET. The application shows detected gestures in a
...
@@ -128,6 +141,7 @@ the reference implementation in a test case application.
...
@@ -128,6 +141,7 @@ the reference implementation in a test case application.
feature by also using different gesture trackers to track different gesture
feature by also using different gesture trackers to track different gesture
types.
types.
% TODO: This is not really 'related', move it to somewhere else
\section
{
Processing implementation of simple gestures in Android
}
\section
{
Processing implementation of simple gestures in Android
}
An implementation of a detection architecture for some simple multi-touch
An implementation of a detection architecture for some simple multi-touch
...
@@ -168,50 +182,69 @@ the reference implementation in a test case application.
...
@@ -168,50 +182,69 @@ the reference implementation in a test case application.
multi-touch gesture detection architecture. The chapter represents the
multi-touch gesture detection architecture. The chapter represents the
architecture as a diagram of relations between different components.
architecture as a diagram of relations between different components.
Sections
\ref
{
sec:driver-support
}
to
\ref
{
sec:event-analysis
}
define
Sections
\ref
{
sec:driver-support
}
to
\ref
{
sec:event-analysis
}
define
requirements for the arch
t
itecture, and extend the diagram with components
requirements for the architecture, and extend the diagram with components
that meet these requirements. Section
\ref
{
sec:example
}
describes an
that meet these requirements. Section
\ref
{
sec:example
}
describes an
example usage of the architecture in an application.
example usage of the architecture in an application.
\subsection*
{
Position of architecture in software
}
\subsection*
{
Position of architecture in software
}
The input of the architecture comes from
some multi-touch device
The input of the architecture comes from
a multi-touch device driver.
driver. The task of the architecture is to translate this input to
The task of the architecture is to translate this input to multi-touch
multi-touch gestures that are used by an application, as illustrated in
gestures that are used by an application, as illustrated in figure
figure
\ref
{
fig:basicdiagram
}
. In the course of this chapter, the
\ref
{
fig:basicdiagram
}
. In the course of this chapter, the diagram is
diagram is
extended with the different components of the architecture.
extended with the different components of the architecture.
\basicdiagram
{
A diagram showing the position of the architecture
\basicdiagram
{
A diagram showing the position of the architecture
relative to the device driver and a multi-touch application.
}
relative to the device driver and a multi-touch application. The input
of the architecture is given by a touch device driver. This output is
translated to complex interaction gestures and passed to the
application that is using the architecture.
}
\section
{
Supporting multiple drivers
}
\section
{
Supporting multiple drivers
}
\label
{
sec:driver-support
}
\label
{
sec:driver-support
}
The TUIO protocol
\cite
{
TUIO
}
is an example of a touch driver that can be
The TUIO protocol
\cite
{
TUIO
}
is an example of a touch driver that can be
used by multi-touch devices. Other drivers do exist, which should also be
used by multi-touch devices. TUIO uses ALIVE- and SET-messages to communicate
supported by the architecture. Therefore, there must be some translation of
low-level touch events (see appendix
\ref
{
app:tuio
}
for more details).
driver-specific messages to a common format in the arcitecture. Messages in
These messages are specific to the API of the TUIO protocol. Other touch
this common format will be called
\emph
{
events
}
. Events can be translated
drivers may use very different messages types. To support more than
to multi-touch
\emph
{
gestures
}
. The most basic set of events is
one driver in the architecture, there must be some translation from
$
\{
point
\_
down, point
\_
move, point
\_
up
\}
$
. Here, a ``point'' is a touch
driver-specific messages to a common format for primitive touch events.
object with only an (x, y) position on the screen.
After all, the gesture detection logic in a ``generic'' architecture should
not be implemented based on driver-specific messages. The event types in
A more extended set could also contain more complex events. An object can
this format should be chosen so that multiple drivers can trigger the same
also have a rotational property, like the ``fiducials''
\footnote
{
A fiducial
events. If each supported driver adds its own set of event types to the
is a pattern used by some touch devices to identify objects.
}
type
common format, it the purpose of being ``common'' would be defeated.
in the TUIO protocol. This results in
$
\{
point
\_
down, point
\_
move,
\\
point
\_
up, object
\_
down, object
\_
move, object
\_
up, object
\_
rotate
\}
$
.
A reasonable expectation for a touch device driver is that it detects
simple touch points, with a ``point'' being an object at an
$
(
x, y
)
$
The component that translates driver-specific messages to events, is called
position on the touch surface. This yields a basic set of events:
the
\emph
{
event driver
}
. The event driver runs in a loop, receiving and
$
\{
point
\_
down, point
\_
move, point
\_
up
\}
$
.
analyzing driver messages. The event driver that is used in an application
is dependent of the support of the multi-touch device.
The TUIO protocol supports fiducials
\footnote
{
A fiducial is a pattern used
by some touch devices to identify objects.
}
, which also have a rotational
When a sequence of messages is analyzed as an event, the event driver
property. This results in a more extended set:
$
\{
point
\_
down, point
\_
move,
delegates the event to other components in the architecture for translation
point
\_
up, object
\_
down, object
\_
move, object
\_
up,
\\
object
\_
rotate
\}
$
.
to gestures.
Due to their generic nature, the use of these events is not limited to the
TUIO protocol. Another driver that can keep apart rotated objects from
simple touch points could also trigger them.
The component that translates driver-specific messages to common events,
will be called the
\emph
{
event driver
}
. The event driver runs in a loop,
receiving and analyzing driver messages. When a sequence of messages is
analyzed as an event, the event driver delegates the event to other
components in the architecture for translation to gestures. This
communication flow is illustrated in figure
\ref
{
fig:driverdiagram
}
.
A touch device driver can be supported by adding an event driver
implementation for it. The event driver implementation that is used in an
application is dependent of the support of the touch device.
\driverdiagram
{
Extension of the diagram from figure
\ref
{
fig:basicdiagram
}
,
\driverdiagram
{
Extension of the diagram from figure
\ref
{
fig:basicdiagram
}
,
showing the position of the event driver in the architecture.
}
showing the position of the event driver in the architecture. The event
driver translates driver-specific to a common set of events, which are
delegated to analysis components that will interpret them as more complex
gestures.
}
\section
{
Restricting gestures to a screen area
}
\section
{
Restricting gestures to a screen area
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment