sedscelestiabpgc / bci Goto Github PK
View Code? Open in Web Editor NEWcontrolling a rover using a brain computer interface.
License: MIT License
controlling a rover using a brain computer interface.
License: MIT License
Even though we are initially focusing on the dataset inside the Datasets
directory, we could consider replacing/adding or research about some datasets that have more trials from different subjects, for a more comprehensive study. On a higher level, the bigger the dataset, the better, but I think it may not always hold.
For example, see https://www.nature.com/articles/sdata2018211. They say a "large" dataset, so something similar can be discussed.
Note that we are sticking to motor-imagery datasets for now.
I have heard of this but don't know much about it. They don't use any ML/DL approach but they have some other ways, motivated by science, to classify. The advantage might be that its an approach motivated by science but may come with a cost that it might depend on the electrode under consideration, for example.
For example, see https://doi.org/10.1523/JNEUROSCI.3886-06.2007.
I vaguely recall, imagining right-hand movement could result in a decrease in beta-power. So we could just use this for our classification.
Any advice/ideas/suggestions are welcome!
Requirements
Main design considerations will be regarding power consumption, input impedance, noise, electrode offset and common-mode rejection ratio (CMRR).
Implementation
Refrence
Submit the schematic with the name Instr_Amp.sch
Find out the possible brain wave potentials we can use.
Create a python file with name plot.py that takes in voltage values coming for multiple electrodes and plots them in real-time.
Use random numbers generated at 540 Hz to mimic voltage data coming from an electrode. Plot the voltage against time, which should update in real-time.
There will be multiple such electrodes, so there has to be one such plot for each electrode.
It should look like 'Time Series' section in this image:
https://docs.openbci.com/docs/assets/SoftwareImages/OpenBCISoftware/GUI-V4-Screenshot.jpg
Use Eagle software to build a schematic of the Notch filter.
We will be using OTA notch filters (Gm-C filters) for continuous-time filtering.
[An alternative is an op-amp notch filter but it is mostly for digital signals; to deal with analogue signals to a high degree of accuracy, OTAs are used]
The file is to be submitted as notch_filter.sch
This application will help us visualize the raw real-time data coming from our eeg headset. This will provide an early check and make sure the data looks familiar, or if each channel is working properly, etc.
Input:
Output:
The EEG data:
In the future we can design other plots and embed the plots with a GUI (like Tkinter).
You can read on the internet to find which DL architecture could be good for EEG signals. There are many papers available on this. Maybe start here: https://jinglescode.github.io/2020/01/17/deep-learning-bci-intro/
The model is to be trained on the Motor Imagery dataset that we have built from here (http://gigadb.org/dataset/100295). Currently, the dataset contains only subject01 data, which contains 200 examples.
Design the schematic of the 3rd order band-pass filter using EAGLE software.
The file is to be submitted as band_pass_filter.sch
After exploring some ML approaches, we could think of DL methods, or even do it side-by-side.
Let us post any other approaches here.
Note: We would aim to use PyTorch
instead of TensorFlow
for developing deep learning models.
Use Eagle software to build a schematic of Notch filter (with a stop-band frequency that can be manually adjusted).
We will be cascading 2 notch filters for better precision.
The file is to be submitted as notch_filter.sch.
This is regarding this dataset: http://gigadb.org/dataset/100295.
We are using data from only subject01, which includes 100 trials each of left and right Motor Imagery. But we need more examples (trials) to train our model. So we need to edit the code to download and clean data from other subjects.
code: 36c9757
We could start with the dataset currently in the Datasets
folder (http://gigadb.org/dataset/view/id/100295) to get an overall idea.
There might be no particular order for experimentation, but we could start with:
XGBoost
library).sklearn
might have some methods for unsupervised/semi-supervised methods, for example, k-means clustering.Design a schematic, using Eagle, of a filter circuit containing High-pass active filter, Low-pass active filter and a variable amplifier all in series with each other.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.