sign w iiver - tricomsolutions.sesign w iiver en im ple men tatio n av tec kenspr ûaktekno logi pe...

59
SignWiiver en implementation av teckenspr˚ akteknologi Per Malmestig Sofie Sundberg Kandidatuppsats i spr˚ akteknologi Ventilerades den 30 maj 2008 Handledare: Torbj¨ orn Lager Institutionen f¨or lingvistik Christian Frithiof Li Li Tricom Solutions

Upload: others

Post on 10-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

SignWiiver

en implementation av teckensprakteknologi

Per MalmestigSofie Sundberg

Kandidatuppsats i sprakteknologiVentilerades den 30 maj 2008

Handledare:

Torbjorn LagerInstitutionen for lingvistik

Christian FrithiofLi Li

Tricom Solutions

Page 2: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades
Page 3: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Sammanfattning

Vi har utvecklat SignWiiver, ett system for gestigenkanning. SignWiivertillater anvandare att med en Wii-fjarrkontroll teckna gester i ett sprakkonstruerat kring rorelseparametern i naturliga teckensprak. Sprakets

bestandsdelar definieras i utokade tillstandsdiagram skrivna i State ChartXML. Systemet ger ett enkelt och billigt satt att realisera kroppssprak iteknologiska applikationer och har under utvardering visat en grad av

igenkanning tillracklig for kommunikation i underhallningssyfte.

Abstract

We have developed SignWiiver, a gesture recognition system which lets theuser perform gestures with a Wii Remote control, in a language built aroundthe movement parameter of natural sign languages. The components of the

language are defined in enhanced state chart diagrams written in State ChartXML. The system provides a simple, low-cost way of utilising body language

in technological applications. Tests have shown a recognition rate su!cient forentertainment communication.

Page 4: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades
Page 5: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Innehall

1 Inledning 1

2 Gestigenkanning 3

3 Avvaganden 5

4 Teknologier 74.1 Accelerometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.2 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.3 Wii-fjarrkontroll . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4.3.1 WiiRemoteJ . . . . . . . . . . . . . . . . . . . . . . . . . 84.4 SCXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4.4.1 Tillstandsmaskiner . . . . . . . . . . . . . . . . . . . . . . 94.4.2 Tillstandsdiagram . . . . . . . . . . . . . . . . . . . . . . 94.4.3 Handelser . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.4.4 Hierarkier . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.4.5 Parallellism . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.5 FreeTTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

5 Implementation 155.1 Commons SCXML . . . . . . . . . . . . . . . . . . . . . . . . . . 155.2 Handelsehantering . . . . . . . . . . . . . . . . . . . . . . . . . . 165.3 Datamodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.4 Granssnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.5 Talsyntes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.6 Programflode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.7 Sprakmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.7.1 Morpheme . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.7.2 Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.7.3 Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5.8 Modell 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.8.1 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

5.9 Modell 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.9.1 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5.10 Modell 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.10.1 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5.11 Langdprioritering . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.12 Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Page 6: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

6 Resultat 296.1 Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

7 Diskussion 33

A Javakod 39A.1 SignWiiver.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39A.2 Finder.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41A.3 EventController.java . . . . . . . . . . . . . . . . . . . . . . . . . 42A.4 Data.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45A.5 Speaker.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

B SCXML-kod 47

Page 7: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Figurer

4.1 Information fran Wii-fjarrkontroll . . . . . . . . . . . . . . . . . . 84.2 Enkel tillstandsmaskin . . . . . . . . . . . . . . . . . . . . . . . . 94.3 Tillstand och handelser . . . . . . . . . . . . . . . . . . . . . . . 104.4 Hierarkier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.5 Parallellism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.1 Granssnittet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.2 Programflode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195.3 Utdrag ur Modell 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 235.4 Utdrag ur Morpheme . . . . . . . . . . . . . . . . . . . . . . . . . 245.5 Parallella overgangar . . . . . . . . . . . . . . . . . . . . . . . . . 275.6 Brusreducering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.7 Tidsfordrojning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Page 8: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Tabeller

5.1 Morfem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6.1 Resultattabell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296.4 Resultattabell for timers . . . . . . . . . . . . . . . . . . . . . . . 32

Page 9: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Kapitel 1

Inledning

Tanken bakom Nintendo Wii ar spannande. Friheten i kontrollen, som mojliggorsav en accelerometer, har givit kreativa speltillverkare mojlighet att utveckla enhelt ny typ av spel. Plotsligt behover man inte langre trycka pa en knapp foratt tennisspelaren pa skarmen ska sla ivag en boll, utan man far sjalv svingaracketen. Nar vi sag ett filmklipp dar en Wii-fjarrkontroll kopplats till en dator,och dar upphovsmannen sjalv konstruerat granssnittet, foddes iden att faktisktgora nagonting sjalva.

Vi sag kopplingar mellan de rorelser som finns i Wii-spel och teckensprak, avenom rorelserna har en utpraglat ikonisk karaktar och mest har att gora medhandlingar i spelet. Vi borjade fundera pa om det skulle ga att utveckla ett sattatt uttrycka sig med hjalp av dessa rorelser, alltsa en form av teckensprak.

De metoder som redan finns for att elektroniskt beskriva teckensprak ar ofta dy-ra och inte sarskilt langt spridda utanfor forskningsvarlden. En Wii-fjarrkontrollgar daremot att kopa for nagra hundra kronor pa ett stort antal forsaljningsstallen,och ar mycket lamplig for att uttrycka ett sadant teckensprak. Darigenom finnsdet stora mojligheter att kunna erbjuda en storre malgrupp att kommuniceramed kroppssprak aven i underhallningssyfte.

Syftet med detta arbete ar att utveckla en applikation som anvander accelero-metern i en Wii-fjarrkontroll och ett litet teckensprak for att pa ett enkelt ochbilligt satt ge mojlighet att uttrycka sig med gester.

I kapitel 2 beskriver vi tidigare arbeten inom omradet gestigenkanning. Kapitel3 handlar om de avvaganden vi gjort infor var implementation av ett systemfor gestigenkanning. Kapitel 4 redogor for de komponenter som behovs for im-plementationen, som behandlas i kapitel 5. Vi utvarderar vart system i kapitel6 och diskuterar arbetet och mojlig framtida utveckling i kapitel 7. Appendix Ainnehaller kallkoden for applikationen och appendix B den kod som definierarvar sprakmodell.

1

Page 10: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

2

Page 11: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Kapitel 2

Gestigenkanning

System for gestigenkanning (eng. gesture recognition) anvands for att automa-tiskt oversatta de rorelser en anvandare gor till diskreta gester. Syftet medsystemen har traditionellt varit att utgora handikapphjalpmedel. Data lases inoptiskt med hjalp av kameror eller mekaniskt med hjalp av redskap.

Ett exempel pa ett projekt dar mekanisk igenkanning anvands ar Glove-TalkII,som kopplar gester till en formantsyntes. Hardvara ar bland annat en pedal ochen CyberGlove (Immersion, 2007), vilket ar en handske med 18 eller 22 sensorerpa hander och handled. Glove-TalkII tar input fran dessa sensorer med en tathetpa 100 Hz och anvander sig av en artikulatorisk modell av tal. En forsokspersonsom tranat i 100 timmar kunde till slut tala med en hastighet pa 1,5-3 gangerav naturligt tal (Fels och Hinton, 1995). Messing m.fl. (1994) har skapat ettprogram som, ocksa med hjalp av en CyberGlove, kan kanna igen bokstavernai det amerikanska teckenbokstaveringsalfabetet med en korrekthet pa 96,5%.

Nintendo Wii och dess fjarrkontroll med accelerometer, har mojliggjort utveck-ling av spel med en forenklad form av gestigenkanning. Exempelvis ger ettbackhandslag ett annat resultat an ett forehandslag i tennisspel. Det finns dockannu inget spel som gar hela vagen och tillater kommunikation med gester. Ef-tersom Wii-fjarrkontrollen anvander oppna standarder for att kommunicera medyttervarlden har intresset for att anvanda dess funktionalitet natt langt utanforde ursprungliga ramarna for spel. Detta ar inte nagot som stods av Nintendomen det har inte hindrat utvecklare fran att skapa rutiner som later exempelvisen vanlig PC kommunicera med en Wii-fjarrkontroll.

Det finns ett stort natverk av utvecklare och utbyte av ideer kring vad somgar att styras med en Wii-fjarrkontroll. Lee (2007) anvander den inbyggda in-fraroda kameran i en Wii-fjarrkontroll for att registrera och folja fingerrorelseri tva dimensioner. AiLive (2006) har skapat LiveMove Pro som ar implemente-rat med hjalp av artificiella neurala natverk (ANN) for att lata spelutvecklarelara sina system de rorelser som ska ga att utfora med en Wii-fjarrkontroll utanatt sjalva behova programmera dem. I Schlomer m.fl. (2008) anvands gomdaMarkovmodeller (HMM) for att trana en applikation att kanna igen olika ges-ter utforda med en Wii-fjarrkontroll. Traning av systemet gav en genomsnittligigenkanningsgrad pa 90% for fem gester.

3

Page 12: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

4

Page 13: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Kapitel 3

Avvaganden

Naturligt teckensprak definierar tre huvudparametrar for minsta betydelsebar-ande enhet: handernas form, placering och rorelse. Utover dessa namns avenhandflatornas placering och ovrigt kroppsprak, som till exempel ogonbrynsrorel-ser (Sandler och Lillo-Martin, 2006). Parametern rorelse kan vi utvinna medhjalp av Wii-fjarrkontrollens accelerometer och vi har mojlighet att utlasa pla-cering genom att anvanda dess IR-kamera.

Vi har farre parametrar att arbeta med jamfort med an om vi hade anvanten CyberGlove, som har tillgang till handens hela uttryckskraft. Vi kan inte panagot tillfredsstallande satt modellera handernas form, handflatornas placeringeller ovrigt kroppsprak annat an genom att infora ytterligare enheter.

Vi inser snart att anvandarvanligheten minskar och kostnaden okar ju fler pa-rametrar vi vill lagga till och beslutar darfor att endast anvanda en. Valetstar mellan att gora gestigenkanning i tva dimensioner enligt Johnny Lee medIR-kameran eller tre dimensioner med accelerometern. I naturligt teckensprakges parametern placering en kontext i forhallande till tecknarens kropp. Ensadan kontext kan vi inte modellera med en tvadimensionell position, somdessutom saknar referens. Vi kommer saledes i vart arbete enbart agna ossat rorelseparametern i teckensprak.

Vi staller tva krav pa vart arbete, varav det forsta ar inherent i uppgiften ochdet andra en bestamd onskan fran var sida. Den ska vara handelsedriven, det villsaga att flodet i programmet bestams av handelser och och systemets reaktionerpa dessa; handelser i vart system utgors lampligtvis av data som produceras daanvandaren ror accelerometern. Den ska kunna “parsa” rorelsedata pa sammasatt som meningar i ett naturligt sprak.

Eftersom det teckensprak vi vill konstruera ska vara enkelt, finner vi det moti-verat att lata implementationen av grammatiken baseras pa ett reguljart sprak.Vi har jobbat med reguljara sprak tidigare och anser dem tillrackligt kraftfullamen samtidigt lagom begransade for andamalet. Ett reguljart sprak har sin di-rekta motsvarighet i en tillstandsmaskin. Tillstandsmaskiner ar handelsedrivnaoch skulle darfor kunna vara lampliga aven for att hantera rorelsehandelser. Vivill kunna mata in rorelser och som utdata fa den strangsekvens som repre-

5

Page 14: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

senterar det vi vill saga i spraket. Vi har tidigare namnt tva e!ektiva satt forgestigenkanning (ANN och HMM) men vi anser att dessa tillvagagangssatt armer kraftfulla an vad uppgiften kraver. Dessutom, genom forhallandet till re-guljara sprak, ger tillstandsmaskiner ett kompakt och framfor allt transparentsatt for utomstaende att senare andra och lagga till nya meningar efter behov.

Vi formulerar hypotesen att vi genom en tillstandsbaserad losning kan fangabade igenkanning/klassificering av rorelser och grammatiken och att uppgiftengar att implementera tillrackligt kraftfullt.

Vi implementerar en applikation med ett grafiskt granssnitt som later anvanda-ren koppla en Wii-fjarrkontroll till datorn och gora gester som analyseras ochaterkopplas i form av text och syntetiserat tal.

Som implementationssprak valjer vi Java framst eftersom vi har kunskap ocherfarenhet av det. Det finns bibliotek for att hantera de olika delarna vart arbetebestar av och ger bra stod for befintliga teknologier, sasom Bluetooth. Det ardessutom latt att programmera granssnitt och handelsehantering. Sist men inteminst ger det mojlighet till overskadlig dokumentation.

For att utvardera systemet konstruerar vi ett antal meningar och forsoker sedanuttrycka dessa och se vad systemet svarar. Vi anser att det inte tillfor nagot tillutvarderingen att ta in utomstaende personer for att testa systemet utifran hurbra det presterar for en oerfaren anvandare. I den man det skiljer sig fran hurdet presterar for en erfaren anvandare, ar vi anda mer intresserade av hur detfungerar for den erfarne. Darfor skoter vi testningen sjalva.

6

Page 15: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Kapitel 4

Teknologier

I detta kapitel beskriver vi den teknologi som var implementation anvander. Iavsnitten finns information om accelerometrar, Bluetooth, Wii-fjarrkontrollen,tillstandsmaskiner och den talsyntes vi valt att anvanda.

4.1 Accelerometer

En accelerometer mater accelerationskrafter, som kan vara bade statiska ochdynamiska. Gravitationen ar en statisk kraft, medan en dynamisk kraft orsakasav att accelerometern okar/minskar hastighet. Genom att vaga statiska kraftermot dynamiska kan man avgora om accelerometern lutar, medan de dynamiskakrafterna visar i vilken riktning den ror sig. Det finns bade analoga och digi-tala accelerometrar och de kan kanna av upp till tre dimensioner (DimensionEngineering, 2008).

4.2 Bluetooth

Bluetooth ar ett protokoll som tillater tradlos kommunikation i sma, personliganatverk och ar det satt pa vilket en Wii-fjarrkontroll kommunicerar med basen-heten. Aven en dator med Bluetooth kan motta de signaler som sands ut.

BlueCove ar ett Java-API (Application Programming Interface) for Bluetoothsom fungerar med Bluetooth-stacken i Windows, MacOS och Linux. Det argratis och dess kallkod ar oppen (BlueCove, 2008).

4.3 Wii-fjarrkontroll

Wii-fjarrkontrollen ar i forsta hand avsedd for anvandning ihop med Nintendosspelkonsol Wii. Den ar utrustad med ett antal knappar med olika utseenden,IR-mottagare och en accelerometer. Signaler fran fjarrkontrollen overfors viaBluetooth. Dessa funktioner tillater anvandaren att styra spel inte bara medknappar utan aven med gester. I stallet for att trycka pa en knapp for attsvinga en tennisracket kan man svinga kontrollen. IR-funktionen innebar attman, forutom att kanna av den svingande rorelsen, kan sikta (Nintendo, 2007).

7

Page 16: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Wii-fjarrkontrollen rapporterar accelerationskrafterna i de tre dimensionernaX, Y och Z med en hastighet av upp till 100 Hz. Nar kontrollen inte acce-lererar namnvart, rapporterar den aven pitch och roll (sv. vertikal- och hori-sontallutning), vilka beraknas utifran de andra accelerationerna (WiiLi, 2008).Fjarrkontrollen kan aven, om man har en IR-mottagare, ge ett varde for yaw,men det anvander vi oss inte av i denna implementation. For en overblick avinformationen som kan lasas fran en Wii-fjarrkontroll, se figur 4.1.

A

Pitch

Yaw

Roll

-X

-Y

+Y

+X

-Z

+Z

Figur 4.1: Information fran Wii-fjarrkontroll

4.3.1 WiiRemoteJ

Detta Java-API ar framtaget med syftet att lata utvecklare pa ett samlat satthantera:

sokning, installning och nedstangning av Bluetooth-anslutning

anvandargenererade handelser

anslutning och hantering av andra typer av kontroller

lasning/skrivning av data till Wii-fjarrkontroll

Vi behover for vart arbete endast anvanda en liten del av funktionaliteten ibiblioteket.

4.4 SCXML

I detta avsnitt beskriver vi tillstandsmaskiner och dess utokning tillstandsdia-gram. Vi ger tre enkla exempel med tillhorande SCXML-kod for att vidarelasning och forstaelse for vara maskiner ska ga lattare.

8

Page 17: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

4.4.1 Tillstandsmaskiner

I var implementation anvander vi begreppet tillstandsmaskin synonymt med enandlig automat. En tillstandsmaskin anvands inom olika omraden, kanske framstinom datavetenskap, for att beskriva hur mjuk- och hardvara fungerar. Inomdatalingvistik anvands tillstandsmaskiner for att beskriva den typ av formellasprak som kallas reguljara sprak. Dessa beskrivingar har formen av tillstand ochovergangar. Nar maskinen startas vet den i vilket tillstand den ska borja. Denindata som maskinen far avgor sedan om maskinen ska gora en overgang, ochtill vilket tillstand. Om maskinen, nar den inte langre far nagon indata, star i ettsluttillstand har maskinen accepterat den indata den fatt som tillhorande detreguljara sprak som den beskriver. En enkel tillstandsmaskin har inget minne,annat an for de tillstand och overgangar den bestar av (Boman och Karlgren,1996).

Figur 4.2 beskriver en maskin som accepterar det reguljara spraket (ab)*, detvill saga alla strangar som bestar av ett godtyckligt upprepat antal ab (ab,abab, ababab, abababab. . . ). Maskinen startar i tillstand S1, markerat meden pil. I detta lage lyssnar den efter ett a och all annan indata ignoreras. Narmaskinen far ett a flyttar den till tillstand S2. Detta ar dock inget sluttillstand,sa for att maskinen ska kunna kanna igen strangen maste a foljas av ett b sa attmaskinen flyttar tillbaka till S1. Maskinen maste inte stanna for att den star iett sluttillstand utan kan, om den far ytterligare a som indata, ga tillbaka tillS2.

S1 S2

a

b

Figur 4.2: Enkel tillstandsmaskin

4.4.2 Tillstandsdiagram

Tillstandsdiagram utokar den klassiska tillstandsmaskinen med tre koncept (Ha-rel, 1987):

kommunikation (se avsnitt 4.4.3)

hierarkier (se avsnitt 4.4.4)

parallella tillstand (se avsnitt 4.4.5)

Tillstandsdiagram ar ett grafiskt satt att askadliggora komplexa tillstandsma-skiner och kan beskriva vilken form av flode som helst. SCXML (State CharteXtensible Markup Language) ar ett beskrivningssprak som ar baserat pa XML

9

Page 18: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

och som vi anvander for att generellt definiera tillstandsdiagram (eng. statechart) i vart arbete. SCXML ger mojlighet att anvanda datamodeller och kon-trollstrukturer sasom villkor och slingor. Det ar Turing-komplett och kan saledesanvandas for att beskriva vilken algoritm som helst.

Vi definierar en mangd tillstand (eng. states) i vilka systemet kan befinna sigsamt de overgangar (eng. transitions) som kan goras for att ta sig vidare franett tillstand till ett annat. Till systemet skickas handelser (eng. events) sombehandlas och leder till att kontrollen gar vidare.

Stopped Started

stop

start

Figur 4.3: Tillstand och handelser

4.4.3 Handelser

Den forsta maskinen (se figur 4.3) star i tillstandet Stopped nar vi startar, vil-ket representeras av den oversta vanstra pilen. Pilar beskriver overgangar ochar riktade, och text vid pilar namnger den handelse som leder till overgang. Detfaktum att det finns en overgang, som reagerar pa handelsen stop, fran Startedtill Stopped betyder saledes att da systemet befinner sig i Started och det mot-tar handelsen stop gors en overgang till Stopped. Inga andra handelser kommeratt leda till denna overgang (de ignoreras).

SCXML som definierar tillstandsdiagrammet i figur 4.31:

<scxml initial="Stopped"><state id="Stopped">

<transition event="start" target="Started" /></state><state id="Started">

<transition event="stop" target="Stopped" /></state>

</scxml>

Overgangar kan vara villkorade. Det innebar att ett villkor som kan uppfyllasantingen av handelsen sjalv eller av SCXML:s datamodell maste vara uppfylldafor att maskinen ska byta tillstand. Det uttrycks i SCXML genom att ange at-tributet cond under <transition>. Handelser kan komma utifran men de kanocksa genereras. Handelser kan genereras genom att elementet <send> angesda ett tillstand nas eller lamnas. For att skicka stop direkt nar Started nas

1Exempelkoden ar nagot forenklad och haller sig till W3C:s (W3C), snarare an till imple-mentationsspecifik, notation.

10

Page 19: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

anvands elementet <onentry> som om det finns kors vid varje intrade till till-standet, tillsammans med <send>:

<state id="Started"><onentry>

<send event="stop" delay="500ms" /></onentry>

</state>

Vid sandning av handelser finns det mojlighet att ange en tidsfordrojning, vilketanges av delay-attributet. Det innebar i fallet ovan att handelsen fordrojs med500 ms.

Stopped Started

stop

start

Moved

MovedRight

MovedLeft

right

left

Figur 4.4: Hierarkier

4.4.4 Hierarkier

Started bestar av tre deltillstand, varav ett ar det initiala tillstandet (Moved).Fordelen med hierarkier ar att de:

1. Gor det enklare att hantera meddelanden — om ett deltillstand inte kanhantera ett meddelande skickas det uppat i hierarkin. Om vi star i till-standet MovedRight och far handelsen stop kommer vi att ga till Stopped.

2. Utgor en hjalp vid konceptualisering och forstaelse av systemet: Liksomvid objektorienterad design gar vi fran generella “typer” till mer specifika.

SCXML som definierar Started i figur 4.4:

<state id="Started"><initial>

<transition target="Moved" /></initial><transition event="stop" target="Stopped" /><state id="Moved">

<transition event="right" target="MovedRight" />

11

Page 20: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

<transition event="left" target="MovedLeft" /></state><state id="MovedRight" /><state id="MovedLeft" />

</state>

Stopped Started

stop

start

Move2

Move1

Move1_1 Move1_2 Move1_3

Move2_1 Move2_2

right

left up

Figur 4.5: Parallellism

4.4.5 Parallellism

Vi har har definierat ett av tillstanden som parallellt. Det innebar att da till-standet Started nas befinner sig systemet i Move1 och Move2 samtidigt (ochsaledes i Move1 1 respektive Move2 1, eftersom de ar initiala tillstand). Allahandelser som skickas till tillstandsmaskinen hamnar i en global handelsekovilken alla tillstand har tillgang till. De parallella undertillstanden uppdaterasoberoende av varandra.

SCXML som definierar Started i figur 4.5:

<parallel id="Started"><state id="Move1">

<initial><transition target="Move1_1" />

</initial><state id="Move1_1">

<transition event="left" target="Move1_2" /></state><state id="Move1_2">

<transition event="up" target="Move1_3" /></state><state id="Move1_3" />

</state><state id="Move2">

<initial>

12

Page 21: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

<transition target="Move2_1" /></initial><state id="Move2_1">

<transition event="right" target="Move2_2" /></state><state id="Move2_2" />

</state></parallel>

4.5 FreeTTS

FreeTTS ar en talsyntes som ar baserad pa Flite (Festival Lite). Den ar ut-vecklad av the Speech Integration Group vid Sun Microsystems och ar slapptunder en BSD-licens (SIG, 2005). FreeTTS ar lattviktigt och tillhandahalls i ettJava-API. FreeTTS levereras med tre forinstallda roster med varierande kva-litet och doman, men mojlighet finns att importera och anvanda bland annatMBROLA-roster.

13

Page 22: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

14

Page 23: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Kapitel 5

Implementation

I vart arbete vill vi anvanda tillstandsdiagram for att ur en strom av handelserfran anvandaren avgora vilken form av rorelse som utfors. Diagrammen avbil-dar den mangd rorelser som ar mojliga att utfora, och ger utdata i form av enstrang med det som ska sagas. Hur diagrammen utformas ar oppet och som vikommer att visa har vi flera mojliga modeller, dar de senare modellerna byggerpa de tidigare. Efter att ha arbetat fram fungerande versioner av de forsta mo-dellerna overgav vi dessa till forman for en uppgraderad modell, inspirerad avde tidigare, och har darefter inte underhallit koden i de aldre modellerna.

I detta kapitel beskriver vi hur vi i vart system implementerat SCXML (av-snitt 5.1), handelser fran Wii-fjarrkontrollen (avsnitt 5.2), datahantering (av-snitt 5.3) och dess talsyntes (avsnitt 5.5). Vi visar programmets flode i avsnitt5.6. I avsnitt 5.7 beskriver vi det teckenspraksfragment som vi valt att model-lera. Avsnitten 5.8, 5.9 och 5.10 innehaller beskrivningar av tre olika modellerfor tillstandsdiagram. I dessa avsnitt beskrivs ocksa de problem som medfoljerde olika modellerna. Till sist, i avsnitt 5.11 och 5.12, visar vi hur vi valt att losadessa problem.

5.1 Commons SCXML

For att kunna skicka handelser till och kora systemet behovs en motor och vi harvalt att anvanda Commons SCXML (ASF, 2008). Klassen EventController,som ar central i vart system, innehaller den funktionalitet som behovs for attkontrollera SCXML. Vi beskriver vara tillstandsdiagram i SCXML-dokumentsom EventController laser in och parsar. Forutom att kontrollera att SCXML-dokumentet ar valformat undersoks om overgangar och tillstand ar konsistenta.Om parsningen lyckas skapas en motor i form av ett Java-objekt och maskinenstar nu och vantar pa handelser. For att skicka handelser till systemet anropasen metod pa motorobjektet.

Som namnts i avsnitt 4.4.2 ar SCXML Turing-komplett. Vi har alltsa mojlighetatt franga tillstandstankandet nar vi designar vara modeller. Praktiskt skulledet innebara att vi med hjalp av skriptande skulle kunna beskriva en algoritmfor att hantera hela sprakmodellen. Vi kom snart fram till att i slutandan le-

15

Page 24: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

der till att valet av beskrivningssprak skulle vara ovasentligt, och att vi tapparmycket av den overskadlighet som tillstandsdiagram erbjuder. Vi vill darfor de-signa sa stor del av vara modeller runt tillstand och overgangar. De ganger davi frangar detta ar da vi hanterar data (avsnitt 5.3) och tidsfordrojning (avsnitt5.12).

5.2 Handelsehantering

Det radande sattet att hantera handelser i Java ar med hjalp av lyssnare (eng.listener), och sa aven i WiiRemoteJ. Nar en handelse sker pa det avlyssnadeobjektet anropas respektive handelsemetod pa alla lyssnare. En lyssnare ar ettobjekt som innehaller de specifika handelsemetoder som kravs, eller med andraord implementerar ett lyssnargranssnitt.

Finder ar en knapplyssnare for en sokknapp i vart granssnitt (se avsnitt 5.4)och skoter sokningen efter en Wii-fjarrkontroll. Vid knapptryck anropas en me-tod som vantar pa att Wii-fjarrkontrollen ska stallas i synkroniseringslage, ochom och nar en kontroll hittats stalls Bluetooth-anslutningen in. Slutligen tarhandelsehanteraren EventController over.

I centrum for var handelsehantering finns ovan namnda EventController somimplementerar lyssnargranssnittet WiiRemoteListener och som darfor ar enlyssnare efter fjarrkontrollgenererade handelser. En handelse kan exempelvisvara en acceleration eller knapptryckning. Med i anropet av handelsemetodenskickas ett handelseobjekt som innehaller mer detaljerad information, exempel-vis vilken knapp som tryckts ner.

Nar en knapphandelse kommer in undersoks om det ar nagon av A- eller B-knapparna som halls ner. Om detta ar fallet markeras att vi star i recording-lage. Nar en handelse kommer in fran accelerometern, och vi star i recording-lage, paketeras den medfoljande informationen i ett nytt objekt och skickas somen handelse till motorobjektet.

Vi har nu tillgang till handelser fran accelerometern, betecknade med nam-net acc, i vara maskiner. I dessa handelser finns den data som utvinns franaccelerometern (se avsnitt 4.3) och vi kan komma at den i SCXML genom vari-abeln eventdata. Tillsammans med det faktum att vi kan villkora overgangarfar vi en kraftfull mekanism for att styra flodet beroende pa den data vi far.<transition event="acc" cond="_eventdata.x gt 2" target="Y"/> inne-bar alltsa att vi for att fa gora en overgang till Y maste ha fatt en accelera-tionshandelse som uppfyller villkoret att handelsens acceleration i x-led ar storrean (gt = greater than) 2G, dar 1G ar tyngdkraften i vila.

Eftersom vi endast far rimliga varden for pitch och roll da kontrollen hallsnagorlunda stilla har vi valt att inte fokusera pa dessa dimensioner. Detta ef-tersom de orimliga varden pa pitch och roll som vi far vid acceleration leder tillfelaktiga overgangar.

Nar nagon av A- eller B-knapparna pa kontrollen slapps upp vill vi stoppa

16

Page 25: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

SCXML-motorn och skriva ut innehallet i datamodellen (se avsnitt 5.3) till vartutdatafalt (se avsnitt 5.4).

5.3 Datamodell

Vi tillampar en metod for att spara data med hjalp av Commons SCXML:ssa kallade custom actions. Dessa ger oss mojlighet att skapa klasser med sindirekta motsvarighet i SCXML-taggar. Varje instans av SCXML-taggen mot-svaras av ett objekt ur var custom action-klass. Vi infor en <data>-tagg ochdess motsvarande klass Data. Vi later objekt kanna till en intern strang och paklassniva en statisk, delad strang. Nar objekt initieras (da SCXML-dokumentetparsas) tilldelas den interna strangen det varde som anges i taggen. <dataset="Hello World!"/> innebar att ett nytt objekt med den privata strangen"Hello World!" skapas. Nar taggen darefter evalueras (genom att SCXML-motorn “passerar” den) anropas en metod pa det aktuella objektet, som andrarden statiska variabeln till den interna variabeln. E!ekten kan jamforas med deglobala variabler vi var ute efter.

Implementationen Commons SCXML ar inte fardig och darfor ar inte all funk-tionalitet pa plats. Arbetet med SCXML:s standardisering pagar fortfarandemen enligt det senaste utkastet kommer datamodellen att kunna besta av va-riabler eller hela tradstrukturer. For vart arbete behover vi endast atomaravariabler och datamodellen skulle kunna uttryckas som foljer:

<datamodel><data name="string"/>Hello there!</data>

</datamodel>

Vid evaluering kan innehallet i datamodellen lasas och andras, genom att lamp-liga taggar anges. Tilldelning till datamodellen uttrycks till exempel genom attange <assign location="Data(string, ’’)" expr="’Goodbye!’"/>.

5.4 Granssnitt

Som ingangspunkt i vart system har vi klassen SignWiiver (vilket ar det namnvi gett vart system), som forutom att utgora det grafiska granssnittet for vartsystem aven initierar andra objekt, kopplingar mellan objekt, samt kopplingarmellan granssnittselement och objekt. Granssnittet (figur 5.1) innehaller:

Textruta for att skriva utstrangar (5.1:A) och textruta for felmeddelanden(5.1:B).

Kryssrutor for att satta pa/stanga av talsyntesen (5.1:C) samt for att attvisa/dolja textrutorna (5.1:D).

Knapp for att soka efter en Wii-fjarrkontroll (5.1:E) och knapp for att panytt lasa in och parsa en SCXML-fil (5.1:F), som beskrivs i avsnitt 5.1.Det finns alltsa mojligheten att dynamiskt andra spraket under korning.

Vi har i stallet for att skicka utskriftsmeddelanden mellan objekt valt att omdi-rigera systemets standardutmatningar, System.out och System.err, till 5.1:A

17

Page 26: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

E

F

C

D

A

B

Figur 5.1: Granssnittet

respektive 5.1:B. Det innebar att vi enkelt kan skriva till dessa varhelst vi be-finner oss.

5.5 Talsyntes

Att skapa roster i FreeTTS (se avsnitt 4.5) ar enkelt, och innebar i det enklafallet att vi ber en rosthanterare, VoiceManager, om en rost, Voice, av enbestamd karaktar. For vart arbete ar inte talsyntes det centrala och darforanvander vi en standardrost. Speaker ar ett objekt som innehaller en Voice.Vi anropar Speaker da en utmatning sker till utdatafonstret (5.1:A).

5.6 Programflode

Vi kan sammanfatta ett typiskt programflode i systemet som foljer:

1. EventController laser in vart SCXML-dokument (5.2:E) och skapar ettmotorobjekt.

2. Anvandaren klickar pa knappen Find i vart granssnitt (5.2:A).

3. Finder aktiveras och vantar pa en Wii-fjarrkontroll (5.2:B), och kontrolloverlamnas till EventController (5.2:C).

18

Page 27: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

SignWiiver

Speaker

EventControllerFinder Data

SCXML

A.

B. C.

D.

E.

F.

G.

Figur 5.2: Programflode

4. Handelser fran Wii-fjarrkontrollen (5.2:D) fangas av lyssnaren Event-Controller. Dessa handelser vidarebefordras till EventControllers mo-torobjekt.

5. Vid ett givet tillfalle lases den data som genererats i Data (5.2:F) ochpresenteras for anvandaren i utdatafaltet.

6. Speaker, som lyssnar pa utdatafaltet (5.2:G), presenterar det for anvanda-ren verbalt.

7. Steg 3-5 upprepas.

5.7 Sprakmodell

Sprakmodellen ligger som grund for de olika modeller for tillstandsdiagram somvi utvecklade (avsnitt 5.8, 5.9 och 5.10). Eftersom vi utvecklade Modell 1 och 2parallellt och Modell 1 inte anvander sig av morfemtankandet kommer avsnitt5.7.1 inte att vara relevant for denna modell.

De tre antagande som ligger bakom var sprakmodell for Modell 2 och 3 (in-spirerade av Sandler och Lillo-Martin (2006)):

1. alla naturliga teckensprak har en ikonisk bas

2. pa samma satt som inte alla ord i talat sprak ar onomatopoetiska, har intealla ord i teckensprak ett ikonisk ursprung

3. teckensprak har en grammatisk struktur och ar alltsa inte bara “staplade”ord

19

Page 28: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

5.7.1 Morpheme

Yttranden ar uppbyggda av “morfem”, vilket ar vad vi kallar de minsta be-tydelsebarande gesterna i vart teckensprak. Dessa morfem finns med i vartsprakfragment:

Namn Rorelseup !down "right #left $forward %back &up right 'up left (down right )down left *roll right !roll left "

Tabell 5.1: Morfem

5.7.2 Word

Frageord

question #*#Tecknet liknar skriftens fragetecken

Det finns nagra olika satt att konstruera interrogativer i teckensprak. Meir(2004) skriver om tre satt som anvands i det israeliska teckenspraket. Polarainterrogativer (ja/nej) skiljs at fran deras deklarativa motsvarigheter med ettansiktsuttryck. Innehallsfragor (till exempel vem?, vad? och hur? ) byggs ge-nom speciella frageord, vilka oftast har en speciell plats i meningen. Ordfoljdenkan ocksa, i kombination med ansiktsuttryck, anvandas for att markera polarafragor.

For att modellera detta i vart system skulle vi kunna infora en ytterligare kon-troll enbart for att modellera ansiktsuttryck. Vi har dock valt att anvanda detandra sattet som Meir beskriver, frageord, for vara polara fragor.

Negation

pos !"Tecknet liknar en nick

neg "!Tecknet ar inversion av yes

soso "!Tecknet ska likna den gest med vickande handled som anvands for osakerhet

20

Page 29: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Negation kan uttryckas pa olika satt i teckensprak. Det vanligaste ar en ska-kande huvudrorelse under det att orden tecknas. Detta satt att uttrycka nega-tion anvands i alla sprak. Ett annat satt ar att infora speciella negationsord. IVO-meningar laggs detta tecken fore verbet, medan det kommer efter verbet iOV-meningar. I det amerikanska teckenspraket kan negation dessutom uttryckasmed ett negationstecken i slutet av meningen (Sandler och Lillo-Martin, 2006).Vi har valt att anvanda oss av detta, eftersom det passar bast ihop med vartillstandsmaskin (vi behover bara lagga till en optionell overgang neg i slutetav de redan konstruerade meningarna).

Verb

know !"Tecknet ar godtyckligt valt

feel #$Tecknet ar godtyckligt valt

elaborate #%!$#%!$Tecknet ar en upprepad cirkular rorelse

Vara verb ar huvudsakligen valda godtyckligt, da vi inte kommit pa nagot iko-niskt satt att beskriva dem. Ordet elaborate ska dock avbilda den cirkulararorelse som anvands for motsvarande tecken i vanlig konversation.

Pronomen

you &Tecknet pekar pa nagon framfor anvandaren

me 'Tecknet pekar mot anvandaren

I teckensprak tecknas pronomen genom att man pekar pa referensen (Sand-ler och Lillo-Martin, 2006). Eftersom vi inte anvander oss av IR-funktionenpa Wii-fjarrkontrollen kan vi inte avgora positioner, till exempel att personenanvandaren talar till ar skarmen. Det narmsta vi kommer ar en framataccelera-tion, och meningen bakom rorelsen forutsatter att anvandaren haller kontrollenrakt framfor sig nar rorelserna utfors.

Artighet

thanks #(%Tecknet ar godtyckligt valt

sorry %(#Tecknet ar inversion av thanks

Ordet thanks fungerar aven som please i vissa situationer, liksom sorry farsta for den typ av “negativ artighet” som i var grammatik modelleras av me-ningen Pretty bad, I’m afraid.

Halsning

hello )*

21

Page 30: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Tecknet ska likna en vinkning

Denna vinkning hade kunnat ses som en huvudskakning i stallet, men vi valdeatt lata det vara en halsning eftersom det var lattare att motivera att neg ar eninverterad pos an att hitta en annan ikoniskt motiverad halsningsgest.

5.7.3 Grammar

I enlighet med antagande 3 i avsnitt 5.7 har vara meningar en syntax. Vartteckensprak ar, liksom svenska och det amerikanska teckensprak som Sandleroch Lillo-Martin (2006) fokuserar sin forskning pa, i grunden ett SVO-sprak.Detta betyder att den vanliga ordfoljden i meningarna ar subjekt - predikat -objekt. Eftersom vart teckensprak ar begransat syns denna struktur enbart imeningarna I know, I know you, Do I know you? och Do you feel good?

Som beskrivs i avsnitt 5.7.2, lagger vi ett negationstecken i slutet av ett yttrandefor att negera detta. Negation anvands aven for att “invertera” yttranden. Or-den hello + neg betyder tillsammans goodbye. Pa samma satt kan man laggatill thanks eller sorry i slutet av en mening for att markera positiv eller negativartighet.

5.8 Modell 1

Den forsta intuitiva tanken var att ett antal vagar definieras i tillstandsdia-grammet, langs vilka vi kan rora oss igenom sekventiellt. Fran ett starttillstandgar vi, beroende pa om anvandaren ror at vanster, uppat och sa vidare, tillmotsvarande tillstand. Detta betecknas i figur 5.3 med F(acc), som innebar atten overgang bestams av en “funktion” av accelerationsdatan, det vill saga attovergangen ar villkorad. Fran detta tillstand kan nya tillstand nas pa sammasatt. Nar automaten kant igen en vag, exempelvis hoger, vanster, kan den re-turnera ett ord.

Vi vill att en ny rorelse ska kunna laggas pa vid slutet pa varje vag. Fragansom uppstar da ar hur en rorelse, i kombination med en annan rorelse, kanbestamma ett ord. Vi utokade automaten med konceptet att kora tva parallellaautomater: Dictionary och Grammar. Bade Dictionary och Grammar bestar avett antal undertillstand, Wx respektive Sx (W for Word och S for Sentence),som i sin tur bestar av ett antal deltillstand (Wx1...n, Sx1...n) med ett av dessasom initialt tillstand (Wx1, Sx1). Wx far har representera de vagar som vi kanrora oss for att bilda ord, medan Sx far representera regler i en enkel, reguljargrammatik, exempelvis S ! feel good | bad. Inom Wx och Sx ar flodet mellandeltillstanden sekventiellt.

Dictionary tar emot data fran rorelser via accelerometern och utgar fran ett lyss-nande starttillstand. Beroende pa rorelse gors en overgang fran startillstandettill ett undertillstand som borjar med denna rorelse. Nar detta undertillstand narsitt sista deltillstand (och harigenom har “kant igen” en langre rorelse) kommerdet att markera detta genom att skicka en handelse, som paverkar Grammar (senedan). Darefter aterlamnas kontrollen till det lyssnande starttillstandet och en

22

Page 31: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Model1

Dictionary

M1 M2

M2_1

M2_2

M2_3

Recording

F(acc)

M1_1

Stopped

stop

resume

stopstop

send circle

Grammar

S1

S1_1

S1_2

Listening

circle

circle

thanks

F(acc)

F(acc)

F(acc)

F(acc)

F(acc)

F(acc)

F(acc)

send: no

M1_3

F(acc)

send: help

data:

Please

elaborate!

...

Figur 5.3: Utdrag ur Modell 1

ny vag kan paborjas.

Grammar reagerar pa de interna handelser, ord, som generats av Dictionary(den reagerar alltsa inte pa handelser fran accelerometern) och overgar fran sittstarttillstand till det undertillstand som borjar med den aktuella handelsen. Narundertillstandet nar sitt sista deltillstand kommer det att markera detta genomatt skriva till var datamodell.

Vi har i figur 5.3 tagit med olika typer av rorelser for att illustrera det fak-tum att var gransen gar mellan ett Word och Morpheme (figur 5.4) ar ganskaflytande.

5.8.1 Problem

Problem med den sekventiella modellen har att gora med oavsiktliga overgangarav tva olika typer:

1. Brus: Den forsta overgangen fran starttillstandet till de olika Wx ar valdigtviktig och avgor vilken rorelse systemet kommer att forsoka kanna igen.Brus ar en e!ekt av att vi ofta hinner rora accelerometern innan vi gorden rorelse vi hade tankt. Det gor det mojligt att systemet darfor gor enoavsiktlig overgang. Rorelser som vi gor harefter kommer da inte paverkaannat an tillstandet som vi just befinner oss i, och ge ett resultat somkanske inte vantades, eller inget resultat alls.

2. Ordningen pa overgangar: Motorn gar igenom overgangar och dess tillho-rande villkor som de definierats och ordningen mellan dem har darfor

23

Page 32: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Morpheme

Recording

F(acc)

send: left

F(acc)

send: right

F(acc)

send: up

F(acc)

send: down

F(acc)

send: roll_left

F(acc)

send: roll_right

F(acc)

send: back

Figur 5.4: Utdrag ur Morpheme

betydelse. Darfor ar det viktigt att tanka pa att villkor som ar delmangderav andra tillstands villkor bor komma efter dessa i strikt ordning.

5.9 Modell 2

Den andra versionen utvecklade vi parallellt med den forsta och de paminner imycket om varandra. Denna version fokuserar pa att varje delrorelse ska kunnaateranvandas i varje rorelse i vilken den ingar. Ett antal delrorelser blir tillsam-mans en rorelse, som ensam eller i kombination med andra bildar ett yttrande.Dessa tva delar motsvarar ganska val lingvistikens morfem och ord. De parallellatillstanden i maskinen har darfor namnen Morpheme, Word och, som i Modell1, Grammar.

Skillnaden mellan modellerna ar att vi i Modell 1 har bakat ihop Morphe-me och Word till ett diagram vid namn Dictionary, medan Modell 2 valjeren tvastegsmodell dar Morpheme paverkar tillstand hos Word. Resultatet arlogiskt ekvivalent. Den forsta delen bestar i stort sett bara av ett lyssnande till-stand, se figur 5.4. De minsta betydelsebarande enheterna, morfem, motsvarasav overgangar. Nar man ror accelerometern at nagot hall som finns representeratsom morfem, gors en overgang tillbaka till det lyssnande tillstandet samtidigtsom information skickas vidare till Word. Informationen som gar in i Wordanvands for att flytta runt mellan tillstand. Sedan ligger Word och vantar pa

24

Page 33: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

att fa ytterligare information fran Morpheme for att slutfora ett ord. Nar etthelt ord kants igen skickas det till Grammar, som fungerar pa exakt samma sattsom i Modell 1.

5.9.1 Problem

Modell 2 loser inget av de bada problemen i Modell 1. Det tillfor dock ettteoretiskt problem. Om en rorelse bestar av endast en delrorelse kommer dennarorelse att kannas igen tidigt. Sedan kommer annu ett antal likadana handelseratt skickas till maskinen. Detta maste man bemota pa nagot satt. I var modelluppdaterar vi datamodellen for varje gang som delrorelsen kanns igen. Da vi inteslutar lasa in rorelser forran knappen har slappts, laser vi forst da av vad somvid det tillfallet finns i datamodellen. Salunda ar det inget praktiskt problem ivar modell. Vi skulle kunna fa ord lasta direkt da vi gjort deras rorelser, direktvid igenkanning i Word, men vi skulle anda inte vilja det eftersom ord enligtvar sprakmodell far sin mening forst i en kontext.

5.10 Modell 3

Som tidigare namnts finns det med den sekventiella automaten en risk att vi“fastnar” i en vag. Darfor vill vi att alla ord ska kunna evalueras samtidigt.Parallellism gor oss mindre beroende av att man exakt borjar ratt: den lyssnarju hela tiden pa just denna handelse, oavsett var i mangden rorelser anvandarenbefinner sig.

Vi utgar fran Modell 2 och eftersom Morpheme i sig bestar av atomara overgang-ar behover vi inte parallellisera denna maskin. Morpheme ar darfor oforandrad.

Varje handelse fran Morpheme skickas till och analyseras i alla undertillstand(Wx) samtidigt. Oberoende av varandra kommer de att uppdatera sina inretillstand (Wx1...n). Nar ett undertillstand nar det sista tillstandet har det kantigen ett ord och kommer det att markera genom att skicka en handelse. Dennahandelse paverkar Grammar, men ignoreras av andra Wx.

I Grammar analyseras, liksom i Word, handelser i alla undertillstand (Sx) sam-tidigt. Handelserna som genererats av Word kommer leda till att alla Sx uppda-terar sina inre tillstand (Sx1...n). Nar ett undertillstand nar det sista tillstandetkommer det att markera detta samt atervanda till sitt forsta tillstand, redo attkanna igen en ny mening.

5.10.1 Problem

Om A och B bada ar ord, eller bada ar meningar, far vi ett problem om B ! A(och vidare om Bj = Aj).

Lat i, j, k och l vara villkor pa de overgangar som ska ske i A och E(x) va-ra en yttre handelse som uppfyller x. Serierna av tillstand ser ut som visas ifigur 5.5 pa sidan 27. I denna figur kommer bada maskinerna efter E(l) attbefinna sig i ett tillstand som betecknas som en fardig mening, men det gar inte

25

Page 34: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

att garantera vilken som skrivs forst (och darfor skrivs over med den senare)och det ar darfor oklart vilken av dessa vi vill ha. Man kan argumentera for tvaolika strategier: att prioritet ska vara den langsta rorelsen i en serie, eller attdet racker med “sist in”, det vill saga att den senaste rorelsen som kants igenar den som anvandaren generellt vill ha gjort. De problem vi kan identifiera arfoljande:

1. Brus och oavsiktliga overgangar kan leda till att vi befinner oss nagonannanstans an forvantat, och en lang sekvens kan ha passerats utan varvetskap.

2. Om tva meningar har samma langd kommer ordningen dem emellan attavgora vilken som ges som utdata (skrivs sist till datamodellen). Detta ikombination med 1. kan ge oberakneliga resultat.

Med bakgrund av ovanstaende problem har vi valt att implementera en langd-prioritering.

5.11 Langdprioritering

For att prioritera langa rorelser definierar vi rorelsers langd med antal mor-fem, och en global variabel innehaller den hittills langst igenkanda rorelsen. Detfanns som namnts i 5.3 problem med datamodellen i SCXML och vi anvanderi stallet klassen Data for var datamodell. Tillsammans med det faktum att vihuvudsakligen vill hantera langdprioritering i datamodellen, fann vi det moti-verat att lagga logiken for detta i Data. Vi lagger till ett attribut mc (morphemecount) till dataobjektet, pa foljande vis: <data set="Hello" mc="2"/>.

Vid evaluering kontrolleras om den aktuella meningens dataobjekts morphemecount ar strikt hogre an det globalt hogsta morpheme count. Om sa ar falletar den aktuella meningen den hittills langsta och den globala utdatastrangenandras till det aktuella objektets. I figur 5.5:5 kommer B saledes inte att kunnaskriva till datamodellen om A skrivit dit tidigare eftersom B bestar av farre mor-fem. Vi finner det onskvart att utrakning av rorelselangden skots automatiskt ien framtida modell, men for var version duger det med en manuell definition.

5.12 Timers

Vi har valt att implementera en timer-losning for att ge systemet viss ytterli-gare motstandskraft mot brus. Vi har tidigare definierat brus som sma rorelsersom leder till en oavsiktlig overgang. Nar systemet har kant igen ett morfemoch saledes ar i gransen mellan tva morfem, leder brus till att fel morfem ge-nereras forst. Om vi efter varje lyckad igenkanning av morfem lagger till entidsfordrojning innan systemet staller sig i “igenkanningslage” (Recording) igenkan detta leda till att sannolikheten okar for att systemet ska “missa” brusetoch prioritera den langre rorelsen (som forhoppningsvis var den onskade).

Vi illustrerar detta i figur 5.6. Pilarna representerar igenkanda morfem. 5.6:1 arsystemet utan timers. Rorelsen vi vill gora ar down right foljt av up. Vid startav down right-rorelsen gors en liten rorelse nedat som systemet korrekt tolkar

26

Page 35: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

A

A_1 A_2 A_3

j

B

B_1 B_2

A_4

i k

j

A_5

l

B_3

l

= position just nu

A

A_1 A_2 A_3

j

B

B_1 B_2

A_4

i k

j

A_5

l

B_3

l

E(i)

A

A_1 A_2 A_3

j

B

B_1 B_2

A_4

i k

j

A_5

l

B_3

l

E(j)

1

2

3

A

A_1 A_2 A_3

j

B

B_1 B_2

A_4

i k

j

A_5

l

B_3

l

E(k)

4

A

A_1 A_2 A_3

j

B

B_1 B_2

A_4

i k

j

A_5

l

B_3

l

E(l)

5

!

!

Figur 5.5: Parallella overgangar

27

Page 36: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

1 2 3x

x

x

x

x

x

x

Figur 5.6: Brusreducering

som ett morfem. I 5.6:2 har vi med hjalp av timers hallit undan for systemetnagra av de rorelser (markerade med x) som tolkas som morfem, bland andraden rorelse nedat som vi betecknar som brus.

Observera aven att bruset i 5.6:3 inte tagits bort, men det ar inte nagon for-samring utan ett lika stort fel som utan timers. Eftersom morfem kanns igenparallellt i alla ord kommer vi har att forlita oss pa att den langre rorelsenkommer att prioriteras under senare bearbetning. Vi formulerar om Morphemegenom att lagga till ett tillstand Hold i vilket ingen igenkanning sker. Systemetstartar i Hold och vid ingang i detta tillstand genereras en handelse timeoutmed fordrojningen X ms. Hold lyssnar enbart efter timeout och da den tasemot (X ms senare) gors en overgang till Recording. Varje morfem-overgang iRecording leder nu till Hold i stallet for som tidigare tillbaka till Recording.

SCXML som definierar Hold i figur 5.7:

<state id="Hold"><onentry>

<send event="timeout" delay="25ms" /></onentry><transition event="timeout" target="Recording" />

</state>

Morpheme

Recording F(acc)

send: right

F(acc)

send: up

F(acc)

send: down

F(acc)

send: roll_left

Hold

onentry

send: timeout

delay 25 ms

timeout

Figur 5.7: Tidsfordrojning

28

Page 37: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Kapitel 6

Resultat

Utvardering sker pa Modell 3 (avsnitt 5.10). Vi har valt att inte jamfora de olikamodellerna, da vi anser att Modell 3 ar det slutliga resultatet och att de andraforstudier for att na fram till denna modell.

Varje rorelse utfors 100 ganger i grupper om fem. Genom att rorelserna slump-massigt ordnats for testningen undviker vi sa gott det gar det direkta muskel-minne, som skulle paverka resultatet om varje rorelse upprepades 100 ganger ifoljd. Resultatet av testningen ar en igenkanningsgrad (RR, recognition rate) iprocent, och presenteras i tabell 6.1.

Pa de meningar vi valt har vi en genomsnittlig igenkanningsgrad pa 79,5%. Vitar upp denna si!ras relevans i var diskussion. Sa lange kan vi dock anvanda denfor att se att igenkanningsgraden for meningar med hog mc (7 eller hogre) somvantat ar lagre an genomsnittet men att resultatet ar battre an vi forvantat oss.

Uttryck Ord Morfem RR

Yes pos !" 82No neg "! 91Thank you thanks #!$ 78No, thanks thanks • neg #!$ • "! 75Sorry sorry $!# 88Hello hello %& 88Hello there hello • you %& •' 85Goodbye hello • neg %& • "! 90Maybe soso !" 88Pretty good soso • pos !" • !" 62Pretty good, thank you soso • pos • thanks !" • !" •#!$ 77Pretty bad soso • neg !" • "! 90Pretty bad, I’m afraid soso • neg • sorry !" • "! •$!# 83Do you feel good? you • feel • pos • question '•#( • !" •&$& 73Please elaborate elaborate • thanks #$)(#$)( •#!$ 78I know me • know *•)" 77I know you me • know • you *•)" •' 72Do I know you? me • know • you • question *•)" • ' •&$& 70Help help "(% 57Help me help • me "(% •* 85

Tabell 6.1: Resultattabell

29

Page 38: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Vi kommenterar resultatet for nagra meningar dar de har ett principiellt vardefor var argumentation. Alla felaktigt igenkanda rorelser kommer inte att redo-visas.

Yes Konflikt med I know, som kanns igen i 13% avfallen. Konflikten uppstar som en kombinationav att det rorelseinitiala bruset back registrerasoch det faktum att en uppat-rorelse ofta gene-rerar bade up left och up. Eftersom mc for Iknow ar hogre an for Yes kommer I know attha fortur.

Thank you No thanks far 11% av meningens RR eftersomrorelsen fortsatter med ett neg.

No thanks No kanns igen i 13% av fallen och det beror paatt inte Thank you registrerats. Dock registre-ras den finala neg-rorelsen.

Hello Har 12% chans att inte registreras alls. Dettada vi kraver en ganska hog acceleration for attforhindra att hello kanns igen alltfor ofta ochatt anvandaren ibland endast ror framsidan avWii-fjarrkontrollen.

Hello there Hello far 13% av meningens RR vid utforandeav denna rorelse. Det beror pa att forward interegistreras da fjarrkontrollen ar i rorelse i sid-led vid slutet pa hello-rorelsen, och att vi iforward kraver att andra dimensioner an Y in-te ror sig namnvart.

Maybe Har 13% chans att inte registreras alls. Vimisstanker att det beror pa att fjarrkontrollenbefinner sig i acceleration, om dock en liten, ochatt roll ger ett felaktigt varde.

Pretty good Konflikt med Pretty bad, som far 19% av me-ningens RR. Efter soso ar det latt att rakagora en liten nedat-rorelse vilket registreras somdown. Nar up darefter utfors kommer Pretty badatt ha kants igen. Eftersom mc for de badameningarna ar lika kommer Pretty good vidigenkanning inte att kunna skriva over Prettybad.

30

Page 39: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Pretty good, thank you Konflikt med No thanks som far 18% av me-ningens RR. Den okade rorelsemangden somgenererats genom tidigare rorelser genererar enneg-rorelse och darfor ar det inte Thank yousom man skulle kunna tro utan No thanks somfelaktigt igenkanns.

Do you feel good? Konflikt med Pretty bad som kanns igen i 19%av fallen. Det verkar som att en framat-rorelseutover forward aven har en tendens att gene-rera soso, pa grund av en vridning pa handen.Om sedan feel utfors i en lite for brant vin-kel registreras neg, och saledes har Pretty badkants igen.

Please elaborate Konflikt med No thanks med 20% av mening-ens RR. Mest troligt ar att elaborate intehunnit kannas igen nar thanks utfors. Liksomvid Pretty good, thank you leder den okaderorelsemangden till att No thanks snarare anThank you registreras i slutet.

Help Pa grund av ett subtilt rorelsefinalt brus backleder rorelsen i 30% av fallen till Help me.

6.1 Timers

Vi har valt att inte integrera timers i det forsta testet utan kommer i stallet attfor enskilda meningar visa om var implementation av timers kan forbattra re-sultatet. Eftersom testningen hittills utforts pa fem meningar i taget valjer vi utfem meningar dar vi anser att timers kan hjalpa och testar dessa ytterligare 100ganger. De meningar vi valt har en lagre igenkanningsgrad an forvantat och arexempel pa olika situationer dar timers skulle kunna hjalpa. Tidsfordrojningenvi anvande vid testning var 25 ms.

Yes Genom en tidsfordrojning innan registrering sker hop-pas vi kunna eliminera det rorelseinitiala bruset.

Thank you Vi hoppas att kunna eliminera det icke-subtilarorelsefinala bruset neg, som bestar av tva morfem,genom att hindra bada eller ett av morfemen downoch up fran att registreras.

Pretty good Vi hoppas att det subtila down-bruset mellan soso ochup elimineras, genom tidsfordrojningen mellan mor-fem.

31

Page 40: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Do you feel good? Vi vill se om timers okar igenkanningsgraden for den-na mening. Den ar aven med for att undersoka omlanga rorelser fortfarande kanns igen.

Help Timers kan hjalpa genom att ge en hogre chans att detsubtila rorelsefinala bruset undviker att registreras.

Uttryck RR utan timer RR med timerYes 82 93Thank you 78 79Pretty good 62 73Do you feel good? 73 40Help 57 33

Tabell 6.4: Resultattabell for timers

Resultatet av testningen med timers visar att vi med var implementation avtidsfordrojning inte far nagon forbattring; sammantaget innebar det till och meden forsamring. Systemet kanns generellt samre pa att “koppla ihop” rorelser.Var tidigare observation att det inte fanns nagon markbart okad svarighet attkanna igen langre rorelser, ar nu inte langre aktuell. Detta visas i tabellen avatt igenkanningen av Do you feel good? har forsamrats avsevart.

De forbattringar som timers gav hade att gora med initiala handelser, sasomatt Yes forbattrades nagot i och med att den initiala back-rorelsen kunde elimi-neras, och aven en viss forbattring av Pretty good, da pausen mellan ett fardigtsoso och nasta morfem eliminerar det down-brus som annars kan leda till Prettybad.

Vi noterar att elimineringen av rorelsefinalt brus inte fungerar som onskas —igenkanningen av Help har forsamrats avsevart. Genom att oka tidsfordrojningenkunde vi till viss man eliminera rorelsefinalt brus men priset var att systemetvar trogt och kravde valdigt stora rorelser.

32

Page 41: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Kapitel 7

Diskussion

Resultatet av utvarderingen ar positivt och visar att var hypotes stamde: detgar att med tillstandsdiagram implementera ett tillrackligt kraftfullt system forgestigenkanning. Medelvardet av igenkanningsgraden, 79.5%, betyder vid enjamforelse med andra system for gestigenkanning inte sa mycket, eftersom vitill skillnad fran dessa aven implementerat en grammatik. Det ar ocksa falletatt manga enskilda igenkanningar av ord ar “irrelevanta” for oss — en felaktigigenkanning spelar en mindre roll an i andra system, dar en hog igenkannings-faktor/ord ar viktigt, da det finns en stor chans att atminstone en korrektigenkanning gors vid ett senare tillfalle. Nar resultatet av den korrekta igen-kanningen far betydelse i en kontext, grammatiken, ar den felaktiga mind-re relevant och dess e!ekt kommer generellt sett inte att synas. Dessutomagerar vi sjalva upplarningsalgoritm for vart system genom att forandra vill-kor och ordning dem emellan, medan Markovmodellers och neurala natverksigenkanningsgrad vaxer ju fler ganger systemen lars upp. Systemens forut-sattningar ar helt enkelt annorlunda.

Som ett steg i utvecklingen av vart system ser vi garna en fortsatt utvarderingi en testmiljo dar vart system pa ett rattvist satt jamfors med befintliga systemfor gestigenkanning. Vi kan dock anvanda var igenkanningsgrad for fortsatt ut-veckling av vart eget system, som vi gjort i utvarderingen med tidsfordrojning.Att inte tidsfordrojning gav nagon forbattring ser vi definitivt inte som nagot be-vis for att de inte kan hjalpa i vart system. Tidsfordrojningens interna placering,langd och overgripande implementation ar alla parametrar som kan justeras forett mer tillfredsstallande resultat.

I vart system finns ingen tidsgrans for hur lange man kan utfora en rorelse.Eftersom vi har att gora med vantande tillstand finns mojlighet att narsomhelsti en rorelse stanna upp under en obestamd tid for att sedan fortsatta dar manvar. Det finns ocksa mojlighet att angra sig och fortsatta rorelsen pa ett an-nat satt (eller till och med borja om pa nytt), nagot som kommer sig av attvi har implementerat parallella tillstand som oberoende av varandra lyssnar pa“sin” rorelse. Tidsoberoendet ger vart system en stor lingvistiskt flexibilitet —i likhet med naturligt sprak dar pauser och omstarter ar mycket vanliga. Vi serinte hur man pa samma enkla och eleganta satt kan implementera dessa egen-skaper i en losning baserad pa Markovmodeller eller neurala natverk. Fordelen

33

Page 42: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

med dessa tekniker ar att de ger mojlighet att hitta statistiska “trender” i dataoch att normalisera denna, till skillnad fran var losning som observerar potenti-ellt vilseledande tvarsnitt av data. Med dessa tekniker gar det eventuellt battreatt anvanda pitch och roll, da en battre analys av dessa vardens rimlighetkan goras genom jamforelser med tidigare varden. En mojlig utveckling av vartsystem ar att ga en medelvag mellan teknikerna och lata en statistisk modell au-tomatiskt generera de optimala tillstandsdiagram som motsvarar vissa rorelser,och sedan kora dessa parallellt.

Tillstandsdiagram ger oss ett kraftfullt satt att filtrera data. Vi kan fokuse-ra pa vissa sardrag i dataflodet medan irrelevant data ignoreras. Genom attanvanda Modell 2:s Morpheme behover vi bara redigera ett morfem for att goraandringar som paverkar hela systemet. Koden blir lattare att underhalla ochdessutom mycket mindre (den vaxer inte exponentiellt med langre rorelser).Med tillstandsdiagram far vi en grafisk oversyn av systemet och vad som pagar.Var modell ar kompositionell och gor det mojligt att andra bade morfem, ordoch grammatik.

En viktig poang med vara definitioner av rorelser ar att de kan vara medvetetgenerella. Systemet medger en stor frihet i hur man ror sig utifran dessa gene-rella definitioner. Vi kan beskriva en cirkel som fyra accelerationer, !"#$,men man kan anda utfora rorelsen genom att rora fjarrkontrollen i en cirkel. Detfinns en mangd rorelser som uppfyller denna definition, exempelvis en romb. Narman explicit definierat skillnaden mellan en romb och en cirkel ar de inte langresamma rorelse, pa samma satt som hur vissa foner (talets minsta betydelseskil-jande enheter) inte uppfattas som tillhorande samma fonem av talare av olikasprak. I vart system kan en rorelse, eftersom vi har implementerat parallellism,aven kannas igen fragmentariskt (som illustreras i figur 5.5). Vi foreslar att enframtida version av vart system utover langd aven skulle premiera kontinuitet:det vill saga att en rorelse som bestar av en serie obrutna delrorelser ska prio-riteras.

Att vi bara har tillgang till rorelseparametern innebar att vart teckensprakskomplexitet nodvandigtvis maste vara mindre an ett naturligt teckenspraks. Jufler komplexa meningar i var grammatik desto mer problematiskt blir det attendast ha tillgang till denna enda parameter. Losningen att bygga komplexa me-ningar med langa morfemsekvenser fungerar till en viss grans. Denna grans garenligt oss ungefar vid vad som behovs for kommunikation i underhallningssyfte(till exempel spel) men for gestigenkanning med hogre uttryckskraft, vilket skul-le kravas av ett handikappshjalpmedel, ar det inte nog. Vi behover da ytterligaparametrar, vilket kraver mer ra!nerade redskap — till exempel en CyberGlove.Ett omrade for framtida forskning kan vara att undersoka i vilken utstrackningtillstandsdiagram kan anvandas for att hantera alla de parametrar som en Cy-berGlove kan ge. Vi tror att detta kan hanteras med parallella tillstand, dedike-rade till varsin parameter. Ett annat satt att tillfora parametrar ar anvandandetav ytterligare kontroller. Liksom for CyberGlove tror vi att dessa ytterligare pa-rameter enklast hanteras med dedikerade parallella tillstand. Till exempel skulleen ytterligare kontroll som modellerar ogonbrynsrorelser ge ytterligare dimen-sioner till spraket.

34

Page 43: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Som ett enkelt system for gestigenkanning ger SignWiiver goda resultat. Sepa-reringen av sprakmodell fran applikationslogik gor att en anvandare har kontrollover det som gar att sagas i spraket och hur det ska sagas. SignWiiver anvanderoppna och billiga komponenter och utmatningen ar inte begransad till talsyntes.Exempelvis behovs endast sma andringar for att systemet ska kunna kanna igenoch vidarebefordra kommandon till ett robotsystem. Tekniken bakom systemetskulle givetvis ga att anvanda tillsammans med andra lattillgangliga redskapan Wii-fjarrkontrollen. Sma, billiga accelerometrar finns pa marknaden och arinbyggda i ett flertal mobiltelefoner, som dessutom har Bluetooth.

Eftersom tillstandsdiagram ar grafiska modeller kan ett framtida tillagg tillsystemet vara ett medel for anvandare att grafiskt redigera morfem, ord ochmeningar i spraket. Vi skulle ocksa garna se en mojlighet att spela in gester.Anvandare skulle kunna ange ett kommando eller ord och sedan utfora gesten.Inspelningen skulle generera tillstand och gesten sammanlankas med komman-dot. Detta skulle kunna ha ett anvandningsomrade exempelvis i spel, dar mansjalv vill kunna paverka sin vokabular. Vi ser bade rum for vidareutvecklingav SignWiiver och redan befintliga applikationer i vilka systemet skulle kunnaintegreras.

35

Page 44: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

36

Page 45: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Litteraturforteckning

AiLive. LiveMove White Paper. AiLive Inc., 2006. Hamtad 2008-04-12 fran<http://www.ailive.net/papers/LiveMoveWhitePaper en.pdf>.

ASF. Commons SCXML. The Apache Software Foundation, 2008. Hamtad2008-04-20 fran <http://commons.apache.org/scxml/>.

BlueCove. BlueCove. BlueCove Team, 2008. Hamtad 2008-04-15 fran <http://www.bluecove.org>.

Boman, Magnus och Karlgren, Jussi. Abstrakta Maskiner och Formella Sprak.Studentlitteratur, Lund, 1996.

Dimension Engineering. A beginner’s guide to accelerometers. Dimension Engi-neering LLC, Mars 2008. Hamtad 2008-05-14 fran <http://www.dimensionengineering.com/accelerometers.htm>.

Fels, Sidney och Hinton, Geo!rey. Glove-TalkII: An Adaptive Gesture-to-Formant Interface. I: Conference on Human Factors in Computing Systems,Denver, Colorado, Maj 1995. University of Toronto. Hamtad 2008-04-02 fran <http://www.sigchi.org/chi95/Electronic/documnts/papers/ssf bdy.htm>.

Harel, David. Statecharts: A Visual Formalism for Complex Systems. Scienceof Computer Programming, 8:231–274, 1987.

Immersion. CyberGlove II Wireless Glove. Immersion Corp., December 2007.Hamtad 2008-04-15 fran <http://www.immersion.com/3d/docs/cybergloveII dec07v4-lr.pdf>.

Lee, Johnny Chung. Tracking Your Fingers with the Wiimote. Projekthem-sida, November 2007. Hamtad 2008-05-14 fran <http://www.cs.cmu.edu/~johnny/projects/wii/>.

Meir, Irit. Question and Negation in Israeli Sign Language. Sign Language &Linguistics, 7:97–124, 2004.

Messing, Lynn S., Erenshteyn, Roman, Foulds, Richard, Galuska, Scott, ochStern, Garland. American Sign Language Computer Recognition: Its Presentand its Promise. I: The Sixth Biennial Conference of the International Societyfor Augmentative and Alternative Communication: Conference Book and Pro-ceedings, ss 289–291, Maastricht, Nederlanderna, 1994. Hamtad 2008-04-05fran <http://user.dtcc.edu/~mancini/papers/ISAACpaper.html>.

37

Page 46: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Nintendo. Technical Details. Nintendo of Europe GmbH, 2007. Hamtad 2008-04-15 fran <http://www.nintendo.co.uk/NOE/en GB/systems/technicaldetails 1072.html>.

Sandler, Wendy och Lillo-Martin, Diane. Sign Language and Linguistic Univer-sals. Cambridge University Press, Cambridge, 2006.

Schlomer, Thomas, Poppinga, Benjamin, Henze, Niels, och Boll, Susanne.Gesture recognition with a Wii controller. I: TEI ’08: Proceedings of the2nd international conference on Tangible and embedded interaction, ss 11–14,New York, NY, USA, 2008. ACM.

SIG. FreeTTS 1.2. Speech Intergration Group, 2005. Hamtad 2008-04-15 fran<http://freetts.sourceforge.net>.

WiiLi. Motion Analysis, 2008. Hamtad 2008-04-22 fran <http://www.wiili.org/Motion analysis>.

W3C. State Chart XML (SCXML): State Machine Notation for Control Ab-straction. The World Wide Web Consortium, 2007. Hamtad 2008-04-20 fran<http://www.w3.org/TR/scxml/>.

38

Page 47: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Bilaga A

Javakod

A.1 SignWiiver.java

import javax . swing . ;import javax . swing . border . Border ;import javax . swing . border . EtchedBorder ;import javax . swing . border . Tit ledBorder ;import wi i remote j . WiiRemoteJ ;import java . awt . ;import java . awt . event . ActionEvent ;import java . awt . event . Act ionL i s t ener ;import java . awt . event . AdjustmentEvent ;import java . awt . event . AdjustmentListener ;import java . awt . event . ItemEvent ;import java . awt . event . I t emLis tener ;import java . awt . event . WindowEvent ;import java . awt . event . WindowListener ;import java . i o . IOException ;import java . i o . OutputStream ;import java . i o . PrintStream ;import java . net .URL;

import stat ic java . lang . System . out ;import stat ic java . lang . System . e r r ;

/C l a s s t h a t a c t s a s t h e g r a p h i c a l u s e r i n t e r f a c e f o r t h e p r o g r am .A l s o s e t s up t h e o t h e r o b j e c t s and c o n n e c t i o n s .

@au t h o r Per Ma lm e s t i g & S o f i e S u n d b e r g/

public c lass SignWiiver extends JFrame implements WindowListener {private stat ic f ina l long se r ia lVers ionUID = 1L ;// For d e b u g and o u t p u t m e s s a g e sprivate JTextArea debug , output ;// T o g g l e s t h e TTS o u t p u t , d e b u g t e x t a r e a and o u t p u t t e x t a r e a , r e s p e c t i v e l yprivate JCheckBox ctt s , cdebug , c t ext ;// C o n t r o l s t h e r e t r i e v a l o f a Wii Remote and t h e re!p a r s i n g o f t h e l a n g u a g eprivate JButton f ind , r e i n i t ;private JScro l lPane outputPane , debugPane ;

protected EventContro l l e r eventCont ro l l e r ;protected Finder f i nd e r ;protected Speaker speaker ;

private stat ic f ina l PrintStream sout=System . out , s e r r=System . e r r ;

// P a t h sprivate stat ic f ina l Str ing SCXMLURL = ” current t imer . scxml” ;private stat ic f ina l Str ing TRICOMURL = ” tr icomlogo . png” ;private stat ic f ina l Str ing LOGOURL = ” s i gnw i i v e r . g i f ” ;

/C o n s t r u c t o r .

/public SignWiiver (){

try {s e tT i t l e ( ” SignWiiver ” ) ;// S e t l o g g i n g l e v e l f o r Wii Remote m e s s a g e s o f fWiiRemoteJ . setConso leLoggingOff ( ) ;setLayout (new BoxLayout ( getContentPane ( ) , BoxLayout . Y AXIS ) ) ;

// S i g n W i i v e r l o g oImageIcon logo = new ImageIcon (new URL(LOGOURL) ) ;JLabel ho ld logo = new JLabel ( logo ) ;ho ld logo . setAlignmentX ( JLabel .CENTER ALIGNMENT) ;ho ld logo . setBorder ( BorderFactory . createEmptyBorder ( 10 , 10 , 0 , 10 ) ) ;

39

Page 48: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

// Tr i com S o l u t i o n s l o g oImageIcon tr i comlogo = new ImageIcon (new URL(TRICOMURL) ) ;JLabel ho ldtr i comlogo = new JLabel ( t r i comlogo ) ;ho ldtr i comlogo . setAlignmentX ( JLabel .CENTER ALIGNMENT) ;ho ldtr i comlogo . setBorder ( BorderFactory . createEmptyBorder (10 , 10 , 10 , 10 ) ) ;

c t t s = new JCheckBox ( ”Enable TTS” ) ;cdebug = new JCheckBox ( ”Show debug output” ) ;c t ext = new JCheckBox ( ”Show text window” ) ;c t t s . s e t S e l e c t ed ( true ) ;cdebug . s e t S e l e c t ed ( true ) ;c t ext . s e t S e l e c t ed ( true ) ;

// S e t u p a l i s t e n e r t o t o g g l e t h e t e x t a r e a sI t emLis tener cboxchange = new I t emLis tener ( ) {

public void itemStateChanged ( ItemEvent evt ) {JCheckBox source = (JCheckBox ) evt . g e t I t emSe l e c tab l e ( ) ;i f ( source . getText ( ) . equa l s ( ”Show debug output” ) ) {

debugPane . s e tV i s i b l e ( ! debugPane . i s V i s i b l e ( ) ) ;} else i f ( source . getText ( ) . equa l s ( ”Show text window” ) ) {

outputPane . s e tV i s i b l e ( ! outputPane . i s V i s i b l e ( ) ) ;}

}} ;cdebug . addItemListener ( cboxchange ) ;c t ext . addItemListener ( cboxchange ) ;

JPanel cboxes=new JPanel (new GridLayout ( 3 , 1 ) ) ;cboxes . add ( c t t s ) ;cboxes . add ( c text ) ;cboxes . add ( cdebug ) ;

Border loweredetched = BorderFactory . createEtchedBorder ( EtchedBorder .LOWERED) ;Tit ledBorder t i t l e ;t i t l e = BorderFactory . c r ea teT i t l edBorder ( loweredetched , ”Options ” ) ;t i t l e . s e t T i t l e J u s t i f i c a t i o n ( Tit ledBorder .LEFT) ;cboxes . setBorder ( t i t l e ) ;

// The o u t p u t t e x t a r e aoutput = new JTextArea ( 10 , 1 ) ;outputPane = new JScro l lPane ( output ) ;outputPane . s e tV i s i b l e ( true ) ;output . s e tEd i t ab l e ( true ) ;

// The d e b u g t e x t a r e adebug = new JTextArea ( 4 , 1 ) ;debugPane = new JScro l lPane ( debug ) ;debug . s e tEd i t ab l e ( true ) ;debugPane . s e tV i s i b l e ( true ) ;debugPane . setAlignmentX (LEFT ALIGNMENT) ;

JPanel t ex ta r ea s = new JPanel (new GridLayout ( 2 , 1 ) ) ;t ex ta r ea s . add ( outputPane ) ;t ex ta r ea s . add ( debugPane ) ;t ex ta r ea s . setBorder ( BorderFactory . createEmptyBorder ( 10 , 10 , 0 , 10 ) ) ;

JPanel buttons = new JPanel (new GridLayout ( 2 , 1 ) ) ;f i nd = new JButton ( ”Find” ) ;r e i n i t = new JButton ( ”Re!i n i t SCXML f i l e ” ) ;buttons . add ( f i nd ) ;buttons . add ( r e i n i t ) ;

// The t o p a r e aJPanel topPanel = new JPanel (new GridLayout ( 1 , 2 ) ) ;topPanel . setBorder ( BorderFactory . createEmptyBorder ( 0 , 1 0 , 0 , 1 0 ) ) ;topPanel . add ( cboxes ) ;topPanel . add ( buttons ) ;

// Add p a r t s t o t h e c o n t e n t paneadd ( ho ld logo ) ;add ( topPanel ) ;add ( t ex ta r ea s ) ;add ( ho ldtr i comlogo ) ;

// R e d i r e c t S y s t em . o u t and S y s t em . e r r f o r o u t p u t and d e b u g me s s a g e s , r e s p e c t i v e l ySystem . setOut (new PrintStream (new OutputStream () {

public void wri te ( int b) throws IOException {// Wr i t e t o t h e o u t p u t t e x t a r e aoutput . append ( St r ing . valueOf ( ( char )b ) ) ;

}} ) ) ;System . se tErr (new PrintStream (new OutputStream () {

public void wri te ( int b) throws IOException {// Wr i t e t o t h e d e b u g t e x t a r e adebug . append ( St r ing . valueOf ( ( char )b ) ) ;

}} ) ) ;

// I n i t i a l i z e s p e a k e r and s e t a c h e c k b o x t o c o n t r o l i tspeaker = new Speaker ( ) ;c t t s . addItemListener (new I t emLis tener ( ) {

public void itemStateChanged ( ItemEvent e ) {speaker . t ogg l e ( ) ;

}} ) ;

// S e t up t h e e v e n t c o n t r o l l e reventCont ro l l e r = new EventContro l l e r (SCXMLURL) ;

40

Page 49: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

eventCont ro l l e r . setSpeaker ( speaker ) ;eventCont ro l l e r . setShowAccData ( true ) ;

// S e t up t h e Wii Remote f i n d e r// F i n d e r w i l l p a s s c o n t r o l t o t h e e v e n t c o n t r o l l e r when f o u n d// S e t t h e F ind b u t t o n t o c o n t r o l i tf i n d e r = new Finder ( eventCont ro l l e r ) ;f i nd . addAct ionListener ( f i nd e r ) ;

// S e t t h e ”Re! i n i t SCXML f i l e ” b u t t o n t o c l e a r t h e d e b u g t e x t a r e a and r e s e t t h e e v e n t c o n t r o l l e rr e i n i t . addAct ionListener (new Act ionL i s t ener ( ) {

public void act ionPerformed ( ActionEvent evt ) {debug . setText ( ”” ) ;eventCont ro l l e r . i n i t (SCXMLURL) ;

}} ) ;

// Add ” a u t o s c r o l l ” f u n c t i o n a l i t y t o t h e o u t p u t t e x t a r e aoutputPane . g e tVe r t i c a l S c r o l lBa r ( ) . addAdjustmentListener (new AdjustmentListener ( ) {

public void adjustmentValueChanged ( AdjustmentEvent e ) {output . s e tCare tPos i t i on ( output . getDocument ( ) . getLength ( ) ) ;

}} ) ;

out . p r i n t l n ( ”Welcome to Sign Weaver ! ” ) ;

// Show t h e f r ame and l o c k t h e s i z es e tV i s i b l e ( true ) ;s e tRe s i z ab l e ( f a l s e ) ;// Compact t h e f r ame ’ s c ompon e n t spack ( ) ;

// Makes s u r e t h e f r ame i s p r o p e r l y d i s p o s e d o f when c l o s e dse tDe fau l tCloseOperat ion (EXIT ON CLOSE ) ;addWindowListener ( this ) ;

}catch ( Exception e ) {

e r r . p r i n t l n ( ”Frame : ”+e . getMessage ( ) ) ;}

}

/When t h e w indow i s c l o s i n g , c l o s e a c t i v e c o n n e c t i o n s .

/public void windowClosing (WindowEvent evt ) {

try {// Re! i n s t a t e S y s t em o u t and e r rSystem . setOut ( sout ) ;System . se tErr ( s e r r ) ;

// D i s c o n n e c t c o n n e c t e d Wii Remo t e si f ( f i nd e r . getWiiRemote ( ) != null )

f i nd e r . getWiiRemote ( ) . d i s connect ( ) ;

System . ex i t ( 0 ) ;}catch ( Exception e ) {

e r r . p r i n t l n ( ”windowClosing : ”+ e . getMessage ( ) ) ;}

}

// Unused w indow h a n d l i n g me t h o d spublic void windowActivated (WindowEvent evt ) {}public void windowClosed (WindowEvent evt ) {}public void windowDeactivated (WindowEvent evt ) {}public void windowDeiconi f ied (WindowEvent evt ) {}public void windowIconi f i ed (WindowEvent evt ) {}public void windowOpened (WindowEvent evt ) {}

/The e n t r y p o i n t o f t h e a p p l i c a t i o n .C r e a t e s a UI .

@param a r g s/

public stat ic void main ( St r ing [ ] args ) {new SignWiiver ( ) ;

}}

A.2 Finder.java

import java . awt . event . ActionEvent ;import java . awt . event . Act ionL i s t ener ;import java . i o . IOException ;import javax . swing . JButton ;import wi i remote j . WiiRemoteJ ;import wi i remote j . WiiRemote ;import wi i remote j . event . WiiRemoteDiscoveredEvent ;import wi i remote j . event . WiiRemoteDiscoveryListener ;

import stat ic java . lang . System . out ;import stat ic java . lang . System . e r r ;

/

41

Page 50: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

A c l a s s t h a t a c t s a s an a c t i o n l i s t e n e r .When i n v o k e d r e t r i e v e s a Wii Remote and p a s s e s c o n t r o l t o t h e e v e n t c o n t r o l l e r .

@au t h o r Per Ma lm e s t i g & S o f i e S u n d b e r g/

public c lass Finder implements Act ionL i s t ener {// O b j e c t t h a t h o u s e s t h e v i r t u a l Wii Remoteprivate WiiRemote wiiRemote ;// I n i t i a l s e t up manage rprivate WiiRemoteDiscoveryListener wrdl ;// The a c t u a l e v e n t c o n t r o l l e rprivate f ina l EventContro l l e r eventCont ro l l e r ;

/C o n s t r u c t o r .@param e c The e v e n t c o n t r o l l e r t h a t i s t o b e u s e d

/public Finder ( EventContro l l e r ec ) {

eventCont ro l l e r = ec ;wrdl = new WiiRemoteDiscoveryListener ( ) {

/The u s e r w an t s t o a b o r t r e t r i e v a l .

/public void f i ndF in i shed ( int numberFound ) {

out . p r i n t l n ( ”Search aborted . ” ) ;}/

We h a v e s u c c e s s f u l l y r e t r e i v e d a Wii Remote ./

public void wiiRemoteDiscovered ( WiiRemoteDiscoveredEvent evt ) {try {

// R e t r i e v e t h e f o u n d Wii RemotewiiRemote = evt . getWiiRemote ( ) ;out . p r i n t l n ( ”Wii Remote found ! ” ) ;

// N o t i f y t h a t c o n n e c t i o n i s madewiiRemote . setLEDIlluminated (0 , true ) ;// S e t up an e v e n t l i s t e n e rwiiRemote . addWiiRemoteListener ( eventCont ro l l e r ) ;// A c c e p t a c c e l e r o m e t e r d a t awiiRemote . setAcce lerometerEnabled ( true ) ;

}catch ( IOException i o e ) {

e r r . p r i n t l n ( i o e . getMessage ( ) ) ;wiiRemote = null ;

}}

} ;}/

F i r e d when t h e c o r r e s p o n d i n g b u t t o n i s p r e s s e d ./

public void act ionPerformed ( ActionEvent evt ) {f ina l JButton source = ( JButton ) evt . getSource ( ) ;// The b u t t o n p r e s s e d i s t h e f i n d b u t t o ni f ( ”Find” . equa l s ( source . getText ( ) ) ) {

try {// S e a r c h e s f o r Wii Remote ( s ) , n o t b l o c k i n g , u n t i l :// 1 . A Wii Remote i s f o und , w h e r e u p on c o n t r o l i s p a s s e d t o t h e e v e n t c o n t r o l l e r// 2 . S t o p f i n d i s c a l l e d , i n w h i c h c a s e t h e r e t r i e v a l i s a b o r t e dWiiRemoteJ . findRemotes ( wrdl ) ;

}catch ( I l l ega lArgumentExcept ion i a e ) {

e r r . p r i n t l n ( i a e . getMessage ( ) ) ;}catch ( I l l e g a l S t a t eExc ep t i on i s e ) {

e r r . p r i n t l n ( i s e . getMessage ( ) ) ;}source . setText ( ”Stop f ind ” ) ;

}else {

WiiRemoteJ . stopFind ( ) ;source . setText ( ”Find” ) ;

}}/

R e t r i e v e t h e v i r t u a l Wii Remote .@ r e t u r n The v i r t u a l Wii Remote

/public WiiRemote getWiiRemote ( ) {

return wiiRemote ;}

}

A.3 EventController.java

import wi i remote j . WiiRemoteExtension ;import wi i remote j . event .WRCombinedEvent ;import wi i remote j . event . WRExtensionEvent ;import wi i remote j . event .WRIREvent ;import wi i remote j . event . WRStatusEvent ;import wi i remote j . event . WiiRemoteListener ;import wi i remote j . event . WRButtonEvent ;import wi i remote j . event . WRAccelerationEvent ;

42

Page 51: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

import java . i o . IOException ;import java . net .URL;import java . u t i l . ArrayList ;import java . u t i l . HashMap ;import org . apache . commons . scxml . SCXMLExecutor ;import org . apache . commons . scxml . SCXMLListener ;import org . apache . commons . scxml . TriggerEvent ;import org . apache . commons . scxml . env . SimpleDispatcher ;import org . apache . commons . scxml . env . SimpleErrorHandler ;import org . apache . commons . scxml . env . SimpleErrorReporter ;import org . apache . commons . scxml . env . SimpleScheduler ;import org . apache . commons . scxml . env . j e x l . JexlContext ;import org . apache . commons . scxml . env . j e x l . Jex lEvaluator ;import org . apache . commons . scxml . i o . SCXMLParser ;import org . apache . commons . scxml . model . CustomAction ;import org . apache . commons . scxml . model . ModelException ;import org . apache . commons . scxml . model .SCXML;import org . apache . commons . scxml . model . Trans i t i on ;import org . apache . commons . scxml . model . Trans i t ionTarget ;import org . xml . sax . SAXException ;

import stat ic java . lang . System . out ;import stat ic java . lang . System . e r r ;

/A c l a s s t h a t l i s t e n s f o r Wii Remote m e s s a g e s and f o r w a r d s them t o t h e SCXML e n g i n e .

@au t h o r Per Ma lm e s t i g & S o f i e S u n d b e r g/

public c lass EventContro l l e r implements WiiRemoteListener {// F l a g s t h a t i n d i c a t e i f we a r e i n r e c o r d i n g s t a t e and i f a c c e l e r a t i o n d a t a s h o u l d b e d e b u g g e dprivate boolean record ing , showAccData ;// P a r s e d SCXML documen t o b j e c tprivate SCXML scxml ;// SCXML e n g i n e o b j e c tprivate SCXMLExecutor engine ;// TTS o u t p u tprivate Speaker speaker ;// Coun t e r f o r c u r r e n t r e c o r d i n g ( f o r d e b u g g i n g )int currRec ;

/C o n s t r u c t o r .@param s c x m l U r l The l o c a t i o n o f t h e d e f i n i n g SCXML documen t

/public EventContro l l e r ( f ina l Str ing scxmlURL) {

showAccData = true ;r e co rd ing = f a l s e ;i n i t ( scxmlURL ) ;

}

/S e t s up t h e SCXML e n g i n e .@param scxmlURL The l o c a t i o n o f t h e d e f i n i n g SCXML documen t

/public void i n i t ( f ina l Str ing scxmlURL) {

scxml = null ;engine = null ;currRec = 0 ;try {

// Put c u s t om a c t i o n ( s ) i n a l i s t t o b e p a s s e d t o t h e p a r s e rArrayList<CustomAction> cas = new ArrayList<CustomAction >();cas . add (new CustomAction ( ”http :// mycustomaction . org /DATA” , ”data” , Data . c lass ) ) ;// Pa r s e t h e d o cumen t and a t t a c h c u s t om a c t i o n sscxml = SCXMLParser . parse ( new URL(scxmlURL ) ,

new SimpleErrorHandler ( ) ,cas ) ;

}catch ( IOException i o e ) {

e r r . p r i n t l n ( ” EventContro l l e r : IOException : ”+ioe . getMessage ( ) ) ;}catch ( SAXException se ) {

e r r . p r i n t l n ( ” EventContro l l e r : SAXException : ”+se . getMessage ( ) ) ;}catch ( ModelException me) {

e r r . p r i n t l n ( ” EventContro l l e r : ModelException : ”+me . getMessage ( ) ) ;}i f ( scxml != null ) {

try {// S e t up t h e e n g i n e o b j e c tengine=new SCXMLExecutor ( new Jex lEvaluator ( ) ,

new SimpleDispatcher ( ) ,new SimpleErrorReporter ( ) ) ;

engine . setStateMachine ( scxml ) ;engine . setSuperStep ( true ) ;engine . setRootContext (new JexlContext ( ) ) ;// A t t a c h a l i s t e n e r t h a t d e b u g s e n t r y , e x i t and t r a n s i t i o n i n f o r m a t i o nengine . addListener ( scxml , new EntryLis tener ( ) ) ;// The S i m p l e S c h e d u l e r a l l o w s u s t o u s e t i m e r s ( d e l a y s w i t h i n <s end >)engine . s e tEventd i spatcher (new SimpleScheduler ( engine ) ) ;engine . go ( ) ;

}catch ( ModelException me) {

e r r . p r i n t l n ( ” EventContro l l e r : ModelException : ”+me . getMessage ( ) ) ;}

}}

43

Page 52: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

/S e t t h e s p e e c h o u t p u t o b j e c t .@param s p e a k e r The o b j e c t t h a t w i l l h a n d l e s p e e c h o u t p u t

/public void setSpeaker ( Speaker speaker ) {

this . speaker = speaker ;}

/S e t w h e t h e r t o show d e b u g a c c e l e r a t i o n d a t a .@param s h owA c c I n f o t r u e f o r a c c e l e r a t i o n da t a , f a l s e f o r none

/public void setShowAccData (boolean showAccData ) {

this . showAccData = showAccData ;}// L i s t e n s f o r c h a n g e s i n t h e s t a t e mach i n e and f i r e s t h e a p p r o p r i a t e me t hod on e v e n t s .// We can t h u s l o g e v e r y c h a n g e o f s t a t e i n t h e SCXML e n g i n e .// o nEn t r y : when a s t a t e i s b e i n g e n t e r e d .// o n T r a n s i t i o n : when c o n t r o l i s b e i n g p a s s e d f r om one s t a t e t o a n o t h e r , v i a an e v e n t .// o n E x i t : when a s t a t e i s b e i n g e x i t e d .protected class EntryLis tener implements SCXMLListener {

public void onEntry ( f ina l Trans i t ionTarget entered ) {e r r . p r i n t l n ( currRec + ” onEntry : ” + entered . get Id ( ) ) ;

}public void onTrans i t ion ( f ina l Trans i t ionTarget from ,

f ina l Trans i t ionTarget to ,f ina l Trans i t i on t r a n s i t i o n ) {

e r r . p r i n t l n ( currRec +” from : ” + from . get Id ( ) +” to : ” + to . get Id ( ) +” !> ” + t r a n s i t i o n . getEvent ( ) ) ;

}public void onExit ( f ina l Trans i t ionTarget ex i t ed ) {

e r r . p r i n t l n ( currRec + ” onExit : ” + ex i t ed . get Id ( ) ) ;}

}

/I s f i r e d w h e n e v e r a b u t t o n i s p r e s s e d on t h e Wi iRemote .@param e v t C o n t a i n s i n f o r m a t i o n a b o u t t h e s t a t e o f t h e b u t t o n

/public void buttonInputReceived (WRButtonEvent evt ) {

try {// The b u t t o n p r e s s e d i s e i t h e r A o r Bi f ( evt . isAnyPressed (WRButtonEvent .A + WRButtonEvent .B) ) {

engine . t r i gge rEvent (new TriggerEvent ( ” record ” , TriggerEvent .SIGNAL EVENT) ) ;r e co rd ing = true ;

}// The b u t t o n r e l e a s e d i s A o r Belse i f ( evt . wasReleased (WRButtonEvent .A) | | evt . wasReleased (WRButtonEvent .B) ) {

// We a r e no l o n g e r i n t h e r e c o r d i n g s t a t er eco rd ing = f a l s e ;// S t o p t h e mach i n eengine . t r i gge rEvent (new TriggerEvent ( ” stop ” , TriggerEvent .SIGNAL EVENT) ) ;// Read t h e g l o b a l d a t a and p r i n t t o o u t p u t t e x t a r e a and t o TTSStr ing say = Data . ge tSt r ( ) ;i f ( say != null ) {

out . p r i n t l n ( say ) ;speaker . speak ( say ) ;

}// R e s e t t h e d a t aData . r e s e t ( ) ;

}}catch ( ModelException me) {

e r r . p r i n t l n ( ” buttonInputReceived : ModelException : ”+me . getMessage ( ) ) ;}catch ( Exception e ) {

e r r . p r i n t l n ( ” buttonInputReceived : Exception : ”+e . getMessage ( ) ) ;}

}

/I s f i r e d w h e n e v e r t h e Wi iRemote i s moved .@param e v t C o n t a i n s a c c e l e r a t i o n d a t a :

X , Y , and Z!a c c e l e r a t i o n ( i n no . o f G) , p i t c h and r o l l ( i n r a d i a n s )/

public void acce l e ra t i on InputRece ived ( WRAccelerationEvent evt ) {// We a r e r e c o r d i n g when t h e A o r B b u t t o n i s p r e s s e d .i f ( r eco rd ing ) {

try {double x = evt . getXAcce lerat ion ( ) ;double y = evt . getYAcce lerat ion ( ) ;double z = evt . ge tZAcce l e ra t ion ( ) ;double p = evt . getPitch ( ) ;double r = evt . ge tRo l l ( ) ;

// Pa c k a g e t h e d a t a i n a k e y / v a l u e map f o r t h e e n g i n e t o h a n d l e .HashMap<Str ing , Double> payload = new HashMap<Str ing , Double >(5 ,( f loat ) 0 . 1 ) ;payload . put ( ”x” , x ) ;payload . put ( ”y” , y ) ;payload . put ( ”z” , z ) ;payload . put ( ”p” ,p ) ;payload . put ( ” r ” , r ) ;// F i r e an ” a c c ” e v e n t w i t h a c c omp an y i n g a c c e l e r a t i o n d a t a on t h e SCXML e n g i n e o b j e c tengine . t r i gge rEvent (new TriggerEvent ( ” acc ” , TriggerEvent .SIGNAL EVENT, payload ) ) ;

i f ( showAccData )e r r . format ( ”%d X: %f Y: %f Z : %f Pitch : %f Rol l : %f \n” , currRec , x , y , z , p , r ) ;

44

Page 53: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

}catch ( Exception e ) {

e r r . p r i n t l n ( ” acce l e ra t i on InputRece ived : Exception : ”+e . getMessage ( ) ) ;}

}}

/I s f i r e d when t h e Wii Remote i s d i s c o n n e c t e d .

/public void disconnected ( ) {

try {// S t o p t h e mach i n eengine . t r i gge rEvent (new TriggerEvent ( ” stop ” , TriggerEvent .SIGNAL EVENT) ) ;

}catch ( ModelException me) {

e r r . p r i n t l n ( ” d i sconnected : ” ) ;}e r r . p r i n t l n ( ”Wii Remote d i sconnected . ” ) ;

}

// Unused Wii Remote e v e n t h a n d l i n g me t h o d spublic void IRInputReceived (WRIREvent evt ) {}public void combinedInputReceived (WRCombinedEvent evt ) {}public void extensionConnected ( WiiRemoteExtension ext ) {}public void extens ionDisconnected ( WiiRemoteExtension ext ) {}public void extens ionInputRece ived (WRExtensionEvent evt ) {}public void e x t e n s i o nPa r t i a l l y I n s e r t e d ( ) {}public void extensionUnknown ( ) {}public void statusReported (WRStatusEvent evt ) {}

}

A.4 Data.java

import java . u t i l . Co l l e c t i on ;import org . apache . commons . l ogg ing . Log ;import org . apache . commons . scxml . ErrorReporter ;import org . apache . commons . scxml . EventDispatcher ;import org . apache . commons . scxml . SCInstance ;import org . apache . commons . scxml . SCXMLExpressionException ;import org . apache . commons . scxml . model . Action ;import org . apache . commons . scxml . model . ModelException ;

/A cu s t om a c t i o n d a t a c o l l e c t o r .B u i l t w i t h t h e p u r p o s e o f a l l o w i n g f o r i n s t a n c e s o f t h e c l a s s t o e x am i n e o r s e t g l o b a l ( s t a t i c ) d a t a .

@au t h o r Per Ma lm e s t i g & S o f i e S u n d b e r g/

public c lass Data extends Action {public stat ic Str ing STR=null ;public stat ic int MC=0;private Str ing myStr ;private int mc;

public Data ( ) {super ( ) ;

}public f ina l s tat ic Str ing getSt r ( ) {

return STR;}public stat ic void r e s e t ( ) {

STR=null ;MC=0;

}public void s e tSe t ( St r ing addStr ) {

myStr=addStr ;}public void setMc ( int mc) {

this .mc=mc ;}public void execute ( f ina l EventDispatcher evtDispatcher ,

f ina l ErrorReporter errRep , f ina l SCInstance sc Instance ,f ina l Log appLog , f ina l Co l l e c t i on der ivedEvents )

throws ModelException , SCXMLExpressionException {i f (mc>MC) {

STR=myStr ;MC=mc;

}}

}

A.5 Speaker.java

import com . sun . speech . f r e e t t s . Voice ;import com . sun . speech . f r e e t t s . VoiceManager ;import com . sun . speech . f r e e t t s . audio . JavaClipAudioPlayer ;/

A c l a s s t h a t s u p p l i e s a FreeTTS s t a n d a r d v o i c e .

@au t h o r Per Ma lm e s t i g & S o f i e S u n d b e r g

45

Page 54: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

/public c lass Speaker {

private Voice vo i ce ;private boolean enabled ;

/C o n s t r u c t o r .

/public Speaker ( ) {

enabled=true ;// R e q u e s t t h e J a v a Sound API v o i c e manage r f o r a FreeTTS v o i c evo i ce=VoiceManager . ge t In s tance ( ) . getVoice ( ” kevin16 ” ) ;// S t r e am t h e o u t p u t v i a t h e J a v a Sound APIvo i ce . setAudioPlayer (new JavaClipAudioPlayer ( ) ) ;// A l l o c a t e s u f f i c i e n t r e s o u r c e s f o r t h i s v o i c evo i ce . a l l o c a t e ( ) ;

}

/Mute s / un!mut e s t h e s p e a k e r v o i c e .

/public void t ogg l e ( ) {

enabled=! enabled ;}

/O u t p u t s t h e u t t e r a n c e .

@param s t r The u t t e r a n c e t o b e s p o k e n/

public void speak ( f ina l Str ing s t r ) {i f ( enabled )

vo i ce . speak ( s t r ) ;}

}

46

Page 55: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

Bilaga B

SCXML-kod

<?xml ve r s i on=” 1 .0 ” encoding=”UTF!8”?><scxml xmlns=” ht tp : //www.w3 . org /2005/07/ scxml”

xmlns:sp=” ht tp : //mycustomaction . org /DATA”ver s i on=” 1 .0 ”i n i t i a l s t a t e=”Stopped”>

<para l le l id=”Model3”><!!!

Grammar d e f i n e s s e n t e n c e s c o n s i s t i n g o f one o r more wo r d s .!!><para l le l id=”Grammar”>

<!!!S i n g l e!word s e n t e n c e s

!!><state id=”S1”>

< i n i t i a l><transit ion t a rg e t=”S1 1”/>

</ i n i t i a l><state id=”S1 1”>

<transit ion event=”pos” ta rge t=”S1 1”><sp :data s e t=”Yes . ” mc=”2”/>

</ transit ion><transit ion event=”neg” ta rge t=”S1 1”>

<sp :data s e t=”No ! ” mc=”2”/></ transit ion><transit ion event=” sor ry ” ta rge t=”S1 1”>

<sp :data s e t=”Sorry . ” mc=”3”/></ transit ion>

</ state></ state><!!!

Comp l e x s e n t e n c e s!!><state id=”S2”>

< i n i t i a l><transit ion t a rg e t=”S2 1”/>

</ i n i t i a l><state id=”S2 1”>

<transit ion event=” h e l l o ” ta rge t=”S2 2”><sp :data s e t=”Hel lo ! ” mc=”2”/>

</ transit ion></ state><state id=”S2 2”>

<transit ion event=”you” ta rge t=”S2 1”><sp :data s e t=”Hel lo there ! ” mc=”3”/>

</ transit ion><transit ion event=”neg” ta rge t=”S2 1”>

<sp :data s e t=”Goodbye ! ” mc=”4”/></ transit ion>

</ state></ state><state id=”S3”>

< i n i t i a l><transit ion t a rg e t=”S3 1”/>

</ i n i t i a l><state id=”S3 1”>

<transit ion event=” soso ” ta rge t=”S3 2”><sp :data s e t=”Maybe . ” mc=”2”/>

</ transit ion></ state><state id=”S3 2”>

<transit ion event=”pos” ta rge t=”S3 3”><sp :data s e t=”Pretty good ! ” mc=”4”/>

</ transit ion><transit ion event=”neg” ta rge t=”S3 4”>

<sp :data s e t=”Pretty bad ! ” mc=”4”/></ transit ion>

</ state><state id=”S3 3”>

47

Page 56: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

<transit ion event=” thanks ” ta rge t=”S3 1”><sp :data s e t=”Pretty good , thank you ! ” mc=”7”/>

</ transit ion></ state><state id=”S3 4”>

<transit ion event=” sor ry ” ta rge t=”S3 1”><sp :data s e t=”Pretty bad I ’m a f r a i d ! ” mc=”7”/>

</ transit ion></ state>

</ state><state id=”S5”>

< i n i t i a l><transit ion t a rg e t=”S5 1”/>

</ i n i t i a l><state id=”S5 1”>

<transit ion event=”you” ta rge t=”S5 2”/></ state><state id=”S5 2”>

<transit ion event=” f e e l ” ta rge t=”S5 3”/></ state><state id=”S5 3”>

<transit ion event=”pos” ta rge t=”S5 4”/></ state><state id=”S5 4”>

<transit ion event=” quest ion ” ta rge t=”S5 1”><sp :data s e t=”Do you f e e l good?” mc=”8”/>

</ transit ion></ state>

</ state><state id=”S6”>

< i n i t i a l><transit ion t a rg e t=”S6 1”/>

</ i n i t i a l><state id=”S6 1”>

<transit ion event=” c i r c l e ” ta rge t=”S6 2”/></ state><state id=”S6 2”>

<transit ion event=” c i r c l e ” ta rge t=”S6 3”/></ state><state id=”S6 3”>

<transit ion event=” thanks ” ta rge t=”S6 1”><sp :data s e t=”Please e l abo ra t e ! ” mc=”11”/>

</ transit ion></ state>

</ state><state id=”S7”>

< i n i t i a l><transit ion t a rg e t=”S7 1”/>

</ i n i t i a l><state id=”S7 1”>

<transit ion event=”me” ta rge t=”S7 2”/></ state><state id=”S7 2”>

<transit ion event=”know” ta rge t=”S7 3”><sp :data s e t=” I know . ” mc=”3”/>

</ transit ion></ state><state id=”S7 3”>

<transit ion event=”you” ta rge t=”S7 4”><sp :data s e t=” I know you . ” mc=”4”/>

</ transit ion></ state><state id=”S7 4”>

<transit ion event=” quest ion ” ta rge t=”S7 1”><sp :data s e t=”Do I know you?” mc=”7”/>

</ transit ion></ state>

</ state><state id=”S8”>

< i n i t i a l><transit ion t a rg e t=”S8 1”/>

</ i n i t i a l><state id=”S8 1”>

<transit ion event=”help ” ta rge t=”S8 2”><sp :data s e t=”Help ! ” mc=”3”/>

</ transit ion></ state><state id=”S8 2”>

<transit ion event=”me” ta rge t=”S8 1”><sp :data s e t=”Help me ! ” mc=”4”/>

</ transit ion></ state>

</ state><state id=”S9”>

< i n i t i a l><transit ion t a rg e t=”S9 1”/>

</ i n i t i a l><state id=”S9 1”>

<transit ion event=” thanks ” ta rge t=”S9 2”><sp :data s e t=”Thank you ! ” mc=”3”/>

</ transit ion></ state><state id=”S9 2”>

<transit ion event=”neg” ta rge t=”S9 1”><sp :data s e t=”No thanks . ” mc=”5”/>

</ transit ion></ state>

</ state></para l le l>

48

Page 57: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

<!!!Word d e f i n e s wo r d s c o n s i s t i n g o f one o r more morphemes .

!!><para l le l id=”Word”>

<!!!S i n g l e!morpheme wo r d s

!!><state id=”W1”>

< i n i t i a l><transit ion t a rg e t=”W1 1”/>

</ i n i t i a l><state id=”W1 1”>

<transit ion event=”back” ta rge t=”W1 1”><send event=”me”/>

</ transit ion><transit ion event=” forward ” ta rge t=”W1 1”>

<send event=”you”/></ transit ion>

</ state></ state><!!!

Comp l e x wo r d s!!><state id=”W2”>

< i n i t i a l><transit ion t a rg e t=”W2 1”/>

</ i n i t i a l><state id=”W2 1”>

<transit ion event=” r o l l l e f t ” ta rge t=”W2 2”/></ state><state id=”W2 2”>

<transit ion event=” r o l l r i g h t ” ta rge t=”W2 1”><send event=” soso ”/>

</ transit ion></ state>

</ state><state id=”W3”>

< i n i t i a l><transit ion t a rg e t=”W3 1”/>

</ i n i t i a l><state id=”W3 1”>

<transit ion event=”up” ta rge t=”W3 2”/></ state><state id=”W3 2”>

<transit ion event=”down” ta rge t=”W3 1”><send event=”pos”/>

</ transit ion></ state>

</ state><state id=”W4”>

< i n i t i a l><transit ion t a rg e t=”W4 1”/>

</ i n i t i a l><state id=”W4 1”>

<transit ion event=”down” ta rge t=”W4 2”/></ state><state id=”W4 2”>

<transit ion event=”up” ta rge t=”W4 1”><send event=”neg”/>

</ transit ion></ state>

</ state><state id=”W5”>

< i n i t i a l><transit ion t a rg e t=”W5 1”/>

</ i n i t i a l><state id=”W5 1”>

<transit ion event=”down” ta rge t=”W5 2”/></ state><state id=”W5 2”>

<transit ion event=” up r i ght ” ta rge t=”W5 3”/></ state><state id=”W5 3”>

<transit ion event=” l e f t ” ta rge t=”W5 1”><send event=”help ”/>

</ transit ion></ state>

</ state><state id=”W6”>

< i n i t i a l><transit ion t a rg e t=”W6 1”/>

</ i n i t i a l><state id=”W6 1”>

<transit ion event=” l e f t ” ta rge t=”W6 2”/></ state><state id=”W6 2”>

<transit ion event=” r i gh t ” ta rge t=”W6 1”><send event=” h e l l o ”/>

</ transit ion></ state>

</ state><state id=”W7”>

< i n i t i a l><transit ion t a rg e t=”W7 1”/>

</ i n i t i a l><state id=”W7 1”>

<transit ion event=” r i gh t ” ta rge t=”W7 2”/></ state>

49

Page 58: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

<state id=”W7 2”><transit ion event=” down le f t ” ta rge t=”W7 3”/>

</ state><state id=”W7 3”>

<transit ion event=” r i gh t ” ta rge t=”W7 1”><send event=” quest ion ”/>

</ transit ion></ state>

</ state><state id=”W8”>

< i n i t i a l><transit ion t a rg e t=”W8 1”/>

</ i n i t i a l><state id=”W8 1”>

<transit ion event=” r i gh t ” ta rge t=”W8 2”/></ state><state id=”W8 2”>

<transit ion event=”up” ta rge t=”W8 3”/></ state><state id=”W8 3”>

<transit ion event=” l e f t ” ta rge t=”W8 4”/></ state><state id=”W8 4”>

<transit ion event=”down” ta rge t=”W8 1”><send event=” square ”/>

</ transit ion></ state>

</ state><state id=”W9”>

< i n i t i a l><transit ion t a rg e t=”W9 1”/>

</ i n i t i a l><state id=”W9 1”>

<transit ion event=”down right ” ta rge t=”W9 2”/></ state><state id=”W9 2”>

<transit ion event=” up r i ght ” ta rge t=”W9 1”><send event=” f e e l ”/>

</ transit ion></ state>

</ state><state id=”W10”>

< i n i t i a l><transit ion t a rg e t=”W10 1”/>

</ i n i t i a l><state id=”W10 1”>

<transit ion event=”down right ” ta rge t=”W10 2”/></ state><state id=”W10 2”>

<transit ion event=” down le f t ” ta rge t=”W10 3”/></ state><state id=”W10 3”>

<transit ion event=” up l e f t ” ta rge t=”W10 4”/></ state><state id=”W10 4”>

<transit ion event=” up r i ght ” ta rge t=”W10 1”><send event=” c i r c l e ”/>

</ transit ion></ state>

</ state><state id=”W11”>

< i n i t i a l><transit ion t a rg e t=”W11 1”/>

</ i n i t i a l><state id=”W11 1”>

<transit ion event=”down right ” ta rge t=”W11 2”/></ state><state id=”W11 2”>

<transit ion event=”up” ta rge t=”W11 3”/></ state><state id=”W11 3”>

<transit ion event=” down le f t ” ta rge t=”W11 1”><send event=” thanks ”/>

</ transit ion></ state>

</ state><state id=”W12”>

< i n i t i a l><transit ion t a rg e t=”W12 1”/>

</ i n i t i a l><state id=”W12 1”>

<transit ion event=” up l e f t ” ta rge t=”W12 2”/></ state><state id=”W12 2”>

<transit ion event=”down” ta rge t=”W12 1”><send event=”know”/>

</ transit ion></ state>

</ state><state id=”W13”>

< i n i t i a l><transit ion t a rg e t=”W13 1”/>

</ i n i t i a l><state id=”W13 1”>

<transit ion event=” down le f t ” ta rge t=”W13 2”/></ state><state id=”W13 2”>

<transit ion event=”up” ta rge t=”W13 3”/></ state>

50

Page 59: Sign W iiver - tricomsolutions.seSign W iiver en im ple men tatio n av tec kenspr ûaktekno logi Pe r Ma lme sti g Sof ie Sun dber g Kan did atup psats i spr ûakt ekn ologi V en tilerades

<state id=”W13 3”><transit ion event=”down right ” ta rge t=”W13 1”>

<send event=” sor ry ”/></ transit ion>

</ state></ state>

</para l le l>

<state id=”Morpheme”>< i n i t i a l>

<transit ion t a rg e t=”Recording ”/></ i n i t i a l><state id=”Recording ”>

<!!!S i n c e S t o p p e d i s o u t s i d e t h e <para l le l> , a transit ion t o i t w i l l s t o pa l l r e c o g n i t i o n i n a l l para l le l s t a t e s .

!!><transit ion event=” stop ” ta rge t=”Stopped”/>

<!!!Morpheme ” generator ” . The e n g i n e w i l l s t e p t h r o u g h t h e c o n d i t i o n s s e q u e n t i a l l y .As s o on a s d a t a ma t c h e s a c o n d i t i o n , an a p p r o p r i a t e morpheme e v e n t i s s e n t .T h e r e f o r e , i n t e r n a l o r d e r m a t t e r s .

!!><transit ion event=”acc ”

cond=” eventdata . x l t !2 and eventdata . z l t 1 .5 and eventdata . z gt 0 .5 ”ta rge t=”Recording ”>

<send event=” r i gh t ”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . x gt 2 and eventdata . z l t 1 .5 and eventdata . z gt 0 .5 ”ta rge t=”Recording ”>

<send event=” l e f t ”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . x l t !1 and eventdata . z l t 0”ta rge t=”Recording ”>

<send event=”down right ”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . x gt 1 and eventdata . z l t 0”ta rge t=”Recording ”>

<send event=” down le f t ”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . x l t !1 and eventdata . z gt 2”ta rge t=”Recording ”>

<send event=” up r i ght ”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . x gt 1 and eventdata . z gt 2”ta rge t=”Recording ”>

<send event=” up l e f t ”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . y l t !1.5 and eventdata . x l t 0 .5 and eventdata . x gt !0.5”ta rge t=”Recording ”>

<send event=” forward ”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . y gt 1 .0 and eventdata . x l t 0 .5 and eventdata . x gt !0.5”ta rge t=”Recording ”>

<send event=”back”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . z gt 3 and eventdata . x gt !1 and eventdata . x l t 1”ta rge t=”Recording ”>

<send event=”up”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . z l t !1 and eventdata . x gt !1 and eventdata . x l t 1”ta rge t=”Recording ”>

<send event=”down”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . r gt 1 and eventdata . x gt !1 and eventdata . x l t 1”ta rge t=”Recording ”>

<send event=” r o l l r i g h t ”/></ transit ion><transit ion event=”acc ”

cond=” eventdata . r l t !1 and eventdata . x gt !1 and eventdata . x l t 1”ta rge t=”Recording ”>

<send event=” r o l l l e f t ”/></ transit ion>

</ state></ state>

</para l le l>

<!!!W i l l o n l y r e s p o n d t o r e q u e s t s f o r new r e c o r d i n g s .

!!><state id=”Stopped”>

<transit ion event=” record ” ta rge t=”Model3”/></ state>

</scxml>

51