- Arduino нейросеть для управления роботом
- Нейроинтерфейс мозг-компьютер и нейромышечный интерфейс
- Нейроинтерфейс для управления электронными и мехатронными средствами силой мысли.
- Описание неинвазивного интерфейса мозг-компьютер:
- Нейроинтерфейс мозг-компьютер применяется:
- Преимущества нейроинтерфейса мозг-компьютер:
- Описание нейромышечного интерфейса:
- Применение нейромышечного интерфейса:
- Преимущества нейромышечного интерфейса:
- Управляй телевизором силой мысли и Arduino
Arduino нейросеть для управления роботом
Расскажу о своем давнем проекте — нейронная сеть для управления роботом. Весьма специфичная и сложная задача в виду того, что реализована была на Arduino. Нейронная сеть работает с большими объемами данных. Требуется скорость в ее обработки для принятия решений. Но проведя пару экспериментов понял, что не все так уж и плохо.
Платформа робота состояла из компонетов: Arduinio, привода с колесами, ультрозвуковой дальномер HC-SR04, фоторезистор как датчик света, датчик звука.
При проектировании топологии сети было принято решение, что нейросеть будет иметь два слоя с 5-ю нейронами на каждом слое. Трехслойная сеть уже не умещалась в технические характеристики нашего микроконтроллера, но двух слоев оказалось достаточно для работы с теми датчиками, которые у меня имелись. Обучение сети должно было проводиться на компьютере с последующей загрузкой базы обученной сети в флешь память.
Из конструкции робота видно, что даже без использования нейронной сети, его возможности ограничены. Максимум что можно «логически» запрограммировать, это обход препятствий с выбором наилучшего направления, включение/выключение робота по звуку или уровню освещенности и. т.д, одним словом в интернете масса подобных поделок. Но вот какая штука – все это быстро надоедает,… Что если захотелось что- то поменять, например реакцию на свет или звук или получить некоторую непредсказуемость в поведении. Конечно, можно предусмотреть все это в программе контроллера, данные грузить с SD карточки, а непредсказуемость получить простым рандомом. Но мы не ищем легких путей…:). Делать будем так: пусть все выше перечисленные задачи решает нейронная сеть. Обучать будем методом обратного распространения ошибки.
Коэффициенты сети будут переноситься в контроллер посредством SD карты.
Как же это работает?
Был заложен следующий принцип работы:
На компьютере:
1) Создается обучающая выборка
2) Сеть обучается до тех пор, пока глобальная ошибка на всех выборках не станет равной нулю.(на самом деле будет немного не так)
3) После обучения создается отчет и файл для контроллера.
4) Файл записывается на карточку.
На Arduino:
1) После включения с SD карточки загружаются параметры сети.
2) После загрузки сеть готова к работе.
3) На основании показаний датчиков формируется «вектор данных».
4) Этот вектор подается на вход сети.
5) После просчета, выходной вектор сети подается на дешифратор.
6) Дешифратор, в зависимости от результата работы сети, определяет тип команды и выполняет ее.
7) Цикл повторяется с пункта 3,
Вектором данных я буду называть одномерный массив определенной размерности, элементы этого массива – числа. Скажем, что в нулевом элементе будет храниться расстояние до препятствия справа, в первом расстояние в прямой видимости и.т.д.
Почему же все-таки вектор? Когда я только начинал разбираться с нейронными сетями я сформировал для себя следующие понятие: «любой набор данных есть точка в N мерном пространстве». В нашем случае пространство будет размерности 5. Да, да такие бывают :).
Вот точное расположение данных в массиве:
Железо:
Честно говоря, я не очень сильно хочу уделять сильное внимание этому пункту. Причина этого желания в том, что сам робот в первую очередь не является объектом исследования а его реализация банальна. Единственное о чем я хочу рассказать, это об драйвере двигателей L293D. Эту замечательную микросхему я использовал в силу отсутствия готового шилда. Честно говоря, в электронике я не селен и подключил ее по первой загугленной схеме. В итоге оказалось, что для управления направлением вращения приходилось переводить ножку в состояние INPUT. Это было весьма не привычно, и я до сих пор не знаю чем это может аукнуться…
Насчет колес…в качестве редукторов были использованы серво — машинки, переделанные на постоянное вращение. Все остальные примочки как датчик расстояния и SD card модуля были подключены по стандартным схемам.
Да, качество сборки на 3 🙂
Даже не знаю с чего начать. С одной стороны тут нет ни каких велосипедов все стандартно:
Начнем с программы для ПК:
Написана она, а точнее они на C#. Потому что это достаточно простой язык и я часто использую его в своей работе, но не об этом. В программах нет классов все сделано в «функциональном» стиле для более простого понимания начинающим. Как Вы успели понять программ две: Первая это простой интерфейс, код которого не заслуживает тут присутствовать ибо та все очень просто. Будет только скриншот:
Тут все предельно просто: движками крутим значение на входах, выбираем мысленно реакцию на эти данные из предложенных пяти и ставим галочку. Жмем «добавить».
В результате работы получается файл вот с таким содержанием:
Слева двоеточия что подаем на вход, справа то, что хотим получить.
После того как мы заполнили этот файл, нажимаем кнопку «Создать» и он автоматически передается другой программе. Собственно та другая программа выполняет две функции: учит сеть на предъявленных данных и формирует отчет. Начнем с конца:
Вот такой отчет хороший:
Хороший он потому, что строки Input Res и NET OUT совпадают. Это говорит о том, что при подачи на вход Input data мы хотели бы получить Input Res, а получаем NET OUT. Так что о качестве работы сети мы будем судить из этого отчета.
Теория гласит, что при обучении сети образцы стоит предъявлять в случайном порядке. К чему я это – в моей практике это, на первый взгляд, незначительное утверждение в действительности влияет на скорость сходимости алгоритма. Так же на скорость влияет и первоначально выбранные веса. Бывало что с первой попытки алгоритм не сходился, приходилось по несколько раз запускать обучение для того что бы добиться результата.
Я не знаю стоит ли приводить полный код программы вместе с парсером файлов и созданием выходного файла для контроллера. Так что приведу на свой взгляд только самые важны моменты в одном листинге:
Запустить сеть на Arduino возможно и она даже будет работать. Временами конечно же начинаются глюки. Я думаю они связаны с обучающей выборкой. Я не тратил особо много времени на ее подборку и по этому не могу утверждать точно. Возможно в скором времени будут внесены некоторые коррективы. Ну а сейчас пока вот так. Спасибо за внимание.
Источник
Нейроинтерфейс мозг-компьютер и нейромышечный интерфейс
Нейроинтерфейс для управления электронными и мехатронными средствами силой мысли.
Нейроинтерфейс мозг-компьютер основан на преобразовании намерений пользователя, отраженных в электрических сигналах головного мозга, в управляющие команды. Нейромышечный интерфейс – средство регистрации двигательных намерений пользователя, основанное на регистрации изменений сигналов нейромышечной активности сохранившихся мышечных волокон с помощью поверхностно-закрепляемых датчиков.
Описание неинвазивного интерфейса мозг-компьютер:
Нейроинтерфейс мозг-компьютер основан на преобразовании намерений пользователя, отраженных в электрических сигналах головного мозга, в управляющие команды.
Нейроинтерфейс имеет механизм адаптивной цифровой обработки электрической активности мозга и неинвазивный метод работы.
Его ноу-хау — особые сухие электроды, которые встраиваются в шлемовидный интерфейс и позволяют без прямого контакта с головным мозгом регистрировать намерения человека с очень высокой точностью.
Специальная программа, встроенная в нейроинтерфейс, обрабатывает сигналы головного мозга и «очищающет» их от помех. За счет этого, устройство может использоваться не только в “идеальных” лабораторных условиях: оно устойчиво работает в местах большого скопления людей, в транспорте, в окружении большого числа передающих устройств. Точность обработки сигнала при этом не падает.
Нейроинтерфейс мозг-компьютер применяется:
– для реабилитации инвалидов с моторными нарушениями различной этиологии,
– для протезирования верхних и нижних конечностей,
– для обеспечения взаимодействия пользователей с электронными и электронно-механическими устройствами,
– для управления экзоскелетными решениями.
Преимущества нейроинтерфейса мозг-компьютер:
– регистрация намерений человека с очень высокой точностью,
– регистрация намерений без прямого контакта с головным мозгом,
– реализован механизм адаптивной цифровой обработки электрической аткивности мозга и неинвазивный метод работы,
– используются особые сухие электроды, которые встраиваются в шлемовидный интерфейс.
Описание нейромышечного интерфейса:
Нейромышечный интерфейс – средство регистрации двигательных намерений пользователя, основанное на регистрации изменений сигналов нейромышечной активности сохранившихся мышечных волокон с помощью поверхностно-закрепляемых датчиков.
Экзопротезы несут совершенно новые возможности для людей с ограниченными возможностями, которые сегодня не могут полноценно жить и двигаться.
При создании роботизированных экзопротезов используются последние достижения в области компьютерных технологий , материаловедения, робототехники, нейрофизиологии и нейропсихологии.
Применение нейромышечного интерфейса:
– для реабилитации инвалидов с моторными нарушениями различной этиологии,
– для протезирования верхних и нижних конечностей,
– для управления экзоскелетными решениями.
Преимущества нейромышечного интерфейса:
– форма и конструкция электродов датчиков разработаны с учетом удобства постоянного ношения, и не причиняют неудобств пользователю,
– после регистрации и обработки данных, сигнал пропорционального управления передается к исполнительным механизмам посредством проводного или беспроводного каналов связи, в зависимости от мест размещения датчиков,
– удобное применение: адаптивная подстройка под постоянно изменяющиеся параметры электро-мышечных потенциалов пользователя.
алгоритмы удаления артефактов принцип работы нейроинтерфейс своими руками глухие neurosky arduino ээг задачи купить в москве
проектировщик нейроинтерфейсов
игры конструкторы игрушки с нейроинтерфейсом купить
мариинский театр постановка нейроинтерфейсы
нейроинтерфейс мозг-компьютер для реабилитации и пр. проектировщик разработчик разработка нейроинтерфейсов купить своими руками это muse brainlink emotiv insight схема arduino
Источник
Управляй телевизором силой мысли и Arduino
Название проекта: Управляй телевизором силой мысли и Arduino
Платформа: Arduino
Пульт от телевизора больше не нужен. Все что нужно сделать — это подумать о смене канала. В проекте использован чип из игры Star Wars Force Trainer (Звездные войны), выпущенной в 2009 году.
Использованные компоненты: Arduino UNO, игра Star Wars Force Trainer, ИК-приемник / ИК-передатчик
,
Если вы когда-нибудь мечтали переключать каналы телевизора, просто думая, об этом, то этот arduino-проект — ваша удача. Не только системы «умный дом», но и магия становятся реальностью. Более того, некоторые проекты мейкеров доказывают, что фантастические трюки можно сделать самому, затратив при этом не много средств.
Дэниел Дэвис в домашних условиях разработал контролируемый сознанием пульт от телевизора, используя старую игру Star Wars Force Trainer (Звездные войны) и Arduino.
Игра была выпущена еще в 2009 году. Она включает в себя гарнитуру, способную обнаруживать электрические поля разума (по аналогии с ЭЭГ). Сигналы ретранслируются и вентилятор поднимает мяч, находящийся в трубе, в воздух. Иллюзия левитации. Сила работы вентилятора зависит от мыслей пользователя.
Мейкер разобрал игру и обнаружили чип NeuroSky ЭЭГ, встроенный в гарнитуру, который он решил подключить к Arduino Uno (ATmega328), чтобы собирать и преобразовывать исходные данные ЭЭГ на компьютере. В проекте также были использованы ИК-приемник и ИК-передатчик от старого видеомагнитофона.
Чтобы посмотреть какие сигналы передает пульт дистанционного управления на ИК-приемник при нажатии кнопок достаточно воспользоваться Serial-монитором, предварительно загрузив в arduino простую программу. Код кнопки нужно записать для последующего использования.
Написав совсем немного строк кода, мейкер создал умопомрачительный проект.
Шлем позволяет переключать каналы на ТВ и выключать его питание, просто путем сосредоточения мыслей.
Исходный код проекта можно скачать на GitHub.
Источник