Thumbnail Image

Design and implementation of a brain computer interface system

Venthur, Bastian

In dieser Dissertation stellen wir die Ergebnisse unserer Arbeit vor, deren Ziel es war ein modulares und komplett freies- und quelloffenes Brain-Computer Interface (BCI) System in Python zu erstellen. Andere BCI Systeme existieren bereits, jedoch sind diese meist monolithisch und in einer maschinennahen Programmiersprache wie C++ geschrieben. Monolithische BCI Systeme decken die komplette Datenverarbeitungskette eines BCI Systems von der Signalakquise, über Signalverarbeitung und Feedback- und Stimuluspräsentation ab, jedoch zwingen sie auch den Benutzer das gesamte System zu benutzen. Dies ist problematisch da ein Wissenschaftler, der zum Beispiel in der Signalverarbeitung spezialisiert ist, wahrscheinlich bereits eine Sammlung von Algorithmen in einer ihm vertrauten Programmiersprache haben wird. Gezwungen zu sein in einem monolithischen BCI System zu arbeiten, bedeutet er muss seine Algorithmen und Methoden zum System migrieren und anschließend in einer ihm unvertrauten Umgebung arbeiten. In C++ geschriebene Systeme machen es außerdem für Nicht-Informatiker unnötig schwer neue Funktionalität in diese Systeme hinzuzufügen. Selbst unter Informatikern und gut ausgebildeten Programmierern ist C++ berüchtigt für die Fähigkeiten die es einem abverlangt vernünftigen C++ Code zu schreiben, und im Feld von BCI besteht nur der kleinste Teil der Wissenschaftler aus Informatikern oder ausgebildeten Programmierern. Monolithische BCI Systeme versuchen dieses Problem zu minimieren, indem sie bereits eine große Anzahl an Treibern für Verstärker, Algorithmen, Methoden und Paradigmen bereitstellen. Da jedoch ein großer Teil der BCI Forschung gerade aus der Entwicklung und Verbesserung von Methoden und Paradigmen besteht ist, ist das Programmieren eben jener fast unausweichlich. Mit unserem System möchten wir all diese Probleme lösen. Wir stellen ein modulares BCI System vor, das in Python geschrieben wurde. Python ist eine einfach zu lernende aber mächtige Programmiersprache, die bestens für wissenschaftliche Programmierung geeignet ist. Unser BCI System besteht aus drei unabhängigen Komponenten, die zu einem vollständigen BCI System kombiniert werden, oder als unabhängige Komponenten in existierenden BCI System verwendet werden können. In dieser Arbeit werden wir für jede Komponente die Anforderungen abdecken, die Designaspekte durchgehen, die zur jeweiligen Implementierung geführt haben und demonstrieren wie man die Komponente in ihrer jeweiligen Domäne benutzt. Am Ende der Arbeit werden wir außerdem alle drei Teile zu einem kompletten BCI System kombinieren, und zeigen wie wir ein Echtzeit BCI Experiment durchführen. Unser System ist freie und quelloffene Software und lizenziert unter freien Software Lizenzen. Der Quellcode ist frei verfügbar.
In this dissertation we present the results of our effort to provide a modular, completely free- and open source brain-computer interface (BCI) system in Python. While other BCI systems exist, they are usually monolithic and written in a low level programming language like C++. Monolithic BCI systems cover the whole BCI processing chain from data acquisition, to signal processing, and feedback- and stimulus presentation, but they also force the user to use the whole system. This is problematic, as a researcher who is specialized, for example, in methods development will probably already have a toolbox of algorithms in a programming language he is familiar with. Being forced to use a monolithic system, means he has to migrate the tools and algorithms to the monolithic system first, and then work in an unfamiliar environment. Being written in C++, those BCI systems also make it unnecessary hard for non-computer scientists to add new functionality to those systems. Even among computer scientists, C++ is notorious for the skill level required to write decent C++ code. And in the field of BCI, only a small part of researchers are actually computer scientists. Those BCI systems try to minimize the need to write C++ code, by providing a large set of amplifier drivers, toolbox methods and paradigms, but since a large part in BCI research is in developing new or improving existing methods or paradigms, writing code is inevitable. With our BCI system we want to solve those problems altogether. We present a modular BCI system that is written in Python, an easy to learn yet powerful programming language fit for scientific computing. Our BCI system consists of three independent parts that can be used together as a complete BCI system, or independently, as a component in existing BCI systems. In this thesis we will cover for each component the requirements, the design aspects that lead to the implementation of the component, and demonstrate how to use the component individually in their domain. At the end of this thesis, we will demonstrate how to combine all three components to a complete BCI system and perform a real time online experiment. Or system is free- and open source software licensed under free software licenses. The source code is freely available.