История создания первого по настоящему open-source Brain-computer interface устройства (DIY)
Abbreviation
BCI Brain-computer interface
EEG Electroencephalogram
SBC Single-board computer
ADC Analog-digital converter
Меня зовут Ильдар, я радиолюбитель. Наша идея создания недорогого интерфейса Мозг-Компьютер появилась два года назад на одной из научных конференций, во время одной из футуристических бесед, еще до событий пандемии. Идея была наивной и простой — мы хотели управлять роботами силой мысли методом воображения движения. (https://en.wikipedia.org/wiki/Motor_imagery)
вот как то так
Так как я был единственным кто понимает в электроники в компании, то взялся за эту деятельность сам. Изначально я планировал взять самое доступное устройство на рынке, как мне казалось, должно быть что-то очень простое и доступное, что-то вроде Arduino. Но что было на рынке, меня не устраивало, по большей части — цена, да и вообще устройств для open-source разработчиков не так много.
Очень кратко, что такое BCI. BCI измеряет сигналы ЭЭГ с поверхности головы, это сигналы в микровольтах, разделенные на несколько частотных диапазонов (Альфа — 8–13 Гц, Бета — 14–40 Гц, Тета — 4–8 Гц, Дельта — 0,5–3 Гц). Эти частотные диапазоны могут предоставить некоторую информацию о субъекте. Звучит просто, но есть пара нюансов, кроме грамотно спроектированной платы на качество сигнала существенно влияют следующие факторы:
любые физические нагрузки (артефакты);
электромагнитная интерференция;
качество соединений электродов, да и вообще все, действительно все.
Сигналы ЭЭГ измеряются через электроды [1, 2021], мы выбрали сухие электроды, потому что они проще в использовании (в идеале гель не нужен, но на самом деле с гелем лучше). Но даже после всего этого полученные сигналы ЭЭГ все равно не будут пригодны для получения какой-либо полезной информации. Следующим шагом является обработка сигналов, которая представляет собой попытку найти полезные корреляции в сигналах ЭЭГ и удалить другие шумы. И это огромная тема! и на самом деле, если и есть магия (или где она нужна), то она здесь. Методов очень много, и они очень разнообразны, на эту тему мы написали следующие обзорные статьи ([2, 2021], [3, 2020]). И я до сих пор работаю в этом направлении.
А теперь ближе к делу, все таки эта заметка касается железа для BCI. Пишу кратко и просто, кому нужны подробности, все источники находятся в открытом доступе, и буду очень рад вашим комментариям.
Сначала сомнения, а возможно ли? без опыта в нейронауках разработать BCI. Чтобы понять это, я много читал. Для начала, что проще: — medium, форумы, по ключевым словам — все возможные вариации с BCI. Далее я изучил все, что смог найти в известных мне библиотеках — research.google, researchgate, Elsevier, Taylor and Francis, Springer и т. д. Я понимаю, что у многих нет допуска к статьям, не находящимся в открытом доступе, это болезненная тема для многих исследователей, особенно обострившаяся после весьма печальных событий в штате Массачусетс в 2013 году.
Только у нас то, что есть, ученые публикуют не в open-access доступе не потому, что хотят скрыть свои исследования от посторонних глаз или заработать денег, а потому, что просто не нашлось спонсора для публикации. Можно возразить, что есть препринты (Arxiv например), согласен, только для научной карьеры — важен рейтинг публикации. Об этом можно говорить долго, но говорить надо и делать. Если статьи нет в открытом доступе, то пишите авторам, задавайте вопросы, никогда не стесняйтесь, это нормальный процесс, в большинстве своем авторы рады, что есть интерес к их работе. Мой процесс чтения занял 1 месяц, по несколько часов в день —, но оно того стоит, т.к. позволяет понять, что есть на рынке, что нужно рынку, каковы перспективы, направления исследований и т. д. Лучше потратить время, чем заново изобретать колесо. В общем, исследование рынка вселило в меня уверенность, что да, надо это делать, особенно в формате с открытым исходным кодом.
Как мы разрабатывали — интерфейс мозг-компьютер
Сердцем BCI является ADC, а самым слабым местом устройства является часть между электродом и ADC— этот аналоговый сигнал в мкВ — который только рад собрать все возможные шумы, которые только он может найти. После оцифровки сигнала уже идут стандартные операции — это полосовой фильтр (я использовал 1–30 Гц), вам поможет любой язык — я реализовал на Python. Подходящих ADC на рынке не так много, особенно для нейрофизиологических задач — Texas Instruments и Analog devices. Мы выбрали ADS 1299 от Texas Instruments.
Попытка 1 (1 марта 2020 г.)
С первой попытки я собрал схему на макетной плате, все элементы подобраны с минимальным шумом (power supply). Как и ожидалось, все это выглядело ужасно. Ну, тем не менее, я смог связаться с АДС, изучил регистры, но количество шумов не давало мне понять, ЭЭГ это сигнал или нет.
Попытка 2 (8 октября 2020 г.)
Уже лучше, я сделал печатную плату, и успешно, плата заработала. Удалось прочитать сигнал ЭЭГ, обнаружить основные артефакты. Но размер платы был слишком велик, в этой версии использовались Wi-Fi, Bluetooth, радио, последовательный порт и SD-карта для передачи данных. Для меня главное, чтобы устройство работало, а конструкция была правильной [4, 2020].
Попытка 3 (1 января 2021 г.)
Тот же дизайн с уменьшенной формой. Устройство заработало —, но так как у нас был сендвич, то я не мог надежно соединить платы друг с другом, казалось бы, простая деталь, но я потратил много времени на поиск нужных пинов, так как SPI-соединение между МК и ADC постоянно терялся.
Попытка 4 (7 апреля 2021 г.)
С учетом всех ошибок прошлого года было создано итоговое устройство — ironbci.
Использовался следующий микроконтроллер — STM32F406VE. Вычислительными возможностями в данном проекте МК особо не занимается и выбирался в зависимости от периферии (SPI). [5, 2021].
Детали проекта ironbci
GitHub (электрическая схема, Gerber-файлы, BOM-файлы, hex файл и т. д.)
Youtube. Демонстрация артефактов (жевание и моргание) на STM32F407 и ADS1299
Youtube. Iron BCI hardware — процесс разборки
Одной из основных идей было использование платы с дополнительными датчиками, среди стартапов так называемая «киллер фича» —, но для меня задача убрать все артефакты из сигналов ЭЭГ. Задача состоит в регистрации сигналов ЭЭГ в повседневной жизни и использовании набора датчиков для контроля и нейтрализации артефактов в сигналах ЭЭГ. [6, 2021]. Идея еще не реализована, нужно больше данных.
Но идея очень хорошая, и надеюсь продолжить работу над ней.
Все казалось идеальным. Но случился chip-shortage. В результате себестоимость нашего прибора взлетела со 100 до 600 долларов (и это только за 8 электродов) — просто безумная цена.
Но хорошая новость в том, что я сделал этот проект не просто открытым, а максимально открытым и предоставил видео-инструкцию по самостоятельному заказу этого устройства на PCBWAY (мне казалось, что будет достаточно исходников, но я получил слишком много вопросы про «как сделать своими руками» и понял, что полное объяснение лучше). Каждый может заказать себе это устройство, для этого не нужно иметь опыт работы в электронике и т.д.
Сделай сам, полная инструкция как создать это устройство на фабрике pcbway
https://youtu.be/VQqJwoX9bg0
Но мне не очень хотелось бросать это занятие после стольких исследований. И поэтому решил, что проще всего взять только плату АЦП от устройства ironbci и использовать ее как шилд для одноплатного компьютера.
Попытка 5 (16 октября 2021 г.)
Теперь мы подошли к PIEEG, который преобразовывает Raspberry Pi в BCI [7, 2022]. Raspberry был выбран только потому, что это самый популярный одноплатный компьютер на рынке. Обмен данными между Raspberry и платой реализован на C (важна скорость передачи)
https://github.com/Ildaron/EEGwithRaspberryPI
и обработка данных в режиме реального времени в Python, поскольку Python является одним из самых популярных языков в науке о данных.
Основное применение, которое мы видим в этом, это управление робототехническими устройствами, возможности приложения зависят от фантазии и возможностей пользователя. (8, 2022)
Скрипт управление роботом через моргание был представлен на GitHub, где сигнал разложен через быстрое преобразование Фурье и затем в каждом частотном диапазоне мы обнаруживаем амплитуду сигнализирующего моргания.
Конечно, сегодня надежно управлять роботом можно только с инвазивными интерфейсами, и это устройство не для реального применения. Наша цель — дать возможность изучить механизмы управления роботами с помощью сигналов ЭЭГ.
Машинное обучение — это революция в области обработки данных, которая произошла всего несколько лет назад, поэтому наличие набора данных может позволить сделать много нового в этой области.
Если можно управлять роботом с помощью метода воображения движения, то единственное, что нас сдерживает, — это отсутствие набора данных. Возможность использования неинвазивных методов управления механическими конечностями станет революционным событием в области неврологии.
В общем, я очень кратко описал процесс разработки, по вашим комментариям, по мере необходимости, напишу подробнее. Ваши идеи приветствуются, пишите).
Данный проект никем не финансировался, делался в свободное от работы время и все исходники находятся в открытом доступе, так что судите строго (не опечатка).
Сегодня мы находимся в процессе подачи заявки на crowdsupply для PIEEG.
https://www.crowdsupply.com/hackerbci/pieeg
Мы делаем это, чтобы создать сообщество, собрать набор данных, я надеюсь, вместе мы сможем добиться значительного прогресса в этом направлении. Обо всем писать сложно — на каждом этапе я ошибался, весь процесс разработки — это каждодневный поиск багов, как программных, так и аппаратных, каждый день решал задачи, но это правда, это нормально. Ну и немного идеологии — для меня, опенсорс это не только альтруизм (хотя и этого аргумента уже достаточно, технологии, тем более биотехнологии, должны быть направлены не на обогащение. Можно возразить, пожалуйста, но у меня есть много примеров разных гениальных людей, для которых это воспринималось, как должное), а главное способ создать что-то действительно хорошее, обратная связь творит чудеса, критика очень полезна. Я честно пришел в мир ЭЭГ, чтобы управлять механическими конечностями неинвазивным методом, доступным и простым способом. Пока не получилось, но это шаг на пути к этому.
Slack — pieeg.slack.com
email — ildar.o2010@yandex.ru
Github — https://github.com/Ildaron/EEGwithRaspberryPI
Linkedin https://www.linkedin.com/in/ildar-rakhmatulin-262a66112/
Reference
1. Rakhmatulin, I.; Gan, Y. (2021). Review Dry and Non-Contact EEG Electrodes for 2010–2021 Years. Preprints, 2021030555 (doi: 10.20944/preprints202103.0555.v1). https://www.preprints.org/manuscript/202103.0555/v1
2. Rakhmatulin, I. (2021). Progress in neural networks for EEG signal recognition in 2021. arXiv:2103.15755, https://arxiv.org/abs/2103.15755
3. Rakhmatulin, I. (2020). Review of EEG feature selection by neural networks, DOI: 10.5281/zenodo.3987894
4. Rakhmatulin, I. (2020). The electronic board to replace the reference voltage on the earlobe for EEG measurement, Measurement, 173, 108673 https://www.sciencedirect.com/science/article/abs/pii/S0263224120311854? via%3Dihub
5. Rakhmatulin, I., Parfenov, A., Traylor, Z. et al. (2021). Low-cost brain computer interface for everyday use. Exp Brain Res 239, 3573–3583 https://doi.org/10.1007/s00221–021–06231–4
6. Rakhmatulin, I. (2022). ironbci. Open source. Brain-computer interface with the embedded board to monitor the physiological subject«s condition and environmental parameters. arXiv:2111.03656
7. Rakhmatulin, I., Volkl, S. (2022). PIEEG: Turn a Raspberry Pi into a Brain-Computer-Interface to measure biosignals, arXiv:2201.02228
8. Rakhmatulin, I., Volkl, S. (2022). Brain-Computer-Interface controlled robot via RaspberryPi and PiEEG, arXiv:2202.01936.