Milestone 2
Milestone 2.1: Project Plan
Task Breakdown:
Research:
Which brain activity does each of the BCI nodes correspond to?
Can we recreate specific brain patterns from the BCI input?
What are the limitations of our non-intrusive EEG BCI solution for accuracy and precision?
Development:
Create an algorithm to determine mouse movements from EEG inputs
Implement this algorithm in Python
Take inputs from BCI to be interpreted by Python program
Implement neural network to categorize BCI inputs that have been processed by Python program
Make necessary code modifications to accommodate real-time EEG interpretation
Project Plan:
Month 1 (September 1 - September 27):
Group formation
Project Site
Concept formulation / meetings with advisor
Month 2 (September 27 - October 11):
Creating roadmap
Beginning to familiarize with OpenBCI GUI and headset specifications
Milestone 1
Month 3 (October 12 - November 29):
Begin data collection
Construct neural network outline
Create code for mouse automation
Milestone 2
Month 4 (November 30 - End of Semester)
Task delegation
Begin testing neural network
Create data collection program
Spring Semester
Milestones 3 & 4
Collect sufficient data for neural network
Interface input with mouse / keyboard
Have consistent performance of brain input to mouse/keyboard output
Milestone 2.2: Concepts
Design Concepts:
Joystick Input
Assign EEG nodes to different directions. When the user activates the part of the brain that the EEG node is placed on, the electrical signal measured by the node gets converted to a corresponding X or Y axis input that moves the mouse.
An additional set of EEG data streams correspond to a left or right mouse click.
In combination with an on screen keyboard, typing (or any other mouse input) is possible.
Decipher Thoughts
Use a machine learning algorithm to determine which character the user is thinking and then input that character to the computer.
Initial implementation shall be limited to number-pad inputs, but with additional in-depth modeling and development, full keyboard usage may be achieved.
Milestone 2.3: Concept Selection
Accuracy - The OpenBCI headset has a large amount of noise when reading signals, and only has 8 nodes for brain signal detection. Due to these factors, we are unable to make extremely precise mouse movements, thus our solution shall implement mouse movements that are more broad than more intrusive solutions.
Language - The project will require large amounts of data processing/parsing and using machine learning libraries, which are two strengths of Python. For that reason Python shall be used to implement the code for the software.
Efficiency - Trying to directly decipher thoughts to generate output would likely be the most efficient design in terms of typing speed. However, it is unlikely it would be possible to do so accurately using the OpenBCI headset. This high amount of inaccuracy would offset the efficiency that this method enables, while the joystick input concept would only need to pick between a few possible outputs, making it more reliable and thus be able to achieve a similar level of efficiency.
Accessibility - Joystick input allows for users to operate a wide range of programs. By mapping the joystick input to the mouse cursor, countless more pieces of software become accessible. Deciphering thoughts and converting them to text would not be compatible with mouse movement, limiting compatibility and accessibility.
For these reasons the project shall map the EEG data to joystick style input using Python.
Milestone 2.4: Design
Milestone 2.5: Analysis
Hardware Specifications:
OpenBci UltraCortex "MARK IV" EEG Headset - used to take in brain data
8 channel version for lower cost to users
Software Specifications:
OpenBCI GUI - software used to take in BCI data
Python Library Pytorch - python library used as framework for data collection and machine learning via neural networks
Python Library pyautogui - python library that automates movements of mouse and keyboard
Milestone 2.6: Test Plan
The team shall first need to calibrate the headset. The team plans on doing this by having the test subject think about moving the cursor to the right for ten minutes, and then having them think about moving the cursor to the left for the next ten minutes.
The goal of this experiment is to look at the data and decipher whether or not there is a difference for right moving thoughts and left moving thoughts. Through this, the team can then decide which nodes are the most useful for left and right movements of the cursor.
The team shall calibrate those thoughts to actual left and right movements of the cursor through Python code. The team shall follow the same process for upward moving and downward moving thoughts.