robossembler.org/docs/robossembler-framework.md

85 lines
No EOL
20 KiB
Markdown
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: robossembler-framework
title: Фреймворк Робосборщик
---
Фреймворк Робосборщик (Robossembler) представляет собой комплекс открытого ПО и предназначен для автоматизации сборки произвольных изделий роботами-манипуляторами. Идея проекта родилась из попыток решить задачу автоматизации сборки и отсутствия необходимых для этого инструментов и наборов данных. Фреймворк призван решить эту проблему путём предоставления широкому кругу специалистов инструмента, позволяющего создавать адаптированные для виртуальных сред 3D-модели образцов промышленной продукции, генерировать технологические карты сборки в удобном для автоматического планирования формате, производить симуляцию, использовать её для получения синтетических наборов данных (датасетов) и адаптировать данные решения к реальным производственным процессам. Планируемый функционал фреймворка снизит порог требований к квалификации и позволит широкому кругу исследователей поучаствовать во внедрении технологий ИИ в промышленность.
## Актуальность и востребованность
Многие, производственные предприятия не рассматривают применение роботов. Это происходит не столько по причине высокой стоимости самих роботов, сколько из-за высокой стоимости их программирования, внедрения и эксплуатации, которые, по данным проекта [SMERobotics](papers/smerobotics), составляют около 63% от общего количество затрат на внедрение. При отсутствии широкого рынка сбыта высокие начальные затраты делают роботизацию нерентабельной для малого и среднего бизнеса.
Внедрению робототехники препятствует и сложность самих задач. Например, автоматизация сборки изделий требует компетенций в таких предметных областях как:
- Генерация последовательности сборки (assembly sequence generation)
- Распознавание объектов и их позиций (CV & AI)
- Координация роботов между собой (multi-robot manipulation)
- Планирование сборочных операций (task planning, general planning, AI planning)
- Сборка изделий манипуляторами (manipulation for assembly)
- Планирование движений (motion planning).
По каждому из этих направлений в научной литературе можно найти десятки разнообразных методов и алгоритмов, различное сочетание которых порождает бесконечное количество комбинаций для решения конкретных задач. R&D-компаний, которые могут предложить такой комплекс услуг и компетенций очень немного и стоимость их услуг может быть слишком высокой для отдельно взятого производственного предприятия.
## Способы решения
Виртуализация. Фреймворк позволит существенно сократить затраты на внедрение за счёт отладки программы преимущественно в виртуальной среде на базе открытого ПО. Он даст дизайнерам и разработчикам изделий возможность адаптировать их для автоматического производства ещё на этапе эскизного проектирования и облегчить наиболее трудоёмкий, долгий и дорогостоящий этап в жизненном цикле изделия - постановку на производство.
Декомпозиция. Сложная задача сборки изделия декомпозируется на множество небольших. Созданные из примитивов программы в виде еревьев Поведения (Behaviour Tree)_ могут быть переиспользованы для написания других подпрограмм (переиспользование конечных автоматов сложнее). Также это даёт гибкость - можно заменять как подпрограммы для отдельных навыков, так и программы, реализующие сложное поведение целиком. Это позволит предприятиям избежать контрактов с поставщиками сложных решений по типу "чёрный ящик". Для этого предлагается сформировать среду(информационную сеть), где можно было бы решать сложные робототехнические задачи децентрализовано - с помощью как физических, так и юридических лиц, специализирующихся на отдельных областях знаний, обмениваясь информационными артефактами (ассетами) своей работы внутри сети.
Применение фреймворка в научных исследованиях для проверки новых алгоритмов генерации последовательности сборки и машинного обучения сократит дистанцию между академическим сообществом и прикладным коммерческим производством.
## Новизна предлагаемых в инновационном проекте решений
- На данный момент в мире не существует открытой библиотеки для планирования последовательности сборки (assembly sequence planner, ASP), в которой были бы доступны разные алгоритмы вычислений. Первая новизна состоит в том, чтобы разработать данную библиотеку, сделать её удобной в использовании и интегрировать в системы управления роботами.
- Вторая новизна предлагаемого решения заключается в интеграции открытых стандартов и программных компонентов для решения сложной прикладной задачи, что может ускорить внедрение передовых исследований ИИ в актуальную производственную практику. Как правило, объектами исследований учёных становятся отдельные области - _генерация графа сборки, планирование движений, управление задачами, методы контроля, sim2real-трансфер, машинное обучение_. Однако для решения прикладных задач необходимо наличие и слаженное взаимодействие всех указанных методов, поэтому их интеграция в рамках фреймворка сделает доступным применение на производстве результатов новейших исследований.
- Третьей новизной является специальный модуль переключения сред восприятия в [реально-виртуальном континууме](https://en.wikipedia.org/wiki/Reality%E2%80%93virtuality_continuum). Возможность управлять уровнями восприятия сделает удобным постепенную адаптацию управляющих программ к физическому миру с возможностью доучиться в виртуальных и смешанных средах. Например, робот, прежде чем приступить к выполнению задачи в реальном мире, может внутри себя переключить уровень восприятия на один из двух виртуальных и отладить работу там. При этом сама управляющая программа работает одна и та же - она просто меняет поставщика данных о состоянии среды. Это существенно упрощает перенос ПО из виртуальных сред в реальность.
## Способы и методы решения поставленных задач
- Для извлечения информации о геометрии объекта будет использоваться API геометрического ядра OpenCascade или его обёрток (CadQuery, FreeCAD).
- Для разработки GUI (настройки экспорта моделей, привязка материалов, разметка геометрических моделей, позиций захвата, порядка сборки) будет использоваться интерфейс системы проектирования FreeCAD.
- Для генерации последовательности сборки предлагается разработать обобщённый API на языке высокого уровня и включить туда, как минимум, два алгоритма - основанного на информации из CAD и без неё. Также разработать инструкции по включению туда новых алгоритмов.
- Для обмена моделями или пакетами между разнородными системами предлагается использовать пакетный менеджер общего назначения nix или подобный ему, предлагающий декларативный способ задания алгоритма сборки и кеширование уже собранных пакетов, что существенно снизит затраты вычислительных мощностей на генерацию сцен.
- Для адаптации моделей к рендерингу и высокопроизводительной симуляции предлагается использовать Python API системы трёх-мерного моделирования Blender.
- Для обеспечения версионирования моделей, запуска процедуры сборки и контроля за её исполнением предлагается использовать самую распространённую в мире систему контроля версий git и систему непрерывной интеграции gitlab-ci.
- Система управления роботом и запуска алгоритмов исполнения заданий на базе фреймворков: общего назначения ROS2, планирования движений MoveIt2, планирования задач Plansys2.
## Порядок работы фреймворка
- Автор изделия публикует CAD-модель с метаданными деталей и их свойств в системе контроля версий (STEP)
- Производство публикует описание своей автоматизированной производственной инфраструктуры (Scene format - SDF, USD, MJCF)
- Специалисты по генерации последовательности сборки формируют граф сборки на базе информации из CAD модели
- Специалисты по планированию (AI Planning) на базе модели производства и графа сборки могут подобрать оптимальный план сборки (PDDL plan или Behaviour Tree)
- Специалист-робототехник декомпозирует задачи из плана на конкретные навыки (skills - detect/pose_estimate/move/align/grasp), формирует запрос на решающие эти задачи и отсутствующие у него подпрограммы (подпрограммы - узлы Дерева Поведения)
- Специалисты по multi-robot, assembly/motion planning и CV формируют предложение по каждой конкретной операции - робот получает недостающие подпрограммы и производит тестирование сборки, давая обратную связь разработчикам, чтобы те скорректировали подпрограммы, созданные в симуляции.
## Текущий прогресс
На данный момент подобраны, изучены и проверены указанные в способах реализации открытые библиотеки для решения задач с планированием задач и движений. Частично реализованы экспорт моделей в формате SDF из свободной CAD-системы FreeCAD для включения в симулятор Gazebo, разметка позиций захвата, интеграция планировщика движений и планировщика задач.
- Проведены обширные исследования научных публикаций и проектов открытого ПО по теме
- [Обзор новейших публикаций по планированию последовательности сборки](technologies/ASP-overview)
- [Исследование проектов конкурса промышленной роботизированной сборки в 2021 году](technologies/wrs2020-assembly-challenge)
- [Обзор исследований в области машинного обучения в робототехнике](technologies/machine-learning-in-robotics)
- Разработан прототип системы. Исходные коды опубликованы в публичном репозитории [robossembler-ros2](https://gitlab.com/robossembler/robossembler-ros2)
- Доступны [видео-демонстрация](https://www.youtube.com/watch?v=J3m5hXf-cro) работы прототипа системы и [видео-презентация](https://www.youtube.com/watch?v=AFROcGW73j0&t=574s) её архитектуры.
## Конкурентные преимущества
- Создание сообщества вокруг разработки библиотеки
- Использование только свободные библиотек, форматов и стандартов, независимость от импортного проприетарного ПО
- Накопление библиотеки 3D-моделей и программ сборки для роботов-манипуляторов
- Формирование общедоступных датасетов для обучения роботов-манипуляторов
- Использование ИИ для автоматической генерации программ сборки для роботов-манипуляторов
- Применение разнообразных комбинаций алгоритмов генерации, планирования, обучения с подкреплением для повышения производительности.
- Освобождение потенциальных пользователей из малого и среднего бизнеса от необходимости интегрировать в свои бизнес-процессы громоздкие и дорогостоящие PLM-системы.
## Аналоги
[ConnTact](https://github.com/swri-robotics/ConnTact). Создан при поддержке Национального института стандартов и технологий США (NIST). Этому фреймворку присущи следующие недостатки:
- Акцент на контактных операциях, что существенно ограничивает спектр его применения для прикладных задач
- Поддерживаются только роботы с датчиками силы, нет других источников обратной связи в роботизированной системе
- Не имеет инструментов интеграции с CAD-системами и системами планирования. Последовательность сборки задаётся вручную
- Не поддерживает ROS2
- Не поддерживает алгоритмы машинного обучения.
__AutoAssembly__. Разрабатывается командой робототехников из компании Arrival, известного производителя электромобилей с R&D командой из Санкт-Петербурга. Фреймворк предназначен для автоматической роботизированной сборки напрямую из CAD. В научной публикации с описанием фреймворка представлена практическая реализация на примере двух манипуляторов Universal Robotics. Исходный код проекта не публикуется; многие технические решения (спецификации, схемы данных, описания языков, тип базы данных) неизвестны. Более подробный обзор см. по [ссылке](docs/papers/auto-assembly).