Материал: Аппаратура для электроэнцефалографических исследований. Журавлев Д.В

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Команда “Message” служит для организации сообщений от плат регистрации ЭЭГ.

Параметр “message” - это строковое сообщение от плат Ganglion. Пример выполнения команды:

{

"code": 200 "type": "message",

"message": "Hello, world!", "value": 300

}

Команда “Samples” (тип data) возвращает значения образцов от плат регистрации ЭЭГ.

Параметр “startByte” имеет формат 0xA0. Параметр “sampleNumber”

должет иметь целочисленное значение в интервале 0-255. Параметр “channelData” возвращает данные из канала, проиндексированные начиная с нуля и заполненные числами с плавающей запятой в вольтах (в том случае, если параметр “sendCounts” имеет значение “false”).

Параметр “channelDataCounts” возвращает данные из канала, проиндексированные начиная с нуля и заполненные немасштабированными целыми числами из необработанных данных с регистров АЦП (в том случае, если параметр “sendCounts” имеет значение “true”).

Параметр “accelData” возвращает массив со значениями акселерометра X, Y, Z (при наличии новых данных) (в том случае, если параметр “sendCounts” имеет значение “false”).

Параметр “accelDataCounts” возвращает массив со значениями акселерометра X, Y, Z только, когда доступны новые данные (в том случае, если параметр “sendCounts” имеет значение “true”).

Параметр “auxData” устанавливает заполнение буфера либо 2 байтами (если они синхронизированы по времени), либо 6 байтами (если они не синхронизированными по времени).

Параметр “stopByte” имеет числовое значение в формате 0xCx, где x имеет значение от 0 до 15 в шестнадцатеричном виде.

Параметр “boardTime” показывает системное время, установленное на плате регистрации ЭЭГ. Параметр “timestamp” возвращает значение времени в сыром виде. Значение времении рассчитывается, используя смещение.

Пример выполнения команды для платы Ganglion:

{

"code": 200, "type": "data",

"channelDataCounts": [0, 1, 2, 3]

}

Пример выполнения команды для платы Cyton:

215

{

"code": 200, "type": "data",

"channelDataCounts": [0, 1, 2, 3, 4, 5, 6, 7], "accelDataCounts": [0, 1, 2],

"stopByte": 192

}

Пример выполнения команды для платы Cyton, совмещенной с платой

Daisy:

{

"auxData": { "lower": {

"data": [ 1, 215, 1, 45, 3, 250], "type": "Buffer"

}, "upper": {

"data": [ 1, 215, 1, 44, 3, 251], "type": "Buffer"

}

},

"valid": true, "code": 204, "stopByte": 193, "_timestamps": {

"lower": 1543879978994, "upper": 1543879978994 },

"channelDataCounts": [-7729993, -7649407, -7606327, -7571616, -7591709, -7687549, -7552756, -7590690, -7580998, -7556930, - 7596914, -7549892, -7594576, -7658804, -7523426, -7662588],

"type": "data", "sampleNumber": 52, "timestamp": 1543879978994

}

8.2. Обработка данных в программе MATLAB

Matlab - это мощный язык программирования и среда для числовых вычислений, широко используемая в самых разнообразных академических, исследовательских и промышленных приложениях.

Несколько наборов инструментов Matlab были созданы специально для работы с ЭЭГ и платами регистрации BCI, это EEGLAB, BCILAB, ERPLAB и FieldRip.

Далее рассмотрим настройку среды Matlab для использования с оборудованием OpenBCI, а также некоторые основные области применения и функциональные возможности, которые Matlab предлагает для работы с интерфейсами ЭВМ.

8.2.1. Установка программы и загрузка данных

Необходимо обратить внимание, что программа Matlab является коммерческим программным продуктом. Лицензии должны быть куплены или приобретены через академические или профессиональные учреждения.

216

Существует два основных способа передачи данных для анализа с плат регистрации ЭЭГ в программу Matlab. Первый способ заключается в импорте файла CSV из записанного сеанса, а второй способ – в использовании лабораторного потокового уровня (LSL) для потоковой передачи данных платы в Matlab. Далее рассмотрим оба метода.

Рассмотрим первый способ импорта файла CSV из графического интерфейса OpenBCI.

Для начала необходимо включить и использовать любую плату OpenBCI (например, плату Cyton или Ganglion) и графический интерфейс OpenBCI для потоковой передачи любых данных. Всякий раз, когда данные передаются в графический интерфейс, они также автоматически сохраняются в формате .csv на компьютере. Данные и записи программы GUI сохраняются в папке

“/Documents/OpenBCI_GUI/Settings/ во всех операционных системах.

Графический интерфейс обработки OpenBCI сохраняет данные в текстовых файлах (файлы txt) или в файлах, разделяющих значения запятыми (файлы csv). Можно импортировать файлы CSV в программу Matlab в виде матрицы с помощью мастера «Импорт данных» (рис. 8.32).

Рис. 8.32. Импорт файла CSV

Далее необходимо выбрать сохраненный файл данных из графического интерфейса OpenBCI. После открытия экрана импорта данных надо выбрать вариант импорта «Числовая матрица». Затем отменить выбор всех строк заголовка. Также отменить выбор последнего столбца, значений меток времени, поскольку мастер импорта может анализировать только числовые значения.

217

Можно дать импортируемой матрице условное имя, например, "eeg_data" (рис. 8.33).

Рис. 8.33. Открытие экрана импорта

Далее надо нажать кнопку «Выбор импорта». Матрица должна после этого появиться как объект на рабочем пространстве.

Второй способ импорта данных в программу Matlab заключается в импорте потока данных OpenBCI через LSL (Lab Streaming Layer). Данные также можно передавать из Python.

Сначала надо запустить графический интерфейс OpenBCI и запустить работу системы (рис. 8.34). В раскрывающемся меню виджета надо выбрать вкладку «Сеть». В правом верхнем углу виджета «Сеть» есть еще одно выпадающее меню «LSL».

Далее можно будет выбрать данные OpenBCI, которые можно отправить, имя потока LSL, данные, объявленные LSL, и количество каналов, которые надо отправлять. После выбора параметров необходимо включить поток LSL в нижней части виджета. Затем нажать кнопку “Пуск”, и всё готово к работе.

Есть два способа импортировать LSL, используя библиотеку liblsl-Matlab для потоковой передачи в Matlab или используя набор инструментов BCILAB.

Далее рассмотрим использование библиотеки liblsl-Matlab. После успешного добавления правильных каталогов и файлов можно использовать нижеследующий скрипт для потоковой передачи данных OpenBCI из потока

LSL:

218

%% 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...'); while true

%get data from the inlet [vec,ts] = inlet.pull_sample();

%and display it fprintf('%.2f\t',vec); fprintf('%.5f\n',ts);

end

Рис. 8.34. Запуск системы

Затем рассмотрим использование инструмента BCILAB. BCILAB - это набор инструментов Matlab и плагин EEGLAB для проектирования, создания прототипов, тестирования, экспериментирования и получения данных с плат регистрации ЭЭГ.

BCILAB предоставляет графический интерфейс, с помощью которого можно управлять плагином, но пакетные сценарии могут быть использованы для тех, кто хорошо разбирается в программировании на языке Matlab.

Для установки BCILAB надо загрузить последнюю версию BCILAB из репозитория (https://github.com/sccn/BCILAB/tree/devel) и распаковать ее в

219

Источник: https://studfile.net/preview/16566241/