Related articles: Processing + EPOC via OSC | EPOC-to-Arduino “Goodbye, World” | Arduino + fischertechnik | BYTR Virtual Servitor
FBLR (“Fibbler”) is a robot that moves forward and backward, and turns left and right, in response to its operator’s thoughts. The signal flow is brain → Emotiv EPOC → Mind Your OSCs → Processing → Arduino → fischertechnik robot. I wrote a Processing sketch (zipped with data files) that converts the EPOC signals via OSC messages, to Arduino signals that move the robot. The sketch uses the arduino, controlP5, and oscP5 libraries. The Arduino uses Firmata (standard with the Arduino software) and a motor shield from Rugged Circuits (see this article for more info).

There are four knobs for adjusting the actuator thresholds. The EPOC’s Cognitiv values are compared to said thresholds to determine whether to enable the robot’s motors and which directions to turn them in:
| Cognitiv Action | Motor 1 Direction | Motor 2 Direction |
|---|---|---|
| PUSH | 0 | 0 |
| PULL | 1 | 1 |
| LEFT | 1 | 0 |
| RIGHT | 0 | 1 |
Setting a knob to 0 (all the way to the left) will enable its associated motors regardless of the Cognitiv value. Four bars display the levels of the incoming Cognitiv values; if a value is greater than or equal to its threshold, the bar displays green, otherwise it displays red.
The slider can be used to change the delay from 0 to 200 milliseconds. The shorter the delay, the more frequently OSC messages are evaluated, but the robot may also “stutter” for trying to retrieve messages faster than they are delivered. There are a variety of ways to handle this; I chose one that was simple and effective but not the most elegant. I found that 100ms makes for smooth operation most of the time. Note also that push, pull, left, and right are evaluated in that order by the draw() loop, so if, e.g., push and left both exceed their threshold values, only moveForward() will fire.
Here is an EmoScript for EmoComposer, to test the interaction without needing the headset. See the Emotiv EPOC SDK guide for more about that.
Occult Applications
Mankind’s oldest fantasy is to move something with the power of thought. // Tan Le, co-founder of Emotiv
Any use of the EPOC seems to be magical in a folk sense, but I am interested in new-media interactions that respond to explicitly magical intentions or commands (e.g. sigil concentration), ecstatic or gnostic states of consciousness, state entity projections, etc. I expect the EPOC to feature in some of the robomancy projects I will be developing in the near future.

Hello Sir!
This is an amazing website! truly inspired by your works and projects.
I have chosen brain controlled device as my college project.l
I have few doubts in connecting the motors to the arduino.
can you kindly tell me the specifications of the driver you used?
and how you brought the connections to the arduino.
I have downloaded the SDK lite version of emo composer and mind your osc but the problem that when I try to connect to the emo composer to the osc it keeps giving me waiting and never connected
I’m using windows 8 should I use any other OS or use older windows version ?
Hi, Noha. You might have figured this out already, but to change that “waiting” to “connected,” you just need to send a signal from EmoComposer (click the Send button).
hi can i please get your email because i have some questions
Hello, Noah. I received your email message and replied.
is there any possible way to connect the epoc directly to the controller without using a laptop and serial port from the laptop??
Hello, Ali. The short answer is: no. The EPOC sends a data stream over a wireless USB dongle, that is decrypted and decoded by Emotiv’s software. You would need to engineer a way for the controller to receive and make useful the data from the EPOC.
ok thank you
Is there a more detailed documentation of this project?
Abdallah, I do not have more documented at this time, but I would be pleased to share more information with you or anyone. Do you have any specific questions?