16.11.2012 Views

Brain–Computer Interfaces - Index of

Brain–Computer Interfaces - Index of

Brain–Computer Interfaces - Index of

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

268 J. Mellinger and G. Schalk<br />

processing module may pr<strong>of</strong>it from all existing BCI2000 components, and additionally<br />

introduce a new filter component, purely by writing Matlab code rather than<br />

C++. Such a filter component consists <strong>of</strong> a processing script that acts on chunks <strong>of</strong><br />

data, and a few helper scripts that provide configuration and initialization functions.<br />

These scripts are executed inside a Matlab engine environment, and have full access<br />

to BCI2000 configuration parameters and state variables. In other words, it is possible<br />

to write Matlab scripts that request system parameters (which will appear at the<br />

interface to the investigator and are stored in the data file) and state variables (which<br />

will be stored along with individual data samples).<br />

2.3.4 Online Data Exchange<br />

In addition to the TCP/IP-based network protocol used internally by BCI2000<br />

(which is capable but complex), BCI2000 also includes a simple UDP-based network<br />

protocol. The protocol data format is ASCII-based and human-readable; it<br />

consists <strong>of</strong> a sequence <strong>of</strong> names followed by numerical values. This protocol is used<br />

to transfer information contained in state variables, and the “control signal” that is<br />

transferred from the Signal Processing module into the application module.<br />

This data sharing interface is useful if BCI2000 is to be connected to external<br />

application programs such as word processors (so that the external application is<br />

controlled by the output <strong>of</strong> the Signal Processing module), or to hardware such<br />

as environmental control interfaces, wheelchairs, or limb prostheses. The use <strong>of</strong><br />

that interface requires writing a small interfacing application in any programming<br />

language, or modifying an existing application to read data over a network<br />

connection.<br />

2.3.5 Operator Module Scripting<br />

As described above, the Operator module is the experimenter’s graphical user interface<br />

(GUI) for configuration and control <strong>of</strong> the BCI2000 system. Some <strong>of</strong> the<br />

operations <strong>of</strong> the Operator module can be scripted to execute programmatically.<br />

Most importantly, scripts may be tied to events such as system startup, or the<br />

end <strong>of</strong> an experimental run. Using Operator scripting, it is possible to completely<br />

wrap up the experimenter side <strong>of</strong> BCI2000 into scripts, and to remote-control it<br />

from a separate application. Thus, for example, a complex series <strong>of</strong> stimulus presentation<br />

paradigms can be realized using combinations <strong>of</strong> BCI2000 and external<br />

applications.<br />

2.4 Important Characteristics <strong>of</strong> BCI2000<br />

In summary, BCI2000 provides a number <strong>of</strong> characteristics that make it a good<br />

choice for many research applications. First, it comes with full source code in<br />

C++ and can incorporate signal processing routines written in Matlab TM . Second,<br />

BCI2000 does not rely on third-party components for its execution; modifications

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!