← All work

BCI · Robotics · Python · MATLAB

Neurotech Rover

SSVEP brain–computer interface: four checkerboards flicker at different rates, and looking at one drives the rover that way.

Role
Team member
Dates
February — April 2026
Stack
BCI · Robotics · Python · MATLAB
Links

Overview

Neuro-Voyager drives a small rover with an SSVEP interface. Four checkerboard patches sit around the screen — top, left, right and bottom — each inverting at its own rate, 12, 8, 15 and 10 Hz in the stimulus program. Look at one and your visual cortex produces activity at that frequency, so decoding which direction you want becomes a question of which peak is strongest rather than a classifier trained on intent.

The stimulus is a MATLAB program that flips each checkerboard on its own half-period schedule and pushes markers out over LSL, so the stimulus timeline and the EEG land in the same XDF recording and stay aligned. The analysis side is Python: pyxdf loads the recording, MNE wraps it as a Raw object, and the signal gets bandpassed 5 to 35 Hz with a 60 Hz notch for mains hum before anything else happens. Filtering choices matter here more than usual, because the whole method depends on peaks that sit in the low tens of Hz.

Verification is visual, and it is the step that saved the most time. The analysis script plots an epoch-averaged power spectral density per target frequency across the occipital and parieto-occipital channels — O1, O2, Oz, O9, O10, PO3, PO4, Pz — with dashed markers at the target and its second harmonic. A trial that worked shows an obvious spike sitting on the marker; one that did not, does not. Being able to see that before touching a decoder means you know whether you are debugging the classifier or the electrode contact.

The rover end is intentionally plain. An Arduino listens on serial for single characters — w, a, s, d, e — and maps them to forward, turn, reverse and stop across two motor channels at fixed speed. Built with the Neurotech at Davis team.