Сделано с помощью Unity: Создание и обучение цифрового двойника робота

Наш Сделано с Unity: Серия AI демонстрирует проекты Unity, созданные авторами для различных целей, в которых задействованы наши продукты искусственного интеллекта. В этом примере мы представляем недавнюю заявку на конкурс OpenCV Spatial AI, которая демонстрирует робототехнику, компьютерное зрение, обучение с подкреплением и дополненную реальность в Unity в виде впечатляющего набора примеров.
Unity - это 3D-движок мирового класса, работающий в режиме реального времени. В то время как движок и инструменты, которые мы создали, традиционно поддерживали разработчиков игр, группа AI@Unity создает инструменты для таких областей, как машинное обучение, компьютерное зрение и робототехника, чтобы создать приложения за пределами игр, особенно те, которые полагаются на искусственный интеллект и 3D-окружение в реальном времени.
В работе Жерара Эспоны и команды Kauda, представленной на конкурс OpenCV Spatial AI, использовались многие наши инструменты и пакеты для ИИ в нескольких примерах. Они использовали наш пакет Perception Package для обучения моделей компьютерного зрения и инструментарий ML-Agents для обучения моделей машинного обучения и демонстрации роботизированной руки в режиме sim2real. Мы взяли интервью у Жерара, чтобы узнать, что вдохновило его на создание этого проекта. Читайте далее, чтобы узнать, как он воплотил этот проект в жизнь в Unity и в реальном мире.
Откуда вы взяли название команды Kauda?
Команда Kauda состоит из Джованни Лерды и меня (Жерар Эспона), а название происходит от названия бесплатной и открытой 3D-печати настольного 5-осевого роботизированного манипулятора, который Джованни создал под названием Kauda. Это отличная настольная роботизированная рука, которую может сделать каждый, и которая позволила нам удаленно сотрудничать над этим проектом.

Мы разработали Kauda Studio - приложение для Unity, которое обеспечивает работу цифрового двойника Kauda. Он обеспечивает полнофункциональное и точное моделирование Kauda с инверсной кинематикой (IK), USB/Bluetooth-подключением к настоящему Kauda и может поддерживать несколько камер OpenCV OAK-D.
Камера OAK-D сочетает в себе две стереокамеры глубины и цветную камеру 4K с встроенным процессором (на базе Intel MyriadX VPU) для автоматической обработки различных функций. В рамках конкурса мы создали плагин Unity для устройств OAK, но мы также хотели иметь цифрового двойника в Unity. Цифровой двойник OAK-D Unity обеспечил виртуальную 3D-камеру с точной симуляцией, которую можно использовать для сбора синтетических данных. Он также позволяет подавать виртуальные изображения в конвейер реального устройства. Мы смогли использовать пакет Unity Perception Package для сбора синтетических материалов для тренировки пользовательских предметов с помощью виртуальной камеры OAK-D.

Наличие цифрового двойника позволило нам включить дополнительные функции на Кауде. Вы также можете использовать возможности дополненной реальности (AR) в Unity, чтобы взаимодействовать с виртуальным роботом в реальном мире. Одно из применений - научиться проводить техническое обслуживание робота, не требуя его присутствия. Это также позволяет программировать последовательные задачи без кодов, имея виртуальное и точное представление робота.
Цифровой двойник позволил нам провести обучение с подкреплением (RL). RL - это трудоемкий процесс, который требует моделирования для любых примеров, кроме самых простых. С помощью Kauda в Unity мы использовали инструментарий ML-Agents, чтобы провести обучение RL для управления.
Мы также начали тестировать взаимодействие человека и машины и процедуры безопасности, воспроизведя робота в Unity и используя камеры для измерения местоположения человека в зоне робота. Вы можете представить, как это сделать для большого робота, который при ошибках может нанести травму человеку. Среда моделирования позволяет проверить эти сценарии, не подвергая людей опасности.
Мы считаем, что RL - это мощная основа для робототехники, а Unity ML-Agents - отличный набор инструментов, позволяющий нашему цифровому двойнику обучаться и выполнять сложные задачи. Поскольку сроки конкурса были ограничены, задача состояла в том, чтобы реализовать простую задачу RL "прикосновение" и преобразовать полученную модель для проведения расчетов на устройстве OAK-D. Используя ML-Agents, робот выучил оптимальный путь с помощью IK-управления, чтобы динамически коснуться обнаруженного 3D-объекта.

Для этого мы сначала реализовали детектор 3D-объектов с помощью пространственного крошечного YOLO. Модель RL (PPO) использует полученное обнаружение и положение контрольной точки IK в качестве входных наблюдений. В качестве выходных воздействий мы имеем движение по 3 осям контрольной точки IK. Система вознаграждения была основана на небольшом штрафе за каждый шаг и большом вознаграждении (1.0), когда робот касался объекта. Чтобы ускорить обучение, мы воспользовались преимуществом одновременного обучения нескольких агентов, разработав виртуальный пространственный крошечный YOLO с теми же результатами, что и реальный пространственный крошечный YOLO.
После обучения модели мы преобразовали ее в формат OpenVino IR и Myriad Blob с помощью инструментария OpenVino, чтобы загрузить модель на устройство OAK-D и провести анализ. Финальный трубопровод представляет собой пространственную миниатюрную модель YOLO plus RL. Благодаря нашему плагину для Unity мы смогли сравнить вывод с помощью агентов ML-Agents и OAK-D в Unity.
Первый этап нашего конвейера - детектор 3D-объектов, который является очень распространенной отправной точкой для задач компьютерного зрения и робототехники на основе ИИ. В нашем случае мы использовали предварительно обученную модель YOLO v3, а благодаря пакету Unity Perception мы смогли обучить пользовательскую категорию. Это позволило нам за считанные минуты создать большой синтетический набор 3D-моделей с автоматической маркировкой ограничительных рамок. Обычно процесс сбора и маркировки осуществляется вручную, что отнимает много времени. Возможность генерировать богатый набор данных с большим количеством вариантов рандомизации для различных поворотов, условий освещения, вариаций текстур и многого другого - это большой шаг вперед.
Время, необходимое для синхронизации виртуальных и реальных предметов, иногда немного сбивалось. Мы думаем, что в будущем это можно будет решить с помощью ROS, и приятно, что Unity теперь официально поддерживает ROS.
У Жерара есть полный плейлист видеороликов, документирующих их путешествие, среди которых выделяются вебинар по OpenCV и финальное видео с конкурсной заявкой. Он также выпустил плагин OAK-D Unity на Github, чтобы помочь другим начать работу над своим проектом.
Мы рады видеть, как наши инструменты позволяют воплощать в жизнь подобные проекты! Если вы хотите добавить искусственный интеллект в свои проекты в Unity, у нас есть множество примеров и уроков, которые помогут вам начать! Пакет Unity Perception Package позволяет легко собирать синтетические данные в Unity. Unity Robotics Hub содержит учебники и пакеты, которые помогут вам начать работу с интеграцией ROS и моделированием робототехники. А инструментарий ML-Agents упрощает обучение с подкреплением, предлагая множество сред для начала работы.