TultiMouch
Een
geïntegreerd,
uitbreidbaar
Multi‐Touch
platform
Project
in
het
kader
van
het
vak
“Softwarearchitectuur”
uit
de
opleiding
“Master
in
de
Ingenieurswetenschappen:
Computerwetenschappen”
Gedoceerd
door
Prof.
Dr.
Ir.
Frank
Gielen
(vakgroep
INTEC)
Onder
begeleiding
van
Nico
Goeminne
(vakgroep
INTEC)
Academiejaar
2008‐2009
(1e
semester)
Groep
8
Aljosha
Demeulemeester
Solution
Architect
Dieter
Vergote
Jan
Frederix
Jean‐Luc
Deprez
Quality
Assurance
Manager
Jense
Seurynck
PR
&
Logistics
Manager
Kristof
De
Schepper
Report
&
Presentation
Manager
Michaël
Vittorelli
Configuration
Manager
Pieter
Cailliau
Research
Manager
Pieter
Mees
Project
Manager
7/12/08
TultiMouch
i
TultiMouch
Een
geïntegreerd,
uitbreidbaar
Multi‐Touch
platform
Project
in
het
kader
van
het
vak
“Softwarearchitectuur”
uit
de
opleiding
“Master
in
de
Ingenieurswetenschappen:
Computerwetenschappen”
Gedoceerd
door
Prof.
Dr.
Ir.
Frank
Gielen
(vakgroep
INTEC)
Onder
begeleiding
van
Nico
Goeminne
(vakgroep
INTEC)
Academiejaar
2008‐2009
(1e
semester)
Groep
8
Aljosha
Demeulemeester
Solution
Architect
Dieter
Vergote
Jan
Frederix
Jean‐Luc
Deprez
Quality
Assurance
Manager
Jense
Seurynck
PR
&
Logistics
Manager
Kristof
De
Schepper
Report
&
Presentation
Manager
Michaël
Vittorelli
Configuration
Manager
Pieter
Cailliau
Research
Manager
Pieter
Mees
Project
Manager
7/12/08
TultiMouch
ii
Dankwoord
Het
ontwikkelen
van
een
software
architectuur
is
geen
eenvoudig
proces.
Het
is
een
proces
met
vele
iteraties,
vergaderingen,
deadlines,
consensussen,
...
Graag
zouden
we
iedereen
bedanken
die
dit
project
mogelijk
maakte.
Gedurende
twaalf
weken
konden
we
rekenen
op
Nico
Goeminne
die
ons
met
al
zijn
vakkennis
steeds
in
de
juiste
richting
stuurde.
Van
bij
het
begin
tot
op
het
einde
hebben
we
op
een
zeer
aangename
manier
met
hem
kunnen
samenwerken
en
konden
we
steeds
op
hem
terugvallen!
Dieter
Van
Rijsselbergen,
projectlid
“Pizza”
UGent,
gaf
ons
de
kans
kennis
te
maken
met
een
bestaande
Multi‐Touch
tafel,
waarvoor
dank.
Ook
willen
we
graag
de
mensen
van
het
secretariaat,
An
Buyse
en
Davinia
Stevens,
bedanken
om
voor
ons
iedere
week
een
vergaderzaal
vrij
te
houden.
7/12/08
TultiMouch
iii
Table
of
Contents
Dankwoord........................................................................................................................................................................... iii
Vision................................................................................................................................. 1
Mission
statement ...............................................................................................................................................................1
Context...................................................................................................................................................................................... 1
Value
Proposition ................................................................................................................................................................ 1
Het
platform...........................................................................................................................................................................1
Features ...................................................................................................................................................................................1
Scope ......................................................................................................................................................................................... 1
Essentials................................................................................................................................................................................. 2
Nicetohave ........................................................................................................................................................................... 2
Stakeholders ..........................................................................................................................................................................3
Architectural
Drivers .........................................................................................................................................................3
Usability ................................................................................................................................................................................... 3
Modifiability........................................................................................................................................................................... 3
Performance........................................................................................................................................................................... 3
Security..................................................................................................................................................................................... 4
State
of
the
Art .................................................................................................................. 5
Inleiding...................................................................................................................................................................................5
Hardware
onderzoek .........................................................................................................................................................6
MultiTouch
Technologieën ............................................................................................................................................ 6
Devicelokalisatie
en
authenticatie ...........................................................................................................................10
Software
onderzoek ........................................................................................................................................................ 12
Pluggable
architectures..................................................................................................................................................12
TUIO
Protocol......................................................................................................................................................................13
Bestaande
bibliotheken
voor
MultiTouch .............................................................................................................13
Private
Desktop ..................................................................................................................................................................16
MultiUser
Applications ..................................................................................................................................................17
Marktstudie......................................................................................................................................................................... 19
Huidig
aanbod.....................................................................................................................................................................19
Patenten.................................................................................................................................................................................21
Verwachte
doorbraak......................................................................................................................................................22
Business
Model ................................................................................................................ 25
Inleiding................................................................................................................................................................................ 25
Analyse
van
de
huidige
markt..................................................................................................................................... 25
Een
open
source
bibliotheek ....................................................................................................................................... 26
Application
Store .............................................................................................................................................................. 26
Support
&
Services........................................................................................................................................................... 26
Architecture ..................................................................................................................... 27
Requirements
View ......................................................................................................................................................... 27
Inleiding .................................................................................................................................................................................27
Lijst
van
use
cases..............................................................................................................................................................27
Uitgewerkte
Use
Cases.....................................................................................................................................................28
Quality
Attribute
Scenario’s......................................................................................................................................... 36
Inleiding .................................................................................................................................................................................36
Usability .................................................................................................................................................................................36
Modifiability.........................................................................................................................................................................37
Performance.........................................................................................................................................................................37
7/12/08
TultiMouch
iv
Utility
Tree............................................................................................................................................................................38
Module
View ....................................................................................................................................................................... 39
Inleiding .................................................................................................................................................................................39
Totaaloverzicht ..................................................................................................................................................................39
Plugin
Infrastructuur .....................................................................................................................................................40
MultiTouch
Input
(MTI) ................................................................................................................................................43
GUI............................................................................................................................................................................................49
Device
Management .........................................................................................................................................................51
Session
Management........................................................................................................................................................57
Process
View....................................................................................................................................................................... 60
Inleiding .................................................................................................................................................................................60
Lijst
van
sequentiediagrammen..................................................................................................................................60
Uitwerking
sequentiediagrammen ............................................................................................................................61
Infrastructure
View ......................................................................................................................................................... 85
Inleiding .................................................................................................................................................................................85
Quality
Attributes ..............................................................................................................................................................85
Protocollen............................................................................................................................................................................86
Minimale
Deployment......................................................................................................................................................87
Maximale
Deployment.....................................................................................................................................................88
Algemeen
besluit ............................................................................................................. 89
Verklarende
Woordenlijst ................................................................................................ 90
Appendices ...................................................................................................................... 91
Appendix
1:
Complete
lijst
van
Features................................................................................................................ 91
7/12/08
TultiMouch
v
Vision
Mission
statement
Context
Reeds
enkele
jaren
maakt
een
nieuwe
vorm
van
digitale
input
die
wel
eens
een
sterke
concurrent
kan
worden
t.o.v.
de
traditionele
invoerapparaten
zijn
opmars.
Multi‐Touch
maakt
het
mogelijk
om
met
meerdere
inputs
tegelijk
op
eenzelfde
raakoppervlak
te
werken.
Dit
oppervlak
is
meestal
een
beeldscherm,
maar
kan
bijvoorbeeld
ook
een
touchpad
van
een
laptop
zijn.
Bij
de
ontwikkeling
van
Multi‐Touch
software
zijn
hedendaagse
ontwikkelaars
vrij
beperkt
in
hun
bewegingsvrijheid,
aangezien
de
meeste
platformen
een
traditionele
input
van
muis
en
keyboard
verwachten.
Value
Proposition
Met
het
project
TultiMouch
pogen
we
aan
dat
probleem
tegemoet
te
komen
door
een
platform
te
creëren
die
ontwikkelaars
in
staat
stelt
om
op
een
eenvoudige
manier
Multi‐Touch
applicaties
te
ontwikkelen.
Belangrijke
eigenschappen
van
dit
platform
zijn
de
uitbreidbaarheid,
en
de
koppeling
met
externe
apparaten.
Het
platform
Het
zogenaamde
platform
waarover
we
spreken
is
een
verzameling
van
functionaliteit
dat
men
kan
gebruiken
om
gemakkelijk
Multi‐Touch
applicaties
te
bouwen;
applicaties
die
kunnen
werken
in
een
door
ons
voorziene
desktop
omgeving.
In
deze
desktop
omgeving
kunnen
meerdere
gebruikers
verschillende
applicaties
opstarten,
of
kan
er
een
applicatie
geladen
worden
die
het
hele
scherm
inneemt
(bijvoorbeeld
een
digitaal
gezelschapsspel).
Features
In
dit
gedeelte
worden
de
eigenschappen
van
ons
platform
bondig
uitgelegd,
onderverdeeld
in
drie
categorieën:
scope,
essentials
en
nice‐to‐have’s.
De
items
onder
scope
zijn
de
stukken
software
die
we
in
het
tweede
semester
willen
implementeren,
en
waarvoor
we
een
grondig
uitgewerkte
architectuur
zullen
voorzien.
De
essentials
behoren
tot
het
totaalbeeld
van
het
platform;
dit
zijn
belangrijke
onderdelen
die
later
zeker
geïmplementeerd
moeten
worden
in
het
platform,
maar
waarvoor
we
dit
en
volgend
semester
te
weinig
tijd
hebben.
Tenslotte
volgen
nog
een
aantal
eigenschappen
die
minder
belangrijk
zijn,
maar
door
hun
toevoegende
waarde
het
vermelden
waard
zijn
–
de
nicetohave’s.
Voor
een
beknopte,
doch
meer
uitgebreide
lijst
van
features
verwijzen
we
naar
Appendix
1.
Scope
Uitbreidbaarheid
Zoals
eerder
vermeld
is
uitbreidbaarheid
een
centrale
eigenschap
van
het
platform.
Dit
zal
mogelijk
gemaakt
worden
door
een
pluggable
architecture,
een
architectuur
waarin
men
vrij
plug‐ins
kan
toevoegen,
verwijderen
of
vervangen.
Deze
plug‐ins
kunnen
al
dan
niet
afhankelijk
zijn
van
andere
plug‐ins.
7/12/08
TultiMouch
1
Object
recognition
and
tracking,
gestures
Een
andere
belangrijke
component
in
ons
platform
is
de
herkenning
van
objecten
die
in
aanraking
zijn
met
het
Multi‐Touch
raakoppervlak.
Dit
omvat
zowel
aanrakingen
met
de
handen
als
dagdagelijkse
voorwerpen
die
op
een
Multi‐Touch
tafel
kunnen
liggen;
een
onderscheid
dat
ook
voor
de
gebruiker
van
het
platform
kenbaar
zal
zijn.
Verder
zullen
ook
de
bewegingen
van
objecten
geregistreerd
en
beschikbaar
gesteld
worden.
Tenslotte
is
het
met
deze
informatie
voorhanden
relatief
eenvoudig
gesture
herkenning
aan
te
bieden.
Device
related
Ontdekking,
lokalisatie
en
identificatie
Onmisbaar
bij
veel
Multi‐Touch
gebruikersinterfaces
is
de
interactie
met
externe
apparaten;
denk
aan
een
gsm
met
een
Bluetooth
connectie
of
een
fototoestel
dat
kan
aangesloten
worden
met
een
USB
kabel.
Het
platform
moet
voorzien
zijn
om
m.b.v.
een
plug‐in,
verbindingen
te
maken
met
verschillende
apparaten
via
huidige,
en
eventueel
toekomstige,
technologieën.
Meer
concreet
zal
het
platform
nieuwe
apparaten
ontdekken
(discovery),
ze
lokaliseren
op
een
Multi‐Touch
tafel
(localization)
en
tenslotte
het
apparaat
bevragen
naar
zijn
identiteit
(identification).
Interactie
Eenmaal
een
connectie
tot
stand
is
gebracht
met
één
of
meerdere
apparaten,
willen
we
er
natuurlijk
mee
communiceren.
Bij
dit
onderdeel
is
het
heel
moeilijk
om
alle
bestaande
toepassingen
outofthebox
te
ondersteunen
(denk
bijvoorbeeld
aan
de
verschillende
Bluetooth
profiles).
Standaard
zullen
we
enkel
filetransfer
voorzien,
en
wordt
er
ruimte
gelaten
om
door
middel
van
plug‐ins
extra
services
toe
te
voegen.
GUI
Indien
ontwikkelaars
gemakkelijk
applicaties
wensen
te
ontwikkelen
voor
een
Multi‐Touch
omgeving,
mag
een
gebruiksvriendelijke
bibliotheek
voor
het
ontwikkelen
van
een
grafische
interface
zeker
niet
ontbreken.
Componenten
die
we
zeker
zullen
voorzien
zijn
diegene
die
noodzakelijk
geacht
worden
voor
het
uitwerken
van
de
Private
Desktop.
Java
Swing
zal
hier
ongetwijfeld
een
grote
bron
van
inspiratie
zijn.
Aangezien
een
Multi‐Touch
opstelling
in
de
toekomst
misschien
zowel
muis
als
toetsenbord
doet
verdwijnen
in
bepaalde
omgevingen,
moet
het
verlies
van
tekstinvoer
opgevangen
worden.
Een
virtueel
toetsenbord
dat
makkelijk
aangeroepen
kan
worden
vanuit
het
platform
is
dus
al
zeker
geen
slecht
idee
voor
een
standaard
widget.
Essentials
Grofweg
kunnen
we
drie
grote
categorieën
van
features
aanduiden
die
na
de
proof
of
concept
van
dit
project
verder
uitgewerkt
moeten
worden.
Zoals
hierboven
besproken
is
een
uitgebreide
GUI
bibliotheek
hier
één
van.
Een
tweede
categorie
heeft
betrekking
tot
externe
apparaten
(devices).
Om
de
usability
te
verhogen
moeten
de
belangrijkste
protocols
en
protocol
services
(i.h.b.
Bluetooth
profiles)
standaard
opgenomen
worden
in
het
platform.
Een
laatste
categorie
is
veiligheid;
de
bespreking
hiervan
volgt
in
het
security
gedeelte
bij
Quality
Attributes.
Tenslotte
vermelden
we
nog
de
automatische
dependencyresolver.
Indien
plug‐ins
steunen
op
andere
plug‐ins
is
het
wenselijk
dat
er
een
geautomatiseerd
systeem
bestaat
die
mogelijke
afhankelijkheidsproblemen
automatisch
kan
oplossen.
Nice‐to‐have
Het
platform
zal
objecten
op
een
Multi‐Touch
gebruikersinterface
kunnen
herkennen.
Hiertoe
behoren
ook
afgedrukte
foto’s
of
bijvoorbeeld
een
A4‐blad
met
tekst.
Het
is
technisch
gezien
niet
onmogelijk
om
(langs
de
achterkant
van
het
Multi‐Touch
schermoppervlak)
hier
een
digitale
7/12/08
TultiMouch
2
afbeelding
van
hoge
resolutie
van
te
nemen.
Op
die
manier
kan
men
foto’s
of
documenten
heel
eenvoudig
digitaliseren.
Eventueel
kan
OCR
(Optical
Character
Recognition)
toegepast
worden
indien
er
zich
tekst
bevindt
op
het
papier.
Stakeholders
Uit
het
bovenstaande
blijkt
duidelijk
dat
de
belangrijkste
stakeholder
van
het
platform
de
ontwikkelaar
van
Multi‐Touch
software
is.
Omdat
het
platform
zo
generiek
mogelijk
wordt
gehouden,
is
er
in
principe
geen
restrictie
op
het
type
software
dat
men
voor
het
platform
kan
creëren.
Dat
neemt
niet
weg
dat
bepaalde
softwareontwikkelaars
eerder
naar
ons
product
zullen
grijpen
dan
anderen.
We
dachten
in
dit
opzicht
bijvoorbeeld
aan
ontwikkelaars
van:
•
bord‐
en
gezelschapsspellen
•
toepassingen
zoals
Windows
Media
Center
(in
de
huiskamer
door
een
foto‐,
muziek‐
of
filmcollectie
bladeren)
•
ontwikkelaars
van
IDE’s
(aanmaken
en
bewerken
van
grote
UML
diagrammen)
•
...
We
zien
echter
nog
twee
mogelijke
klassen
van
stakeholders
namelijk:
• •
Hardwarebouwers
die
het
platform
kunnen
integreren
en
meeleveren
met
hun
systemen
Eindgebruikers
die
rechtstreeks
of
onrechtstreeks
in
contact
komen
met
het
platform
via
producten
van
de
bovenstaande
stakeholders
Architectural
Drivers
Wat
quality
attributes
betreft
kunnen
we
stellen
dat
usability
bij
het
ontwikkelen
van
een
Multi‐ Touch
platform
het
belangrijkste
is,
kort
gevolgd
door
modifiability
en
performance.
De
verklaring
hiervoor
is
eerst
en
vooral
dat
het
platform
gebruikt
zal
worden
door
softwareontwikkelaars;
en
dat
kan
alleen
als
deze
makkelijk
hun
weg
vinden
in
de
door
ons
verschafte
werkomgeving.
Usability
Om
een
grote
usability
te
bereiken
zal
een
goed
gedocumenteerde
hulp
moeten
worden
voorzien,
met
zoekmogelijkheden
en
code
samples
voor
al
onze
features.
De
leertijd
moet
beperkt
zijn.
We
kunnen
dit
meten
door
een
limiet
te
leggen
op
de
tijd
die
het
mag
kosten
om
aan
de
hand
van
een
tutorial
een
“Hello
Device”
applicatie
te
bouwen.
Dit
is
een
applicatie
waar
men
een
Bluetooth‐apparaat
op
de
Multi‐Touch
tafel
legt,
waarna
er
naast
het
apparaat
een
tekst
verschijnt.
Het
is
m.a.w.
belangrijk
dat
de
programmeur
heel
eenvoudig
toegang
heeft
tot
devicedetectie
en
–interactie.
Tenslotte
moet
het
mogelijk
zijn
om
Multi‐Touch
sofware
te
ontwikkelen
zonder
de
aanwezigheid
van
een
Multi‐Touch
scherm.
Dit
kan
bijvoorbeeld
door
de
Multi‐Touch
input
in
IDE’s
te
vervangen
door
andere
bronnen
(videostreams,
en
of
andere
testdata).
Modifiability
Modifiability
staat
op
de
tweede
plaats
omdat
één
van
de
voornaamste
key
features
pluggability
is.
Het
moet
voor
de
ontwikkelaar
mogelijk
zijn
om
at
runtime
functionele
blokken
aan
het
platform
toe
te
voegen,
verwijderen
en
vervangen
–
met
de
nodige
securitybeperkingen
in
acht
genomen.
Performance
Performance
is
ook
belangrijk
omdat
het
de
usability
onrechtstreeks
beinvloed.
Het
zou
voor
een
ontwikkelaar
namelijk
onaanvaardbaar
zijn
dat
een
eenvoudige
applicatie
zeer
moeizaam
draait
op
het
platform.
Enkele
eisen
die
we
voor
onszelf
opstellen
zijn
bijgevolg:
•
Minstens
53
bewegende
blobs
vlot
kunnen
tracken.
7/12/08
TultiMouch
3
•
Een
aangename,
responsieve
gebruikerservaring.
•
Het
platform
moet
zelf
een
minimaal
aantal
resources
gebruiken
en
voldoende
overlaten
voor
de
applicaties.
Security
Security
is
geen
prioriteit
gezien
het
korte
tijdsbestek
van
dit
project.
Indien
het
project
voortgezet
wordt,
zullen
volgende
security
attributen
zeker
in
rekening
worden
gebracht:
Authorization
van
de
devices,
sandboxing
van
de
applicaties,
application
rights
management.
7/12/08
TultiMouch
4
State
of
the
Art
Inleiding
De
hoofdopdracht
van
het
project
is
een
softwarearchitectuur
te
bouwen
rondom
Multi‐Touch
en
de
connectie
met
mobile
devices.
In
dit
document
verzamelen
we
de
huidige
stand
van
zaken
rondom
Multi‐Touch.
In
het
eerste
hoofdstuk
over
hardware
onderzoek
bespreken
we
vooral
de
technologieën
van
Multi‐Touch
tafels.
We
bespreken
ook
verder
de
mogelijkheden
om
mobiele
toestellen
te
herkennen
en
te
lokaliseren
op
de
tafel.
In
het
tweede
hoofdstuk
gaan
we
op
zoek
naar
bestaande
software.
Het
eerste
deel
gaat
over
Pluggable
Architectures,
een
mogelijke
vorm
van
software
architectuur
voor
het
project.
We
refereren
ook
naar
het
TUIO‐protocol.
We
vatten
de
bestaande
software
bibliotheken
voor
Multi‐Touch
samen.
Eén
van
onze
mogelijke
toepassingen
is
“Private
Desktop”,
een
soort
van
desktop
op
je
mobiel
toestel
die
je
zou
kunnen
raadplegen
op
de
Multi‐Touch
tafel.
We
onderzochten
of
hiervan
reeds
concepten
bestaan.
Multi‐User
Applications
werden
onderzocht
omdat
Multi‐Touch
tafels
tenslotte
door
meerdere
gebruikers
simultaan
gebruikt
kunnen
worden.
In
het
derde
deel
doen
we
een
markstudie
naar
het
huidige
aanbod
van
Multi‐Touch,
de
aanwezige
patenten
en
de
verwachte
doorbraak
van
Multi‐Touch
bij
het
grote
publiek.
7/12/08
TultiMouch
5
Hardware
onderzoek
Multi‐Touch
Technologieën
We
bespreken
hier
kort
de
verschillende
technieken[1]
die
beschikbaar
zijn
om
Multi‐Touch
interfaces
te
construeren.
Bovendien
vergelijken
we
de
voor‐
en
nadelen
van
deze
technieken.
Diffused
Illumination
(DI)
Rear
DI
Bij
Rear
Diffused
Illumination
wordt
het
scherm
onderaan
belicht
met
IR
(infrarood)‐licht.
Een
diffuser
op
het
oppervlak
verdeelt
het
licht
evenredig
over
het
beeld.
Wanneer
een
voorwerp
het
scherm
raakt
reflecteert
IR‐licht
naar
beneden.
De
camera
vangt
deze
aanraakpunten
op
als
heldere
vlekken
in
het
beeld.
Rear
DI
wordt
gebruikt
in
de
Microsoft
Surface[2].
Front
DI
In
het
geval
van
Front
Diffused
Illumination
wordt
omgevingslicht
dat
door
het
beeldscherm
binnen
valt
gebruikt.
Voorwerpen
die
het
scherm
aanraken
werpen
een
schaduw
op
het
beeld.
Een
ernstig
nadeel
van
deze
techniek
is
dat
hij
volledig
afhankelijk
is
van
het
omgevingslicht.
Waarschijnlijk
zal
deze
dus
nooit
bruikbaar
zijn
in
algemene
commerciële
applicaties.
Frustrated
Total
Internal
Reflection
(FTIR)
Frustrated
Total
Internal
Reflection[3]
is
gebaseerd
op
het
optische
verschijnsel
dat
een
lichtbundel
die
onder
een
grote
hoek
invalt
op
een
oppervlak
volledig
weerkaatst
wordt.
Door
aan
de
zijkant
van
het
scherm
IR‐bronnen
te
plaatsen
creëren
we
een
lichtvlak
dat
propageert
in
het
beeldscherm
zonder
het
te
verlaten.
De
minimale
hoek
om
totale
interne
reflectie
te
7/12/08
TultiMouch
6
bekomen
is
afhankelijk
van
de
brekingsindex
van
de
materialen
aan
het
oppervlak
(glas
–
lucht,
glas
–
vinger).
Wanneer
een
dichter
materiaal
dan
lucht
contact
maakt
met
het
oppervlak
verandert
dus
die
hoek
en
is
er
geen
totale
interne
reflectie
meer.
Een
deel
van
het
licht
ontsnapt
onderaan
de
plaat,
dit
vangen
we
op
met
een
IR‐camera.
Laser
Light
Plane
(LLP)
LLP
is
een
vrij
recente
techniek
waarbij
een
aantal
IR‐lasers
aan
de
zijkant
van
het
beeldscherm
een
zeer
dun
IR‐lichtvlak
genereren
net
boven
het
beeldscherm.
Wanneer
een
object
dicht
genoeg
bij
het
scherm
komt
reflecteert
IR‐licht
naar
omlaag.
Een
groot
voordeel
van
deze
techniek
is
het
“zero
force”
karakter.
De
gebruiker
moet
geen
kracht
uitoefenen
op
het
scherm
om
het
contact
te
kunnen
registreren.
Bij
het
construeren
van
dit
systeem
dient
men
echter
zeer
voorzichtig
om
te
springen
met
de
lasers.
Ze
vallen
over
het
algemeen
in
veiligheidsklasse
3B,
dit
betekent
dat
ze
blindheid
kunnen
veroorzaken.
Dit
is
des
te
gevaarlijker
aangezien
de
IR‐lichtbundel
niet
zichtbaar
is
en
men
dus
geen
reflex
heeft
om
de
ogen
te
sluiten.
Capacitive
Touch
(CT)
7/12/08
TultiMouch
7
Ten
slotte
bestaat
er
ook
nog
Capacitive
Touch[4].
Deze
techniek
is
totaal
verschillend
van
de
voorgaande,
men
gebruikt
elektrische
capaciteit
in
plaats
van
infrarood.
De
techniek
wordt
toegepast
in
kleinere
commerciële
toepassingen
die
platte
beeldschermen
vereisen
(voorgaande
technieken
hebben
relatief
veel
diepte
nodig)
zoals
de
IPhone
van
Apple.
Men
brengt
op
het
schermoppervlak
een
grid
van
geleidende
draden
aan.
De
horizontale
noemen
we
“driving”
draden,
de
verticale
“sensing”
draden.
Een
voor
een
brengen
we
de
driving‐draden
hoog
en
meten
sequentieel
de
capaciteit
op
elke
sensing‐draad.
Vervolgens
brengen
we
de
volgende
driving‐draad
hoog
enzovoort.
Wanneer
een
elektrisch
geladen
object
zich
in
de
buurt
van
het
beeldscherm
bevindt,
meten
we
een
capaciteit
op
die
locatie.
Aangezien
het
menselijke
lichaam
ook
elektrisch
geladen
is
kunnen
we
deze
techniek
gebruiken
om
Multi‐ Touch
mogelijk
te
maken.
OLEDs
OLEDs
zijn
organische
LEDs.
Ze
hebben
verschillende
eigenschappen
die
hen
zeer
interessant[5]
maken
voor
gebruik
in
toekomstige
displays.
Heel
veel
bedrijven
die
momenteel
LCD‐schermen
produceren,
investeren
nu
sterk
in
onderzoek
naar
deze
technologie.
Enkele
eigenschappen:
• • • • • • •
Zeer
plat
(dikte
±
2mm)
Homogeen
licht
over
het
hele
oppervlak
Zeer
energie‐efficiënt
Breed
kleurenspectrum
mogelijk
Transparant
of
spiegelend
wanneer
uitgeschakeld
Plooibare
displays
mogelijk
…
Op
9/10/2008
publiceerde
Frauhofer
IPMS
een
persartikel[6]
waarin
het
claimde
bijna
elk
OLED
paneel
met
een
speciaal
uitleescircuit
te
kunnen
omvormen
tot
een
touch‐gevoelig
paneel,
zonder
verdere
aanpassingen.
Dit
betekent
dat
men
in
de
toekomst
zeer
goedkoop
OLED
displays
zal
kunnen
omvormen
naar
touchscreens.
Aangezien
er
nog
maar
weinig
gegevens
beschikbaar
zijn
over
deze
technologie
nemen
we
ze
niet
op
in
de
vergelijking
hieronder.
7/12/08
TultiMouch
8
Vergelijking
We
proberen
nu
de
voor‐
en
nadelen
van
deze
technieken
naast
elkaar
te
leggen.
Bovendien
kijken
we
of
we
een
aantal
interessante
toepassingen
die
sterk
technologie‐afhankelijk
zijn
kunnen
realiseren.
Kostprijs
De
kostprijs
van
een
complete
opstelling.
Hardware
complexiteit
Complexiteit
van
de
hardwarecomponent.
Software
complexiteit
Complexiteit
van
de
softwarecomponent.
Gesloten
doos
Vereist
deze
technologie
een
gesloten
behuizing?
Contrast
Is
er
een
duidelijk
contrast
in
de
touchpunten?
Dit
is
direct
gerelateerd
aan
softwarecomplexiteit,
hoe
minder
contrast
hoe
meer
software
we
nodig
hebben
om
dit
te
compenseren.
Betrouwbaarheid
Levert
de
combinatie
van
hardware
en
software
een
betrouwbaar
resultaat
op?
Pen‐input
Kunnen
we
pennen
gebruiken
om
de
interface
te
besturen?
Fiducials
Kunnen
we
fiducials
gebruiken
om
objecten
te
herkennen?
Fiducials
zijn
een
speciaal
soort
tags
die
we
op
objecten
kunnen
aanbrengen
om
ze
te
identificeren.
Omgevingslicht
Heeft
deze
techniek
last
van
veranderend
omgevingslicht?
Hovering
Kan
deze
techniek
detecteren
of
er
zich
een
vinger
in
de
buurt
van
het
oppervlak
bevindt?
Scanning
Kan
deze
techniek
documenten
die
zich
op
het
oppervlak
bevinden
inscannen?
Veiligheid
Is
deze
techniek
veilig
genoeg
voor
commerciële
toepassingen?
FTIR
RDI
FDI
LLP
CT
‐
o
+
o
‐
‐
o
+
‐
‐
+
o
o
+
+
+
‐
+
‐
‐
+
o
o
+
+
+
+
‐
+
+
+
o
o
o
+
‐
+
‐
o
o
+
o
‐
‐
+
‐
+
+
‐
+
‐
+
o
o
‐
+
+
+
‐
+
Referenties
[1]
NUI
Group
(22
5
2008):
Getting
Started
With
MultiTouch,
NUI
Group
[Online],
http://nuigroup.com/forums/viewthread/1982/.
[2]
Derene,
Glenn
(7
2007):
Microsoft
Surface:
BehindtheScenes
First
Look,
Popular
Mechanics.
[Online],
http://www.popularmechanics.com/technology/industry/4217348.html?page=1.
7/12/08
TultiMouch
9
[3]
Wikipedia
Contributors
(14
10
2008):
Total
internal
reflection,
Wikipedia
[Online],
http://en.wikipedia.org/wiki/Total_internal_reflection.
[4]
Wilson,
Tracy
V
(20
6
2007):
How
the
iPhone
Works,
How
Stuff
Works
[Online],
http://electronics.howstuffworks.com/iphone2.htm.
[5]
Philips
Lighting
Business
Center
OLED
Lighting
(10
9
2008):
Lumiblade,
http://www.lighting.philips.com/in_en/trends/download/lumiblade.pdf.
[6]
Fraunhofer
Institut
Photonische
Mikrosysteme
(9
10
2008):
Feel
the
Light:
OLED
with
touch
function,
AlphaGalileo
[Online],
http://www.alphagalileo.org/index.cfm?fuseaction=readrelease&releaseid=532836&ez_search =1.
Devicelokalisatie
en
‐authenticatie
Het
detecteren
van
de
aanwezigheid
van
een
extern
device
is
eenvoudig.
Het
bepalen
van
de
positie
van
een
extern
device
op
de
Multi‐Touch
interface
(afgekort
MTI)
is
dat
niet,
maar
is
wel
nodig
om
gebruiksvriendelijkheid
en
veiligheid
(authenticatie)
te
kunnen
realiseren.
Er
bestaan
verschillende
technieken
die
gebruikt
kunnen
worden
om
de
plaats
van
een
extern
device
te
bepalen
als
het
zich
op
of
tegen
de
MTI
(vb.
Multi‐Touch
tafel
of
Multi‐Touch
wand)
bevindt.
Technieken
die
reeds
aan
bod
komen
in
de
literatuur
(Licht)Flash
Een
flash
wordt
gegenereerd
door
het
extern
device,
als
gedetecteerd
wordt
dat
het
zich
op
of
tegen
de
MTI
bevindt.
Een
camera
in
de
MTI
registreert
de
flash
en
kan
de
positie
van
het
device
bepalen.
Een
mogelijk
scenario
is
dat
de
MTI
een
aanvraag
doet
bij
het
device
om
een
flash
te
genereren
wanneer
het
device
detecteert
dat
het
zich
op
of
tegen
de
MTI
bevindt.
Deze
techniek
laat
toe
om
op
een
gebruiksvriendelijke
manier
authenticatie
van
een
gebruiker
te
realiseren.
Een
mogelijke
uitwerking
staat
vermeld
in
[1].
Daarbij
wordt
gewerkt
met
een
privaat/publiek
sleutelpaar
voor
zowel
het
extern
device
als
de
MTI.
Het
extern
device
gebruikt
een
ingebouwde
versnellingsmeter
of
microfoon
om
te
detecteren
als
het
op
of
tegen
de
MTI
geplaatst
wordt.
Daarbij
laat
het
zijn
flash
afgaan
en
verzendt,
via
Bluetooth,
meteen
ook
een
authenticatiebericht
naar
de
MTI.
Als
het
bericht
correct
valideert
en
de
tijd
tussen
de
flash
en
het
bericht
kort
genoeg
is,
dan
wordt
het
extern
device
geauthenticeerd.
2D
barcode‐tags
Het
extern
device
wordt
“getagged”
met
een
2D
barcode
(de
tag)
die
uniek
is.
Via
een
camera
in
de
MTI
wordt
de
2D
barcode
gelezen,
zodat
deze
weet
over
welk
device
het
gaat,
vervolgens
kan
eenvoudig
de
plaats
bepaald
worden.
Een
grote
speler
die
deze
techniek
gebruikt
is
Microsoft
met
hun
Surface
[4].
Authenticatie
van
devices
enkel
gebaseerd
op
tags
is
niet
veilig
vermits
een
tag
gekopieerd
kan
worden.
RFID‐tags
Het
extern
device
wordt
“getagged”
met
een
RFID‐tag
die
uniek
is.
De
tag
bevat
bijvoorbeeld
een
privaat/publiek
sleutelpaar.
Via
een
RFID‐sensor,
die
best
een
klein
bereik
heeft
en
die
net
onder
het
MTI
oppervlak
aangebracht
wordt,
kan
bepaald
worden
of
een
device
zich
op,
tegen
of
heel
dicht
in
de
buurt
van
de
MTI
bevindt
en
op
welke
positie.
Dit
laat
ook
toe
om
op
eenvoudige
wijze
authenticatie
uit
te
voeren.
Concrete
uitwerkingen
zijn
er
nog
niet,
maar
de
techniek
wordt
wel
veel
vermeld.
7/12/08
TultiMouch
10
Technieken
die
niet
in
de
literatuur
voorkomen,
maar
wel
bruikbaar
zijn
Trilfunctie
Het
device
genereert
(via
de
trilfunctie)
drukgolven
doorheen
het
oppervlak
van
de
MTI.
Druksensoren
in
de
randen
van
de
MTI
vangen
de
drukgolven
op
en
kunnen
aan
de
hand
van
de
amplitudes
bepalen
waar
het
device
zich
bevindt.
Gesture
Bij
het
detecteren
van
externe
devices,
vraagt
de
MTI,
via
het
scherm
van
dat
device,
aan
de
gebruiker
om
een
bepaalde
gesture
rond
of
in
de
buurt
van
het
device
te
maken
om
het
te
lokaliseren.
Notificatie
op
de
MTI
voor
anders
niet
lokaliseerbare
devices
Sommige
devices
(bijvoorbeeld
usb
flash
memory)
beschikken
niet
over
de
mogelijkheden
om
lokalisatie
toe
te
laten.
Deze
worden
dan
visueel
op
de
MTI
weergegeven
bijvoorbeeld
als
een
oplichtend
icoontje
in
de
hoek
of
een
afbeelding
van
het
device
op
de
meest
waarschijnlijke
plaats.
Besluit
Devicelokalisatie
is
mogelijk
op
de
MTI
en
kan
voor
sommige
apparaten
ook
gebruiksvriendelijk
en
veilig
verlopen.
Referenties
[1]
Johannes
Schöning,
Michael
Rohs,
Antonio
Krüger
(07
07
2008):
Using
Mobile
Phones
to
Spontaneously
Authenticate
and
Interact
with
MultiTouch
Surfaces,
Website
Michael
Rohs,
[Online],
http://www.deutsche‐telekom‐laboratories.de/~rohs/papers/Schoening‐PhoneFlash‐ PPD08.pdf
[2]
Wikipedia
Contributors
(12
10
2008):
Barcode,
Wikipedia,
[Online],
http://en.wikipedia.org/wiki/Barcode#2D_barcodes
[3]
Jun
Rekimoto,
Yuji
Ayatsuka
(2000):
CyberCode:
Designing
Augmented
Reality
Environments
with
Visual
Tags,
Website
Jun
Rekimoto
[Online],
http://www.sonycsl.co.jp/person/rekimoto/papers/dare2000.pdf
[4]
Robert
Scoble
(30
05
2007):
More
on
Microsoft’s
Surface
Computing
initiatives….
Scobleizer,
[Online],
http://scobleizer.com/2007/05/30/more‐on‐microsofts‐surface‐computing‐initiatives
[5]
Microsoft
():
How
does
Microsoft
Surface
work?
Microsoft
Surface
FAQ
webpagina,
[Online],
http://www.microsoft.com/surface/about_faqs/faqs.aspx
[6]
Ali
Mazalek
(2006):
Tangible
Toolkits:
Integrating
Application
Development
across
Diverse
MultiUser
and
Tangible
Interaction
Platforms,
Website
Ali
Mazalek,
[Online],
http://synlab.gatech.edu/data/papers/mazalek_dcc2006_tangible‐toolkits.pdf
7/12/08
TultiMouch
11
Software
onderzoek
In
dit
hoofdstuk
gaan
we
op
zoek
naar
reeds
bestaande
software
voor
Multi‐Touch
tafels
als
ook
naar
bestaande
software
of
software
concepten
die
we
mogelijk
kunnen
overnemen
in
ons
project.
Pluggable
architectures
OSGi
Het
Eclipse
platform
[1][2],
dat
als
het
grootte
voorbeeld
voor
een
pluggable
software
architectuur
mag
worden
gezien,
voorziet
een
framework
waar
ontwikkelaars
aan
de
hand
van
plug‐ins
extra
functionaliteit
kunnen
aan
toevoegen,
namelijk
OSGi.
Het
basismechanisme
van
de
uitbreidbaarheid
van
deze
ontwikkelomgeving
bestaat
erin
dat
plug‐ins
nieuwe
verwerkingselementen
kunnen
toevoegen
aan
bestaande
plug‐ins.
Eclipse
voorziet
een
set
van
basis
plug‐ins
om
dit
proces
te
vergemakkelijken.
Het
OSGi
framework
bestaat
uit
een
aantal
lagen.
De
eerste
laag
is
de
Excecution
Environment,
zoals
J2SE.
De
laag
Modules
definieert
de
class
loading
policies.
De
Life
Cycle
laag
voegt
“Bundles”
(ook
plugins
genoemd)
toe
die
dynamisch
kunnen
geïnstalleerd
worden.
Er
is
ook
nog
een
Service
Registry
die
een
royaal
model
levert
om
objecten
uit
te
wisselen
tussen
de
bundles.
Er
liggen
bepaalde
events
vast
om
het
komen
en
gaan
van
bundles
te
notifiëren.
Meer
informatie
is
te
vinden
op
[3].
Microkernel
Het
Microkernel
architecturaal
ontwerp
patroon
[4]
wordt
toegepast
voor
software
systemen
die
in
staat
moeten
zijn
om
zich
aan
te
passen
aan
veranderende
systeem
vereisten.
Het
scheidt
de
minimale
functionele
kern
van
de
meer
uitgebreide
functionaliteiten
en
klantspecifieke
delen.
De
microkernel
dient
als
een
“socket”
waarin
de
extensies
worden
geplaatst
en
coördineert
hun
samenwerking.
Reflection
Het
Reflection
architecturaal
ontwerppatroon
[4]
voorziet
mechanismen
om
dynamisch
de
structuur
en
het
gedrag
van
een
softwaresysteem
te
veranderen.
Het
ondersteunt
de
verandering
van
fundamentele
aspecten,
zoals
type,
structuur
en
het
“function
call”
mechanisme.
In
dit
patroon
wordt
een
applicatie
in
twee
delen
opgesplitst.
Het
metaniveau
voorziet
informatie
over
enkele
geselecteerde
systeemeigenschappen
en
maakt
de
software
“bewust”
van
zichzelf.
Het
basisniveau
bestaat
uit
de
applicatielogica.
De
implementatie
van
dit
niveau
steunt
op
het
metaniveau.
Een
verandering
van
informatie
in
het
metaniveau
beïnvloedt
het
gedrag
van
het
basisniveau.
Referenties
[1]
Azad
Bolour
(3
juli
2003):
Notes
on
the
Eclipse
Plugin
Architecture,
Eclipse,
[online],
http://www.eclipse.org/articles/Article‐Plug‐in‐architecture/plugin_architecture.html
[2]
Gamma,
K.
Beck
(20
Oktober
2003):
Contributing
to
Eclipse:
Principles,
Patterns,
and
Plug Ins,
Addison
Wesley
[3]
OSGi
Alliance
():
OSGi
Technology,
OSGi,
[online],
http://www.osgi.org/About/Technology
7/12/08
TultiMouch
12
[4]
F.
Buschmann,
R.
Meunier,
H.
Rohnert,
P.
Sommerlad,
M.
Stal
(2001):
Patternoriented
software
architecture,
A
system
of
patterns,
Wiley
TUIO
Protocol
Het
TUIO
Protocol
[1]
is
een
open
source
specificatie
voor
de
communicatie
tussen
de
Multi‐ Touch
interface
(vingerdetectie,
gestures,
objecten,
…)
en
bovenliggende
applicatielagen.
Het
protocol
abstraheert
vingers,
gestures
en
objecten
op
de
interface
naar
ID’s,
coördinaten,
rotaties
en
snelheden.
Bovendien
ondersteunt
het
verschillende
profielen,
elk
aangepast
aan
een
specifiek
soort
interface
(2D,
2.5D
en
3D).
Referenties
[1]
Martin
Kaltenbrunner,
Till
Bovermann,
Ross
Bencina,
Enrico
Costanza
():
TUIO
Protocol
Specification,
Reactable,
[Online],
http://reactable.iua.upf.edu/?tuio
Bestaande
bibliotheken
voor
Multi‐Touch
Touchlib
Touchlib[1]
is
een
bibliotheek
voor
het
maken
van
Multi‐Touch
oppervlaktes.
Het
kan
infrarode
punten
traceren
en
zendt
dan
deze
informatie
zoals
bijvoorbeeld
'vinger
neer',
'vinger
bewogen'
en
'vinger
losgelaten'
naar
de
gebruikersprogramma's.
Touchlib
komt
met
een
configuratieapplicatie
en
enkele
voorbeelden
meegeleverd
zodat
het
gemakkelijk
gestart
kan
worden.
Het
kan
interageren
met
de
meeste
types
webcams
en
video
opnameapparatuur.
Momenteel
werkt
het
enkel
onder
Windows
maar
er
worden
inspanningen
gedaan
om
het
ook
op
andere
platformen
te
laten
werken.
Vanaf
de
huidige
versie
kan
Touchlib
gebeurtenissen
verspreiden
via
het
TUIO
[2]
protocol
(dit
gebruikt
OSC)
(zie
vroeger).
Dit
maakt
Touchlib
compatibel
met
veel
andere
applicaties
die
dit
protocol
ondersteunen
zoals
Flash
[3],
VVVV
[4],
Processing
[5],
PureData
[6],
...
Dit
maakt
het
ook
mogelijk
om
Touchlib
te
gebruiken
voor
de
detectie
en
het
traceren
van
punten
terwijl
zoiets
als
VVVV
of
Processing
gebruikt
wordt
om
klantapplicaties
te
schrijven.
De
gebruiker
beslist.
Het
TUIO
protocol
ondersteunen
laat
ook
een
gedistribueerde
architectuur
toe
waar
een
machine
zich
kan
concentreren
op
de
detectie
en
het
traceren
en
een
andere
machine
de
applicatie
kan
uitvoeren.
Tbeta
Tbeta[7]
is
een
vernieuwde
versie
van
Touchlib,
een
open
source
bibliotheek
voor
het
ontwikkelen
van
Multi‐Touch
applicaties
gemaakt
door
Nuigroup
voor
het
detecteren
van
aanraakgebeurtenissen.
De
nieuwe
Tbeta
is
echter
gebouwd
op
het
openFrameWorks
[8],
op
die
manier
is
het
cross‐platform,
cross‐compiler
en
het
nodigt
de
gebruiker
uit
om
een
grafische
interface
te
bouwen
voor
zijn
Multi‐Touch
software.
OpenTouch
‐
BBTouch
OpenTouch[8]
is
een
oplossing
voor
de
ontwikkeling
van
multi‐modale
applicaties.
Het
doel
van
dit
softwareproject
is
een
open
source
framework
te
bouwen
dat
de
input
van
multi‐modale
toestellen
–
zoals
Multi‐Touch
schermen
gebaseerd
op
FTIR
–
behandelt
en
verwerkt.
Het
laat
bewegingsgestuurde,
meerdere
punten
interfaces
en
een
niet
programmeer
aanpak
voor
bewegingsgestuurde
prototypes
toe.
Het
OpenTouch
platform
heeft
tot
doel
de
laag
tussen
het
input
toestel
en
de
uiteindelijke
grafische
applicatie
te
zijn.
Het
is
ontworpen
om
cross‐platform
te
zijn
met
ondersteuning
voor
interne
en
externe
applicaties
als
simpele
gateway,
punt
tracering,
bewegingsherkenning
en
veel
meer.
7/12/08
TultiMouch
13
libavg
libavg
[9]
is
een
hoog
niveau
multimedia
platform
dat
zich
concentreert
op
interactieve
installaties.
Het
neemt
de
draad
op
waar
Macromedia
Director
en
Adobe
Flash
stoppen
en
geeft
zowel
hoge
kwaliteit,
hardware
versnelde
beelden
als
een
gemakkelijke
en
flexibele
authoring,
testing
en
opzetting.
libavg
werkt
goed
met
andere
open
source
oplossingen
voor
geluid,
netwerken
en
hardware
apparatuur
ondersteuning.
Dit
geeft
een
compleet
en
goed
geïntegreerd
pakket.
Het
gebruikt
een
XML
gebaseerde
lay‐out
taal
voor
het
grafisch
ontwerp
en
python
als
scriptingtaal.
MPX
De
Multi‐Pointer
X
Server
(MPX)
[10]
is
een
aanpassing
van
X
server
[11].
Een
standaard
X
Server
beschikt
slechts
over
één
muiscursor
en
één
toetsenbord
focus,
ongeacht
het
aantal
verbonden
inputapparaten.
MPX
geeft
de
gebruiker
meerdere
muiscursors
en
meerdere
toetsenbord
focussen.
Multi‐Cursor
applicaties
zijn
in
het
verleden
ook
al
ontwikkeld,
maar
MPX
is
de
eerste
implementatie
van
een
multicursor
windowing
systeem
(of
een
Multi‐Cursor
X
server).
MPX
toestellen
zijn
onafhankelijk.
Elke
cursor
is
een
echte
systeemcursor
en
verschillende
aanwijzers
kunnen
tegelijk
werken
in
meerdere
applicaties.
Dit
laat
een
tweehandige
interactie
en/of
samenwerking
op
één
scherm
toe.
MPX
is
compatibel
met
bestaande
applicaties
zoals
GIMP,
de
Firefox
web
browser
en
verschillende
andere
applicaties.
Toetsenborden
zorgen
voor
meerdere
toetsenbord
focussen.
Zo
kan
je
uiteindelijk
in
meerdere
applicaties
tegelijk
typen.
Zowel
muizen
en
toetsenborden
zijn
hot‐plugged.
MPX
is
merkelijk
verschillend
van
oplossingen
zoals
cpnmouse
[12],
SDGToolkit
[13],
MIDDesktop
[14]
en
andere
toolkits
of
applicaties.
Het
is
vrij
eenvoudig
om
op
de
meeste
besturingssystemen
een
applicatie
of
toolkit
te
schrijven
om
meerdere
inputapparaten
te
ondersteunen.
Tegelijk
nieuwe
en
bestaande
applicaties
ondersteunen
is
al
heel
wat
moeilijker.
MPX
verandert
het
windowing
systeem,
de
omgeving
voor
alle
grafische
applicaties.
Op
deze
manier
zijn
bestaande
applicaties
ondersteund
en
krijgen
deze
extra
mogelijkheden.
Nieuwe
applicaties
kunnen
tegelijk
de
multi‐aanwijsmogelijkheden
gebruiken
en
dus
nieuwe
manieren
van
interactie
implementeren.
Dat
is
waarom
wij
denken
dat
het
windowing
systeem
de
goede
plaats
is
om
ondersteuning
voor
meerdere
input
apparaten
in
te
bouwen.
OpenTable
(Jetmesa)
OpenTable
[15]
is
een
Multi‐Touch
Java
gebaseerde
gebruikersinterface
voor
computers
geïntegreerd
in
een
tafel.
Het
OpenTable
project
is
een
open
source
initiatief
om
Java
gebaseerde,
multi‐platform
en
Multi‐ Touch
applicatieplatformen
te
ontwikkelen.
Met
“platform”
wordt
zowel
hardware
als
software
bedoeld.
Het
doel
is
om
een
generisch
framework
aan
te
bieden
dat
ondersteuning
zal
bieden
aan
alle
bestaande
hardware
installaties
(FTIR,
DI/DIR,
...)
en
om
het
even
welk
aantal
configuraties
(meerdere
camera's,
meerdere
computers,
muren,
tafels,
plafonds,
...
misschien
zelfs
een
Multi‐ Touch
broodrooster).
Op
dit
moment
wordt
de
software
ontwikkeld
en
worden
er
plannen
(en
kits)
beschikbaar
gesteld
om
je
eigen
Multi‐Touch
installatie
te
bouwen.
De
naam
van
het
project
is
onlangs
officieel
veranderd
naar
Jetmesa,
maar
het
project
is
nog
altijd
voornamelijk
gekend
onder
zijn
oude
naam
OpenTable
en
wordt
daarom
ook
hier
nog
zo
vermeld.
Dotnetmtf
Dotnetmtf
[16][17]
is
een
volledig
framework
om
Multi‐Touch
applicaties
op
het
.NET
3/3.5
platform
te
ontwikkelen.
7/12/08
TultiMouch
14
TouchAPI
[18]
Lux
Platform
Lux
[19]
laat
leken
toe
om
vlug
complexe
applicaties
te
ontwikkelen
in
een
gemakkelijke
ontwikkelomgeving
(flash,
python,
...).
Men
kan
deze
vaardigheden
gebruiken
in
andere
talen
(C++,
C#,
WPF,
..)
en
ze
hebben
daar
hetzelfde
framework
en
dezelfde
benaming
van
variabelen.
In
plaats
van
opnieuw
een
volledig
framework
te
leren,
moet
enkel
een
andere
syntax
gebruikt
worden.
Lux
probeert
om
een
OS
en
ontwikkelomgeving
agnost
te
zijn,
het
laatste
is
echter
niet
altijd
mogelijk
doordat
verschillende
groepen
parallel
aan
het
ontwikkelen
zijn.
Lux
is
een
hoog
niveau
abstractie
voor
programma's
die
bewust
zijn
van
geavanceerde
interfaces.
Het
maakt
vele
grafische
elementen
(soms
gekend
als
widgets
in
andere
frameworks)
beschikbaar
die
al
vooraf
geschreven
zijn
zodat
de
gebruiker
zijn
tijd
niet
moet
spenderen
aan
het
schrijven
van
deze
elementen.
Andere
interessante
bibliotheken
Op
de
site
van
Nuigroup
vinden
we
nog
een
hele
hoop
andere
interessante
bibliotheken.[20]
Referenties
[1]
NUI
Group
(12
10
2008):
Touchlib
Home,
NUI
Group,
[Online],
http://nuigroup.com/touchlib/.
[2]
Martin
Kaltenbrunner,
Till
Bovermann,
Ross
Bencina,
Enrico
Costanza
():
TUIO
Protocol
Specification,
Reactable,
[Online],
http://reactable.iua.upf.edu/?tuio.
[3]
Adobe
():
Adobe
Home,
Adobe
[online],
http://adobe.com
[4]
VVVV
():
vvvv
A
multipurpose
toolkit,
VVVV,
[online],
http://vvvv.org
[5]
Processing():
Processing,
an
open
source
language,
Processing,
[online],
http://www.processing.org
[6]
PureData():.
http://www.puredata.org
[7]
NUI
Group():
Touchlib
Wiki,
Touchlib
NUI
Group,
[online],
http://nuigroup.com/wiki/touchlib/
[8]
Google
(13
10
2008):
opentouch,
Google,
[online],
http://code.google.com/p/opentouch/
[9]
libavg
():
Ain’t
vector
graphics,
libavg,
[online],
http://www.libavg.de/
[10]
Unisa
():
MultiPointer
Xserver,
Unisa
[online],
http://wearables.unisa.edu.au/mpx/
[11]
Xorg
Foundation
():
Xorg
Home,X‐org
[online]
http://wiki.x.org/wiki/
[12]
Sourceforge
():
cpnmouse,
sourceforge,
[online],
http://cpnmouse.sourceforge.net
[13]
Ucalgary
():
SDGT
Toolkit,
ucalgary,
[online]
http://grouplab.cpsc.ucalgary.ca/software/SDGT/index.html
[14]
Garth B.D. Shoemaker, Kori M. Inkpen (): MIDDesktop:
An
Application
Framework
for
Single
Display,
Simon
Fraser
Unisversity,
[online]
ftp://fas.sfu.ca/pub/cs/techreports/2000/CMPT2000‐01.pdf
[15]
Jetmesa
(12
10
2008):
About
the
Opentable
project
Opentable,
jetmesa
[Online]
http://www.jetmesa.com/?q=node/9
,
https://opentable.dev.java.net/
7/12/08
TultiMouch
15
[16]
Ohloh
(13
10
2008):
Dotnetmtf,
dotnetmtf
Ohloh,
[Online],
http://www.ohloh.net/projects/dotnetmtf
[17]
Donovan
Solms
():
Dotnetmtf,
whitespaced,
[online],
http://blog.whitespaced.co.za/
[18]
Google
video
(14
10
2008):TouchAPI
Beta
(AS3)
TouchAPI,
google
[Online]
http://video.google.com/videoplay?docid=7537277287166069803
[19]
NUI
Group
(12
10
2008):
Lux
Platform.,
NUI
Group,
[Online],
http://wiki.nuigroup.com/Lux_Platform
[20]
NUI
Group
():
Google
Summer
of
Code
2007
Project
Ideas,
NUI
group,
[online],
http://nuigroup.com/wiki/Google_Summer_of_Code_2008_Projects_Ideas/
Private
Desktop
Een
van
de
mogelijke
toepassingen
voor
de
Multi‐Touch
tafel
is
een
private
desktop.
De
bedoeling
van
de
private
desktop
is
dat
een
gebruiker
zijn
eigen
desktop
overal
kan
meenemen
op
zijn
mobiel
toestel
(gsm/blackberry/...).
Het
is
nodig
dat
zowel
zijn
bestanden
als
zijn
eigen
toepassingen
op
de
Multi‐Touch
tafel
kunnen
getoond
worden.
De
paragrafen
Aurora
en
Portable
Applications
handelen
hierover.
Aurora
Over
het
Aurora[1]
project
zelf
is
nog
niet
zo
veel
bekend
buiten
het
concept.
Op
dit
moment
bestaat
het
zelfs
nog
niet.
Het
laat
interactie
toe
tussen
verschillend
WebApps
en
biedt
ook
diensten
als
‘locatie
informatie’
aan.
Bovendien
is
al
redelijk
wat
denkwerk
gedaan
naar
hoe
de
browser
zou
kunnen
bediend
worden
met
al
dan
niet
Multi‐Touch
aanverwanten.
Het
browser
aspect
maakt
het
een
beetje
een
Virtual
Machine,
maar
dan
voor
webapplicaties.
Het
is
in
ieder
geval
een
goed
model
voor
wat
wij
zien
als
de
'private
desktop'
en
gezien
het
allemaal
nog
vrij
conceptueel
is,
is
er
nog
een
kans
om
hen
voor
te
zijn.
Het
concept
omvat
geen
“multi‐user,
single
interface”
interactie,
maar
is
wel
multi‐user.
In
de
lijn
daarvan
werden
echter
ook
een
paar
ander
interessante
dingen
gevonden.
Het
is
namelijk
zo
dat
Webkit
[2][3][4][5]
(de
webrenderengine
die
gebruikt
wordt
in
Chrome/Safari/iPhone)
in
zijn
recentere
versies
reeds
ondersteuning
voor
Multi‐Touch
heeft
via
JavaScript/CSS.
Het
feit
dat
dit
kan
lukken
via
deze
webstandaarden,
speelt
natuurlijk
in
het
voordeel
van
het
werken
met
WebApps.
Applicatie
isolatie/Portable
Applications.
Applicatie
isolatie[6]
zouden
we
kunnen
gebruiken
om
applicaties
die
op
je
mobiel
toestel
draaien
te
kunnen
openen
op
de
Multi
Touch
tafel.
Daarom
gingen
we
op
zoek
naar
mogelijke
technologieën
die
dit
reeds
ondersteunen.
Wat
we
in
onze
ideeën
voorop
stellen
omvat
twee
concepten.
Het
mobiliseren
van
applicaties
en
het
sandboxen
ervan.
Mobiele
applicaties
Wat
mobiele
applicaties
betreft
is
de
meest
gekende
technologie
waarschijnlijk
U3.
U3
heeft
het
voordeel
dat
je
je
eigen
applicaties
overal
mee
naartoe
kunt
nemen.
Je
kunt
ze
draaien
op
de
meeste
Windows
pc's.
Er
zijn
echter
ook
een
aantal
nadelen
aan
verbonden.
Zo
was
Windows
in
principe
niet
voorzien
om
met
U3
te
werken.
De
manier
waarop
het
geïmplementeerd
is,
kan
dan
ook
een
beetje
als
een
hack
beschouwd
worden.
Systemen
met
striktere
beveiliging
hebben
dan
ook
moeite
om
met
U3
samen
te
werken,
evenals
andere
besturingssystemen.
Daarnaast
moet
er
ook
op
gewezen
worden
dat
applicaties
die
geen
gebruik
maken
van
het
register
en
dergelijke
en
die
door
alle
vereiste
niet‐systeem‐bibliotheken
vervoegd
worden,
in
feite
ook
mobiel
gebruikt
kunnen
worden.
Ze
zijn
echter
nog
steeds
gebonden
aan
een
bepaald
7/12/08
TultiMouch
16
besturingssysteem.
Een
oplossing
hiervoor
zijn
bv.
Java‐applicaties,
maar
die
hebben
dan
weer
nood
aan
een
Java
VM.
Sandboxing
Het
tweede
deel
is
Sandboxing
[7][8].
Hier
kan
eigenlijk
gesteld
worden
dat
de
meeste
'Just
in
Time'‐binaries,
zoals
Java
Bytecode
en
.net
CLI's
reeds
in
een
sandbox
lopen.
Bij
Java
zitten
er
wel
optimalisaties
in
de
pijplijn
om
ondersteuning
voor
verschillende
sandboxes
op
1
VM
te
verbeteren.
Het
wordt
ook
dikwijls
gebruikt
bij
Grid
Computing.
Dat
is
misschien
niet
rechtstreeks
met
ons
werk
gerelateerd,
maar
ervaringen
die
daar
opgedaan
zijn
kunnen
toch
interessant
zijn
voor
het
werken
met
geïnterconnecteerde
devices.
Applicaties
zoals
Sandboxie
kunnen
wel
in
het
algemeen
interessant
zijn
voor
Windows
gebruikers,
maar
voor
onze
applicatie
doen
ze
eigenlijk
weinig
ter
zake.
Referenties
[1]
Aurora
():
Aurora
Home,
Adaptive
Path,
[online],
http://www.adaptivepath.com/aurora/
[2]
Dion
Almaer
(07
2008):
iPhone
Web:
MultiTouch
JavaScript
“Virtual
Light
Table”,
ajaxian,
[online],
http://ajaxian.com/archives/iphone‐web‐multitouch‐javascript‐virtual‐light‐table
[3]
Thomas
Robinson
(07
2008):
MultiTouch
JavaScript
“Virtual
Light
Table”
on
iPhone
v2.0,
tlrobinson,
[online],
http://tlrobinson.net/blog/?p=42
[4]
Neil
Roberts
(07
2008):
Touching
and
Gesturing
on
the
iPhone,
sitepen,
[online],
http://www.sitepen.com/blog/2008/07/10/touching‐and‐gesturing‐on‐the‐iphone/
[5]
Dave
Hyatt
(10
2008):
CSS
Transforms,
webkit,
[online],
http://webkit.org/blog/130/css‐ transforms/
[6]
Wikipedia
Contributors
(08
03
2008):
Isolate
API,
Wikipedia,
[online],
http://nl.wikipedia.org/wiki/Isolate_API
[7]
Ronen
Tzur
():
Introducing
Sandboxie,
Sandboxie,
[online],
http://www.sandboxie.com/
[8]
Vassilis
Prevelakis,
Diomidis
Spinellis
(04
2001):
Sandboxing
Applications,
[online],
http://www.dmst.aueb.gr/dds/pubs/conf/2001‐Freenix‐Sandbox/html/sandbox32final.pdf
Multi‐User
Applications
Een
groot
voordeel
bij
Multi‐Touch
tafels
is
dat
deze
toelaten
om
met
meerdere
gebruikers
samen
te
werken.
We
gingen
op
zoek
naar
bestaande
applicaties
waar
meerdere
gebruikers
simultaan
kunnen
werken.
Google
Docs
Google
Documents
[1][2]
laat
toe
om
met
meerdere
gebruikers
op
hetzelfde
ogenblik
aan
een
document
te
werken.
Google
Docs
heeft
net
zoals
Microsoft
Office
een
tekstverwerker,
een
rekenblad,
een
presentatie
...
Om
Google
Docs
met
meerdere
gebruikers
te
kunnen
gebruiken
moeten
eerst
gebruikers
toegevoegd
worden
aan
een
document.
Je
kan
gebruikers
toelaten
je
documenten
te
bekijken
(viewers)
of
er
samen
aan
te
werken
(collaborators).
7/12/08
TultiMouch
17
Verder
werkt
het
systeem
ongeveer
op
dezelfde
wijze
als
een
svn‐server.
Revisies
worden
bijgehouden,
welke
wijzigen
er
gebeurd
zijn
aan
de
documenten
enzovoort.
Je
kan
ook
RSS‐ feeds
krijgen
over
welke
wijzigingen
er
gebeurd
zijn.
Plutext
Plutext
[3][4]
is
één
van
de
mogelijke
plugins
in
word
die
toelaten
hetzelfde
effect
te
verkrijgen
in
word.
Raar
maar
waar:
Dit
is
een
open
source
project!
Microsoft
Office
Groove
Microsoft
Office
Groove
[5]
is
weer
wat
hetzelfde.
Men
kan
op
meerdere
plaatsen
tegelijk
werken
aan
een
document
en
de
wijzigingen
doorsturen
(naar
iedere
gebruiker)
via
hun
Microsoft
Office
SharePoint
Server
2007
of
via
Windows
SharePoint
Services
3.0.
Referenties
[1]
Wikipedia
Contributors
(10
2008):
Google
Docs,
wikipedia,
[online]
http://en.wikipedia.org/wiki/Google_Docs
[2]
Google
():
Google
Docs,
google,
[online],
http://docs.google.com/
[3]
Wikipedia
Contributors
(09
2008):
Plutext,
wikipedia,
[online],
http://en.wikipedia.org/wiki/Plutext
[4]
Plutext
Community
(),
Plutext
projects,
plutext,
[online],
http://dev.plutext.org/projects.html
[5]
Microsoft
():Microsoft
Office
Groove
2007
top
10
benefits,
Micorosft,
[online],
http://office.microsoft.com/en‐us/groove/HA101650231033.aspx
7/12/08
TultiMouch
18
Marktstudie
In
de
marktstudie
onderzoekenen
we
drie
grote
delen.
Eerst
en
vooral
geven
we
een
bondig
overzicht
van
de
huidige
marktsituatie
en
welke
producten
reeds
bestaan.
Daarna
vatten
we
kort
de
patenten
die
bestaan
samen.
Als
laatste
maken
we
een
schatting
van
de
verwachte
doorbraak
van
Multi‐Touch
tafels.
Huidig
aanbod
Microsoft
Surface
Het
meest
gekende
voorbeeld
van
Multi‐Touch
platform
is
Microsoft
Surface.
Dit
is
een
commercieel
beschikbaar
toestel
dat
reeds
gebruikt
wordt
op
verschillende
plaatsen.
Uit
de
FAQ[1]
op
hun
website
blijkt
dat
Microsoft
hun
product
voorlopig
enkel
aan
een
selecte
groep
van
grote
ondernemingen
en
bedrijven
uit
de
VS
verkoopt.
De
gewone
consument
zou
binnen
3‐ 5
jaar
Microsoft
Surface
in
huis
kunnen
halen.
Er
wordt
nog
niets
verteld
over
de
mogelijke
kostprijs.
Multi‐Touch
Cell
De
Multi‐Touch
Cell
is
naar
eigen
zeggen
een
Multi‐Touch‐scherm
met
hoge
definitie
dat
minimale
setup
en
onderhoud
vereist[2].
Verschillende
schermen
kunnen
naast
elkaar
geplaatst
worden
om
zo
een
groter,
logisch
geheel
te
vormen.
Prijzen
schommelen
tussen
$7.200
en
$16.000,
afhankelijk
van
de
grootte
van
de
schermen
(32”
of
48”),
en
of
men
de
bijgeleverde
SDK
software
erbij
wil[3].
De
Multi‐Touch
Cell
kan
dus
met
bijgeleverde
software
gekocht
worden.
Wat
opvalt
bij
deze
in
eigen
huis
ontwikkelde
software,
is
dat
men
in
staat
is
“handen”
te
herkennen,
in
plaats
van
gewoon
een
reeks
van
punten.
Als
men
twee
of
meerdere
handen
op
het
scherm
plaatst,
weet
het
systeem
effectief
welke
contactpunten
(vingers)
logisch
samen
horen
(handen).
Men
gaat
er
bij
de
uitleg
hierover
echter
niet
erg
diep
op
in,
en
dus
kan
men
de
vraag
stellen
in
hoeverre
het
systeem
zeer
complexe
aanrakingen
correct
kan
ontcijferen
…
Een
ander
mooi
technisch
kenmerk
is
dat
de
Multi‐Touch
Cell
zich
aanpast
aan
de
omgeving.
In
donkere
omgevingen
zal
de
Cell
automatisch
zelf
minder
licht
produceren
dan
in
fel
verlichte
omgevingen.
DiamondTouch
De
DiamondTouch
table
is
één
van
de
vele
beschikbare
salontafel‐achtige
Multi‐Touch
tafels.
De
DiamondTouch
is
ontwikkeld
door
Mitsubishi
Electric
Reseach
Laboratories
[4].
Speciaal
aan
deze
tafel
is
dat
ze
multi‐user
is[5].
D.w.z.:
de
tafel
weet
wie
de
tafel
aanraakt
doordat
de
verschillende
gebruikers
op
een
specifieke
manier
elektrisch
geladen
worden.
Bovendien
is
dit
product
al
sinds
2006
commercieel
beschikbaar[4].
Prijzen
gaan
van
$9.500
tot
$25.000.
Voor
die
basisprijs
krijgt
men
echter
enkel
een
kleine
tafel
(32”)
en
de
SDK
software,
en
moet
men
zelf
minstens
nog
een
projector
aankopen.
De
prijzen
hebben
we
per
e‐mail
verkregen.
Stantum,
voorheen
Jazzmutant
Jazzmutant
heeft
twee
producten
op
de
markt
gebracht,
de
Lemur
(2005)
en
de
Dexter
(2007)
[6].
Beide
producten
zijn
bedoeld
voor
muziekbewerking
en
–productie
(denk
aan
equalizers,
geluidseffecten,
…).
Ze
worden
wereldwijd
gebruikt
door
bekende
artiesten
zoals
Bjork,
Thievery
Corporation
en
Daft
Punk
[7].
Prijzen
schommelen
tussen
de
2300
en
2600
euro[8].
Stantum
is
de
nieuwe
naam
voor
hetzelfde
bedrijf
dat
een
MT‐development
kit
op
de
markt
heeft
gebracht.
Het
wordt
geleverd
met
hun
eigen
15”
Multi‐Touch
scherm[9].
Wall
van
Perceptive
Pixel
De
wall
van
Perceptive
Pixel
werd
tijdens
de
eindejaarsfeesten
van
2007
tijdelijk
te
koop
aangeboden
door
de
Amerikaanse
“Neiman
Marcus”‐winkelketen,
en
dit
voor
$100.000
[10].
7/12/08
TultiMouch
19
Bedrijven
uit
verschillende
takken
van
de
industrie
Een
Multi‐Touch
tafel
ontwikkeld
door
“Fraunhofer‐Institut
für
Graphische
Datenverarbeitung
IGD”
wordt
momenteel
ontwikkeld
door
de
“Coperion
Group”,
een
Duitse
onderneming
die
zich
bezig
houdt
met
het
maken
van
machines
voor
de
chemische,
kunststof‐,
aluminium‐
en
voedselindustrie.
Deze
grootschalige
tafel
(ongeveer
3
op
1.5
meter)
wordt
gebruikt
om
(toekomstige)
productieprocessen
op
voorhand
in
detail
te
verkennen
en
te
onderzoeken
[11].
Dit
is
niet
het
enige
voorbeeld,
vele
andere
bedrijven
zijn
geïnteresseerd
in
de
technologie
voor
de
ontwikkeling
van
hun
producten
[14].
Ook
defensie
(allicht
de
Amerikaanse)
zou
interesse
getoond
hebben
[14].
En
verder…
De
meeste
Multi‐Touch
schermen
kan
men
vandaag
terugvinden
in
mobiele
aparaten
zoals
bijvoorbeeld
de
iPhone
[14].
Gezien
hun
productiehoeveelheden
zijn
ze
reeds
voor
zeer
democratische
prijzen
disponibel
(minder
dan
300
euro).
Barco
is
bezig
met
Multi‐Touch,
zo
blijkt
uit
hun
jaarverslag
van
2007
[12].
Belangrijk
om
op
te
merken
is
dat
ze
nu
nog
geen
échte
Multi‐Touch
geïmplementeerd
hebben
–
al
zijn
ze
dat
wel
van
plan
in
de
toekomst.
Dell
heeft
voor
hun
XT
tablet‐portables
een
driver
uitgebracht
die
het
mogelijk
maakt
om
een
beperkt
aantal
Multi‐Touch‐gestures
te
gebruiken
(zoals
scrollen
en
zoomen)
[13].
Net
zoals
Barco
echter
betreft
het
hier
voorlopig
nog
niet
échte
Multi‐Touch,
aangezien
alle
gestures
zich
beperken
tot
twee
raakpunten;
dual‐touch
met
andere
woorden.
Voor
zover
we
weten
is
HP
druk
bezig
met
onderzoek
naar
Multi‐Touch,
maar
hebben
ze
nog
niets
op
de
markt
gebracht.
Referenties
[1]
Microsoft
Surface
(2008):
FAQ,
Microsoft,
[online]
http://www.microsoft.com/surface/about_faqs/faqs.aspx
[2]
MultiTouch
(2008):
Modular
MultiTouch
LCD,
Multi‐Touch,
[online],
http://www.multitouch.fi/
[3]
Traian
Teglet
(2008‐09‐01):
MultiTouch
Announces
First
Modular
MultiTouch
LCD,
softpedia,
[online],
http://news.softpedia.com/news/MultiTouch‐Announces‐First‐Modular‐ Multi‐Touch‐LCD‐92763.shtml
[4]
MERL
(2008‐08‐02):
DiamondTouch,
Merl,
[online]
http://www.merl.com/projects/DiamondTouch/
[5]
CircleTwelve
(2008):DiamondTouch
by
CircleTwelve,
circletwelve,
[online]
http://www.circletwelve.com/
[6]
JazzMutant
(2008):
JazzMutant
–
Products,
Jazzmutant,
[online]
http://www.jazzmutant.com/products.php
[7]
JazzMutant
(2008):
JazzMutant
–
Artists,
Jazzmutant,
[online],
http://www.jazzmutant.com/artists_lemurized.php
[8]
Digital
Audio
Service
(2008):
Katalog,
digitalaudioservice,
[online]
http://shop.digitalaudioservice.de/quick_search_result.php?keywords=jazzmutant
[9]
Stantum
(2008):
Stantum
Products,
Stantum,
[online]
http://www.stantum.com/spip.php?article50
7/12/08
TultiMouch
20
[10]
Ryan
Block
(2007‐10‐07):
Neiman
Marcus
to
sell
Perceptive
Pixel's
Interactive
Media
Wall:
yours
for
$100k,
Engadget,
[online],
http://www.engadget.com/2007/10/07/nieman‐marcus‐ to‐sell‐perceptive‐pixels‐interactive‐media‐wall/
[11]
Cordis
(2007‐12‐05):
Virtual
factory
on
the
tabletop,
Cordis,
[online]
http://cordis.europa.eu/wire/index.cfm?fuseaction=article.Detail&rcn=16274
[12]
Barco
(2007):
Barco
jaarverslag
2007,
Barco,
[online],http://www.barco.com/investors/Downloads/Results/2007/Q4/NL/2007_Q4_Barco_A nnualReport_NL.pdf,
pagina
29
[13]
Dell
(2008‐07‐14):
MultiTouch
Capability
Available
Tomorrow
for
Latitude
XT
Customers,
Direct2Dell,
[online],http://direct2dell.com/one2one/archive/2008/07/14/Multi_2D00_Touch‐ Capability‐Available‐Tomorrow‐for‐Latitude‐XT‐Customers.aspx
[14]
Janet
Kreiling
(2008‐08‐25):
Magic
touch
MultiTouch
technology
promises
to
become
indispensable,
Emsnow,
[online],
http://www.emsnow.com/npps/story.cfm?id=35469
Patenten
Hardware
In
[1]
vindt
men
een
lijst
met
bestaande
patenten
over
de
hardware
van
Multi‐Touch
input
devices.
Voor
ons
project
zijn
deze
patenten
echter
minder
relevant
aangezien
we
een
framework
willen
maken
om
applicaties
te
draaien
op
een
Multi‐Touch
device.
We
plannen
niet
MTI
devices
te
gaan
bouwen
en
verkopen.
Het
enige
patent
dat
we
aanhalen
is
de
Frustrated
Total
Internal
Reflection.
Jefferson
Han
claimt
in
dit
patent
de
volledige
technologie
die
gebruik
maakt
van
de
reflectie
van
infrarood
licht.
[2]
Hieronder
de
abstract
van
het
patent.
Highresolution,
scalable
MultiTouch
sensing
display
systems
and
processes
based
on
frustrated
total
internal
reflection
employ
an
optical
waveguide
that
receives
light,
such
as
infrared
light,
that
undergoes
total
internal
reflection
and
an
imaging
sensor
that
detects
light
that
escapes
the
optical
waveguide
caused
by
frustration
of
the
total
internal
reflection
due
to
contact
by
a
user.
The
optical
waveguide
may
be
fitted
with
a
compliant
surface
overlay
to
greatly
improve
sensing
performance,
minimize
the
affect
of
contaminants
on
and
damage
to
the
contact
surface,
to
generally
extend
system
life
and
to
provide
other
benefits.
The
systems
and
processes
provide
true
MultiTouch
(multiinput)
and
highspatial
and
temporal
resolution
capability
due
to
the
continuous
imaging
of
the
frustrated
total
internal
reflection
that
escapes
the
entire
optical
waveguide.
Among
other
features
and
benefits,
the
systems
and
processes
are
scalable
to
large
installations
and
are
well
suited...
Software
Alle
bibliotheken
die
we
onderzocht
hebben
zijn
open
source.
Onderstaande
tabel
vat
samen
welke
licentie
ze
gebruiken.
Bibliotheek
Licentie
Touchlib
New BSD license
Tbeta
MPL of MIT (nog geen licentie)
OpenTouch – BBTouch
GNU LGPL
Libavg
GNU LGPL
Dotnetmtf
New BSD license
TouchAPI
MIT
7/12/08
TultiMouch
21
OSGi
is
gepatenteerd
maar
heeft
een
royalty‐free
licentie
die
gebruikers
en
implementeerders
toelaat
de
technologie
te
gebruiken
en
te
verspreiden
op
voorwaarde
dat
de
code
niet
gewijzigd
wordt
en
steeds
volledig
geïmplementeerd
wordt.
Meer
informatie
hierover
is
te
vinden
op
[3][4].
Er
is
dus
geen
enkele
bibliotheek
die
we
willen
gebruiken
gepatenteerd
(op
OSGi
na.)
We
kunnen
echter
wel
alle
bestaande
bibliotheken
hergebruiken
zonder
de
licenties
te
schenden.
Gestures
Een
lijst
met
bestaande
gesture
patenten
is
te
vinden
op
[5].
Ook
deze
patenten
zijn
minder
relevant
voor
ons
project
aangezien
wij
een
framework
bouwen
dat
in
staat
zal
zijn
gestures
te
herkennen
maar
wij
voorlopig
geen
bibliotheek
van
bestaande
gestures
aanbieden.
Een
interessant
patent
is
van
Microsoft
[6]
dat
gaat
over
een
softwarepakket
dat
in
staat
is
om
gestures
zelf
aan
te
leren.
De
gebruiker
van
de
tafel
kan
dus
zijn
eigen
gesture
bedenken
en
de
Multi‐Touch
tafel
is
nadien
in
staat
om
deze
te
herkennen.
De
gebruiker
krijgt
dan
een
lijst
van
mogelijke
commando’s
die
de
gesture
kan
uitvoeren
en
selecteert
naar
eigen
wens.
De
tafel
kan
dan
nadien
zelfs
tonen
hoe
de
gesture
moet
gemaakt
worden.
Referenties
[1]
US
PATENT
AND
TRADEMARK
OFFICE
(24
07
2008)
:
MultiTouch
Patents,
USPTO,
[online],
http://appft1.uspto.gov/netacgi/nph‐ Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch‐ adv.html&r=0&p=1&f=S&l=50&Query=ttl%2F%22multi‐ touch%22+or+ttl%2F%22multi+touch%22&d=PG01
[2]
Jefferson
Han
(03
08
2007):
MULTITOUCH
SENSING
THROUGH
FRUSTRATED
TOTAL
INTERNAL
REFLECTION,
Google,
[online],
http://www.google.com/patents?id=etenAAAAEBAJ&dq=FTIR+multi‐touch
[3]
OSGi
Alliance
():OSGi
NonAssert
Agreements,
OSGi,
[online],
http://www.osgi.org/News/NonAssert
[4]
OSGi
Alliance
():OSGi
OSGi
Specification
License,
Version
1.0.,
OSGi,
[online],
http://www.osgi.org/Specifications/Licensing
[1]
US
PATENT
AND
TRADEMARK
OFFICE
(24
07
2008)
:
Gesture
Patents,
USPTO,
[online],
http://appft1.uspto.gov/netacgi/nph‐ Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch‐ adv.html&r=0&p=1&f=S&l=50&Query=ttl%2Fgesture&d=PG01
[6]
Microsoft
(24
07
2008):
GESTURE
RECOGNITION
INTERACTIVE
FEEDBACK,
USPTO,
[online]
http://appft1.uspto.gov/netacgi/nph‐ Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch‐ adv.html&r=8&p=1&f=G&l=50&d=PG01&S1=gesture.TTL.&OS=ttl/gesture&RS=TTL/gesture
Verwachte
doorbraak
Hier
verzamelen
we
enkele
uitspraken
uit
de
industrie
over
de
verwachte
doorbraak
van
Multi‐
Touch.
Alle
schattingen
lijken
te
wijzen
naar
een
periode
van
3
tot
5
jaar
vanaf
nu,
dus
tussen
2011
en
2013.
Bill
Buxton
–
pionier
Remember
that
it
took
30
years
between
when
the
mouse
was
invented
by
Engelbart
and
English
in
1965
to
when
it
became
ubiquitous,
on
the
release
of
Windows
95.
Yes,
it
was
released
commercially
on
the
Xerox
Star
and
PERQ
workstations
in
1982,
and
I
used
my
first
one
in
1972
at
the
National
Research
Council
of
Canada.
But
statistically,
that
doesn’t
matter.
It
took
7/12/08
TultiMouch
22
30
years
to
hit
the
tipping
point.
So,
by
that
measure,
MultiTouch
technologies
have
5
years
to
go
before
they
fall
behind.
[1]
iSuppli
–
marktanalyse
electronica
Shipments
of
this
advanced
strain
of
touch
screens
are
projected
to
jump
from
fewer
than
200,000
units
in
2006
to
more
than
21
million
units
by
2012,
with
the
bulk
of
the
components
going
to
mobile
phones,
according
to
a
forecast
by
iSuppli
Corp.,
a
market
research
company.
[2]
Microsoft
Surface
Currently
Microsoft
Surface
is
not
available
for
individual
consumer
purchase.
Microsoft
Surface
is
being
marketed
and
sold
to
large–scale
leisure,
entertainment
and
retail
companies
in
the
U.S.
and
people
will
be
able
to
experience
Microsoft
Surface
in
public
locations.
Consumers
will
be
able
to
purchase
Microsoft
Surface
in
about
three
to
five
years.
[3]
HP
Research
The
research
guys
at
HP
have
been
opening
their
doors
to
the
Wall
Street
Journal,
revealing
that
they're
currently
working
on
bringing
Applestyle
MultiTouch
to
HP
laptos
and
monitors
within
18
months'
time.
[4]
Referenties
[1]
Bill
Buxton
(22
08
2008):
MultiTouch
Overview,
Bill
Buxton,
[online],
http://www.billbuxton.com/multitouchOverview.html
[2].
May
Wong
(21
06
2007):Touchscreen
phones
poised
for
growth,
USAtoday,
[online],
http://www.usatoday.com/tech/products/2007‐06‐21‐1895245927_x.htm
[3]
Microsoft
():
General
Questions
about
Surface,
Microsoft,
[online],
http://www.microsoft.com/surface/about_faqs/faqs.aspx
7/12/08
TultiMouch
23
[4]
Nick
Mansell
(06
08
2008):
HP
cooking
'MultiTouch'
laptops
and
monitors,
Mobile
computer
magazine,
[online],
http://www.mobilecomputermag.co.uk/20080806779/hp‐cooking‐Multi‐ Touch‐laptops‐and‐monitors.html
7/12/08
TultiMouch
24
Business
Model
Inleiding
In
dit
hoofdstuk
bespreken
we
een
mogelijk
zakenmodel
voor
TultiMouch.
Analyse
van
de
huidige
markt
Hoewel
Multi‐Touch
een
innovatieve
technologie
is,
bestaat
er
nog
een
duidelijk
gebrek
aan
goede
softwaretools.
Het
grootste
deel
van
de
bestaande
bibliotheken
detecteert
enkel
aanrakingen
en
geeft
enkel
de
coördinaten
door
naar
de
applicatie.
Een
aantal
gaan
verder
en
bieden
zaken
als
gebaarherkenning
of
grafische
componenten
die
voorzien
zijn
van
Multi‐Touch
functionaliteit
aan.
Slechts
enkele
spelers
op
de
markt
ontwikkelen
software
die
verder
gaat
dan
deze
basisconcepten:
• • •
Microsoft
voorziet
device‐interactie
met
behulp
van
fiducials.
Perceptive
Pixel
werkt
aan
een
nieuw
platform,
opgebouwd
vanaf
nul
waarbij
men
alle
bestaande
ideeën
omtrent
interactie
tussen
mens
en
computer
herbekijkt.
De
Multi‐Touch
Cell
is
vooral
innovatief
door
zijn
technologie
om
een
onbeperkt
aantal
aparte
elementen
te
combineren
tot
een
groot
scherm
dat
als
een
geheel
aangestuurd
en
bestuurd
kan
worden.
Magic
Quadrant
voor
MultiTouch
Software
Stacks
Opmerkelijk
is
dat
al
deze
innovatie
gebeurt
in
bibliotheken
van
hardwarefabrikanten.
Op
het
vlak
van
open
source
software
zien
we
vooral
veel
bibliotheken
die
tegenover
elkaar
weinig
meerwaarde
bieden.
Hier
heeft
de
NUI
Group
met
de
tBeta
software
het
meeste
invloed.
7/12/08
TultiMouch
25
Magic
Quadrant
voor
Open
Source
MultiTouch
Software
Stacks
In
de
open
source
wereld
is
dus
zeker
nog
ruimte
voor
een
innoverend
platform
dat
geavanceerde
functionaliteit
van
de
grote
spelers
beschikbaar
maakt.
Uit
deze
vaststelling
baseren
we
ons
business
model.
De
drie
stakeholders
in
dit
model
zijn:
• • •
Eindgebruikers
Hardwarefabrikanten
Softwareontwikkelaars
Ons
business
model
bestaat
erin
om
een
softwareplatform
aan
te
bieden
dat
tussen
deze
drie
partijen
in
zit.
Een
open
source
bibliotheek
We
stellen
voor
om
onze
bibliotheek
te
distribueren
met
twee
licenties.
Persoonlijk,
niet‐ commercieel
gebruik
is
gratis,
terwijl
commerciële
toepassingen
een
betalende
licentie
vereisen.
Dit
stelt
ons
in
staat
om
zowel
hobbyisten
aan
te
trekken
die
willen
experimenteren
met
Multi‐ Touch,
als
bedrijven
die
commerciële
producten
willen
ontwikkelen.
Eenmaal
onze
bibliotheek
voldoende
marktaandeel
weet
te
winnen
is
het
realistisch
om
hardwarebouwers
te
overtuigen
ons
platform
standaard
mee
te
leveren
met
hun
hardware.
Application
Store
Een
tweede
inkomstenbron
is
het
aanbieden
van
een
Application
Store,
analoog
aan
het
concept
van
Apple
voor
de
iPhone.
Dit
houdt
in
dat
we
softwareontwikkelaars
in
staat
stellen
hun
applicaties
beschikbaar
te
stellen
aan
eindgebruikers
via
een
geïntegreerd
platform.
We
kunnen
dan
een
transactiekost
(procentueel
of
vast)
aanrekenen
voor
elke
softwareaankoop.
Bovendien
is
het
mogelijk
om
applicaties
te
verhuren.
Support
&
Services
Ten
slotte
kunnen
we
ook
de
drie
stakeholders
support
en
diensten
aanbieden.
• • •
Hardwarefabrikanten
zullen
support
nodig
hebben
bij
het
integreren
van
ons
platform
in
hun
systeem.
Softwareontwikkelaars
zullen
support
nodig
hebben
bij
het
ontwikkelen
van
applicaties
voor
ons
platform.
Eindgebruikers
zullen
support
nodig
hebben
bij
het
gebruik
van
ons
platform.
7/12/08
TultiMouch
26
Architecture
Requirements
View
Inleiding
Dit
deel
bevat
de
uitgewerkte
use
cases
met
hun
extensies.
Mede
op
basis
van
deze
use
cases
hebben
we
een
eerste
iteratie
gemaakt
van
onze
componenten
met
hun
verantwoordelijkheden
en
de
sequentiediagrammen
voor
de
use
cases.
Lijst
van
use
cases
1. Applicatie
aansturen
met
gesture
2. Login
zonder
device
3. Login
met
device
4. Sessie
vergrendelen
5. Sessie
ontgrendelen
6. Device
lokaliseren
met
hotspot
7. Device
bewegen
8. Device
verwijderen
9. Installeren
van
een
applicatie
(plug‐in)
10. Applicatie
starten
11. Applicatie
gebruikt
device
12. Verplaatsen
van
een
getagged
object
7/12/08
TultiMouch
27
Uitgewerkte
Use
Cases
Use
Case
1:
Applicatie
aansturen
met
gesture
Korte
beschrijving
Deze
use
case
handelt
over
het
herkennen
van
gestures,
en
hoe
daar
andere
gebeurtenissen
aan
gekoppeld
kunnen
worden.
Meer
concreet
doet
een
gebruiker
hier
een
specifieke
gesture
om
zo
een
virtueel
toetsenbord
te
voorschijn
te
halen.
Pre‐condities
• De
definitie
van
de
specifieke
gesture
is
gekend.
• Het
proces
om
de
toetsenbordapplicatie
op
te
roepen
is
reeds
in
de
achtergrond
opgestart.
Post‐condities
• Het
virtueel
toetsenbord
is
zichtbaar
op
het
Multi‐Touch
scherm,
klaar
voor
gebruik.
Gerelateerde
use
cases
• Applicatie
starten
Main
Success
Scenario
Stap
Beschrijving
1
De
gebruiker
maakt
een
bepaalde
beweging
(gesture)
op
het
raakoppervlak.
2
De
gesture
wordt
herkend.
3
Het
virtueel
toestenbord
wordt
opgestart.
Use
Case
2:
Login
zonder
device
Korte
beschrijving
Een
gebruiker
staat
bij
de
Multi‐Touch
tafel
en
maakt
het
“login”‐gesture.
Een
loginscherm
en
een
virtueel
toetstenbord
verschijnen.
De
gebruiker
geeft
zijn
gebruikersnaam
en
wachtwoord
in,
deze
worden
gecontroleerd,
en
zijn
persoonlijke
werkomgeving
wordt
geladen.
Pre‐condities
• Het
TultiMouch
platform
is
volledig
geconfigureerd
en
draait
op
de
Multi‐Touch
tafel.
• De
gebruiker
is
gekend
door
het
systeem.
Post‐condities
• De
gebruiker
is
ingelogd
en
ziet
zijn
persoonlijke
werkomgeving.
Gerelateerde
use
cases
• Login
met
device
Main
Success
Scenario
Stap
Beschrijving
1
De
gebruiker
staat
bij
de
tafel
en
maakt
het
“login”‐gesture.
2
Het
gesture
wordt
verwerkt
en
herkend
als
het
“login”‐gesture.
3
Er
verschijnt
een
loginscherm
en
een
virtueel
toetsenbord.
4
De
gebruiker
geeft
zijn
login
gegevens
in.
5
De
credentials
van
de
gebruiker
worden
gecontroleerd
en
hij
wordt
ingelogd.
7/12/08
TultiMouch
28
6
De
gebruiker
ziet
zijn
persoonlijke
werkomgeving.
Extensie
op
stap
2
Stap
Beschrijving
2.1
Het
gesture
wordt
verwerkt,
maar
niet
herkend
als
het
“login”‐gesture.
2.2
De
activiteit
wordt
gedetecteerd
en
een
venster
dat
de
gebruiker
vraagt
het
“login”‐ gesture
te
maken
verschijnt.
Extensie
op
stap
3
Stap
Beschrijving
3.1
Het
weergeven
van
het
loginscherm
en/of
virtueel
toetsenbord
faalt.
3.2
Indien
het
platform
niet
gecrasht
is
gebeurt
er
niets
en
de
gebruiker
kan
nog
eens
proberen
door
opnieuw
het
“login”‐gesture
te
maken.
Extensie
op
stap
5
Stap
Beschrijving
5.1
De
gebruiker
heeft
een
verkeerde
gebruikersnaam
of
wachtwoord
ingegeven.
5.2
De
gebruiker
krijgt
een
waarschuwing
en
een
verzoek
om
het
opnieuw
te
proberen.
Use
Case
3:
Login
met
device
Korte
beschrijving
De
gebruiker
plaatst
een
Bluetooth
device
op
de
tafel,
het
systeem
toont
een
kader
met
de
gebruikersnaam
op
de
locatie
van
het
device.
Pre‐condities
• Het
device
is
bekend
bij
het
systeem
(koppeling
device‐gebruiker).
Post‐condities
• Waar
het
device
op
tafel
ligt
staat
een
kader
met
de
gebruikersnaam
erin.
Gerelateerde
use
cases
• Device
lokaliseren
met
hotspot
Main
Success
Scenario
Stap
Beschrijving
1
Detectie
van
een
nieuw
Bluetooth
device.
2
Lokaliseer
het
device
(zie
use
case
“device
lokaliseren
met
hotspot”).
3
Zoek
de
gebruiker
die
gekoppeld
is
aan
het
device.
4
De
gebruiker
heeft
nog
geen
sessie,
er
start
een
nieuwe
sessie.
5
De
sessie
toont
een
rechthoek
met
de
gebruikersnaam.
7/12/08
TultiMouch
29
Extensie
a
op
stap
4
Stap
Beschrijving
4a.1
De
gebruiker
heeft
al
een
sessie,
ze
is
niet
vergrendeld.
4a.2
Voeg
het
device
bij
de
bestaande
sessie.
Extensie
b
op
stap
4
Stap
Beschrijving
4b.1
De
gebruiker
heeft
al
een
sessie,
ze
is
vergrendeld.
4b.2
Voeg
het
device
bij
de
bestaande
sessie.
4b.3
Ontgrendel
de
sessie.
Use
Case
4:
Sessie
vergrendelen
Korte
beschrijving
Een
gebruikerssessie
vergrendelen
door
het
wegnemen
van
het
laatste
device.
Pre‐condities
• De
gebruiker
heeft
een
openstaande
sessie.
• De
sessie
werd
oorspronkelijk
geopend
door
een
device
(en
niet
door
bijvoorbeeld
een
gesture).
• De
gebruiker
heeft
maar
1
device
meer
op
de
tafel
liggen.
Post‐condities
• De
gebruikerssessie
is
vergrendeld.
Main
Success
Scenario
Stap
Beschrijving
1
De
gebruiker
neemt
het
device
van
de
tafel.
2
Het
device
wordt
ontkoppelt
van
de
sessie.
3
De
sessie
vergrendelt.
Use
Case
5:
Sessie
ontgrendelen
Korte
beschrijving
Een
gebruikerssessie
ontgrendelen
door
een
device
op
tafel
te
leggen.
Verwijzing
Zie
extensie
b
op
use
case
‘Login
met
device’.
Use
Case
6:
Device
lokaliseren
met
hotspot
Korte
beschrijving
Wanneer
een
applicatie
een
GUI
wil
tonen
rond
een
device
moet
er
een
link
zijn
tussen
het
device
en
de
plaats
op
de
tafel.
Dit
kunnen
we
doen
door
op
de
tafel
een
hotspot
te
tonen
waarop
de
gebruiker
zijn
device
moet
leggen.
Pre‐condities
• Het
device
is
al
geconnecteerd
en
geregistreerd
in
de
service
registry.
7/12/08
TultiMouch
30
• •
Het
device
ligt
nog
niet
op
tafel.
Het
device
is
al
gelinkt
aan
een
actieve
sessie.
Post‐condities
• Iedereen
die
op
de
hoogte
wil
zijn
van
de
locatie
van
het
device
is
genotifieerd.
Gerelateerde
use
cases
• Inloggen
met
device
Main
Success
Scenario
Stap
Beschrijving
1
De
sessie
vraagt
aan
het
DeviceManagement
de
locatie
van
het
device.
2
Aangezien
het
device
nog
niet
gelokaliseerd
is,
zal
deze
een
hotspot
aanmaken.
3
De
gebruiker
legt
het
device
op
de
hotspot
(of
toch
in
de
buurt).
4
DeviceManagement
legt
de
link
tussen
het
device
en
het
‘surfaceObject’.
5
De
hotspot
wordt
niet
meer
getoond.
6
De
sessie
wordt
op
de
hoogte
gebracht
van
een
gevonden
link
tussen
het
device
en
het
surfaceObject.
Use
Case
7:
Device
bewegen
Korte
beschrijving
Twee
gebruikers
verplaatsen
op
het
zelfde
moment
hun
device.
Dit
moet
gevolgd
en
bericht
worden
in
het
systeem
zodat
applicaties
daarmee
rekening
kunnen
houden.
Pre‐condities
• Het
systeem
is
reeds
op
de
hoogte
van
de
locatie
van
elk
device.
Post‐condities
• De
applicaties
werden
bericht
over
de
positieveranderingen
van
de
devices
en
zijn
op
de
hoogte
van
de
laatste
positie
van
de
devices.
Gerelateerde
use
cases
• Verplaatsen
van
een
getagged
object
•
Device
localiseren
met
hotspot
Main
Success
Scenario
Stap
Beschrijving
1
De
applicaties
vragen
de
huidige
positie
van
de
devices
op.
2
De
devices
worden
verplaatst.
Dit
wordt
gedetecteerd
en
doorgegeven
aan
de
applicaties.
Use
Case
8:
Verwijderen
device
Korte
beschrijving
Een
gebruiker
wenst
zijn
device
te
ontkoppelen
de
Multi‐Touch
tafel.
Hij
zal
hiervoor
eerst
zijn
toestel
van
de
tafel
nemen
waarna
hij
het
uitschakelt
of
uit
de
detectiestraal
van
de
Multi‐Touch
tafel
verdwijnt.
7/12/08
TultiMouch
31
Pre‐condities
• Het
device
bevindt
zich
op
de
tafel
en
is
gekoppeld
aan
een
SurfaceObject.
•
Services
van
het
device
bevinden
zich
in
het
ServiceRegister.
•
Het
device
is
gedetecteerd
door
de
tafel.
Post‐condities
• Het
device
is
uit
het
platform
verdwenen.
• Services
van
het
device
zijn
uit
het
platform
verdwenen.
• SurfaceObject
van
het
device
is
verdwenen.
Gerelateerde
use
cases
• Login
met
device
•
Lokaliseren
van
device
via
hotspot
Main
Success
Scenario
Stap
Beschrijving
1
De
gebruiker
verwijdert
zijn
device
van
de
tafel.
2
De
MTI
merkt
na
een
bepaald
tijdsinterval
dat
het
device
zich
niet
meer
op
de
tafel
bevindt.
3
Het
surfaceObject
wordt
ontkoppeld
van
het
toegewezen
device.
4
De
gebruiker
schakelt
zijn
device
uit
of
begeeft
zich
uit
de
detectie‐straal
van
de
tafel.
5
De
services
worden
verwijderd
uit
het
platform.
Use
Case
9:
Installeren
van
een
applicatie
(plug‐in)
Korte
beschrijving
De
gebruiker
wil
een
applicatie
toevoegen
(bijvoorbeeld
een
schaakspel)
aan
het
platform
zodanig
dat
de
applicatie
de
huidige
sessie
en
eventueel
volgende
sessies
kan
worden
gebruikt
tot
ze
expliciet
wordt
verwijderd.
Pre‐condities
• De
gebruiker
is
ingelogd.
•
De
applicatie
starter
(OrbWidget)
is
weergegeven
op
het
scherm
en
klaar
voor
gebruik.
•
De
gebruiker
heeft
een
USB
stick
ingeplugd
met
daarop
de
relevante
applicatiebestanden.
Post‐condities
• De
applicatie
is
toegevoegd
aan
het
platform
en
de
mogelijkheid
is
voorzien
om
een
instantie
van
de
applicatie
te
starten
door
het
aanraken
van
een
icoon
in
de
OrbWidget
of
door
het
maken
van
een
gesture.
Main
Success
Scenario
Stap
Beschrijving
1
De
gebruiker
raakt
het
icoon
aan
om
een
nieuwe
applicatie
(plug‐in)
toe
te
voegen.
2
Er
verschijnt
een
formulier
naast
de
applicatie
starter
waarin
de
gebruiker
de
keuze
heeft
om
het
bestandssysteem
op
een
grafische
manier
te
doorzoeken.
Ook
is
er
een
tekstvak
beschikbaar
waar
de
gebruiker
het
pad
naar
de
installatiebestanden
kan
7/12/08
TultiMouch
32
opgeven.
3
De
gebruiker
raakt
het
tekstvak
aan.
4
Er
verschijnt
een
virtueel
toetsenbord
waarmee
de
gebruiker
het
pad
kan
opgeven.
5
De
gebruiker
tikt
het
pad
in.
6
Na
het
aanraken
van
de
enter
toets
op
het
virtueel
toetsenbord
door
de
gebruiker
wordt
de
installatieprocedure
opgestart.
7
De
nodige
bestanden
worden
naar
de
juiste
locatie
gekopieerd.
8
De
afhankelijkheden
van
de
applicatie
worden
gecontroleerd.
9
De
applicatie
wordt
toegevoegd
aan
de
lijst
van
geïnstalleerde
plug‐ins.
Extensie
op
stap
6
Stap
Beschrijving
6.1
De
gebruiker
heeft
een
verkeerd
pad
opgegeven
en
wordt
hiervan
op
de
hoogte
gebracht.
Extensie
op
stap
8
Stap
Beschrijving
8.1
Als
niet
aan
alle
afhankelijkheden
kan
worden
voldaan
(doordat
de
nodige
componenten
niet
in
het
platform
aanwezig
zijn)
dan
wordt
hiervan
een
melding
gegeven
en
wordt
de
installatieprocedure
afgebroken.
Use
Case
10:
Applicatie
starten
Korte
beschrijving
Na
het
inloggen
krijgt
de
gebruiker
een
basisapplicatie
die
hem
o.a.
toelaat
applicaties
te
starten.
Vanaf
nu
wordt
gesproken
over
de
OrbWidget.
(Men
kan
inzien
dat
een
rond
grafisch
object
gemakkelijk
tot
deze
functie
kan
dienen.
De
precieze
vorm
is
echter
van
minder
belang.)
In
dit
scenario
wordt
de
interactie
van
de
gebruiker
met
de
tafel
om
een
applicatie
te
starten
besproken.
Pre‐condities
• De
gebruiker
is
ingelogd:
zijn
OrbWidget
is
gestart
en
niet
geblokkeerd.
Post‐condities
• Er
is
een
nieuw
applicatie
gestart.
Gerelateerde
use
cases
• Login
met/zonder
device
•
Sessie
vergrendelen/ontgrendelen
Main
Success
Scenario
Stap
Beschrijving
1
De
gebruiker
tikt
op
de
OrbWidget.
2
Een
menu
komt
te
voorschijn
met
een
lijst
van
beschikbare
applicaties.
3
De
gebruiker
selecteert
een
private
applicatie.
4
De
private
applicatie
start
en
komt
te
voorschijn
verbonden
met
de
OrbWidget.
7/12/08
TultiMouch
33
Extensie
op
stap
3
Stap
Beschrijving
3.1
Een
publieke
applicatie
wordt
gestart.
3.2
Het
publiek
applicatie
verschijnt,
niet
verbonden
met
de
OrbWidget
Use
Case
11:
Applicatie
gebruikt
device
Korte
beschrijving
De
gebruiker
heeft
zijn
device
op
de
MTI
gelegd
en
krijgt
een
keuzemenu.
Nu
selecteert
de
gebruiker
de
fotoapplicatie.
Deze
laat
de
foto’s
opgeslagen
op
het
device
verschijnen
zodat
de
gebruiker
er
kan
door
browsen.
Pre‐condities
• Het
device
is
reeds
herkend,
geconnecteerd
en
gelokaliseerd.
•
Er
werd
reeds
een
gebruikerssessie
opgestart
en
het
menu
verschijnt.
Post‐condities
• De
foto’s
worden
op
de
MTI
getoond
en
er
kan
door
gebrowsed
worden.
Gerelateerde
use
cases
• Applicatie
starten
• Login
met
device
Main
Success
Scenario
Stap
Beschrijving
1
De
gebruiker
selecteert
in
het
menu
de
fotoapplicatie.
2
De
fotoapplicatie
wordt
gestart.
3
De
fotoapplicatie
vraagt
bestanden
van
het
device
op.
4
De
fotoapplicatie
laat
die
visualiseren.
5
De
fotoapplicatie
reageert
op
de
gestures
van
de
gebruiker.
Extensie
op
stap
3
Stap
Beschrijving
3.1
Er
treedt
een
fout
op
bij
het
ophalen
van
de
bestanden
op
het
device.
3.2
Er
wordt
een
bericht
getoond
met
een
foutboodschap.
3.3
De
fotoapplicatie
sluit
af.
Use
Case
12:
Verplaatsen
van
een
getagged
object
Korte
beschrijving
Er
is
een
schaakspel
bezig
en
een
speler
verplaatst
een
getagged
schaakstuk.
Pre‐condities
• Het
TultiMouch
platform
is
volledig
geconfigureerd
en
draait
op
de
Multi‐Touch
tafel.
• De
tag
is
gekend
door
het
systeem.
7/12/08
TultiMouch
34
Post‐condities
• Het
getaggede
schaakstuk
is
verplaatst
en
herkend
als
hetzelfde
stuk.
Main
Success
Scenario
Stap
Beschrijving
1
De
speler
heft
het
schaakstuk
op.
2
Het
stuk
wordt
als
verdwenen
gedetecteerd.
3
De
speler
plaatst
het
stuk
ergens
anders
terug.
4
Het
stuk
wordt
gedetecteerd
en
herkend.
5
Het
stuk
wordt
als
verplaatst
gezien.
Extensie
op
stap
4
Stap
Beschrijving
4.1
Het
stuk
wordt
niet
herkend.
De
speler
kan
het
stuk
terug
opheffen
en
neerzetten
in
de
hoop
dat
de
herkenning
deze
keer
wel
lukt,
anders
gebeurt
er
niets.
7/12/08
TultiMouch
35
Quality
Attribute
Scenario’s
Inleiding
Zoals
vermeld
in
het
vorige
gedeelte
zijn
usability,
modifiability
en
performance
de
drie
belangrijkste
quality
attributes
van
ons
platform.
In
dit
gedeelte
beschrijven
we
voor
elk
van
deze
drie
attributen
een
scenario
om
hun
nut
te
tonen
en
ze
te
illustreren.
Hierna
zijn
we
in
staat
om
de
Utility
Tree
op
te
stellen.
Usability
Een
belangrijke
eigenschap
van
ons
platform
is
de
gebruiksvriendelijkheid
ervan.
We
willen
de
eindgebruiker
snel
vertrouwd
maken
met
de
features
die
ons
platform
te
bieden
heeft.
Deze
eindgebruiker
(of
source)
is
in
ons
geval
een
ontwikkelaar
van
Multi‐Touch
software
op
het
platform
(het
artefact).
De
stimulus
is
de
gebruiker
die
snel
zijn
weg
wil
vinden
in
een
nieuwe
programmeer‐omgeving.
Het
artefact
is
het
platform
zelf,
en
de
omgeving
(environnement)
is
de
ontwikkelfase
van
een
eigen
applicatie.
Beschouw
het
voorbeeld
waarin
een
(relatief
ervaren)
programmeur
voor
het
eerst
aan
de
slag
gaat
met
ons
platform.
Naast
een
uitgebreide
en
duidelijke
documentatie
van
alle
mogelijke
functionaliteit
zal
er
een
reeks
tutorials
met
voorbeeldcode
moeten
worden
voorzien
om
een
vlotte
start
te
garanderen.
Een
klassiek
voorbeeld
is
een
“Hello
World”
applicatie.
In
de
context
van
het
Multi‐Touch
platform
zou
deze
applicatie
de
beroemde
tekst
kunnen
doen
verschijnen
bij
het
laatste
punt
van
contact
op
het
scherm.
Om
een
eerste
aanzet
in
de
interactie
met
externe
toestellen
te
vergemakkelijken
kan
een
“Hello
Device”
tutorial
helpen.
Dit
programma
maakt
een
verbinding
met
een
extern
toestel
en
toont
op
het
scherm
de
naam
van
het
toestel.
Het
belang
van
een
uitgebreide
en
duidelijk
documentatie
hebben
we
reeds
vermeld.
We
merken
hierbij
op
dat
deze
documentatie
ook
informatie
moet
geven
over
het
compilatie
en
opstart‐ proces
van
een
nieuwe
applicatie.
Indien
we
er
van
uitgaan
dat
de
softwareontwikkelaar
de
programmeertaal
reeds
kent
waarin
hij
zijn
applicatie
voor
het
platform
wil
schrijven,
verwachten
we
dat
het
maken
en
begrijpen
van
een
“Hello
World”
of
“Hello
Device”
applicatie
zeker
in
minder
dan
twee
à
drie
uur
kan
gebeuren.
7/12/08
TultiMouch
36
Modifiability
De
hardware
voor
een
Multi‐Touch
opstelling
is
meestal
duurder
en
groter
van
omvang
in
vergelijking
met
een
gewone
PC
of
laptop.
Als
we
de
eindgebruiker
in
staat
willen
stellen
om
applicaties
voor
ons
platform
te
ontwikkelen
op
een
gewone
computer,
moet
er
een
manier
bestaan
om
de
Multi‐Touch
input
(MTI)
op
één
of
andere
manier
te
simuleren.
De
bron
(source)
in
dit
scenario
is
wederom
de
Multi‐Touch
softwareontwikkelaar.
De
stimulus
is
dat
men
applicaties
wil
implementeren
zonder
de
aanwezigheid
van
een
Multi‐Touch
(beeld)scherm.
Als
oplossing
(response)
zou
men
bijvoorbeeld
input
van
een
echt
Multi‐Touch
scherm
kunnen
vastleggen,
en
die
input‐gegevens
later
afspelen
op
een
gewone
PC.
Een
andere
mogelijkheid
is
een
hulpprogramma
waar
men
Multi‐Touch
inputgegevens
kan
maken
door
de
samenstelling
van
single‐touch
input.
Het
Multi‐Touch
platform
moet
dus
aangepast
worden
zodat
het
zijn
input
op
andere
manier
kan
verkrijgen,
maar
zou
geen
hinder
ondervinden
van
deze
virtuele
input
en
zou
dus
ook
zonder
verlies
van
functionaliteit
gebruikt
kunnen
worden.
Belangrijk
is
dat
we
de
code
voor
MTI
goed
afschermen
van
andere
functionaliteit,
en
dat
men
ze
makkelijk
kan
overschrijven.
Dit
is
een
algemene
opmerking
die
niet
alleen
voor
de
MTI‐component
geldt.
Het
effectief
aanpassen
van
code
zodat
het
platform
kan
draaien
op
testdata
in
plaats
van
realtime
input,
is
mogelijk
een
lastig
karwei.
We
zullen
ons
platform
echter
op
zo’n
manier
ontwerpen
dat
dit
zonder
probleem
kan
gebeuren.
De
duur
van
de
ontwikkeling
van
een
programma
voor
ons
platform
blijft
daarnaast
natuurlijk
sterk
afhankelijk
van
de
complexiteit
ervan
en
de
grootte
van
het
ontwikkelingsteam.
Performance
Als
er
één
of
meerdere
applicaties
tegelijk
draaien
op
ons
platform
is
het
belangrijk
dat
ze
allemaal
even
responsief
werken.
Men
moet
er
rekening
mee
houden
dat
er
per
applicatie
meerdere
aanrakingen
en/of
gestures
tegelijk
kunnen
zijn.
7/12/08
TultiMouch
37
In
dit
scenario
is
de
stimulus
een
periodiek
optreden
van
events
van
aanrakingen,
gestures,
connectie’s
met
externe
toestellen,
enz.
De
gebruikers
en
toestellen
zijn
de
bron
van
deze
stimuli.
Het
spreekt
voor
zich
dat
er
een
hele
waaier
aan
combinaties
mogelijk
is
van
het
type
hardware
waarop
ons
platform
draait,
hoeveel
applicaties
er
tegelijk
lopen
en
hoeveel
gebruikers
er
simultaan
actief
zijn.
Beschouw
dus
het
voorbeeld
waarbij
er
een
Multi‐Touch
scherm
ter
grootte
van
een
salontafel
is
opgesteld
met
onderliggend
een
high‐end
PC
die
vandaag
(anno
2008)
gekocht
kan
worden.
Stel
verder
dat
het
Multi‐Touch
raakoppervlak
beelden
verwerkt
aan
een
frequentie
van
60Hz,
en
dat
er
gemiddeld
50
of
meer
bewegende
contactpunten
zijn.
We
verwachten
dat
het
onder
deze
voorwaarden
voor
95%
van
de
tijd
mogelijk
is
de
latency
lager
dan
125
ms
te
houden,
en
dat
er
dus
een
relatief
responsieve
gebruikerservaring
gegarandeerd
kan
worden.
Utility
Tree
7/12/08
TultiMouch
38
Module
View
Inleiding
De
functionele
componenten
van
dit
project
kunnen
onderverdeeld
worden
in
grote
modules,
die
elk
verder
op
te
delen
zijn
in
submodules.
Dit
document
geeft
een
overzicht
van
de
verschillende
modules
die
samenwerken,
waarbij
elke
hoofdmodule
verder
wordt
uitgediept.
Totaaloverzicht
Het
framework
valt
onder
te
verdelen
in
6
grote
modules
die
diensten
aanbieden
aan
elkaar
en
aan
applicaties.
Het
volgende
componentendiagram
geeft
de
afhankelijkheden
weer
tussen
die
modules.
7/12/08
TultiMouch
39
Plug‐in
Infrastructuur
De
plug‐in
infrastructuur
zorgt
ervoor
dat
de
verschillend
benodigde
componenten
van
het
platform
kunnen
worden
ondergebracht
in
modules
die
services
leveren
aan
andere
modules.
Applicaties
en
ondersteunende
componenten
die
draaien
op
het
platform
gebruiken
het
centraal
register
om
het
platform
op
de
aanwezigheid
van
bepaalde
services
te
onderzoeken,
om
zo
van
de
beschikbare
functionaliteit
gebruik
te
maken.
Externe
Interfaces
Service
Wanneer
een
bepaalde
functionaliteit
wordt
aangeboden
door
een
plug‐in,
wordt
hiervoor
de
term
service
aangenomen.
Een
service
wordt
vertegenwoordigd
door
een
interface,
waarbij
de
implementatie
door
de
aanbiedende
plug‐in
wordt
verzorgd.
Deze
interface
moet
gekend
zijn
in
onderdelen
die
gebruik
maken
van
de
aangeboden
service.
Plugin
Een
plug‐in
bevat
een
aantal
samenhorende
componenten
die
extra
functionaliteit
kunnen
toevoegen
aan
de
rest
van
het
platform.
Dit
kan
zowel
pure
service
leveranciers
als
gebruiksapplicaties
omvatten.
Wanneer
een
plug‐in
gebruik
maakt
van
andere
services,
dan
worden
deze
afhankelijkheden
vastgelegd
in
de
meta‐data
van
de
betreffende
plug‐in.
Deze
komt
in
de
vorm
van
een
“manifest”
bestand.
Dit
bestand
bevat
ook
de
naam
en
locatie
van
de
activator
klasse
die
de
plug‐in
interface
implementeert.
•
•
start(serviceRegistry:
ServiceRegistry):void
In
deze
methode
gebeurt
de
initialisatie
van
de
componenten
van
de
plug‐in
en
worden
de
aan
te
bieden
services
geregistreerd
in
het
service
register.
stop(serviceRegistry:
ServiceRegistry):void
Hierin
worden
de
geregistreerde
services
uit
het
register
verwijderd
en
wordt
al
het
nodige
opruimwerk
verricht
voor
de
plug‐in.
PluginRegistry
Het
plug‐in
register
beheert
alle
aanwezige
plug‐ins.
Wanneer
een
plug‐in
wordt
geïnstalleerd,
dan
zal
zijn
manifest
file
worden
gecontroleerd
op
afhankelijkheden
van
ander
plug‐ins.
Als
alle
benodigdheden
aanwezig
zijn
in
het
platform,
dan
wordt
de
plug‐in
op
een
persistente
manier
aan
het
platform
toegevoegd,
wordt
hij
in
het
register
geplaatst
en
zal
de
bijhorende
activator
worden
aangeroepen
om
de
plug‐in
te
starten.
•
• • •
•
installPlugin(pluginReference:
String)
:
void
Aan
de
hand
van
de
pluginReference,
die
de
locatie
van
het
plug‐in
bestand
voorstelt
(URI),
wordt
de
plug‐in
op
een
persistente
manier
aan
het
platform
toegevoegd.
Dit
houdt
in
dat
de
relevante
bestanden
in
het
systeem
worden
opgenomen
en
dat
de
plug‐in
in
het
plug‐in
register
wordt
geplaatst.
uninstallPlugin(pluginReference:
String)
:
void
De
plug‐in
waarnaar
wordt
verwezen
wordt
uit
het
systeem
verwijderd.
findPlugins(filter:
PluginFilter)
:
Plugin
[*]
Laat
toe
om
een
lijst
van
geïnstalleerde
plug‐ins
op
te
vragen
aan
de
hand
van
een
filter.
addPluginListener(listener:
PluginListener,
filter:
PluginFilter)
:
void
Laat
componenten
toe
om
zich
te
registeren
voor
wijzigingen
aan
de
inhoud
van
het
plug‐in
register.
removePluginListener(listener:
PLuginListener,
filter:
PluginFilter)
:
void
7/12/08
TultiMouch
40
ServiceRegistry
Deze
component
houdt
een
lijst
van
services
bij.
Geregistreerde
services
zijn
beschikbaar
om
door
andere
componenten
te
worden
gebruikt.
• • •
•
• •
addService(service:
Service)
:
void
Voegt
een
service
toe
aan
het
register.
removeService(service:
Service)
:
void
Verwijdert
een
service
uit
het
register.
findServices(filter:
ServiceFilter)
:
Service
[*]
Laat
toe
om
services
op
te
vragen
op
basis
van
een
serviceFilter.
Het
filter
kan
bijvoorbeeld
het
type
service
of
de
gebruiker
vastleggen.
Het
filter
kan
men
zoals
gewoonlijk
gebruiken
om
interesse
te
uiten
voor
bepaalde
groepen
services.
addServiceListener(listener:
ServiceListener,
filter:
ServiceFilter)
:
void
Laat
componenten
toe
om
zich
te
registeren
voor
wijzigingen
aan
de
inhoud
van
het
service
register.
removeServiceListener(listener:
ServiceListener,
filter:
ServiceFilter)
:
void
getProperties(service:
Service)
:
Properties
Hiermee
kunnen
eigenschappen,
zoals
de
eigenaar(user/group),
van
een
service
worden
opgevraagd.
ServiceListener
• serviceAdded(service:
Service)
Deze
methode
wordt
aangeroepen
wanneer
een
service
werd
toegevoegd
aan
het
platform
die
voldoet
aan
de
service
filter
waarmee
de
listener
werd
geregistreerd
bij
het
service
register.
• serviceRemoved(service:
Service)
Deze
methode
wordt
aangeroepen
wanneer
een
service
werd
verwijdert
uit
het
platform
die
voldeed
aan
de
service
filter
waarmee
de
listener
werd
geregistreerd
bij
het
service
register.
PluginListener
• pluginAdded(plugin:
Plugin)
Deze
methode
wordt
aangeroepen
wanneer
een
plug‐in
werd
toegevoegd
aan
het
platform
die
voldoet
aan
de
plug‐in
filter
waarmee
de
listener
werd
geregistreerd
bij
het
plug‐in
register.
• pluginRemoved(plugin:
Plugin)
Deze
methode
wordt
aangeroepen
wanneer
een
plug‐in
werd
verwijdert
uit
het
platform
die
voldeed
aan
de
plug‐in
filter
waarmee
de
listener
werd
geregistreerd
bij
het
plug‐in
register.
Architectural
Drivers
Availability
"Availability"
is
niet
een
van
de
hoofd
quality
attributes
van
dit
systeem.
Het
is
echter
duidelijk
dat
de
werking
van
het
systeem
staat
of
valt
met
de
beschikbaarheid
van
het
plug‐in
en
service
register.
Bij
een
standaard
systeemopzet
worden
hiervoor
geen
extra
maatregelen
genomen.
Bij
maximale
systeemopzet
is
de
tactiek:
ontdubbelen.
Voor
de
details
hierover
zie
"deployment
view".
7/12/08
TultiMouch
41
Afhankelijkheden
De
plug‐in
infrastructuur
is
de
kern
van
het
systeem
die
de
functionaliteiten
van
modules
beschikbaar
stelt
voor
andere
modules.
Hierdoor
staat
dit
onderdeel
van
het
totale
project
op
zichzelf
en
heeft
het
dus
geen
afhankelijkheden.
Component
Diagram
7/12/08
TultiMouch
42
Multi‐Touch
Input
(MTI)
De
MTI‐component
is
één
van
de
drie
componenten
die
deel
uitmaken
van
de
Core
Layer
van
ons
platform.
Dit
document
omschrijft
de
verschillende
subcomponenten
met
hun
taken,
verantwoordelijkheden
en
publieke
functies.
Externe
Interfaces
De
MTI‐component
heeft
twee
externe
interfaces;
twee
services
die
geregistreerd
zullen
worden
bij
de
service
registry,
en
die
dus
aanspreekbaar
zijn
door
andere
plugins.
Enerzijds
is
er
de
SurfaceObjectManagerService
en
anderzijds
de
GestureRecognitionService.
SurfaceObjectManagerService
De
SurfaceObjectManagerService
stuurt
events
uit
voor
alle
bewegingen
op
het
Multi‐ Touchraakoppervlak.
Dit
omvat
zowel
bewegingen,
als
het
verschijnen
en
verdwijnen
van
objecten.
De
SurfaceObjecten
die
meegegeven
worden
bij
deze
events
bevatten
allerlei
informatie
zoals
hun
coordinaten
of
het
type
object
(vinger,
fiducial,
A4‐blad,
…).
SurfaceObjectManagerService
De
service
zelf.
Geïnteresseerden
kunnen
zich
registreren
voor
SurfaceObject‐events,
en
zich
later
eventueel
ook
ontregistreren.
Men
kan
hier
ook
nieuwe
SurfaceObjecttypes
toevoegen
of
verwijderen.
Indien
een
bepaald
type
niet
geregistreerd
is
zal
het
ook
niet
herkend
worden,
en
wordt
het
dus
gewoon
als
een
onbekende
blok
beschouwd.
•
• •
•
•
addSurfaceObjectListener(listener:
Listener,
filter:SurfaceObjectFilter):void
Voegt
een
luisteraar
voor
bepaalde
types
SurfaceObjecten
toe.
De
SurfaceObjectFilter
laat
toe
om
enkel
voor
bepaalde
groepen
SurfaceObjecten
op
de
hoogte
gebracht
te
worden.
Deze
groepen
kunnen
ook
singletons
zijn.
getSurfaceObject(coordinates:Coordinate):SurfaceObject
Vraagt
welk
SurfaceObject
zich
op
een
bepaald
stel
coördinaten
bevindt.
removeSurfaceObjectListener(listener:Listener
,
filter:SurfaceObjectFilter):void
Analoog
aan
het
toevoegen
van
een
luisteraar
kan
men
zich
met
deze
methode
uitschrijven
voor
het
ontvangen
van
events
voor
bepaalde
groepen
SurfaceObjects.
addObjectTypeDefinition(type:ObjectTypeDefinition):void
Met
deze
methode
kan
een
definitie
voor
een
type
object
toegevoegd
worden,
dat
vanaf
dan
herkend
zal
worden
door
de
SurfaceObjectIdentification.
Dit
kan
bijvoorbeeld
een
soort
tag
zijn.
removeObjectTypeDefinition(type:ObjectTypeDefinition):void
Verwijdert
een
ObjectTypeDefinition.
Objecten
van
dit
type
zullen
niet
langer
geïdentificeerd
kunnen
worden
door
de
SurfaceObjectIdentification.
SurfaceObjectListener
Deze
luisteraar
wil
op
de
hoogte
blijven
van
bepaalde
groepen
SurfaceObjects.
Zoals
de
onderstaande
functies
aantonen
zijn
er
drie
grote
soorten
events.
• • •
surfaceObjectFound(surfaceObject:SurfaceObject):void
surfaceObjectLost(surfaceObject:SurfaceObject):void
surfaceObjectMoved(surfaceObject:SurfaceObject,
moveType:MoveType):void
In
tegenstelling
tot
de
vorige
twee
event‐types
worden
hier
twee
parameters
meegegeven.
De
moveType‐parameter
geeft
aan
op
welke
manier
een
bepaald
SurfaceObject
bewogen
werd.
Dit
kan
gewoon
een
verschuiving
zijn;
maar
ook
een
zogenaamde
“pick‐up”‐verschuiving.
Bij
een
“pick‐up”‐verschuiving
wordt
er
een
7/12/08
TultiMouch
43
herkenbaar
SurfaceObject
(bijvoorbeeld
een
speelstuk
met
fiducial)
opgeheven
en
in
een
bepaalde
tijdspanne
elders
terug
neergezet.
SurfaceObject
Deze
objecten
zijn
onze
interne
representatie
van
alle
objecten
die
zich
op
het
oppervlak
van
de
Multi‐Touch
tafel
bevinden.
• •
• •
•
getCoordinates():
Coordinates
Geeft
de
absolute
coördinaten
weer
van
het
object
op
het
Multi‐Touch
oppervlak.
getOrientation():
Orientation
Voor
Fiducials,
of
andere
ObjectTypes
waarvan
hun
oriëntatie
geïdentificeerd
kan
worden.
getSize():
Size
Geeft
de
afmetingen
van
het
object.
getId():
String
Geeft
het
SurfaceObjectID.
Het
is
de
taak
van
de
SurfaceObjectManager
om
het
SurfaceObjectID
toe
te
wijzen
aan
een
object.
Deze
nieuwe
ID
is
nuttig
omdat
de
SurfaceObjectManager
van
bepaalde
objecten
zal
weten
dat
het
hetzelfde
is
als
een
vroeger
herkend
object,
terwijl
de
BlobDetection
dit
niet
weet
en
een
nieuwe
BlobID
zal
toekennen.
getType():SurfaceObjectType
Geeft
het
ObjectType
van
dit
object
zoals
het
geïdentificeerd
werd
door
de
SurfaceObjectIdentification.
GestureRecognitionService
De
tweede
externe
interface
van
de
MTI‐component
is
de
GestureRecognitionService.
Deze
service
brengt
luisteraars
op
de
hoogte
van
nieuwe
gesture‐events.
Dit
omvat
zowel
single
als
Multi‐Touch
gestures.
Een
duidelijke
begripsbepaling
van
gesture
is
zeker
niet
onbelangrijk.
Daarom
de
volgende
definitie:
Een
gesture
is
een
bepaalde
handbeweging
die
men
doet
op
het
Multi‐Touch
raakoppervlak,
een
patroon
dat
door
ons
platform
kan
herkend
worden.
In
principe
zijn
er
geen
restricties
op
de
vorm
van
dit
patroon,
maar
het
spreekt
voor
zich
dat
er
een
duidelijk
onderscheid
moet
kunnen
gemaakt
worden
tussen
twee
verschillende
gestures.
Een
gesture
kan
met
één
of
met
meerdere
vingers
gebeuren,
maar
ook
het
gebruik
van
andere
types
SurfaceObjecten
is
niet
uitgesloten
(bijvoorbeeld
een
gesture
met
2
vingers
en
een
getagged
speelstuk).
De
oriëntatie
van
een
bepaald
patroon
speelt
geen
rol.
De
gesturedetection
zal
dus
bijvoorbeeld
geen
onderscheid
maken
tussen
een
9
en
een
6.
Het
is
de
taak
van
de
GUI
om
het
patroon
in
een
bepaalde
oriëntatiecontext
te
plaatsen
en
daar
verdere
conclusies
uit
te
trekken.
Als
laatste
vermelden
we
hier
nog
dat
een
Multi‐Touch
scherm
absolute
coördinaten
krijgt,
en
er
met
andere
woorden
dus
een
boven‐
en
onderkant
bestaat.
Dit
is
triviaal
voor
een
traditioneel
computerscherm,
maar
bij
Multi‐Touch
tafels
zou
hier
discussie
over
kunnen
bestaan.
De
keuze
van
de
boven‐
en
onderkant
is
arbitrair,
maar
moet
wel
op
voorhand
gemaakt
worden
en
consistent
blijven.
Coördinaten
en
oriëntaties
in
dit
stelsel
noemen
we
absoluut.
Ze
kunnen
in
de
GUI
vertaald
worden
naar
relatieve
varianten.
Gesture
Deze
klasse
moet
een
definitie
geven
voor
een
bepaalde
gesture.
We
maken
hier
het
onderscheid
tussen
twee
subklassen:
de
SingleGesture
en
AggregatedGesture.
De
SingleGesture
geeft
een
omschrijving
van
patronen
met
één
lijn.
Hoewel
dit
een
kwestie
van
implementatie
is,
kunnen
we
nu
al
zeggen
dat
dit
waarschijnlijk
een
verzameling
van
vectoren
met
een
genormaliseerde
7/12/08
TultiMouch
44
weergave
van
het
patroon
zal
zijn.
AggregatedGestures
zeggen
hoe
bepaalde
SingleGestures
gecombineerd
kunnen
worden
tot
een
nieuwe,
complexe
gesture.
•
getName():
String
Geeft
de
naam
van
de
gesture
terug.
GestureRecognitionService
De
service
zelf
die
luisteraars
op
de
hoogte
moet
brengen
van
herkende
gestures.
Voor
men
zich
kan
registreren
voor
bepaalde
gestures
moet
de
definitie
ervan
toegevoegd
zijn/worden.
• •
•
• •
addGestureDefinition(gesture:Gesture):void
Voegt
een
definitie
toe
van
een
nieuwe
gesture.
removeGestureDefinition(gesture:Gesture):void
Verwijdert
de
definitie
van
een
gesture.
De
GestureRecognition
zal
niet
meer
proberen
om
gestures
van
dit
type
te
herkennen.
getDefinedGestures(filter:GestureFilter):
Gesture[*]
Vraagt
een
lijst
op
met
alle
gedefinieerde
gestures.
De
GestureFilter
kan
analoog
aan
de
SurfaceObjectFilter
bepaalde
groepen
van
gestures
definieren.
addGestureListener(listener:GestureListener
,
filter:GestureFilter):void
removeGestureListener(listener:GestureListener
,
filter:GestureFilter):void
GestureListener
De
GestureListener
wil
op
de
hoogte
blijven
van
bepaalde
gestures.
Hij
registreert
zich
met
een
GestureFilter
bij
de
GestureRecognitionService
—
dit
aan
de
hand
van
bovenstaande
methodes.
•
gestureDetected(gesture:Gesture,
coordinates:Coordinates,
absoluteOrientation:int):void
Geeft
aan
dat
er
een
gesture
van
het
type
Gesture
herkend
werd
op
de
gegeven
coördinaten.
De
laatste
parameter
geeft
de
absolute
rotatie
van
het
patroon
aan,
tegenwijzerzin
met
de
horizontale
middellijn
van
de
tafel
als
basis.
We
herinneren
de
lezer
eraan
dat
het
de
taak
van
de
GUI
is
om
de
gesture
in
een
bepaalde
context
te
plaatsen,
en
dan
de
relatieve
oriëntatie
binnen
het
GUI
element
te
bepalen
GestureFilter
Deze
filter
kan
Single
en
AggregatedGestures
groeperen.
Interne
Componenten
Blob
detection
Dit
is
een
wrapper‐component
rondom
een
reeds
bestaande
bibiotheek
zoals
bijvoorbeeld
TouchLib.
Deze
blok
moet
Multi‐Touch
input
uit
die
bibliotheek
vertalen
voor
ons
platform.
Wat
de
Multi‐Touch
input
betreft
zal
men
waarschijnlijk
niet
lager
naar
de
hardwarelaag
kunnen
dan
dit.
Concreet
zal
deze
component
een
reeks
events
sturen
naar
de
subcomponenten
GestureRecognition
en
SurfaceObjectIdentification.
BlobDetection
De
component
zelf.
Normaal
gezien
zullen
hier
slechts
twee
publieke
functies
zijn.
Deze
laten
een
object
toe
zich
te
registeren
of
ontregistreren
als
luisteraar
voor
blob‐events.
• •
addBlobEventListener(listener:BlobEventListener):void
removeBlobEventListener(listener:BlobEventListener):void
BlobEventListener
7/12/08
TultiMouch
45
Deze
luisteraar
wil
op
de
hoogte
blijven
van
alle
aanrakingen
en
bewegingen
op
het
Multi‐Touch
raakoppervlak.
Onderstaande
events
geven
een
zogenaamd
BlobID
mee;
het
identificatienummer
dat
de
onderliggende
bibliotheek
gebruikt
om
blobs
te
identificeren
(bijvoorbeeld
het
TouchLib
ID).
• • •
blobFound(coordinates
:Coordinates,
id:BlobID):void
blobMoved(coordinates
:Coordinates,
id:BlobID):void
blobLost(coordinates
:Coordinates,
id:BlobID):void
SurfaceObjectIdentification
Het
is
in
ons
framework
mogelijk
een
onderscheid
te
maken
tussen
verschillende
types
objecten
die
in
contact
staan
met
het
raakoppervlak.
Hieronder
verstaan
we
bijvoorbeeld
vingers,
speelstukken
met
fiducials
(tags)
en
grotere
objecten
zoals
een
A4‐blad
of
een
afgedrukte
foto.
De
SurfaceObjectIdentification
zal
blob‐events
ontvangen
van
de
BlobDetection,
en
een
type
object
bepalen
voor
nieuwe
blobs.
Daarna
zullen
alle
blob‐events
doorverzonden
worden
naar
de
volgende
component
in
de
lijn:
de
SurfaceObjectManager.
SurfaceObjectIdentification
Deze
component
zal
de
"blobs"
identificeren
om
een
onderscheid
te
maken
tussen
vingers
en
andere
mogelijke
objecten.
Merk
op
dat
deze
component
de
blobMoved
en
blobLost‐events
zonder
meer
zal
doorsturen;
enkel
bij
blobFound‐events
wordt
er
rekenintensief
werk
verricht.
•
•
addSurfaceObjectType(type:SurfaceObjectType):void
Methode
om
SurfaceObjectTypes
die
moeten
herkend
worden
toe
te
voegen.
Deze
methode
kan
enkel
aangeroepen
worden
door
de
SurfaceObjectManager.
addObjectIdentificationListener(listener:ObjectIdentificationListener):void
SurfaceObjectType
Dit
is
een
superklasse
voor
alle
soorten
ObjectTypes
en
geeft
een
definitie
voor
dit
type
SurfaceObject.
ObjectIdentificationListener
• objectIdentified(coordinates
:Coordinates,
id:BlobID,
type:SurfaceObjectType):void
SurfaceObjectManager
De
SurfaceObjectManager
is
verantwoordelijk
voor
het
tracken
van
alle
surfaceObjects.
Net
zoals
de
onderliggende
“Blob
Detection”‐bibliotheek
een
lijst
bijhoudt
van
blobs,
zal
deze
component
SurfaceObjecten
bijhouden.
Geïnteresseerden
kunnen
luisteren
naar
verschillende
SurfaceObject‐events.
SurfaceObjectManager
De
component
zelf
implementeert
de
eerder
besproken
SurfaceObjectManagerService.
Naast
de
functies
die
bij
deze
service
horen
is
er
hier
nog
één
extra
functie
die
dient
voor
de
communicatie
met
een
andere
interne
component:
de
GestureRecognition.
•
getSurfaceObject(id:BlobID):
SurfaceObject
Geeft
het
SurfaceObject
terug
met
het
opgegeven
BlobID.
Deze
methode
wordt
door
de
GestureRecognition
aangeroepen
en
is
nodig
om
na
de
parallelle
uitvoering
van
GestureRecognition
en
SurfaceObjectIdentification
de
link
te
kunnen
leggen
tussen
een
gesture
en
het
SurfaceObject
waarmee
het
gemaakt
is.
7/12/08
TultiMouch
46
GestureRecognition
De
GestureRecognition
moet
gestures
herkennen
en
hier
events
voor
uitsturen.
Ze
bestaat
uit
twee
kleinere
deelcomponenten
die
verantwoordelijk
zijn
voor
de
herkenning
van
respectievelijk
SingleGestures
en
AggregatedGestures.
SingleGestureRecognition
Deze
subcomponent
zal
events
ontvangen
van
de
BlobDetection.
Er
wordt
een
lijst
van
te
controleren
gestures
bijgehouden
die
enkel
bewerkt
kan
worden
door
de
AggregatedGestureRecognition.
• •
addSingleGestureDefinition(singleGesture:SingleGesture):void
removeSingleGestureDefinition(singleGesture:SingleGesture):void
AggregatedGestureRecognition
Deze
component
ontvangt
zijn
events
van
de
SingleGestureRecognition.
Indien
er
events
binnenkomen
over
gestures
die
geregistreerd
staan
als
zijnde
deel
van
een
AggregatedGesture,
dan
zal
er
een
event
gegenereerd
worden
voor
de
buitenwereld.
Events
voor
SingleGestures
worden
ook
verstuurd
indien
er
daarvoor
luisteraars
zijn.
•
singleGesture(singleGesture:SingleGesture,
id:BlobID):void
Wordt
normaal
gezien
enkel
opgeroepen
door
de
SingleGestureRecognition
om
de
herkenning
van
SingleGesture’s
te
melden.
Architectural
Drivers
Performance
Dit
is
duidelijk
het
voornaamste
quality
attribute
voor
deze
component.
Het
hele
platform
staat
of
valt
met
het
real‐time
verwerken
van
de
blobs,
gestures
en
tags
van
de
te
identificeren
objecten.
We
gebruiken
daarvoor
een
“Pipe
and
Filter”
patroon
waarbij
de
blobs
in
parallel
doorgegeven
worden
aan
de
GestureRecognition
en
SurfaceObjectIdentification
modules.
Alles
komt
dan
terug
samen
bij
de
SurfaceObjectManager
waar
ook
nog
een
keer
de
koppeling
gelegd
kan
worden
tussen
een
geïdentificeerd
object
en
de
gestures
die
er
eventueel
mee
gevormd
worden.
Afhankelijkheden
Buiten
de
plug‐in
infrastructuur
module
heeft
deze
component
geen
afhankelijkheden.
7/12/08
TultiMouch
47
Component
Diagram
7/12/08
TultiMouch
48
GUI
De
GUI
module
bestaat
uit
een
bibliotheek
van
(basis)
grafische
objecten
(te
vergelijken
met
java
Swing)
die
andere
modules
kunnen
gebruiken
en
overschrijven
om
hun
specifieke
doeleinden
te
bereiken.
Verder
voorziet
deze
plug‐in
ook
een
GuiService
die
informatie
aanlevert
omtrent
het
weergaveapparaat.
GestureListeners
worden
door
de
applicaties
aan
de
grafische
componenten
toegevoegd,
en
het
is
hierbij
de
taak
van
de
GUI
module
om
"gesture"
events
van
de
Multi‐Touch
Input
(MTI)
module
te
vertalen
naar
"gesture"
events
op
een
specifieke
Widget.
Tenslotte
bevindt
ook
al
de
weergave
(rendering)
logica
zich
in
de
hier
beschreven
plug‐in.
Externe
Interfaces
GUIService
• getScreenProperties()
:
Properties[*]
Deze
methode
geeft
een
lijst
van
scherm
eigenschappen
mee
zoals
de
totale
resolutie,
kleurdiepte,
…
•
addWidget/removeWidget(widget:
Widget)
:
void
Met
deze
methoden
wordt
een
grafische
component
toegevoegd
of
verwijderd
aan/uit
een
lijst
met
weer
te
geven
componenten.
Interne
Componenten
Widget
De
Widget
klasse
is
de
basis
waar
alle
andere
grafische
objecten
van
overerven.
De
bibliotheek
bevat
een
gamma
aan
verschillende
objecten,
zoals
bijvoorbeeld
tekstvakken,
panelen,
frames,
enz.
Deze
objecten
bieden
een
bepaalde
functionaliteit
of
grafische
interface
aan
(aan
de
eindgebruiker)
waarbij
de
programmeur
hierop
gemakkelijk
uitbreidingen
kan
realiseren.
Deze
set
van
objecten
is
volgens
structuur
en
algemene
filosofie
goed
te
vergelijken
met
de
Java
Swing
bibliotheek.
•
add/removeGestureListener(listener:
GestureListener,
gestureFilter:
GestureFilter)
:
void
De
methoden
worden
gebruikt
om
een
GestureListener
met
een
Widget
te
verbinden
of
te
verwijderen
om
zo
"gesture"
events
af
te
handelen.
Architectural
Drivers
Performance
Aangezien
de
gebruikerservaring
sterk
wordt
beïnvloed
door
de
responsiviteit
van
de
grafische
interface
staat
performance
in
deze
module
centraal.
Daarbij
moeten
de
grafische
objecten
“ogenblikkelijk”
reageren
(of
toch
zo
overkomen)
op
gebruikersinteractie.
Hierbij
moet
wel
worden
vermeld
dat
de
MTI‐module
hierin
ook
een
grote
rol
speelt.
Met
het
performance
aspect
wordt
hierdoor
vooral
de
snelheid
van
het
weergeven
(renderen)
van
de
grafische
objecten
bedoeld.
Usability
De
opbouw
van
de
bibliotheek
is
erop
gericht
om
de
leercurve
zo
klein
mogelijk
te
houden
om
de
ontwikkelaar
toe
te
laten
zo
snel
mogelijk
aan
de
slag
te
gaan.
Hierbij
wordt
een
set
van
basisobjecten
voorzien
waarvan
er
met
een
grote
zekerheid
kan
worden
aangenomen
dat
ze
veel
zullen
worden
gebruikt.
Op
basis
hiervan
kan
de
ontwikkelaar
op
een
zo
eenvoudig
mogelijke
manier
complexere
objecten
opbouwen.
Bovendien
moeten
de
grafische
objecten
op
zo’n
manier
ontworpen
worden
dat
ze
hun
functionaliteit
op
een
zo
eenvoudig
en
intuïtief
mogelijke
manier
aan
de
eindgebruiker
aanbieden.
7/12/08
TultiMouch
49
Afhankelijkheden
Deze
module
gebruikt
de
MTImodule
om
gesture
events
te
ontvangen
om
deze
vervolgens
te
vertalen
naar
specieke
widgets
(grafische
objecten).
Verder
steunt
deze
module
op
de
plugin
infrastructuur
om
zijn
diensten
aan
te
bieden
aan
de
rest
van
het
platform
en
applicaties.
Component
Diagram
7/12/08
TultiMouch
50
Device
Management
DeviceManagement
is
de
component
die
instaat
voor
het
detecteren
van
de
aan‐
of
afwezigheid
van
devices
die
zich
in
de
buurt
van
het
Multi‐Touch
device
bevinden.
Er
wordt
ook
een
subcomponent
voorzien
die
SurfaceObjects
(uit
de
MTI
component)
zal
linken
aan
een
specifiek
device
(a.d.h.v.
een
uniek
deviceID).
Externe
Interfaces
DeviceService
Dit
is
een
algemene
interface
die
een
service
voorstelt
die
een
device
aanbiedt.
De
interface
is
protocolonafhankelijk,
maar
de
implementatie
ervan
is
protocolspecifiek.
•
getDeviceID()
:
String
Geeft
het
unieke
Id
terug
van
het
device
dat
bij
de
DeviceService
hoort.
DeviceFileService
(extends
DeviceService)
Een
DeviceService
die
in
ons
platform
veel
aan
bod
zal
komen
is
de
DeviceFileService.
Deze
interface
laat
toe
om
op
een
eenvoudige
manier
toegang
tot
bestanden
te
verkrijgen
op
devices
die
zich
in
de
buurt
van
het
Multi‐Touch
device
bevinden
.
Bij
het
opvragen
van
een
bestand
wordt
een
File‐object
teruggegeven.
Daarop
kunnen
de
gebruikelijke
lees‐
en
schrijfoperaties
toegepast
worden,
en
kan
gecontroleerd
worden
of
een
bestand
kan
gelezen
of
geschreven
worden,
...
.
• • • •
createFile(fileLocation:
String)
:
File
Zal
op
de
opgegeven
locatie
een
nieuw
bestand
proberen
aanmaken.
openFile(fileLocation:
String)
:
File
Zal
op
de
opgegeven
locatie
een
bestand
proberen
openen.
deleteFile(fileLocation:
String)
Zal
op
de
opgegeven
locatie
een
bestand
proberen
verwijderen.
getFileList(mapLocation:
String)
:
File
[*]
Geef
een
lijst
weer
van
alle
bestanden
in
een
bepaalde
map
DeviceLocationService
Deze
subcomponent
zorgt
dat
er
een
link
kan
gelegd
worden
tussen
een
SurfaceObject
(zie
MTI
component
–
stelt
een
blob
op
de
tafel
voor)
en
een
device,
geïdentificeerd
a.d.h.v.
een
deviceID
(zie
ProtocolPlugin).
Deze
component
interageert
met
de
MTI
component
om
berichten
te
ontvangen
over
het
verschijnen
of
verdwijnen
van
SurfaceObjects.
Er
worden
twee
mogelijkheden
ondersteund
om
de
link
te
leggen.
De
eerste
methode
zal
devices
herkennen
a.d.h.v.
hun
tag
(2D
barcode).
De
tweede
methode
wordt
gebruikt
voor
devices
die
niet
getagged
zijn.
Daarbij
zal
een
hotspot
op
de
Multi‐Touch
tafel
verschijnen
die
aangeeft
waar
de
gebruiker
zijn
device
moet
neerleggen
om
de
link
tussen
dat
device
en
de
plaats
te
leggen.
Via
een
listener‐systeem
kan
een
andere
component
op
de
hoogte
gehouden
worden
van
het
verschijnen
of
verdwijnen
van
de
link
tussen
een
device
en
een
SurfaceObject
op
de
tafel.
•
getLocation(deviceID:
String)
:
SurfaceObject
Geeft
het
SurfaceObject
terug
dat
correspondeert
met
een
device,
via
het
deviceID
dat
het
device
identificeerd.
Indien
er
nog
geen
link
was
met
een
SurfaceObject,
zal
null
teruggegeven
worden
en
zal
een
hotspot
widget
opgestart
worden.
De
gebruiker
legt
dan
zijn
device
op
de
plaats
waar
de
hotspot
zich
bevindt
en
op
die
manier
wordt
een
link
gelegd
tussen
het
device
en
een
SurfaceObject.
Om
als
component
op
de
hoogte
gebracht
te
worden
van
deze
link
is
het
nodig
om
een
DeviceLocationListener
(zie
verder)
te
registreren.
7/12/08
TultiMouch
51
• •
•
getDeviceID(surfaceObject:
SurfaceObject)
:
String
Geeft
het
deviceID
terug
dat
correspondeert
met
het
meegegeven
SurfaceObject.
addDeviceLocationListener(listener:
DeviceLocationListener,
filter:
DeviceFilter)
:
void
Laat
toe
om
een
DeviceLocationListener
te
registreren,
eventueel
slechts
voor
een
beperkt
aantal
devices
via
een
filter.
removeDeviceLocationListener(listener:
DeviceLocationListener,
filter:
DeviceFilter)
:
void
DeviceLocationListener
Deze
listener
laat
toe
om
de
gepaste
actie
te
ondernemen
wanneer
er
een
link
tussen
een
bepaald
device
en
SurfaceObject
gevonden
wordt
of
verloren
is.
•
•
linkFound(deviceID:
String,
surfaceObject:
SurfaceObject)
:
void
Indien
een
link
gevonden
werd,
wordt
deze
methode
opgeroepen
met
het
deviceID
en
het
corresponderende
SurfaceObject
als
parameters
linkLost(deviceID:
String,
surfaceObject:
SurfaceObject)
:
void
Indien
een
link
verloren
gaat,
wordt
deze
methode
opgeroepen
met
het
deviceID
en
het
corresponderende
SurfaceObject
als
parameters.
Het
SurfaceObject
is
nog
het
object
die
gelinkt
was
met
het
device
net
voor
het
verliezen
van
de
link.
Zo
kunnen
geregistreerde
listeners
gederegistreerd
worden.
DeviceFilter
Analoog
aan
de
filters
uit
de
MTI‐component.
Men
kan
hiermee
bepaalde
groepen
devices
definiëren.
Singletons
zijn
toegelaten.
Interne
Componenten
ProtocolPlugin
extends
Plugin
ProtocolPlugins
zijn
plugins
die
geen
service
aanbeiden
in
de
ServiceRegistry.
Deze
plugins
interageren
bijvoorbeeld
met
het
besturingssysteem
om
te
detecteren
of
nieuwe
devices
bereikbaar
zijn,
of
reeds
geconnecteerde
devices
verdwijnen.
Bij
de
detectie
van
een
nieuw
device,
wordt
het
deviceID
opgevraagd
en
wordt
er
per
service
dat
het
device
aanbiedt
(vb
bestandsoverdracht)
een
protocol‐specifieke
implementatie
van
een
DeviceService
geïnstantieerd
en
toegevoegd
aan
de
ServiceRegistry.
Indien
het
device
dan
verdwijnt,
zal
de
plugin
de
DeviceServices
van
dat
device
verwijderen
uit
de
ServiceRegistry.
Architectural
Drivers
Usability
Devicetoegang
is
gebruiksvriendelijk
en
verloopt
uniform
voor
alle
devices.
Devices
toevoegen
of
verwijderen
gebeurt
door
het
toevoegen
of
verwijderen
van
DeviceServices
in
het
ServiceRegistry.
Door
de
filtermogelijkheden
op
het
ServiceRegistry
kunnen
vrij
eenvoudig
alle
services
voor
een
of
meerdere
specifieke
devices
opgevraagd
worden
of
kunnen
specifieke
servicetypes
opgevraagd
worden.
De
DeviceLocationService
zorgt
er
voor
dat
devices
zo
goed
mogelijk
gelokaliseerd
kunnen
worden.
Applicaties
of
componenten
worden
via
een
listener
op
de
hoogte
gehouden
van
het
vinden
of
verliezen
van
de
link
tussen
een
device
en
de
lokatie
ervan.
De
enige
subcomponent
die
protocolspecifiek
is,
is
de
ProtocolPlugin.
Het
toevoegen
of
uitbreiden
van
protocol‐functionaliteit
blijft
gelokaliseerd
in
één
componenten,
namelijk
de
ProtocolPlugin.
7/12/08
TultiMouch
52
Modifiability
Vermits
we
werken
met
een
plugin‐systeem
is
het
makkelijk
om
nieuwe
ProcotolPlugins
in
te
voegen
zodat
er
nieuwe
protocollen
ondersteund
kunnen
worden.
Het
vervangen
van
ProtocolPlugins
door
betere
en/of
uitgebreidere
ProtocolPlugins
is
ook
mogelijk
via
het
plugin‐ systeem.
Indien
nodig
kan
een
ook
de
DeviceLocationService
vervangen
worden
om
een
betere
en/of
uitgebreidere
versie
in
de
plaats
te
gebruiken.
Afhankelijkheden
ServiceRegistry
De
ServiceRegistry
wordt
gebruikt
om
een
referentie
op
te
vragen
naar
andere
services
of
om
berichten
te
krijgen
i.v.m.
het
toevoegen
of
verwijderen
van
devices.
Multi‐Touch
Input
De
DeviceManagement
component
maakt
gebruik
van
de
SurfaceObjectManagerService
om
berichten
te
krijgen
i.v.m.
het
verschijnen
of
verdwijnen
van
SurfaceObjects
en
om
ObjectTypeDefinitions
toe
te
voegen.
GUI
Om
devices
zonder
tag
te
kunnen
localiseren
zal
door
de
DeviceLocationService
een
hotspot
getoond
worden
op
de
Multi‐Touch
tafel.
Daarvoor
is
functionaliteit
uit
de
GUI
component
nodig.
Component
diagram
7/12/08
TultiMouch
53
User
Management
User
Management
biedt
de
volgende
diensten
aan
de
andere
componenten:
• • •
Toevoegen,
verwijderen
en
opvragen
van
gebruikers
en
groepen.
Authenticatie
van
gebruikers
Persistent
linken
van
toestellen
aan
gebruikers.
Wanneer
een
toestel
verbindt
met
de
tafel,
weten
we
automatisch
bij
welke
gebruiker
dat
toestel
hoort.
Dit
maakt
het
mogelijk
om
de
aanmeldprocedure
aanmerkelijk
te
vereenvoudigen.
Externe
interfaces
UserManager
De
UserManager
is
een
service
in
het
framework
waarmee
andere
componenten
toegang
kunnen
krijgen
tot
gebruikersgegevens.
Deze
service
zal
gepubliceerd
worden
in
de
ServiceRegistry
zodat
andere
componenten
hem
eenvoudig
kunnen
aanspreken.
• • • • • • •
addUser(name
:
String,
password
:
String)
:
User
Voegt
een
nieuwe
gebruiker
toe
met
opgegeven
naam
en
paswoord.
addGroup(name)
:
Group
Voegt
een
nieuwe
groep
toe
met
opgegeven
naam.
getUsers()
:
User
[*]
Geeft
een
lijst
terug
met
alle
gebruikers.
getGroups()
:
Group
[*]
Geeft
een
lijst
terug
met
alle
groepen.
getEntity(name
:
String)
:
SecurityEntity
Vraagt
de
gebruiker
of
groep
met
een
bepaalde
naam
op.
removeEntity(name
:
String)
:
void
Verwijdert
een
gebruiker
of
groep
met
een
bepaalde
naam.
getDeviceUser(deviceID
:
String)
:
User
Zoekt
de
gebruiker
waaraan
het
opgegeven
toestel
gekoppeld
is.
SecurityEntity
Een
SecurityEntity
stelt
een
groep
of
een
gebruiker
voor.
De
externe
interface
bevat
de
volgende
methodes:
• • •
getName()
:
String
Geeft
de
naam
van
deze
gebruiker
of
groep.
getMemberOfGroups()
:
Group
[*]
Geeft
alle
groepen
waar
deze
gebruiker
of
groep
lid
van
is.
isMemberOfGroup(groupName
:
String)
:
bool
Geeft
aan
of
deze
gebruiker
of
groep
lid
is
van
de
opgegeven
groep.
Group
Deze
interface
implementeert
de
SecurityEntity
interface.
Daarbovenop
biedt
hij
de
volgende
methode:
• • •
addMember(member
:
SecurityEntity)
:
void
Voegt
een
nieuw
lid
toe
aan
deze
groep.
removeMember(member
:
SecurityEntity)
:
void
Verwijdert
een
lid
van
deze
groep.
getMembers()
:
SecurityEntity
[*]
Geeft
alle
gebruikers
en
groepen
die
lid
zijn
van
deze
groep.
7/12/08
TultiMouch
54
Groepen
bieden
de
mogelijkheid
om
andere
gebruikers
en
groepen
te
categoriseren.
Bovendien
biedt
ons
dit
de
mogelijkheid
om
later
groepgebaseerde
beveiliging
aan
te
bieden.
User
Deze
interface
implementeert
de
SecurityEntity
interface.
Daarbovenop
biedt
hij
de
volgende
methods:
• • • •
•
addDevice(deviceID
:
String)
:
void
Koppelt
een
toestel
aan
deze
gebruiker.
removeDevice(deviceID
:
String)
:
void
Ontkoppelt
een
toestel
van
deze
gebruiker.
getDevices()
:
DeviceID
[*]
Geeft
alle
toestellen
die
gekoppeld
zijn
aan
deze
gebruiker.
setPassword(oldPassword
:
String,
newPassword
:
String)
:
bool
Wijzigt
het
paswoord
van
de
gebruiker
indien
het
oude
paswoord
correct
meegegeven
is.
Geeft
terug
of
de
operatie
geslaagd
is
of
niet.
authenticate(password
:
String)
:
bool
Geeft
terug
of
het
opgegeven
paswoord
geldig
is
voor
deze
gebruiker.
Interne
Componenten
Er
zijn
verschillende
mogelijkheden
om
deze
component
later
te
implementeren.
Twee
mogelijkheden
zijn:
• •
Een
eigen
databank
om
de
gegevens
op
te
slaan,
de
implementatie
vertaalt
de
externe
interface
naar
operaties
op
de
database.
Het
besturingssysteem
gebruiken
als
achterliggende
databank.
De
externe
interface
is
dan
enkel
een
wrapper
rond
gebruikersbeheer
in
het
besturingssysteem.
Het
voordeel
van
deze
aanpak
is
dat
gebruikers
ook
beschikbaar
zijn
buiten
het
framework.
Architectural
Drivers
Enkel
Security
is
direct
relevant
voor
de
UserManager
component.
Security
Deze
component
levert
twee
belangrijke
veiligheidsdiensten:
• •
Authenticatie:
verifiëren
of
een
gebruiker
wel
degelijk
is
wie
hij
beweert
te
zijn
met
behulp
van
zijn
wachtwoord
Autorisatie:
biedt
basisfunctionaliteit
om
gebruikers
op
te
delen
in
geneste
groepen
om
zo
een
groepgebaseerde
autorisatie
mogelijk
te
maken
Afhankelijkheden
Deze
component
heeft
geen
afhankelijkheden
op
andere
componenten
buiten
de
plug‐in
infrastructuur.
7/12/08
TultiMouch
55
Component
Diagram
7/12/08
TultiMouch
56
Session
Management
Session
Management
biedt
de
volgende
diensten
aan
de
andere
componenten:
• • • •
Groeperen
van
applicaties
en
devices
en
dit
geheel
toewijzen
aan
een
gebruiker
of
de
publieke
session.
Locken
en
unlocken
van
sessions.
Starten
en
stoppen
van
sessions.
Het
tonen
van
een
Shell
Application
bij
het
inloggen.
Externe
Interfaces
SessionManager
De
SessionManager
is
een
service
in
het
framework
waarmee
andere
componenten
toegang
kunnen
krijgen
tot
de
sessions.
Deze
service
zal
gepubliceerd
worden
in
de
ServiceRegistry
zodat
andere
componenten
hem
eenvoudig
kunnen
aanspreken.
• • • • •
addSessionListener(listener
:
SessionManagerListener)
:
void
removeSessionListener(listener
:
SessionManagerListener)
:
void
getSession(name
:
String)
:
Session
Geeft
een
Session
object
terug
van
een
user.
getSession(service
:
Service)
:
Session
Geeft
een
Session
object
terug
die
bij
een
service
hoort.
getSession(application
:
ApplicationInstance)
:
Session
Geeft
een
Session
object
terug
dat
bij
een
bepaalde
applicatie
hoort
SessionManagerListener
SessionManagerListener
is
een
interface
voor
naar
veranderingen
van
sessions
te
luisteren,
deze
interface
biedt
de
volgende
methodes:
•
•
•
•
•
•
•
sessionCreated(sessionName
:
String)
:
void
Indien
een
sessie
werd
aangemaakt
wordt
deze
methode
opgeroepen
met
de
naam
van
de
sessie.
sessionClosed(sessionName
:
String)
:
void
Indien
een
sessie
afgesloten
werd,
wordt
deze
methode
opgeroepen
met
de
naam
van
de
sessie.
lockedSession(sessionName
:
String)
:
void
Indien
een
sessie
gelocked
werd
door
een
gebruiker
wordt
deze
methode
opgeroepen
met
de
naam
van
de
sessie.
unlockedSession(sessionName
:
String)
:
void
Indien
een
sessie
geunlocked
werd
door
een
gebruiker
wordt
deze
methode
opgeroepen
met
de
naam
van
de
sessie.
serviceAdded(sessionName
:
String,
service
:
Service)
:
void
Indien
een
service
aan
een
sessie
werd
toegevoegd
wordt
deze
methode
opgeroepen
met
de
naam
van
de
sessie
en
de
service.
serviceRemoved(sessionName
:
String,
service
:
Service)
:
void
Indien
een
service
van
een
sessie
werd
verwijderd,
wordt
deze
methode
opgeroepen
met
de
naam
van
de
sessie
en
de
service.
applicationAdded(sessionName
:
String,
application
:
ApplicationInstance)
:
void
Indien
een
applicatie
werd
toegevoegd
aan
een
sessie,
wordt
deze
methode
opgeroepen
met
de
naam
van
de
sessie
en
de
applicatieinstantie.
7/12/08
TultiMouch
57
•
applicationRemoved(sessionName
:
String,
application
:
ApplicationInstance)
:
void
Indien
een
applicatie
werd
verwijderd
van
een
sessie,
wordt
deze
methode
opgeroepen
met
de
naam
van
de
sessie
en
de
applicatieinstantie.
Session
Session
stelt
een
sessie‐object
voor
dat
gelinkt
kan
worden
aan
een
service
of
een
applicatie
en
bevat
de
volgende
methodes:
• • • • • • • • • • •
lockSession()
:
void
Blokkeert
een
sessie
en
verwijderd
de
grafische
interface.
unlockSession()
:
void
Deblokkeert
een
sessie
en
geeft
de
grafische
interface
terug
weer.
isLocked()
:
bool
Geeft
terug
of
een
sessie
gelockt
is.
getName()
:
String
Geeft
de
naam
van
de
sessie
terug.
getServices()
:
Service
[*]
Geeft
een
lijst
van
de
services
die
aan
de
sessie
gekoppeld
zijn
terug.
addService(service
:
Service)
:
void
Voegt
een
service
aan
de
sessie
toe.
removeService(service
:
Service)
:
void
Verwijdert
een
service
van
de
sessie.
getApplications()
:
ApplicationInstance
[*]
Geeft
een
lijst
van
de
applicaties
die
aan
de
sessie
gekoppeld
zijn
terug.
addApplication(application
:
ApplicationInstance)
:
void
Voegt
een
applicatie
aan
de
sessie
toe.
removeApplication(application
:
ApplicationInstance)
:
void
Verwijdert
een
applicatie
van
de
sessie.
close()
:
void
Eindigt
een
sessie.
Architectural
Drivers
Deze
component
biedt
functionaliteit
die
belangrijk
is
om
gebruikers
te
isoleren
van
elkaar
en
meerdere
applicaties
tegelijk
te
draaien.
Op
deze
manier
draagt
Session
Management
bij
tot
de
modifiability
en
usability
van
het
systeem.
Afhankelijkheden
Plugin
Infrastructure
De
ServiceRegistry
van
de
Plug‐in
infrastructuur
wordt
gebruikt
om
services
te
kunnen
linken
aan
sessies.
User
Management
Session
Management
maakt
gebruik
van
User
Management
om
gebruikers
te
kunnen
linken
aan
sessies.
GUI
Als
een
sessie
vergrendeld
wordt,
dan
moeten
de
grafische
componenten
die
behoren
aan
applicaties
die
toebehoren
aan
de
sessie,
worden
verborgen.
Omgekeerd,
als
een
sessie
ontgrendeld
wordt,
dan
zullen
de
grafische
componenten
van
de
draaiende
applicaties
onder
de
sessie,
terug
weergegeven
worden.
7/12/08
TultiMouch
58
Component
Diagram
Architectural
Patterns
PublisherSubscriber
pattern
Dit
patroon
wordt
gebruikt
voor
de
events
van
de
SessionManagerListener.
7/12/08
TultiMouch
59
Process
View
Inleiding
Tijdens
de
uitwerking
van
onze
architectuur
hebben
we
drie
iteraties
van
sequentiediagrammen
gemaakt.
Dit
document
bevat
de
laatste
iteratie.
Deze
sequentiediagrammen
geven
een
dynamische
kijk
op
onze
architectuur
en
zijn
conform
met
de
interfaces
voor
modules
en
submodules
uit
onze
architectuur.
Lijst
van
sequentiediagrammen
1. Applicatie
aansturen
met
gesture
2. Login
zonder
device
3. Login
met
device
4. Sessie
vergrendelen
5. Sessie
ontgrendelen
6. Device
lokaliseren
met
hotspot
7. Device
bewegen
8. Device
verwijderen
9. Installeren
van
een
applicatie
(plug‐in)
10. Applicatie
starten
11. Applicatie
gebruikt
device
12. Verplaatsen
van
een
getagged
object
7/12/08
TultiMouch
60
Uitwerking
sequentiediagrammen
Applicatie
aansturen
met
gesture
Korte
beschrijving
Een
gebruiker
maakt
een
bepaalde
gesture
die
een
virtueel
toetsenbord
opstart.
Pre‐condities
• De
definitie
van
het
specifiek
gesture
is
gekend.
•
Het
proces
om
de
toetsenbordapplicatie
op
te
roepen
is
reeds
in
de
achtergrond
opgestart.
Post‐condities
• Het
virtueel
toestenbord
is
zichtbaar
op
het
Multi‐Touch
scherm,
klaar
voor
gebruik.
7/12/08
TultiMouch
61
7/12/08
TultiMouch
62
Login
zonder
device
Korte
beschrijving
Een
gebruiker
maakt
het
“login”‐gesture.
Een
loginscherm
en
een
virtueel
toetstenbord
verschijnen.
De
gebruiker
geeft
zijn
gebruikersnaam
en
wachtwoord
in,
deze
worden
gecontroleerd,
en
zijn
persoonlijke
werkomgeving
wordt
geladen.
Pre‐condities
• Het
TultiMouch
platform
is
volledig
geconfigureerd
en
draait
op
de
Multi‐Touch
tafel.
•
De
gebruiker
is
gekend
door
het
systeem.
Post‐condities
• De
gebruiker
is
ingelogd
en
ziet
zijn
persoonlijke
werkomgeving
7/12/08
TultiMouch
63
7/12/08
TultiMouch
64
Login
met
device
Korte
beschrijving
De
gebruiker
plaatst
een
Bluetooth
device
op
de
tafel,
het
systeem
toont
een
kader
met
de
gebruikersnaam
op
de
locatie
van
het
device.
Pre‐condities
• Het
device
is
bekend
bij
het
systeem
(koppeling
device‐gebruiker).
Post‐condities
• Waar
het
device
op
tafel
ligt
staat
een
kader
met
de
gebruikersnaam
erin.
7/12/08
TultiMouch
65
7/12/08
TultiMouch
66
Sessie
vergrendelen
Korte
beschrijving
Een
gebruikerssessie
vergrendelen
door
het
wegnemen
van
het
laatste
device.
Pre‐condities
• De
gebruiker
heeft
een
openstaande
sessie.
•
De
sessie
werd
oorspronkelijk
geopend
door
een
device
(en
niet
door
bijvoorbeeld
een
gesture).
•
De
gebruiker
heeft
maar
1
device
meer
op
de
tafel
liggen.
Post‐condities
• De
gebruikerssessie
is
vergrendeld.
7/12/08
TultiMouch
67
7/12/08
TultiMouch
68
Sessie
ontgrendelen
Korte
beschrijving
Een
gebruikerssessie
ontgrendelen
door
een
device
op
tafel
te
leggen.
Pre‐condities
• Het
device
is
bekend
bij
het
systeem
(koppeling
device‐gebruiker).
•
De
gebruiker
heeft
reeds
een
sessie
die
vergrendeld
is.
Post‐condities
• Waar
het
device
op
tafel
ligt
wordt
de
sessie
ontgrendeld.
7/12/08
TultiMouch
69
7/12/08
TultiMouch
70
Device
lokaliseren
met
hotspot
Korte
beschrijving
Om
de
link
tussen
het
device
en
de
plaats
op
de
tafel
te
leggen,
tonen
we
een
hotspot
op
het
scherm
van
de
Multi‐Touch
tafel
waarop
de
gebruiker
zijn
device
moet
leggen.
Pre‐condities
• Het
device
is
al
geconnecteerd
en
geregistreerd
in
de
ServiceRegistry.
•
Het
device
ligt
nog
niet
op
tafel.
•
Het
device
is
al
gelinkt
aan
een
actieve
sessie.
Post‐condities
• Iedereen
die
op
de
hoogte
wil
zijn
van
de
locatie
van
het
device
is
genotifieerd.
7/12/08
TultiMouch
71
7/12/08
TultiMouch
72
Device
bewegen
Korte
beschrijving
Twee
gebruikers
verplaatsen
tegelijk
hun
device.
Dit
moet
gevolgd
en
bericht
worden
in
het
systeem
zodat
applicaties
daarmee
rekening
kunnen
houden.
Pre‐condities
• Het
systeem
is
reeds
op
de
hoogte
van
de
locatie
van
elk
device.
Post‐condities
• De
applicaties
werden
bericht
over
de
positieveranderingen
van
de
devices
en
zijn
op
de
hoogte
van
de
laatste
positie
van
de
devices.
7/12/08
TultiMouch
73
7/12/08
TultiMouch
74
Device
verwijderen
Korte
beschrijving
Een
gebruiker
wenst
zijn
device
te
ontkoppelen
van
de
Multi‐Touch
tafel.
Hij
zal
hiervoor
eerst
zijn
toestel
van
de
tafel
nemen
waarna
hij
het
uitschakelt
of
uit
het
bereik
van
de
Multi‐Touch
tafel
verwijdert.
Pre‐condities
• Het
device
bevindt
zich
op
de
tafel
en
is
gekoppeld
aan
een
SurfaceObject.
•
Services
van
het
device
bevinden
zich
in
het
ServiceRegister.
•
Het
device
is
gedetecteerd
door
de
tafel.
Post‐condities
• Services
van
het
device
zijn
uit
het
platform
verdwenen.
•
Het
SurfaceObject
van
het
device
is
verdwenen.
7/12/08
TultiMouch
75
7/12/08
TultiMouch
76
Installeren
van
een
applicatie
(plug‐in)
Korte
beschrijving
De
gebruiker
wil
een
applicatie
toevoegen
(bijvoorbeeld
een
schaakspel)
aan
het
platform
zodanig
dat
de
applicatie
in
de
huidige
sessie
en
eventueel
volgende
sessies
kan
worden
gebruikt
tot
ze
expliciet
wordt
verwijderd.
Pre‐condities
• De
gebruiker
is
ingelogd.
•
De
applicatie
starter
(OrbWidget)
is
weergegeven
op
het
scherm
en
klaar
voor
gebruik.
•
De
gebruiker
heeft
een
USB
stick
ingeplugd
met
daarop
de
relevante
applicatiebestanden.
Post‐condities
• De
applicatie
is
toegevoegd
aan
het
platform
en
de
mogelijkheid
is
voorzien
om
een
instantie
van
de
applicatie
te
starten
door
het
aanraken
van
een
icoon
in
de
OrbWidget
of
door
het
maken
van
een
gesture.
7/12/08
TultiMouch
77
7/12/08
TultiMouch
78
Applicatie
starten
Korte
beschrijving
Na
inloggen
krijgt
de
gebruiker
een
basisapplicatie
die
hem
o.a.
toelaat
applicaties
te
starten.
Vanaf
nu
wordt
gesproken
over
de
OrbWidget.
(Men
kan
inzien
dat
een
rond
grafisch
object
gemakkelijk
tot
deze
functie
kan
dienen.
De
precieze
vorm
is
echter
van
minder
belang.)
De
gebruiker
gebruikt
de
OrbWidget
om
een
applicatie
te
starten.
Pre‐condities
• De
gebruiker
is
ingelogd:
zijn
OrbWidget
is
gestart
en
niet
geblokkeerd.
Post‐condities
• Er
is
een
nieuw
applicatie
gestart.
7/12/08
TultiMouch
79
7/12/08
TultiMouch
80
Applicatie
gebruikt
device
Korte
beschrijving
De
gebruiker
heeft
zijn
device
op
de
MTI
gelegd
en
krijgt
een
keuzemenu.
Nu
selecteert
de
gebruiker
de
fotoapplicatie.
Deze
laat
de
foto’s
opgeslagen
op
het
device
verschijnen
zodat
de
gebruiker
er
kan
door
browsen.
Pre‐condities
• Het
device
is
reeds
herkend,
geconnecteerd
en
gelokaliseerd.
•
Er
werd
reeds
een
gebruikerssessie
opgestart
en
het
menu
verschijnt.
Post‐condities
• De
foto’s
worden
op
de
MTI
getoond
en
er
kan
door
gebrowsed
worden.
7/12/08
TultiMouch
81
7/12/08
TultiMouch
82
Verplaatsen
van
een
getagged
object
Korte
beschrijving
Er
is
een
schaakspel
bezig
en
een
speler
verplaatst
een
getagged
schaakstuk.
Pre‐condities
• De
tag
is
gekend
door
het
systeem.
Post‐condities
• Het
getaggede
schaakstuk
is
verplaatst
en
herkend
als
hetzelfde
stuk.
7/12/08
TultiMouch
83
7/12/08
TultiMouch
84
Infrastructure
View
Inleiding
We
bespreken
hier
twee
mogelijke
deployment
diagrams.
Beiden
stellen
ze
een
uiterste
voor
van
een
heel
spectrum
aan
mogelijkheden.
•
Maximale
deployment:
Deze
configuratie
probeert
zoveel
mogelijk
componenten
te
isoleren
in
hun
eigen
proces.
•
Minimale
deployment:
Deze
configuratie
plaatst
alle
componenten
in
hetzelfde
proces.
Een
proces
heeft
altijd
zijn
eigen
PluginRegistry
en
ServiceRegistry.
Quality
Attributes
Performance
Bij
het
beschouwen
van
de
invloed
op
de
performantie
moeten
we
twee
belangrijke
factoren
in
rekening
brengen:
•
Communicatie
overhead:
Hoe
meer
componenten
we
verspreiden
over
verschillende
processen,
hoe
groter
de
overhead
van
de
communicatie
tussen
al
deze
componenten
zal
worden.
•
Beschikbare
resources:
Hoe
meer
componenten
we
distribueren
over
meerdere
systemen,
hoe
meer
systeembronnen
beschikbaar
zijn
voor
het
geheel.
Hoe
meer
distributie,
hoe
meer
resources,
maar
hoe
groter
de
overhead.
Het
resultaat
is
dat
de
ideale
configuratie
ergens
tussen
een
minimale
en
maximale
deployment
in
zal
liggen.
Componenten
die
veel
met
elkaar
communiceren
of
lage
latency
vereisen
deployen
we
dus
best
bij
elkaar.
Reliability
Hoewel
reliability
niet
een
van
onze
hoofdkwaliteitsattributen
is,
ondersteunt
onze
architectuur
de
mogelijkheid
om
falende
services
op
te
vangen.
Dit
steunt
op
enkele
observaties.
Generieke
methode
voor
het
distribueren
van
een
service
Het
is
relatief
eenvoudig
om
eender
welk
service
aan
te
spreken
in
een
ander
proces.
Elk
proces
heeft
zijn
eigen
ServiceRegistry
die
in
verbinding
staat
met
andere
registries.
Het
resultaat
is
een
mesh
van
geïnterconnecteerde
registries.
Wanneer
een
applicatie
zijn
lokale
ServiceRegistry
aanspreekt
voor
het
vinden
van
een
service,
zal
die
automatisch
de
vraag
ook
stellen
aan
de
verbonden
registries.
De
applicatie
krijgt
een
lijst
terug
met
alle
gevonden
services,
onafhankelijk
of
deze
nu
lokaal
of
in
een
ander
proces
draaien.
Services
in
een
ander
proces
worden
aangesproken
via
“proxy”
services.
Deze
objecten
zien
er
identiek
hetzelfde
uit
als
de
service
waarnaar
ze
verwijzen,
het
enige
verschil
is
dat
ze
alle
oproepen
via
Remote
Procedure
Calls
doorspelen
naar
de
externe
service.
Op
deze
manier
kunnen
applicaties
transparant
services
aanspreken
die
in
andere
processen
draaien.
Generieke
methode
voor
reliability
Via
de
bovenstaande
distributiemethode
is
het
eenvoudig
om
reliability
en
redundancy
te
introduceren.
Hiervoor
introduceren
we
het
concept
van
een
“Master
Plugin
Registry”.
De
processen
kiezen
dus
onder
elkaar
een
PluginRegistry
die
verantwoordelijk
zal
zijn
om
het
overzicht
te
behouden.
Wanneer
een
bepaalde
service
verloren
gaat
kan
die
dan
beslissen
om
ergens
anders
een
nieuwe
instantie
van
die
service
te
starten.
7/12/08
TultiMouch
85
Bij
het
wegvallen
van
een
service
stuurt
de
ServiceRegistry
een
verwittiging
in
de
vorm
van
een
event.
Applicaties
kunnen
deze
event
opvangen
en
met
een
nieuwe
query
de
ServiceRegistry
vragen
een
vervanger
te
zoeken.
De
applicaties
zullen
zich
dan
herregistreren
bij
de
nieuwe
service.
De
toestand
of
contextinformatie
bij
de
verloren
service
is
definitief
weg.
Men
begint
dus
terug
van
nul
bij
de
nieuwe
service.
Deze
figuur
toont
5
processen
met
elk
hun
plugin
registry,
service
registry
en
set
van
services.
Een
van
de
processen
doet
dienst
als
master
plugin
registry.
Protocollen
TUIO
Dit
protocol
bespraken
we
reeds
in
onze
State
Of
The
Art.
Aangezien
dit
protocol
in
de
open
source
wereld
als
de
facto
standaard
is
gegroeid
voorzien
we
dat
onze
eigen
component
voor
blobdetectie
slechts
een
TUIO
client
is
en
we
een
externe
applicatie
het
lastige
werk
laten
doen.
Via
het
TUIO
protocol
ontvangen
we
dan
alle
verwerkte
blobs.
RPC
Afhankelijk
van
de
uiteindelijke
technology
mapping
kiezen
we
een
bestaande
bibliotheek
voor
Remote
Procedure
Calls.
Op
die
manier
willen
we
het
mogelijk
maken
om
op
een
transparante
manier
services
aan
te
spreken
die
in
een
ander
proces
draaien.
7/12/08
TultiMouch
86
Minimale
Deployment
Bij
minimale
deployment
draait
het
hele
system
op
een
enkel
device,
binnen
een
proces.
De
enige
externe
component
is
een
TUIO
Server
die
naar
alle
waarschijnlijkheid
niet
door
ons
ontwikkeld
zal
zijn.
Alle
componenten
delen
dezelfde
ServiceRegistry
en
PluginRegistry
en
communiceren
met
elkaar
via
methode‐oproepen.
Om
het
overzicht
te
bewaren
lieten
we
de
links
tussen
alle
componenten
en
de
ServiceRegistry
achterwege.
7/12/08
TultiMouch
87
Maximale
Deployment
Dit
diagram
geeft
de
maximale
deployment
weer
die
wij
aanraden
voor
deze
architectuur.
We
hebben
hier
de
ServiceRegistry
en
PluginRegistry
in
elk
proces
weggelaten
om
het
overzicht
te
bewaren.
Enkele
opmerkingen:
•
Zowel
de
GestureRecognition
als
de
SurfaceObjectRecognitionServer
hebben
hun
eigen
BlobDetection
artefact.
Deze
component
is
slechts
een
eenvoudige
TUIO
Client
en
dupliceren
we
dus
in
beide
processen.
•
Waar
bij
de
minimale
deployment
de
services
elkaar
aanspraken
via
gewone
methode‐ oproepen,
gebruiken
we
nu
RPC
voor
de
communicatie
tussen
verschillende
processen.
Dit
werkt
volgens
het
principe
zoals
eerder
beschreven
en
is
dus
volledig
transparant
voor
de
componenten.
•
Buiten
de
vorige
opmerkingen
zijn
de
artefacten
en
hun
links
identiek
aan
de
minimale
deployment.
•
Een
aantal
van
de
servers
en
processen
in
het
diagram
kunnen
meerdere
keren
voorkomen.
Er
kunnen
bijvoorbeeld:
•
o
Meerdere
Application
Servers
aanwezig
zijn
in
het
systeem
om
loadbalancing
te
realiseren.
o
Meerdere
Device
Servers
aanwezig
zijn
om
apparaten
aansluiten
op
verschillende
aansluitpunten
mogelijk
te
maken.
o
Meerdere
GUI
Servers
aanwezig
zijn
die
elk
een
eigen
beeldscherm
aansturen
o
…
Van
al
deze
componenten
mag
enkel
de
SessionManager
slechts
eenmaal
voorkomen
in
het
hele
systeem.
7/12/08
TultiMouch
88
Algemeen
besluit
We
hebben
een
analyse
gemaakt
van
de
markt,
waaruit
bleek
dat
er
geen
enkel
open
source
Multi‐Touch
project
bestaat
dat
Multi‐Touch
integreert
met
devices
en
een
standaard
GUI.
Zowat
niemand
gaat
zelfs
maar
verder
dan
de
basis
blobdetectie.
Om
dit
marktsegment
te
vullen
hebben
we
een
platform
ontworpen
dat
zich
concentreert
op
usability,
modifiability
en
performance.
We
bieden
op
een
zo
transparant
en
eenvoudig
mogelijke
manier
alle
functionaliteiten
die
de
huidige
concurrenten
bieden,
en
meer,
door
de
vergaande
integratie
met
devices
en
een
GUIbibliotheek.
Het
platform
is
daarenboven
onafhankelijk
van
enige
hardware
vendor,
blobdetectie‐
of
GUIbibliotheek,
en
dit
in
tegenstelling
tot
alle
andere
bestaande
Multi‐Touch
projecten.
TultiMouch
overbrugt
als
eerste
de
kloof
tussen
de
Multi‐Touch
technologie,
devices
en
grafische
gebruikersinterfaces
en
zal
in
de
komende
jaren
ongetwijfeld
zijn
plaats
opeisen
in
de
open
source
Multi‐Touch
wereld…
7/12/08
TultiMouch
89
Verklarende
Woordenlijst
Device:
Elektronisch
toestel
dat
in
verbinding
staat
met
de
Multi‐Touch
omgeving.
Voorbeelden
van
zulke
toestellen
zijn:
gsm’s,
pda’s,
printers
,
projectoren,
tv‐schermen,…
.
De
verbinding
is
het
protocol
dat
zowel
door
de
Multi‐Touch
tafel
als
door
het
toestel
wordt
ondersteund,
Bluetooth
is
het
meest
voor
de
hand
liggende
voorbeeld.
Service:
Een
mechanisme
die
de
gebruiker
toegang
geeft
tot
een
bepaalde
dienst,
waar
de
toegang
wordt
verstrekt
aan
de
hand
van
een
voorgeschreven
interface
en
deze
wordt
uitgevoerd
in
overeenstemming
met
beperkingen
en
het
beleid
zoals
gespecificeerd
door
de
service
beschrijving.
Een
voorbeeld
van
een
service
is
het
overdragen
van
bestanden.
SurfaceObject
(op
MultiTouch
tafel):
Objecten
die
in
aanraking
komen
met
de
Multi‐Touch
tafel.
Dit
kan
zowel
gaan
over
bewegende
objecten
(bv.
een
bewegende
optische
pen)
als
statische
objecten
(bv.
een
schaakstuk).
Orb:
Grafisch
object
in
het
Multi‐Touch
platform
die
een
interface
aanbied
aan
de
gebruiker
ervan.
Vergelijkbaar
met
de
startknop
in
windows
of
zowat
ieder
ander
besturingssysteem.
Blob:
Het
oppervlak
dat
gedetecteerd
wordt
door
het
Multi‐Touch
raakoppervlak
nadat
er
een
bepaald
object
mee
in
aanraking
is
gekomen.
Gesture:
Dit
is
een
bepaalde
hand‐
of
objectbeweging
die
men
doet
op
het
Multi‐Touch
raakoppervlak,
in
een
patroon
dat
door
het
Multi‐Touch
platform
kan
herkend
worden.
In
principe
zijn
er
geen
restricties
op
de
vorm
van
dit
patroon.
Tag
(op
een
device):
Een
uniek
identificatiepatroon
dat
op
een
device
is
aangebracht
zodat
het
ondubbelzinnig
geïdentificeerd
kan
worden.
Voorbeeld
hiervan
is
een
streepjescode
die
het
mac‐adres
van
het
device
voorstelt.
Fiducial:
Patroon
op
een
object
dat
gebruikt
kan
worden
om
dit
object
en
zijn
oriëntatie
te
herkennen.
Widget:
Is
de
algemene
naam
voor
de
elementen
waaruit
een
grafische
interface
kan
worden
opgebouwd.
7/12/08
TultiMouch
90
Appendices
Complexiteit
Prioriteit
Basis?
Risiconiveau
Appendix
1:
Complete
lijst
van
Features
Oplossing
voor
risico
Object
Detection
1
5
x
bestaande
libraries
Object
Recognition
3
5
x
3
Object
Tracking
1
5
x
bestaande
libraries
Positie
volgen
van
bewegende
objecten
Gesture
Recognition
3
5
x
3
bestaande
libraries
Herkennen
van
bewegingen
op
de
MTI
en
de
gepaste
actie
ondernemen
Fiducials
2
3
bestaande
libraries
Richting
van
object
op
MTI
kunnen
bepalen
(adhv
speciale
tag)
Pen‐Based
Input
1
3
Device
Discovery
3
5
x
3
bestaande
device
drivers
Device
Localisation
4
5
x
4
eenvoudigste
techniek
Bepalen
waar
precies
op
de
tafel
een
gedetecteerd
device
zich
bevindt.
Device
Identification
/
Authentication
3
5
x
3
aandacht
bij
ontwerp,
authentication
weglaten
Kunnen
nagaan
dat
een
device
hetgeen
is
dat
het
beweert
te
zijn,
zodat
het
toegang
kan
krijgen
tot
bepaalde
toepassingen,…
Device
Authorization
4
1
weglaten
van
authorization
Kunnen
nagaan
welke
acties
een
device
mag
uitvoeren
en
dit
afdwingen.
User
&
Device
Management
4
5
x
4
aandacht
bij
ontwerp
Application
Rights
Management
4
2
bestaande
libraries,
Beheer
van
welke
applicaties
welke
acties
mogen
aandacht
bij
ontwerp
uitvoeren
en
dit
afdwingen
Sandboxing
4
2
lagere
prioriteit?
Device
Input
3
3
1
feature
weglaten
Input
van
het
device
kunnen
gebruiker
(vb:
kunnen
streamen/renderen
naar
het
scherm
en
de
input
van
de
toetsen
kunnen
gebruiken
als
input
voor
de
MTI)
Device
Output
5
2
1
feature
weglaten
output
van
het
device
kunnen
gebruiker
(vb:
kunnen
streamen/renderen
naar
het
scherm
en
de
input
van
de
toetsen
kunnen
gebruiken
als
input
voor
de
MTI)
Device
File
Access
1
5
x
Lezen/schrijven
bestanden
die
zich
bevinden
op
een
geconnecteerd
device
Device
Protocol
Services
3
3
1
enkel
meest
essentiële
services
Device
(Media)
access
Security
Device
related
Object
related
Categorie
Feature
7/12/08
TultiMouch
Omschrijving
van
de
feature
Detectie
dat
nieuwe
objecten
op
de
MTI
gelegd
worden
Onderscheiden
en
later
herkennen
van
de
verschillende
objecten
op
de
MTI
(oa
adhv
vorm)
(vb:
een
object
is
een
device
en
krijgt
een
id)
Mogelijkheid
om
tekeningen
en
teksten
in
te
geven
mbv
soort
stylus/pen/pointer
Detecteren
van
devices
in
de
buurt
vd
MTI,
samen
met
de
aangeboden
diensten
(vb
adhv
bluetooth)
Beheer
van
gebruikers,
hun
devices,
hun
voorkeuren
en
hun
restricties
91
Other
Image
processing
GUI
related
Device
Extra
Services
5
1
later
toevoegen
als
plugins
Internet
Connectivity
1
5
Kunnen
aansturen/gebruiken
van
hardware/diensten
op
een
geconnecteerd
device
(vb:
flash
laten
afgaan)
Applicaties
op
de
MTI
kunnen
gebruik
maken
van
internet
Internettoegang
aanbieden
aan
de
devices
/
Internettoegang
gebruiken
van
de
devices
en
aanbieden
aan
de
andere
devices
en
applicaties
(indien
toegestaan)
Internet
Connection
Sharing
5
1
GUI
library
5
5
x
5
Een
MT‐GUI
library
(cfr.
Java
Swing)
die
enkele
beperken
tot
private
basiswidgets
aanbiedt,
met
o.a.
widget
scaling,
map
desktop
widgets,
layered
widgets,
"drag,
drop
and
throw",
…
Private
Working
Area
5
5
x
5
Een
gebied
op
de
MTI
waar
de
gebruiker
zijn
eigen
aandacht
bij
ontwerp
werkruimte
heeft
en
die
andere
gebruikers
niet
kunnen
manipuleren.
Collaborative
Working
3
1
Multi
User
3
5
x
3
Text
input
1
5
x
Virtueel
keyboard
om
tekstinvoer
op
de
MTI
toe
te
laten
Imaging
3
1
Scanvoorziening
waarmee
papieren
documenten
(als
afbeelding)
gedigitaliseerd
kunnen
worden
en
deze
bestanden
dan
op
de
tafel
weergeven
worden.
OCR
in
plugin
3
1
Gescande
documenten
kunnen
omzetten
naar
een
digitae
vorm
(vb:
pdf
of
word
document)
Handwriting
Recognition
4
3
2
bestaande
libraries
Kunnen
digitaliseren
van
tekst
ingevoerd
met
een
vinger
of
een
pen/stylus/pointer
device.
MTI
Extension
5
1
aandacht
bij
ontwerp,
MT
Collaboration?
MTI
Collaboration
3
4
2
aandacht
bij
ontwerp
Ubiquitous
MTI
(MTI‐ swarm)
5
1
Automatic
Dependency
Resolving
3
5
3
bestaande
libraries?
Plugability
5
5
x
5
bestaande
libraries,
De
bestaande
software
op
de
MTI
kan
gemakkelijk
aandacht
bij
ontwerp
uitgebreid
worden
adhv
plugins
feature
weglaten
Met
meerdere
mensen
moeten
via
de
multi‐touch
tafel
tegelijkertijd
aan
een
bepaald
document
of
bestand
kunnen
werken.
Mogelijkheid
voorzien
om
met
verschillende
aandacht
bij
ontwerp
gebruikers
op
het
zelfde
moment
met
de
multi‐touch
tafel
te
laten
werken.
meerdere
MTI's
vormen
1
groter
geheel
Samenwerken
op
meerdere
MT‐tafels
op
verschillende
fysieke
locaties.
Alle
MTI's
vormen
1
grote
logische
entiteit.
7/12/08
TultiMouch
92