Уважаемые коллеги по цеху, представляю вашему вниманию один из моих DIY проектов: простой робот с видео камерой, управляемый с персонального компьютера (или ноутбука) с любой точки мира с помощью программного обеспечения собственной разработки Arduino Robot Control (ARC).

Его величество робот

DIY робот
DIY робот
Интерфейс программы управления ARC
Интерфейс программы управления ARC

Робот собран на основе одного из самых дешевых DIY конструкторов, который я нашел на алиэкспресс, в основе управления Arduino совместимая плата Wemos D1 на базе ESP8266., шасси, два самых обычных 5 вольтовых DC мотора, датчик расстояния HC-SR04, ну и собственно набор проводов... в общем, руль сиденья и колеса присутствуют... все в лучших традициях. Робот управляется с персонального компьютера или ноутбука на базе операционной системы Windows c помощью кнопок клавиатуры через программу ARC по средствам WiFi соединения. Видео с робота на компьютер также передается по Wi-Fi. Для того, чтобы повторить мой проект вам ничего не нужно программировать, необходимо просто собрать конструктор, подключить все провода и произвести пару интуитивно понятных настроек в интерфейсе программы ARC - весь процесс показан в полной видео инструкции.

Базовые функциональные возможности робота:

  1. Управление роботом по Wi-Fi c персонального компьютера или ноутбука;

  2. Автоматический объезд препятствий;

  3. Переключение скоростей (три режима);

  4. Передача видеопотока с камеры робота в интерфейс программы;

  5. Распознавание лиц человека с помощью компьютерного зрения.

Список комплектующих робота:

  1. Набор робота

  2. Камера

  3. Схема подключения проводов

  4. Текстовая инструкция по сборке робота

  5. Исходный код проекта

  6. Полная видеоинструкция по сборке, настройке и запуску робота

Пару слов о программе Arduino Robot Control (ARC)

Идея программы состоит в том, чтобы превратить ваш персональный компьютер или ноутбук, работающий на основе операционной системы Windows 7/10/11 в универсальный пульт управления DIY роботами на базе контроллеров семейства Arduino., функциональные возможности позволяют использовать программу для участия в робофестах и соревнованиях. ARC позволяет создать ваш робопроект не написав ни единой строчки arduino кода и по большому счету пользователю необходимо всего лишь правильно собрать робота из конструктора, подключить провода согласно схеме проекта и произвести базовые настройки с помощью конфигуратора встроенного в программу., для загрузки программы управления на вашего робота даже не потребуется установка Arduino IDE и танцы с кодом., весь процесс максимально автоматизирован...

Базовые функциональные возможности программы ARC:

  1. Распознавание лиц с помощью компьютерного зрения с голосовой озвучкой OpenCV;

  2. Поддержка интерфейсов управления роботом: WiFi в режиме AP, WiFi в режиме STA, MQTT, радиоканал nRF24L01;

  3. Поддержка одновременного подключения и передачи видео в интерфейс программы (до 3-х камер одновременно). Можно использовать любые Wi-Fi камеры с поддержкой RTSP или HTTP потоков, также поддерживаются FPV камеры;

  4. Встроенный конфигуратор проектов и компилятор кода arduino;

  5. Встроенный готовые шаблоны проектов DIY (на текущий момент добавлено 3 готовых шаблона);

  6. Распознавание QR кодов с помощью компьютерного зрения OpenCV;

  7. Езда по линии с помощью компьютерного зрения OpenCV;

  8. Встроенный конфигуратор и монитор радиоканалов nRF24L01;

  9. Логирование процесса управления роботом;

  10. Видеозапись всего процесса управления роботом из интерфейса программы;

  11. Передача данных с датчиков установленных на роботе на онлайн треды в интерфейс программы (до 20-ти сигналов ввода/вывода);

  12. Анимация управления роботом и скорости на базе 3d модели (возможен вывод положения на 3d модель по осям X,Y,Z c гироскопа робота).

TODO лист программы ARC:

  1. Добавления универсального шаблона который позволит управлять любыми DIY роботами на базе Arduino и гибко настраивать привязку команд с клавиатуры компьютера для реализации ваших собственных Arduino проектов без привязки к конкретному шаблону, то есть код программы уже придется писать самостоятельно;

  2. Добавление прочего функционала по запросу пользователей...

Где скачать программу ARC:

  1. Прямая ссылка для скачивания: Arduino Robot Control

  2. По любым вопросам работы программы со мной можно связаться по почте: aabilityuk@mail.ru

Примечания

*Для возможности управления роботом не из домашней сети WiFi, а через интернет с любой точки, необходимо использовать/подключить статический IP адрес на роутере либо сконфигурировать DDNS сервис, а также настроить проброску портов (Port Forwarding) на роутере.

Слова благодарности

Хочу поблагодарить моего товарища программиста из Москвы Алексея за помощь в создании программы Arduino Robot Control на всех этапах: графика, система регистрации, настройка и установка библиотек и многое другое!!!

Заключение

Это моя первая статья на Habr, постарался изложить все кратко и без воды, основные детали проекта показал на видео, надеюсь что материал будет полезен. Если идея найдет отражение, в последующих постах планирую выложить видео и описание других готовых робопроектов. Благодарю за внимание, готов ответить на ваши вопросы.

Комментарии (22)


  1. vblats1984
    25.11.2023 10:48
    +14

    Нет. Wi-Fi робот на Ардуино не узнает лица людей. Их узнает программа на компьютере, которая даже не с робота (esp8266) получает видео, а напрямую с камеры.

    Кликбейт такой кликбейт.


    1. JerryI
      25.11.2023 10:48

      лет 12 назад были проекты со связкой мелкий роутер с OpenCV + Arduino. выглядело впечатляюще

      На самом деле, если б хотели сильно, взяли бы Arduino Due (ARM CortexM3) подцепили туда б аналоговую камеру и анализировали. Попугаев там много, но в притык. Вот это был бы хардкод достойный Хабра. И deep dive в потоковую обработку сигналов (полезно для того, чтобы знать как DSP работают), и базовые принципы обработки изображений и куча сопутствующих оптимизаций. А еще можно внешнюю SRAM (на Due такой интерфейс имеется) подцепить для буферизации, вот это вообще космическая ракета была бы.


      1. al072072 Автор
        25.11.2023 10:48
        +1

        Реализации этой логики может быть множество, все зависит от конкретной задачи! В моем случае я решил всю логику реализовывать на стороне ПК, во первых это быстро, во вторых это очень удобно, в третьих вы имеете вычислительные ресурсы CUDA и GPU, в четвертых не грузите вычислительные ресурсы контроллера!


        1. vblats1984
          25.11.2023 10:48
          +1

          В-четвертых ваш робот потребляет 150Вт от сети и роутер, чтобы распознать лицо.


          1. al072072 Автор
            25.11.2023 10:48
            +1

            Сам робот и все его железо питается от двух аккумов 18650, сколько потребляет даже не замерял! А вот комп и роутер конечно через 220 от сети)) Если смотреть на всю систему в целом то согласен с вами


      1. vblats1984
        25.11.2023 10:48

        Вариантов полно. ESP32 поддерживает подключение камеры без промежуточной адресации интерфейсов, т.е. ресурсы на "сделать с WiFi x265" не затратятся.

        А роутер такой я помню, туполинк 3020 вроде. Там даже GPIO c USB на плате есть.


        1. al072072 Автор
          25.11.2023 10:48

          Согласен, вариантов реализации куча! Я не ставил перед собой задачу реализовать Автономного робота со всей логикой обработки и управления на стороне железа контроллера, что касается подключаемых камер совместимых с ESP32 надеюсь согласитесь что это очень скудные камеры по своим характеристикам… в моем проекте вы можете использовать любые Wi-Fi камеры которые поддерживают http или rtsp потоки, а также можете использовать FPV камеры как на дронах…


    1. al072072 Автор
      25.11.2023 10:48

      Нет. Wi-Fi робот на Ардуино не узнает лица людей. Их узнает программа на компьютере, которая даже не с робота (esp8266) получает видео, а напрямую с камеры.

      al072072 только что

      Вы совершенно правы! Вся логика распознавания происходит на стороне софта на ПК


  1. zlsl
    25.11.2023 10:48

    Странно, что не взяли ESP32-CAM для проекта. Там приемлемо работает распознавание лиц.

    Ну и не Arduino там плата


    1. al072072 Автор
      25.11.2023 10:48

      Можно по-разному реализовать эту задачу! Реализация алгоритмов обработки изображения непосредственно на железе контроллера не сравниться по скорости с ПК, особенно если на ПК стоит хорошая GPU, в таком случае обработка происходит с поддержкой CUDA!


      1. zlsl
        25.11.2023 10:48
        +1

        ESP32 прекрасно справляется с распознаванием лиц и объектов.
        А библиотека TinyML-CAM, к примеру:

        For image frames, the digital signal processing (DSP) based features extraction time is ≈ 12 ms, while classification time is ≈ < 20 ???????? (1/1000th of DSP).


        1. al072072 Автор
          25.11.2023 10:48

          ESP32 прекрасно справляется с распознаванием лиц и объектов

          Я не спорю, но это уже совершенно другая реализация проекта...


      1. vblats1984
        25.11.2023 10:48
        +2

        Вот "разная" реализация - достойна похвалы и статьи на Хабре.

        ESP32 - 160Mhz\512K, этого более чем достаточно для реализации собственного алгоритма распознавания лиц.

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

        Вы работаете с чистым YUV2 1920x1080, один кадр у вас занимает 4 мегабайта в ОЗУ. Но зачем ? Для распознавания лиц хватает 320*240*2 - 150 Кб в ОЗУ.

        24 кадра в секунду распознавать не нужно, лицо за 1\24с никуда с кадра не исчезнет. 5 кадров вполне будет достаточно.

        Если нужно отображать цветное видео - делается интерполяция, т.е. распознавание у вас проводится над картинкой 320х240, а рамка выводится на картинку 1920х1080.

        Ну и так далее.

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

        Но это интереснее. И независимее от радиосвязи.

        обработка происходит с поддержкой CUDA

        Чтобы выделить контуры лица - вам нужен CUDA?)


        1. al072072 Автор
          25.11.2023 10:48

          Чтобы выделить контуры лица - вам нужен CUDA?)

          По умолчанию используется вычислительные мощности CPU, но если есть CUDA почему бы ей не воспользоваться? В текущем проекте не стояла задача все по максимуму оптимизировать и делать локальный вычислительный процесс на железе робота., с вычислительными ресурсами ПК все гораздо веселее :)) также можно использовать всю мощь полноценной библиотеки OpenCV! Еще раз повторюсь я с вами ни в коем случае не спорю, но мы говорим немного о разных вещах! Благодарю за интересные комментарии, мож когда-нибудь попробую с реализацией вычислений на железе робота поиграться, но для таких задач я бы предпочел малинку наверное, но проблема в том что с линуксом я вообще не на "ты" и даже не на "вы"...


  1. Jury_78
    25.11.2023 10:48
    +1

    Wi-Fi робот на Ардуино

    А по факту:

    Arduino совместимая плата Wemos D1 на базе ESP8266

    Ну как же так...


    1. al072072 Автор
      25.11.2023 10:48

      По тексту поста я как раз об этом упомянул! Не хотелось длинное название )) Благодарю за комментарий


  1. YRatay
    25.11.2023 10:48
    +1

    Хороший проект для углубления в тематику и роста...


    1. al072072 Автор
      25.11.2023 10:48

      Благодарю за отзыв


  1. Rixty
    25.11.2023 10:48

    Интересно, но честно говоря никакой информации в статье нет, только ссылка.

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

    Ну и да, я ожидал что используется esp32cam и думал уже перенять что либо из кода...

    И последний вопрос - а зачем роботу распознавать лица? Нет, если он двигается автономно - то вопросов нет, это логично. А если нужен оператор с ноутбуком - какой смысл то операции?


    1. al072072 Автор
      25.11.2023 10:48

      Интересно, но честно говоря никакой информации в статье нет, только ссылка.

      В статье привел краткое описание самого проекта, также приведены ссылки на детали из которых собирался сам робот, камера которая использовалась в проекте, а также ссылки на схему подключения проводов проекта и инструкция по сборке робота., а также вся исчерпывающая информация по сборке, настройке и запуску робота в работу содержится в видеоролике в шапке поста., я специально не стал прикладывать кучу скриншотов и текстового описания чтобы не загружать статью - это был бы полный копипаст из видеоролика. По сути даже можно не вникать в код проекта, так как он будет загружен на робота непосредственно из программы ARC, установка Arduino IDE не потребуется. Если у вас остались какие либо вопросы я постараюсь на них ответить!!!

      Ну и да, я ожидал что используется esp32cam и думал уже перенять что либо из кода...

      Нет в моем проекте используется контроллер Wemos D1 ESP8266 + wifi камера fredi l21(можно использовать любую другую поддерживающую http или rtsp потоки или fpv камеру).

      И последний вопрос - а зачем роботу распознавать лица? Нет, если он двигается автономно - то вопросов нет, это логично. А если нужен оператор с ноутбуком - какой смысл то операции?

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


  1. Db83
    25.11.2023 10:48
    +1

    В давайте в TODO лист добавим автоматическую парковку на зарядку как у робота пылесоса? Ну или просто добавим зарядное устройство на котором он будет все время находиться, пока не нужен. Это было бы очень кстати для патрулирования дома. Я бы коммерческую версию купил бы. Не ставить же камеру на робот пылесос)))


    1. al072072 Автор
      25.11.2023 10:48

      В давайте в TODO лист добавим автоматическую парковку на зарядку как у робота пылесоса? Ну или просто добавим зарядное устройство на котором он будет все время находиться, пока не нужен. Это было бы очень кстати для патрулирования дома.

      Хорошая идея на будущее

      Не ставить же камеру на робот пылесос)))

      а почему бы и нет :)) и робота собирать не придется и пульт управления в виде ПК не нужен)))