43
BCI LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed emotiv

LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

BCI

LEZIONI DI LABORATORIOCome interfacciare BCI mindwave ed emotiv

Page 2: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Neurosky Mindwave

• Obiettivo: integrare Neurosky Mindwave in un ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali

• Proviamo prima con integrazione in C++ con un motore di gioco molto documentato su Internet

• Trattiamo quindi l’esperimento come se si trattasse di un gioco

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 3: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Ambiente di sviluppo GUI

• darkgdk.thegamecreators.com• scaricate ambiente di sviluppo Dark GDK per

videogames in Visual C++– insieme di librerie e oggetti grafici– utilizzano Microsoft DirectX

• installare Microsoft Visual C++ 2008 (o 2010)• installare Microsoft DirectX 9.0c SDK• installare Dark GDK• Microsoft’s DirectX 9.0c SDK è reperibile qui:

http://download.microsoft.com/download/3/3/f/33f1af6e-c61b-4f14-a0de-3e9096ed4b3a/dxsdk_aug2007.exe

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 4: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Risultato dell’installazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

• Tutorials: progetti Visual C++ di esempio e modello.• Samples: progetti più complicati. Es. Sample Viewer • Media: alcuni oggetti musicali e grafici da utilizzare nei

videogames.• Documentation: file di Help con descrizione di tutte le

funzioni• Al primo tentativo di compilare un progetto, potremmo

avere messaggi di errore da parte del sistema. Occorrerà allora impostare manualmente i percorsi delle directory VC++, come mostrato nella slide successiva

Page 5: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Percorsi delle directory

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

• Strumenti>Opzioni

• Impostare anche i percorsi delle librerie (file .lib)• Ora la compilazione non darà errori

Bottone per aggiungere un percorso

percorsi

Page 6: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

• Si possono ora creare oggetti da poter poi muovere con il mindset• Vediamo un programma per creare un cubo rotantevoid DarkGDK ( void ){

// this is the entry point for the program// switch on sync rate and set the maximum// refresh rate to 60 frames per seconddbSyncOn ( );dbSyncRate ( 60 );// make our cube, load the effect and apply// it to our objectdbMakeObjectCube ( 1, 1 );dbLoadEffect ( "DetailMapping.dbs", 1, 1 );dbSetObjectEffect ( 1, 1 );dbSetEffectConstantFloat ( 1, "detailScale", 1 );

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Creare un’interfaccia gioco/esperimento (1)

Page 7: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

// main program loopwhile ( LoopGDK ( ) )

Anche qui c'è la struttura di ripetizione{ // rotate the object

dbTurnObjectLeft ( 1, 0.5 );

// update the screendbSync ( );

}}

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Creare un’interfaccia gioco/esperimento (2)

Page 8: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

// whenever using Dark GDK you must include the header file#include "DarkGDK.h"// the main entry point for the application is this functionvoid DarkGDK ( void ){

// at the start of the program we will switch the sync rate ondbSyncOn ( );dbSyncRate ( 60 );// this is our main loopwhile ( LoopGDK ( ) ){

// inside our main loop we can control the logic of the program,// the final call in our main loop is to dbSync, this function will// update the screen and draw any graphicsdbSync ( );

}

// return back to windowsreturn;

}Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Modello di programma vuoto

Page 9: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

file Dark GDK.hlp nella cartella Documentation. Categorie di comandi:1. CORE COMMANDS 2. TEXT COMMANDS3. INPUT COMMANDS 4. FILE COMMANDS5. DISPLAY COMMANDS 6. BASIC2D COMMANDS7. BITMAP COMMANDS 8. SOUND COMMANDS9. MUSIC COMMANDS 10. SPRITE COMMANDS11. IMAGE COMMANDS 12. LIGHT COMMANDS13. CAMERA COMMANDS 14. BASIC3D COMMANDS15. MATRIX COMMANDS 16. WORLD COMMANDS17. PARTICLES COMMANDS 18. 3DMATHS COMMANDS19. FTP COMMANDS 20. MEMBLOCKS COMMANDS21. MULTIPLAYER COMMANDS 22. SYSTEM COMMANDS23. TERRAIN COMMAND• funzioni i cui prototipi sono descritti nei corrispondenti file di inclusione che si trovano

nella cartella INCLUDE.• Es funzioni che realizzano aggiornamento dello schermo (categoria CORE):

dbSyncOn : void dbSyncOn ( void )dbSyncOff : void dbSyncOff ( void )dbSync : void dbSync ( void )dbSyncRate : void dbSyncRate ( int iRate )

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Come usare le funzioni di DarkGDK (1)

Page 10: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

blocco note – aprire il file DarkSDKCore.h in cui si trova la definizione dei prototipi delle funzioni:

voiddbSyncOn ( void );voiddbSyncOff ( void );voiddbSync( void );voiddbSyncRate ( int dbiRate );

categoria particolarmente interessante:• BASIC3D

– contiene comandi per visualizzare, manipolare, muovere, far collidere oggetti tridimensionali

– utilissimi nella creazione di videogames.• Personaggi creati in Blender possono essere utilizzati in

DarkGDK

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Come usare le funzioni di DarkGDK (2)

Page 11: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Leggere i segnali rilevati da Mindwave• Per leggere i segnali EEG rilevati da Mindwave ho bisogno di

installare i componenti del mindset development tool (MTD), reperibili gratuitamente qui:

• http://store.neurosky.com/products/mindset-development-tools• MTD ha 3 livelli di interfaccia per comunicare con l’haedset

Mindwave:1. ThinkGear Connector (TGC), eseguibile Windows e Mac OS2. ThinkGear Communications Drivers (TGCD), librerie per Windows, Windows

Mobile, Mac OS X e J2ME (Symbian)3. ThinkGear Stream Parser, codice sorgente per ogni piattaforma C

• I primi due livelli più alti forniscono supporto per le più comuni piattaforme, quali Windows e Mac OS X, mentre il livello più basso, Stream Parser interface fornisce codice sorgente e specifiche per la comunicazione a basso livello che permettono l’interfaccia al mindwave virtualmente su ogni piattaforma che possa ricervere un stream dati seriale Bluetooth

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 12: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

ThinkGear• ThinkGear è la tecnologia che abilita i device NeuroSky ad

interfacciare chi indossa un brain headset

• ThinkGear include i sensori posti sullo scalpo, i punti di contatto e di

riferimento posti sull’orecchio e sul lobo auricolare ed il chip posto

sul BCI che processa i dati

• Sia le onde cerebrali che gli “eSense Meters” (attenzione e

meditazione) vengono lette dal chip

• La tecnologia ThinkGear abilita i tool di sviluppo, i driver e le api

dell’MDT

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 13: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

1. Creiamo un nuovo progetto, con Visual Studio o Visual C++ (vanno entrambi bene)– Usiamo il template in "Visual C/C++ > Win32 > Win32 Console

Application"– Chiamiamo il progetto "thinkgear_testapp"– Mettiamolo in una cartella “Solution”– Click OK.

2. Quando compare il Win32 Application Wizard, selezioniamo "Application Settings":– in “Application type” selezioniamo "Console application”– nelle Additional options, assicuriamoci che sia selezionato solo “Empty

project"– in common header files non deve essere selezionato nulla– click Finish

3. Copiamo i file “thinkgear.h", "thinkgear.lib", e "thinkgear_testapp.c" files nella directory di progetto di thinkgear_testapp

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere il mindwave dalla porta adeguata (1)

Page 14: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

4. In Visual Studio, click con il tasto ds del mouse sul folder "Source Files":– Selezioniamo "Add" > "Existing Item..."– Selezioniamo il file "thinkgear_testapp.c" nel folder thinkgear_testapp

5. Click con il tsto ds del mouse sul folder "Header Files":– Selezioniamo "Add" > "Existing Item..."– Selezioniamo il file "thinkgear.h" nel folder thinkgear_testapp

6. Click con il tasto ds del mouse sul progetto "thinkgear_testapp":– Selezioniamo "Add" > "Existing Item..."– Selezioniamo il file "thinkgear.lib" nel folder thinkgear_testapp

(probabilmente dovremo cambiare "Files of type" sotto "All Files", e ignorare ogni messaggio)

7. Costruiamo il progetto (Build) (il file "thinkgear_testapp.exe" dovrebbe apparire nel folder "SOLUTION\Debug\")

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere il mindwave dalla porta adeguata (2)

Page 15: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

8. Copiamo il file "thinkgear.dll" nello stesso folder del file "thinkgear_testapp.exe" ("SOLUTION\Debug\")

9. Assicuriamoci ora che l’headset sia connesso al computer alla COM corretta**

10. Eseguiamo il file "thinkgear_testapp.exe" e leggiamo i valori delle onde EEG

11. Ora possiamo leggere, comprendere ed adttare il codice del file thinkgear_testapp.cpp ai nostri progetti per collezionare i dati dall’Headsets

12. Nell’API documentation potete trovare tutti I dettagli relativi alle API ThinkGear

** modificare, se necessario, il numero della porta COM mediante il Device Manager

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere il mindwave dalla porta adeguata (3)

Page 16: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere il mindwave dalla porta adeguata (4)

Page 17: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

#include <stdlib.h>#include <stdio.h>#include "thinkgear.h"/*** Prompts and waits for the user to press ENTER.*/

voidwait() {

printf( "\n" );printf( "Press the ENTER key...\n" );fflush( stdout );getc( stdin );

}/*** Program which prints ThinkGear EEG_POWERS values to stdout.*/

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (1)

Page 18: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

intmain( void ) {

char *comPortName = NULL;int dllVersion = 0;int connectionId = 0;int attPacketsRead = 0;int errCode = 0;

int attention=0;/* Print driver version number */dllVersion = TG_GetDriverVersion();printf( "ThinkGear DLL version: %d\n", dllVersion );/* Get a connection ID handle to ThinkGear */connectionId = TG_GetNewConnectionId();if( connectionId < 0 ) {

fprintf( stderr, "ERROR: TG_GetNewConnectionId() returned %d.\n", connectionId );

wait();exit( EXIT_FAILURE );

}

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (2)

Page 19: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

/* Set/open stream (raw bytes) log file for connection */errCode = TG_SetStreamLog( connectionId, "streamLog.txt" );if( errCode < 0 ) {

fprintf( stderr, "ERROR: TG_SetStreamLog() returned %d.\n", errCode );wait();exit( EXIT_FAILURE );

}/* Set/open data (ThinkGear values) log file for connection */errCode = TG_SetDataLog( connectionId, "dataLog.txt" );if( errCode < 0 ) {

fprintf( stderr, "ERROR: TG_SetDataLog() returned %d.\n", errCode );wait();exit( EXIT_FAILURE );

}

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (3)

Page 20: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

/* Attempt to connect the connection ID handle to serial port "COM5" */comPortName = "\\\\.\\COM17";errCode = TG_Connect( connectionId,

comPortName, TG_BAUD_9600, TG_STREAM_PACKETS );

if( errCode < 0 ) {fprintf( stderr, "ERROR: TG_Connect() returned %d.\n", errCode );wait();exit( EXIT_FAILURE );

}

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (4)

Page 21: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

/* Read 10 ThinkGear Packets from the connection, 1 Packet at a time */attPacketsRead = 0;while( attPacketsRead < 100 ) {

/* Attempt to read a Packet of data from the connection errCode = TG_ReadPackets( connectionId, -1 );*/

int packetsRead = TG_ReadPackets(connectionId, -1);/* If TG_ReadPackets() was able to read a complete Packet of data... */if( packetsRead > 0 ) {

/* If attention value has been updated by TG_ReadPackets()... if( TG_GetValueStatus(connectionId, TG_DATA_ATTENTION) != 0 ) */

if(TG_GetValueStatus(connectionId, 2) != 0){attention = TG_GetValue(connectionId, 2);

attPacketsRead++;/* Get and print out the updated attention value */fprintf( stdout, "New attention value: %d\n",attention );fflush( stdout );

} /* end "If attention value has been updated..." */} /* end "If a Packet of data was read..." */

} /* end "Read 10 Packets of data from connection..." *//* Clean up */TG_FreeConnection( connectionId );/* End program */wait();return( EXIT_SUCCESS );

}

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (5)

Page 22: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Integrare Mindwave: segnali, controlli e oggetti grafici

• Ora che sappiamo come leggere i segnali del mindwave, dobbiamo:– Creare un ambiente grafico per l’esperimento– Collegare l’oggetto(i) grafico creato ai controlli

• Ecco un esempio (Visual C ++), in cui– Viene creato uno sprite rappresentante un cubo– Si resta in ascolto dei segnali EEG– A seconda dei livelli di attenzione raggiunti, lo sprite ruota

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 23: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

// Dark GDK - The Game Creators - www.thegamecreators.com// include DarkGDK header file#include "DarkGDK.h"#include <stdlib.h>#include <stdio.h>#include "thinkgear.h"void DarkGDK ( void ){

inizio programma// settaggio del refresh rate a 60 frames per secondo

// parte inizializzazione portechar *comPortName = NULL;

int dllVersion = 0;int connectionId = 0;int attPacketsRead = 0;int errCode = 0;

int attention=0;dbSyncOn ( );dbSyncRate ( 60 );

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Integrare Mindwave in applicazione: esempio (1)

Page 24: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

// caricamento dell’oggetto cubo e applicazione del layer desideratodbMakeObjectCube ( 1, 1 );dbLoadEffect ( "DetailMapping.dbs", 1, 1 );dbSetObjectEffect ( 1, 1 );

dbSetEffectConstantFloat ( 1, "detailScale", 1 );// verifica versione drivers installati e loro presenza nel sistema

dllVersion = TG_GetDriverVersion();// inizializzazione id di sessione e configurazione del bus di ascolto sulla porta

//16 (quella che risulta essere utilizzata dal mindset)

connectionId = TG_GetNewConnectionId();comPortName = "\\\\.\\COM16";

errCode = TG_Connect( connectionId, comPortName, TG_BAUD_9600, TG_STREAM_PACKETS );

attPacketsRead = 0;

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Integrare Mindwave in applicazione: esempio (2)

Page 25: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Integrare Mindwave in applicazione: esempio (3)// main program loopwhile ( LoopGDK ( ) ){

// lettura pacchetto dati dalla porta comint packetsRead = TG_ReadPackets(connectionId, -1);

if( packetsRead > 0 ) {// se il valore letto relativo all’attenzione è diverso da 0if(TG_GetValueStatus(connectionId, 2) != 0){

attention = TG_GetValue(connectionId, 2);// se il valore attenzione è superiore a 40, rotazione del cubo

if(attention > 40){dbSetCursor(10,10);dbPrint(double(attention));

// rotazione oggettodbTurnObjectLeft ( 1, 0.5 );

}attPacketsRead++;

} }// forzatura refresh dello schermodbSync ( );

}}

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 26: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

ThinkGear in python• In Blender è incluso un motore python • disponibile un modulo python che fa il parser del protocollo ThinkGear• Funziona sia in Linux che in Windows• A questo link si trova il modulo (al momento la porta com deve essere

impostata a mano): http://github.com/groner/pythinkgear/

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 27: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

ThinkGear in python: getting start• Serve python 2.6• Per download e install del modulo pythinkgear: easy_install thinkgear

(add on per scaricare e installare facilmente che si scarica dal Python Package index (pypi.python.org), e precisamente da http://peak.telecommunity.com/dist/ez_setup.py

• ora dalla shell python (avvio python in console mode), lanciarerfcomm_device=raw_input(‘num porta del mindwave (e.g. COM1)? ')

import loggingimport thinkgear

logging.basicConfig(level=logging.DEBUG)for pkt in thinkgear.ThinkGearProtocol(rfcomm_device).get_packets():packet_log.append(pkt)

• alla fine deve esserci una riga vuota. Questa serie di comandi comincerà ad inviare il log con i pacchetti attention/meditation/poor signal/eeg che riceve dal mindset

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 28: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

ThinkGear in python: getting start• Dopo tante prove e bipbip…. Serve anche

http://sourceforge.net/projects/pyserial/

• Purtroppo la documentazione non è delle più chiare e non si

trovano esempi

• Occorre andare per tentativi

• Pyton – Blender può leggere i segnali

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 29: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Leggere Epoc Emotiv in python (1)• L’headset Emotiv Epoc ha 14 sensori EEG• Esiste un SDK a disposizione per scopi di ricerca, acquistabile a

$750, per ambiente Windows e totalmente proprietario.

• Cody Brocious ha però avviato l’Emokit project, una interfaccia open source per l’EPOC.

• Il codice è disponibile su github nel repository daeken/Emokit• Contiene una libreria Python per interagire con l’EPOC e per

mostrare graficamente I dati rilevati dai sensorihttps://github.com/daeken/Emokit

• La libreria consente di accedere ai dati Eeg da Emotiv EPOC su Windows, Linux, e OS X con Python.

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Page 30: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere Epoc Emotiv in python (3)

Page 31: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Leggere Epoc Emotiv in python (4)

Page 32: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

• Blender ha un motore python incorporato • attraverso il quale è possibile, dunque, utilizzare le librerie

viste sia con Neurosky mindwave, sia con Emotiv Epoc• Vedremo

– Come programmare in python– Come utilizzare python e includere librerie in blender

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Neurosky Mindwave ed Epoc Emotivin Blender con Python

Page 33: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

• http://openvibe.inria.fr• Documentazione:

http://openvibe.inria.fr/documentation/unstable• Sistema modulare per organizzare velocemente ambienti

sperimentali• Più punti di vista

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Open VIBE – Open-Source Software Platformfor Brain-Computer Interfaces and Virtual Reality

AUTOREOPERATORE

SOGGETTO

Page 34: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

• Piattaforma per analisi e processing real time di dati cerebrali (EEG, ECoG, MEG...) :– Acquisizione, pre-processing, processing e display

• Forum: http://openvibe.inria.fr/forum

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Open VIBE – funzionalità

Page 35: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

• Graphical User Interface– Non necessario programmare– User-friendly– WYSIWYG– Per creare, monitorare

e raffinare scenari BCI• Supporta più device

– anche neurosky e epoc

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Open VIBE – Scenario designer

Page 36: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Open VIBE – tool di visualizzazione

Page 37: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Open VIBE – presentazione stimuli

Page 38: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Open VIBE – presentazione stimuli

Page 39: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Open VIBE – presentazione stimuli

Page 40: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Open VIBE – presentazione stimuli

Page 41: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

Open VIBE – presentazione stimuli

Page 42: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

BCI2000: tool per esperimenti• http://www.bci2000.org/wiki/index.php/Programming_Howto:Quick

start_Guide• Occorre creare un account• Per chi è interessato: segnalare, perché l’account può essere

creato come lab

• Brain-controlled word processor: http://www.youtube.com/watch?v=J4Qw-iY6OGk

Page 43: LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed ... · ambiente grafico per la creazione di esperimenti/giochi rispondenti a comandi mentali • Proviamo prima con integrazione

Prof. R. Folgieri Realtà Virtuali aa 2010/2011

BCI2000: tool per esperimenti• Occorre sempre lanciare moduli per:

– Signal source– Signal processing– Application

» un aiuto: BCI2000Launcer.exe