Acquisition of signals from 2 Emotiv Epoc headsets

Forum for software developers to discuss BCI2000 software development
Locked
TPAC
Posts: 2
Joined: 24 Jan 2012, 11:21

Acquisition of signals from 2 Emotiv Epoc headsets

Post by TPAC » 24 Jan 2012, 11:28

Hi all,


I'm wondering if it is possible to get the signals from 2 (or more) EMOTIV Epoc headsets in BCI2000. For instance, this would allow to create nice multi-player games based on motor-imagery or any other BCI paradigm...

Emotiv people told me it was definitely possible to connect several headsets on one machine (each headset communicating with its own dongle plugged in its own USB port).

But I don't know

1) if all my headsets should be "research edition" or higher (they did not answer the question)

2) if it would be possible that all the signals be synchronized

3) how to do this practically in BCI2000


Has anyone already tried this kind of development ? Is it even technically possible ?


Thank you for your feedback on this.

Best regards,

TPAC

griffin.milsap
Posts: 58
Joined: 08 Jun 2009, 12:42

Re: Acquisition of signals from 2 Emotiv Epoc headsets

Post by griffin.milsap » 24 Jan 2012, 14:52

TPAC,

In order to receive any sort of raw EEG from the headset, you do *need* a research edition or higher level headset.

That said, the Emotiv module does not support connecting more than one headset. While writing the module I had given thought to allowing for it but the fact remains that BCI2000 really isn't set up for an experiment of that nature.

I do believe you could *hack* it in though. If you were to modify the Emotiv ADC in the contrib directory to connect more than one headset (following their API) you could append the channels acquired from the devices sequentially, and write a custom signal processing module (or adjust parameters on an existing one) which analyzes these signals in groups corresponding to their respective devices.

The one problem I can see with this (and I'm not sure if it really is a problem because I'm not sure off the top of my head how this is implemented) is the high pass filter required for the signals coming from the Emotiv module. The Emotiv devices add quite a large DC offset to the signals for some reason and this DC offset (while filtered out by the high pass filter) is different for each headset.

Another problem (as you mentioned) is the problem with synchronization. Without taking apart the devices and doing a large amount of reverse engineering, it is impossible to ensure that they're both sampling at the same time. You may be able to wire them both up to an external clock source somehow, but I doubt that it'll be easy or a good way to spend your time. Each sample block, you would need to wait for the required number of samples to arrive from both headsets before filling out the sample block. This wouldn't be impossible (or even difficult) but now you can no longer assume that samples from the two devices at the same time index actually correspond to the same exact time.

tl;dr: It isn't impossible, but BCI2000 really isn't set up for it, and to do it correctly would amount to a huge pain in the butt.

-Griff

TPAC
Posts: 2
Joined: 24 Jan 2012, 11:21

Re: Acquisition of signals from 2 Emotiv Epoc headsets

Post by TPAC » 25 Jan 2012, 04:36

Hi Griff,

Thank you very much for your quick answer.

Unfortunately, this is not very encouraging. According to you, which other framework would you recommend in order to realize what I suggested in my initial question ?


Cheers,


TPAC

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

Re: Acquisition of signals from 2 Emotiv Epoc headsets

Post by gschalk » 25 Jan 2012, 07:50

TPAC,

This does not have anything to do with software. The primary problem is that, as Griffin explained, multiple devices can usually not be synchronized to sample data at the same time. This is a hardware problem, not a software problem.

Depending on what you do, it may be critical to get data at the same time, or it may not matter as much. You have to understand the circumstances of what you are trying to do and decide for yourself.

Technically, acquiring data from more than one acquisition device is not supported out of the box (because it would not provide satisfactory results in all circumstances as described above), but as Griffin mentioned, it would not be difficult to expand the current Emotiv Source Module to acquire data from more than one device.

Gerv

mellinger
Posts: 1052
Joined: 12 Feb 2003, 11:06

Re: Acquisition of signals from 2 Emotiv Epoc headsets

Post by mellinger » 25 Jan 2012, 09:57

To add my 2 cents:
Without hardware synchronization, you will inevitably have the problem that the total number of samples acquired will differ considerably between the two headsets. Imagine a relative frequency difference of just 0.1% between the two devices, due to tolerances and temperature drift. This means that after only 1000 samples, or just a few data blocks, one of the devices will have acquired one more sample than the other. After 1000 data blocks, or about 15 minutes, the difference amounts to an entire data block.

If you had the strategy of waiting until data from both sources arrived, then one source would be behind the other by about one second at that time. If you took a different strategy, defining one device to be the "timing master", then you would need to either remove samples from the second device's data stream, or put additional interpolated sample values into it, depending on which of the two devices is currently faster.

My advice is to use two machines with BCI2000 running on each, and use the AppConnector to transfer information between the two. This will have the additional advantage that BCI2000 configurations may be defined separately for each subject, otherwise you would need to create a "merged" configuration for each pair of subjects etc.
As you cannot directly connect the AppConnector outputs/inputs of the two BCI2000 instances due to timing drift reasons similar to the ones described above, you will need to use a small relay program that mediates between the two. Feel free to ask for details about how to write such a program.

Best regards,
Juergen

Locked

Who is online

Users browsing this forum: No registered users and 1 guest