Multimodal BCI Robot
A hybrid brain-machine interface combining EEG and EMG signals to control a telepresence robot. Developed as part of the Johns Hopkins Undergraduate Brain-Computer Interface Society (JHUBCIS), where I served as Decoding Co-Lead.
The Problem
Single-modality BCIs cause user fatigue. Controlling a robot with only EEG or only EMG for extended periods is exhausting. Users need the ability to switch between control modes.
Our Solution
A multimodal system that lets users switch between:
- SSVEP (EEG): Steady-state visually evoked potentials for visual stimulus-based control
- EMG: Muscle signals from cheek and neck for physical gesture control
This flexibility reduces fatigue and improves sustained usability for individuals with severe motor impairments.
Technical Architecture
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ EEG Headset │────►│ Signal │────►│ Decoding │────►│ Telepresence│
│ (8-ch 250Hz)│ │ Processing │ │ Pipeline │ │ Robot │
├──────────────┤ │ │ │ │ │ │
│ EMG Sensors │────►│ Filtering │────►│ ML Models │────►│ Movement │
│ (2-ch 500Hz)│ │ & Features │ │ & CCA │ │ Commands │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
Signal Processing
EEG Pipeline:
- 8-channel input at 250 Hz
- High-pass filtering to remove DC drift
- Notch filter at 60 Hz for power line noise
- Canonical Correlation Analysis (CCA) for SSVEP frequency detection
EMG Pipeline:
- 2-channel input at 500 Hz
- Bandpass filtering (20-450 Hz)
- Feature extraction (RMS, mean absolute value)
- Logistic regression classification
Results
| Modality | Accuracy |
|---|---|
| EMG (muscle contraction) | >95% |
| SSVEP (visual stimulus) | Up to 100% |
The high accuracy comes from careful signal preprocessing and the inherent separability of the chosen gestures/frequencies.
My Role
As Decoding Co-Lead, I focused on:
- Designing and implementing the ML pipeline for EMG classification
- Optimizing feature extraction for real-time performance
- Integrating the dual-modality switching logic
- Validating decoder performance across test subjects
Tech Stack
- Python, NumPy, SciPy
- MNE-Python for EEG processing
- Scikit-learn for classification
- Jupyter for experimentation