• No results found

Implementation av ett interface till Emotiv Epoc

N/A
N/A
Protected

Academic year: 2022

Share "Implementation av ett interface till Emotiv Epoc"

Copied!
47
0
0

Loading.... (view fulltext now)

Full text

(1)

till Emotiv Epoc

Nicklas Hansson

28 september 2011

Examensarbete f¨ or kandidatexamen i datavetenskap, 15 h¨ ogskolepo¨ ang Handledare p˚ a CS-UmU: Daniel Sj¨ olie

Examinator: Pedher Johansson

Ume˚ a Universitet

Institutionen f¨ or datavetenskap 901 87 UME˚ A

SVERIGE

(2)
(3)

vice with the brain of a human or an animal. By doing this the conventional use of a mouse or keyboard can be circumvented, which can greatly benefit people with different types of diseases that cause paralysis or other loss of motor control, such as Amyotrophic lateral sclerosis (ALS). A BCI can also be used for cognitive training of either healthy or mentally impaired subjects to increase cognitive capabilities.

In this thesis an implementation of an interface is made against such a device, the Emotiv EPOC Headset. The result is meant to be a stable basis for further study using the device. An in-depth study of the history of EEG and its current use in clinical work and research in the topics of BCI as well as Human-computer interaction (HCI) is presented. It is also examined how a user’s cognitive state can improve computer applications for cognitive training.

Related work concerning different BCI tools and other implementations of the Emotiv EPOC is studied as well as future work. The actual implementation is described together with possible limitations to the solution.

(4)

Sammanfattning

F¨altet hj¨arna-dator interface, eng. Brain-computer interfaces, (BCI) handlar om att koppla samman en extern utrustning med hj¨arnan av ett djur eller en m¨anniska. Genom att g¨ora detta kan man kringg˚a den konventionella anv¨andningen av exempelvis mus eller tangentbord, vilket kan gynna personer med olika typer av handikapp och sjukdomar som orsakar f¨orlamning eller annan neds¨attning av muskelkontroll, s˚asom Amyotrofisk lateralsk- leros (ALS). En BCI kan ¨aven anv¨andas f¨or kognitiv tr¨aning av antingen friska eller mentalt handikappade personer f¨or att ¨oka dennes kognitiva f¨orm˚aga.

I det h¨ar examensarbetet implementeras ett interface mot en s˚adan utrustning, Emo- tiv EPOC Headset. Resultatet ¨ar menat att vara en stabil grund f¨or fortsatta studier med denna utrustning. En f¨ordjupningsstudie g¨ors ¨over historiken bakom EEG och dess nuva- rande anv¨andning i kliniskt arbete samt inom forskningsomr˚adena BCI och MDI (M¨anniska- datorinteraktion, eng. Human-computer interaction, HCI). Det unders¨oks ¨aven hur en anv¨andares kognitiva tillst˚and kan anv¨andas f¨or att f¨orb¨attra datorapplikationer f¨or kognitiv tr¨aning.

Relaterade arbeten kring olika BCI-verktyg och andra implementationer av Emotiv EPOC studeras samt framtida arbeten. Den faktiska implementationen beskrivs tillsammans med eventuella begr¨ansningar p˚a l¨osningen.

(5)
(6)

Inneh˚ all

1 Introduktion 1

1.1 Relaterat arbete . . . 1

1.1.1 Emotiv Epoc . . . 1

1.1.2 Ramverk f¨or Brain-computer Interfaces . . . 2

1.1.2.1 BCI2000 . . . 3

1.1.2.2 OpenViBE . . . 5

2 Problembeskrivning 7 3 F¨ordjupningsstudie 9 3.1 Historiken bakom EEG . . . 9

3.2 Vad ¨ar EEG . . . 10

3.2.1 Signaltyper . . . 11

3.2.1.1 Delta . . . 11

3.2.1.2 Theta . . . 12

3.2.1.3 Alpha . . . 12

3.2.1.4 Mu . . . 13

3.2.1.5 Beta . . . 13

3.2.1.6 Gamma . . . 14

3.2.2 P300 . . . 14

3.2.3 EEG elektrodpositioner . . . 16

3.3 Vad anv¨ands EEG till . . . 17

3.3.1 Kliniskt . . . 17

3.3.2 Forskning och utveckling . . . 18

3.4 Hur anpassad interaktion kan f¨orb¨attra datorapplikationer f¨or kognitiv tr¨aning 18 4 Resultat 21 4.1 Utf¨orande . . . 21

4.1.1 Server . . . 22

4.1.2 Klient . . . 22

4.1.3 Protokoll . . . 23

iii

(7)

4.1.3.1 EEG . . . 23 4.1.3.2 Expressiv . . . 24 4.1.3.3 Ovrigt . . . .¨ 25

5 Slutsatser 27

5.1 Utf¨orande av m˚al . . . 27 5.2 L¨osningens begr¨ansningar . . . 28 5.3 Framtida arbete . . . 29

6 Tacksamhetsbetygelser 31

Referenser 33

A Anv¨andarhandledning 37

A.1 Server . . . 37 A.2 Klient . . . 37

(8)

Figurer

1.1 Startf¨onstret som visas vid start av BCI2000 . . . 4

1.2 EEG representeras i BCI2000 fr˚an en signalk¨alla . . . 4

1.3 Ett scenario konstrueras i OpenViBE . . . 5

3.1 Den f¨orsta m¨anskliga EEG inspelningen av Hans Berger 1924 . . . 9

3.2 Epileptiska topp- och v˚ag-utsl¨app ¨overvakas med EEG . . . 10

3.3 Deltav˚agor . . . 12

3.4 Thetav˚agor . . . 12

3.5 Alphav˚agor . . . 13

3.6 Muv˚agor . . . 13

3.7 Betav˚agor . . . 14

3.8 Gammav˚agor . . . 14

3.9 Elektrodpositioner . . . 16

4.1 Interaktion mellan de olika komponenterna i systemet. . . 22

v

(9)
(10)

Kapitel 1

Introduktion

Arbetet syftar till att skapa en koppling mellan ett headset (Emotiv Epoc) [42] som avl¨aser Elektroencefalografi-signaler (EEG) fr˚an hj¨arnan till ett befintligt spel. L¨osningen som kon- strueras skall kunna p˚averka applikationen p˚a n˚agot vis, d¨ar minimum ¨ar att n˚agon anpass- ning av sv˚arighetsgrad genom att byta niv˚a i spelet och att kunna f¨or¨andra interfacet s˚a som exempelvis font storleken p˚a text som visas. Arbetet skall producera en l¨osning som enkelt kan byggas vidare p˚a och l¨agga till mer funktionalitet till.

I en f¨ordjupningsstudie tas begrepp s˚asom brain-computer interface (BCI) och human- computer interaction (HCI) upp, samt hur dessa anv¨ands i samband med EEG och hur aktuell forskning i dessa omr˚aden fortskrider. Det ges ¨aven en ¨oversikt av EEG; hur detta anv¨ands inom forskning och i praktiken.

1.1 Relaterat arbete

1.1.1 Emotiv Epoc

Det finns flera arbeten som ¨ar relaterade till den implementation som genomf¨orts f¨or det h¨ar examensarbetet och finns beskrivna nedan. Det som ¨ar gemensamt f¨or dessa arbeten ¨ar att de ¨ar implementationer till Emotiv Epoc p˚a n˚agot vis.

– EmotivSharp [48] ¨ar ett open source projekt under utveckling som implementerat Emotiv SDK i C# och har ett enkelt GUI f¨or att visualisera vissa m¨atv¨arden som f˚as fr˚an headsetet. I paketet finns ¨aven n˚agra simpla spel som kan anv¨andas tillsammans med Emotiv headsetet.

– Ett verktyg f¨or att m¨ata hj¨arnv˚agor i barn med cerebral pares (f¨orkortat CP) [49] [50].

– Styra en robotarm som f¨orflyttar en pingpongboll fr˚an en plats till en annan [51].

I den h¨ar implementationen ger Epoc headsetet knapptryckningar som utdata (och anv¨andarens tankar som indata) som ¨ar mappade till robotens f¨orflyttning.

– Kontrollera en robot som ska s¨oka sig genom en simpel labyrint [52].

– Kontrollera en fj¨arrkontroll till en TV [53].

1

(11)

Det finns m˚anga fler arbeten som involverar Emotiv Epoc headsetet, varav m˚anga g˚ar att finna via deras officiella forum (se ref [57]).

1.1.2 Ramverk f¨ or Brain-computer Interfaces

Det finns ett antal ramverk f¨or att hantera EEG m¨atv¨arden och implementera universella BCI l¨osningar, och n˚agra av dessa beskrivs nedan. De flesta BCI system anv¨ander EEG signaler fr˚an en eller flera kanaler p˚a grund av dess portabilitet. Det finns flera krav p˚a ett ramverk av denna typ: [1]

– Flexibelt. BCI ¨ar ett st¨andigt utvecklande omr˚ade och ett ramverk m˚aste kunna han- tera detta p˚a ett bra vis. Ramverket b¨or d¨arf¨or erbjuda flexibilitet i utbyggnad av metoder och omdefinitioner.

– Enkelt att anv¨anda. BCI forskare kommer fr˚an m˚anga olika f¨alt s˚asom psykologer, interaktionsdesigner, signalhanteringsingenj¨orer, datavetare, etc. Alla dessa kommer inte ha samma baskunskaper och BCI ramverket b¨or d¨arf¨or ha rigor¨os dokumentation

¨over praxis, rimliga default v¨arden, markera och f¨orklara vanliga fel i anv¨andning samt g¨ora vanliga uppgifter l¨atta att utf¨ora.

– Effektivitet. Vilka algoritmer som kan appliceras p˚a olika problem ¨ar ofta begr¨ansat av den datorkraft som beh¨ovs och finns tillg¨anglig. Det ¨ar d¨arf¨or viktigt att den ber¨akningsm¨assiga effektiviteten i ramverket ¨ar god. P˚a samma s¨att ¨ar det viktigt att det ¨ar enkelt att testa och utveckla nya metoder, d˚a det kan ta m˚anga iterationer att fastst¨alla en design.

– Robust. BCI forskning handlar m˚anga g˚anger om att g¨ora empiriska studier av en given BCI design fr˚an ett begr¨ansat set med m¨atv¨arden och tester, vilket g¨or risken f¨or slumpm¨assiga fel st¨andigt n¨arvarande. P˚a grund av detta ¨ar det m¨ojligt att nu- varande designer inte korrekt modellerar och kompenserar f¨or den stora skillnaden i icke-station¨ara EEG signaler, dvs. signaler vars (statistiska) egenskap f¨or¨andras med tiden. P˚a grund av begr¨ansad tr¨aning tenderar BCI system fungera b¨ast i specifika

¨amnen och situationer som de var utvecklade i och kan visa sig icke-robust n¨ar inspel- ningssituationen f¨or¨andras. D¨armed reflekterar n¨astan alltid prestandan den specifika inspelningssituationen, men p˚alitligheten hos BCI system m˚aste vara viktigt f¨or att hitta anv¨andningsomr˚aden utanf¨or forskningssammanhang. S˚aledes b¨or ideala BCI ramverk underl¨atta rutinm¨assiga insamlingar av stora m¨angder av tr¨aning och test- data.

(12)

1.1. Relaterat arbete 3

1.1.2.1 BCI2000

BCI2000 ¨ar ett allm¨annyttigt ramverk designat f¨or BCI forskning [33]. Den kan ocks˚a anv¨andas f¨or datainsamling, stimulipresentation och applikationer f¨or att ¨overvaka hj¨arnaktivitet.

Sen det sl¨apptes 2001 har BCI2000 haft stor inverkan p˚a BCI forskning runtom i v¨arlden.

˚Ar 2009 anv¨ands BCI2000 av n¨ara 500 forskningslaboratorier. Eftersom det ¨ar gratis f¨or forsknings- och utbildningsinstitutioner ¨ar det m˚anga som bidragit till projektet [1].

BCI2000 utvecklades prim¨art f¨or allm¨annyttig utveckling men kan ¨aven anv¨andas f¨or att studera HCI. BCI2000 kan lagra och visa ljud och video med h¨og uppl¨osning, samtidigt som hj¨arnv˚agor och anv¨andarens svar, s˚asom fr˚an joystick, knapptryckningar, och ¨ogonr¨orelser kontinuerligt spelas in och lagras i ett generellt format. Att kunna logga m¨atv¨arden fr˚an all m¨ojlig utrustning synkroniserat med stimuli utan att kr¨ava mycket programmering b¨or vara anv¨andbart f¨or m˚anga BCI laboratorier [1].

BCI2000 ger en k¨arna med vanliga BCI implementationer i ett standardiserat BCI- ramverk. BCI2000 kommer fullt med dokumenterade komponenter som visat sig robusta i en rad olika BCI arbeten. BCI2000 ¨ar modul¨art och s˚aledes ˚ateranv¨ands kod i olika modu- ler. Detta g¨or fels¨okning l¨attare och fel kan ˚atg¨ardas p˚a en plats ist¨allet f¨or flera. Eftersom BCI2000 ¨ar modul¨art och flexibelt ¨ar det enkelt att kombinera med olika mjukvarukompo- nenter, samt f¨or¨andring eller skapande av nya moduler [1].

Icke vinstdrivande f¨oretag samt anv¨andare i forskning- och utbildningssyfte kan erh˚alla BCI2000 tillsammans med k¨allkoden. Den f¨ardigkompilerade versionen kommer med en m¨angd moduler, f¨ardiga att anv¨andas. Vissa moduler m˚aste d¨aremot kompileras manu- ellt [59], d¨aribland modulen f¨or Emotiv Epoc. Detta g¨or att det kr¨avs viss erfarenhet av hur program kompileras direkt fr˚an programkod. Vidare f˚as k¨allkoden till de moduler som beh¨over kompileras genom ett versionshanteringssystem som inte alltid har en fungerande version av programmet. Detta uppdagades efter att en version av Emotiv Epoc modulen laddades ner, kompilerades men inte fungerade. En tidigare version anv¨andes ist¨allet som vi- sade sig fungera. Under samma h¨andelsef¨orlopp f¨ors¨oktes hela programmet kompileras men kompileringsfel uppt¨acktes. Ett inl¨agg gjordes p˚a BCI2000 forumet d¨ar det bekr¨aftades att k¨allkoden inte fungerade och att en ny version lagts upp, vilken gick att kompilera.

BCI2000 kan spara resultat i ett generiskt filformat vilket g¨or att resultat kan granskas i efterhand. Det g˚ar ¨aven att skicka m¨atv¨arden via TCP, vilket g¨or att m¨atv¨arden kan behandlas i BCI2000 f¨or att sedan skickas vidare till ett annat program som tolkar dessa.

Exempelvis kan BCI2000 anv¨andas f¨or att l¨asa in m¨atv¨arden, bearbeta dessa och skicka vidare dem till ett program som anv¨ands f¨or att styra en robotarm eller annan utrustning.

(13)

N¨ar man startar BCI2000 f˚as ett startf¨onster upp d¨ar det g˚ar att v¨alja vilka moduler som ska anv¨andas. Se figur 1.1. D¨ar finns det moduler f¨or signalk¨allor, signalhantering samt program. Program i det avseendet kan exempelvis vara att flytta en kula (sf¨ar) i en 1D, 2D eller 3D milj¨o s˚a kulan placeras inuti en kub. Det finns ¨aven flera moduler placerade i

“Other”, dessa ¨ar moduler som BCI2000 inte kunde placera automatiskt i relevant sektion utan anv¨andaren f˚ar sj¨alv avg¨ora var de passar in.

Figur 1.1: Startf¨onstret som visas vid start av BCI2000

N¨ar modulerna ¨ar valda kan inst¨allningar g¨oras, baserat p˚a vilka moduler som val- des och vilka inst¨allningar som kan g¨oras i dessa. M˚anga moduler har stora m¨angder in- st¨allningsm¨ojligheter och eftersom projektet ¨ar open source kan ytterligare funktionalitet l¨aggas till om den saknas, f¨orutsatt att tillr¨acklig programmeringserfarenhet finns. N¨ar in- st¨allningarna ¨ar gjorda s˚a s¨atts dessa och programmet kan k¨oras ig˚ang. I figur 1.2 syns hur EEG kan representeras i BCI2000.

Figur 1.2: EEG representeras i BCI2000 fr˚an en signalk¨alla

(14)

1.1. Relaterat arbete 5

1.1.2.2 OpenViBE

OpenViBE [60] ¨ar ett BCI-ramverk utvecklad med ¨oppen k¨allkod i C++ och ¨ar d¨arf¨or gratis och utbyggnadsbar f¨or utvecklare. OpenViBE ¨ar byggt f¨or att anv¨andaren ska kunna designa, testa och anv¨anda olika typer av BCI l¨osningar. Det kan anv¨andas f¨or att erh˚alla, filtrera, bearbeta, klassificera och visualisera hj¨arnv˚agor i realtid. Programmet riktar sig till dels personer med erfarenhet av programmering, s˚asom programmerare, spelutvecklare, olika typer av forskare, etc, men ¨aven personer utan s˚adan erfarenhet s˚asom l¨akare. Erfarenhet av programmering beh¨ovs s˚aledes inte.

I OpenViBE designar anv¨andaren olika scenarion i ett grafiskt gr¨anssnitt genom att koppla samman funktioner. En lista med funktioner tillhandah˚alls som anv¨andaren kan ta del av och koppla samman p˚a det vis som ¨onskas. OpenViBE ¨ar i grunden ett bibliotek av C++ funktioner som kan integreras genom att anv¨anda moduler [60]. OpenViBE ¨ar kompatibelt med m˚anga EEG och MEG utrustningar och kan visualisera dels 2D och 3D bilder som representerar hj¨arnaktivitet i realtid. I figur 1.3 visas hur designern ser ut.

Figur 1.3: Ett scenario konstrueras i OpenViBE

OpenViBE erbjuder ¨aven funktionalitet f¨or att skriva och l¨asa fr˚an filer s˚a resultat kan analyseras i efterhand. Filerna kan dels sparas i ett generiskt filformat, som GDF (General Data Format for biomedical signals) [39], eller som CSV (Comma-separated values). Om filer skapas med det generiska filformatet s˚a tycks v¨arden serialiseras till en fil som det sedan g˚ar att l¨asa fr˚an med openvibe. Det finns ingen dokumentation om hur detta g˚ar till, eller om det faktiskt ¨ar en serialisering, men en snabb kontroll visar p˚a det. Om filen sparas som GDF eller CSV kan m¨atv¨arden anv¨andas i andra program som kan l¨asa dessa filformat.

En funktion som tycks saknas ¨ar att kunna skicka vidare m¨atv¨arden via TCP eller UDP

(15)

till ett tredje-parts program. Detta skulle kunna vara intressant f¨or att skapa scenarion i OpenViBE f¨or att utf¨ora n˚agon signalhantering, filtrering och/eller liknande p˚a EEG signalen, och sedan vidarebefordra denna till ett annat, separat program som presenterar eller ytterligare manipulerar v¨arden p˚a n˚agot vis. En programmerare kan dock utveckla en modul f¨or att g¨ora detta.

En viktig funktionalitet som finns i OpenViBE ¨ar VRPN (Virtual-Reality Peripheral Network) som ¨ar en modul som skapar ett interface mellan program och den utrustning som anv¨ands i ett virtual-reality system. Se ref [41] f¨or mer info om detta.

(16)

Kapitel 2

Problembeskrivning

Arbetet ¨ar uppdelat i tv˚a delm˚al som beskrivs nedan.

Det f¨orsta av dessa ¨ar att kontrollera vilka signaler som det g˚ar att f˚a fr˚an headsetet, och hur dessa kan kopplas till olika kognitiva faktorer med betydelse f¨or hur man interagerar med en datorapplikation s˚a som t.ex. stress, upphetsning, frustration, osv. Det skall g¨oras en ¨oversyn av EEG-signaler och relaterade kognitiva tillst˚and med hur dessa fungerar i det aktuella headsetet och hur de kan anv¨andas f¨or att anpassa m¨anniska-dator interaktion (MDI). Ett s¨arskilt fokus l¨aggs p˚a hur s˚adan anpassning kan anv¨andas f¨or att f¨orb¨attra datorapplikationer f¨or kognitiv tr¨aning genom att exempelvis anpassa sv˚arighetsgraden.

Det andra ¨ar att g˚a igenom headsetets application programming interface (API), som beskriver hur headsetet kan anv¨andas rent programmeringstekniskt, f¨or att ta reda p˚a hur den kan kommunicera med det givna spelet. Spelet ¨ar konstruerat i programmeringsspr˚aket Python [35], s˚a en modul konstrueras till Python f¨or att l¨asa m¨atv¨arden fr˚an headsetet och anv¨andas tillsammans med spelmotorn Panda3D [36] som spelet anv¨ander. M¨atv¨arden fr˚an varje kanal skall kunna l¨asas som r˚adata fr˚an varje kanal f¨or sig samt fr˚an var och en av de f¨ordefinierade variablerna i headsetets software development kit (SDK). Denna modul anv¨ands sedan f¨or att implementera en dynamisk anpassning av interaktion och gr¨anssnitt i spelet.

Arbetet kommer producera en implementation och f¨ordjupningsstudie som uppfyller kraven ovan. Implementationen kommer g¨oras i .NET [34] och Python, se sektion 4.1 f¨or detaljer om detta. Dokumentation produceras med LATEX[54].

7

(17)
(18)

Kapitel 3

F¨ ordjupningsstudie

3.1 Historiken bakom EEG

Thales fr˚an Miletos ¨ar den som blivit tillerk¨and f¨or uppt¨ackten av statisk elektricitet skapad av att gnugga exempelvis p¨alsar med siden [2]. D¨armed blev friktion erk¨ant som en generator av fenomenet som fick sitt namn fr˚an det Grekiska arbetet “elektron” som betyder b¨arnsten.

Efter den uppt¨ackten gjordes inget mer arbete p˚a mer ¨an tv˚a ˚artusenden. Han levde omkring 620-550 f.kr och ans˚ag att vatten var ursprung till allting.

Det var 1929 som den Tyske forskaren Hans Berger gjorde en historisk uppt¨ackt med EEG [3]. Utan den uppt¨ackten skulle inte existerande diagnostik som anv¨ands idag existera, s˚asom DT (Datortomografi, engelska CT f¨or Computed Tomography), MRT (Magnetisk resonanstomografi, engelska MRI f¨or Magnetic resonance imaging), etc, som anv¨ands f¨or att bland annat planera neurokirurgiska operationer. Den 6e juli 1924 gjorde Berger den f¨orsta EEG inspelningen under en neurokirurgisk operation p˚a en 17-˚arig pojke som genomf¨ordes av neurokirurgen Nikolai Guleke. Han rapporterade om ¨amnet 1929 och anv¨ande termerna alpha och beta v˚agor. Kort d¨arefter beskrevs kurvans utseende av en Amerikansk grupp EEG pionj¨arer, ¨aven om Berger ocks˚a hade uppt¨ackt dessa men avf¨ardat dem som artefakter.

I figur 3.1 ˚aterfinns den f¨orsta EEG inspelningen gjord av Berger 1924.

Figur 3.1: Den f¨orsta m¨anskliga EEG inspelningen av Hans Berger 1924. Den ¨ovre linjen ¨ar EEG och den undre ¨ar en 10 Hz timingsignal.

9

(19)

3.2 Vad ¨ ar EEG

EEG ¨ar ett s¨att att m¨ata hj¨arnans elektriska funktion, ¨aven kallat hj¨arnv˚agor. Det ¨ar skill- naden i sp¨anningen mellan tv˚a punkter av hj¨arnan inspelat ¨over tid, m¨att i µV (mikrovolt).

Det finns tv˚a s¨att att m¨ata dessa v¨arden, utanf¨or och innanf¨or kraniet. M¨atningar innanf¨or kraniet g¨ors genom att operera in elektroder p˚a specifika omr˚aden. Utanf¨or kraniet brukar m¨atas genom att ett antal elektroder placeras p˚a h˚arbotten [4]. Detta beskrivs i mer detalj i sektion 3.2.3.

I figur 3.2 syns hur EEG kan se ut hos en patient med epilepsi.

Figur 3.2: Epileptiska topp- och v˚ag-utsl¨app ¨overvakas med EEG

Eftersom EEG signalen representerar sp¨anningen mellan tv˚a elektroder s˚a kan man m¨ata dessa p˚a flera olika s¨att. Denna representation av EEG kanalerna kallas ett montage [31].

– Bipol¨ar. Varje kanal representerar skillnaden mellan tv˚a n¨arliggande elektroder. Hela

(20)

3.2. Vad ¨ar EEG 11

montaget best˚ar av en serie av dessa kanaler. Exempelvis ¨ar kanalen Fp1-F3 skillnaden i sp¨anning mellan elektroderna Fp1 och F3 (se sektion 3.2.3 f¨or mer om elektrodposi- tioner).

– Refererande. Varje kanal ¨ar skillnaden mellan en elektrod och en s¨arskild referense- lektrod. Det finns ingen direkt standard f¨or var referenselektroden sitter, men brukar placeras vid A1, A2 eller vid ¨oronen.

– Genomsnittlig referens. Alla elektroders m¨atv¨arden summeras och genomsnittet ber¨aknas.

Detta v¨arde anv¨ands sedan som referens f¨or alla kanaler.

3.2.1 Signaltyper

EEG brukar beskrivas med den rytmiska aktiviteten som delas upp i band baserat p˚a fre- kvens. Dessa frekvenser anv¨ands som ett system f¨or att namnge egenskaper. Exempelvis kan den rytmiska aktiviteten mellan 8-12 Hz beskrivas som “alpha”. Denna uppdelning ¨ar gjord d˚a vissa typer av rytmisk aktivitet i olika frekvenser visar sig vara distribuerad olika ¨over skalpen eller ha olika biologiska egenskaper.

Det finns definierat ett stort antal frekvenser av olika forskare [26]. I vilka frekvensband som olika signaler ¨ar uppdelade i ¨ar ocks˚a olika fr˚an en forskare till en annan. I den h¨ar rap- porten fokuseras det p˚a f¨oljande frekvenser, som alla hittas i sektioner nedan: Delta, Theta, Alpha, Beta, Gamma och Mu. I varje separat sektion ˚aterfinns en figur som visualiserar den relevanta frekvensen under en sekunds tid. Skalpen ¨ar indelad i olika regioner som refereras i sektionerna nedan. Se figur 3.9 och sektion 3.2.3 f¨or positionerna av dessa.

3.2.1.1 Delta

Deltav˚agor ¨ar definierade att ligga p˚a < 4 Hz av den d˚a unge fysiologen W. Gray Walter 1936 [12]. Han deltog i en neurokirurgisk operation p˚a en patient som opererade bort en elakartad tum¨or, och Walter placerade elektroder p˚a det p˚averkade omr˚adet. Han spelade in EEG signaler med h¨og sp¨anning och l¨agre frekvens ¨an vad som tidigare spelats in. Han d¨opte dessa till deltav˚agor. Sedan dess har centralt lokaliserad deltaaktivitet visat sig vara en p˚alitlig indikator f¨or lokaliserade sjukdomar i hj¨arnan. Deltav˚agor kan antingen f¨orekomma som oklara rytmiska v˚agor i frontala delar av huvudet, eller i andra delar. Om delta har h¨og sp¨anning implicerar det kraftig eller akut funktionsneds¨attning. L˚ag sp¨anning f¨orekommer bland annat i patienter med h¨amnat medvetande.

Som regel s˚a ˚aterfinns inte deltav˚agor hos en person under vaket tillst˚and, och dess f¨orekomst implicerar cerebral funktionsrubbning [12]. D¨aremot ¨ar det en viktig komponent i s¨omn och kan ¨aven f¨orekomma hos ¨aldre personer, s¨arskilt i n¨arheten av temporalloben.

Deltav˚agor syns ¨aven hos nyf¨odda och yngre barn, samt ton˚aringar i bakhuvudet.

Experimentella studier har visat att deltabandet har relevans till vissa kognitiva faktorer [27]. Amplituden hos delta ¨ar markant h¨ogre under experiment med avvikande stimuli, vilket leder till slutsatsen att delta relaterar till signaldiagnostisering och beslutsfattning. Man har uppm¨arksammat att deltabandet framh¨avs vid stimuli av h¨orseltr¨oskeln vilket bekr¨aftar att deltasvar skulle ha ett samband med ovanst˚aende. Det finns ¨aven resultat som visar p˚a att delta ¨ar en signifikant bearbetningssignal f¨or sovande katter och den m¨anskliga hj¨arnan.

(21)

Figur 3.3: Deltav˚agor

3.2.1.2 Theta

Thetafrekvensen ¨ar definierad att ligga fr˚an 4-7 Hz. Vanligtvis finns sm˚a m¨angder thetafre- kvenser representerade hos en vaken vuxen m¨anniska [12] [26] och inte som n˚agon organiserad thetarytm, dvs. att f¨orekomsten kan observeras att vara spontan. B˚ade rytmen och frekven- sen har d¨aremot en st¨orre roll fr˚an barndomen eller om personen ¨ar n˚agot sl¨o, vilket g¨or det viktigt att fastst¨alla att subjektet ¨ar helt vaket.

Experimentell data visar att thetaoscillationer har en grundl¨aggande funktion i kognitiv bearbetning [27]. Theta ¨ar en stabil komponent i P300-liknande signaler (se sektion 3.2.2 f¨or mer om detta). H¨andelserelaterade oscillationer i thetabandet f¨orl¨angs och/eller har ett andra tidsf¨onster i ungef¨ar 300 ms efter subjektet blivit utsatt f¨or experiment med avvikande stimuli. Detta tolkas som att vara relaterat till selektiv uppm¨arksamhet.

Det har uppm¨arksammats att thetaaktivitet ¨okar i relation till minnesbelastning under s¨arskilda aktiviteter som utf¨ors b˚ade verbalt och fysiskt [28]. Dessa aktiviteter (eng. n- back) involverar att objektet presenteras en rad med f¨orem˚al och m˚aste identifiera om det nuvarande f¨orem˚alet ¨ar samma f¨orem˚al som presenterades f¨or n f¨orem˚al sedan. Detta involverar simultan kodning, bevarande av f¨orem˚alen i minnet och h¨amtning av information.

Figur 3.4: Thetav˚agor

3.2.1.3 Alpha

Alpharytmen ¨ar definierad att ligga fr˚an 8-13 Hz och uppst˚ar under vaket tillst˚and, generellt med h¨ogre sp¨anning ¨over occipitalregionen [25]. Amplituden kan variera, men ligger oftast under 50 µV hos vuxna. Alphav˚agor ¨ar l¨attast att uppt¨acka med ¨ogonen st¨angda under av- slappning och relativt l˚ag mental aktivitet och d¨ampas eller blockeras av uppm¨arksamhet, s¨arskild visuell och mental anstr¨angning. Det har ¨aven konstaterat att termen “alpharytm”

enbart b¨or anv¨andas f¨or rytmer som uppfyller alla kriterier som beskrivs ovan [26]. Muryt- mer, se sektion 3.2.1.4, kan ha samma frekvens, men har andra skillnader.

(22)

3.2. Vad ¨ar EEG 13

Det finns studier som visar p˚a att oscillation i alpha och theta banden reflekterar kog- nitiv prestanda, s¨arskilt minnesprestanda [12]. God prestanda ¨ar fr¨amst relaterat till tv˚a EEG fenomen: (1) att amplituden i alpha l˚angsamt ¨okar samt i theta minskar och (2) en stor, snabb, h¨andelsebaserad minskning i alpha men ¨okning i theta, beroende p˚a typen av minneskrav. Man kan ¨aven se att ¨ovre alpha effekt¨okningar sker fr˚an tidig barndom till mogen ˚alder, och theta minskar, men det motsatta ¨ar sant f¨or den senare delen av livet.

Alpha effekten ¨okar och theta minskar hos personer med olika neurologiska sjukdomar.

Figur 3.5: Alphav˚agor

3.2.1.4 Mu

Murytmen ˚aterfinns i de centrala delarna (kring C3/C5, se figur 3.9) och kan vara ensi- dig eller ¨omsesidig [8]; om ¨omsesidig s˚a kan den vara synkron eller asynkron. Dess namn h¨arstammar fr˚an v˚agformen - den har skarpa konturer och liknar den grekiska bokstaven med samma namn. Den ¨ar definierad att ligga fr˚an 7-11 Hz. Murytmen ¨ar ibland mer tydlig under s¨omnighet och under inspelning med ¨oppna ¨ogon. Murytmen anses vara relaterad till betaaktivitet, m¨ojligtvis som en underton. Mu d¨ampas med r¨orelser fr˚an ¨ovre kroppen, till och med n¨ar en s˚adan r¨orelse f¨orest¨alls. Inom BCI kan murytmen anv¨andas f¨or att styra en muspekare p˚a en datorsk¨arm i en eller tv˚a dimensioner [19]. Anv¨andare kan med > 95%

s¨akerhet svara r¨att p˚a ja/nej fr˚agor efter 40-minuters sessioner 2-3 g˚anger i veckan i 2-3 veckor. Vanligtvis anv¨ander sig personen av n˚agon form av mental tr¨aning med imagin¨ara r¨orelser (vanligtvis kallat motor imagery), dvs. att inbilla sig handr¨orelser eller liknande, f¨or att flytta muspekaren.

Figur 3.6: Muv˚agor

3.2.1.5 Beta

Beta ¨ar definierat till att ligga ¨over 13 Hz [26] och var den andra v˚agen som beskrevs av Berger [8]. Beta syns hos de flesta vakna vuxna personer och avsaknaden av den kan vara

(23)

abnormalt beroende p˚a vilka andra egenskaper EEGt har. Man har noterat att beta dels

¨okar av kokain [6] samt att beta ¨okar under abstinens [7].

Figur 3.7: Betav˚agor

3.2.1.6 Gamma

Gamma ¨ar definierat att ligga ¨over 30 Hz utan ¨ovre gr¨ans [26]. Det har visats att gamma- sv¨angningar kan relateras till m˚anga olika kognitiva processer, men det ¨ar sv˚art att hitta n˚agon direkt koppling mellan dessa och en funktion [22]. Gamma har ¨aven g˚att att observera d¨ar en person minns objekt, ljud eller k¨ansel [23].

Figur 3.8: Gammav˚agor

3.2.2 P300

P300 ¨ar en h¨andelserelaterad potential (eng. Event-related Potential, ERP) vilket inneb¨ar en ¨andring i den elektriska potential som EEG registrerar direkt relaterade till en h¨andelse.

P300 har f˚att sitt namn fr˚an att det g¨ors en positiv m¨atning 300 ms efter h¨andelsen. P300 kan anv¨andas p˚a flera olika vis och en implementation av P300-speller ¨ar en matris som

¨ar 6 x 6 stor och visar bokst¨averna i det engelska alfabetet f¨oljt av siffrorna 0-9 i ordning.

Personen som ¨overvakas f˚ar i uppgift att fokusera p˚a en av dessa 36 celler. Sedan lyses slumpm¨assigt valda rader och kolumner upp, d¨ar varje rad och kolumn kan framh¨avas en g˚ang (vilket ger 12 framh¨avningar). N¨ar raden och kolumnen som subjektet fokuserar p˚a lyses upp kan man se P300 potentialen [29].

Det ¨ar viktigt att ta h¨ansyn till antalet val som finns i studien man applicerar P300 p˚a.

Ovan finns det 36 olika val som personen kan g¨ora, s˚a sannolikheten att korrekt val g¨ors ¨ar 1/36. Om man skulle ha ett bin¨art val, tex JA eller NEJ, s˚a blir sannolikheten 0.5, vilket skulle minimera skillnaden i P300 mellan r¨att och fel svar [29]. Man b¨or d¨arf¨or ta h¨ansyn till hur m˚anga val som finns i implementationen s˚a P300 potentialen kan uppm¨atas. Studier

(24)

3.2. Vad ¨ar EEG 15

har visat att det ¨ar viktigt att ta h¨ansyn till ett flertal parametrar n¨ar en BCI med P300 optimeras f¨or en enskild anv¨andare [30].

(25)

3.2.3 EEG elektrodpositioner

I figur 3.9 ˚aterfinns hur elektroder placeras enligt 10-20 standarden [24]. Systemet ¨ar skapat f¨or att enkelt till˚ata fler elektroder, och underl¨atta placeringen och namngivning av dessa.

N¨ar elektroderna placerades ut i systemet namngavs dessa med utbyggnad i ˚atanke, s˚a elektroderna namngavs p˚a ett s˚adant s¨att att fler elektroder kunde placeras mellan tv˚a stycken utan att ¨andra numreringen p˚a dessa.

Alla elektroder under 10-20 systemet namnges med bokst¨aver som betecknar det ana- tomiska omr˚adet [58]. Dessa ¨ar som f¨oljer:

– F - Pannlob – T - Tinninglob – C - Centrallob – P - Parietallob – O - Occipitallob

Standardnumreringssystemet i 10-20 placerar udda numrerade elektroder p˚a v¨anstra de- len av huvudet, och j¨amnt numrerade p˚a h¨ogra delen [24]. ¨Aven om 10-20 systemet skapades f¨or 21 elektroder s˚a finns ut¨okningar f¨or 75 elektroder. I figur 3.9 ˚aterfinns elektrodpositioner f¨or 70 elektroder i 10-20 systemet.

Figur 3.9: Elektrodpositioner

(26)

3.3. Vad anv¨ands EEG till 17

3.3 Vad anv¨ ands EEG till

EEG anv¨ands inom b˚ade kliniskt arbete samt forskning inom flera omr˚aden, bland annat BCI. Nedan beskrivs dessa separat, men det b¨or noteras att de m˚anga g˚anger genomf¨ors tillsammans, exempelvis att en studie genomf¨ors i samr˚ad med en patient som f˚ar n˚agon slags behandling.

3.3.1 Kliniskt

I kliniska syften anv¨ands ofta 10-20 elektroder som f¨asts p˚a h˚arbotten p˚a patienten [5]. Det anv¨ands bland annat f¨or att:

– Diagnostisera epilepsi – Diagnostisera demens

– Tappande av medvetandet, och chansen till f¨orb¨attring efter s˚adan – Avg¨ora om en person i koma ¨ar hj¨arnd¨od

– Studera s¨omnproblem

– ¨Overvaka hj¨arnaktivitet medan en person f˚ar allm¨an bed¨ovning under hj¨arnoperation – Avg¨ora om en person har fysiska problem, s˚asom problem i hj¨arnan, ryggm¨argen eller

nervsystemet, eller mentala problem [44]

EEG kan g¨oras n¨ar patienten befinner sig i ett av tre tillst˚and - vaken, under s¨omn eller under en l¨angre tid. Vid vaken-EEG s˚a blundar patienten st¨orre delen av tiden, men kan ¨aven bli ombedd att titta upp under n˚agra sekunder. Ofta kan patienten f˚a avsluta unders¨okningen med att andas h¨aftigt i n˚agra minuter, f¨oljt av att titta p˚a en blinkande lampa i n˚agra minuter. Om EEG g¨ors under s¨omn fungerar det p˚a samma vis, men patienten f˚ar ist¨allet sova i en till tv˚a timmar. Under en l˚angtids-EEG f˚ar patienten en m¨ossa som t¨acker elektroderna, som g˚ar till en midjev¨aska i vilken en apparat tar emot signalerna. Varje dygn f˚ar patienten ˚aka till avdelningen f¨or att f¨ora ¨over m¨atv¨arden till neurofysiologen [45].

EEG anv¨ands ¨aven f¨or att avg¨ora hur man kan k¨anna igen olika sjukdomar beroende p˚a hur EEGt ser ut. Genom att g¨ora detta kan man l¨attare diagnostisera sjukdomar s˚asom Alzheimers, Crautzfeldt-Jakobs sjukdom, Picks sjukdom, etc., men ¨aven m˚anga andra sjuk- domar [8].

Aven f¨¨ or epilepsidiagnostik anv¨ands EEG, bland annat f¨or att avg¨ora om man b¨or forts¨atta med en antiepileptisk medicin i krampfria patienter [8].

(27)

3.3.2 Forskning och utveckling

EEG anv¨ands inom flera omr˚aden inom forskning f¨or att fasts¨alla diagnoser och liknande.

Forskningsomr˚aden inkluderar, men ¨ar inte begr¨ansat till:

– Depression [9]

– Analysera s¨omnm¨onster i laboratorisk milj¨o [10]

– Hur EEG p˚averkas under s¨omn i relation till ¨ogonr¨orelser, kroppr¨orelser och dr¨ommar [11]

– Hur alpha och theta sv¨angningar reflekterar kognitiv- och minnesprestation [14]

Inom HCI anv¨ands tillsammans med EEG f¨or att f¨ors¨oka utr¨ona det k¨anslo- eller sin- nestillst˚and som anv¨andaren befinner sig i. Det blir ett till verktyg f¨or interaktionsdesigner att anv¨anda f¨or att skapa en s˚a bra interaktion mellan dator och m¨anniska som m¨ojligt. Det finns forskning inom omr˚adet Affective computing f¨or att l˚ata maskiner avg¨ora exempelvis ansiktsuttryck, hj¨artrytm och r¨ost. I dagsl¨aget har relativt lite forskning genomf¨orts inom omr˚adet att anv¨anda EEG f¨or att avl¨asa artificiellt framkallade k¨anslor [21], och detta ¨ar n˚agonting som det forskas mycket p˚a.

Det finns m˚anga studier inom BCI som anv¨ander EEG. Den kanske fr¨amsta motive- ringen f¨or att studera BCI ¨ar att kringg˚a utrustning s˚asom mus, tangentbord, eller annan utrustning som kr¨aver kontroll ¨over kroppsdelar. Detta skulle ge m¨ojligheter till personer med sv˚ara handikapp som har sv˚art, eller inte kan, r¨ora olika kroppsdelar, s˚asom patienter med ALS (Amyotrofisk lateralskleros). Exempelvis skulle f¨oljande saker kunna utf¨oras av personer med de mest sv˚ara handikapp, men med sin intellektuella f¨orm˚aga intakt:

– Kontrollera en muspekare p˚a en sk¨arm [13]

– Kontrollera utrustning i hemmet [14]

– Kontroll av handprotes genom ett EEG baserat BCI [15]

– Kommunikation med omv¨arlden. Dagens BCI har en ¨overf¨oringshastighet p˚a ca 10-25 bits/min [20]

Det g˚ar att f¨orest¨alla sig m˚anga fler anv¨andningsomr˚aden f¨or BCI f¨or sv˚art handikap- pade, och fullt friska, personer, och detta ¨ar ett aktuellt forskningsomr˚ade som det h¨ander mycket inom just nu.

3.4 Hur anpassad interaktion kan f¨ orb¨ attra datorappli- kationer f¨ or kognitiv tr¨ aning

Att anv¨anda BCI f¨or att hj¨alpa personer med grava handikapp och kunna p˚averka olika utrustningar genom kognitiv tr¨aning ¨ar ingenting nytt, som beskrivs i sektion 3.3.2. En del av forskningen i dagsl¨aget centreras kring hur man ska p˚a b¨asta s¨att anv¨anda BCI som passivt indata till HCI [17]. Rent traditionellt har man anv¨andarformul¨ar och andra typer utav utv¨arderingar f¨or att bed¨oma v¨ardet av implementationen. Detta fungerar v¨al men det ¨ar sv˚art att utr¨ona den kognitiva arbetsb¨ordan, exempelvis hur sv˚art det ¨ar att l¨osa ett

(28)

3.4. Hur anpassad interaktion kan f¨orb¨attra datorapplikationer f¨or kognitiv

tr¨aning 19

s¨arskilt problem, med dessa typer av metoder. Det skulle vara mycket anv¨andbart att ha s˚adan information tillg¨anglig f¨or att kunna anpassa program f¨or en specifik anv¨andare.

P˚a samma s¨att vore det viktigt med information om en anv¨andares k¨anslotillst˚and f¨or en bra evaluering av en anv¨andares erfarenheter n¨ar de interagerar med ett system. Att f˚a reda p˚a k¨anslotillst˚andet ¨ar mycket viktig f¨or program s˚asom spel d¨ar hela po¨angen ¨ar att uppleva underh˚allning, vilket kan f˚as genom att betrakta frustration, bedrift, gl¨adje, njutning, osv.

Att konstruera spel som inte bryter fl¨odet f¨or spelaren vore mycket anv¨andbart, och detta skulle man kunna n˚a genom att betrakta anv¨andarens k¨anslotillst˚and. ¨Aven om det inte ¨ar lika engagerande att administrera databaser som att spela n˚agot bra spel s˚a ¨ar tillg˚ang till k¨anslotillst˚and fortfarande n˚agonting som skulle kunna gynna interaktionen [17].

Att konstruera ett gr¨anssnitt som “bara fungerar”, dvs. anpassar sig till en specifik anv¨andares behov p˚a ett gr¨anssnitt, ¨ar inget nytt koncept, och ¨ar n˚agonting som st¨andigt efterstr¨avas. Program som automatiskt anpassar storlek, yta, tillg¨angliga input mekanismer, anv¨and utrustnings bearbetningsm¨ojligheter, samt anv¨andarens uppgift eller sammanhang som man arbetar i. Det ¨ar f¨ormodligen minst lika viktigt att anpassa ett system till en anv¨andares kognitiva f¨orm˚aga som att anpassa till specifika datorers ber¨akningsm¨assiga f¨orm˚aga. Ett gr¨anssnitt kan exempelvis anpassas baserat p˚a en anv¨andares kognitiva till- st˚and genom att f¨or¨andra informationsfl¨odet, s˚asom ifall ett omr˚ade i anv¨andarens hj¨arna

¨ar ¨overbelastat s˚a kan information transformeras och presenteras p˚a ett s¨att som belastar andra omr˚aden i hj¨arnan [18].

Ett annat s¨att ett program kan svara p˚a anv¨andarens kognitiva tillst˚and ¨ar att hantera avbrott n¨ar anv¨andaren exempelvis ¨ar i djupa tankar. Systemet kan d˚a uppt¨acka detta och hantera uppkommande avbrott, s˚a som epostlarm, p˚a b¨asta m¨ojliga s¨att. Det skulle ¨aven kunna g˚a att k¨anna h¨ogre niv˚a kognitiva h¨andelser s˚asom frustration eller tillfredsst¨alldhet, vilket ger m¨ojligheten att konstruera gr¨anssnitt som ger gensvar eller ledning p˚a arbetsfokus eller arbetsfl¨ode i tr¨aningsscenarion, exempelvis om anv¨andaren ska l¨ara sig om n˚agonting.

Det skulle kunna leda till betydligt effektivare gr¨anssnitt i pedagogiska sammanhang [18].

(29)
(30)

Kapitel 4

Resultat

4.1 Utf¨ orande

Programmet ¨ar indelat i tv˚a delar - en server och en klient. Nedan beskrivs b˚ada delar var f¨or sig.

Givet i b¨orjan av projektet var att headsetets API var implementerat i .NET, s˚a n˚agot slags gr¨anssnitt mot det m˚aste vara skrivet i .NET, eller kunna exekvera den kod som finns implementerad i den .dll-fil som distribueras med programvaran till headsetet. Det var

¨aven givet att spelet som kommer anv¨anda sig av m¨atv¨arden fr˚an headsetet var skrivet i Python.

Det f¨orsta som kontrollerades var om det fanns ett enkelt s¨att att f˚a Python att direkt exekvera funktionerna i .dll-filen. D˚a skulle man kunna konstruera en modul direkt i spelet som k¨or direkt mot APIt, vilket skulle eliminera behovet av ett separat program som en- bart arbetar mot headsetet. Det utforskades tv˚a alternativ. Det f¨orsta var att anv¨anda den inbyggda modulen ctypes som ger C kompatibla datatyper samt m¨ojligheten att exekvera kod i en .dll fil eller delat bibliotek [46]. Efter att ha anv¨ant modulen under en mindre tid best¨amdes att det skulle blir relativt omst¨andligt att f˚a det att fungera som ¨onskat, och att tiden f¨ormodligen skulle dra iv¨ag ¨over arbetets ramar.

Det andra alternativet som fanns var att ut¨oka Python med de funktioner vi vill ha fr˚an Emotiv APIt. ¨Aven det alternativet avf¨ardades p˚a grund av ytterligare komplexitet i programkoden, samt att det skulle ta tid att l¨ara sig de metoder som anv¨ands f¨or att utf¨ora arbetet.

Beslut fattades att det skulle konstrueras en server och en klient, d¨ar servern imple- menteras i C# p˚a .NET plattformen f¨or att enkelt arbeta direkt mot .dll filen, och sedan s¨anda vidare m¨atv¨arden via en n¨atverkssocket [47] genom TCP till klienten med ett de- finierat textbaserat protokoll. Klienten implementerar en modul i Python f¨or att ta emot m¨atv¨arden och spelet anv¨ander denna modul f¨or att anpassa interaktionen. Nedan kan mer l¨asas om respektive implementation. I figur 4.1 syns ett diagram ¨over interaktionen mellan de olika komponenterna i systemet.

Se sektion 5.2 f¨or eventuella problem som uppstod vid implementation av systemet.

21

(31)

Figur 4.1: Interaktion mellan de olika komponenterna i systemet.

4.1.1 Server

Eftersom headsetets API ¨ar implementerat i .NET s˚a kunde ett annat godtyckligt .NET spr˚ak anv¨andas f¨or att exekvera dessa funktioner, s˚asom C# eller C++. I samband med detta valdes C# som spr˚ak f¨or att implementera servern, d˚a erfarenhet med Java finns och C# har stora likheter med det spr˚aket.

Servern har inget grafiskt gr¨anssnitt, utan ¨ar ett terminalbaserat program som konti- nuerligt l¨aser m¨atv¨arden fr˚an headsetet och s¨ander det vidare till klienten. N¨ar implemen- tation och testning gjordes k¨ordes fr¨amst server och klient p˚a samma dator, men det g˚ar att k¨ora dem p˚a olika. Det visar sig att detta ¨ar n˚agonting som m˚aste g¨oras under vissa omst¨andigheter. Se mer om detta i sektion 5.2.

4.1.2 Klient

Klienten ¨ar implementerad som en modul till Python. Tanken med klienten ¨ar att den enbart ska ta emot m¨atv¨arden fr˚an servern och lagra det i n˚agon slags struktur. Spelet kan sedan kommunicera med modulen och anv¨anda alla v¨arden p˚a ¨onskat vis. I sektion A.2 ˚aterfinns exempel p˚a hur funktionaliteten i klienten kan anv¨andas rent implementationsspecifikt, och nedan beskrivs implementationen mer schematiskt.

Klienten tar tv˚a argument, host och port som anger den dator d¨ar servern k¨ors och vilken port som den accepterar anslutningar p˚a. N¨ar anslutningen uppr¨attas skapas en ny tr˚ad internt som f¨ors¨oker ansluta till servern kontinuerligt. N¨ar en s˚adan anslutning ¨ar uppr¨attad kan m¨atv¨arden extraheras. Se sektion A.2 f¨or hur detta kan g¨oras.

Sj¨alva ¨overf¨oringen av m¨atv¨arden styrs med ett textbaserat protokoll. Se sektion 4.1.3 f¨or mer information om hur det ser ut och varf¨or ett s˚adant valdes.

(32)

4.1. Utf¨orande 23

4.1.3 Protokoll

Nedan beskrivs protokollet som anv¨ands f¨or att skicka data fr˚an servern till klienten. H¨ar beskrivs det generella f¨or alla delarna i protokollet.

Det best¨amdes att ett textbaserat protokoll skulle anv¨andas d˚a det ans˚ags som l¨attare att implementera och fels¨oka gentemot ett bin¨art protokoll. Str¨angen som skickas ser ut som f¨oljer:

Pakettyp<>Paketdata

d¨ar Pakettyp ¨ar exempelvis EEG, Expressiv, eller PING beroende p˚a inneh˚allet i paketet, och Paketdata ¨ar inneh˚allet i paketet, formaterat p˚a ett vis som beskrivs nedan f¨or olika pakettyper. Alla paket avslutas med ett mellanslag som anger slutet p˚a paketet f¨or att ge m¨ojligheten att konkatenera flera paket efter varandra. Det ¨ar m¨ojligt att implementera fler typer av paket, se sektion 4.1.3.3 f¨or information om det.

4.1.3.1 EEG

Ett EEG paket ¨ar formaterat som f¨oljer:

EEG <> c1: v11|v12|...|v1n; c2: v21|v22|...|v2n; ...cm: vm1|vm2|...|vmn

d¨ar n ¨ar antalet m¨atv¨arden i det h¨ar paketet, m ¨ar antalet kanaler som skickas med, c ¨ar den aktuella kanalen och v ¨ar v¨ardet. Nedan ˚aterfinns alla kanaler som skickas fr˚an headsetet och en kort beskrivning f¨or vilka v¨arden som kan f˚as fr˚an den kanalen:

– COUNTER - R¨aknare fr˚an 0 till 128. COUNTER b¨orjar inte n¨odv¨andigtvis p˚a 0 n¨ar f¨orsta m¨atv¨ardet samlas in. Notera ocks˚a att COUNTER g˚ar fr˚an 0 tom 128, vilket ¨ar 129 v¨arden, och enligt dokumentationen ska det vara 128 v¨arden. Ett inl¨agg gjordes p˚a utvecklarens forum (se ref [56]) d¨ar det konstaterades av utvecklaren att det var ett misstag i programmeringen och att COUNTER bara ¨ar en r¨aknare f¨or att kontrollera att inga paket g˚ar f¨orlorade - detta ¨ar s˚aledes inget problem. Detta inneb¨ar ocks˚a att om COUNTER vid sekund 14.00 ¨ar 10 s˚a ¨ar COUNTER exakt en sekund senare 9.

– ES TIMESTAMP - Tidsst¨ampel som anger n¨ar v¨ardet registrerades. V¨ardet som anges

¨ar ett decimaltal som anger tiden fr˚an start av headsetet (tiden fr˚an att m¨atv¨arden b¨orjade h¨amtas)

Nedan beskrivs de kanaler som EEG kan ˚aterf˚as fr˚an. Kanalerna nedan motsvarar po- sitionerna som ˚aterfinns i figur 3.9. Alla v¨arden ¨ar decimaltal och representerar m¨atv¨ardet i µV (microvolt):

AF3, F7, F3, FC5, T7, P7, O1, O2, P8, T8, FC6, F4, F8, AF4

Nedan ˚aterfinns kanaler som inte anv¨ands i den nuvarande implementationen, men som skickas med i EEG paketen f¨or att programmet enkelt ska kunna byggas ut och st¨odja dessa:

(33)

INTERPOLATED, RAW CQ, GYROX, GYROY, TIMESTAMP, FUNC ID, FUNC VALUE, MARKER, SYNC SIGNAL

Dokumentationen ¨over vad dessa g¨or ¨ar bristf¨allande, och ¨aven om det g˚ar att gissa sig till vad de f¨ormodligen ¨ar ¨amnade f¨or s˚a ¨ar det inte bekr¨aftat p˚a n˚agot vis, och ¨aven med en s˚adan gissning ¨ar det inte givet vilken typ av v¨arden som ˚aterf˚as (om det ¨ar ett decimaltal, heltal, str¨ang, hur v¨ardet ¨ar formaterat, etc).

Exempelpaket:

EEG<>COUNTER:78;INTERPOLATED:0;RAW\_CQ:0;AF3:4467,17948717949;

F7:4069,74358974359;F3:4230,25641025641;FC5:4508,71794871795;

T7:4273,33333333333;P7:4172,82051282051;O1:4361,02564102564;

O2:4693,33333333333;P8:4010,25641025641;T8:4149,74358974359;

FC6:4485,12820512821;F4:4087,69230769231;F8:3968,71794871795;

AF4:4207,17948717949;GYROX:1656;GYROY:1670;TIMESTAMP:160,546;

ES_TIMESTAMP:151,075149536133;FUNC_ID:0;FUNC_VALUE:0;MARKER:0;

SYNC_SIGNAL:0

4.1.3.2 Expressiv

Ett Expressiv paket ¨ar formaterat som f¨oljer:

EXP RESSIV <> v1; v2; ...; vn

d¨ar vn ¨ar det uppm¨atta v¨ardet f¨or en viss kanal. Nedan ˚aterfinns en lista ¨over kanaler, i den ordning som de tas emot. Alla flyttal nedan skickas p˚a formen x, y. Notera att decimal- tal ¨ar komma-separerade. G¨allande ansiktsuttrycken nedan s˚a f˚as dessa v¨arden genom att headsetet m¨ater elektromyografi (EMG) signaler, vilket ¨ar en teknik som anv¨ands f¨or att m¨ata musklernas respons p˚a stimulering fr˚an nervsystemet. Dessa ¨ar allts˚a frist˚aende fr˚an EEG signaler.

– Time - Tid p˚a formen sekunder,delsekunder. Ex. 24,79261 – UserID - ID p˚a anv¨andaren, >= 0

– Wireless signal - NO SIGNAL, BAD SIGNAL eller GOOD SIGNAL – Blink - True / False

– Left Blink - True / False – Right Blink - True / False – Looking Left - True / False – Looking Right - True / False

Av f¨oljande s˚a kommer bara 2 v¨arden att s¨attas, beroende p˚a vad anv¨andaren h˚aller p˚a med. Man har ett “UpperFace” och “LowerFace” som b˚ada kan g¨ora en sak. F¨or UpperFace

¨ar det “Eyebrow” och “Furrow” och f¨or LowerFace ¨ar det “Smile”, “Clench”, “Smirk Left”,

(34)

4.1. Utf¨orande 25

“Smirk Right” och “Laugh”. De v¨arden som inte s¨atts kommer att vara 0 (s˚a om anv¨andaren exempelvis f˚ar 0.5 p˚a “Eyebrow” kommer “Furrow” automatiskt vara 0).

Upperface:

– Eyebrow - V¨arde >= 0, <= 1 hur anv¨andarens ¨ogonbryn ¨ar placerade – Furrow - V¨arde >= 0, <= 1 hur stor ansiktsf˚ara anv¨andaren har Lowerface:

– Smile - V¨arde >= 0, <= 1 hur stort leende anv¨andaren har – Clench - V¨arde >= 0, <= 1 hur kraftigt anv¨andaren sp¨anner sig – Left Smirk - V¨arde >= 0, <= 1 hur stort v¨anster smil anv¨andaren har – Right Smirk - V¨arde >= 0, <= 1 hur stort h¨oger smil anv¨andaren har – Laugh - V¨arde >= 0, <= 1 hur mycket anv¨andaren skrattar

F¨oljande v¨arden s¨atts oavsett vilka v¨arden som s¨atts ovan:

– Short Term Excitement - V¨arde >= 0, <= 1 hur upphetsad anv¨andaren ¨ar, kortsiktigt – Long Term Excitement - V¨arde >= 0, <= 1 hur upphetsad anv¨andaren ¨ar, l˚angsiktigt – Meditation - V¨arde >= 0, <= 1 hur lugn och sansad anv¨andaren ¨ar

– Frustration - V¨arde >= 0, <= 1 hur frustrerad anv¨andaren ¨ar

– Engagement / Boredom - V¨arde >= 0, <= 1 hur engagerad / uttr˚akad anv¨andaren ¨ar Exempelpaket:

EXPRESSIV<>33,0497;0;GOOD_SIGNAL;False;False;False;False;False;0,3;0;0;0;0;0,1;1;0,26;0

4.1.3.3 Ovrigt¨

N¨ar en ny pakettyp beh¨over implementeras b¨or ¨andringar b˚ade g¨oras i server och klient. Alla paket b¨or f¨olja formatet som beskrivs i sektion 4.1.3. Ett paket som finns implementerat ¨ar PING som ser ut som f¨oljer:

PING<>Tid

d¨ar Tid ¨ar en tidsst¨ampel med datum och klockslag som representerar n¨ar PING paketet skickades.

(35)
(36)

Kapitel 5

Slutsatser

5.1 Utf¨ orande av m˚ al

Nedan ˚aterfinns de m˚al som var uppsatta f¨or arbetet och huruvida dessa blev genomf¨orda, med motivering ifall s˚a inte var fallet. problembeskrivningen i sin helhet ˚aterfinns i sektion 2.

– Kontrollera vilka signaler som det g˚ar att f˚a fr˚an headsetet och hur dessa kan kopplas till olika kognitiva faktorer med betydelse f¨or hur man interagerar med en datorappli- kation s˚a som t.ex. stress, upphetsning, frustration, osv.

Kontroll ¨over vilka signaler som kan f˚as fr˚an headsetet ¨ar gjord och beskrivs i imple- mentationsdelen. Den andra delen f¨or hur det hela kopplas samman med kognitiva faktorer

¨ar inte helt utf¨ort. Det som h¨ande var att f¨ordjupningsstudien tog mer tid ¨an ber¨aknat, s˚a det hela gjordes n˚agot mer ¨oversiktligt.

– Det skall g¨oras en ¨oversyn av EEG-signaler och relaterade kognitiva tillst˚and med hur dessa fungerar i det aktuella headsetet och hur de kan anv¨andas f¨or att anpassa MDI.

Ett s¨arskilt fokus l¨aggs p˚a hur s˚adan anpassning kan anv¨andas f¨or att f¨orb¨attra da- torapplikationer f¨or kognitiv tr¨aning genom att exempelvis anpassa sv˚arighetsgraden.

Den F¨orsta delen g¨allande EEG signaler och relaterade kognitiva tillst˚and ¨ar genomf¨ort.

D¨aremot har det inte lagts n˚agot s¨arskilt fokus p˚a datorapplikationer f¨or kognitiv tr¨aning d˚a det bed¨omdes att det skulle beh¨ova l¨aggas ner mer tid p˚a detta ¨an vad som hades.

Det g˚ar att i implementationen p˚averka sv˚arighetsgraden i spelet genom att bara avl¨asa exempelvis frustration och bara ¨andra niv˚an som spelaren befinner sig p˚a, men det ¨ar ett n˚agot rudiment¨art s¨att att g¨ora det p˚a. man beh¨over kolla vidare p˚a hur de olika faktorerna kan viktas samman eller liknande f¨or att f˚a ut n˚agot bra resultat, som det allts˚a saknades tid f¨or att g¨ora.

– G˚a igenom headsetets application programming interface (API), som beskriver hur headsetet kan anv¨andas rent programmeringstekniskt, f¨or att ta reda p˚a hur den kan kommunicera med det givna spelet.

Detta ¨ar genomf¨ort.

27

(37)

– M¨atv¨arden fr˚an varje kanal skall kunna l¨asas som r˚adata fr˚an varje kanal f¨or sig samt fr˚an var och en av de f¨ordefinierade variablerna i headsetets software development kit (SDK). Denna modul anv¨ands sedan f¨or att implementera en dynamisk anpassning av interaktion och gr¨anssnitt i spelet.

Den f¨orsta delen av detta ¨ar genomf¨ort, men det finns inte n˚agon omedelbart dynamisk anpassning av spelet eftersom en s˚adan skulle bygga vidare p˚a en f¨ordjupningsstudie som beskrivs ovan.

Allt som allt s˚a lades det ned v¨aldigt mycket tid p˚a den f¨ordjupningsstudie som ¨ar gjord, och implementationen tog mer tid ¨an v¨antat. S¨arskilt de problem som d¨ok upp var v¨aldigt tidskr¨avande i sammanhanget, dessa beskrivs i n¨asta sektion i mer detalj. Jag drogs med i f¨ordjupningsstudien som jag gjorde d˚a det var v¨aldigt intressant rent ¨oversiktligt, och jag gjorde d¨arf¨or studien v¨aldigt grundligt. Det kan k¨annas som att mer saker borde hunnits med, men eftersom examensarbetet enbart ¨ar 10 veckor s˚a finns det inte s˚a mycket tid att anv¨anda. Jag hade hoppats p˚a att mer skulle bli gjort och att implementationen skulle kunnat n˚a ett s˚adant skede d¨ar n˚agon faktiskt interagering med spelet skulle kunnat g¨oras, men s˚a blev allts˚a inte fallet.

5.2 L¨ osningens begr¨ ansningar

Som implementationen ¨ar gjord finns ett antal begr¨ansningar som diskuteras nedan.

Under tiden som l¨osningen implementerades testades den kontinuerligt p˚a en b¨arbar dator med 4 CPU k¨arnor. N¨ar den sedan testades p˚a en dator med f¨arre k¨arnor uppdagades problematik i att vissa m¨atv¨arden inte skickades till klienten. Detta kunde verifieras med hj¨alp av det sekvensf¨alt (COUNTER, se 4.1.3.1) som skickas med i paketen - om det v¨arde som kommer avviker mer ¨an 1 j¨amf¨ort med tidigare v¨ardet s˚a har n˚agot paket g˚att f¨orlorat.

Exempelvis f¨oljande sekvens: 1,2,3,9,10 s˚a tycks det saknas paket fr˚an 3 till 9. Man kan d˚a sluta sig till att dessa v¨arden inte skickats med. Problemet observerades sporadiskt, men det verkade uppst˚a n¨ar andra CPU kr¨avande program k¨orde samtidigt. Fels¨okning gjordes men det gick inte att finna vad som gjorde att m¨atv¨arden f¨orsvann n¨ar datorn anv¨ande all tillg¨anglig CPU.

Ett inl¨agg gjordes p˚a Emotivs officiella forum [55] d¨ar problemet f¨orklarades och en l¨osning efterfr˚agades d¨ar det uppdagade sig att headsetet kr¨aver en viss m¨angd CPU f¨or att det ska vara m¨ojligt att ta emot m¨atv¨arden, annars f¨orsvinner dom och skickas d¨armed inte.

Det visar sig allts˚a vara riskabelt att f¨ors¨oka extrahera m¨atv¨arden om datorn anv¨ander 100%

CPU. Detta var en s¨arskilt sv˚ar begr¨ansning att uppt¨acka eftersom det fungerar annorlunda p˚a datorer med olika m¨angd k¨arnor, d˚a bakgrundsprogram som k¨orde l¨amnade mer eller mindre CPU tid till programmet. Exakt hur mycket m¨atv¨arden som gick f¨orlorade under ovanst˚aende scenario varierade, f¨ormodligen baserat p˚a tiden det tar f¨or headsetet att f˚a den CPU som beh¨ovs, men det ¨ar inte verifierat.

Eftersom implementationen delades upp i tv˚a delar, en server och en klient (se sektion 4.1) s˚a ¨ar ovanst˚aende inte ett stort problem. Det kan vara s˚a att anv¨andaren vill k¨ora olika typer av diagnostik program, som exempelvis ritar upp EEG i realtid, som anv¨ander stora m¨angder CPU. Det som i praktiken kan g¨oras ¨ar att koppla headsetet till en dator som inte exekverar n˚agonting annat ¨an servern, s˚a headsetet f˚ar all den CPU som beh¨ovs, och l˚ata en annan maskin k¨ora klienten, d¨ar diagnostik program ocks˚a kan k¨oras. M¨atv¨arden

(38)

5.3. Framtida arbete 29

kan d˚a tas emot utan oro f¨or f¨orlust av m¨atv¨arden. Om implementationen hade gjorts p˚a ett s˚adant s¨att att en modul implementerats direkt i Python s˚a hade det blivit ett st¨orre problem. Det hade d˚a varit sv˚art att exekvera program i bakgrunden som tar stora m¨angder CPU, eftersom m¨atv¨arden d˚a hade kunnat f¨orsvinna.

Ovanst˚aende problem med CPU tid till headset var inte dokumenterat i dokumenta- tionen som f¨oljde med headsetet. D¨aremot existerar det en funktion vars dokumenterade syfte ¨ar hur l˚ang tid det f˚ar g˚a mellan tv˚a anrop till headsetet f¨or att h¨amta m¨atv¨arden.

Denna funktion har dock ingenting med ovanst˚aende problem att g¨ora, vilket var den f¨orsta tanken. Det ¨ar ¨aven v¨art att n¨amna att det vore optimalt om servern kunde ha flera klienter anslutna, vilket den inte kan i den nuvarande implementationen. D˚a skulle exempelvis tv˚a klienter kopplas upp d¨ar en k¨or spelet och en k¨or diagnostik program eller liknande. Det ¨ar inte n¨odv¨andigtvis ¨onskv¨art att k¨ora b˚ade spelet och diagnostik program p˚a samma dator, d˚a det exempelvis kan orsaka nedsatt prestanda i spelet, och en s˚adan l¨osning skulle elimi- nera det problemet. Det ¨ar m¨ojligt att ut¨oka servern med s˚adan funktionalitet utan st¨orre problem.

5.3 Framtida arbete

Som omn¨amns ovan i sektion 5.2 ¨ar det en bra id´e att bygga ut servern s˚a flera klienter kan vara anslutna samtidigt. Vidare ¨ar detta arbete enbart en implementation, och det skulle beh¨ova k¨oras i skarp milj¨o och granska resultatet man f˚ar ut fr˚an den studien p˚a ett relevant s¨att. Ett huvudsyfte med arbetet var just att konstruera en stabil bas som kan anv¨andas f¨or framtida arbeten, s˚a l¨osningen kan anv¨andas p˚a b¨asta m¨ojliga vis. En del i arbetet var att det ska vara enkelt att anpassa l¨osningen efter vilken typ av studie som ska genomf¨oras i framtiden.

(39)
(40)

Kapitel 6

Tacksamhetsbetygelser

Jag vill tacka Daniel Sj¨olie f¨or hans t˚alamod och handledning under arbetets g˚ang.

31

(41)
(42)

Referenser

[1] Desney S. Tan, Anton Nijholt, Brain-Computer Interfaces, sidorna 242-264, 2010 [2] Ernst Niedermeyer,F. H. Lopes da Silva, Electroencephalography: basic principles, cli-

nical applications, and related fields, 2005

[3] Tudor, Mario; Tudor, Lorainne; Tudor, Katarina Ivana, Hans Berger (1873-1941)–the history of electroencephalography, 2005

[4] William O. Tatum,Aatif M. Husain,Selim R. Benbadis, Handbook of EEG Interpreta- tion, sidorna ix-3, 2008

[5] Marc R. Nuwer et al., IFCN standards for digital recording of clinical EEG, sida 3, 1998

[6] Ronald I Herning, Reese T Jones, William D Hooker, Johns Mendelson, Laverne Blackwell, Cocaine increases EEG beta: A replication and extension of Hans Berger’s historic experiments, Electroencephalography and Clinical Neurophysiology, vol. 60, no.

6, Juni 1985, sidorna 470-477, 1985

[7] Ronald I. Herning, Xiaoyan Guo, Warren E. Better, Linda L. Weinhold, W. Robert Lange, Jean L. Cadet, David A. Gorelick, Neurophysiological signs of cocaine depen- dence: Increased electroencephalogram beta during withdrawal, Biological Psychiatry, vol. 41, no. 11, Juni 1997, sidorna 1087-1094, 1997

[8] A. James Rowan, Eugene Tolunsky, Primer of EEG, sidorna 54, 70 och 25-29, 2003 [9] V. E. Pollock, L. S. Schneider, Quantitative, waking EEG research on depression, Bi-

ological Psychiatry Volume 27, No. 7, 1 April 1990, sidorna 757-780 , 1990

[10] H. W. Agnew Jr., Wilse B. Webb, Robert L. Williams, THE FIRST NIGHT EFFECT:

AN EEG STUDYOF SLEEP, Psychophysiology Volume 2, No. 3, sidorna 263-266, 1966 [11] William Dement M.D., Nathaniel Kleitman Ph.D., Cyclic variations in EEG during

sleep and their relation to eye movements, body motility, and dreaming, 1957

[12] Wolfgang Klimesch, EEG alpha and theta oscillations reflect cognitive and memory performance: a review and analysis, Brain Research Reviews Vol. 29, No. 2-3, April 1999, sidorna 169-195, 1998

[13] Jonathan R. Wolpaw et al., An EEG-based brain-computer interface for cursor control, Electroencephalography and Clinical Neurophysiology Volume 78, No. 3, Mars 1991, sidorna 252-259, 1991

33

(43)

[14] Xiaorong Gao, Dingfeng Xu, Ming Cheng, Shangkai Gao, A BCI-based environmental controller for the motion-disabled, IEEE Transactions on Neural Systems and Rehabi- litation Engineering, Vol. 11, No. 2, Juni 2003, 2003

[15] Christoph Guger et al., Prosthetic Control by an EEG-based Brain Computer Interface (BCI), Proc. AAATE.99, 1999

[16] B. Obermaier, G. R. M¨uller, G. Pfurtscheller, Virtual Keyboard Controlled by Spon- taneous EEG Activity, IEEE transactions on Neural Systems and Rehabilitation Engi- neering, 2003

[17] Edward Cutrell, Desney Tan, BCI for passive input in HCI, ACM CHI 2008 Workshop on Brain-Computer Interfaces for HCI and Games, sidorna 1-2, 2007

[18] Anton Nijholt, Desney Tan, Playing with Your Brain: Brain-Computer Interfaces and Games, ACE 2007, sidorna 305-306, 2007

[19] Jonathan R. Wolpaw, Dennis J. McFarland, Theresa M. Vaughan, Gerwin Schalk, The Wadsworth Center Brain-Computer Interface (BCI) Research and Development Pro- gram, IEEE Transactions on Neural Systems and Rehabilitation Engineering, vol. 11, no. 2, Juni 2003, sidorna 204-207, 2003

[20] Jonathan R. Wolpaw, Niels Birbaumer, Dennis J. McFarland, Gert Pfurtscheller, The- resa M. Vaughan, Brain.computer interfaces for communication and control, Clinical Neurophysiology, vol. 113, no. 6, Juni 2002, sidorna 767-791, 2002

[21] P. C. Petrantonakis, L. J. Hadjileontiadis, On Modelling User.s EEG Response During a Human-Computer Interaction: A Mirror Neuron System-Based Approach, IFMBE Proceedings, vol. 22, no. 10, 2009, sidorna 1241-1245, 2009

[22] Christoph S. Herrmann, Matthias H.J. Munk, Andreas K. Engel, Cognitive functions of gamma-band activity: memory match and utilization, Trends in Cognitive Sciences, vol. 8, no. 8, Augusti 2004, sidorna 347-355, 2004

[23] Jeanette Schadow, Daniel Lenz, Nicole Dettler, Ingo Fr¨und, Christoph S. Herrmann, Early gamma-band responses reflect anticipatory top-down modulation in the auditory cortex, NeuroImage, vol. 47, no. 2, Augusti 2009, sidorna 651-658, 2009

[24] Edward L. Reilly, EEG Recording and Operation of the Apparatus, Electroencephalo- graphy: Basic Principles, Clinical Applications, and Related Fields, sida 140, 1999 [25] The International Federation of Societies for Electroencephalography and Clinical Neu-

rophysiology, 1974

[26] Ernst Niedermeyer, The Normal EEG of the Waking Adult, Electroencephalography:

Basic Principles, Clinical Applications, and Related Fields, sidorna 149-166, 1999 [27] Martin Sch¨urmann et. al., Gamma, alpha, delta, and theta oscillations govern cognitive

processes, Brain Research Reviews, vol. 29, no. 2-3, April 1999, sidorna 169-195, 1999 [28] Michael J. Kahana, David Seelig, Joseph R. Madsen, Theta returns, Current Opinion

in Neurobiology, vol. 11, no. 6, December 2001, sidorna 739-744, 2001

[29] Eric W. Sellers, Emanuel Donchin, A P300-based brain-computer-interface: Initial tests by ALS patients, Clinical Neurophysiology, vol. 117, no 3, Mars 2006, sidorna 538-548, 2006

(44)

REFERENSER 35

[30] Eric W. Sellers, Dean J. Krusienski, Dennis J. McFarland, Theresa M. Vaughan, Jonat- han R. Wolpaw, A P300 event-related potential brain.computer interface (BCI): The effects of matrix size and inter stimulus interval on performance, Biological Psychology, vol. 73, no 3, Oktober 2006, siforna 242-252, 2006

[31] http://www.ebme.co.uk/arts/eegintro/eeg2.htm , h¨amtad 2011-05-10 [32] http://neuroswitch.net/ , h¨amtad 2011-03-25

[33] http://www.bci2000.org/ , h¨amtad 2011-03-25 [34] http://www.microsoft.com/net/ , h¨amtad 2011-03-25 [35] http://www.python.org/ , h¨amtad 2011-03-25 [36] http://www.panda3d.org/ , h¨amtad 2011-03-25 [37] http://sccn.ucsd.edu/eeglab/ , h¨amtad 2011-03-25

[38] http://www.mathworks.com/products/matlab/ , h¨amtad 2011-03-25 [39] http://arxiv.org/abs/cs.DB/0608052 , h¨amtad 2011-05-10

[40] http://fieldtrip.fcdonders.nl/ , h¨amtad 2011-03-25

[41] http://www.cs.unc.edu/Research/vrpn/ , h¨amtad 2011-05-10

[42] http://www.emotiv.com/store/hardware/epoc-bci/epoc-neuroheadset/

[43] http://www.emotiv.com/researchers/ , h¨amtad 2011-02-28

[44] http://www.webmd.com/epilepsy/electroencephalogram-eeg-21508 , h¨amtad 2010-11- 26

[45] http://www.vardguiden.se/Sjukdomar-och-rad/Omraden/Undersokningar/EEG/ , h¨amtad 2010-11-26

[46] http://docs.python.org/library/ctypes.html , h¨amtad 2011-03-08

[47] http://devmentor.org/articles/network/Socket%20Programming%28v2%29.pdf , h¨amtad 2011-03-08

[48] http://sourceforge.net/projects/emotivsharp/ , h¨amtad 2011-03-18

[49] http://www.news-medical.net/news/20110315/New-tool-can-measure-brain-waves-in- children-with-cerebral-palsy.aspx , h¨amtad 2011-03-18

[50] http://www.youtube.com/watch?v=FokRiAXD-eA , h¨amtad 2011-03-18 [51] http://www.youtube.com/watch?v=4Cq35VbRpTY , h¨amtad 2011-03-18 [52] http://www.youtube.com/watch?v=K1SujPeqdXY , h¨amtad 2011-03-18 [53] http://www.youtube.com/watch?v=rqU3gUh3q c , h¨amtad 2011-03-18 [54] http://www.latex-project.org/ , h¨amtad 2011-03-18

[55] http://www.emotiv.com/forum/forum15/topic1259/ , h¨amtad 2011-03-23 [56] http://www.emotiv.com/forum/forum15/topic1428/ , h¨amtad 2011-06-11 [57] http://www.emotiv.com/forum/forum16/ , h¨amtad 2011-03-24

(45)

[58] http://www.immrama.org/eeg/electrode.html , h¨amtad 2011-03-31

[59] http://www.bci2000.org/wiki/index.php/Contributions:Emotiv , h¨amtad 2011-04-29 [60] http://openvibe.inria.fr/ , h¨amtad 2011-05-03

(46)

Bilaga A

Anv¨ andarhandledning

I det h¨ar avsnittet ˚aterfinns exempel f¨or hur de olika delarna i implementationerna kan anv¨andas.

A.1 Server

Servern tar ett argument som avg¨or om en anslutning till headsetet eller till EmoCom- poser, ett verktyg f¨or att kunna manuellt skicka signaler som om dom kom fr˚an hj¨almen.

Programmet k¨ors genom:

emoserver.exe [use composer]

d¨ar use composer ¨ar 0 om en anslutning ska g¨oras mot headset, och 1 om en anslutning g¨ors mot headset. Servern ligger d˚a och v¨antar p˚a en anslutning, och skickar m¨atv¨arden s˚a snart en s˚adan f˚as.

A.2 Klient

Det mest grundl¨aggande ¨ar att importera och initiera klienten. Detta g¨ors som f¨oljer:

import emopy.DataParser host = "192.168.0.1"

port = 2001

emo = emopy.DataParser.EmotivDataParser(host,port)

host ¨ar en str¨ang som ¨ar det hostname eller IP adress till den dator som k¨or servern.

port ¨ar som standard 2001, men det kan vara vilken port som helst som servern tar emot anslutningar p˚a. N¨ar koden ovan initieras objektet, men ingen anslutning uppr¨attas.

F¨oljande kod startar upp en ny tr˚ad som kontinuerligt f¨ors¨oker ansluta till servern:

emo.connect()

37

(47)

N¨ar en anslutning ¨ar uppr¨attad kan m¨atv¨arden b¨orja extraheras. Detta g¨ors med gatheredEEG() och gatheredExpressive() metoderna som k¨ors p˚a EmotivDataParser objektet:

eeg = emo.gatheredEEG()

expr = emo.gatheredExpressive()

Nu kan m¨atv¨arden f˚as genom att anropa en rad olika funktioner som finns beskrivna nedan:

getElements(self, start, end) - Returnerar alla element med en timestamp mellan start och end. start och end skall vara decimaltal mellan 0.0 och tiden som headsetet h¨amtat m¨atv¨arden.

getMaxTime(self) - Returnerar timestamp fr˚an sista v¨ardet som lagrats.

getChannelData(self, channel) - Returnerar alla v¨arden fr˚an en specifik kanal. channel kan vara en av f¨oljande, beroende p˚a om det ¨ar EEG eller Expressiv v¨arden som skall ˚aterf˚as:

EEG: COUNTER INTERPOLATED RAW CQ AF3 F7 F3 FC5 T7 P7 O1 O2 P8 T8 FC6 F4 F8 AF4 GYROX GYROY TIMESTAMP ES TIMESTAMP FUNC ID FUNC VALUE MARKER SYNC SIGNAL

Expressiv: time uid wsignal blink lblink rblink lookleft lookright eyebrow furrow smile clench smirkleft smirkright laugh shortexcitement longexcitement meditation frustration engagement

getLastValues(self, time) - Returnerar alla senaste time v¨arden.

getLastValuesFromChannel(self, time, channel) - Returnerar alla de senaste time v¨arden fr˚an channel, d¨ar channel ¨ar en av dom ovan.

getChannelDataInInterval(self, channel, start, end) - Returnerar alla v¨arden fr˚an channel, en av dom ovan, inom intervallet start och end som b˚ada ¨ar decimaltal mellan 0.0 och tiden som headsetet h¨amtat m¨atv¨arden.

References

Outline

Related documents

Detta g¨aller alla tal vars dyadiska utveckling ¨ar ¨andlig; man beh¨over inte kasta fler kast ¨an vad som anges av den position d¨ar sista ettan finns i utvecklingen.. Det betyder

Man kan faktiskt g¨ora ett konfidensintervall f¨or medianen med konfidensgrad minst lika med 1 − α helt utan n˚ agra som helst antaganden om den bakom- liggande f¨ordelningen

[r]

[r]

Rutinen som anv¨ands f¨ or att definiera operatorn, kan ha antingen ett eller tv˚ a argument, men eftersom funktionen normalt definieras i samma modul som inneh˚

L¨ angden (mm) av bultarna varierar p˚ a grund av ett slumpm¨ assigt fel som antas vara normalf¨ ordelat kring 0 med standardavvikelsen σ = 0.5 vilket motsvarar precisionen f¨

Eftersom planet g(x, y, z) = 3x+2y−z = 10 inte har n˚agra kantpunkter eller singul¨ara punkter (d¨ar gradienten ∇g ¨ar nollvektorn) s˚a antar f sina lokala extremv¨arden i

Matematiska institutionen Stockholms