Собака с искусственным интеллектом на ESP32 и Maixduino 


В данной статье мы рассмотрим создание роботизированной собаки с функциями искусственного интеллекта (ИИ) на основе модуля ESP32 и комплекта разработки Sipeed MaixDuino Ai. Собаку зовут Bao. Она может реагировать на имена (слова для пробуждения) "Hi Bao" и "Hi Ping". Она умеет следующее:

  1. Распознавание лиц: Bao распознает зарегистрированные лица и приветствует их.
  2. Голосовые команды в автономном режиме: Bao реагирует на команды, такие как go front («иди вперед»), go back («иди назад»), turn «повернись» и т. д.
  3. Чат-бот: Bao будет похож на Alexa, с ним можно будет взаимодействовать.
  4. Персональный помощник: Bao может стать вашим персональным помощником с будильниками и напоминаниями.
  5. Дружелюбное лицо: Bao будет использовать дисплей для отображения своего настроения и выполнения случайных действий. Bao построен на специальном шасси, напечатанном на 3D-принтере. Шасси многослойное. Нижняя палуба предназначена для передвижения, а верхняя — для внешнего аккумулятора и искусственного интеллекта.
  6. Bluetooth-подключение: колонка Bao также поддерживает Bluetooth-подключение, поэтому управлять ею можно через приложение с мобильного устройства. Это очень удобно, поскольку голосовые команды иногда не работают из-за шумной обстановки или акцента.

Собака с искусственным интеллектом на ESP32 и Maixduino 

Также на нашем сайте вы можете посмотреть другие аналогичные проекты робототехники:

Необходимые компоненты

  • SIPEED MAIXDUINO ДЛЯ RISC-V AI + (купить на AliExpress): дисплей отсутствует. Дисплей приобретается отдельно. 
  • Модуль разработки ESP32 WROVER (купить на AliExpress).
  • Модуль Ai-Thinker VC-02 (купить на AliExpress).
  • Сервопривод SG90 9gm (2 шт.) с необходимыми рожками (купить на AliExpress).
  • Мотор-редукторы N20 - 4 шт. (купить на AliExpress).
  • Колеса N20.
  • Драйвер двигателя H-Bridge L298N (купить на AliExpress).
  • Аккумуляторы Li-PO 18650 - 2 шт.
  • Держатель аккумулятора для 18650 - 2 шт. 
  • Переключатель основного питания.
  • Разъемы «папа-мама» и провода «папа-мама» для подключения разъемов и других проводов.
  • Термоусадочные трубки.
  • SD-карта для хранения отснятых изображений.
  • Кабели типа C и micro USB, используемые для программирования.
  • Платы Perf для создания печатной платы (базовая плата, вторая плата и для соединений Maixduino).
  • Разные гайки и болты М3.
  • Светодиоды и резисторы.
  • Детали шасси и панорамирования/наклона головы, изготовленные на 3D-принтере, крепления двигателя N20.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Конструкция роботизированной собаки

Я начал с проектирования базовой пластины в качестве шасси. Её размеры 13*11 см, толщина 3 мм. Это была приблизительная цифра. Также я сделал кронштейн для двигателей N20. Затем распечатал их на 3D-принтере. Я также распечатал дополнительные пластины толщиной 2 мм, которые будут служить второй палубой корпуса Bao.

Базовая пластина шасси робота и кронштейны для двигателей N20

Затем, используя монтажные кронштейны и болты M3, прикрепил четыре двигателя N20. Два двигателя с каждой стороны соединены параллельно. Этот небольшой автомобиль с такой конфигурацией двигателей похож на танк и может преодолевать уклоны до 45 градусов. Колёса были куплены заранее и оснащены резиновыми накладками для лучшего сцепления.

Сборка шасси робота

Следующим шагом было использование макетной платы для соединения и монтажа всех компонентов, входящих в базовую плату. Здесь будут драйвер L298N, модуль разработки ESP32 и комплект AI Thinker VC 02 с динамиком и микрофоном. Я также добавил сюда главный выключатель питания. Использовал липкую ленту и соединительные провода для создания модульного соединения между платами, чтобы в случае поломки мы могли заменить его по принципу «подключи и работай». 

Перфорированная плата со схемой, установленный ESP32, комплект VC 02, драйвер L298N, динамики, переключатели показаны на следующем рисунке.

Закрепление электронных компонентов на шасси робота

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

Полностью собранная базовая платформа робота

Далее мы установили вторую платформу робота. Мы установим основной аккумуляторный блок, состоящий из двух последовательно соединённых литий-полимерных (LiPo) элементов типоразмера 18650. Его пиковое напряжение составляет 8,4 В. Он подключен к плате драйвера L298N со стабилизированным выходом 5 В. Этот выход 5 В используется для питания всех плат, таких как Maixduino, ESP32 и комплекта VC 02. В будущем, при необходимости, мы можем установить отдельный понижающий преобразователь для обеспечения надлежащего стабилизированного питания.

У нас также есть вторая плата для подключения разъёма ESP32 к сервоприводам SG90 9gm. На ней также есть монтажный кронштейн для модуля панорамирования и наклона. Все детали модуля панорамирования и наклона были напечатаны на 3D-принтере.

Вторая платформа робота с установленными на нее компонентами

Теперь мы видим подключённый узел поворотной головки. На нём нам нужно установить комплект искусственного интеллекта Maixduino. Мне не удалось получить этот комплект с дисплеем из-за его отсутствия. В будущем он будет установлен. Дисплей будет использоваться для отображения эмоций, настроек, настроек и взаимодействия. Для его установки я использовал другую плату, так как её необходимо подключить к ESP32 для полного управления оборудованием на основе логики искусственного интеллекта. Например, если распознаётся дружелюбное лицо, BAO может выражать радость, бегать или вилять хвостом.

Конструкция роботизированной собаки в сборе

Здесь мы видим завершенную сборку, и Бао «готов к игре». Обратите внимание на камеру, выглядывающую из его правого уха.

Камера, установленная на нашей роботизированной собаке

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

Полностью завершенная конструкция робота

Сейчас мы можем использовать голосовые команды, например, Go front («Иди вперёд»), go back («Иди назад»), turn Right («Повернись направо»), Turn left («Повернись налево»). Мы также можем добавить специальные команды для собак, например, wag your tail («Вилять хвостом»), speak / bark («Говорить/лаять») и т. д.

Bluetooth-подключение

Используя Bluetooth-возможности ESP32, я также подключился к нему через приложение. В настоящее время это приложение выполняет некоторые базовые движения, подобно голосовым командам.

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

Экран приложения для управления роботом

Фокус на искуственном интеллекте (ИИ)

Давайте кратко рассмотрим основные функции, основанные на Maixduino. Я прошил файл модели распознавания лиц по умолчанию (KPKG) с помощью OEM-прошивальщика SIPEED. Затем написал программу на MicroPython для её запуска. Поскольку у меня нет дисплея, я использую ноутбук в качестве отладчика. Для разработки и отладки всего кода, написанного для этой платы, я использую MaixPy IDE.

Более побробно про работу с Maixduino можно прочитать в следующих статьях на нашем сайте:

Комплект для прошивки SIPEED

Программа распознаёт лицо, то есть по сути это модель распознавания лиц. Затем рисует на нём прямоугольник. Поскольку у меня нет дисплея, я использовал карту microSD, подключенную к плате, для сохранения изображений, а также для регистрации и отладки информации, которая может мне понадобиться. Логика заключается в том, чтобы распознать знакомое лицо (зарегистрированное лицо) и отправить команду ESP32 через его последовательный порт. ESP32 затем выполнит ряд действий, например, помашет хвостом, подвигает головой Бао, сделает несколько случайных движений и т.д.

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

Примеры распознавания лиц с помощью нашей программы

Консоль показывает координаты относительно камеры, где идентифицировано лицо, и сохраняет изображение на SD-карте.

Логи распознавания координат в нашей программе

Ниже представлен код, работающий в MaixDuino. Его можно найти на сервисе GitHub.

Код MaixDuino для нашей роботизированной собаки

Как все это работает?

1) При включении питания выполняются некоторые системные проверки, и Бао выполняет несколько демонстрационных команд. Мы слышим, как Бао приветствует нас "Ready to play" («Готов к игре»), и визуально видим, всё ли в порядке. Он движется вперёд, назад, поворачивает направо и налево.

2) Базовое физическое действие Bao начинается с модуля AI Thinker VC 02. Он предварительно запрограммирован на голосовые команды. Как только голосовая команда распознана, он передает триггер в последовательный порт ESP32. ESP32 получает этот сигнал и, основываясь на типе сигнала, принимает решение о следующем действии. Это действие может быть движением вперед, движением назад и т. д.
Затем ESP32 запускает подпрограмму, используя сигналы ON/OFF для драйвера двигателей L298N.
L298N, в свою очередь, управляет двигателями N20. Здесь мы используем автономную голосовую модель AI модуля AI Thinker для выполнения большинства физических действий, которые выполняет домашняя собака.
Здесь, используя возможности Bluetooth ESP32, мы также подключаемся к ESP32 и можем выполнять некоторые базовые действия.

В будущем мы добавим больше функциональности в Bluetooth.

3) В памяти Maixduino записана модель Vision. В ней запущена программа на MicroPython для распознавания лиц. При обнаружении лица робот рисует вокруг него прямоугольник и определяет его местоположение. На данный момент эта функциональность уже реализована. В будущем мы также сможем регистрировать лица, и тогда Бао сможет распознавать их. Здесь Бао может выполнять различные действия, демонстрируя своё волнение.

4) Для отображения эмоций Bao будет использоваться дисплей, например, OLED или TFT. Поскольку мне не удалось получить Maixduino с дисплеем, я буду работать над этим в будущем. Это придаст Bao индивидуальность и крайне важно для достижения конечной цели моего проекта.

Дорожная карта и что нужно сделать

1) Заполните код распознавания лиц и дайте ESP32 соответствующие команды для выполнения действий.

2) Добавьте дисплей в MaixDuino для отображения эмоций, а также для настройки и оповещений. Например, для отображения уровня заряда батареи.

3) Подключитесь к сервису Open AI и добавьте функцию преобразования речи в текст и текста в речь, чтобы придать ему функциональность, подобную Alexa.

4) Используя службу Open AI или периферийные вычисления, можно реализовать некоторые базовые функции персонального помощника, например, установку будильников и напоминаний.

5) Сделайте его похожим на домашнюю собаку внешне, а также сгладьте его движения.

еще много работы предстоит сделать..............

Коды программ для проекта

Все коды программ для этого проекта и модели для 3D-принтера можно скачать по следующей ссылке.

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
33 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *