Home

Awesome

This folder contains the code associated to the following paper: http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0131491

Title: Exploiting task constraints for self-calibrated brain-machine interface control using error-related potentials.

Authors: I. Iturrate, J. Grizou, J. Omedes, P-Y. Oudeyer, M. Lopes and L. Montesano

Abstract: This paper presents a new approach for self-calibration BCI for reaching tasks using error-related potentials. The proposed method exploits task constraints to simultaneously calibrate the decoder and control the device, by using a robust likelihood function and an ad-hoc planner to cope with the large uncertainty resulting from the unknown task and decoder. The method has been evaluated in closed-loop online experiments with 8 users using a previously proposed BCI protocol for reaching tasks over a grid. The results show that it is possible to have a usable BCI control from the beginning of the experiment without any prior calibration. Furthermore, comparisons with simulations and previous results obtained using standard calibration hint that both the quality of recorded signals and the performance of the system were comparable to those obtained with a standard calibration approach.

PlosOne: http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0131491

Final version release: https://github.com/flowersteam/self_calibration_BCI_plosOne_2015/releases/tag/plosOne

Setting up the repository:

git clone https://github.com/flowersteam/self_calibration_BCI_plosOne_2015.git

cd self_calibration_BCI_plosOne_2015/
git submodule init
git submodule update

cd matlab_tools
git submodule init
git submodule update

Note: If you really don't want to use git, the result of the above commands are in the self_calibration_BCI_plosOne_2015.zip file from the plosOne release.

Finally, add the files from the plosOne release following the path given in their respective zip folder:

File organization and usage

Going into details

If you want to enter into the code, we recommend to start exploring the following repository https://github.com/jgrizou/lfui. You will find there a simple annotated example of the self-calibration code under example/gridworld/run_gridworld.m

We recommend the following papers for more details on the algortihm:

For even more details and illustrative drawings of these ideas, please refer to the following thesis:

For more details about the use of Errps in BCI control tasks, please refer to:

License

The code is under GPL V3 the paper itself is under Creative Commons BY-NC-ND