Skip to content
Michael_Portfolio.ipynb
MR
File browser
Michael_Portfolio.ipynb
profile.jpg
resume.pdf

One editable portfolio notebook. Edits survive refreshes in this tab and reset when the tab closes or the notebook is reset.

michaelml.dev / Michael_Portfolio.ipynb
Developed EEG-based BCI system to control drone movements. Integrated signal processing with real-time control algorithms.
[ ]
code · Mind-Controlled Drone
project = load_project("mind-controlled-drone")
project.summary()
Output
Mind-Controlled Drone project preview

Mind-Controlled Drone

Developed EEG-based BCI system to control drone movements. Integrated signal processing with real-time control algorithms.

BCISignal ProcessingHybrid CNN-LSTMMNEPythonTensorFlowRoboticsNeuroscienceEEGTime SeriesLab Streaming LayerSciPyNumPy
[ ]
code · Problem definition
project = load_project("mind-controlled-drone")
project.problem()
Output
ProblemTranslate noisy, low-channel EEG signals into reliable real-time commands for an accessible brain-computer interface.
ApproachStream Muse S2 data, filter it with MNE, extract Welch bandpower features, classify temporal patterns, and map states to socket-based drone control.
OutcomeAchieved 76% offline and 93% real-time command-classification accuracy in the documented MCX evaluation.
[ ]
code · Constraints
project = load_project("mind-controlled-drone")
project.constraints()
Output

Constraints

  • Muse S2 provides a small number of noisy EEG channels.
  • Filtering and inference had to remain responsive enough for live control.
  • Misclassification needed conservative command mapping around a physical drone.
[ ]
code · Role and implementation
project = load_project("mind-controlled-drone")
project.implementation()
Output

Role and implementation

My role: Designed the BCI, built the EEG preprocessing and feature pipeline, trained the command classifier, and implemented real-time socket-based control.

  • Streamed 256 Hz Muse S2 EEG through Lab Streaming Layer.
  • Applied bandpass filtering and Welch power spectral-density features.
  • Mapped model outputs to real-time control commands over a socket interface.
[ ]
code · Architecture
project = load_project("mind-controlled-drone")
project.show_architecture()
Output
Signal AcquisitionStream 4-channel EEG data at 256Hz from Muse S2 via BlueMuse/LSL
MNE PreprocessingApply 0.5-50Hz bandpass filter and remove artifacts using MNE-Python
Feature ExtractionCompute Power Spectral Density (PSD) using Welch's method to get bandpowers
Hybrid InferenceProcess features through TimeDistributed CNN and LSTM layers for state classification
Drone ControlMap predicted mental states to real-time drone flight commands
[ ]
code · Demo and media
project = load_project("mind-controlled-drone")
project.media()
Output
Mind-Controlled Drone project media
[ ]
code · Evaluation
project = load_project("mind-controlled-drone")
project.evaluation()
Output

Evaluation

  • Measured command classification both offline and in the live control loop.
  • Inspected EEG amplitude and held-out classification behavior.
[ ]
code · Results
project = load_project("mind-controlled-drone")
project.results()
Output

Results

  • 76% offline command-classification accuracy.
  • 93% real-time command-classification accuracy in the documented evaluation.
[ ]
code · Tradeoffs and failures
project = load_project("mind-controlled-drone")
project.tradeoffs()
Output

Tradeoffs

  • A lightweight consumer headset improves accessibility but limits signal resolution.
  • Real-time smoothing can improve stability while adding command latency.
[ ]
code · What I would improve
project = load_project("mind-controlled-drone")
project.improvements()
Output

Improvements

  • Test across more participants and sessions to measure generalization.
  • Add confidence-aware abstention and stronger physical safety interlocks.
[ ]
code · Links and repository
project = load_project("mind-controlled-drone")
project.links()
Output
GitHub Paper
Python 3 · PyodideWorker: CPUConnecting…Command modeLn 1, Col 1