Распознавание движений белой тростью с нуля. Часть первая

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


Вы хотите создать простую капсулу, способную распознавать естественные движения трости? Хотите внедрить машинное обучение / искусственный интеллект на микроконтроллерах и других устройствах? Мы покажем, как создать GesturePod — самонастраиваемое устройство, которое распознает движения в режиме реального времени. Эта инструкция наглядно показывает, как при помощи GesturePod сделать интерактивной любую «белую трость». GesturePod упрощает доступ к смартфонам и другим домашним устройствам для людей с нарушениями зрения и пожилых людей. С помощью GesturePod можно управлять устройствами, выполняя движения тростью. К примеру, ответить на входящий звонок двойным покачиванием трости из стороны в сторону.


Конструкция капсулы и схема электронной подсистемы приводятся здесь [гиперссылка будет добавлена]. Механизм распространяется по открытой лицензии MIT, текст которой можно найти здесь. Данные для обучения распознаванию 5 движений описаны в нашей публикации для UIST 2019 и доступны здесь.


В этой инструкции мы подключим модуль датчика, включающего гироскоп и акселлерометр (IMU) MPU6050 к MKR1000 (микроконтроллеру ARM класса Cortex M0+), и развернем предварительно обученную модель, которая распознает 5 движений — двойное касание, поворот вправо, поворот влево, вращение и двойное покачивание. Затем эти движения передаются на смартфон через Bluetooth Low Energy (BLE).


У вас нет времени на создание аппаратной части? Попробуйте запустить на своем компьютере эту симуляцию.


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


Одно изображение стоит тысячи слов — а видео стоит больше! Поэтому в помощь предлагаем три небольших видеоинструкции:


  1. Видео «Сборка капсулы GesturePod без питания» (Raw set-up).
  2. Видео «Сборка капсулы GesturePod с автономным питанием» (Stand-alone GesturePod).

Как видно из инструкций и текста, разница в вариантах, показанных в первом и втором видео — в наличии батареи и выключателя и, соответственно, в наличии автономного питания или необходимости в использовании блока питания.

  1. Видео «Интеграция GesturePod и трости» (Integrating GesturePod with cane)

Компоненты и инструменты


Электроника


  1. Микроконтроллер Arduino MKR1000.
  2. Датчик MPU6050.
  3. Модуль HM-10 BLE.
  4. Литий-полимерная батарея 3,3В 700 мА/ч (опционально) с двухштырьковым переходником JST 2.0 PH.

В качестве альтернативы HM-10 можно использовать модуль Bluetooth HC-05. Не забывайте, что при развертывании системы, работающей от аккумулятора, традиционный Bluetooth потребляет больше энергии, чем Bluetooth Low Energy (BLE).


Корпус и крепеж


  1. Описанная выше электронная начинка зашивается в корпус, который можно распечатать на 3D-принтере из этих файлов дизайн-макета.
  2. Металлические хомутики для надежного крепления капсулы к трости.
  3. Винты для фиксации корпуса.
  4. Выключатель для включения и выключения системы.

После этого капсула закрепляется на «белой трости», как показано в видео. Вы также можете обойтись без корпуса капсулы и приклеить систему скотчем к любой палке или трубке. Если выравнивание осей MPU6050 будет последовательным, все будет работать нормально.


Программное обеспечение


Получите последнюю версию Arduino IDE. Эту инструкцию мы протестировали с Arduino 1.8.5 на Windows 10. Хорошее руководство по работе с MKR1000 можно найти здесь. Для проверки системы рекомендуем запустить пример blink.


Инструменты


  1. Пистолетный паяльник.
  2. Винты.
  3. Фигурная отвертка («звездочка»).
  4. Изоляционная лента.

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 Scientist
  • Профессия Fullstack-разработчик на Python (16 месяцев)

Краткий каталог курсов

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-разработчик
  • Профессия Веб-разработчик

Мобильная разработка


  • Профессия iOS-разработчик
  • Профессия Android-разработчик

Java и C#


  • Профессия Java-разработчик
  • Профессия QA-инженер на JAVA
  • Профессия C#-разработчик
  • Профессия Разработчик игр на Unity

От основ — в глубину


  • Курс «Алгоритмы и структуры данных»
  • Профессия C++ разработчик
  • Профессия «Белый хакер»

А также


  • Курс по DevOps
  • Все курсы
Источник: https://habr.com/ru/company/skillfactory/blog/722402/


Интересные статьи

Интересные статьи

Привет, Хабр! Сегодня мы завершаем серию статей, посвящённых методам множественного доступа в беспроводной связи. Напомню, что в первой части мы рассмотрели методы частотно-временного разделения польз...
В предыдущей статье “Фреймворк Webix Jet глазами новичка. Часть 1. Композиция и навигация” мы подробно разобрали создание интерфейса нашего приложения с помощью UI компон...
Так как твердотельные накопители, основанные на технологии флэш-памяти, становятся основным средством постоянного хранения информации в дата-центрах, важно осознавать, насколько они надежны. На с...
Перевод статьи подготовлен специально для студентов курса «Разработчик Java». В этой серии статей я расскажу о том, как работает Java Virtual Machine. Сегодня мы рассмотрим механизм загруз...
Первая часть здесь Все изображения кликабельны. Прошло больше года c того момента как я написал статью про сборку клона ZX Spectrum «Ленинград». И за это время его возможности существенно...