Научите роботов видеть с помощью Unity

SARAH WOLF / UNITY TECHNOLOGIESContributor
Mar 2, 2021|8 Мин
Научите роботов видеть с помощью Unity
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Мир робототехники полон неизвестных! Для точной и надежной работы роботам необходимо понимать окружающий мир - от шумов датчиков до точного позиционирования важных объектов. Ранее мы продемонстрировали в Unity задачу по подбору и перемещению кубика с помощью робота Niryo One, который должен подбирать кубик с известным положением и ориентацией. В реальном мире такое решение будет не очень надежным, поскольку точное местоположение объекта редко известно заранее. В нашей новой демонстрации оценки позы объекта мы покажем вам, как использовать пакет восприятия Unity Computer Vision для сбора данных и обучения модели глубокого обучения для предсказания позы заданного объекта. Затем мы покажем, как интегрировать обученную модель с виртуальной роботизированной рукой UR3 в Unity, чтобы смоделировать полную систему захвата и перемещения объектов с неизвестным и произвольным положением.

Роботы в реальном мире часто работают в динамичных условиях и должны адаптироваться к ним. В таких приложениях роботам часто требуется воспринимать соответствующие объекты и взаимодействовать с ними. Важным аспектом восприятия и взаимодействия с объектами является понимание их положения и ориентации относительно некоторой системы координат, также называемое "позой". Первые подходы к оценке положения часто опирались на классические методы компьютерного зрения и пользовательские фидуциальные маркеры. Эти решения предназначены для работы в конкретных условиях, но часто терпят неудачу, когда условия меняются или отличаются от ожидаемых. Пробелы, вызванные ограничениями традиционного компьютерного зрения, пытаются устранить новые перспективные методы глубокого обучения. Эти новые методы создают модели, которые могут предсказывать правильный выход для заданного входа, обучаясь на множестве примеров.

В этом проекте используются изображения и метки истинной позы для обучения модели, предсказывающей позу объекта. Во время работы обученная модель может предсказать позу объекта по изображению, которое она никогда раньше не видела. Обычно для того, чтобы модели глубокого обучения работали достаточно эффективно, необходимо собрать и пометить десятки тысяч или более изображений. Сбор таких данных в реальном мире утомителен, дорог, а в некоторых случаях, например при локализации 3D-объектов, и вовсе затруднителен. Даже если эти данные удается собрать и маркировать, процесс может оказаться необъективным, подверженным ошибкам, утомительным и дорогостоящим. Как же применить мощные подходы машинного обучения к решению проблемы, если нужные данные недоступны или их вообще не существует для вашего приложения?

Unity Computer Vision позволяет генерировать синтетические данные как эффективное и действенное решение для удовлетворения потребностей в данных машинного обучения. В этом примере показано, как мы генерируем автоматически помеченные данные в Unity для обучения модели машинного обучения. Затем эта модель разворачивается в Unity на симулированной роботизированной руке UR3 с помощью операционной системы Robot Operating System (ROS), чтобы обеспечить перемещение куба с неизвестной позой.

Генерация синтетических данных
Кубики с буквами

Симуляторы, такие как Unity, являются мощным инструментом для решения проблем сбора данных путем генерирования синтетических данных. Как было показано ранее, с помощью Unity Computer Vision можно с минимальными усилиями собрать большое количество идеально маркированных и разнообразных данных. Для этого проекта мы собрали множество примеров изображений куба в различных позах и условиях освещения. Этот метод рандомизации аспектов сцены называется рандомизацией домена1. Более разнообразные данные обычно приводят к созданию более надежной модели глубокого обучения.

Чтобы собрать данные с помощью куба в различных позах в реальном мире, нам придется вручную перемещать куб и делать снимок. Наша модель использовала более 30 000 изображений для обучения, поэтому, если бы мы могли сделать это всего за 5 секунд на каждое изображение, на сбор этих данных у нас ушло бы более 40 часов! И это время не включает в себя маркировку, которая должна произойти. Используя Unity Computer Vision, мы можем создать 30 000 обучающих изображений и еще 3 000 проверочных изображений с соответствующими метками всего за несколько минут! В этом примере камера, стол и положение робота фиксированы, а освещение и положение куба меняются случайным образом в каждом кадре. Метки сохраняются в соответствующем JSON-файле, где поза описывается 3D-позицией (x,y,z) и кватернионом ориентации (qx,qy,qz,qw). Хотя в этом примере варьируется только поза куба и освещение окружающей среды, Unity Computer Vision позволяет легко добавлять рандомизацию к различным аспектам сцены. Для оценки позы мы используем метод машинного обучения под наблюдением для анализа данных и создания обучаемой модели.

Использование глубокого обучения для предсказания позы
График

При контролируемом обучении модель учится предсказывать определенный результат на основе обучения набора входных и соответствующих выходных данных, изображений и меток поз, как в нашем случае. Несколько лет назад группа исследователей представила2сверточную нейронную сеть (CNN), которая могла предсказывать положение объекта. Поскольку нас интересует 3D-поза для нашего куба, мы расширили эту работу, включив ориентацию куба в выходной сигнал сети. Чтобы обучить модель, мы минимизируем наименьшую квадратичную ошибку, или расстояние L2, между предсказанной позой и истинной позой. После обучения модель предсказывала местоположение куба с точностью до 1 см и ориентацию с точностью до 2,8 градуса (0,05 радиана). Теперь давайте проверим, достаточно ли это точно для того, чтобы наш робот успешно выполнил задачу по подбору и перемещению!

Планирование движения в ROS
График

Робот, которого мы используем в этом проекте, - это роботизированный манипулятор UR3 с захватом Robotiq 2F-140, который был перенесен в сцену Unity с помощью пакета Unity Robotics URDF Importer. Для связи используется пакет Unity Robotics ROS-TCP Connector, а для планирования и управления движением - пакет ROS MoveIt.

Теперь, когда мы можем точно предсказать позу куба с помощью нашей модели глубокого обучения, мы можем использовать эту предсказанную позу в качестве целевой позы в нашей задаче подбора и размещения. Напомним, что в предыдущем демонстрационном примере Pick-and-Place мы полагались на истинное положение целевого объекта. Разница заключается в том, что робот выполняет задачу "подобрать и разместить", не имея никаких предварительных знаний о положении куба, и получает только предсказанное положение от модели глубокого обучения. Процесс состоит из 4 этапов:

Изображение с целевым кубом захватывается Unity

Изображение передается обученной модели глубокого обучения, которая выдает прогнозируемую позу

Предсказанная поза отправляется в планировщик движений MoveIt.

ROS возвращает в Unity траекторию, по которой робот будет пытаться забрать куб

На каждой итерации задачи куб перемещается в случайное место. Хотя мы знаем положение куба при моделировании, в реальном мире мы не сможем воспользоваться этой информацией. Таким образом, чтобы заложить основу для переноса этого проекта на реального робота, нам нужно определить позу куба только по сенсорным данным. Наша модель оценки позы делает это возможным, и, по результатам нашего симуляционного тестирования, мы можем надежно подобрать куб в 89 % случаев в Unity!

Заключение
Роботизированная рука, собирающая предметы

Демонстрация оценки позы объекта показывает, как Unity позволяет генерировать синтетические данные, обучать модель глубокого обучения и использовать ROS для управления симулированным роботом для решения задачи. Мы использовали инструменты Unity Computer Vision для создания синтетических, помеченных обучающих данных и обучили простую модель глубокого обучения для предсказания позы куба. Демо-версия представляет собой учебное пособие по воссозданию этого проекта, который вы можете расширить, применив больше рандомизаторов для создания более сложных сцен. Мы использовали инструменты Unity Robotics для связи с узлом вывода ROS, который использует обученную модель для предсказания позы куба. Эти и другие инструменты позволят вам исследовать, тестировать, разрабатывать и внедрять решения на местах. Когда вы будете готовы к масштабированию решения, Unity Simulation сэкономит время и деньги по сравнению с локальными системами.

А знаете ли вы, что инструменты Unity Computer Vision и Unity Robotics можно использовать бесплатно? Перейдите к демонстрации оценки позы объекта, чтобы начать использовать их уже сегодня!

Продолжайте творить

Теперь, когда мы можем подбирать объекты с неизвестной позой, представьте, как еще можно расширить эту возможность! А если на пути возникнут препятствия? Или несколько объектов в сцене? Подумайте, как вы можете справиться с этим, и следите за нашими следующими публикациями!

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

Вы также можете найти другие проекты по робототехнике на нашем GitHub, посвященном Unity Robotics.

Другие проекты по компьютерному зрению можно найти на странице "Компьютерное зрение Unity".

Наша команда будет рада выслушать вас, если у вас есть вопросы, отзывы или предложения! Пожалуйста, свяжитесь с нами по адресу unity-robotics@unity3d.com.

Цитаты

J. Тобин, Р. Фонг, А. Рэй, Дж. Шнайдер, В. Заремба, П. Аббел, "Рандомизация доменов для переноса глубоких нейронных сетей из симуляции в реальный мир" arXiv:1703.06907, 2017

J. Тобин, В. Заремба и П. Аббел, "Рандомизация доменов и генеративные модели для роботизированного захвата", препринт arXiv:1710.06425, 2017.