Вы хотите создать простую капсулу, способную распознавать естественные движения трости? Хотите внедрить машинное обучение / искусственный интеллект на микроконтроллерах и других устройствах? Мы покажем, как создать GesturePod — самонастраиваемое устройство, которое распознает движения в режиме реального времени. Эта инструкция наглядно показывает, как при помощи GesturePod сделать интерактивной любую «белую трость». GesturePod упрощает доступ к смартфонам и другим домашним устройствам для людей с нарушениями зрения и пожилых людей. С помощью GesturePod можно управлять устройствами, выполняя движения тростью. К примеру, ответить на входящий звонок двойным покачиванием трости из стороны в сторону.
Конструкция капсулы и схема электронной подсистемы приводятся здесь [гиперссылка будет добавлена]. Механизм распространяется по открытой лицензии MIT, текст которой можно найти здесь. Данные для обучения распознаванию 5 движений описаны в нашей публикации для UIST 2019 и доступны здесь.
В этой инструкции мы подключим модуль датчика, включающего гироскоп и акселлерометр (IMU) MPU6050 к MKR1000 (микроконтроллеру ARM класса Cortex M0+), и развернем предварительно обученную модель, которая распознает 5 движений — двойное касание, поворот вправо, поворот влево, вращение и двойное покачивание. Затем эти движения передаются на смартфон через Bluetooth Low Energy (BLE).
У вас нет времени на создание аппаратной части? Попробуйте запустить на своем компьютере эту симуляцию.
Во второй части этого руководства вы увидите, как разработать и обучить модель машинного обучения для распознавания ваших движений.
Одно изображение стоит тысячи слов — а видео стоит больше! Поэтому в помощь предлагаем три небольших видеоинструкции:
- Видео «Сборка капсулы GesturePod без питания» (Raw set-up).
- Видео «Сборка капсулы GesturePod с автономным питанием» (Stand-alone GesturePod).
Как видно из инструкций и текста, разница в вариантах, показанных в первом и втором видео — в наличии батареи и выключателя и, соответственно, в наличии автономного питания или необходимости в использовании блока питания.
Компоненты и инструменты
Электроника
- Микроконтроллер Arduino MKR1000.
- Датчик MPU6050.
- Модуль HM-10 BLE.
- Литий-полимерная батарея 3,3В 700 мА/ч (опционально) с двухштырьковым переходником JST 2.0 PH.
В качестве альтернативы HM-10 можно использовать модуль Bluetooth HC-05. Не забывайте, что при развертывании системы, работающей от аккумулятора, традиционный Bluetooth потребляет больше энергии, чем Bluetooth Low Energy (BLE).
Корпус и крепеж
- Описанная выше электронная начинка зашивается в корпус, который можно распечатать на 3D-принтере из этих файлов дизайн-макета.
- Металлические хомутики для надежного крепления капсулы к трости.
- Винты для фиксации корпуса.
- Выключатель для включения и выключения системы.
После этого капсула закрепляется на «белой трости», как показано в видео. Вы также можете обойтись без корпуса капсулы и приклеить систему скотчем к любой палке или трубке. Если выравнивание осей MPU6050 будет последовательным, все будет работать нормально.
Программное обеспечение
Получите последнюю версию Arduino IDE. Эту инструкцию мы протестировали с Arduino 1.8.5 на Windows 10. Хорошее руководство по работе с MKR1000 можно найти здесь. Для проверки системы рекомендуем запустить пример blink
.
Инструменты
- Пистолетный паяльник.
- Винты.
- Фигурная отвертка («звездочка»).
- Изоляционная лента.
1. Подключение
Мы подготовили видеоинструкции по двум типам установки: (a) «Сборка капсулы GesturePod без питания» (Raw set-up) — ей посвящено первое видео, и (b) «Сборка капсулы GesturePod с автономным питанием» (Stand-alone GesturePod) — ей посвящено второе видео.
-
Сборка капсулы без питания позволит вам полностью реализовать весь алгоритм машинного обучения без потерь в функциональности. Подключение происходит следующим образом:
MKR1000 ----------------> HM10 VCC ----------------> VCC GND ----------------> GND 0 (DO) ----------------> RX 1 (D1) ----------------> TX MKR1000 ----------------> MPU6050 VCC ----------------> VCC GND ----------------> GND SDA (D11) ----------------> SDA SCL (D12) ----------------> SCL
-
При сборке капсулы с автономным питанием структура из первого видео интегрируется с батареей и выключателем. Это позволяет пользоваться системой без подключения к блоку питания и экономить заряд батареи, когда система выключена.
Для верификации подключения MPU6050 мы рекомендуем запустить пример testMPU.ino
.
2. Монтаж капсулы в корпус
Убедившись, что данные с датчика можно получить методом опроса, вы можете монтировать электронную начинку в корпус, который можно распечатать на 3D-принтере при помощи этих файлов.
Убедитесь, что у вас есть 3 детали:
- Основание капсулы.
- Крышка капсулы.
- Зажим-хомутик.
Сначала в углубление в основании капсулы устанавливается датчик MPU6050. Затем поверх MPU6050 в корпус вкладывается MKR1000
Здесь расхождение текста оригинала с авторской видеоинструкцией. В оригинале говорится, что микроконтроллер монтируется на опорные столбики (columnar supports), но как мы видим, во всех видеоинструкциях автора (см. https://drive.google.com/file/d/13BYBcYroHY_c4nu1DdYQr4B14SrqJtRL/view 1:50 и/или https://drive.google.com/file/d/1JnsX-Kr7Nm77E2ReGSzVNo0cjskrdD8r/view 1:00) никаких столбиков нет: между МК и датчиком автор проклеивает кусочек ленты и кладёт МК, висящий на проводах, поверх датчика, а затем привинчивает его к основанию капсулы винтами.
Модуль HM-10 BLE крепится в подвешенном состоянии между выступами в крышке капсулы. Затем крышка и основание капсулы скрепляются клиновыми соединениями. Конструкция дополнительно фиксируется винтами. После прикрепления к капсуле хомутика систему можно закрепить хомутиком на трости, как показано на рисунке.
MPU6050 должен быть выровнен по оси капсулы, как показано в видеоинструкции.
3. Кодирование MKR1000 и подключение к телефону
Теперь до реализации функции распознавания движений на периферическом устройстве вам остался всего один шаг...
Скачайте код или клонируйте репозиторий onMKR1000.ino. Соберите и загрузите код с помощью Arduino IDE. Не забудьте выбрать в качестве платы MKR1000. Откройте монитор последовательного интерфейса и установите скорость BAUD равной 115200. Теперь вы можете увидеть прогнозируемые классы. Выполните движения, как показано в видео «Интеграция GesturePod и трости», соответствующие движения будут прогнозироваться.
Детектированные движения также передаются по BLE. Вы можете использовать приложение nrF Connect app для подключения по BLE и передавать данные о движениях на свой телефон. Чтобы использовать эти движения для запуска соответствующих действий на телефоне, вы можете загрузить и установить приложение «Interactive Cane» от [ссылка скоро появится...]. Не забудьте дать все необходимые разрешения и включить Bluetooth и службы определения местоположения.
Если вы используете BLE, нужен телефон с поддержкой BLE.
Что дальше?
Это руководство было посвящено созданию GesturePod и развертыванию предварительно обученной модели машинного обучения для распознавания движений. В следующем руководстве вы узнаете, как обучить и развернуть модель машинного обучения для распознавания ваших движений. Вы уже узнали достаточно, чтобы приступить к работе? Тогда перейдите по ссылке, чтобы приступить к обучению новой модели для распознавания собственных движений.
The Things Network Conference — руководство еще короче
Пол Фостер составил руководство короче (и лучше?) этого для практического семинара в рамках конференции The Things Network Conference, UK (2019). Вместо MKR1000 используется Adafruit Trinket M0. Кроме того, этот базовый GesturePod показывает распознаваемые движения (соблюдая британские правила написания, так как конференция проходила в Великобритании) при помощи RGB-светодиода на Adafruit Trinket M0, а не через Bluetooth, как при полной реализации GesturePod. В руководстве также рассказывается о том, как обучить новую модель пользовательским движениям.
Data Science и Machine Learning
- Профессия Data Scientist
- Профессия Data Analyst
- Курс «Математика для Data Science»
- Курс «Математика и Machine Learning для Data Science»
- Курс по Data Engineering
- Курс «Machine Learning и Deep Learning»
- Курс по Machine Learning
Python, веб-разработка
- Профессия Fullstack-разработчик на Python
- Курс «Python для веб-разработки»
- Профессия Frontend-разработчик
- Профессия Веб-разработчик
Мобильная разработка
Java и C#
- Профессия Java-разработчик
- Профессия QA-инженер на JAVA
- Профессия C#-разработчик
- Профессия Разработчик игр на Unity
От основ — в глубину
А также
Комментарии (2)
kvark128
00.00.0000 00:00Верно ли я понимаю, что при использовании трости по прямому назначению, вся эта электроника оказывается бесполезной?
atc
Очередной авто(?)перевод, который не подвергли минимальной вычитке. SkillFactory должно быть стыдно за такие статьи в своём блоге.