BCI. LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed emotiv



Documenti analoghi
Realtà Virtuali Prof. Raffaella Folgieri, aa 2013/2014

Tale attività non è descritta in questa dispensa

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

I TUTOR. Massimiliano Cattafi Ilaria Laurenti

Il compilatore Dev-C++

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Android con App Inventor

Corso Eclipse. Prerequisiti. 1 Introduzione

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

Installazione di Zelio Soft 2 su Microsoft Windows Vista

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1

Introduzione a Dev-C++

Manuale di Installazione. Neurocog

Introduzione a Visual Studio 2005

VR e Kinect. Prof. Raffaella Folgieri

Nautilus Installazione Aggiornato a versione


Come aprire un conto Alpari e installare MetaTrader 4

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Introduzione al Python

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Mac Application Manager 1.3 (SOLO PER TIGER)

Installazione di GFI Network Server Monitor

1 Introduzione Installazione Configurazione di Outlook Impostazioni manuali del server... 10

D R O P B O X COS È DROPBOX:

Sistemi operativi. Esempi di sistemi operativi

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

INFO TECNICA SATO Italia

Istruzioni di installazione di IBM SPSS Modeler Text AnalyticsServer per Windows

Installazione del software Fiery per Windows e Macintosh

Setup e installazione

SCARICO DATI ONETOUCH Verio per EuroTouch Home GUIDA ALL USO

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Attivazione della connessione PPTP ADSL

MySidel application portal

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Se per errore viene chiuso, nel Toolbar principale, alla voce Help cliccare su First Step with AMR WinControl

StartUp programmazione C++ con EVC4 1. SVILUPPO APPLICAZIONI VISUAL C++...2

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Appunti di Informatica 1

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Il web server Apache Lezione n. 3. Introduzione

L ambiente di sviluppo Android Studio

Aggiornare applicazioni virtualizzate con App-V

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Manuale per il Software di Aggiornamento Bluetooth Per Windows 7 IVE-W530BT

Laboratorio di PROGRAMMAZIONE - a.a. 2010/2011

Lezione 9. Applicazioni tradizionali

Guida rapida di installazione e configurazione

Printer Driver. Questa guida descrive l installazione dei driver stampante per Windows Vista e Windows XP.

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Aggiornamenti Sistema Addendum per l utente

Creare un applicazione con Qt Creator in pochi semplici passi

GUIDA ALLE SOLUZIONI

AscoS3 Manuale Utente. Release 1.2

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

COME COLLEGARSI DA REMOTO AD UN PLC S7-300/400 via MPI Indice

Puppy Linux (Precise) Live da CD o da USB (Si può usare su PC con 256 MB di RAM)

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per utenti singoli)

Installazione di GFI WebMonitor

OwnCloud Guida all installazione e all uso

Application Server per sviluppare applicazioni Java Enterprise

Installazione e caratteristiche generali 1

Guida all installazione Command WorkStation 5.5 con Fiery Extended Applications 4.1

Printer Driver. Prima di procedere con l utilizzo del driver stampante, leggere il file Readme. Prima dell utilizzo del software (1)

Corso Eclipse. Prerequisiti. 3 Window Builder

SDLXLIFF in Word. Revisionare file SDLXLIFF in MS Word. Guida

Installazione interfaccia e software di controllo mediante PC Installing the PC communication interface and control software

Procedura di aggiornamento del firmware Display Remoto IntellyGreenPV

Guida Installazione esam

Il pacchetto contiene sia l ambiente di sviluppo sia i driver per la scheda.

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

HP Advanced Profiling Solution Guide introduttiva

OpenVAS - Open Source Vulnerability Scanner

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

TOUCH DISPLAY DOWNLOADER MANUALE DI ISTRUZIONI

Versione Italiana. Introduzione. Contenuto della confezione. Specifiche. Specifiche supplementari. BT200 - Sweex Bluetooth 2.0 Class II Adapter USB

PROCEDURE GENERALI ATTIVAZIONE MACRO

Backup Exec 2014 Management Pack for Microsoft SCOM. Manuale dell'utente di Management Pack for Microsoft SCOM

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico

Installazione di GFI Network Server Monitor

Installazione di Windows 7 su di un computer con USB 3.

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

Corso di Informatica

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Aggiornamento dispositivo di firma digitale

Installazione driver per connessione inverter al PC

il mondo di e/ mondoesa;emilia

Guida all utilizzo di Moodle per gli studenti

Come installare Python

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

SOMMARIO... 3 INTRODUZIONE...

FileMaker Server 12. Guida alla configurazione dell installazione in rete

Transcript:

BCI LEZIONI DI LABORATORIO Come interfacciare BCI mindwave ed emotiv

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

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/33f1af6ec61b-4f14-a0de-3e9096ed4b3a/dxsdk_aug2007.exe

Risultato dell installazione 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

Percorsi delle directory Strumenti>Opzioni Bottone per aggiungere un percorso percorsi Impostare anche i percorsi delle librerie (file.lib) Ora la compilazione non darà errori

Creare un interfaccia gioco/esperimento (1) Si possono ora creare oggetti da poter poi muovere con il mindset Vediamo un programma per creare un cubo rotante void DarkGDK ( void ) { // this is the entry point for the program // switch on sync rate and set the maximum // refresh rate to 60 frames per second dbsyncon ( ); dbsyncrate ( 60 ); // make our cube, load the effect and apply // it to our object dbmakeobjectcube ( 1, 1 ); dbloadeffect ( "DetailMapping.dbs", 1, 1 ); dbsetobjecteffect ( 1, 1 ); dbseteffectconstantfloat ( 1, "detailscale", 1 );

Creare un interfaccia gioco/esperimento (2) // main program loop while ( LoopGDK ( ) ) Anche qui c'è la struttura di ripetizione { // rotate the object dbturnobjectleft ( 1, 0.5 ); } } // update the screen dbsync ( );

Modello di programma vuoto // whenever using Dark GDK you must include the header file #include "DarkGDK.h" // the main entry point for the application is this function void DarkGDK ( void ) { // at the start of the program we will switch the sync rate on dbsyncon ( ); dbsyncrate ( 60 ); // this is our main loop while ( 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 graphics dbsync ( ); } // return back to windows return; }

Come usare le funzioni di DarkGDK (1) file Dark GDK.hlp nella cartella Documentation. Categorie di comandi: 1. CORE COMMANDS 2. TEXT COMMANDS 3. INPUT COMMANDS 4. FILE COMMANDS 5. DISPLAY COMMANDS 6. BASIC2D COMMANDS 7. BITMAP COMMANDS 8. SOUND COMMANDS 9. MUSIC COMMANDS 10. SPRITE COMMANDS 11. IMAGE COMMANDS 12. LIGHT COMMANDS 13. CAMERA COMMANDS 14. BASIC3D COMMANDS 15. MATRIX COMMANDS 16. WORLD COMMANDS 17. PARTICLES COMMANDS 18. 3DMATHS COMMANDS 19. FTP COMMANDS 20. MEMBLOCKS COMMANDS 21. MULTIPLAYER COMMANDS 22. SYSTEM COMMANDS 23. 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 )

Come usare le funzioni di DarkGDK (2) 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

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 OS 2. 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

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

Leggere il mindwave dalla porta adeguata (1) 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

Leggere il mindwave dalla porta adeguata (2) 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\")

Leggere il mindwave dalla porta adeguata (3) 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

Leggere il mindwave dalla porta adeguata (4)

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (1) #include <stdlib.h> #include <stdio.h> #include "thinkgear.h" /** * Prompts and waits for the user to press ENTER. */ void wait() { printf( "\n" ); printf( "Press the ENTER key...\n" ); fflush( stdout ); getc( stdin ); } /** * Program which prints ThinkGear EEG_POWERS values to stdout. */

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (2) int main( 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 ); }

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (3) /* 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 ); }

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (4) /* 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 ); }

Leggere il mindwave dalla porta adeguata: il programma in Visual C ++ commentato (5) /* 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 ); }

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

Integrare Mindwave in applicazione: esempio (1) // 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 porte char *comportname = NULL; int dllversion = 0; int connectionid = 0; int attpacketsread = 0; int errcode = 0; int attention=0; dbsyncon ( ); dbsyncrate ( 60 );

Integrare Mindwave in applicazione: esempio (2) // caricamento dell oggetto cubo e applicazione del layer desiderato dbmakeobjectcube ( 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;

Integrare Mindwave in applicazione: esempio (3) // main program loop while ( LoopGDK ( ) ) { // lettura pacchetto dati dalla porta com int packetsread = TG_ReadPackets(connectionId, -1); if( packetsread > 0 ) { // se il valore letto relativo all attenzione è diverso da 0 if(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 oggetto dbturnobjectleft ( 1, 0.5 ); } attpacketsread++; } } // forzatura refresh dello schermo dbsync ( ); } }

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/

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), lanciare rfcomm_device=raw_input( num porta del mindwave (e.g. COM1)? ') import logging import 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

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

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 sensori https://github.com/daeken/emokit La libreria consente di accedere ai dati Eeg da Emotiv EPOC su Windows, Linux, e OS X con Python.

Leggere Epoc Emotiv in python (3)

Leggere Epoc Emotiv in python (4)

Neurosky Mindwave ed Epoc Emotiv in Blender con Python 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

Open VIBE Open-Source Software Platform for Brain-Computer Interfaces and Virtual Reality http://openvibe.inria.fr Documentazione: http://openvibe.inria.fr/documentation/unstable Sistema modulare per organizzare velocemente ambienti sperimentali Più punti di vista SOGGETTO OPERATORE AUTORE

Open VIBE funzionalità 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

Open VIBE Scenario designer Graphical User Interface Non necessario programmare User-friendly WYSIWYG Per creare, monitorare e raffinare scenari BCI Supporta più device anche neurosky e epoc

Open VIBE tool di visualizzazione

Open VIBE presentazione stimuli

Open VIBE presentazione stimuli

Open VIBE presentazione stimuli

Open VIBE presentazione stimuli

Open VIBE presentazione stimuli

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

BCI2000: tool per esperimenti Occorre sempre lanciare moduli per: Signal source Signal processing Application» un aiuto: BCI2000Launcer.exe