Online P300 and ErrP recognition with BCI2000

From AIRWiki
Revision as of 10:21, 11 May 2009 by BernardoDalSeno (Talk | contribs) (Part 2: project description)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Part 1: project profile

Project name

Comandare una sedia a rotelle usando BCI2000

Project short description

Il progetto si pone l'obiettivo di sviluppare un software in grado di garantire la navigazione all'interno di menù con l'attivazione delle relative funzioni che consentono la navigazione di una sedia a rotelle all'interno degli ambienti domestici. L'iterazione tra uomo e computer è effettuata tramite interfaccia BCI

Dates

Start date: 2008/01/01

End date: 2008/07/01

Internet site(s)

'

People involved

'

Andrea Sgarlata

Project head(s)

' Matteo Matteucci Bernardo Dalseno


Other Politecnico di Milano people

if any, other people participating to the project:

Students

Students currently working on the project

Andrea Sgarlata


Students working on the project in the past

External personnel:

'

Laboratory work and risk analysis

'


Part 2: project description

Il software per la rileviazione della P300 e la relativa navigazione nei menù è sviluppato a partire dal tool open source 'BCI2000' che mette a disposizione una struttura ed una serie di funzioni flessibili ed adattabili alle nostre esisgenze. Per la rilevazione delle onde celebrali è utilizzato un amplificatore con il relativo software 'EBneuro'. Il sistema sottopone l'utente a delle stimolazioni visive, nel frattempo rileva la sua attività celebrale e tramite l'analisi di questa cerca di determinare quale stimolazione visiva l'utente ha selezionato. Identificata la stimolazione, si attiva la funzione associata a quella stimolazione che può essere l'attivavione di un nuovo sottomenù, lo spostamento della sedia a rotelle in un altra stanza oppure l'accensione di una lampadina o radio ecc...

Interfacciamento EBNeuro - BCI2000

Il sistema attualmente è composto da un plugin che si occupa di inviare i dati tramite pipe ad un altro modulo che fa parte dell'intero sistema di BCI2000.

Per ottenere una corretta temporizzazione del sistema di BCI2000 abbiamo sfruttato il fatto che il plugin è più lento nell'invio dei dati rispetto all'intero sistema BCI2000. Infatti si è deciso di inviare tramite plugin una quantità di dati costante pari a 1/16 di secondo, tenendo conto del fatto che durante l'esecuzione di una registrazione online la quantità di dati ricevuti dal plugin risulta molto regolare e costante. In questo modo ogni invio di dati tramite pipe rappresenta il trascorrere di un tempo prefissato che risulta pari a 1/16 di secondo.

Il plugin non appena accumulato un blocco dati pari a 1/16 di secondo deve subito inviarlo tramite pipe, in modo da mantenere una regolarità tra l'invio consecutivo di due blocchi. La pipe ha un buffer interno (mezzo secondo?) che evita perdite di dati se BCI2000 dovesse essere in ritardo. Eventuali perdite di dati dovute al riempimento della pipe vengono segnalate al termine dell'acquisizione del software Galileo; non vengono segnalati gli errori di pipe piena relativi a quando BCI2000 non sta registrando.

Per quanto riguarda il modulo sorgente di BCI2000 questo si occupa di leggere dalla pipe: il numero di canali, il numero di campioni per canale e la frequenza di campionamento. Una volta letti questi valori controlla che l'utente abbia inserito tra i parametri gli stessi valori letti tramite pipe, se questo non avviene blocca l'intero sistema e comunica l'errore all'utente con i valori esatti da inserire. Questa procedura viene ripetuta finché l'utente non inserisce gli stessi parametri letti dal modulo source.

A run time il modulo source si occupa di leggere dalla pipe una blocco di dati e di inviarlo al modulo successivo (modulo filtro); ogni blocco viene inoltrato non appena è disponibile.