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 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.
IDE 401
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.
![](https://www.google.com/images/icons/product/drive-32.png)