robossembler.org/docs/robossembler-overview.md
2022-10-23 16:07:13 +03:00

58 lines
No EOL
12 KiB
Markdown
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.

---
title: Обзор проекта
slug: /
---
Цель проекта - создание ___симуляции___ автономной производственной линии, где роботы-манипуляторы собирают свои копии, осуществляют их наладку и ввод в эксплуатацию, чем достигается частичное самовоспроизводство. Проектирование _изначально автономной_ производственной системы позволит использовать материалы, технологии и условия эксплуатации, недопустимые для классических промышленных систем.
## Аппаратные компоненты
### Роботы-манипуляторы
Роботы-манипуляторы Robossembler со сменными инструментами покрывают большой класс производственных задач. Они проектируются для автономной сборки и эксплуатации, поэтому к ним не предъявляются характерные для коллаборативных роботов требования безопасности, эстетичности и быстродействия.
В проекте разрабатываются два варианта исполнения манипулятора:
- [Манипулятор](https://gitlab.com/robossembler/roboarm) с 6-ю степенями свободы для изготовления с помощью литья в [прессформе](https://gitlab.com/robossembler/cnc/roboarm-link-mold). Звено данного манипулятора состоит из двух оригинальных [сервоприводов](https://gitlab.com/robossembler/servo) и производится методом заливки компаундом, перестановкой оснастки на позицию будущего звена и дальнейшей закладкой приводов и кабелей. Данное технологические решение позволяет избавиться от крепёжных, кабельных и ременных соединений, а также необходимости отдельно производить корпус. Материал компаунда подбирается таким образом, чтобы обеспечить оптимальный теплоотвод, дешевизну, удобную утилизацию и повторную переработку компонентов манипулятора. Типы компаунда могут варьироваться в зависимости от нагрузок на конкретные разновидности звеньев.
- [Манипулятор](https://gitlab.com/robossembler/roboarm-diy-version) с 6-ю степенями свободы для изготовления с помощью 3D-печати. Все детали манипулятора, кроме электрических плат, проводов и катушек индуктивности, изготавливаются с помощью технологии трёхмерной печати, но могут и отливаться в прессформах. Конструкция манипулятора адаптирована для автономной автоматической сборки.
### Приспособления для манипуляторов
Все приспособления монтируются к манипулятору через [стыковочный интерфейс](https://gitlab.com/robossembler/arm-tools/connection-tool). Для смены и хранения двух и более приспособлений используется [Библиотека приспособлений](https://gitlab.com/robossembler/arm-tools/tools-library), к которой в дальнейшем будут присоединяться узлы подачи материалов.
Полный перечень приспособлений
- [Механический захват](https://gitlab.com/robossembler/arm-tools/grip-tool)
- [3D-печать](https://gitlab.com/robossembler/arm-tools/3d-print-tool)
- [Подача компаунда](https://gitlab.com/robossembler/arm-tools/extrude-melt-tool)
- [Пайка](https://gitlab.com/robossembler/arm-tools/soldering-tool) с [картриджем](https://gitlab.com/robossembler/arm-tools/solder-cartridge)
- [Сварка](https://gitlab.com/robossembler/arm-tools/welding-tool)
- [Фрезерная и пост-обработка](https://gitlab.com/robossembler/arm-tools/post-processing-tool)
- [Сканирование и съёмка](https://gitlab.com/robossembler/arm-tools/scan-tool)
Рабочий стол и подключённые к нему манипуляторы с приспособлениями формируют Автоматизированное рабочее место (АРМ), которое может быть объединено с другими рабочими местами, формируя сложные производственные комплексы. Конфигурация конкретного АРМ формируется исходя из требований к производственному процессу.
### Оборудование для формирования модульных рабочих пространств
- [Шестигранные рабочие столы](https://gitlab.com/robossembler/cnc/roboarm-workspace). Роботы-манипуляторы оснащаются рабочими столами - местами, где будет осуществляться сборка и другие технологические операции. Рабочий стол имеет форму пчелиной соты и содержит в себе вычислительный узел для управления рабочим местом. Столы предполагают:
- Легкое подключение к ним манипуляторов с помощью специальных надёжных электрических разъемов
- Электропитание и управление - рабочий стол будет включать в себя систему управления для всех подключаемых к нему манипуляторов
- Подключение к себе других рабочих столов для создания связанной локальной сети и производственной линии
- Подключение к рабочим столам [транспортных модулей](https://gitlab.com/robossembler/transport-module) для превращения их в передвижные платформы.
- [Модульный каркас для роботизированных ячеек](https://gitlab.com/robossembler/cnc/cubic-modular-workspace). Состоит из компонентов двух типов:
- *Пластины* служат стыковочным интерфейсом для подключения роботов манипуляторов и их приспособлений. Также в них могут размещаться компоненты встраиваемой электроники для управления подключаемым оборудованием.
- *Стойки* обеспечивают электрическое соединение между пластинами для передачи электронергии и управляющих сигналов. Модульная архитектура каркаса позволяет собирать разноообразные роботизированные ячейки под нужды технологического процесса и объединять их в производственные линии.
## Программные компоненты
Все программные компоненты в совокупности составляют собой *фреймворк* для симуляции и отладки алгоритмов сборки сложных многосоставных изделий манипуляторами.
- [ARBench](https://gitlab.com/robossembler/forks/ARBench) - плагин для *FreeCAD*. Основные функции:
- разметка CAD моделей изделий - геометрические фреймы, позиции захвата, материалы
- парсинг моделей сборок CAD и представление их в виде моделей отдельных деталей и мета-информации об их взаимном расположении (матрица смежности или подобное представление)
- преобразование моделей в последовательность сборки (*Assembly Sequence, AS*) с помощью *Assembly Sequence Planner*
- формирование спецификации задачи в формате *Planning Domain Definition Language (PDDL)*
- экспорт деталей и подсборок в виде пакетов формата *Simulation Description Format (SDF)* для загрузки в симулятор *Gazebo*
* [Robossembler](https://gitlab.com/robossembler/robossembler-ros2) - набор пакетов для *ROS2*. Основные функции:
- отслеживание событий в блокчейне *Robonomics* с помощью python-библиотеки *robonomics-interface*
- загрузка данных из сети IPFS с помощью python-библиотеки *ipfshttpclient*
- формирование плана исполнения (*Task Plan, TP*) в соответствии со спецификациями предметной области (*domain*) и задачи (*problem*) на языке PDDL
- преобразование узлов TP в деревья поведения (*Behaviour Trees, BT*) с помощью *ROS2 Planning System*
- преобразование узлов BT в управляющие программы планировщика движений (*Motion Planning, MP*) с помощью *MoveIt2*
Фреймворк позволяет изменять различные реализации алгоритмов для каждого из модулей. Например, существует несколько алгоритмов ASP и мы заранее не знаем какой из них будет наиболее эффективен для решения нашей задачи. Поэтому в фреймворке можно будет подключить разные ASP-алгоритмы и провести с ними симуляции. Те же рассуждения можно сделать и относительно других модулей фреймворка. То есть пользователь фреймворка будет выбирать AS/BT/MP алгоритмы.
Похожий подход был применён во фреймворке *gym-ignition*, целью которого было предоставление возможности пользователям создавать множественные воспроизводимые виртуальные среды для проведения симуляций и отладки Reinforcement Learning алгоритмов. Благодаря архитектуре *Entity-Component-System*, в фреймворке была реализована возможность заменять движки физики и рендеринга. При этом gym-ignition не ограничивает пользователя в отношении выбора методов решения задач, а лишь предоставляет API для взаимодейсвия с *Ignition Gazebo*.