Milestones

Milestone 1: Customers, Needs, Requirements, Needs-Requirements Mapping

Understanding who our customers are, what needs they have, and the requirements that exist to make our product

Milestone 1

Milestone 1 Sheet

Milestone 2: Project Plan, Concepts, Concept Selection, Analysis and Testing Plan

Knowing how we want to move ahead with our project. Deciding which routes are viable and which are going to give us the best results.


Milestone 2 Word

IDE 401

Examples of inventions
Patent Search
Project Charter

Milestone 3: Design Performance and Cost Review with Alpha Prototype Demonstration


3/2/21: We were able to get the data loaded into MatLab using a pre-established library by the creators of the BCI software.

%% instantiate the library

disp('Loading the library...');

lib = lsl_loadlib();


% resolve a stream...

disp('Resolving an EEG stream...');

result = {};

while isempty(result)

result = lsl_resolve_byprop(lib,'type','EEG'); end


% create a new inlet

disp('Opening an inlet...');

inlet = lsl_inlet(result{1});


disp('Now receiving data...');


for i=1:-1:0

% get data from the inlet

[vec1,ts1] = inlet.pull_sample();

[vec2,ts2] = inlet.pull_sample();

[vec3,ts3] = inlet.pull_sample();

[vec4,ts4] = inlet.pull_sample();

[vec5,ts5] = inlet.pull_sample();

[vec6,ts6] = inlet.pull_sample();

[vec7,ts7] = inlet.pull_sample();

[vec8,ts8] = inlet.pull_sample();

% and display it

fprintf('%.2f\t',vec1);

fprintf('%.2f\t',vec2);

fprintf('%.2f\t',vec3);

fprintf('%.2f\t',vec4);

fprintf('%.2f\t',vec5);

fprintf('%.2f\t',vec6);

fprintf('%.2f\t',vec7);

fprintf('%.2f\t',vec8);

end

3/18/21: We were able to get the data loaded into Python using a library that was found to work for streaming data.

"""Example program to show how to read a multi-channel time series from LSL."""

import time


from pylsl import StreamInlet, resolve_stream, StreamInfo, StreamOutlet


# first resolve an EEG stream on the lab network

print("looking for EEG stream...")

streams = resolve_stream('type', 'EEG')


# create a new inlet to read from the stream

inlet = StreamInlet(streams[0])

rows, cols = (8, 125)

samples = [[0 for i in range(cols)] for j in range(rows)]


# create a new outlet

info = StreamInfo('eeg_stream2', 'EEG2', 1, 250, 'float32', 'myuidemgemg')

outlet = StreamOutlet(info)


while True:

# get a new sample (you can also omit the timestamp part if you're not

# interested in it)

for i in range(0, 8):

samples[i], timestamp = inlet.pull_sample()

sums = [0] * 8

for y in range(0, 8):

for x in range(100, 125):

sums[y] += samples[y][x]

for j in range(0, 8):

sums[j] /= 25

print(sums[j])

for sample in sums:

outlet.push_sample([sample])

time.sleep(0.004)


Milestone 4: Beta Demonstration of Optimized Design


4/1/21: After plenty of time and effort, we were able to establish the connection between the BCI headset data, and an object within Unity.

BCI_Test1.mp4