Robossembler - Открытая робототехника
442 subscribers
22 photos
3 videos
1 file
163 links
Ваш персональный фронтир в борьбе роботов за лучшее будущее для кожаных мешков. Open Source Robotics и всё такое. По вопросам сотрудничества пишите @brylev, наш сайт robossembler.org
Download Telegram
Прелести сборки современных индустриальных манипуляторов

Вашему вниманию предоставляю медитативное time-lapse видео от отечественной инженерной фирмы с процессом сборки сварочного робота. Ручная работа как она есть. Безнадёга.

Но ребята прикольные. Разработали и сделали свою модель робота. Уважение!

#assembly #manual #welding #robot

https://www.youtube.com/watch?v=hTNMBZWPmCI
Что можно тут отметить важного для Робосборщика:
1. Подход с использованием одного захвата и нескольких инструментов без стыковочного инструмента достоин рассмотрения. Пока мы идём по линии "удешевить системы замены приспособлений"
2. Камер много не бывает. Если научиться правильно с ними обращаться, то сборка становится много проще. Монтаж камеры на запястье не является проблемой в их сценарии.
3. Запрос на автоматическую генерацию последовательности сборки есть и он существенно облегчит жизнь.
4. Дизайн устройств имеет очень большое значение для проверки промежуточных состояний. То есть, подкорректировав дизайн собираемого изделий, можно существенно упростить сборку и контроль качества.
5. Механические захваты при правильном их использовании могут покрывать большой класс задач.

#moveit #ros #assembly #automation
https://www.youtube.com/watch?v=IvNXsCIR1p8
Разбор проекта от команды o2ac

Недавно я делал обзор презентации Felix von Drigalski и его опыте в использовании ROS/MoveIt в Assembly Challenge'21 на World Robot Summit. Чуть позднее был опубликован исходный код этого решения.

Наш робототехник Илья опубликовал подробный анализ этого проекта. Статья содержит детальное описание всех использованных пакетов ROS, спецификации сообщений/топиков/сервисов/действий, принципы работы и многое другое. Описание даёт представление о том каким образом на данный момент решаются задачи автоматизации сложных сборочных операций с использованием открытого ПО.

Стоит отметить, что в проекте используется первая версия ROS, тогда как в Робосборщике мы будем опираться на ROS2, как более приспособленное для промышленности решение.

#ros #assembly #example
https://robosphere.gitlab.io/robossembler-docs/docs/technologies/o2ac-repo-review/
Проблемы, с которыми столкнулась команда калифорнийского университета, выполняя Assembly Challenge

Hardware

- При проектировании аппаратного обеспечения не учитывалось распределение нагрузки между USB-контроллерами. Из-за перегрузки оборудования (слишком много камер на одном контроллере) наблюдались частые сбои драйверов для камер. Эта проблема также перешла на захваты, которые находились на том же контроллере, что и камера. Исправлено путем подключения камер к различным USB-контроллерам и захватам к третьей шине компьютера.
- Помехи между протоколами/кабелями USB-2 и USB-3 приводили к частым сбоям драйверов как для камер, так и для захватов. Исправлено с помощью удлинителей USB 3.0.
- Проблемы с отключениями механических захватов. Несмотря на то, что захваты были на другом USB-контроллере, всё равно приходилось время от времени перезапускать захваты с помощью watchdog.
- Сбой связи с манипуляторами. Протокол для связи ROS и UR5e имеет случайные сбои и требовал перезапуска. Это было обнаружено в логах.
- Колебательное поведение робота при включении контроллера соответствия. Потребовались месяцы, прежде чем они определили первопричину: точка доступа Wi-Fi поблизости вызвала шум датчика силы и крутящего момента робота.

Software

- Контроллеры ROS не запускались. Было исправлено путем отслеживания списка активных контроллеров и перезапуска вышедших из строя контроллеров.
- Планировщики стохастического движения иногда падали, даже если существовал выполнимый план. Решалось простым перепланированием.
- Состояние гонки по описанию робота (описание робота не загружено на сервер параметров ROS до того, как это потребуется Контролеру соответствия - compliance controller из ros_control). Исправлено путем добавления 5-секундной задержки перед запуском контроллера соответствия.

Выводы делаем сами. Схема установки приведена ниже.

#assembly #challenge #issues
​​ConnTact Assembly Framework

Southwest Research Institute (SWRI) и National Institute of Standards and Technology (NIST) анонсировали в октябре программный фреймворк ConnTact (Connect + Tactile) для гибкой разработки приложений роботизированной сборки. О чем мы узнали из поста в блоге ROS-Industrial.

Авторы инициативы обращают внимание на высокую сложность задач, связанных с прикосновением друг к другу объектов в ходе сборки. Эти операции крайне тяжело поддаются моделированию из-за сложности управления силой / крутящим моментом и нехватки информации о свойствах поверхностей твёрдых тел. В добавок ко всему, требуется точная модель положения детали, ошибки в оценки которого могут быть фатальны для изделия. То, что делается руками человека без каких-либо затруднений, для робота часто является архисложной задачей. С целью преодолеть эти ограничения авторы предложили подключить к исследованиям в области robotics assembly более широкие слои разработчиков за счёт создания унифицированной архитектуры приложений для роботов, выполняющих подобные задачи.

Основная идея фреймворка в простой унифицированной архитектуре и заложенных в ней интерфейсах, которые позволят любому роботу с датчиком силы использовать любые алгоритмы.

Схема работы(см. приложенное к посту изображение). Пользователь предоставляет фреймворку к информацию о параметрах задачи и дополнительных настройках (User Configuration), а Robot Controller (узел ROS, управляющий манипулятором) передаёт состояние приспособлений и данные с датчиков F/T (Force/Torque). ConnTact преобразует эти данные с помощью стандартных блоков алгоритмов в конечные автоматы и через Output Interface отправляет команды на исполнение движений (Motion Execution). Также фреймворк обеспечивает обратную связь о работе алгоритмов через блок логгирования, аналитики и визуализации.

Главные преимущества фреймворка (по мнению авторов):
Генерализация. Фреймворк старается обобщить алгоритмы для различных положений и задач. Это достигается с помощью преобразования всех входных данных - позиции робота, силы и момента - в пространство задач.
» Очень перспективное направление, которое может быть скомбинировано с Federated Learning подходом для децентрализованного обучения роботов.
Визуализация. Набор библиотек для отображения графиков позволяет отслеживать состояние во время выполнения задач.
Модульность. За счёт использования конечных автоматов.
» Сомнительный плюс; разработчики роботов в своё время стали использовать Деревья поведения вместо конечных автоматов как раз по причине их лучшей модульности; но это можно пересмотреть).

На данный момент реализованы следующие программные модули:
- Движение в линейном направлении до обнаружения плоской поверхности.
- Поиск по спирали на поверхности низкой точки, например, короткого замыкания разъема в гнездо.
- Подвижное движение в заданном направлении до столкновения с жестким препятствием.
- Зондирование в разных направлениях для определения мест жестких ограничений.

Фреймворк активно разрабатывается. Документации нет.
Подход идеологически очень близкий Робосборщику, поэтому будем следить за обновлениями.

#assembly #framework #swri
​​О Робосборщике задумывались ещё в 1996 году!
Картинка из научной публикации Rohrdanz, F., Mosemann, H., & Wahl, F. M. (n.d.). High-LAP: a high level system for generating, representing, and evaluating assembly sequences.

#highlap #assembly #sequence
​​RBG-only оценка позиции

Камера глубины необязательна, если Вам заранее известны модели манипулируемых объектов. К такому выводу пришли авторы исследования 6D Robotic Assembly Based on RGB-only Object Pose Estimation, в котором продемонстрировали работу системы автоматизированной сборки на базе 2D object detection/pose estimation. Пройдёмся и по этой публикации.

Датасеты для обучения агентов машинного зрения формировались с помощью BlenderProc, процедурного конвейера для генерации фотореалистичных изображений с помощью Blender API. Необходимая в такого рода задачах рандомизация обеспечивалась заменой текстур из библиотеки CC0 Textures library. В качестве движка физики использовался PyBullet. Порядок сборки задавался вручную.

Всего было обучено две нейросети - отдельно для обнаружения объектов по 2D-изображению (YOLOv4) и отдельно для 6D оценки позиции каждого объекта (GDR-Net). Алгоритм сначала определяет регионы отдельных изображений по общей фотографии, после чего подаёт увеличенные фрагменты изображений требуемых деталей в 6D Pose Estimation сеть с помощью Dynamic Zoom-In (DZI). На AMD Ryzen 7 5800 и NVIDIA RTX 3090 задача определения позиций по изображению 640 × 480 заняла 45 мс для восьми объектов, включая 21 мс для обнаружения.

Для каждого объекта генерировались 36 поз захвата (grasp candidates), после чего, используя заранее известные положения объектов, определялись столкновения между захватом и сборкой с помощью Flexible Collision Library (FCL), чтобы исключить неосуществимые позиции захвата. Чтобы облегчить перенос детали в подсборку применялся метод т.н. 6D pose Transformation - деталь перехватывалась таким образом, чтобы снизить погрешность при сборке. Для обеспечения однозначности позиционирования детали в захвате применялась калибровка захватом по трём осям. (см. картинку). Без калибровки даже на примитивных сборках 13 из 15 действий заканчивались неудачей. С калибровкой средний показатель успешного завершения шага сборки составил около 86.7%. Экспериментальные результаты показали, что система способна надежно собирать простые блоки с допусками в 1 мм.

#assembly #cv #blender
​​Auto-Assembly

https://arxiv.org/pdf/2301.02643.pdf

Команда робототехников из компании Arrival (известный разработчик и производитель электромобилей с R&D командой из Петербурга) разработала фреймворк для автоматической роботизированной сборки напрямую из CAD и практическую его реализацию на примере двух манипуляторов Universal Robotics.

Auto-Assembly включает в себя два этапа:

1. Генерация артефактов (Artifacts generation). Состоит из следующих этапов
- Анализ конструкции (design analysis). Из CAD экспортируется два дизайн-файла:
а) Детали целевой сборки и их соединения (joints). Крепёжные детали помечаются специальными ярлыками.
б) Та же сборка уже с позициями захватных устройств, приспособлений, кондукторов. В работе используется Fusion API (при этом говорится о CAD-agnostic; наверное, подразумевается, что все другие CAD'ы это API поддерживают). Из этой сборки экспортируется информация о позициях захватных устройств, кондукторов и отвёрток (с их типами) относительно деталей, которые они удерживают и помещается в Tooling Database.
- Генерация последовательности сборки (assembly sequence generation):
а) Генерация матрицы смежности
б) Генерация последовательности на базе матрицы
в) Вычисление геометрической осуществимости по модели сборки
В работе используется подход из работы 2012 года - Assembly planning with automated retrieval of assembly sequences from CAD model information
- Генерация спецификации процесса сборки (bill-of-process, BOP). Сначала описание роботизированной ячейки передаётся одновременно как в симулятор, так и в рантайм. Потом происходит сверка заданий на сборку и имеющимся в сцене инструментарием. Если нет подходящих инструментов, то задание не выполняется. Каждая последовательность сборки проходит проверку на согласованность с моделью роботизированной ячейкой, в результате чего формируется валидный bill-of-process, BOP
- Преобразование BOP в управляющий программный код - PL-script, который исполняется сначала в симуляторе, а потом и в runtime.

2. Развёртывание (Deploy). Реализует исполнение кода для сборки даталей в физической среде. Ключевым компонентом в этой части является высокоуровневый язык описания процессов (Process language, PL), где описаны функции для взаимодействия с различными сервисами в runtime:
- Motion Planner - осуществляет планирование траекторий движения
- Robot Controller - управление роботом на низком уровне (уровень звеньев и углов поворота)
- Jig Controller - возвращает позицию детали относительно позиции кондуктора или приспособления для захвата
- Assembly Service - предоставляет информацию о крепеже и итоговые позиции деталей относительно начала координат робоячейки
Transform Service - сервис, возвращающий позицию любого объекта в внутри робоячейки относительно любых других объектов в ней.
3D Simulator - загружает объекты в из описания робоячейки и визуализирует её состояние
Database and Message Bus - шина данных для публикации JSON сообщений и хранилище публикация и их хранилище.
Взаимодействие осуществляется в соответствии со входящей в фреймворк схемой данных Factory Control Model (FCM).

Нечто подобное мы делаем в проекте Robossembler Framework, опираясь на общедоступные проекты с открытым исходным кодом. В статье, к сожалению, не упоминаются конкретные инструменты, поэтому сложно сделать вывод о том насколько совпадают наши технические решения.

#assembly #framework #cad