Beanbird Bot: инструкция по созданию робота с поддержкой веб-приложений на webOS OSE
Building Beanbird Bot 01.jpg (152.52 КБ) Просмотров: 7248
Одно из главных преимуществ платформы webOS заключается в ее графических возможностях на недорогих встроенных платформах. В сочетании с платформой Enact, webOS предлагает высокопроизводительный графический стек для беспрепятственного рендеринга веб-приложений на оборудовании с ограниченными ресурсами. Помимо телевидения и вывесок, где традиционно используется webOS, робототехника предлагает еще одну отличную область применения для таких возможностей.
Мы создали робота Beanbird ("Beanbird Bot"), чтобы продемонстрировать возможности программного обеспечения для робототехники, работающего в WebOS Open Source Edition (OSE). Beanbird Bot использует Robos Operating System 2 (ROS 2), связующее ПО для робототехники, на недорогой и доступной аппаратной платформе Raspberry Pi 3. Он имеет джойстик управления и датчики, включая камеру, ультразвук и датчики дальности. Кроме того, он отображает ряд эмоций и реагирует на окружающую среду, распознает объекты и отображает их на своем экране, а также издает звуки в зависимости от активности, которой он занимается. Это стало возможным благодаря веб-приложению на основе Enact, работающему на том же Аппаратное обеспечение Raspberry Pi как робототехническая платформа.
Если вы думаете о создании относительно недорогого социального робота или образовательного робота, этот пост покажет вам, как создать своего собственного робота Beanbird и использовать платформу webOS для ваших потребностей в робототехнике, а также подробно расскажет о нашем процессе создания робототехники. прототип программного обеспечения для конкретного приложения путем объединения WebOS OSE и ROS 2.
Вы также можете посмотреть
видео бота Beanbird в действии.
Как построить робота Beanbird Bot базируется на популярной платформе Duckietown, впервые запущенной в MIT и теперь поддерживаемой Duckietown Foundation. Базовое оборудование Duckiebot состоит из шасси, аккумулятора, камеры, Raspberry Pi, Raspberry Pi и моторных колёс. Кроме того, Beanbird Bot добавляет 7-дюймовый сенсорный экран Raspberry Pi, корпус с сенсорным экраном, ультразвуковой датчик, датчик расстояния во время полета и Intel Neural Compute Stick для запуска моделей глубокого обучения для классификации изображений.
Список деталей- Базовые части конфигурации Duckiebot, в частности DB17-wjd (версия 2017 года) -Ссылка
- Примечание: требуется батарея с суммарной мощностью не менее 4,5 А -
Ссылка - Специальный джойстик, который мы используем (беспроводной контроллер EasySMX 2.4G) - Ссылка
- Официальный сенсорный экран Raspberry Pi 3 7" - Ссылка
- Крепление SmartPi Raspberry Pi 3 для сенсорного экрана - Ссылка
- HC-SR04 Ультразвуковой датчик с креплением - Ссылка
- VL6180X Датчик расстояния до времени полета - Ссылка
- Intel Movidius Neural Compute Stick -Ссылка
- Портативная мини-колонка - Ссылка
- Дополнительные винты M2.5, стойки, шайбы, гайки - Ссылка
- Дополнительные винты M3, стойки, шайбы, гайки - Ссылка
- Дополнительные соединительные провода - Ссылка,Ссылка
Создание робота
- Инструкции по сборке базовой конфигурации Duckiebot можно найти на главном сайте документации Duckietown здесь.
- Батарея должна питать Raspberry Pi и плату двигателя через два сдвоенных выхода.
- После сборки базового Duckiebot добавьте сенсорный экран к креплению сенсорного экрана и прикрепите его к верхней части корпуса. Питание экрана можно подключить к разъемам питания на плате двигателя.
- Добавьте ультразвуковой датчик на переднюю часть робота, желательно с креплением. Вы можете подключить его к соответствующим разъемам GPIO на плате двигателя / Raspberry Pi.
- Добавьте датчик расстояния во время полета: вам нужно будет подключиться к плате двигателя / контактам Raspberry Pi I2C.
Building Beanbird Bot 02.jpg (288.35 КБ) Просмотров: 7248
- Контроллер джойстика, используемый для управления роботом
Building Beanbird Bot 03.jpg (191.42 КБ) Просмотров: 7248
- Ультразвуковой датчик и датчик дальности
Запуск робота- Запишите SD-карту с изображением webOS + ROS 2 после загрузки с наших выпусков. В настоящее время с этим образом при загрузке будут запускаться все необходимые процессы для запуска робота, включая узлы ROS 2, веб-приложение Face с сенсорным экраном пользователя и службы ОС.
- Кроме того, вы можете создать образ ОС самостоятельно, следуя инструкциям на нашем README в нашем Github репозитории.. Это позволит вам добавить или внести изменения в изображение перед его перепрошивкой на SD-карту.
- Вот что должен делать робот:
- Отвечать на управление джойстиком
- Делайте выражения лица, воспроизводите звуки при движении
- Распознавать объекты и показывать их на экране
- Остановитесь, когда на пути препятствия находится препятствие или когда он приближается к утесу
- После помещения SD-карты в Raspberry Pi и загрузки, робот должен запуститься, отобразится приложение Face, и вы сможете управлять роботом с помощью джойстика.
Building Beanbird Bot 04.jpg (198.72 КБ) Просмотров: 7248
- Полностью собранный бот Beanbird
ROS 2 в webOSСлой Yocto бота Beanbird
Building Beanbird Bot 05.png (51.37 КБ) Просмотров: 7248
- Слой Yocto бота Beanbird
Стек Yocto BeanbirdНаша работа основана на вкладах открытого исходного кода в мета-слои слоя Yocto. Продолжая существующий запрос на извлечение ROS 2, мы обновили рецепты ROS 2 Bitbake (ament, пакеты ядра ros2), добавили недостающие пакеты ядра и исправили зависимости.
Сначала мы обновили слой meta-ros2 до последней версии ROS 2 (Ardent). Мы добавили рецепты Bitbake для создания компонентов, необходимых для эффективной работы самого ROS 2 на Raspberry Pi, включая python3-opencv, boost, ament tool для python. Затем, взяв существующий мета-слой Yocto для webOS, мы добавили несколько компонентов, необходимых для поддержки оборудования, включая сенсорный экран, I2C и GPIO и джойстик. Мы также добавили конкретные базовые пакеты ROS 2, которые были необходимы для нашего варианта использования, включая части комплекта vision_opencv (cv_bridge и image_geometry), а также поддержку Intel Movidius SDK для взаимодействия с
Intel Neural Compute Stick. Включая только компоненты, необходимые для требуемой функциональности робота, сам образ системы избегает ненужных накладных расходов и сохраняет небольшую площадь.
В результате получается полностью готовый дистрибутив webOS для Raspberry Pi 3, способный работать как с узлами ROS 2, так и с визуальными приложениями. Теперь любой желающий может добавить слой Yocto с рецептами для своих собственных пакетов ROS 2.
Возможности робототехники Наш робот Beanbird основан на
проекте Duckietown, изначально запущенном в MIT и способном управлять джойстиком, объектом распознавание с помощью камеры Raspberry-Pi, визуальная реакция (выражение лица и звуки) и обход препятствий благодаря интеграции ультразвуковых и инфракрасных датчиков приближения. Мы интегрируем ROS 2, который управляет восприятием, движением и распознаванием объектов, с webOS, который управляет основным пользовательским интерфейсом веб-приложения, взаимодействующим с окружающей средой.
Building Beanbird Bot 06.png (18.08 КБ) Просмотров: 7248
- Основные компоненты системы, управляющие Beanbird Bot
Мы используем проект
ros2-web-bridge, позволяющий веб-приложениям для связи с ROS 2 узлами. Ros2-web-bridge позволяет получить доступ к темам ROS 2 из приложений или платформ, которые не имеют или не могут иметь собственные привязки ROS 2. Вместо этого он реализует пользовательский
протокол на основе JSON & через веб-сокет. Когда webapp отправляет новое сообщение в websocket, ros2-web-bridge получает его, преобразует в собственное сообщение ROS 2 и публикует его на других узлах ROS 2. Bridge также поддерживает список подписанных тем и уведомляет клиента websocket об опубликованных сообщениях от других узлов ROS 2.
Одним из недостатков ros2-web-bridge является то, что он не подходит для больших объемов данных, таких как изображения, поскольку он вносит значительную задержку. Таким образом, мы расширили узел камеры ROS 2 для предоставления необработанных данных изображения (jpeg) через обычный HTTP-сервер. Веб-приложения Enact могут легко получить доступ к этой конечной точке HTTP.
Веб-приложение Enact Чтобы создать пользовательский интерфейс для робота, мы использовали
Enact, & nbsp; платформу приложений на основе React. Первым шагом было создание проекта. Мы использовали инструмент Enact CLI для создания каркаса, а затем мы использовали npm для установки библиотеки roslib. Нам не нужно было выполнять какую-либо дополнительную настройку конфигурации нашей среды разработки, потому что Enact все это обработал.
Вторым шагом было начать кодирование приложения. Поскольку webOS позволяет нам использовать веб-технологии для собственных приложений, мы смогли быстро выполнить итерации самого приложения. Enact & ss lsquo; serve & rsquo; Функция обновила приложение с изменениями кода в режиме реального времени без необходимости останавливать, перестраивать и повторно развертывать. Кроме того, мы могли бы разрабатывать с использованием функций отладки в настольных браузерах и без проблем переключаться на робота.
Building Beanbird Bot 07.png (55.46 КБ) Просмотров: 7248
- Пользовательский интерфейс приложения Face с сенсорным управлением
Само приложение состоит из двух частей. Первая часть - это выразительное лицо. Чтобы создать лицо, был определен набор комбинаций поведения. Поведения управляют рендерингом лицевых элементов и могут объединяться для создания сотен уникальных выражений. Вторая часть - это интерфейс к ROS. Мы подписались на интересующие нас темы ROS, которые были сопоставлены с выражениями лица, которые мы назначили в файлах конфигурации. Это, например, позволяет нам сопоставить систему идентификации объекта с конкретными выражениями лица и необязательными звуками.
Последним шагом после завершения работы над приложением было упаковать его для развертывания. Мы создали оптимизированную производственную сборку приложения и упаковали ее с помощью инструментов WebOS. Затем он был установлен на роботе и настроен на запуск при включении робота.
Исходный код доступен на
Github. Как уже упоминалось, приложение может обслуживаться локально ( следуйте инструкциям в файле README.md). Если не удается установить соединение с роботом, данные макета будут использоваться автоматически. Нажатие на лицо робота вызовет "консоль выражения" для тестирования различных комбинаций выражений.
Building Beanbird Bot 08.png (138.25 КБ) Просмотров: 7248
- Веб-приложение поддерживает динамические выражения лица, анимацию и функции
Следующие шаги Есть несколько направлений, которые следует предпринять в качестве следующих шагов для робота, такого как бот Beanbird. Одним из примеров является более автономное поведение, такое как следование по полосе, локализация и навигация по карте. Кроме того, разработчик может использовать гибкую инфраструктуру веб-интерфейса для создания робота, который может взаимодействовать с людьми, разрешать видеозвонки или передавать контент для образования или развлечений.
Building Beanbird Bot 09.jpg (473.27 КБ) Просмотров: 7248
- Следящий за полосой бот Beanbird
webOS OSE - это легкий, но мощный дистрибутив встроенного Linux, о котором стоит подумать для приложения робототехники. Платформа Enact особенно эффективна для создания полнофункциональных и красивых веб-приложений, ориентированных на пользователя, которые могут напрямую взаимодействовать с программным обеспечением для робототехники. Начать легко, и вся документация доступна для вас.
Building Beanbird Bot 10.jpg (164.85 КБ) Просмотров: 7248
- Построй своего робота сам!
Источник:
http://webosose.org/blog/beanbird-bot/