Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
UNIVERZA V LJUBLJANI
FAKULTETA ZA ELEKTROTEHNIKO
Bojan Blažica
IZDELAVA VEČDOTIČNEGA ZASLONA IN NJEGOVA UPORABA V GEOINFORMACIJSKEM
SISTEMU
DIPLOMSKO DELO UNIVERZITETNEGA ŠTUDIJA
Mentor: doc. dr. Boštjan Murovec
Ljubljana, 2009
Zahvala
Zahvaljujem se tatu Borisu in mami Darinki, punci Vanji, bratu Tilnu, mentorju Boštjanu, podjetju
Xlab in prijateljem. Za vzpodbudo, podporo, pomoč in lepe trenutke v času študija. Hvala!
Povzetek
Diplomska naloga obravnava področje večdotičnih (ang.: multitouch) zaslonov. Zajema pregled
področja, izdelavo zaslona in razvoj programske opreme zanj.
Podane so osnovne definicije področja, prednosti večdotičnih zaslonov v primerjavi z zasloni, ki
zaznavajo samo en dotik in posledice, ki iz tega izvirajo. Opisani so pomembnejši mejniki v
zgodovini področja ter opis tehnik izdelave večdotičnih zaslonov s poudarkom na optičnih
metodah zaznave dotikov.
Drugi del naloge predstavi izdelavo zaslona na praktičnem primeru. Definira želje in potrebe na
podlagi katerih smo se odločili za metodo izdelave, opisuje izbiro komponent in opredeli njihovo
vlogo v sklopu celotnega sistema ter poda rešitve za probleme, ki so se med izdelavo pojavili.
V tretjem delu so v splošnem opisane programske komponente, potrebne za izdelavo aplikacije,
ki izkorišča zmogljivosti večdotičnih zaslonov. Na kratko je predstavljen protokol TUIO, ki definira
komunikacijo med komponentami. Opisano je tudi, kako smo te komponente implementirali v
navezi z aplikacijo Gaea+.
Ključne besede: večdotični zasloni, LED svetlobna ravnina, naravni uporabniški vmesnik, razpoznavanje gest, strojni vid, protokol TUIO.
Abstract
This thesis discusses the field of multitouch displays. It comprises the overview of the field, the
building process of such a display and the development of appropriate software.
The first part provides basic definitions within the field, advantages of multitouch displays
compared to standard touchscreens that detect only one touch, and the consequences
originating from them. Following are major milestones in the history of the area and a description
of construction techniques of multitouch displays with an emphasis on optical methods.
The second part is a case study of building a multitouch display. First wishes and needs are
defined on the basis of which we have chosen one of the construction techniques, followed by
an explanation of the selection of components and their role within the system. Problems that
have occurred during the building process and their solutions are also addressed in this part.
Software components necessary for producing applications that exploit the potential of
multitouch displays are described in the third part of the thesis. TUIO, a protocol that defines the
communication between components, is briefly presented. The implementation of both,
components and protocol, is explained through the process of developing a plug-in that enables
multitouch functionality within the application Gaea+.
Key words: multitouch, LED laser plane, natural user interface, gesture recognition, machine vision, TUIO protocol.
i
Kazalo
1 Uvod ....................................................................................................................................... 1
2 Pregled področja .................................................................................................................... 3
2.1 Kaj je večdotičnost? ........................................................................................................ 3
2.1.1 Nekaj pojmov s področja MT tehnologij ................................................................... 5
2.2 Zgodovina razvoja ........................................................................................................... 6
2.3 Obstoječe MT tehnologije .............................................................................................. 10
2.3.1 Neoptične metode .................................................................................................. 10
2.3.2 Optične metode ...................................................................................................... 12
2.3.3 Primerjava metod ................................................................................................... 18
3 Strojna oprema ..................................................................................................................... 21
3.1 Izbira metode izdelave .................................................................................................. 21
3.2 Opis postopka izdelave ................................................................................................. 22
3.2.1 Predelava LCD monitorja ...................................................................................... 22
3.2.2 Kamera ................................................................................................................... 24
3.2.3 IR osvetlitev ............................................................................................................ 26
4 Programska oprema ............................................................................................................. 33
4.1 Zaznavanje in sledenje objektom .................................................................................. 33
4.1.1 Poenostavitve zaznavanja in sledenja predmetov ................................................. 34
4.1.2 Sledilnik Community core vision (CCV) ................................................................. 35
4.2 Komunikacija med sledilnikom in aplikacijo – protokol TUIO ........................................ 37
4.3 Razpoznavanje gest ...................................................................................................... 38
4.3.1 Gaea+ .................................................................................................................... 39
4.3.2 G2RE – Gaea+ gesture recognition engine ............................................................ 40
ii
4.4 Implementacija MT gest v aplikaciji Gaea+ ................................................................... 44
5 Zaključek ............................................................................................................................... 47
6 Literatura ............................................................................................................................... 49
Dodatek A - ohišje ........................................................................................................................ 53
Dodatek B - programska koda ..................................................................................................... 55
iii
Kazalo slik
Slika 1: Večdotični (multitouch) zaslon. ......................................................................................... 3
Slika 2: 'Ščip' (ang.: pinch) gesta za povečanje slike, znana iz iPhone-a. ..................................... 4
Slika 3: Študija upravljanja računalnika z obema rokama . ........................................................... 7
Slika 4: Pameten telefon Simon ..................................................................................................... 8
Slika 5: FingerWorksova MT naprava ............................................................................................ 8
Slika 6: MT zaslon, ki obravnava posamezne točke levo ter zaslon, ki obravnava vrstice in
stolpce desno . ............................................................................................................................. 10
Slika 7: Uporaba ogledal pri montiranju projektorja v MT zaslon . ............................................... 13
Slika 8: Princip delovanja FTIR metode . ..................................................................................... 14
Slika 9: Lomni zakon levo in popolni odboj desno. ...................................................................... 14
Slika 10: Prikaz vpliva sevalnega kota diode na lom svetlobe v pleksi steklu (slika ni v merilu). 15
Slika 11: Razpršena osvetlitev . ................................................................................................... 16
Slika 12: Razpršena površinska osvetlitev . ................................................................................ 17
Slika 13: Laserska svetlobna ravnina . ........................................................................................ 17
Slika 14: Zaznavanje sredinskega prsta je onemogočeno zaradi pojava 'sence'. ....................... 18
Slika 15: Monitor Samsung 193P. ............................................................................................... 23
Slika 16: Samsung 193P razstavljen na zaslon, ohišje in stojalo. ............................................... 23
Slika 17: Napajalni kabli, ki smo jih podaljšali (zelena) in podatkovni kabli, ki jih nismo podaljšali
(rdeča). ........................................................................................................................................ 23
Slika 18: Zadnja stran monitorja in beli odbojnik. ........................................................................ 24
Slika 19: Filtri za boljšo sliko. ....................................................................................................... 24
Slika 20: Ker je za delovanje filtra pomembno kako je obrnjen, so zavihki (črn krog) narejeni
tako, da je možen samo pravilen način pritrditve. ........................................................................ 24
Slika 21: Žarnice za osvetlitev zaslona. ....................................................................................... 24
iv
Slika 22: PS3 Eye kamera ........................................................................................................... 25
Slika 23: Testiranje diod s spletno kamero Canyon z IR filtrom iz magnetnega traku. ................ 25
Slika 24: Prepustnost IR filtra v odvisnosti od valovne dolžine svetlobe . .................................... 26
Slika 25: Pogled na diode skozi filter z valovno dolžino 880 nm (levo) in zajeti svetleči predmeti
(desno). ........................................................................................................................................ 26
Slika 26: Testiranje FTIR efekta ................................................................................................... 27
Slika 27: 1 mm debela reža, ki IR svetlobo usmeri v ravnino. ..................................................... 28
Slika 28: Izračun razdalje med diodami. ...................................................................................... 29
Slika 29: V 'laboratorijski' vir napetosti predelan računalniški ATX napajalnik. ............................ 30
Slika 30: Vezalna shema diod (U = 12 V, R = 1 Ω). ..................................................................... 30
Slika 31: IR svetilna dioda Osram SFH 485. ............................................................................... 31
Slika 32: Shematski prikaz zgradbe MT aplikacije. ...................................................................... 33
Slika 33: Prejšnje stanje (levo), trenutno stanje (na sredini) in določitev prehoda med stanji
(desno) . ....................................................................................................................................... 35
Slika 34: Uporabniški vmesnik sledilnika Community core vision ................................................ 36
Slika 35: Kalibracija sledilnika. ..................................................................................................... 37
Slika 36: Protokol TUIO . ............................................................................................................. 37
Slika 37: 3D vizalizacijsko orodje Gaea+. .................................................................................... 40
Slika 38: Odločitveno drevo razpoznavalnika. ............................................................................. 43
Slika 39: Shematski prikaz razredov razpoznavalnika G2RE. ...................................................... 44
Slika 40: Skica jedra zaslona – osnova okrog katere je mizar izdelal ohišje. V času pisanja
diplome je ohišje še v izdelavi. ..................................................................................................... 53
Slika 41: Slike prototipa MT zaslona. ........................................................................................... 53
1
1 Uvod
Razvoj na področju večdotičnih (ang.: multitouch, multi-touch) tehnologij se odvija že skoraj
trideset let, vse bolj popularen pa postaja v današnjem času kot naslednji logični korak v razvoju
naravnih uporabniških vmesnikov. Zato smo se v sodelovanju s podjetjem Xlab d.o.o. odločili za
obravnavo tematike v tej diplomski nalogi.
Podjetje XLAB d.o.o., Pot za Brdom 100, Ljubljana [1] se ukvarja z razvojem poslovne
programske opreme za enostaven dostop in nadzor oddaljenega namizja ter sestanke in
komunikacijo preko medmrežja na zahtevo. Izdelki ISL Online [2] so združeni v poslovni paket
»Vse v enem«, ki nudi vsem od malih, srednjih in velikih podjetij do posameznikov nov, preprost
in varen način dostopa do oddaljenega računalnika, sodelovanja s strankami, partnerji in
zaposlenimi v dejanskem času.
Raziskovalni oddelek XLAB Research že več let uspešno sodeluje tako pri domačih kot
mednarodnih razvojno-raziskovalnih projektih (XtreemOS, DeDiSys, SLA@SOI, Mosaica,
Odyssey ... [3]). Rezultat dobrega medsebojnega sodelovanja pri projektih je visoka tehnična
usposobljenost podjetja in razvoj lastnega produkta Gaea+ [4]. To je trirazsežnostno
vizualizacijsko orodje, s katerim na enostaven način prikazujemo najrazličnejše uporabne
informacije v kontekstu resničnega geografskega prostora, tudi v realnem času.
Področje večdotičnih tehnologij obsega tako izdelavo zaslonov, ki so sposobni zaznati več
hkratnih točk dotika kot tudi razvoj programske opreme, ki v celoti izkorišča prednosti takšnih
zaslonov. Delo smo razdelili v tri korake:
• splošen pregled področja,
• izdelava večdotičnega zaslona,
• razvoj aplikacije, ki izkorišča prednosti večdotičnega zaslona.
V prvem delu diplomske naloge nas zanima kaj večdotičnost sploh je, kaj prinaša novega in
kakšne so možnosti za realizacijo večdotičnega zaslona. Pogledali smo si tudi, kako se je
področje razvijalo s časom in kakšni izdelki so trenutno dostopni na tržišču.
2
Sledi opis postopka izgradnje zaslona. Izmed vseh metod opisanih v prvem delu smo eno izbrali
in po njej realizirali zaslon. Navedli smo potrebne komponente ter njihovo vlogo in vpliv na
končni izdelek. Dotaknili smo se tudi problemov, ki so se sproti pojavljali in uporabljenih rešitev
zanje.
Programski del naloge predstavlja zajemanje podatkov, ki jih pošilja zaslon, njihovo obdelavo,
razpoznavanje ukazov in uporabo v aplikaciji. Na kratko opisujemo protokole in odprtokodne
knjižnice, ki smo jih uporabili. Podrobneje pa predstavljamo dodatek (ang.: plug-in), ki izbrani
aplikaciji (Gaea+) doda večdotično funkcionalnost.
3
2 Pregled področja
2.1 Kaj je večdotičnost?
Beseda večdotični je nadpomenka za zaslone, občutljive na več dotikov. Uradnega slovenskega
prevoda še ni, zato v nadaljevanju uporabljamo prevod večdotični zaslon, večdotične tehnologije
ali kar okrajšavo MT za angleško besedo multitouch.
Slika 1: Večdotični (multitouch) zaslon.
Večina prenosnih računalnikov ima sledilno ploščico (ang.: touchpad) in že dolgo so med nami
zasloni, občutljivi na dotik. Pri slednjih dejansko vidimo tisto, česar se dotikamo. To je za
uporabnika precejšen napredek, saj je upravljanje naprave preko takega zaslona naravno in
samoumevno. Zasloni MT to izkušnjo razširijo s sposobnostjo zaznavanja več mest dotika, kar
odpira ogromno novih možnosti pri komunikaciji človeka z računalnikom.
Upravljanje računalnika preko zaslona, občutljivega na dotik je še vedno v domeni uporabniških
vmesnikov, ki jih označuje angleška kratica WIMP (ang.: Windows, Icons, Menus, Pointing
device), kar pomeni okna, ikone, meniji, miška. S povezovanjem gibanja zaznanih točk – prstov
v geste, lahko uporaba MT zaslona pripelje do spremembe, podobne tisti ob prehodu od ukazne
vrstice k WIMP sistemu. Če lahko z miško ali enim prstom na določen grafični objekt zgolj
pokažemo (ga označimo) ali premaknemo, lahko sedaj z več prsti ta objekt povečamo,
pomanjšamo, zavrtimo …
4
Slika 2: 'Ščip' (ang.: pinch) gesta za povečanje slike, znana iz iPhone-a.
Bill Buxton, priznani strokovnjak s področja komunikacij človek stroj, svoja razmišljanja o MT
tehnologijah temelji na naslednjih treh načelih [5]:
• Zapomnimo si, da je od tega, da sta Engelbart in English leta 1965 iznašla miško, do
tega, da je z izdajo operacijskega sistema Windows 95 postala samoumevna, minilo 30
let. MT tehnologije čaka torej še 5 let, preden se bodo razvile do primernosti za širšo
uporabo.
• Vsaka stvar je najprimernejša za nekaj in neprimerna za nekaj drugega. Pomembno je,
da vemo, kaj je kaj, za kaj, za koga, kje in še posebej kdaj. Miška je za nekatera opravila
slaba, za druga pa naravnost odlična, zato bi bilo napačno misliti, da bodo MT zasloni
miško nadomestili. Pri iskanju novih vhodnih naprav se izziv skriva v tem, da najdemo
naprave, ki jih lahko upravljamo hkrati z miško (npr. v drugi roki) ali pa prinašajo
prednosti na področjih, kjer je miška slaba.
• Trud, delo in stroški, da neko vhodno napravo izboljšamo za določeno mero, so veliko
manjši, kot če bi za isto mero hoteli izboljšati izhodno napravo. Razlog tiči v dejstvu, da
smo ljudje in družba, v kateri živimo, osredotočeni predvsem na vidno zaznavanje.
Posledično so zasloni razvojno gledano precej bolj zreli kot vhodne naprave. Hkrati to
pomeni, da je področje vhodni naprav na široko odprto za inovacije.
5
2.1.1 Nekaj pojmov s področja MT tehnologij
Da bi se izognili splošnim napakam v razumevanju novosti, ki jih MT zasloni prinašajo, si
razjasnimo še nekaj pojmov s tega področja [5]:
• Grafične tablice in zasloni na dotik: Bistvena razlika med grafičnimi tablicami in
zasloni na dotik je v tem, česa se dotikamo. Pri prvih gledamo zaslon in se dotikamo
tablice, medtem ko pri zaslonih na dotik gledamo in se dotikamo iste površine.
• Diskretna in zvezna interakcija: Narava interakcije z MT vhodno napravo je zelo
odvisna od podpore diskretnim in/ali zveznim gibom. Uporabniški vmesnik, ki nam ga
nudi tipkovnica na MT zaslonu, je tipičen primer diskretne interakcije (npr. doseganje
velike tiskane črke L s hkratnim pritiskom tipk Shift in l ), medtem ko je povečanje slike
primer zvezne interakcije (z dvema prstoma se dotaknemo slike in vlečemo narazen).
• Prostostne stopnje (ang.: degrees of freedom, DOF): Raznovrstnost interakcije je
tesno povezana s številom prostostnih stopenj, ki nam jih naprava omogoča. Grafični
uporabniški vmesnik temelji na premikanju miškinega kazalca v dveh dimenzijah, kar
predstavlja 2DOF. Zaznavanje dveh prstov nam omogoča 4DOF, treh prstov 6DOF in
tako naprej. Vidimo, da se z MT tehnologijo lahko približamo raznovrstnosti interakcije, ki
jo srečamo v vsakdanjem življenju. Ob primerni uporabi nam to omogoča, da za
upravljanje računalnika uporabljamo veščine, ki smo se jih priučili že od majhnega. Tak
način interakcije je naraven in intuitiven, saj ne zahteva posebnega učenja.
• Pomen velikosti: Velikost MT zaslona v grobem določa, katere mišične skupine
uporabljamo, koliko rok/prstov je lahko hkrati prisotnih na površini in kakšne geste so
primerne za napravo. Pomembna je tudi velikost površine, ki smo jo sposobni zaznati.
Telefon, ki zazna prisotnost lica na zaslonu, to pretvori v ukaz 'sprejmi klic'.
• Pomen orientacije – horizontalno ali vertikalno: Vodoravno postavljene površine, ki
lahko zaznajo samo eno točko dotika, so problematične. Če namreč ob prstu, s katerim
zaslon upravljamo, nanj položimo še roko, naprava ne deluje več pravilno. V primeru, da
je ista naprava postavljena navpično, do tega problema ne prihaja.
• Zaznavanje dotika ni samo prisotnost stika in lokacija: Kljub temu, da večina MT
naprav zazna samo prisotnost in lokacijo dotika, lahko pri zaznavanju dotika upoštevamo
še druge vidike, kot so:
o Stopnja dotika, občutljivost na pritisk: Zvezno zaznavanje pritiska za vsako
točko dotika nam odpre povsem novo dimenzijo interakcije. Pri tem je treba
povedati, da v večini primerov ne gre za direktno merjenje pritiska, ampak
6
zaznavanje stranskih posledic močnejšega pritiska (npr.: ob močnejšem pritisku
na površino se blazinica prsta razširi).
o Vpadni kot: Nekaj sistemov omogoča zaznavanje kota, pod katerim se prst
dotika površine. To doda prstu funkcionalnost igralne palice v točki dotika (primer
naprave, ki to izkorišča je Sensor Frame [6])
• En prst ali več prstov: Večina površin, občutljivih na dotik, ki so trenutno v uporabi,
podpira zaznavanje enega samega prsta. To v primerjavi z miško ne prinaša nič novega,
saj se jedro MT-ja skriva ravno v zaznavanju gest, ki jih lahko naredimo z več prsti.
2.2 Zgodovina razvoja
Kljub temu, da so MT tehnologije postale popularne šele zadnjih nekaj let, se njihov razvoj odvija
že zelo dolgo. Tudi klavir in tipkovnico lahko štejemo med MT naprave, saj po njiju pritiskamo z
desetimi prsti hkrati. Prvi prototipni MT zasloni pa segajo v leto 1984.
1982 Nimish Mehta, Univerza v Torontu: Prva naprava z možnostjo zaznavanja več dotikov.
To je bila zamrznjena steklena plošča, katere optične lastnosti so omogočale, da je kamera pod
njo videla dotike kot črne lise na beli površini. Oblika lis je bila odvisna od sile dotika – kako
močno je prst pritiskal na površino. Naprava ni bila pravi MT zaslon, saj sta zaznavanje prstov in
prikaz slike potekala na različnih površinah.
1983 Myron Krueger: Na videu temelječ sistem za spremljanje gibanja rok, ki je omogočal
interakcijo več uporabnikov prek gibov rok in prstov. Zaznavanje gibov in prikaz slike sta še
vedno potekala na različnih površinah. Sistem je prepoznaval širok nabor gest, med njimi
najdemo tudi gesto za povečanje fotografije, znano iz iPhone-a. Bill Buxton opisuje Kruegerjevo
delo kot 'navdihujoče in več kot desetletje pred svojim časom' [5].
1984 Bob Boie, Bell labs: Prvi zaslon sposoben zaznavanja več dotikov, z odličnim odzivnim
časom za tiste čase. Na CRT monitor so položili prozorno folijo kapacitivnih senzorjev.
1985 Univerza v Torontu: Tablica za spremljanje več dotikov, ki je zaznala mesto dotika in
stopnjo pritiska. Za detekcijo dotika so namesto na videu temelječega sistema uporabili
kondenzatorje [7].
1985 Univerza Carnegie mellon: ‘Senzorski okvir' (ang.: Sensor frame) [6] je imel optične
senzorje, s pomočjo katerih je zaznaval prste, postavljene v kote CRT zaslona. Sposoben je bil
detekcije treh prstov. Pri več prstih se pojavijo sence, s čimer se zanesljivost naprave zmanjša.
7
Poleg položaja prstov je senzorski okvir zazna tudi kot, pod katerim je uporabnik s prstom kazal
na zaslon.
1986 Univerza v Torontu, Apple: Na univerzi v Torontu opravijo študijo o tem, kako smo
uporabniki dovzetni za upravljanje računalnikov z dvema rokama [8].
Slika 3: Študija upravljanja računalnika z obema rokama (preslikano iz [8]).
Slika 1Slika 3 prikazuje okolje pri enem izmed eksperimentov. Preizkušanec je imel v levi roki
drsnik, v desni pa miško. Ljudje so avtomatsko, brez da bi jim to kdo naročil, naloge opravljali
simultano, tako da so jih razdelili na obe roki. Študija je pokazala, da je tak način upravljanja
računalnika naraven in hitrejši.
Istega leta so v sodelovanju z Applom razvili programsko opremo, ki je omogočala uporabo dveh
mišk na istem računalniku, a do serijske proizvodnje ni prišlo. Iz tega vidimo, da je bilo že
dvajset let nazaj izvedljivo, kar postaja danes tako popularno.
1991 Xerox PARC: Prva razmišljanja o 'dvosmernih' ploskih zaslonih (LCD), ki bi bili uporabni
tudi kot vhodne naprave. Istega leta se je pojavila tudi tako imenovana digitalna miza (ang.:
digital desk) [9]. Nad mizo so bile kamere in zvočna tipala, katerih naloga je bila spremljanje
gibanja rok in prstov ter zaznavanje objektov na mizi.
1992 Xerox PARC: Tipkovnica, ki ima na hrbtni strani tablico, občutljivo na dotik. Uporabnik je
tipkovnico obrnil in prek tablice upravljal računalnik s kretnjami.
1992 IBM in Bell South: Pojavi se prvi pametni telefon Simon z zaslonom, občutljivim na en
sam dotik. Na sliki 4 vidimo, da je zasnova sodobnih telefonov podobna Simonovi.
8
Slika 4: Pameten telefon Simon
1992 Wacom: Podjetje predstavi vrsto grafičnih tablic za vnos podatkov, ki so imele sposobnost
zaznati mesto in moč pritiska pisala na površino in sočasno tudi položaj miški podobne ploščice.
1995 DSI Datotech: Grafična tablica s sposobnostjo zaznavanja več dotikov hkrati. Dodan je bil
tudi program za prepoznavanje gest.
Slika 5: FingerWorksova MT naprava
1998 FingerWorks: John Elias in Wayne Westerman iz Univerze v Delaware-u ustanovita
podjetje Fingerworks. Izdelki (primer tablice prikazuje slika 5) temeljijo na Westermanovi
doktorski disertaciji Hand Tracking, Finger Identification and Chordic Manipulation on a Multi-
Touch Surface [10]. Leta 2005 podjetje prevzame Apple, ki s tem pridobi znanje in patente s
področja MT tehnologij.
2001 MERL (Mitsubishi Electric Research Laboratories): V laboratorijih podjetja Mitsubishi
razvijejo Diamond Touch [11]. Poleg zaznavanja prstov in kretenj je naprava sposobna
ločevanja med različnimi uporabniki.
2003 JazzMutant, Francija: Podjetje JazzMutant [12] razvije prvi pravi MT zaslon za
komercialno rabo. Uporabi ga v digitalni mešalni mizi Lemur.
9
2005 Tactiva 2005: Podjetje Tactiva napove TactaPad [13]. To je tablica občutljiva na več
dotikov, ki hkrati snema naše roke in njihovo senco prikaže na zaslonu. Na ta način se sicer loči
površina dotika od površine zaslona, po drugi strani pa ostane položaj uporabnika za
računalnikom bolj ergonomičen. Posnetki naprave prikazujejo uporabo v programih za grafično
oblikovanje, kjer uporaba desetih prstov delo izjemno pohitri.
2006 Jeff Han, Univerza v New Yorku: Jeff Han razvije MT sistem temelječ na FTIR metodi
[14]. Zaradi preproste izgradnje, odličnega delovanja in nizke cene naprave postane video
predstavitve na konferenci TED (tehnologija, razvedrilo, dizajn) izjemno popularen.
2007 Apple: Ob Apple-ovi izdaji iPhone-a se zanimanje za MT tehnologije izrazito poveča [15].
iPhone je prvi mobilni telefon z MT zaslonom. To omogoča priljubljene funkcije kot so
povečevanje in rotiranje slik z uporabo gest.
2007 Microsoft: Microsoft izda Surface – interaktivno mizo z MT zaslonom [16]. Namenjena je
domači rabi (pregledovanje slik, videa), kot nadomestek mize v restavracijah (pregledovanje
menujev, naročanje), kot pripomoček za nakupovanje, informacijska tabla ...
2007 Microsoft: Razvoj prototipa LCD zaslona, ki ima v sebi vgrajene oddajnike in sprejemnike
IR svetlobe [17]. Če pred zaslon postavimo prst, se svetloba iz oddajnika odbije in tako zaznamo
dotik. Tehnologijo odlikuje natančnost in majhna poraba prostora.
2009 Microsoft: Operacijski sistem z vgrajeno podporo MT interakcije z računalnikom. V času
pisanja diplomskega dela je napovedan izid Windows 7 dne 22. oktobra 2009.
10
2.3 Obstoječe MT tehnologije
V grobem delimo metode za izdelavo MT zaslonov v dve skupini: optične in ostale - neoptične.
Prve so primerne za izdelavo večjih zaslonov, druge pa se uporabljajo predvsem za manjše
naprave (npr. mobilni telefoni).
2.3.1 Neoptične metode
Neoptične metode zahtevajo industrijsko proizvodnjo in niso primerne za samogradnjo. Ker je
eden izmed ciljev diplomskega dela izdelava MT zaslona, bomo te metode zgolj našteli in
razložili osnovni princip njihovega delovanja.
Slika 6: MT zaslon, ki obravnava posamezne točke levo ter zaslon, ki obravnava vrstice in stolpce desno (preslikano iz [18]).
Te metode delujejo tako, da območje zaznavanja razdelijo na manjše enote. V primeru
zaznavanja posameznih točk (slika 6 levo) pride do problemov zaradi količine povezav med
senzorji in krmilnikom zaslona. Sprejemljivo ločljivost zaznavanja MT zaslona določa velikost
grafičnih objektov (npr.: ikone), ki se jih bomo na zaslonu dotikali. To pomeni, da najmanjša
zaznana enota ne sme biti večja od 5 mm. Pri tej ločljivosti mreža 10 x 10 senzorjev, ki zahteva
100 povezav do krmilnika, zadostuje za zaslon velikosti dobrih 20 cm2. Pri zaznavanju
posameznih osi (slika 6 desno) pa smo omejeni na zaznavanje lokacije enega in prisotnosti
drugega dotika. Za več dotikov je potrebno število osi povečati. Velja pravilo, da za n dotikov
potrebujemo n+1 osi [18].
Omenimo še dejstvo, da je bila večina neoptičnih metod razvita za navadne zaslone, občutljive
na en dotik. Večdotično funkcionalnost jim dodamo s posebnimi krmilniki, dodajanjem plasti in
podobnimi prijemi.
2.3.1.1 Uporovni zasloni
Uporovni zaslon sestavlja steklena plošča, premazana s tankima kovinskima slojema, ki ju
ločuje distančnik. Prvi sloj je uporoven in ima priključka na levi in desni strani zaslona, drugi pa
11
prevoden s priključkoma na zgornji in spodnji strani zaslona. Izmenično je eden izmed slojev pod
napetostjo, medtem ko na drugem napetost merimo. Ob dotiku zaslona ustvarimo napetostni
delilnik, ki nam pove koordinato dotika [19][20].
Takšni zasloni so poceni, porabijo malo energije in so izjemno vzdržljivi. Njihova slabost je, da
niso popolnoma prosojni, saj prepuščajo le od 75 % do 85 % svetlobe.
2.3.1.2 Kapacitivni zasloni
Elektrode na vsaki strani zaslona na prevodnem sloju vzdržujejo natančno določeno količino
naboja, ki vzpostavi enakomerno električno polje. Pri dotiku zaslona se delček naboja prenese
na uporabnika in s tem se naboj na prevodni plasti zmanjša. To zmanjšanje naboja merimo z
vezji, ki se nahajajo v vseh štirih kotih zaslona.
Med kapacitivne zaslone sodijo tudi zasloni s 'projicirano' kapacitivnostjo (ang.: projected
capacitance). Zgrajeni so iz dveh serij vzporednih tankih žic, ki sta med seboj pravokotni in
vgrajeni med dvema plastema stekla. Žice tvorijo mrežo kondenzatorjev, ki projicira električno
polje skozi vrhnje steklo. Uporabnikov dotik spremeni kapacitivnost kondenzatorjev v bližini
dotika. Na podlagi te spremembe določimo koordinate dotika [21]. Takšen zaslon uporablja
telefon iPhone.
Kapacitivni zasloni imajo manj težav s prosojnostjo, saj dve prevodni plasti nadomestimo z eno.
Njihova slabost je, da delujejo le ob dotiku s prstom in jih ne moremo upravljati v rokavicah ali s
palčko.
2.3.1.3 Zasloni s površinskimi zvočnimi valovi
Na robove zaslona montirani piezoelektrični sprejemniki in oddajniki na površini zaslona
vzdržujejo ultrazvočne valove. Ob dotiku se del zvočnih valov absorbira, s sledenjem
spremembam pa lahko določimo lego dotika. Večina takšnih zaslonov je sposobna zaznati dva
dotika [22].
So občutljivi na zunanje razmere (prah, packe na zaslonu) in ne zaznavajo majhnih predmetov
(kemični svinčnik). Prednost zaslonov s površinskimi zvočnimi valovi je v tem, da ne vsebujejo
električnih komponent, ki bi zmanjševale prosojnost zaslona.
12
2.3.2 Optične metode
Enostavna izgradnja, nizka cena in razširljivost. To so ključne lastnosti, zaradi katerih so optične
metode izjemno priljubljene in predstavljajo velik delež trenutno obstoječih MT naprav. Mednje
sodijo: FTIR (ang.: frustrated total internal reflection), razpršena osvetlitev (ang.: diffused
illumination), laserska/led svetlobna ravnina (ang.: laser/led light plane) in razpršena površinska
osvetlitev (ang.: diffused surface illumination).
Vse metode temeljijo na istem principu delovanja: s pomočjo kamere zaznavamo infrardečo
svetlobo, ki se odbija od prstov na površini, ki hkrati služi kot zaslon. Za izdelavo takega zaslona
potrebujemo tri osnovne komponente [23]:
• Vir infrardeče svetlobe: Infrardeča (IR) svetloba je elektromagnetno sevanje, ki obsega
valovne dolžine treh velikostnih razredov in sicer med 700 nm in 1 mm. Uporabljamo jo,
ker je izven človekovega vidnega spektra. To je pomembno, ker je površina, katere se
dotikamo, hkrati tudi zaslon. Oba procesa, ki se tu dogajata, zaznavanje dotika in
podajanje vizualne povratne informacije, sta optične narave, zato lahko med njima pride
do interakcije v obliki motenj – slabše zaznavanje dotika zaradi trenutne slike na površini
ter popačenje slike zaradi osvetljevanja prstov. S premikom zaznavanja dotika v IR
spekter rešimo oba problema. Možni viri IR svetlobe so LED diode, laserji in IR reflektorji,
katerega izberemo, pa je odvisno od uporabljene metode. Laserji pridejo v poštev pri
laserski svetlobni ravnini, reflektorji pri razpršeni osvetlitvi, diode pa povsod drugod. Pri
diodah je potrebno določiti še, ali bomo uporabili posamezne diode ali LED trak in
seveda na podlagi danih zahtev izbrati primeren model diod. Pomembni podatki so
valovna dolžina, sevalni kot (+/-48° stopinj za FTIR, čim večji kot za razpršeno osvetlitev)
in sevalna moč (najmanj 80 mW, več je bolje).
• Optični senzor (običajno je to kamera): Za MT aplikacije je zanimivo predvsem bližnje
infrardeče območje (700 nm - 1000 nm , near infrared - NIR). Večina digitalnih kamer
zaznava NIR svetlobo, zato so te kamere opremljene s filtrom, ki do senzorja prepušča
zgolj vidni spekter. Če ta filter zamenjamo s takšnim, ki prepušča zgolj NIR svetlobo,
dobimo digitalno kamero, občutljivo samo na svetlobo v NIR spektru.
Kamera direktno vpliva na dve pomembni lastnosti MT naprave, odzivnost in natančnost,
zato je pomembno, da izberemo kamero z visoko hitrostjo zajemanja (vsaj 30 slik na
sekundo) in zadovoljivo ločljivostjo (vsaj 320 x 240 slikovnih točk). Poleg tega si pogosto
želimo, da ima kamera čim krajšo goriščno razdaljo, ker jo tako lahko postavimo bliže
zaslonu in je zaradi tega ohišje naprave manjše. Potrebno pa je paziti, da ne
•
2.3.2.1
V MT
'frustra
temelj
pretiravam
(izbočenje
USB ali IE
predvsem
spletne ka
zajemanje
priljubljeno
nadomestn
Vista) so b
Vizualna projektor, z
moramo u
želimo ma
do podvoje
površine.
projektorji
poznavanj
precej eno
Slika 7
1 Prekinjen
skupnosti s
ated total in
i.
mo, saj pride
, ribje oko),
EEE 1394 (F
hitrost. Zara
amere. Med
v ločljivost
osti te kame
ne IR pasov
bili spisani sa
povratna inza manjše n
poštevati nj
ajhno ohišje.
ene slike, je
LCD zaslon
tudi ni prob
u delovanja
ostavna.
: Uporaba ogl
n popolni no
se ime FTIR
nternal reflec
e pri izjemno
ki otežujejo
FireWire). P
adi zadovolji
njimi še pos
ti 640 x 48
ere v MT s
vne filtre raz
amo zaradi ž
nformacija:naprave pa
jegovo reso
Pomagamo
e potrebno
ni ponujajo
blemov s pr
a LCD tehno
ledal pri mont
otranji odboj
uporablja z
ction' se de
o kratkih go
o kalibracijo
rvega odliku
vih tehničnih
sebej izstop
80 slikovnih
skupnosti p
zličnih valov
želje po upo
V splošne
pridejo v po
lucijo ter ra
o si lahko z
uporabiti og
odlično sliko
rojekcijsko r
ologije in izd
tiranju projekt
j FTIR
za metodo, k
ejansko nan
oriščnih razd
o naprave. O
uje nizka ce
h lastnosti in
pa Sony PS3
h točk pri h
riča tudi de
vnih dolžin.
rabi v MT na
m se za iz
oštev tudi LC
zdaljo proje
ogledali, ko
gledala z od
o po izjemn
azdaljo in p
delave zaslo
torja v MT zas
ki jo je razvi
aša na opti
daljah do hu
Omeniti velja
ena in peste
n nizke cene
3 Eye, ki za
hitrosti 30 s
ejstvo, da la
Tudi goniln
apravah.
zpis slike na
CD zasloni.
ekcije. Ta na
ot prikazuje s
dbojno plast
no ugodni c
popačitvijo s
onov je upo
lon (preslikan
il Jeff Han [
ični pojav, n
udih popačit
a še vodilo
er izbor, drug
e se veliko u
a slabih 30 €
slik na seku
ahko zanjo
niki za Okna
a površini u
Pri izbiri pro
aj bo čim kr
slika 7. Da
tjo na predn
ceni. V prim
slike. Ob pri
oraba v MT
no iz [22]).
14]. Besedn
na katerem
13
tev slike
kamere,
gega pa
uporablja
€ ponuja
undo. O
kupimo
a (XP in
uporablja
ojektorja
rajša, če
ne pride
nji strani
merjavi s
mernem
napravi
na zveza
metoda
14
Slika 8: Princip delovanja FTIR metode (preslikano iz [23]).
Za izdelavo takega MT zaslona v osnovi potrebujemo le pleksi steklo in primerne IR diode, ki jih
montiramo kot prikazuje slika 8. Zaradi pojava popolnega odboja (total internal reflection) se IR
svetloba ujame v pleksi steklu. Ob pritisku s prstom na površino pojav prekinemo (od tu beseda
frustrated v imenu), kar povzroči, da se svetloba od prsta razprši. To svetlobo nato kamera
zazna kot svetleče predmete (ang.: blob – bright luminescent object).
Slika 9: Lomni zakon levo in popolni odboj desno.
Fizikalno gledano dogajanje opisuje lomni zakon, ki pravi, da se svetlobni žarek na meji dveh
snovi z različnima lomnima količnikoma delno odbije, delno lomi (slika 9 levo, odbojni žarek ni
narisan). Razmere med vpadnim in lomnim kotom opisuje enačba 1. Če vpadni kot povečujemo,
pride do pojava popolnega odboja, ko se svetlobni žarek v celoti odbije (slika 9 desno).
Vpadnemu kotu, pri katerem se to zgodi, pravimo mejni kot. Izračunamo ga po enačbi 2.
sin θ1sin θ2
n2n1 1
15
θ0 sin‐1n2n1
2
S pomočjo mejnega kota lahko izračunamo primeren sevalni kot za IR diode. Pri lomnem
količniku zraka n0 = 1 in pleksi stekla n1 = 1.49 dobimo mejni kot θ0 42°. Sevalni kot diode naj
bo čim večji, da je pleksi steklo preplavljeno z IR svetlobo, zgornjo mejo tega kota pa določa
ravno mejni kot popolnega odboja in sicer 48° (180° - 90° - 42°, slika 10).
Slika 10: Prikaz vpliva sevalnega kota diode na lom svetlobe v pleksi steklu (slika ni v merilu).
Izdelava MT zaslona po FTIR metodi prinaša še druge izzive, ki pa za samo razumevanje
delovanja niso bistveni, zato jih bomo le našteli:
• Diode je potrebno tokovno napajati, zato jim v serijo vežemo pravilno dimenzioniran upor
in jih montiramo tako, da ne svetijo direktno v kamero.
• Da bo slika na površini vidna, moramo na pleksi steklo položiti dodatno plast iz materiala,
primernega za projiciranje.
• Med vlečenjem prstov po površini se FTIR pojav izredno oslabi. Ta problem rešimo tako,
da na zaslon dodamo plast iz lepljivega materiala (ang.: compliant layer), navadno je to
silikon.
2.3.2.2 Razpršena osvetlitev
Delovanje metode razpršene osvetlitve (ang.: diffused illumination) je izjemno enostavno in ga
nazorno prikazuje slika 11. S pomočjo IR reflektorjev osvetlimo površino, ki služi kot zaslon. Prst
ali predmet v neposredni bližini zaslona bo to svetlobo odbil nazaj in kamera jo bo zaznala. Da
dosežemo enakomernejšo osvetlitev, pod zaslon položimo difuzor. Ta hkrati prepreči odbijanje
svetlobe od predmetov, ki so od zaslona preveč oddaljeni.
16
Slika 11: Razpršena osvetlitev (preslikano iz [23]).
Nekaj IR svetlobe se odbije tudi od materiala, na katerega sliko projiciramo, zato je kontrast med
prsti in ozadjem izrazito manjši kot pri FTIR metodi. Ta metoda omogoča zaznavanje premika po
površini brez dodatnih plasti in, kar je še pomembnejše, omogoča zaznavanje predmetov,
položenih na zaslon. Zaznane predmete lahko nato identificiramo na podlagi oblike ali z uporabo
posebnih markerjev (ang.: fiducials), ki jih predhodno nanje nalepimo. To s pridom izkoriščata
Microsoftov Surface in Reactable.
Omeniti velja še različico te metode, ki za delovanje ne potrebuje dodatnega izvora IR svetlobe,
saj izkorišča kar IR svetlobo iz okolja. V tem primeru se ob prisotnosti prsta na sliki pojavi senca.
2.3.2.3 Razpršena površinska osvetlitev
Na prvi pogled (slika 12) zgleda metoda razpršene površinske osvetlitve (ang.: diffused surface
illumination) nekakšen križanec prejšnjih dveh metod. Diode so montirane kot pri FTIR napravi,
princip delovanja pa je kot pri zaslonih z razpršeno osvetlitvijo. Dejansko je razpršena
površinska osvetlitev nastala kot rešitev problema enakomerne osvetlitve pri metodi z razpršeno
osvetlitvijo. Trik se skriva v uporabljenem materialu (posebno pleksi steklo Endlighten), ki
vsebuje majhne delce, ki delujejo kot ogledala. IR svetloba se na njih odbije in tako enakomerno
osvetli površino.
17
Slika 12: Razpršena površinska osvetlitev (preslikano iz [23]).
2.3.2.4 Laserska svetlobna ravnina
IR laser sveti tik nad površino zaslona in ustvarja ravnino, debelo približno 1 mm. Ko s prstom
predremo to ravnino, povzročimo, da se svetloba od robov našega prsta odbije navzdol proti
kameri, kot prikazuje slika 13.
Slika 13: Laserska svetlobna ravnina (preslikano iz [23]).
Metoda laserske površinske osvetlitve (ang.: light laser plane) je poceni in razmeroma
enostavna za izdelavo. Potrebujemo 2 do 4 laserje, postavljene na robovih zaslona. Močnejši
kot so, svetlejši bodo obrisi naših prstov na sliki. Ker laser oddaja svetlobo točkovno,
potrebujemo še dodatne leče, ki to svetlobo usmerijo v ploskev.
18
Med delom z laserji je pomembno, da poskrbimo za primerno zaščito oči, saj lahko pri
neposrednem pogledu v laser utrpimo trajne poškodbe.
Največjo pomanjkljivost te metode prikazuje slika 14. Vidimo, da lahko pride do situacije, ko je
kateri izmed prstov v 'senci' in ga zato sploh ne zaznamo. Vendar bo v primeru, da MT zaslon
upravlja samo ena oseba, takih izpadov izredno malo.
Slika 14: Zaznavanje sredinskega prsta je onemogočeno zaradi pojava 'sence'.
2.3.2.5 Led svetlobna ravnina
Metoda LED svetlobne ravnine (ang.: LED light plane) deluje na povsem enakem principu kot
metoda z lasersko svetlobno ravnino, le da namesto laserjev na robove zaslona montiramo LED
diode, ki svetijo čez površino. Ker diode sevajo sferično, ta površina ni tako tanka kot pri uporabi
laserja. To predstavlja določen izziv pri sami konstrukciji naprave in zahteva veliko potrpljenja pri
kalibraciji. Metoda se uporablja večinoma v kombinaciji z LCD zasloni.
2.3.3 Primerjava metod
Vsaka izmed naštetih metod ima svoje prednosti in slabosti, katero bomo izbrali, pa je odvisno
od naših zahtev, potreb in zmožnosti. Tabela 1 na naslednji strani podaja pregled lastnosti
optičnih metod izdelave MT zaslona.
19
prednosti slabosti
FTIR
• ne potrebujemo zaprtega ohišja
• močan kontrast zaznanih
svetlečih predmetov
• možno posredno zaznavanje
pritiska
• lahko upravljamo s kemičnim
svinčnikom
• ne more zaznati
predmetov položenih na
zaslon
• težavna konstrukcija
zaradi cinjenja diod in
izdelave dodatne plasti
razpršena osvetlitev
• možno zaznavanje predmetov in
markerjev
• enostavna izdelava, ker ni potrebe
po cinjenju in dodatni plasti
• problemi z
enakomernostjo osvetlitve
• nižji kontrast svetlečih
predmetov in možnost
napačnega zaznavanja
• potrebno je zaprto ohišje
razpršena površinska osvetlitev
• možno zaznavanje predmetov in
markerjev
• zaznavanje pritiska.
• enakomerna osvetlitev
• dražji material
• nižji kontrast svetlečih
predmetov.
• omejitve glede velikosti
zaradi mehkega materiala
laserska ravnina, LED svetlobna ravnina
• ni potrebe po zaprtem ohišju
• enostavna izdelava.
• cenejša od ostalih metod
• ne more zaznati
predmetov
• ne more zaznati pritiska
• možen pojav senc v
zaznavanju
Tabela 1: Primerjava optičnih metod izdelave MT zaslonov.
20
21
3 Strojna oprema
Med pregledom področja MT tehnologij smo zbrali potrebne informacije za začetek izdelave MT
zaslona. Sledila je izbira metode izdelave, zbiranje sestavnih delov ter izdelava sama. V tem
poglavju bomo opisali kako je to potekalo, kakšni problemi so se ob tem pojavili in kako smo jih
rešili.
3.1 Izbira metode izdelave
Za izbiro metode izdelave je bilo potrebno najprej natančno opredeliti, kakšne so naše želje, kaj
od zaslona pričakujemo, za kaj ga bomo uporabljali in podobno. To lahko strnemo v naslednji
točki:
• Naš osnovni cilj je bil preizkusiti uporabniško izkušnjo, ki jo MT zaslon prinaša. Da to
dosežemo, ne potrebujemo ogromnega zaslona, zato smo se odločili za razmeroma
majhno izvedbo – 15 do 30 palcev. V prid tej odločitvi govorijo tudi manjši stroški za
material in lažji proces izdelave, saj so komponente dovolj majhne, da jih lahko obdeluje
en sam človek.
• Vedeli smo, da bomo zaslon uporabljali v navezi z aplikacijo Gaea+. To je pomenilo, da
od zaslona zahtevamo predvsem natančno in zanesljivo razpoznavanje gibanja prstov,
medtem ko razpoznavanje predmetov ni tako pomembno.
Zaradi slednjega smo se odločili za FTIR metodo, saj nudi največji kontrast svetlečih predmetov.
Kot bo opisano kasneje, smo v skladu s to metodo nabavili pleksi steklo ter naročili IR LED
diode. Med čakanjem nanje pa se je na forumih MT skupnosti Nuigroup [24] pojavila razprava o
novi metodi, ki smo jo v prejšnjem poglavju opisali pod imenom LED svetlobna ravnina. Razvil jo
je Nima Motamedi [25]. Omogoča uporabo navadnega LCD zaslona kot sredstva za
prikazovanje slike. To nam zagotavlja večjo resolucijo slike pri nižji ceni in olajša izdelavo, saj ni
potrebe po zamudnem montiranju projektorja in ogledal v ohišje zaslona. Tudi izdelava dodatne
silikonske plasti odpade. Metoda je še posebej primerna za MT zaslon manjših dimenzij. Ker je
bil v skladišču Xlab-a na razpolago 19 palčni monitor, smo se torej odločili za metodo LED
svetlobne ravnine.
22
3.2 Opis postopka izdelave
Princip delovanja metode je opisan v poglavju 2.3.2.4. Na tem mestu se bomo osredotočili na
potrebne korake pri izdelavi takšnega zaslona. To so: predelava LCD zaslona, montiranje LED
diod, predelava kamere in izdelava ohišja.
3.2.1 Predelava LCD monitorja
Če želimo predelati monitor, da bo deloval po naših željah, je najprej potrebno, da se seznanimo
s sestavo in tehnologijo izdelave LCD monitorjev [22].
3.2.1.1 Sestava in izdelava LCD monitorja
Vsaka slikovna točka (ang.: pixel) monitorja je sestavljena iz treh elektronsko krmiljenih filtrov
(rdeč, zelen in moder filter), ki modulirajo svetlobo iz ozadja. Na tak način slikovna točka zasveti
v želeni barvi. Načeloma je LCD plošča prosojna, ko skozi njo ne teče električni tok. Ker pa
imamo na prednji in zadnji strani plošče navzkrižne polarizirajoče filtre, ki ne prepuščajo vidne
svetlobe, dobi plošča svoj značilni črni videz. Ti filtri pa ne vplivajo na prepustnost IR svetlobe,
zato je zaslon zanjo še vedno popolnoma prosojen. Ta koncept je odločilen za uporabo LCD
zaslonov v optičnih MT sistemih.
Za LCD ploščo se nahajajo vir svetlobe in različni filtri, ki poskrbijo za enakomerno osvetljenost
slike. Monitorji manjši od 23 palcev so osvetljeni z dvema dolgima fluorescentnima žarnicama
(slika 21), postavljenima vzdolž daljših stranic monitorja. Med njima leži plošča iz pleksi stekla, ki
ima na zadnji strani vzorec satovja. Zaradi popolnega odboja svetloba iz žarnic potuje po steklu,
dokler se na vzorcu ne razprši. Večji monitorji kot vir svetlobe uporabljajo mrežo iz
fluorescentnih žarnic.
Zaradi polarizirajočih filtrov in načina kako LCD plošča filtrira svetlobo je sam vir svetlobe
premalo, da bi dosegli kvalitetno sliko. Predvsem se tu pojavijo problemi z vidnim kotom
monitorja. Za izboljšanje svetlobnih lastnosti zaslona LCD proizvajalci vključujejo več slojev
različnih filtrov, ki vplivajo na modulacijo svetlobe iz ozadja na različne načine. Najpogostejši filtri
so:
• Difuzor: ta filter razprši svetlobo iz ozadja v vse smeri.
• Fresnelova leča: filter je namenjen je razpršitvi svetlobe v 180°.
• Bel odbojnik (slika 18): to je bel neprozoren filter. Postavljen je za pleksi steklo in odbija
svetlobo, usmerjeno stran od filtrov.
23
Izmed naštetih filtrov je edini, ki ne prepušča IR svetlobe, beli odbojnik.
3.2.1.2 Predelava LCD monitorja za uporabo v MT zaslonu
Slika 15: Monitor Samsung 193P.
Za izdelavo MT zaslona smo uporabili 19 palčni monitor Samsung 193P (slika 15). Odlikujeta ga
kakovost slike in privlačen videz. Prav slednji je botroval zahtevnemu odpiranju ohišja, saj na
prvi pogled skorajda nima vijakov. Delno razstavljen zaslon prikazuje slika 16. Pri razstavljanju
moramo biti pazljivi, da ne poškodujemo samega zaslona, podatkovnih kablov (slika 17) ali
elektronike. Brez poškodb ohišja pa verjetno ne gre, vsaj v našem primeru ni šlo.
Slika 16: Samsung 193P razstavljen na zaslon, ohišje
in stojalo.
Slika 17: Napajalni kabli, ki smo jih podaljšali (zelena)
in podatkovni kabli, ki jih nismo podaljšali (rdeča).
24
Slika 18: Zadnja stran monitorja in beli odbojnik.
Slika 19: Filtri za boljšo sliko.
Slika 20: Ker je za delovanje filtra pomembno kako je
obrnjen, so zavihki (črn krog) narejeni tako, da je možen samo pravilen način pritrditve.
Slika 21: Žarnice za osvetlitev zaslona.
Slika 19 prikazuje plasti filtrov v monitorju. Odstranili smo beli odbojnik in preverili, kakšna je IR
prepustnost zaslona skupaj s preostalimi filtri. To smo storili tako, da smo med IR diodo in
predelano spletno kamero (zaznava samo IR svetlobo, glej poglavje 3.2.2) postavili zaslon.
Slabše zaznavanje IR svetlobe zaradi zaslona in filtrov je bilo opazno, a še vedno zanemarljivo,
zato smo se odločili, da ohranimo vse filtre. S tem smo dosegli minimalen upad kvalitete slike.
Ker smo zaslon postavili v drugo ohišje, smo morali še podaljšati kable napajanja, osvetlitve in
kable gumba za vklop. Zaradi njihove številčnosti podatkovnih kablov nismo podaljševali.
Njihovo dolžino smo upoštevali že pri načrtovanju ohišja.
3.2.2 Kamera
Zaradi nizke cene in preverjenega delovanja smo se odločili za kamero Sony PS3 Eye (slika 22).
Ponuja nam zajemanje v ločljivosti 640 slikovnih točk x 480 slikovnih točk, kar pri 19 palčnem
zaslonu (38,61 cm x 28,96 cm) predstavlja 0,6 mm razmika med dvema točkama zaznavanja
oziroma 1,7 slikovnih točk/mm. To velja samo v primeru, ko je kamera postavljena na takšno
25
razdaljo od zaslona, da ta prekriva celotno vidno polje kamere. Pri širokokotni nastavitvi kamere
(FOV = 75°) in 19 palčnem zaslonu znaša ta razdalja 31,44 cm. Izračunamo jo po enačbi 3, kjer
so r iskana razdalja, d diagonala zaslona in FOV kot vidnega polja.
r d2
tanFOV2 (3)
V poglavju 2.3.1 smo kot zadovoljivo ločljivost zaznavanja omenili zaznavanje točk z razmakom
5 mm. S PS3 Eye bi pri v ločljivosti izdelali MT zaslon velikosti 320 cm x 240 cm, kamera pa bi
morala biti postavljena na razdalji 260,65 cm od zaslona.
Slika 22: PS3 Eye kamera
Sony PS3 Eye
Vidno polje (FOV): 75° ali 56°
Vodilo: USB 2.0
Načini zajemanja:
• 320 slikovnih točk x 240 slikovnih točk
pri 120 posnetkov/s
• 640 slikovnih točk x 480 slikovnih točk
pri 60 posnetkov/s
Preden smo dobili PS3 Eye, smo za testiranje diod uporabljali spletno kamero proizvajalca
Canyon (slika 23). Kot IR prepustni filter smo ji čez objektiv nalepili magnetni trak, narejen iz
računalniške diskete. Druga opcija za poceni filter je uporaba razvitega barvnega fotografskega
filma. Kamero smo preizkusili tudi za zaznavanje svetlečih predmetov, vendar se po
pričakovanjih zaradi nizke hitrosti (7 posnetkov/s) ni obnesla.
Slika 23: Testiranje diod s spletno kamero Canyon z IR filtrom iz magnetnega traku.
26
3.2.2.1 IR Filter
Sony PS3 Eye smo odstranili originalni filter, ki blokira IR svetlobo in ga zamenjali s pasovno
prepustnim filtrom, ki prepušča svetlobo iste valovne dolžine (880 nm), kot jo oddajajo
uporabljene diode. Prepustnost filtra v odvisnosti od valovne dolžine prikazuje slika 24, vpliv ki
ga ima na zajeto sliko pa slika 25. V primerjavi z negativom ali magnetnim trakom, ki prepuščata
širok spekter infrardeče svetlobe, uporaba takega filtra zmanjša svetlobne motnje iz okolja, ki se
pojavijo zaradi naravne ali umetne osvetlitve prisotne v prostoru.
Slika 24: Prepustnost IR filtra v odvisnosti od valovne dolžine svetlobe (preslikano iz [26]).
Slika 25: Pogled na diode skozi filter z valovno dolžino 880 nm (levo) in zajeti svetleči predmeti (desno).
3.2.3 IR osvetlitev
Uporabljena metoda kot vir IR svetlobe predvideva uporabo svetilnih ali LED diod (ang.: light
emitting diode). To so polprevodniški elementi, ki proizvajajo hladno svetlobo, kjer nastanejo
fotoni vidne ali infrardeče svetlobe ob rekombinaciji elektronov v pn spoju. Za razliko od žarnice
s kovinsko nitko, ki deluje na principu segrevanja Wolframove nitke, pri LED diodi ni segret
27
noben sestavni del za proizvodnjo svetlobe. Posledično imajo LED diode boljši izkoristek (do
95 %), daljšo življenjsko dobo ter so manj občutljive na mehanske vplive, kot so vibracije. Imajo
pa še eno pomembno lastnost in sicer sposobnost proizvajanja svetlobe izbrane valovne
dolžine. Praviloma LED diode niso zgrajene iz silicija, temveč iz drugih materialov. Uporabljeni
material določa kolensko napetost diode, od katere je neposredno odvisna valovna dolžina
oddane svetlobe [27].
3.2.3.1 Izbira diod
Na začetku poglavja smo omenili, da je bila za izdelavo zaslona prvotno izbrana FTIR metoda.
Kot je opisano v poglavju 2.3.2.1, predvideva ta metoda uporabo diod s čim širšim kotom
sevanja in visoko sevalno močjo. Na podlagi tega smo izbrali v MT skupnosti izredno priljubljene
diode Osram SFH 485.
Prevodna
napetost UF
Enosmerni
prevodni toki IF
Valovna
dolžina Λ
Trajna izgubna
moč Ptot Sevalna moč
Polovični
sevalni kot φ
1,5 (< 1,8) V 100 mA 880 nm 200 mW 160 mW/sr ± 20°
Tabela 2: Lastnosti IR diod Osram SFH 485.
Tabela 2 podaja njihove pomembnejše lastnosti, povzete po tehnični dokumentaciji [28]. Sevalni
kot (40°) je sicer na spodnji meji priporočenega [23], vendar se diode v praksi še vedno izredno
dobro obnesejo, čemur botruje izjemna sevalna moč 160 mW/sr (minimalna priporočena je 80
mW/sr). Testiraje FTIR efekta prikazuje slika 26. Kljub slabim svetlobnim pogojem (zasilni filter
na kameri, odprta škatla, ki prepušča dnevno svetlobo … ) je zaznavanje prstov kakovostno.
Slika 26: Testiranje FTIR efekta
Menjava metode izdelave MT zaslona je pripeljala do problemov ravno zaradi izbranih diod. Pri
obeh metodah je želena čim večja sevalna moč, zahtevi glede sevalnega kota pa sta si ravno v
28
nasprotju. Želimo si namreč čim tanjše svetlobne ploskve nad površino zaslona, za kar
potrebujemo diode z ozkim sevalnim kotom. V nasprotnem primeru, ko je IR svetloba razpršena
v širokem območju nad zaslonom, pride do lažnih svetlečih predmetov, še preden se zaslona
sploh dotaknemo. Problem smo rešili tako, da smo svetlobo 'usmerili' skozi tanke 1 mm debele
reže. Sprva smo jih izdelali iz dveh aluminijastih profilov. Med profila in zaslon smo na treh
mestih postavili 1 mm debele distančnike. Ker sta se profila pod lastno težo ukrivila, reža ni bila
enakomerna, kar se je poznalo na slabem zaznavanju svetlečih predmetov v sredini zaslona. Z
uporabo medeninastih profilov je bila težava odpravljena.
Slika 27: 1 mm debela reža, ki IR svetlobo usmeri v ravnino.
3.2.3.2 Montaža diod
Ko prst postavimo na zaslon, se IR svetloba odbije od robov prsta skozi zaslon v kamero. Če
LED diode postavimo samo na eno stranico zaslona, na primer levo, bo prst osvetljen samo z
leve. Posledično bo zaznana točka (svetleči predmet) v primerjavi s prstom pomaknjena
malenkost v levo, kar predstavlja napako delovanja MT zaslona. Razmere izboljšamo tako, da
postavimo diode na vse štiri stranice LCD zaslona. Ker so prsti nesimetrični in jih na zaslon
postavljamo pod določenim kotom, se še vedno pojavi majhen premik med centrom dotika in
zaznano točko. Popravimo ga z natančno kalibracijo zaslona. Osvetlitev z vseh štirih strani
skoraj popolnoma izniči tudi drugo pomanjkljivost te metode – pojavljanje senc (slika 14).
Situacije, ko je prst zasenčen z vseh štirih strani, so izredno redke in odvisne od gest, ki jih
aplikacija implementira. Geste v aplikaciji Gaea+ zahtevajo uporabo največ treh prstov, zato do
pojava senc ne pride.
Sprva smo diode namestili v lesene letvice 4,5 cm oddaljene od zaslona. Ker mora biti zaslon
osvetljen v vsaki točki, smo maksimalno dopustno razdaljo (enačba 4) med diodami ocenili na
podlagi razmer, ki jih prikazuje slika 28. Pri 19 palčnem zaslonu to pomeni 9 diod na krajši in 12
29
diod na daljši stranici. Končno število uporabljenih diod smo nato določili z eksperimentiranjem
okrog teh vrednosti. Izkazalo se je, da lahko uporabimo manj diod.
X 2 · 4,5 · tan 20° 3,25 (4)
x
y
4,5 cm
φ
Slika 28: Izračun razdalje med diodami.
Za stabilno delovanje potrebujejo diode tokovno napajanje [29], kar dosežemo z zaporedno
vezavo diode in upora. Velikost upora določimo na podlagi enačbe 5, kjer je UN napajalna
napetost, UF prevodna napetost diode, IF enosmerni prevodni tok diode in n število diod vezanih
v serijo. Ker ne izdelujejo uporov poljubnih upornosti, izberemo tistega, ki je izračunani vrednosti
najbolj blizu.
R UN – n · UFIF (5)
Med eksperimentiranjem smo kot napetostni vir uporabili prirejen računalniški ATX napajalnik
(slika 29) [30]. Zeleno žico, preko katere matična plošča napajalnik vklaplja in izklaplja, smo
vezali na ozemljitev. S tem smo omogočili vklapljanje in izklapljanje napajalnika preko stikala na
hrbtni strani. Napajalnik ima priključke za ± 5 V, ± 12 V ter ozemljitev.
30
Slika 29: V 'laboratorijski' vir napetosti predelan računalniški ATX napajalnik.
Najprej smo preizkusili vezalno shemo, ki jo prikazuje slika 30. Vsako vejo s po osmimi diodami
smo postavili na svojo stranico monitorja. V shemi je sicer manj diod kot smo ocenili, da bo
potrebno, vendar se je v praksi takšna osvetlitev izkazala za izjemno kakovostno. Zaznavanje
prstov je bilo na vseh predelih zaslona zadovoljivo in konsistentno (odvisnost velikosti svetlečih
predmetov od položaja na zaslonu je bila zanemarljiva).
Slika 30: Vezalna shema diod (U = 12 V, R = 1 Ω).
Pri povečanju števila diod v seriji na 16 ni bilo zaznati bistvenih sprememb v kakovosti
zaznavanja svetlečih predmetov. Nasprotno so se pri petih diodah v seriji pojavila območja v
kotih zaslona, kjer ni bilo zaznavanja. Izkazalo se je, da ponuja osem diod v seriji dobro
razmerje med kakovostjo osvetlitve in številom porabljenih diod. Zaradi uporov z upornostjo 1 Ω
je pri napajanju z napetostjo 12 V to tudi vezava z najmanjšo energijsko porabo (1,21 W).
31
Slika 31: IR svetilna dioda Osram SFH 485.
Po izbiri vezalne sheme je sledila dokončna montaža. Kot zahteva dokumentacija, smo diode
spajkali pri temperaturi 250 °C in priključne spoje obdali s termokrčljivo cevjo. V nasprotju z
večino svetlinih diod ima dioda Osram SFH 485 (slika 31) anodo označeno s krajšim
priključkom.
3.2.3.3 Izdelava ohišja in končno montiranje
Izdelavo ohišja smo prepustili mizarju, skica in slike prototipa so v dodatku A.
32
33
4 Programska oprema
Programiranje MT aplikacij poteka na treh nivojih: razpoznavanje in sledenje objektom (prstom)
na zaslonu, razpoznavanje gest ter pravilna interpretacija gest v kontekstu aplikacije. Slika 32
shematično ponazarja zgradbo MT aplikacije.
Slika 32: Shematski prikaz zgradbe MT aplikacije.
Naloge lahko obravnavamo kot module, ločeno enega od drugega. Prva dva, sledenje objektom
in razpoznavanje gest, sta od končne uporabe v aplikaciji neodvisna. Ko enkrat izdelamo rešitvi
zanju, ju lahko uporabimo v različnih aplikacijah. Na izbiro pa imamo tudi že obstoječe prosto
dostopne rešitve, ki jih lahko uporabimo ali nadgradimo.
V nadaljevanju si bomo podrobneje pogledali vsak posamezni modul in opisali kako smo ga
realizirali. Module bomo poimenovali sledilnik, razpoznavalnik gest in aplikacija. Ogledali si
bomo tudi kako poteka komunikacija med njimi.
4.1 Zaznavanje in sledenje objektom
Sledenje objektom je eden temeljnih elementov področja strojnega vida. Naloga zahteva, da
smo sposobni zanesljivo razpoznati prisotnost istega predmeta na zaporedju slik. V splošnem je
to težavna naloga, saj moramo predmet najprej zaznati (pogosto v gruči predmetov, zastrt ali v
34
različnih svetlobnih pogojih) na vseh slikah in nato podatke s slik med seboj primerjati, da
zaznani predmet identificiramo.
Razvitih je bilo veliko pristopov k reševanju problema sledenja. Večina njih slike najprej obdela z
adaptivnim algoritmom za odstranjevanje ozadja. Na ta način se znebimo statičnih predmetov na
sliki, ki bi pri sledenju gibajočih predmetov predstavljali motnjo. Pogosto orodje, ki se danes
uporablja na področju računalniškega vida za sledenje predmetov je Kalmanov filter. S stališča
sledenja pomaga oceniti nov položaj gibajočega se predmeta in negotovost njegovega položaja.
Napove kje iskati predmet v naslednji sliki in kolikšno naj bo področje iskanja [31].
4.1.1 Poenostavitve zaznavanja in sledenja predmetov
Za uporabniško izkušnjo, ki jo nudi MT aplikacija, je razpoznavanje in sledenje predmetov
ključnega pomena, saj neposredno vpliva na natančnost delovanja celotnega sistema. V primeru
slabega delovanja sledilnika lahko pride do zamika med tem kar na zaslonu vidimo in tem česar
se dotikamo (npr. ob dotiku ikone se sproži ukaz, ki je sicer povezan z neko drugo ikono).
Strojna oprema, uporabljena v optičnih MT sistemih nalogo razpoznavanja in sledenja
predmetom izredno olajša. Razmere se poenostavijo do te mere, da postane tudi
najenostavnejši Kalmanov filter odveč in izkaže se, da večino procesorske moči sledilnik porabi
za izdelavo in vzdrževanje modela ozadja [23]. Ker pa že uporaba IR osvetlitve in IR prepustni
filter na kameri izloči večino ozadja, postane tudi adaptivni filter ozadja odveč. Dovolj je, da
zajamemo eno statično sliko zaslona, ko na njem ni predmetov in to sliko uporabljamo kot model
ozadja. Slike nato obdelamo tako, da najprej od njih odštejemo ozadje in nato z upragovljanjem
dobimo bele predmete (prste ali markerje) na črnem ozadju.
Pri zajemanju s hitrostjo 30 posnetkov/s je časovni interval med dvema zaporednima slikama
približno 33 ms. Vemo, da bo predmet (prst) v tem času prepotoval razmeroma majhno razdaljo.
Na podlagi tega dejstva se lahko izognemo modeliranju dinamike objektov in za identifikacijo
istega objekta na dveh zaporednih slikah uporabimo pravilo k najbližjih sosedov.
35
Slika 33: Prejšnje stanje (levo), trenutno stanje (na sredini) in določitev prehoda med stanji (desno) (preslikano iz [32]).
Slika 33 prikazuje sledenje prstom med dvema zaporednima slikama. Ker je v trenutnem stanju
več svetlečih predmetov kot v prejšnjem, sledilnik to interpretira kot pojav novega svetlečega
predmeta. Nato za vse možne prehode iz množice p1, p2 v množico c1, c2, c3, izračuna pri
prehodu prepotovane razdalje. Svetleči predmeti so razpoznani tako, kot predvideva prehod, ki
zahteva najmanjšo razdaljo (slika 33 desno).
4.1.2 Sledilnik Community core vision (CCV)
Za sledilnik smo se odločili uporabiti eno izmed prosto dostopnih rešitev, ki jo ponuja skupnost
NUI Group (ang.: natural user interface ali naravni uporabniški vmesnik). Sledilnik Community
Core Vision (CCV) [33], bivši tBeta, je sledilnik narejen posebej za potrebe MT sistemov. Deluje
na različnih platformah – Windows, Linux, Mac. Tok video podatkov pretvori v sledilne podatke
(npr. koordinate in velikost svetlečih predmetov) in dogodke (ang.: events, npr. prst na mizi,
premik prsta ali odstranitev prsta z zaslona) s katerimi gradimo MT aplikacije. CCV zna upravljati
z različnimi spletnimi kamerami, lahko se poveže po protokolih TUIO ali OSC in podpira vse
metode izdelave optičnih MT zaslonov.
36
Slika 34: Uporabniški vmesnik sledilnika Community core vision
Slika 34 prikazuje uporabniški vmesnik sledilnika CCV, iz katere je razvidno, kaj vse nam ta
omogoča. Največ prostora zavzamejo zajeta slika (ang.: source image) in obdelana slika (ang.:
tracked image). Preslikavo med njima določamo z drsniki in gumbi, ki določajo naslednje
funkcije:
• Nivo upragovljanja (ang.: image threshold): slikovni elementi z nižjo vrednostjo od praga
bodo odstranjeni, tisti z višjo pa gredo naprej v obravnavo.
• Odstranitev ozadja (ang.: remove background): shrani trenutno zajeto sliko in jo uporabi
pri vseh naslednjih kot model ozadja.
• Dinamična odstranitev ozadja (ang.: dynamic subtract): uporaba dinamičnega modela
ozadja - za MT sisteme, ki delujejo v izjemno spreminjajočih se svetlobnih pogojih.
• Glajenje (ang.: smooth): zgladi sliko in iz nje odstrani šum.
• Visokoprepustni filter (ang.: highpass blur/noise): odstrani medle dele slike in ohrani
ostre (highpass blur). Po tej operaciji sledi ponovno odstranjevanje šuma (highpass
noise). Oboje lahko reguliramo z drsnikom.
• Ojačenje (ang.: amplify): Ojači šibke slikovne elemente.
Vsi na
izdelav
•
•
•
•
•
CCV p
hitrost
aplika
jih mo
4.2
ašteti filtri po
ve MT sistem
Ko na zasl
Izključimo
Vklopimo g
Če so svet
Nastavimo
poleg naštet
ti in ločljivo
cijam in kali
ramo zapore
Komunika
onujajo možn
ma. Pri meto
lonu ni objek
visokoprepu
glajenje in ga
tleči predme
o nivo uprago
tega omogo
osti zajeman
bracijo napr
edno dotakn
acija med
nost vklopa
odi LED svet
ktov, zajame
ustni filter in
a nastavimo
eti šibki, vklo
ovljanja, tak
oča še navp
nja (preko X
rave. Slednja
niti.
Slika 35
sledilniko
Slika 36: Proto
in izklopa, k
tlobne ravni
emo sliko oz
ojačenje.
o na primern
pimo ojačen
o da na obd
pično in vodo
XML datote
a poteka tak
5: Kalibracija s
om in aplik
okol TUIO (pre
katere upora
ne je postop
adja.
o vrednost.
nje.
elani sliki ni
oravno pres
eke), pošilja
ko, da nam p
sledilnika.
kacijo – pr
eslikano iz [34
abimo, pa je
pek sledeč:
lažnih svetl
slikavo zajet
anje sledilni
program izriš
rotokol TU
4]).
odvisno od
ečih predme
e slike, nas
h podatkov
še mrežo to
UIO
37
metode
etov.
tavljanje
v drugim
čk, ki se
38
Protokol TUIO se je uveljavil kot standard na področju prenosa podatkov med sledilnikom in
razpoznavalnikom gest ali MT aplikacijo. Razvit je bil posebej za uporabo na MT področju in
omogoča zaznavanje in opis prstov in predmetov. Strežnik in odjemalec, ki temeljita na tem
protokolu sta že implementirana v različnih jezikih (Java, C#, C++, Python …) Delovanje
protokola povzemajo naslednje točke [34]:
• Lastnosti zaznanih objektov, prikazuje jih tabela 3, se pošiljajo ob vsaki spremembi
stanja s pomočjo sporočila 'set'.
• Po odstranitvi objekta strežnik pošlje sporočilo 'alive', ki vsebuje seznam vseh trenutno
prisotnih objektov.
• Na podlagi sporočil 'set' in 'alive' odjemalec dojame odstranitev ali dodajanje objekta.
• Sporočilo 'fseq' združi edinstveno id številko posnetka z naborom sporočil 'set' in 'alive'.
• Da bi dosegli manjše zakasnitve v komunikaciji, protokol uporablja UDP transport.
s ID seje, ID trenutnega predmeta, int32
i ID razreda, ID markerja, int32
x, y, z pozicija, float32, razpon 0 -1
a, b, c kot, float32, razpon 0 – 2 π
X, Y, Z vektor premika (premik, hitrost in smer), float32
A, B, C rotacijski vektor (rotacija, hitrost in smer),
float32
m pospešek, float32
r rotacijski pospešek, float32
P prost parameter
Tabela 3: Podatki, ki jih predvideva protokol TUIO 1.0 za opis zaznanih objektov.
4.3 Razpoznavanje gest
Osnovni cilj raziskav na področju razpoznavanja gest je izdelava sistema, ki bi razumel
specifične človeške geste in iz njih razbral določeno informacijo ali ukaz. V splošnem so lahko te
geste poljubni gibi rok v prostoru, pri MT aplikacijah pa smo omejeni na premike prstov ali dlani v
dveh dimenzijah, kar poenostavi izgradnjo razpoznavalnika. V primeru, da MT zaslon omogoča
39
zaznavanje predmetov, lahko geste tvorimo tudi z njimi. Poglejmo si, kaj vse moramo imeti v
mislih ob izgradnji razpoznavalnika gest za MT sistem:
• Progresivne in neprogresivne geste: Primer neprogresivne geste je risanje kroga po
zaslonu. Ko razpoznavalnik prepozna gesto ‘risanje kroga’, aplikaciji to sporoči in ta
ustrezno reagira. Približevanje dveh prstov na zaslonu ponavadi pomeni pomanjšanje
(npr.: slike) in je primer progresivne geste, saj je tu pomembno, da aplikacija zvezno
dobiva podatek o faktorju pomanjšanja. Razlika je podobna kot med klikom in potegom
(ang.: drag) z miško. Ob uspešnem razpoznanju progresivne geste se prične faza
interpretiranja geste, ki se konča, ko se konča gesta. Pri neprogresivnih gestah take faze
ni, saj se gesta interpretira takoj po njenem razpoznanju.
• Enostavne in sestavljene geste: Enostavno gesto tvorimo z enim prstom ali
predmetom. Primer take geste je premik prsta po zaslonu, kar lahko enačimo s potegom
miške. in je enostavna gesta. Ker MT tehnologija omogoča zaznavanje več hkratnih
enostavnih gest, lahko več teh, ločenih v prostoru in/ali času, združimo v sestavljeno
gesto.
• Statično in dinamično modeliranje gest: Dinamično modeliranje gest pomeni, da pri
razpoznavanju gest upoštevamo tudi njeno časovno komponento (hitrost in pospešek
premikanja). To nam omogoča širši nabor gest in pestrejšo uporabniško izkušnjo. V
predvajalniku glasbe lahko enakomerno premikanje prsta navpično navzdol pomeni
postopno nižanje glasnosti, ista gesta izvedena z določenim pospeškom pa pomeni ukaz
za popolno utišanje predvajalnika.
Pristope k razpoznavanju gest lahko razdelimo v dve skupini [35]: na osnovi pravil in na osnovi
strojnega učenja. Pri prvi geste razpoznamo na podlagi v naprej predpisanih pravil, pri drugi pa
se razpoznavalnik na podlogi učnega vzorca nauči pravilnega razpoznavanja gest (npr. prikriti
Markovovi modeli, umetna nevronska omrežja)
4.3.1 Gaea+
Razvoj razpoznavalnika je bil tesno povezan z aplikacijo, ki naj bi ga uporabljala, zato jo bomo
na kratko predstavili. Gaea+[4] je orodje za vizualizacijo v tridimenzionalnem prostoru, s katerim
na enostaven način prikazujemo poljubne uporabne informacije v kontekstu resničnega
geografskega prostora, tudi v realnem času. Orodje odlikujeta izjemno preprosta uporaba in
možnost prilagoditev in predelav glede na potrebe in želje posameznih skupin uporabnikov.
Omogoča predstavitev zajetnih količin poljubnih geografsko označenih podatkov v obliki slojev,
40
ki nadgrajujejo osnovno vizualizacijo površja zemlje z zbirko vsebinsko sorodnih podatkov.
Primeri slojev so ceste, podatki o vremenu, prostorski akti, podatki iz katastra, različne
napeljave, turistične informacije, slovenska kulturna dediščina, državne meje, OpenStreetMap
[36], GPS podatki ...
Slika 37: 3D vizalizacijsko orodje Gaea+.
Programska oprema Gaea+ je zgrajena na ogrodju NASA World Wind Java SDK 0.6 [37], ki v
osnovi ponuja boljšo navigacijo kot konkurenčni Google Earth [38]. Najpomembnejši prednosti
sta zagon neposredno iz spletnih strani, brez predhodne namestitve programske opreme, ter
možnost vgradnje v poljubno spletno mesto (Gaea+ za zagon uporablja Java Web Start). Na
območju Slovenije prikazuje natančnejše ortofoto (letalske) posnetke površja, uporablja
natančnejši višinski model in ponuja več vsebinskih podatkov.
4.3.2 G2RE – Gaea+ gesture recognition engine
Gaea+ gesture recognition engine (G2RE) je razpoznavalnik, ki ga lahko uporabimo v poljubnem
programu, vendar je prvotno namenjen uporabi v orodju Gaea+. Večina ukazov v tej aplikaciji je
namenjena navigaciji v prostoru, na primer:
• klik na točko na zemljevidu postavi središče zemljevida v to točko,
• poteg z miško služi premikanju po zemljevidu,
• tipka Shift in poteg z miško spreminja naklon in rotacijo pogleda,
• …
Dostopanje do teh ukazov preko gest je bil osnovni cilj razvoja razpoznavalnika in vodilo pri
določanju nabora gest, ki jih G2RE razpoznava. Ta nabor neposredno vpliva na uporabniško
izkušnjo MT aplikacije. Geste morajo biti za uporabnika samoumevne, njihova izvedba
enostavna in neutrudljiva. Poleg tega moramo pri določanju nabora gest paziti, da izberemo
41
geste, ki se med seboj čim bolj razlikujejo. S tem zmanjšamo možnost napačnega
razpoznavanja. Nabor ukazov in pripadajočih gest je sledeč:
• Klik: prst za kratek čas (manj kot 0,1 s) položimo na zaslon.
• Premik: z vlečenjem prsta po zaslonu premikamo zemljevid.
• Vodoravni in navpični premik: če v začetni fazi premikanja prsta napravimo izrazito
vodoraven gib, se bo zemljevid premikal zgolj v vodoravni smeri. Vsi nadaljnji navpični
gibi prsta bodo pri premikanju zemljevida zanemarjeni. Podobno velja za navpični
premik. To se v aplikaciji izvede kot premikanje pri konstantni zemljepisni širini ali dolžini.
• Rotacija pogleda in spreminjanje naklona pogleda: gesta posnema vrtenje palice
okrog fiksne točke. En prst držimo na zaslonu medtem, ko drug prst premikamo. Smer
premikanja slednjega določa ali bo gesta spreminjala rotacijo pogleda (vodoravno
premikanje) ali naklon (navpično premikanje). Če prst premikamo v obe smeri, bomo
hkrati spreminjali rotacijo in naklon pogleda. Sprememba se odvija v koordinatnem
sistemu, ki ima v izhodišču središče zemlje.
• Povečevanje in pomanjševanje: sočasno premikanje dveh prstov po zaslonu povzroči
povečevanje ali pomanjšanje zemljevida odvisno od tega, ali se razdalja med njima veča
ali manjša.
• Povečanje na določeno območje: dva mirujoča prsta na zaslonu določata diagonalo
pravokotnika, ki ga želimo povečati čez cel zaslon.
• Rotacija in sprememba naklona očesa: gesto izvajamo podobno kot spreminjanje
naklona in orientacije pogleda, le da moramo sedaj na zaslon položiti dva mirujoča prsta,
medtem ko tretjega premikamo. Sprememba se odvija v koordinatnem sistemu, ki ima v
izhodišču oko (točko, iz katere je usmerjen trenutni pogled).
Razpoznavalnik gest lahko obravnavamo kot sistem, ki vhodne podatke preslika v geste. Določiti
moramo obliko vhodnih podatkov, nabor možnih gest na izhodu ter preslikavo med njima. Obliko
vhodnih podatkov določa uporabljen protokol za komunikacijo med sledilnikom in
razpoznavalnikom. Tabela 3 vsebuje podatke, ki jih za zaznane predmete predvideva protokol
TUIO 1.0. Preslikavo med njimi in gestami smo razbili na dva dela: prepoznavanje enostavnih
gest in združevanje enostavnih gest v končne geste. Oboje poteka na osnovi pravil.
Prvo razpoznavanje vsakemu zaznanemu predmetu (prstu) doda oznako osnovne geste, ki jo ta
izvaja. Te osnovne geste, in pravila s katerimi jih razpoznamo, so:
42
• Klik: Če zaznani predmet – prst v kratkem času (< 0.1 s) izgine z zaslona, ga označimo
kot klik.
• Nepremična točka: Če se prst na zaslonu ne premakne izven nekega majhnega
območja, ga označimo kot nepremično točko. Kako majhno mora biti to območje,
določimo s poskušanjem.
• Prost premik: Geste, ki niso označene ne kot klik ne kot nepremična točka, označimo
kot prost premik.
• Premik v vodoravni ali navpični smeri: Po desetih spremembah lege, gestam
označenim kot prost premik, zmerimo kot, ki ga oklepata začetna in končna točka. Kot na
intervalu - 5° < α < 5° ali 175° < α < 185° določa vodoravni premik, 95° < α < 105° ali
265° < α < 275° pa navpični premik.
Na drugem nivoju razpoznavanja lahko te enostavne geste obravnavamo kot gradnike, iz katerih
sestavljamo kompleksnejše geste. Lahko rečemo, da služi prvo razpoznavanje preslikavi iz
prostora zaznanih predmetov opisanih po protokolu TUIO v prostor enostavnih gest. Med obema
razpoznavanjema se začetna informacija o zaznanih predmetih ohranja v pripadajoči podatkovni
strukturi. To je pomembno za kasnejšo interpretacijo končnih gest v sami aplikaciji.
Preslikavo med razpoznanimi enostavnimi gestami in končnimi razpoznanimi gestami G2RE
določajo pravila, ki sestavljajo odločitveno drevo (slika 38). Kot primer navedimo pravilo za
določanje geste, ki služi spreminjanju rotacije pogleda: če je med osnovnimi gestami prisotna
'nepremična točka' in če je prisoten 'vodoravni premik', razpoznaj končno gesto 'spreminjanje
rotacije pogleda'.
43
Sprememba rotacije očesa
Sprememba rotacije in naklona očesa
Povečaj ali pomanjšaj
KlikProst
premik
Navpičenpremik
Vodoravenpremik
Dve nepremični
točki?
Ena nepremična
točka?
Kaj še?
Dva prosta premika?
Povečanje na določeno območje
Kaj še?
Sprememba naklona očesa
NAVPIČNIPREMIK
NE
DA
DA
DA
NE
VODORAVNI PREMIK
NIČPROSTPREMIK
Sprememba rotacije pogleda
Sprememba rotacije in naklona pogleda
Kaj še?
Sprememba naklona pogleda
NAVPIČNIPREMIK
VODORAVNI PREMIK
PROSTPREMIK
NE
PROSTPREMIK
VODORAVNI PREMIK
NAVPIČNIPREMIK
KLIK
Slika 38: Odločitveno drevo razpoznavalnika.
Postopek odločanja predpostavlja, da uporabnik v vsakem trenutku izvaja samo tiste enostavne
geste, ki so nujno potrebne, da doseže cilj (npr. spremembo rotacije pogleda). To pomeni, da
razpoznavalnik pregledovanje, kateri končni gesti ustreza dan nabor enostavnih gest, začne pri
najkompleksnejših gestah. Koda odločanja je priložena v dodatku A.
44
Odločanje se ponovi, ko pridejo novi podatki na vhod razpoznavalnika. S tem dosežemo sprotno
razpoznavanje gest pri frekvenci, ki jo v grobem določa hitrost zajemanja kamere. Po vsakem
razpoznavanju Gaea+ pregleda množico končnih gest in se nanje odzove. Tak način delovanja
omogoča razpoznavalniku in aplikaciji pravilno obravnavo progresivnih gest.
4.4 Implementacija MT gest v aplikaciji Gaea+
Razpoznavalnik gest implementira vmesnik dodatka (ang.: plug-in) za aplikacijo Gaea+. Ker je
slednja spisana v programskem jeziku Java, je tudi razpoznavalnik v tem jeziku. Njegovo
zgradbo prikazuje slika 39.
RazredListener
Razred GestureAnalizer
Razred GestureRecognizer
Razred ActionMan
Razred TUIOCursorList
Razred SimpleGestureList
Razred GestureList
Slika 39: Shematski prikaz razredov razpoznavalnika G2RE.
Razred Listener implementira vmesnik odjemalca, kot ga določa protokol TUIO. Služi
sprejemanju podatkov, ki jih pošilja sledilnik. Shrani jih v seznam (razreda TUIOCursorList)
razreda GestureRecognizer. Vsakič, ko sledilnik pošlje nove podatke, Listener kliče metodo
performRecognition razreda GestureRecognizer. Naloga slednjega je, da opravi razpoznavanje
osnovnih gest. V zanki preleti vse predmete na zaslonu in jim določi pripadajočo osnovno gesto.
To stori s pomočjo metod, ki preverjajo v prejšnjem poglavju našteta pravila za razpoznavanje
osnovnih gest. Geste shrani v seznam SimpleGestureList in za tem kliče metodo analize razreda
GestureAnalizer. V tem razredu se vrši razpoznavanje končne geste. GestureAnalizer nato
posreduje razpoznano gesto razredu ActionMan, ki jo interpretira v kontekstu aplikacije GAEA+.
To pomeni, da na podlagi geste in stanja, v katerem se aplikacija nahaja določi primeren ukaz.
45
'Klik' gesta pomeni premik centra zemljevida v točko dotika. Če se na zaslonu dotaknemo
vesolja, mora to ActionMan upoštevati tako, da prepreči premik centra zemljevida. V primeru, da
bi razpoznavalnik želeli uporabiti v drugi aplikaciji, bi morali razred ActionMan prirediti potrebam
te aplikacije. Vsi drugi razredi bi lahko ostali enaki.
Celotna koda razpoznavalnika se nahaja v dodatku A.
46
47
5 Zaključek
Pomen MT tehnologij se skriva v tem, da nudijo nov način interakcije z računalnikom. Pri MT
zaslonih se dejansko dotikamo predmetov, s katerimi želimo manipulirati, kar zmanjša nivo
abstrakcije, ki je prisoten v grafičnih uporabniških vmesnikih. Pri slednjih se med uporabnika in
računalnik vrine miška, ki v komunikaciji med njima predstavlja nekakšnega posrednika ali
prevajalca. Spremembi interakcije pa se morajo prilagoditi tudi aplikacije same, saj so ikone
velikokrat premajhne in preblizu skupaj, da bi jih lahko s prstom natančno izbirali. Velja poudariti,
da bosta tipkovnica in miška še vedno prisotni, saj pri določenih opravilih prekašata MT sisteme
(npr. programiranje).
S serijsko proizvodnjo MT LCD zaslonov lahko pričakujemo, da se bodo MT tehnologije v
polnosti razširile med uporabnike. Do takrat pa bodo ostale MT tehnologije v domeni večjih
inštalacij (multimedijski zidovi na sejmih in v muzejih), glasbe (instrument ReacTable [41],
mešalna miza Lemur) in drugih področij, kjer MT zaslon upraviči svojo visoko ceno.
Pri izdelavi strojnega dela MT sistema smo naleteli na nekaj težav, ki so izvirale iz tega, da smo
med izdelavo zamenjali metodo, po kateri smo MT zaslon izdelali. Kljub temu, da smo težave
uspešno premostili, bi bilo najlažje, če bi za vir IR svetlobe uporabili štiri laserje. S tem bi si
prihranili veliko dela, rezultati pa bi bili enaki, če ne celo boljši. Namen izdelave tako majhnega
sistema je bil predvsem v pridobivanju izkušenj in znanja na področju MT tehnologij, kar smo
tudi dosegli. Ker lahko z optičnimi metodami izdelave MT zaslonov zgradimo zaslon skoraj
poljubne velikosti, bi bila sedaj predelava večje LCD televizije (vsaj 82 cm) razmeroma
enostavna naloga.
Z večjim MT zaslonom se nam odprejo nove možnosti na področju izdelave aplikacij. Lahko bi
izdelali orodje za soočanje idej (ang.: brainstorming), saj bi zaradi večdotičnosti lahko več ljudi
hkrati pisalo po tabli, ki bi vse zabeležila. S tem ne bi ohranili samo idej, ampak tudi zaporedje,
kako so se vrstile. Na podoben način bi lahko izdelali šolsko tablo, ki bi med predavanji sama
delala zapiske. Spet bi lahko določili, kaj je bilo prej in kaj kasneje napisano. V primeru
reševanja fizikalne naloge je ta informacija zelo koristna, saj se v njej skriva postopek reševanja.
Zanimiva bi bila tudi realizacija programa za grafično oblikovanje ali modeliranje, kot sta na
primer Photoshop [39] in AutoCAD [40]. Za te programe je značilno ogromno število orodij in
ukazov, ki so dostopni preko ikon ali kompleksnih bližnjic na tipkovnici. Z uporabo gest bi delo
48
izjemno pohitrili. Že samo to, da bi lahko z eno roko izbirali orodja, medtem ko z drugo rišemo, bi
nam prihranilo veliko časa v primerjavi z vsakokratnim premikanjem miške od risbe do palete z
orodji in nazaj.
Razpoznavalnik G2RE je trenutno še v fazi razvoja, ki bo šel v dve smeri: širši nabor gest in
izpopolnitev interakcije med razpoznavalnikom in aplikacijo Gaea+. Pri slednjem gre predvsem
za določanje pravih razmerij pri izvajanju progresivnih gest. Za primer vzemimo gesto za
povečanje in pomanjšanje. Najti je treba pravo razmerje med spreminjanjem razdalje med prsti
na zaslonu in spreminjanjem faktorja povečave zemljevida. Podobno velja za spreminjanje
naklona in rotacije očesa ali pogleda. Ta razmerja odločajo o tem, kakšna bo uporabniška
izkušnja.
Čas je, da se po silovitem razvoju računalnikov in njihovih izhodnih naprav zgodi večji premik v
razvoju vhodnih naprav. MT tehnologije so ena izmed smeri tega razvoja, ki se vedno bolj
uveljavlja. Imajo velik potencial in so dovolj zrele za širšo uporabo. Kako jih bomo kot uporabniki
sprejeli, pa je precej odvisno od tega, kako bomo kot razvijalci strojne in programske opreme
znali njihov potencial izkoristiti. Pri tem bo tudi pomembno standardiziranje gest. Če do tega ne
pride, se bomo morali za vsako napravo učiti drugih gest, kar izniči samoumevnost upravljanja,
ki je sicer ena izmed poglavitnih prednosti MT sistemov.
49
6 Literatura
1. http://xlab.si/
2. http://www.islonline.com/
3. http://research.xlab.si/index.php?option=com_content&task=view&id=41&Itemid=62
4. http://gaeaplus.si/
5. Buxton W.: Multi-Touch Systems that I Have Known and Loved,
http://www.billbuxton.com/multitouchOverview.html
6. McAvinney P.: The Sensor Frame - A Gesture-Based Device for the Manipulation of Graphic
Objects, Carnegie-Mellon University, 1986
7. Lee S., Buxton W. & Smith K.C.: A Multi-Touch Three Dimensional Touch-Sensitive Tablet,
1985 http://www.billbuxton.com/leebuxtonsmith.pdf
8. Kabbash P., Buxton W.& Sellen A.: Two-Handed Input in a Compound Task, zbornik CHI '94,
str. 417-423, 1994
9. Wellner, P.: The Digital Desk Calculator: Tactile manipulation on a desktop display.
Proceedings of the Fourth Annual Symposium on User Interface Software and Technology
(UIST '91), 27-33, 1991
10. Westerman W.: Hand Tracking, Finger Identification, and Chordic Manipulation on a Multi-
Touch Surface, doktorska disertacija Univerity of Delaware, 1999
http://www.ee.udel.edu/~westerma/main.pdf
11. http://www.merl.com/projects/DiamondTouch/
12. http://www.jazzmutant.com/
13. http://www.tactiva.com/
14. Han J. Y.: Low-Cost Multi-Touch Sensing through Frustrated Total Internal Reflection. In
Proceedings of the 18th Annual ACM Symposium on User Interface Software and Technology,
2005
50
15. http://www.apple.com/iphone/
16. http://www.microsoft.com/surface/
17. Izadi S., Hodges S., Butler A., Rrustemi A., Buxton W., EDT '07: Proceedings of the 2007
workshop on Emerging displays technologies, ACM, New York, 2007
http://www.billbuxton.com/UISTthinSight.pdf
18. Berry S., Grivna E.: Touch screens: the magic behind multi-touch,
http://www.cypress.com/?id=1328&rid=1766
19. http://www.embedded.com/design/218101892
20. http://blog.4rev.net/2009-08/4-wire-resistive-touchscreens-how-stuff-works/
21. http://www.oculardisplaysystems.com/pdf/ProjectedCapacitiveTouchScreenTechnology.pdf
22. Schöning J., et al. , Multi-touch surfaces: A technical guide, Tech. rep., 2008
http://ifgiweb.uni-muenster.de/~j_scho09/pubs/bymultitouch.pdf
23 Çetin G., Bedi R., Sandler S.: Multi-touch Technologies. 1st edition.
http://nuicode.com/attachments/download/112/First_Edition_Community_Release.pdf
24. http://www.nuigroup.com
25. Motamedi N.: CHI '08 extended abstracts on Human factors in computing systems ACM,
New York, 2008, stran 3069-3074
26. Podatki o IR filtru, http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=310134863378
27. B. Murovec, P Šuhel: Industrijska elektronika elementi, Ljubljana, 2005
28. Osram SFH485, tehnična dokumentacija, catalog.osram-
os.com/catalogue/catalogue.do;jsessionid=0?act=downloadFile&favOid=020000030000cc9b000
100b6
29. B. Murovec: Laboratorijske vaje industrijska elektronika in elektronika z digitalno tehniko,
Založba FE in FRI, Ljubljana, 2005
30. http://www.wikihow.com/Convert-a-Computer-ATX-Power-Supply-to-a-Lab-Power-Supply
51
31. S. Kovačič, Strojni vid: Analiza gibanja, zapiski s predavanj, vision.fe.uni-lj.si/classes/SV/Sv-
2004-2005/Predavanja/MV05-11-Januar-2005.ppt
32. L. Y. L. Muller: Mult-touch displays: application and performance evaluation, magistrsko
delo Univerza v Amsterdamu, junij 2008
http://www.science.uva.nl/research/scs/papers/archive/Muller2008a.pdf
33. http://ccv.nuigroup.com/
34. Specifikacija protokola TUIO, http://www.tuio.org/
35. Hassanpour R. et al.: VisionBased Hand Gesture Recognition for Human Computer
Interaction: A Review, IADIS International Conference Interfaces and Human Computer
Interaction 2008, http://ce.et.tudelft.nl/publicationfiles/1610_974_Reza_1.pdf
36. http://www.openstreetmap.org/
37. http://worldwind.arc.nasa.gov/java/index.html
38. http://earth.google.com/
39. http://www.adobe.com/products/photoshop/family/
40. http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=2704278
41. http://www.reactable.com/
Dostopnost vseh internet strani je bila preverjena avgusta 2009.
52
53
Dodatek A – ohišje
Slika 40: Skica jedra zaslona – osnova okrog katere je mizar izdelal ohišje. V času pisanja diplome je ohišje še v izdelavi.
Slika 41: Slike prototipa MT zaslona.
54
55
Dodatek B – programska koda
Razred GaeaGre.java package si.xlab.gaea.plugin.multitouch; import java.beans.PropertyChangeEvent; import gov.nasa.worldwind.WorldWindow; import gov.nasa.worldwind.avlist.AVList; import si.xlab.gaea.core.plugin.GaeaPlugin; import si.xlab.gaea.core.plugin.GaeaView; import si.xlab.gaea.core.plugin.PluginInterface; import si.xlab.gaea.plugin.multitouch.tuio.*; public class GaeaGre extends GaeaPlugin private WorldWindow wwd; private Listener listener; public GaeaGre(PluginInterface plugface, AVList parameters) super(plugface, parameters); this.wwd = plugface.getWwd(); System.out.println("GaeaGre()"); TuioClient client = null; this.listener = new Listener(this.wwd); try //here we can specify on which port the client will listen client = new TuioClient(); catch (Exception e) System.out.println("usage: java TuioGR [port]"); System.exit(0); if (client!=null) client.addTuioListener(getTuioListener()); client.connect(); else System.out.println("usage: java TuioGR [port]"); System.exit(0); public TuioListener getTuioListener() return listener; public void propertyChange(PropertyChangeEvent arg0) Razred Listener.java package si.xlab.gaea.plugin.multitouch; import gov.nasa.worldwind.WorldWindow; import java.util.*; import javax.swing.*; import si.xlab.gaea.plugin.multitouch.tuio.*;
56
public class Listener extends JComponent implements TuioListener private static final long serialVersionUID = 1L; public boolean verbose = false; private CursorList cList = new CursorList(); private GestureRecognizer recognizer; public synchronized void addTuioObject(TuioObject tobj) public synchronized void updateTuioObject(TuioObject tobj) public synchronized void removeTuioObject(TuioObject tobj)
public Listener(WorldWindow wwd) this.recognizer = new GestureRecognizer(wwd); public synchronized void addTuioCursor(TuioCursor tcur) if (!cList.getList().containsKey(tcur.getSessionID())) cList.addCursor(tcur); if (verbose) System.out.println("add cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+") "+tcur.getX()+" "+tcur.getY()); public synchronized void updateTuioCursor(TuioCursor tcur) if (verbose) System.out.println("set cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+") "+tcur.getX()+" "+tcur.getY()+" "+tcur.getMotionSpeed()+" "+tcur.getMotionAccel()); public synchronized void removeTuioCursor(TuioCursor tcur) if (cList.getList().containsKey(tcur.getSessionID())) //cList.removeCursor(tcur); if (verbose) System.out.println("del cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+")"+tcur.getTuioState()); public synchronized void refresh(TuioTime frameTime) recognizer.cList = syncronizeLists(recognizer.cList); recognizer.performRecognition(); public synchronized CursorList syncronizeLists(CursorList recognizerList) CursorList syncronizedList = cList; Collection<TuioCursor> c = recognizerList.getList().values(); for (TuioCursor tcur : c) if (syncronizedList.getList().containsKey(tcur.getSessionID())) syncronizedList.getList().get(tcur.getSessionID()).recognizedAs = tcur.recognizedAs; return syncronizedList; Razred GestureAnalizer. java package si.xlab.gaea.plugin.multitouch;
57
import gov.nasa.worldwind.WorldWindow; import java.util.*; import si.xlab.gaea.plugin.multitouch.tuio.*; public class GestureAnalizer
private CursorList previousGesture; private CursorList currentGesture = new CursorList(); public SimpleGestureList gList; private TuioCursor tcur; private TuioCursor pivot; private TuioCursor scndPivot; private ActionMan actionMan; public GestureAnalizer(WorldWindow wwd) this.actionMan = new ActionMan(wwd); public void Analize ()
currentGesture.clearList(); if (previousGestureStillActive()) currentGesture = previousGesture; actionMan.goOn(currentGesture); return; switch (gList.numberOfPivots()) case 0: if (havePinch()) actionMan.zoom(currentGesture); else //At this point, there should only be one gesture on the screen, otherwise the user's input is (considered) meaningless. tcur = gList.nextGesture(); if (tcur != null) currentGesture.addCursor(tcur); switch (tcur.recognizedAs) case 1: actionMan.click(currentGesture); break; case 3: actionMan.moveX(currentGesture); break; case 4: actionMan.moveY(currentGesture); break; case 5: actionMan.drag(currentGesture); break; default: break; break; case 1: currentGesture = gList.returnPivots(); tcur = gList.nextMovementGesture(); if (tcur != null) currentGesture.addCursor(tcur); switch (tcur.recognizedAs)
58
case 3: actionMan.headingChange(currentGesture); break; case 4: actionMan.pitchChange(currentGesture); break; case 5: actionMan.pitchAndHeadingChange(currentGesture); break; default: break; break; case 2: currentGesture = gList.returnPivots(); tcur = gList.nextMovementGesture(); if (tcur != null) currentGesture.addCursor(tcur); switch (tcur.recognizedAs) case 3: actionMan.eyeRotacija(currentGesture); break; case 4: actionMan.eyeNaklon(currentGesture); break; case 5: actionMan.eyeRotacijaInNaklon(currentGesture); break; default: break; else actionMan.zoomInWithTwoPoints(currentGesture); break; default: break; private boolean previousGestureStillActive() if (previousGesture == null) return false; else for (TuioCursor tcur : previousGesture.getList().values()) if (!gList.getList().containsValue(tcur)) return false; return true; private boolean havePinch() //This method looks for two movement gestures. If they are found, //they are treated as a pinch gesture,currentGesture is updated and true is returned. CursorList tempList = new CursorList(); for (TuioCursor tcur : gList.getList().values()) if ((tcur.recognizedAs == 3)||(tcur.recognizedAs == 4)||(tcur.recognizedAs == 5)) tempList.addCursor(tcur);
59
if (tempList.getList().size() == 2) currentGesture = tempList; return true; return false; Razred GestureRecognizer package si.xlab.gaea.plugin.multitouch; import gov.nasa.worldwind.WorldWindow; import java.util.*; import si.xlab.gaea.plugin.multitouch.tuio.*; public class GestureRecognizer public CursorList cList = new CursorList(); private SimpleGestureList gList = new SimpleGestureList(); private GestureAnalizer analizer; public TuioTime time = new TuioTime(); public GestureRecognizer(WorldWindow wwd) this.analizer = new GestureAnalizer(wwd);
public void performRecognition () checkClick(); cList.removeTerminatedCursors(); checkSimpleGestures(); analizer.gList = gList; analizer.Analize(); gList.removeTerminatedGestures();
//SIMPLE GESTURES RECOGNITION METHODS:
private void checkClick() for (TuioCursor tcur : cList.getList().values()) if (!tcur.isRecognized()) if ((tcur.getPath().size() == 1) && (tcur.getTuioState() == 4)) tcur.recognizedAs = 1; gList.addGesture(tcur); private void checkSimpleGestures() Vector<TuioPoint> path = new Vector<TuioPoint>(); for (TuioCursor tcur : cList.getList().values()) path = tcur.getPath(); if (!tcur.isRecognized()) checkXYmovement(path, tcur); checkPivot(path, tcur); if (tcur.recognizedAs == 5) checkXorYmovement(path, tcur);
60
gList.addGesture(tcur); private void checkXYmovement(Vector<TuioPoint> path, TuioCursor tcur) if (path.size() > 1) tcur.recognizedAs = 5; private void checkPivot (Vector<TuioPoint> path, TuioCursor tcur) if ((path.size() == 1) && ((tcur.getStartTime().getSeconds() + 0.5 < time.getSessionTime().getSeconds()))) tcur.recognizedAs = 2; private void checkXorYmovement(Vector<TuioPoint> path, TuioCursor tcur) float angle = path.firstElement().getAngleDegrees(path.lastElement()); //the gap defined by this condition determines when a certain movement can be classified as a horizontal or vertical one if ( (path.size() > 6) & (path.size() <15)) if (((-5 < angle) && (angle < 5)) || ((175 < angle) && (angle < 185))) tcur.recognizedAs = 3; if (((85 < angle) && (angle < 95)) || ((265 < angle) && (angle < 275))) tcur.recognizedAs = 4; Razred ActinMan package si.xlab.gaea.plugin.multitouch; import gov.nasa.worldwind.WorldWindow; import si.xlab.gaea.core.plugin.GaeaView; import gov.nasa.worldwind.avlist.AVKey; import gov.nasa.worldwind.avlist.AVList; import gov.nasa.worldwind.awt.ViewInputHandler; import gov.nasa.worldwind.awt.ViewInputAttributes.ActionAttributes; import gov.nasa.worldwind.geom.Angle; import gov.nasa.worldwind.geom.LatLon; import gov.nasa.worldwind.geom.Position; import gov.nasa.worldwind.util.Logging; import java.lang.reflect.Array; import java.util.Vector; import javax.lang.model.type.NullType; import javax.swing.text.View; import si.xlab.gaea.plugin.multitouch.tuio.*; public class ActionMan //set the resolution of the monitor: private int screenWidth = 1280; private int screenHeight = 1024; private int zoomCounter; private WorldWindow wwd; private GaeaView view; private int previousAction; private TuioCursor[] cursors = new TuioCursor[1]; public ActionMan(WorldWindow wwd)
61
this.wwd = wwd; greViewInputHandler.setWorldWindow(wwd); ActionMan.viewInputBroker.setWorldWindow(wwd); public void click(CursorList cList) previousAction = 1; view = (GaeaView)wwd.getView(); TuioCursor tcur = cList.getList().elements().nextElement(); if (getPositionFromScreenPoint(tcur) != null) moveMapCenter(tcur, view); public void headingChange(CursorList cList) previousAction = 2; view = (GaeaView)wwd.getView(); Angle fieldOfView = view.getFieldOfView(); for (TuioCursor tcur : cList.getList().values()) if (tcur.recognizedAs != 2) Vector<TuioPoint> path = tcur.getPath(); if (path.get(path.size()-2).getX() > path.lastElement().getX()) view.setHeading(view.getHeading().subtract(fieldOfView.multiply((double)path.get(path.size()-1).getDistance(path.get(path.size()-2))))); else view.setHeading(view.getHeading().add(fieldOfView.multiply((double)path.get(path.size()-1).getDistance(path.get(path.size()-2))))); this.wwd.redraw(); public void pitchChange(CursorList cList) previousAction = 3; view = (GaeaView)wwd.getView(); Angle fieldOfView = view.getFieldOfView(); for (TuioCursor tcur : cList.getList().values()) if (tcur.recognizedAs != 2) Vector<TuioPoint> path = tcur.getPath(); if (path.get(path.size()-2).getY() > path.lastElement().getY()) view.setPitch(view.getPitch().subtract(fieldOfView.multiply((double)path.get(path.size()-1).getDistance(path.get(path.size()-2))))); else view.setPitch(view.getPitch().add(fieldOfView.multiply((double)path.get(path.size()-1).getDistance(path.get(path.size()-2))))); this.wwd.redraw(); public void drag(CursorList cList) previousAction = 4; view = (GaeaView)wwd.getView(); cList.getList().values().toArray(cursors); Vector<TuioPoint> path = cursors[0].getPath(); //from the last two points in the cursor, we calculate how much to move the center of the map TuioPoint last = path.lastElement(); TuioPoint penultimate = path.get(path.size()-2);
62
Position posLast = getPositionFromScreenPoint(last); Position posPenultimate = getPositionFromScreenPoint(penultimate); if ((posLast != null) && (posPenultimate != null)) Position diffPosition = posLast.subtract(posPenultimate); view.setCenterPosition(view.getCenterPosition().add(diffPosition)); this.wwd.redraw(); public void pitchAndHeadingChange(CursorList cList) previousAction = 5; Angle fieldOfView = view.getFieldOfView(); for (TuioCursor tcur : cList.getList().values()) if (tcur.recognizedAs != 2) Vector<TuioPoint> path = tcur.getPath(); if (path.get(path.size()-2).getY() > path.lastElement().getY()) view.setPitch(view.getPitch().subtract(fieldOfView.multiply((double)path.get(path.size()-1).getDistance(path.get(path.size()-2))))); else view.setPitch(view.getPitch().add(fieldOfView.multiply((double)path.get(path.size()-1).getDistance(path.get(path.size()-2))))); if (path.get(path.size()-2).getX() > path.lastElement().getX()) view.setHeading(view.getHeading().subtract(fieldOfView.multiply((double)path.get(path.size()-1).getDistance(path.get(path.size()-2))))); else view.setHeading(view.getHeading().add(fieldOfView.multiply((double)path.get(path.size()-1).getDistance(path.get(path.size()-2))))); this.wwd.redraw(); public void zoom(CursorList cList) previousAction = 6; view = (GaeaView)wwd.getView(); zoomCounter += 1; if (zoomCounter == 10) zoomCounter = 0; double changeFactor = 1; TuioCursor[] tgest = cList.getArray(); double zoomChange = tgest[0].getPath().firstElement().getDistance(tgest[1].getPath().firstElement()) /(double)tgest[0].getPath().lastElement().getDistance(tgest[1].getPath().lastElement()); double currentZoom = view.getZoom(); double newZoom = currentZoom*zoomChange*changeFactor; if (currentZoom == 0) newZoom = 0.1*zoomChange*changeFactor; view.setZoom(newZoom); this.wwd.redraw(); public void zoomOut(CursorList cList) //this method is never used previousAction = 7; view = (GaeaView)wwd.getView(); public void moveX(CursorList cList)
63
previousAction = 8; view = (GaeaView)wwd.getView(); cList.getList().values().toArray(cursors); Vector<TuioPoint> path = cursors[0].getPath(); TuioPoint last = path.lastElement(); TuioPoint penultimate = path.get(path.size()-2); Position posLast = getPositionFromScreenPoint(last); Position posPenultimate = getPositionFromScreenPoint(penultimate); if ((posLast != null) && (posPenultimate != null)) Position diffPosition = posLast.subtract(posPenultimate); view.setCenterPosition(view.getCenterPosition().subtract(new Position(Angle.ZERO, diffPosition.longitude, diffPosition.elevation))); this.wwd.redraw(); public void moveY(CursorList cList) previousAction = 9; view = (GaeaView)wwd.getView(); cList.getList().values().toArray(cursors); Vector<TuioPoint> path = cursors[0].getPath(); TuioPoint last = path.lastElement(); TuioPoint penultimate = path.get(path.size()-2); Position posLast = getPositionFromScreenPoint(last); Position posPenultimate = getPositionFromScreenPoint(penultimate); if ((posLast != null) && (posPenultimate != null)) Position diffPosition = posLast.subtract(posPenultimate); view.setCenterPosition(view.getCenterPosition().subtract(new Position(diffPosition.latitude , Angle.ZERO, diffPosition.elevation))); this.wwd.redraw(); public void eyeRotacija(CursorList cList) previousAction = 10; view = (GaeaView)wwd.getView(); System.out.println("dblPivot r"); public void eyeNaklon(CursorList cList) previousAction = 11; view = (GaeaView)wwd.getView(); System.out.println("dblPivot n"); public void eyeRotacijaInNaklon(CursorList cList) previousAction = 12; view = (GaeaView)wwd.getView(); System.out.println("dblPivot rn"); public void zoomInWithTwoPoints(CursorList cList) // if two fingers are detected on the map, the app should zoom in to the rectangle defined by those two points previousAction = 13; view = (GaeaView)wwd.getView(); System.out.println("dblPivot zoom"); public void goOn (CursorList cList) switch (previousAction) case 1: //this should never happen click(cList); break;
64
case 2: headingChange(cList); break; case 3: pitchChange(cList); break; case 4: drag(cList); break; case 5: pitchAndHeadingChange(cList); break; case 6: zoom(cList); break; case 7: zoomOut(cList); break; case 8: moveX(cList); break; case 9: moveY(cList); break; case 10: eyeRotacija(cList); break; case 11: eyeNaklon(cList); break; case 12: eyeRotacijaInNaklon(cList); break; case 13: zoomInWithTwoPoints(cList); break; default: break; private Position getPositionFromScreenPoint(TuioPoint point) return view.computePositionFromScreenPoint (point.getScreenX(screenWidth), point.getScreenY(screenHeight)); private void moveMapCenter(TuioCursor tcur, GaeaView view)
// not implemented yet
65
Izjava
Izjavljam, da sem diplomsko delo izdelal samostojno pod vodstvom mentorja doc. dr. Boštjana
Murovca. Izkazano pomoč drugih sodelavcev sem v celoti navedel v zahvali.