AeroMus provides a new level of flexibility. No longer tied to a desk, you can control your computer from anywhere. It allows you to interact with your device in a way that is most comfortable and natural for you. From laying down and browsing the web or controlling VR games with a wave of a hand, aeroMus has applications for everyone.
In today's era of advanced technology, the traditional computer mouse can seem a bit archaic. Issues like hand cramping, neck pain, and limitations for those with restricted mobility are calling for a change. That's why we've embarked on a journey to build a low-cost, 4-channel neural interface EMG input device, a helpful tool that promises to overcome these limitations. Our project's goal is simple yet ambitious: To make brain-computer interfaces more accessible. To this end, we've designed an EMG armband that collects signals from muscle contractions.
Equipment:
- OpenBCI Cyton
- aeroMus armband and electrodes (Make it yourself with instructions found here)
- View additional electode designs and corresponding CAD files here
Set up:
- Make sure your Cyton is on and dongle is plugged in
- Open the OpenBCI GUI app
- Turn on LSL streaming for timeseries and accelerometer data
Clone this repository
git clone https://github.com/NeuroTech-UCSD/Project-TNNI-ACD.git
Download the dependencies
pip install -r requirements.txt
And run the code!
python scripts/main.py
Check the optional arguments:
python scripts/main.py -h
Customizable options:
- Sensitvity: Sensitivity of cursor movements out of 10 where 1 is least sensitive and 10 is most. Default is 5
- Activity Time: For user convenience, adjust in seconds of how long EMG mouse will be on. Default is 60 seconds.
Written in Python, our software interprets all the inputs from the EMG armband and translates them into accurate and smooth computer control efficiently. In our main file, we use an LSL streams to get EMG data from the electrodes and inertial data from the Cyton. Each stream is fed into its own thread where sampling, processing, and GUI calls can occur independently. This optimizes speed and synchronization of the cursor outputs. Each thread follows a similar pipeline: data is pulled, processed, and fed into functions which calls a change to the cursor, either movement or a click. Utilizing the pyautogui package, we are able to incorporate the calls to change the cursor within this python script.
/data
Where the recorded EMG data, intermediate variables, and analysis results for plotting the figures are stored./data/emg_recordings
- Contains various sessions of EMG recordings.
/figures
Stores all of the figures generated by the scripts./notebooks
Demo notebooks illustrating the data processing and modeling pipeline./scripts
Each script is for a particular processing stage./scripts/main.py
- The script that runs the entire project pipeline, combining all of the processing scripts.
/src
Modular code files that are meant to be imported by different scripts./src/classification.py
- Online classification task chec/src/emg_task0.py
- Data collection file used for callibrating threshold/src/online_emg_task.py
- Online data collection task
/utils
Modular code files that are meant to be imported by different scripts./src/process_data_offline.py
- Functions for offline data analysis/src/process_data_online.py
- Functions for online data analysis/src/features.py
- Functions for SVM model training and threshold calculation/src/signal_processing.py
- Functions for signal processing
We’d like to thank everyone who made this project possible and NeuroTechX for hosting this competition! Shout out to Ollie - Thank you for letting us borrow your Cyton!
Our team members:
Aidan Truel
Joelle Faybishenko
Sawyer Figueroa
Cassia Rizq
Nakshatra Bansal
Lea Winner
Akhil Subbarao
Edward McGee
William Zhang
We would also like to thank everyone worked on the following papers and packages and made them available to us:
Makeyev O, Ye-Lin Y, Prats-Boluda G, Garcia-Casado J. Comprehensive Optimization of the Tripolar Concentric Ring Electrode Based on Its Finite Dimensions Model and Confirmed by Finite Element Method Modeling. Sensors. 2021; 21(17):5881. https://doi.org/10.3390/s21175881
Makeyev O, Besio WG. Improving the Accuracy of Laplacian Estimation with Novel Variable Inter-Ring Distances Concentric Ring Electrodes. Sensors. 2016; 16(6):858. https://doi.org/10.3390/s16060858
Wang K, Parekh U, Pailla T, Garudadri H, Gilja V, Ng TN. Stretchable Dry Electrodes with Concentric Ring Geometry for Enhancing Spatial Resolution in Electrophysiology. Adv Healthc Mater. 2017;6(19):10.1002/adhm.201700552. doi:10.1002/adhm.201700552