Опенсорс приключения киберэлектроника

в 8:23, , рубрики: android, diy или сделай сам, embedded, kotlin, python, TensorFlow, машинное обучение, Носимая электроника, сделай сам

С 2018 я работаю над пет проектом, системой распознания нервных импульсов.

Началось все с того, что в 2017 я чуть не лишился руки. Несколько месяцев было неясно, с каким количеством рук я выйду из ситуации. В итоге получилось две. В результате этого нелегкого процесса бесконечных операций, я, будучи программистом и вообще человеком любопытствующим, сильно увлекся темой протезов, а именно управления ими. Так как рынок протезов очень мал, развивается он слабо относительно ПК или смартфонов. Особенно плохо дело с протезами руки, которые фактически не позволяют выполнять сложные манипуляции, даже если имеют пять пальцев и напоминают руку терминатора.

Я подумал, могу ли я что-то сделать для ускорения прогресса подобных систем.

Опенсорс приключения киберэлектроника - 1

Самая продвинутая система управления протезом, которую можно купить, назвывается Coapt.
Работает она по принципу классификации выхода многоканального усилителя электрического сигнала, снимаемого с кожи.

По моим данным, она стоит порядка 10-15К долларов, в зависимости от страны покупки. Это, конечно, идет в дополнение к цене самого протеза.

Используя Coapt, пользователь может непосредственно контролировать две-три степени свободы протеза. Большинство же протезов управляются либо механическими тягами, либо позволяют выбрать один из доступных хватов, листая заготовленный список жестов особым напряжением мышц. Выбрал жест перебором — можешь его или открывать или закрывать, напрягая одну из крупных групп мышц руки.

Принцип похож на менюшки в старых играх, в которых ты давишь select, пока не найдешь нужный пункт меню. Только выбираешь его практически вслепую. Мне показалось такое положение дел недопустимым в 21 веке.

Я решил начать работу над открытой системой нейроконтроля, которая была бы дешевой и достаточно производительной, чтобы вбирать в себя современные наработки в сфере машинного обучения.

Хотелось заложить проект так, чтобы специалисты из распостраненных отраслей IT имели возможность внести вклад, каждый в своей области.

Выросло несколько задач:

  • получить сигнал нервов(например, предплечья)
  • применить к сигналу магию машинного обучения, поняв намерение юзера
  • вывести сигнал обратно в физический мир через моторы

Как получить сигнал нервов

Любое наше действие мы выполняем с помощью мышц. При этом через кожу можно считать электрический сигнал нервов, усиленный мышцами. Технология называется электромиография (ЭМГ). Технологии много лет, можно даже купить усилитель биоэлектропотенциалов в виде микросхемы, например такой.

Мой боевой товарищ Андрей создал компактный датчик, базирующееся на этой восьмиканальной микросхеме. Устройство питается и общается по USB.

Кому интересно — есть результаты классификации жестов руки на данных с этого датчика.

Опенсорс приключения киберэлектроника - 2

К слову, кто подскажет, как сделать достойный браслет с металлическими контактами в полевых условиях?

Машинное обучение на носимом компьютере

Тут я решил сесть на поезд смартфонов. Каждый год они обрастают ядрами, увеличивают батарею. Существует Tensorflow Lite для использования машинного обучения на мобилках.
Если можно к смартфону подключить датчик и контроллер моторов с батарейкой, почему бы не попробовать сделать протез на основе смартфона? Ну хотя бы для начала=)

Проект начался с создания связки приложения под андроид и сервера, тренирующего модель классификатора для юзера.

Приложение может работать с датчиками нервной активности по USB либо Bluetooth. Данные пользователя записываются и отправляюся на сервер для тренировки модели. Натренированная модель скачивается и работает в режиме офлайн. С приложением очень помогли garastard и ArsenyChernyaev.

Сервер получает запись нервов юзера, крутит скрипт на Питоне и создает модель Tensorflow Lite, которая предназначена для мобильных устройств.

Обратно в физический мир

Здесь план создать паверанк для телефона, к которому можно также подлючить датчик и моторы протеза, в обход родной электроники. Вещь в разработке, ссылки пока нет.

Опенсорс приключения киберэлектроника - 3

Как сделать хорошую модель распознания нервной активности

Нужны данные и возможность проверять гипотезы. Вышеупомянутый скрипт на Питоне — это типичный ML код. Он может работать самостоятельно на заготовленных заранее записях ЭМГ, что позволяет продвигаться с машинным обучением отдельно от кастомного железа.

Для сбора данных датчика с ПК и создания экспериментов с ними, планируется допиливать десктопное приложение.

Опенсорс приключения киберэлектроника - 4

P.S.

Тут очень много дел. Если вам интересна тематика, пишите. Проект публикуется в открытую под лицензией Apache и другими свободными лицензиями. Особенно интересно познакомиться с хардкорными машинообучателями.

P.P.S.

Недавно компания CD Project Red устроила конкурс косплея по их игре Cyberpunk2077. Я решил, что было бы круто скооперироваться с креативным классом, и поучаствовать с костюмом, в котором правда будет нейроинтерфейс. Моторы крутила Raspberry Pi. Элементы костюма управлялись с телефона нервами косплеера. Вот что у нас получилось:

Автор: Кирилл Ящук

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js