Merge branch 'master' into 'dosc-programming'
# Conflicts: # sidebars.js
1
.gitignore
vendored
|
@ -14,6 +14,7 @@
|
|||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.vs
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
|
|
|
@ -1,19 +1,25 @@
|
|||
image: node:latest
|
||||
image: node:15.12-alpine3.13
|
||||
|
||||
# allow caching for faster deployment
|
||||
cache:
|
||||
paths:
|
||||
- node_modules/
|
||||
- public/
|
||||
- .cache/
|
||||
stages:
|
||||
- test
|
||||
- deploy
|
||||
|
||||
test:
|
||||
stage: test
|
||||
script:
|
||||
- yarn install
|
||||
- yarn build
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
|
||||
|
||||
pages:
|
||||
stage: deploy
|
||||
script:
|
||||
- yarn install
|
||||
- yarn build:gitlab
|
||||
- yarn install
|
||||
- yarn build
|
||||
- mv ./build public
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
only:
|
||||
- master
|
||||
paths:
|
||||
- public
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
BIN
.vs/slnx.sqlite
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
id: autostorage
|
||||
title: Автоматическое хранение и транспортировка объектов
|
||||
title: Хранение и транспортировка
|
||||
---
|
||||
Храниться объекты АПС должны так, чтобы на них не попадала не летела, скажем, пыль и стружка. Транспортироваться все объекты должны удобным стандартным образом, чтобы не решать каждый раз эту задачу. Этому служит инфраструктура (транспортно-складская). Вот пример варианта минималистичной инфраструктуры:
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
id: information_support
|
||||
title: Информационное обеспечение автоматического производства
|
||||
title: Информационное обеспечение
|
||||
---
|
||||
|
||||
В полностью автоматических производственных системах важную роль играют информационные процессы, связанные с разработкой и конструированием изделий, технологической подготовкой и планированием их производства, непосредственным управлением исполнительными устройствами, сбором информации от сенсоров, реагированием на возникающие нештатные и аварийные ситуации, взаимодействием с пользователями и внешней средой.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
---
|
||||
id: planner
|
||||
title: Планировщик
|
||||
title: Планирование
|
||||
---
|
||||
|
||||
Планировщик управляет всеми операциями в своем кластере АПС. У него есть глобальный идентификатор, который присваивается ему при производстве. А каждый объект созданный или импортированный извне под управлением данного планировщика получает свой локальный идентификатор. Таким образом, каждый объект получает полностью уникальный идентификатор, состоящий из двух частей.
|
||||
Планировщик (planner) управляет всеми операциями в своем кластере АПС. У него есть глобальный идентификатор, который присваивается ему при производстве. А каждый объект созданный или импортированный извне под управлением данного планировщика получает свой локальный идентификатор. Таким образом, каждый объект получает полностью уникальный идентификатор, состоящий из двух частей.
|
||||
|
||||
При производстве планировщика происходит еще некоторый криптографический процесс, в результате которого материнский и дочерний планировщики получают набор пар идентичных криптографических ключей без необходимости обмена ими по каким бы то ни было каналам передачи данных. Это позволяет им в будущем использовать аутентификацию с закрытым ключом для связи между собой.
|
||||
|
||||
|
|
|
@ -1,419 +0,0 @@
|
|||
---
|
||||
id: techinstruction
|
||||
title: 'Технологическая инструкция по сборке'
|
||||
---
|
||||
|
||||
## Компоненты системы
|
||||
|
||||
### Робот манипулятор
|
||||
Сейчас существуют два варианта исполнения манипулятора:
|
||||
- [Манипулятор для изготовления с помощью литья в прессформе](https://gitlab.com/robosphere/roboarm). 6DoF. Звено манипулятора состоит из двух оригинальных [сервоприводов](https://gitlab.com/robosphere/servo); производятся методом заливки корпуса, его застыванием, перестановкой оснастки на позицию будущего звена и дальнейшей закладкой приводов и кабелей. Главный конструктор [StasjokSS](https://gitlab.com/StasjokSS).
|
||||
- [Манипулятор для изготовления с помощью 3D-печати](https://gitlab.com/robosphere/roboarm-diy-version). 6DoF. Главный конструктор [AlexxTop](https://gitlab.com/AlexxTop).
|
||||
|
||||
### Рабочий стол
|
||||
Ключевой элемент АРМ и его основная управляющая единица. Содержит в себе вычислительный узел. Имеет форму пчелиной соты и 6 пилонов по граням.
|
||||
- [Рабочий стол для манипуляторов и транспортных модулей](https://gitlab.com/robosphere/cnc/roboarm-workspace).
|
||||
|
||||
### Приспособления манипулятора
|
||||
Все приспособления монтируются к манипулятору через [стыковочный интерфейс](https://gitlab.com/robosphere/arm-tools/connection-tool). Модуль стыковки имеет выводы для управления инструментом по CAN/RS485 шине и выводы питания инструмента на торце. В середине торца, по оси мотора имеется подвижный (втягиваемый) штырь для фиксации инструментов на Роботе-манипуляторе и специальный рельеф для центровки инструмента при фиксации.
|
||||
|
||||
Для хранения двух и более приспособлений, а также их смены, используется [Библиотека приспособлений](https://gitlab.com/robosphere/arm-tools/tools-library), к которой в дальнейшем будут присоединяться узлы подачи материала.
|
||||
|
||||
Полный перечень репозиториев с приспособлениями манипулятора
|
||||
- [Механический захват](https://gitlab.com/robosphere/arm-tools/grip-tool)
|
||||
- [3D-печать](https://gitlab.com/robosphere/arm-tools/3d-print-tool)
|
||||
- [Подача компаунда](https://gitlab.com/robosphere/arm-tools/extrude-melt-tool)
|
||||
- [Пайка](https://gitlab.com/robosphere/arm-tools/soldering-tool) с [картриджем](https://gitlab.com/robosphere/arm-tools/solder-cartridge)
|
||||
- [Сварка](https://gitlab.com/robosphere/arm-tools/welding-tool)
|
||||
- [Фрезерная и пост-обработка](https://gitlab.com/robosphere/arm-tools/post-processing-tool)
|
||||
- [Сканирование и съёмка](https://gitlab.com/robosphere/arm-tools/scan-tool)
|
||||
|
||||
|
||||
### Автоматизированное рабочее место (АРМ)
|
||||
Рабочий стол и манипуляторы с приспособлениями формируют Автоматизированное рабочее место (АРМ), которое может быть объединено с другими рабочими местами, формируя сложные производственные комплексы.
|
||||
|
||||
|
||||
### Кабели
|
||||
|
||||
Объёмные или плоскостные структуры из одножильной проволоки. Проволока выбирается сварочной легированной и омеднённой сталью, поставляется рулонами. Также это может быть сложная 3D деталь — слабопроводящий пластик напечатанный с растворимой поддержкой и нерастворимым каркасом. Потом гальванически обращенный медью, никелем, оловом до нужной толщины. Лишний пластик можно отжечь, но на малых токах медь и так осаждается в неплохой проводник. В целом, технология гальванпластики очень хорошо совместима с 3д печатью. Так осаждают и железо (я сам немножко пробовал), оно получается твердым, царапает обычное железо. Это, конечно, не из-за углерода, которого там нет, а из-за водорода. Обычно это считается недостатком и процесс ведут либо на малом токе, либо потом отжигают продукт примерно при 400С. Тогда водород уходит и железо получается столь мягким,что в I мировую войну им заменяли дефицитную медь для поясков снарядов.
|
||||
Корпус - отвердевший компаунд, связавший собой исполнительные механизмы, приводы, основания. Несёт на себе защитные и конструктивные функции. Может иметь внешнюю оболочку напечатанной из полимеров, или не иметь её и быть просто пористым прочным телом, для повышения прочности пористое тело пропитывается сверхтекучими полимерами. Корпус и кабели входят в состав звена.
|
||||
|
||||
### Компаунд
|
||||
|
||||
Смесь реактивов, отвердевающих(отвердевших) до состояния пористого, лёгкого, твёрдого и прочного материала. Предположительно жидкое стекло + кальций и вспенивающий реагент, + волоконные наполнитель + полимерный упрочнитель (до 50% общей массы)
|
||||
|
||||
### Основание
|
||||
Основание робота - основание, на котором монтируются звенья Робота-манипулятора.
|
||||
В состав входят:
|
||||
* корпус - рамка, в которую заливается компаунд (изготавливается с помощью 3D-печати)
|
||||
* разъёмы
|
||||
* замок (металлическая скоба с отверстиями под штифты)
|
||||
* плата разводящая (на разъёмах)
|
||||
* плата управления
|
||||
* арматура
|
||||
* кабели
|
||||
* фиксирующий компаунд.
|
||||
|
||||
### Пилон
|
||||
Пилон - комплекс, состоящий из 2х разъёмов(вход/выход) и металлического замка в одном корпусе, применяется для пристыковывания к пилонам других основных элементов АРМ (Рабочий стол, Робот-манипулятор, Адаптер станков) и надёжной их взаимной фиксации в связке пилон-пилон, не снимаемый, обязательный.
|
||||
|
||||
### Привод
|
||||
Серво моторредуктор с динамометром. Корпус из двух вращаемых половин. Корпус имеет насечки для охлажения и более качественного сцепления с компаундом, так же имеет штыревые выходы CAN шины для пристыковывания к другим приводам и выводы электропитания. Выводы впоследствии могут быть припаяны к кабелям.
|
||||
|
||||
### Тележка
|
||||
Грузовой сверхманевренный робот с 4мя пилонами (перед и зад) и 2мя сверху для фиксации (и смены) Робот-манипулятор, имеет мелкий кузов, 2 АКБ высокой ёмкости, доступных для снятия и замены, модульное СМ шасси, и набором сменных инструментов(захватов). Масса тележки может находиться в пределах от 20 до 40 кг.
|
||||
|
||||
### Электрощуп
|
||||
Стальной стержень, имеющий электрическую связь с автоматизированным рабочим местом и дополнительный нагреватель на конце. Оснастка должна иметь зону для очистки от наплавленного пластика.
|
||||
|
||||
## Рассматриваемые технологии
|
||||
|
||||
1. Проволока: крайне проста в обращении, имеет достаточную жёсткость и неплохую проводимость, высокую скорость производства изделий з неё. Технология проста в реализации. Потребность в оборудовании: проволокогибочный станок, или сварочный модуль + кулачковый захват и собственно расходную проволоку.
|
||||
2. Гальванопластика: позволяет утилизировать металлолом и вышедшие из строя части фабрики, превращая их в осмысленные детали, либо заготовки заданной формы. Имеет низкую скорость производства для получения оптимального сопротивления, требует больший спектр оборудования (пластик проводящий+непроводящий, электролизную ванну с расходными материалами, промывочный модуль/ванну)
|
||||
|
||||
|
||||
## Сборка робота
|
||||
|
||||
### Подготовка основания робота
|
||||
|
||||
#### 1. 3D печать оснастки литья основания
|
||||
|
||||
Применяется: Рабочий стол, Робот-манипулятор + модуль печатающий
|
||||
|
||||
Обоснование: Для печати достаточно 1 Робот-манипулятор, но далее придётся вставлять замок для крепления основания рабочего стола к АРМ, и разъёмы, при этом не двигая оснастку, потому процесс печати будет кратковременно прерван
|
||||
|
||||
Процесс: Работа по управляющей программе
|
||||
|
||||
#### 2. Вставка замков и разъёмов в оснастку
|
||||
|
||||
Применяется: Рабочий стол, Робот-манипулятор + модуль печатающий(п.1), Робот-манипулятор + захват механический
|
||||
|
||||
Процесс: Робот-манипулятор №1 становится на паузу, пока Робот-манипулятор №2 устанавливает в недопечатанную оснастку конструктивные элементы пилона: 2 разъёма и алюминиевую скобу замка.
|
||||
|
||||
Когда все элементы вставлены Робот-манипулятор №1 продолжает свою работу.
|
||||
|
||||
#### 3. Допечатывание оснастки со вставками
|
||||
|
||||
Применяется: Рабочий стол, Робот-манипулятор + модуль печатающий
|
||||
|
||||
Обоснование: Фиксация и дополнительное усиление вставленных элементов, дополнительное заполнение зазоров
|
||||
|
||||
Процесс: Частично напечатанная оснастка с вставленными элементами пилона допечатывается, а элементы пилона фиксируется экструдируемым полимером для дополнительной фиксации и приобретения жёсткости.
|
||||
|
||||
В этом процессе всё так же участвует только 1 робот(Робот-манипулятор1) с 1й печатающей головкой(модуль печатающий), печать происходит на Рабочий стол (Рабочем столе)
|
||||
|
||||
#### 4. Формование проволочной арматуры
|
||||
|
||||
- **ВАРИАНТ1**
|
||||
|
||||
Применяется: Робот-манипулятор + захват механический, Робот-манипулятор +сварочный модуль, Расходный материал: Вначале приложенная медная сварочная проволока, в дальнейшем алюминиевая, произведённая на месте.
|
||||
|
||||
Обоснование: Робот с сварочный модуль подаёт проволоку нужной длины, робот партнёр гнёт проволоку согласно инструкции.
|
||||
|
||||
Процесс: Робот-манипулятор1 со сварочным модулем выкатывает проволоку, которую рядом стоящий Робот-манипулятор2 синхронно сгибает в нужнх местах для формования объёмных и плоскостных проволочных фигур
|
||||
|
||||
- **ВАРИАНТ2** (проволокогибочный станок)
|
||||
|
||||
Применяется: Адаптер станков + Робот-манипулятор + кулачковый захват, +модуль печатающий, проволокогибочный станок, производство вынесено в зону станков.
|
||||
|
||||
Обоснование: максимальная скорость производства, минимальные побочные затраты энергии и ресурсов.
|
||||
|
||||
Процесс: Проволока заготавливается проволокогибочным станком, обслуживающий Робот-манипулятор1 заполняет структуру и фиксирует проволоку с помощью пластика печатающего модуля
|
||||
|
||||
- **ВАРИАНТ3** (гальванопластика)
|
||||
|
||||
Применяется: (не известно)
|
||||
|
||||
Обоснование: (не известно)
|
||||
|
||||
Процесс: (не известно)
|
||||
|
||||
#### 5. Вставка в корпус арматуры и кабелей
|
||||
|
||||
Применяется: Робот-манипулятор + захват механический, Робот-манипулятор + модуль печатающий
|
||||
|
||||
Расходный материал: сформованная ранее стальная омеднённая проволока
|
||||
|
||||
Обоснование: Кабели нужны для питания и связи. Арматура нужна для фиксации всех элементов внутри корпуса, для повышения прочности внутренней конструкции, выступающие петлями части арматуры служат строповочными петлями, которые могут применяться другими роботами для перемещения основания робота, и так же могут использоваться как выносные контакты питания.
|
||||
|
||||
Процесс:
|
||||
|
||||
а) Робот-манипулятор2 располагает в корпусе "Основания робота" сформованную объёмную проволочную структуру, а Робот-манипулятор1 с МК точечно плавит расположенную структуру в местах касания с пластиковым корпусом для надёжной фиксации в пространстве.
|
||||
|
||||
б) Затем Робот-манипулятор2 после формования плоскостной проволочной структуры позиционирует получившийся кабель, Робот-манипулятор1 точечно приваривает кабель к контактам разъёмов и плат.
|
||||
|
||||
П1 и П2 чередуются для получения необходимой конфигурации конструктивных элементов и кабельных связей.
|
||||
|
||||
#### 6. Вставка в корпус электронных плат управления
|
||||
|
||||
Применяется: Робот-манипулятор + захват механический, выгруженные тележкой платы.
|
||||
|
||||
Обоснование: Просто взять с одного места и поставить в нужную позицию (одеть на кабели через отверстия). Ложе под плату напечатано и нерушимо.
|
||||
|
||||
Процесс: Взять со стопки, выгруженной тележкой, за скобы (должны быть на плате), перенести к оснастке и вертикально опустить на кабели с мелким круговым покачиванием. Спустя 2-3 секунды, когда все кабели зайдут в свои отверстия отпустить плату. плата должна упасть на спец напечатанные упоры. Если не упала полностью- додавить по кругу.
|
||||
|
||||
#### 7. Пайка элементов плат к кабелям и арматуре
|
||||
|
||||
Применяется: Робот-манипулятор + сварочный модуль, Робот-манипулятор + Щ, Расходный материал: проволока
|
||||
|
||||
Обоснование:
|
||||
|
||||
1 Робот-манипулятор - прогрев кабелей для проплавки припоя и электротестирование
|
||||
|
||||
2 Робот-манипулятор с металлическим щупом должен проверить качество электрического соединения
|
||||
|
||||
Процесс: На проволоку кабелей подать напряжение, контролировать температуру, не превышая 500\*С. Коснуться поочерёдно всех контактов. С выдержкой по времени. Электрическим щупом Робот-манипулятор2 проверяется качество пайки контактов на сопротивление и общую проводимость.
|
||||
|
||||
Электрическим щупом как паяльником(ибо тонкий) нужно прогревать определённые точки арматуры, в которых арматура касается напечатанной оснастки для вплавки в пластиковую основу.
|
||||
|
||||
Далее происходит высокотемпературная пайка арматуры к плате.
|
||||
|
||||
Распайка должна автоматически исключать возможность лишних замыканий арматуры на дорожках плат.
|
||||
|
||||
Не заменит ли лазерная сварка и это? Не пойдет ли тепло по хорошо проводящей медной проволоке и не поплавит 3д печатные детали, искажая геометрию?
|
||||
|
||||
#### 8. Одевание на плату привода
|
||||
|
||||
Применяется: 2 Робот-манипулятор + 2 захват механический + 1 Щ
|
||||
|
||||
Обоснование: Достаточно одного робота с механическим захватом, но второй робот рекомендовано может применяться для помощи в продавливании одеваемого на кабели привода
|
||||
|
||||
Процесс: Взять механическим захватом Робот-манипулятор1 привод, повернуть в нужное положение относительно основания и поднести в центр основания, чётко над штырями кабелей.
|
||||
|
||||
Начать опускание привода Робот-манипулятор1. Одевать на штыри с лёгким покачиванием (0,5мм диаметр круга покачивания по оси привода) При возникновении сопротивления, если привод не дошёл до нужной глубины - придавить Робот-манипулятор2 (чтоб привод не сорвался с мехзахвата)
|
||||
|
||||
Если привод оделся, или если он не оделся на кабели - провести электротестирование щупом Робот-манипулятор2.
|
||||
|
||||
Главный результат - надёжный электроконтакт.
|
||||
|
||||
#### 9. Заливка компаундом оснастки с приводом
|
||||
|
||||
Применяется: Робот-манипулятор + захват механический, Робот-манипулятор + модуль подачи компаунда, Расходный материал: компаунд
|
||||
|
||||
Процесс: Робот-манипулятор1 с приводом остаётся в своём положении, удерживая привод в нужной позиции. Робот-манипулятор2 сменяет электрощуп на модуль подачи компаунда и делает заливку компаундом в нескольких местах вокруг привода.
|
||||
|
||||
### Подготовка первого звена робота
|
||||
|
||||
#### 10. Создание литьевой формы
|
||||
|
||||
Применяются: 1 Робот-манипулятор + 1 модуль печатающий, расходный материал: АБС, обычная 3Dпечать, компаундооталкивающий состав.
|
||||
|
||||
Процесс: 3D печать 2х частей формы по управляющей программе. Количество деталей формы может быть увеличено до 3х основных формообразующих + 2 направляющих + 2 замка, чтоб роботам можно было проще(и качественнее) паять кабельные трассы. Затем робот при помощи МЗ и кисточки покрывает формообразующие поверхности вязким и клейким на первых порах составом(аналог - герметик)
|
||||
|
||||
#### 11. Подготовка оснастки литья корпуса звена
|
||||
|
||||
Применяется: Тележка+ 2 захват механический, Доставка приводов осущ. Со склада, куда есть доступ пока только тележке.
|
||||
|
||||
Процесс: По возможности взять готовую форму. Если нет, то П.0
|
||||
|
||||
Для сборки приготовить нижнюю часть формы.
|
||||
|
||||
#### 12. Подготовка комплектующих
|
||||
|
||||
Применяется: Тележка+ 2 захват механический,
|
||||
|
||||
Доставка:
|
||||
|
||||
- 7ми приводов
|
||||
- 2х плат для Основания
|
||||
- катушки Расходников
|
||||
- реагенты для компаунда
|
||||
|
||||
...со склада
|
||||
|
||||
Процесс:
|
||||
|
||||
- Обслужить инструменты и оснастку,
|
||||
- Загрузить в инструменты/оснастку расходники
|
||||
- Испытать/проверить инструмент
|
||||
- Вернуть инструмент на позицию.
|
||||
- Выгрузить, подле ассистирующего Робот-манипулятор, комплектующие для основания (Разъёмы, Рамку, Платы)
|
||||
- Отъехать на расстояния чтоб не мешать Робот-манипулятор.
|
||||
|
||||
Сборочная спецификация Робот-манипулятор может меняться в зависимости от потребностей Системы и это должно быть предусмотрено!
|
||||
|
||||
#### 13. Укладывание приводов в оснастку
|
||||
|
||||
Применяется: 1 Робот-манипулятор + 1 захват механический
|
||||
|
||||
Процесс: Робот-манипулятор применяя захват механический, берёт из складской корзины приводы и по очереди укладывает в литьевую форму.
|
||||
|
||||
#### 14. Формование проволочных кабелей (тождественно п.4)
|
||||
|
||||
Применяется: 1 Робот-манипулятор + 1 ЗК, 1 Робот-манипулятор + 1 сварочный модуль, расходный материал: проволока металлическая
|
||||
|
||||
Обоснование: Робот со сварочным модулем подаёт проволоку нужной длины, робот партнёр гнёт проволоку согласно инструкции.
|
||||
|
||||
В идеале нужен провологибочный стан, но проволока достаточно мягка и легка, чтоб с этой задачей справился робот — может это быть даже просто мягкий припой или тонкая медяшка как арматура, покрытая толстым припоем.
|
||||
|
||||
Процесс: Робот-манипулятор2 после формования плоскостной проволочной структуры позиционирует получившийся кабель, Робот-манипулятор1 приваривает кабель к контактам привода1, затем Робот-манипулятор2 проталкивает другой конец кабеля в разъём для фиксации в Приводе2.
|
||||
|
||||
#### 15. Пайка кабелей к разъёмам приводов (пайка устраняет шумы контактов и гарантирует механическую прочность)
|
||||
|
||||
Применяется: 1 Робот-манипулятор + 1 ЗК, 1 Робот-манипулятор + 1 сварочный модуль, расходный материал: проволока металлическая
|
||||
|
||||
Обоснование: 1 Робот-манипулятор - прогрев кабелей для проплавки припоя и электротестирование
|
||||
|
||||
2 Робот-манипулятор с металлическим щупом должен проверить качество электрического соединения
|
||||
|
||||
Процесс:
|
||||
|
||||
а) Робот-манипулятор1 удерживает проволоку в нужной позиции,
|
||||
|
||||
б) Робот-манипулятор2 проводит пайку кабеля к проводам разъёма.
|
||||
|
||||
в) Робот-манипулятор1 проталкивает непаяный край кабелей в разъём до фиксации.
|
||||
|
||||
#### 16. Закрывание литейной формы
|
||||
|
||||
Применяется: 2 Робот-манипулятор + 2 захват механический
|
||||
|
||||
Процесс:Робот-манипулятор1 и Робот-манипулятор2 синхронно поднимают вторую полуформу (крышку формы) и устанавливают на форму с вставленными комплектующими.
|
||||
|
||||
#### 17. Заливка компаундом оснастки с приводами
|
||||
|
||||
Применяется: Робот-манипулятор + модуль подачи компаунда
|
||||
|
||||
Обоснование: Один робот удерживает привод в нужном положении, другой заливает компаунд в оснастку.
|
||||
|
||||
Процесс: Робот-манипулятор1 прижимает верхнюю полуформу посередине, удерживая её в нужной позиции, в достаточно придавленном состоянии. Робот-манипулятор2 прижимает сопло смесителя к заливочной горловине и делает впрыск компаундом, роботы интенсивно меняют места приложения усилий и Робот-манипулятор2 делает впрыск во второй горловине. Робот-манипулятор1 продолжает удержание, пока действуют распирающие форму силы.
|
||||
|
||||
ВНИМАНИЕ: Состав компаунда может варьироваться, имеет несколько вариантов исполнений и должен выбираться исходя из стартовых условий и требований к производимому роботу. Так же необходимо помнить о состоянии защитного покрытия формы.
|
||||
|
||||
### Цикличная сборка звеньев манипулятора
|
||||
|
||||
#### 18. Подготовка оснастки литья корпуса звена
|
||||
|
||||
Применяется: Тележка + 2 захват механический
|
||||
|
||||
Обоснование: Доставка приводов осуществляется со склада, куда есть доступ пока только тележке.
|
||||
|
||||
Процесс: Взять готовую форму.
|
||||
|
||||
Количество деталей формы может - 3х основных формообразующих + 2 направляющих + 2 замка, чтоб роботам можно было проще(и качественнее) паять кабельные трассы. Для сборки приготовить нижнюю часть формы, форма покрыта постоянным компаундооталкивающим составом.
|
||||
|
||||
#### 19. Стыковка приводов основания и 1го звена
|
||||
|
||||
Применяется: Тележка(2 Робот-манипулятор) + 2 захват механический
|
||||
|
||||
Обоснование: Для операции необходимо 2 робота, они есть у тележки, она же в кузове несёт приводы. ПОКА(!) нет надобности тратить время 2х стационарных роботов.
|
||||
|
||||
Процесс: каждый из 2х Робот-манипулятор берёт привод и располагает в нужной комбинации, едва соприкасая их контактами разъёмов, приводы лежат на ровной площадке(пол, Рабочий стол, оснастка), затем работы прижимают приводы так, чтоб контакты зашли друг в друга
|
||||
|
||||
#### 20. Укладывание приводов в оснастку
|
||||
|
||||
Применяется: 2 Робот-манипулятор + 2 захват механический
|
||||
|
||||
Обоснование: для укладывания 2х приводов достаточно 2 Робот-манипулятор с захват механический.
|
||||
|
||||
Процесс: Просто уложить приводы в обозначенные позиции в оснастке.
|
||||
|
||||
#### 21. Формование проволочных кабелей
|
||||
|
||||
- ВАРИАНТ 1
|
||||
|
||||
Применяется: 1 Робот-манипулятор + 1 ЗК, 1 Робот-манипулятор + 1 сварочный модуль, Расходный материал: проволока металлическая
|
||||
|
||||
Обоснование: Робот со Сварочным модулем подаёт проволоку нужной длины, робот партнёр гнёт проволоку согласно инструкции.
|
||||
|
||||
Процесс: Робот-манипулятор2 после формования плоскостной проволочной структуры позиционирует получившийся кабель, Робот-манипулятор1 приваривает кабель к контактам привода1, затем Робот-манипулятор2 проталкивает другой конец кабеля в разъём для фиксации в Приводе2.
|
||||
|
||||
ВАРИАН 2 и ВАРИАНТ3 см. п.4
|
||||
|
||||
#### 22. Пайка кабелей к разъёмам приводов
|
||||
|
||||
Применяется: Робот-манипулятор + захват механический, Робот-манипулятор+ 1 сварочный модуль, Расходные материалы: Проволока паяльная
|
||||
|
||||
Обоснование: 1 Робот-манипулятор - прогрев кабелей для проплавки припоя и электротестирование
|
||||
|
||||
2 Робот-манипулятор с металлическим щупом должен проверить качество электрического соединения
|
||||
|
||||
Процесс: На проволоку кабелей подать напряжение, контролировать температуру, не превышая 500\*С. Коснуться поочерёдно всех контактов. С выдержкой по времени. Электрическим щупом Робот-манипулятор2 проверяется качество пайки контактов на сопротивление и общую проводимость.
|
||||
|
||||
#### 23. Заливка компаундом оснастки с приводами
|
||||
|
||||
Применяется: Робот-манипулятор + модуль подачи компаунда
|
||||
|
||||
Обоснование: Один робот удерживает привод в нужном положении, другой заливает компаунд в оснастку.
|
||||
|
||||
Процесс: Робот-манипулятор1 прижимает верхнюю полуформу посередине до самозапирания замками. Робот-манипулятор2 прижимает сопло смесителя к заливочной горловине и делает впрыск компаундом, затем Робот-манипулятор2 делает впрыск во второй горловине.
|
||||
|
||||
#### 24. Раскрытие Формы
|
||||
|
||||
Применяется : 2 Робот-манипулятор + 2 захват механический
|
||||
|
||||
Обоснование: простейшие механические действия, синхронные, для 2х Робот-манипулятор.
|
||||
|
||||
Процесс: Роботы синхронно захватами нажимают на замки, Форма под действием печатанных пружин раскрывается, Затем роботы захватывают верхнюю полуформу за строповочные петли поднимают полуформу и кладут сразу за формой.
|
||||
|
||||
#### 25. Смена заливаемого звена
|
||||
|
||||
Применяется : 2 Робот-манипулятор + 2 захват механический
|
||||
|
||||
Обоснование: аккуратные механические действия, синхронные, для 2х Робот-манипулятор.
|
||||
|
||||
Процесс: Роботы синхронно берут с двух краёв частично готовый Робот-манипулятор, приподнимают над полуформой на 2/3 диаметра привода и сдвигают на 2 звена относительно Формы. Затем укладывают частично готового Робот-манипулятор на край формы с зазором под штыри разъёма.
|
||||
|
||||
#### 26. Укладка приводов последующего звена
|
||||
|
||||
Применяется: Робот-манипулятор + захват механический
|
||||
|
||||
Обоснование: простейшие механические действия, синхронные, для 2х Робот-манипулятор.
|
||||
|
||||
Процесс: Робот-манипулятор укладывает приводы в форму.
|
||||
|
||||
#### 27. Завершение цикла литья корпусов
|
||||
|
||||
Применяется: Тележка + захват механический
|
||||
|
||||
Обоснование: Нужно привезти очередной комплект деталей для будущего Робот-манипулятор и освободить форму для производства следующего Робот-манипулятор.
|
||||
|
||||
Процесс: Повтор пунктов: 21-26 до достижения необходимого количества степеней свободы. Последняя степень свободы - модуль стыковки. При достижении заданного количества степеней свободы остановить цикл на П.24. Затем Робот-манипулятор тележки выгружает комплект деталей для следующего Робот-манипулятор, далее Робот-манипулятор тележки бережно извлекают и поднимают заготовку Робот-манипулятор с отлитыми и затвердевшими корпусами.
|
||||
|
||||
#### 28. Корпуса извлечённого из формы робота пропитывают полимерным составом
|
||||
|
||||
Применяется: Робот-манипулятор + модуль подачи компаунда, Расходные материалы: полимерное связующее.
|
||||
|
||||
Обоснование: Хрупкий и пористый корпус нужно пропитать упрочняющим полимерным составом.
|
||||
|
||||
Процесс: Заготовка Робот-манипулятор находится в подвешенном расстоянии, зафиксированном Робот-манипулятор тележки. Робот-манипулятор с модуль подачи компаунда, касаясь соплом с полимерным составом, прижимает сопло к отверждённым корпусам по очереди, и начинает подачу полимера со скоростью впитывания его в пористый корпус до набора необходимого соотношения масс.
|
||||
|
||||
### Анимирование робота манипулятора
|
||||
|
||||
#### 29. Складирование Робота-манипулятора
|
||||
|
||||
Применяется: Тележка + 2 захват механический
|
||||
|
||||
Обоснование: Робота нужно перемещать в пространстве
|
||||
|
||||
Процесс: Тележка, удерживающая сформованного робота, удерживая его захватами в горизонтальном положении, отвозит на склад, или центр анимации. (зависит от загруженности центра анимации и времени после пропитки корпусов Робота-манипулятора для полной полимеризации составов.
|
||||
|
||||
#### 30. Установка Робота-манипулятор
|
||||
|
||||
Применяется: Рабочий стол, Тележка+ 2 захват механический, Робот-манипулятор+ захват механический
|
||||
|
||||
Обоснование: Тележка привозит робота, затем, удерживая вертикально на 2 захват механический, стыкует Робот-манипулятор к Рабочий стол, Робот-манипулятор с захват механический используя специальные шпильки фиксирует новоприбывшего Робот-манипулятора к Рабочему столу.
|
||||
|
||||
Процесс: Тележка привозит Робот-манипулятор(Сформованный робот со склада, после полного цикла полимеризации и усадки), затем поворачивает его вертикально и, удерживая двумя Механическими захватами, подвозит вплотную к пилону рабочего стола. Затем, тележка с нижним механическим захватом с усилием стыкует пилоны рабочего стола и Робот-манипулятор. После этого Робот-манипулятор с захват механический берёт из кузова тележки шпильку и опускает вертикально, добавляя усилия, и вращая по часовой стрелке, продавливает её через скобы пилонов рабочего стола и Робот-манипулятор
|
||||
|
||||
#### 31. Прошивка Робота-манипулятор
|
||||
|
||||
Применяется: Рабочий стол, Робот-манипулятор+ Щ,
|
||||
|
||||
Процесс: Используя щуп, Робот-манипулятор, касаясь всех выступающих штырей разъёмов каждого соединения Робот-манипулятор1 прощупывает качество сигнала и проводит визуальную и тактильную деффектовку, передавая показания Рабочего стола. Затем Рабочий стол проводит прошивку приводов согласно вычисленной Рабочим столом кинематической модели нового Робота-манипулятора.
|
||||
|
||||
#### 32. Тестирование Робота-манипулятора
|
||||
|
||||
Применяется Рабочий стол, Робот-манипулятор(новый)+ Щ
|
||||
|
||||
Процесс: Новоустановленный Робот-манипулятор одевает Щ, и, попадая в отверстия разъёмов пилонов Рабочий стол отмечает ошибки, поправляя и уточняя исчисленную ранее кинематическую модель себя.
|
||||
|
||||
После тестирования робот готов к эксплуатации.
|
||||
|
||||
Задачи: разработка картриджа - мелкая катушка(определённое количество) на модуль печатающий;
|
||||
|
||||
Проблема лазерной сварки – система волоконная, крайне сложная(невозможная для роботов) в ремонте и требует бережного обращения. Возможно применять в ЧПУ закрытого или проходного типа, но не на Робот-манипулятор. Полупроводниковой системе не хватит мощности.
|
||||
|
||||
Делать корпус для платы – в жизни очень правильно, но плату нужно паять (и так разъёмов многовато, а они вредны для сигнала)
|
||||
|
||||
Принято решение реабилитировать сварочный модуль, но добавить сварочный модуль паяльную функцию
|
198
docs/technologies/assembly-sequence-planning-overview.md
Normal file
|
@ -0,0 +1,198 @@
|
|||
---
|
||||
id: ASP-overview
|
||||
title: 'Планирование последовательности сборки'
|
||||
---
|
||||
|
||||
## Введение
|
||||
|
||||
Сборка - узкое место в жизненном цикле многих продуктов. Предполагаемое время сборки занимает 20-50 % от общего времени производства, в то время как стоимость сборки составляет около 20-30 % от общей стоимости (Xu et al., 2012). Планирование последовательности сборки имеет решающее значение для обеспечения успеха продукта, особенно для сложных продуктов, таких как автомобили, корабли и аэрокосмическая продукция (Hou et al., 2018).
|
||||
|
||||
В данной статье рассмотрены актуальные исследования по автоматическому планированию последовательности сборки (Assembly Sequence Planning, ASP).
|
||||
|
||||
## Основные методы
|
||||
|
||||
На базе статьи __A review on assembly sequence generation and its automation__ - Bahubalendruni, Biswal (India) 2016
|
||||
|
||||
Множества и подмножества сборочных последовательностей:
|
||||
* __Liaison-based__ - множества, построенные на графах(матрицах смежности для них) отношений(соединений) деталей. В вершинах графа - детали, в рёбрах - наличие соединения и иногда дополнительная информация о соединении (тип соединения и т.д.)
|
||||

|
||||
* __Feasible__ - геометрически доступные множества. Основаны на т.н. `feasible predicate` - условии, при котором выбранная сборка доступна в геометрическом или механическом смысле. Геометрически доступной считается подсборка, все детали которой могут быть соединены без коллизий. К каждой из подсборок liaison-множества применяется некая функция, которая отвечает в формате Да/Нет на вопрос о возможности той или иной сборки. Таким образом из liasion-матрицы формируется interference-матрица, которая отражает наличие или отсутствие коллизий между отдельными деталями.
|
||||
* __Stable__ - множества устойчивых (не разваливающихся) подсборок. Могут разделяться на нестабильные, частично стабильные, полностью стабильные.
|
||||
* __Optimal__ - оптимальные по отношению к целевой функции (стоимость, энергоёмкость, смены инструмента, операции). Часто инженеру нужно выбрать между несколькими допустимыми и стабильными последовательностями сборки, поэтому применяется алгоритм оптимизации. Сущестует множество типов алгоритмов оптимизации (ACO: Ant Colony Optimization, GA: Genetic Algorithm, PSO: Particle Swarm Optimization, MA: Memetic Algorithm, IA: Immune Algorithm, NN: Neural Networks, GSA: Genetic Simulated Annealing, FF: Firefly Algorithm, FW: Fireworks, MILP: Mixed Integer Linear Programming, MIP: Mixed Integer Programming), которые применяются в сочетании с различными входными данными (геометрические отношения, ограничения приоритета, информация о приспособлениях и подсборках) и целевыми функциями. Полная таблица исследований приведена в таблице 3 из работы (_Bahubalendruni, Biswal '2016_). Там же приводится статистика самых популярных:
|
||||
* входных данных - `Liaison` и `Geometrical feasibility` матрицы
|
||||
* алгоритмов оптимизации - Генетические алгоритмы в 40% исследований
|
||||
* целевых функций - минимизация стоимости и количества изменений направлений сборки.
|
||||
|
||||
Отношения вложенности между указанными выше сборочными последовательностями
|
||||
|
||||

|
||||
|
||||
Современные CAD-системы позволяют получать следующие данные:
|
||||
* liaison data - связи между деталями
|
||||
* assembly cutsets - наборы разрезов
|
||||
* questions to generate precedence relations - вопросы для создания отношений приоритета
|
||||
* interference free matrix/interference data - данные о помехах
|
||||
* assembly mating conditions - условия сопряжения сборки
|
||||
* feasible assembly sequence(s) - геометрически допустимые сборочные последовательности
|
||||
* optimal/near optimal feasible assembly sequence - оптимальные и близкие к оптимальным последовательности
|
||||
|
||||
Большинство методов планирования последовательностей сборки (Assembly Sequence Planning, ASP) основаны на графах. На иллюстрации ниже показаны: пример сборки (a), `blocking-граф` (b), `AND/OR-граф` (c), `liaison-граф` (d), `connector-based`. Граф Liaison часто применяется как входной в ASP-систем.
|
||||
|
||||

|
||||
|
||||
|
||||
## Обзор актуальных исследований
|
||||
|
||||
### 3D Model-Based Assembly Sequence Optimization using Insertionable Properties of Parts - 2020
|
||||
|
||||
Kento Tariki, Takuya Kiyokawa, Gustavo Alfonso Garcia Ricardez, Jun Takamatsu, Tsukasa Ogasawara (Japan)
|
||||
|
||||
http://dx.doi.org/10.1109/SII46433.2020.9026210
|
||||
|
||||
__Исходные данные__: 3D-модель в формате STEP
|
||||
|
||||
__Алгоритм__: генетический алгоритм с двумя типами функций оценки (Fitness Functions). Также применяется Insertion Matrix (матрица вставки, IM), где подразделяются детали по признаку папа/мама. Insertion Matrix вычисляется из CAD-модели с помощью функций библиотеки `PythonOCC`:
|
||||
* Функция `BRepAdaptor_Surface` извлекает информацию о поверхности детали и показывает её тип (плоскость, цилиндр, конус)
|
||||
* Деталь классифицируется по признаку мама/папа
|
||||
* В координате центра отверстия детали типа "мама" создаётся маленький куб и если какая-либо деталь имеет с ней общую точку (это вычисляется с помощью функции `BRepAlgoAPI_Common`), то она помещается в IM
|
||||
* Функция `brepgprop_VolumeProperties` используется, чтобы определить, что общий объём больше нуля. И если она возвращает True, то деталь помещается в IM.
|
||||
|
||||
На рисунке ниже показан пример создания IM. Красная деталь типа "мама", зелёный куб находится в координате центра отверстия детали типа "мама", жёлтая деталь типа "папа".
|
||||

|
||||
|
||||
__Полевые испытания__: использовались робот COBOTTA и ROS/MoveIt. Для примера использовалась в том числе модель из `World Robot Summit Assembly Challenge 2018`.
|
||||
|
||||
### Assembly Sequence Planning for Motion Planning - 2016
|
||||
|
||||
Weiwei Wan, Kensuke Harada, Kazuyuki Nagata
|
||||
|
||||
https://arxiv.org/pdf/1609.03108.pdf
|
||||
|
||||
|
||||
__Исходные данные__: mesh-модель манипулятора, mesh-модели деталей, относительные позиции между деталями в сборке, целевая позиция сборки
|
||||
|
||||
__Алгоритм__: формируются все возможные подсборки и для каждой вычисляются:
|
||||
* стабильность (stability)
|
||||
* хватабельность (graspability) - число доступных способов захвата данным приспособлением
|
||||
* собираемость (assemblability).
|
||||

|
||||
|
||||
Алгоритм позволяет найти некоторые оптимальные порядки и направления сборки, которые
|
||||
1. Стабильны после окончания каждого этапа сборки
|
||||
2. Имеют множество доступных захватов и гибки к кинематическим ограничениям роботов
|
||||
3. Устойчивы к ошибкам сборки.
|
||||
|
||||
__Результат__:
|
||||
* Порядок сборки (Assembly order): Какие детали собирать первыми
|
||||
* Направление сборки (Assembly direction): Как накладывать или вставлять детали
|
||||
* Доступные способы захвата (Accessible grasps): Как захватывать объекты в ходе сборки
|
||||
|
||||
__Полевые испытания__: собрали промышленный переключатель (switch).
|
||||
|
||||
### Optimal assembly sequence based on design for assembly (DFA) rules - 2020
|
||||
|
||||
Ine Melckenbeeckb, Sofie Burggraevea, Bart Van Donincka, Jeroen Vancraena, Albert Rosicha (EU)
|
||||
|
||||
__Исходные данные__: STEP-модель
|
||||
|
||||
__Алгоритм__: совместно применяются `AND/OR` и `liaison` графы в сочетании с практиками `Design for Assembly` (DFA).
|
||||
|
||||
Для измерения DFA используется метод оценки локального (_local motion_) и глобального (_global or extended motion_) движения. Локальное движение рассматривает зону физического контакта детали; глобальное движение оценивает также пересечения с деталями, не находящимися в зоне контакта, поэтому более трудоёмкое для вычислений. В алгоритме предложен метод двух-этапной оценки возможностей сборки - сначала оценивается локальное движение, а затем для направлений, в которых гарантируется локальное движение, оценивается глобальное движение.
|
||||
1. Оценка локальных движений (`S-local` DFA score, %) производится с помощью `функций геометрического ядра CAD`, исходя из геометрических свойств деталей.
|
||||
2. Оценка глобальных движений (`S-global` DFA score, %) производится с помощью рендеринга в `игровом движке Unity 3D`. Алгоритм получает на входе перечень возможных направлений, выявленных в ходе оценки локального движения.
|
||||
|
||||
Из локальной и глобальной возможности сборки выводится оценка для использования при генерации последовательности сборки.
|
||||
Результатом проверки локального движения является `пространство допустимых направлений`. Объем этого пространства представляет собой количество возможных направлений сборки и, следовательно, является показателем простоты сборки. Чтобы использовать это значение в качестве оценки, нормализованный объем подается в непрерывную функцию оценки так, что невозможные сборки приравниваются к 0%, а неограниченная ничем сборка - 100%. С другой стороны, глобальная возможность сборки равна либо 0, либо 1, в которой 1 является сборкой, а 0 - нет.
|
||||
|
||||
Общее значение оценки `C-alg` вычисляется как `1/(S-local * S-global)`.
|
||||
|
||||
Порядок определения последовательности сборки:
|
||||
1. STEP-файл
|
||||
2. Программно генерируется `liaison`-граф, как пространство вершин разных деталей, расстояние между которыми ниже определённого значения (tolerance value)
|
||||
3. Частичный AND/OR граф
|
||||
4. Оценка DFA (возможен возврат к п.3). Для уменьшения количество обращений к DFA, разработаны три специальных ad-hoc правила:
|
||||
* Локальная оценка возможности сборки на определённом шаге не меняется, если добавляемая к подсборке деталь или другая подсборка не соприкасаются с ней. К примеру, мы собрали две подсборки вместе, определив для них local score. Далее, если мы добавим к одной из подсборок деталь, которая не имеет соприкосновений с другой подсборкой, то на данном local score это не отразится;
|
||||
* Невыполнимый этап сборки никогда не станет выполнимым путем добавления деталей в любой из узлов сборки
|
||||
* (инверсия предыдущего правила) Выполнимый этап сборки никогда не станет невыполнимым при удалении деталей из любого узла сборки.
|
||||
5. Последовательность сборки
|
||||
|
||||
Пункты 3-4 формируют т.н. алгоритм поиска оптимальной последовательности.
|
||||
|
||||
__Полевые испытания__: не проводились
|
||||
|
||||
### A System Architecture for Constraint-Based Robotic Assembly with CAD Information - 2018
|
||||
|
||||
Mathias Hauan Arbo, Yudha Pane†, Erwin Aertbeliën† and Wilm Decré (EU)
|
||||
|
||||
http://dx.doi.org/10.1109/COASE.2018.8560450
|
||||
|
||||
__Исходные данные__: CAD-модель с пользовательскими метаданными, в работе не было задачи автоматизации генерации последовательности сборки
|
||||
|
||||
__Архитектура__:
|
||||

|
||||
* `Application Layer` - для `FreeCAD` создана `Task Library`, где имплементированы классы `Положить`, `Вставить`, `Вкрутить`, которые сопоставляются рёбрам `liaison-графа`
|
||||
* `Process Layer` - `Tasks` (задачи) сопоставляются с `Skills` (навыками). Навыки делятся на `Composed` и `Atomic`. В итоге каждой детали сопоставляются тип задачи из Application Layer, навык (например, `grasp_and_insert`), набор атомарных навыков (move_cartesian gripper, guarded_cartesian, cylinder_insert) и инструмент (gripper). В контексте работы Task - это задача, а Skill - это возможность производства.
|
||||
* `Control Layer` - реализован на базе [eTaSL](https://etasl.pages.gitlab.kuleuven.be/intro.html) - язык спецификации задач для реактивного управления роботами + [Orocos](https://docs.orocos.org/) - [ROS-совместимый](https://github.com/orocos/rtt_ros2_integration) набор инструментов для управления роботами.
|
||||
|
||||
__Полевые испытания__: Собран компрессор с помощью 7-DOF KUKA LBR iiwa 14, pneumatic SCHUNK RH940 parallel gripper.
|
||||
|
||||
### Flexible Assembly through Integrated Assembly Sequence Planning and Grasp Planning - 2015
|
||||
|
||||
Ulrike Thomas, Theodoros Stouraitis, Maximo A. Roa (Germany)
|
||||
|
||||
__Исходные данные__: CAD-модель + база данных захватов для каждой детали в сборке
|
||||
__Алгоритм__:
|
||||

|
||||
|
||||
Сначала создаются карты для тестирования геометрической осуществимости (maps for the geometric feasibility tests) или `disassembly maps` по методу `Stereographical Projections of C-Space Obstacles` (стереографических проекций пространственных ограничений) автора U.Thomas, изложенному в [статье](https://ieeexplore.ieee.org/document/1217194) и уже применённой в исследовании 2010 года. Далее генерируются три типа графов: connectivity(liaison), force, hierarchy, из которых выводится AND/OR-граф. Далее `Grasp Planner` использует заранее подготовленную __базу данных захватов для каждой отдельной детали__ и фильтрует те вершины и рёбра `AND/OR-графа`, которые отсутствуют в доступных позициях захвата.
|
||||
|
||||
__Полевые испытания__: не проводились. Для симуляций применялся фреймворк `OpenRave` и конструкции из профилей.
|
||||
|
||||
### A novel Geometric feasibility method to perform assembly sequence planning through oblique orientations - 2021
|
||||
|
||||
Gulivindala Anil Kumar, M.V.A.Raju Bahubalendruni, V.S.S. Vara Prasad, Dara Ashok, K. Sankaranarayanasamy (India)
|
||||
|
||||
__Исходные данные__: CAD-модель
|
||||
|
||||
__Алгоритм__: акцент делается на методе получения матрицы геометрической доступности после liaison и stability матриц. Алгоритм называется `NASPM`:
|
||||
|
||||

|
||||
|
||||
__Полевые испытания__: нет данных
|
||||
|
||||
|
||||
### ASPW-DRL: assembly sequence planning for workpieces via a deep reinforcement learning approach - 2018
|
||||
|
||||
Minghui Zhao, Xian Guo, Xuebo Zhang and Yongchun Fang (China)
|
||||
|
||||
По мнению авторов часто используемые классы алгоритмов имеют следующие недостатки:
|
||||
* Graph search - AND/OR - комбинаторный взрыв по мере увеличения количества деталей, специфичны к задаче и плохо обобщаются
|
||||
* Knowledge-based - Domain/Problem Ontology - чувствительны к качеству базы знаний, плохо обобщаются
|
||||
* Heuristic intelligent methods - Simulated annealing, Genetic algorithms, Neural nets - плохо обобщаются
|
||||
|
||||
|
||||
__Исходные данные__: Подготовленная сцена в Gazebo
|
||||
|
||||
__Алгоритм__:
|
||||
|
||||

|
||||
|
||||
__Полевые испытания__: нет данных. Игрушечные модели в Gazebo
|
||||
|
||||
|
||||
### Optimizing assembly sequence planning using precedence graph-based assembly subsets prediction method - 2019
|
||||
|
||||
Nan Zhang, Zhenyu Liu and Chan Qiu, Weifei Hu, Jianrong Tan (China)
|
||||
|
||||
В работе хорошее введение истории решения проблемы со ссылками.
|
||||
|
||||
__Исходные данные__: CAD-модель + `precedence graph` (граф приоритета), который как-то составляется инженером и задаёт приоритеты в порядке сборки деталей; подробности о precedence-графах изложены в работе Yong Wang, De Tian "[A weighted assembly precedence graph for assembly sequence planning](https://link.springer.com/article/10.1007/s00170-015-7565-5)"
|
||||
|
||||
__Алгоритм__: [Fireworks](https://en.wikipedia.org/wiki/Fireworks_algorithm)
|
||||
|
||||
__Полевые испытания__: нет данных. Замер эффективности алгоритма проводился по модели промышленного образца.
|
||||
|
||||
|
||||
## Доступные программные реализации ASP
|
||||
|
||||
https://github.com/atulmishrachdi/AutomatedAssemblyPlanner
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
id: gripper-tools-research
|
||||
title: 'Обзор устройств захвата для манипуляторов'
|
||||
title: 'Устройства захвата'
|
||||
---
|
||||
|
||||
## Популярные модели захватов
|
||||
|
|
BIN
docs/technologies/img/ASPW-DRL.jpg
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
docs/technologies/img/assembly-sequence-sets.jpg
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
docs/technologies/img/assembly_graph_types.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
docs/technologies/img/ca_bt_execution.jpg
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
docs/technologies/img/ca_bt_execution_full.jpg
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
docs/technologies/img/ca_schematics.jpg
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
docs/technologies/img/ca_special_finger_design.jpg
Normal file
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 43 KiB |
BIN
docs/technologies/img/flexbe_example_1.png
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
docs/technologies/img/geometric-feasibility-method-2012.jpg
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
docs/technologies/img/insertion_matrix_gen.jpg
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
docs/technologies/img/integrated_ASP_and_Grasp_Planning.jpg
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
docs/technologies/img/liaison-graph.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
docs/technologies/img/pddl_planners.jpg
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
docs/technologies/img/wan_ASP_algorithm.jpg
Normal file
After Width: | Height: | Size: 43 KiB |
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
id: machine-learning-in-robotics
|
||||
title: 'Применение машинного обучения в робототехнике'
|
||||
title: 'Машинное обучение'
|
||||
---
|
||||
|
||||

|
||||
|
@ -24,6 +24,12 @@ title: 'Применение машинного обучения в робото
|
|||
|
||||
[Официальный Сайт](https://sites.google.com/robot-learning.org/corl2020/home) | [Youtube](https://www.youtube.com/c/ConferenceonRobotLearning)
|
||||
|
||||
### IEEE International Symposium on Multi-Robot and Multi-Agent Systems
|
||||
|
||||
[Site](https://mrs2021.org/)
|
||||
|
||||
Multi-robot multi-agent конференция
|
||||
|
||||
### Workshop on Closing the Reality Gap in Sim2Real Transfer for Robotics
|
||||
|
||||
Воркшоп по sim2real с научными публикациями. [Официальный сайт](https://sim2real.github.io/)
|
||||
|
@ -45,9 +51,7 @@ title: 'Применение машинного обучения в робото
|
|||
|
||||
#### Decentralized Multi-arm Motion Planner
|
||||
|
||||
Децентрализованный планировщик движений для ассамблей роботов манипуляторов. Планировщик обучен на 1-4 манипуляторах, но при этом показал свою работоспособность на произвольном количестве манипуляторов. То есть является масштабируемым.
|
||||
|
||||
В проекте использованы следующие python-библиотеки: PyTorch 1.6.0, pybullet, numpy, numpy-quaternion, ray, tensorboardX. Для визуализации симуляций в Blender одним из авторов была разработана библиотека [pybullet-blender-recorder](https://github.com/huy-ha/pybullet-blender-recorder). Доступны предварительно обученные модели.
|
||||
Децентрализованный планировщик движений для ансамблей роботов манипуляторов. Планировщик обучен на 1-4 манипуляторах, но при этом показал свою работоспособность на произвольном количестве манипуляторов. То есть является масштабируемым. В проекте использованы следующие python-библиотеки: pytorch, pybullet, numpy, numpy-quaternion, ray, tensorboardX. Для визуализации симуляций в Blender одним из авторов была разработана библиотека [pybullet-blender-recorder](https://github.com/huy-ha/pybullet-blender-recorder). Доступны предварительно обученные модели.
|
||||
|
||||
[Сайт](https://multiarm.cs.columbia.edu/) | [Github](https://github.com/columbia-ai-robotics/decentralized-multiarm) | [Видео](https://www.youtube.com/watch?v=GNos793PFG4) | [Paper](https://arxiv.org/pdf/2011.02608.pdf)
|
||||
|
||||
|
@ -57,6 +61,11 @@ title: 'Применение машинного обучения в робото
|
|||
|
||||
[Сайт](https://adagrasp.cs.columbia.edu/) | [Github](https://github.com/columbia-ai-robotics/adagrasp) | [Видео](https://www.youtube.com/watch?v=MUawdWnQDyQ) | [Paper](https://arxiv.org/pdf/2011.14206.pdf)
|
||||
|
||||
#### Fit2Form: 3D Generative Model for Robot Gripper Form Design
|
||||
|
||||
Fit2Form генерирует формы пальцев для параллельного захвата, которые обеспечивают более стабильный и надежный захват изделия по сравнению с другими алгоритмами проектирования захватов как общего назначения, так и для конкретных задач.
|
||||
|
||||
[Сайт](https://fit2form.cs.columbia.edu/) | [Github](https://github.com/columbia-ai-robotics/fit2form) | [Видео](https://www.youtube.com/watch?v=utKHP3qb1bg) | [Paper](https://arxiv.org/abs/2011.06498)
|
||||
|
||||
## Исследования
|
||||
|
||||
|
@ -297,3 +306,7 @@ Model-free делятся на
|
|||
### Выбор алгоритма ОП
|
||||
|
||||
Нет универсальных алгоритмов, все имеют как преимущества, так и недостатки. Наиболее значимые критерии оценки - устойчивость, выборочная эффективность, время обучения, простота использования, надёжность. Алгоритмы градиента стратегии более устойчивы и надежны, чем алгоритмы функции ценности. С другой стороны, методы функции ценности обладают лучшей выборочной эффективностью, поскольку это методы с разделенной стратегией и потому могут использовать предшествующий опыт. В свою очередь, алгоритмы, основанные на модели, лучше алгоритмов Q-обучения с точки зрения выборочной эффективности, но гораздо дороже с вычислительной точки зрения и работают медленнее.
|
||||
|
||||
### Ссылки
|
||||
|
||||
[Курс лекций](https://deepmind.com/learning-resources/reinforcement-learning-series-2021) по Reinfocement Learning от Deepmind
|
8
docs/technologies/motion-planning.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
id: motion-planning
|
||||
title: 'Планирование движений'
|
||||
---
|
||||
|
||||
## Moveit2
|
||||
|
||||

|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
id: moveit2
|
||||
title: 'Moveit2 и как устроен'
|
||||
---
|
||||
|
||||
## Moveit2
|
||||
|
||||
Кратко о текущем состоянии порта Moveit2
|
||||
|
||||

|
|
@ -1,18 +1,11 @@
|
|||
---
|
||||
id: plansys2
|
||||
title: 'PlanSys2'
|
||||
title: 'PlanSys2 & PDDL'
|
||||
---
|
||||
|
||||
[PlanSys2](https://github.com/IntelligentRoboticsLabs/ros2_planning_system) - это система планирования для ROS2 от создателей ROSPlan (система планирования для ROS1). PlanSys2 не ограничивается планированием в рамках одного устройства, а поддерживает распределение задач между _многими взаимодействующими агентами_ в реальном времени. Исполнение планов реализовано на базе _Деревьев поведения_.
|
||||
[PlanSys2](https://github.com/IntelligentRoboticsLabs/ros2_planning_system) - это система планирования для ROS2 от создателей ROSPlan (система планирования для ROS1). PlanSys2 не ограничивается планированием в рамках одного устройства, а поддерживает распределение задач между _многими взаимодействующими агентами_ в реальном времени. Исполнение планов реализовано на базе _Деревьев поведения_. Планы и задачи описываются на Lisp-подобном языке PDDL (Planning Domain Definition Language). PlanSys2 поддерживает PDDL версии 2.1, текущая версия PDDL - 3.1.
|
||||
|
||||
Планы и задачи описываются на Lisp-подобном языке PDDL (Planning Domain Definition Language). Согласно спецификации PDDL содержит следующие базовые сущности планируемой задачи:
|
||||
* __Объекты__ (Objects)
|
||||
* __Свойства__ (Predicates) объектов (True/False).
|
||||
* __Начальное состояние__ (Initial state)
|
||||
* __Спецификация целей__ (Goal specification): то, что мы хотим, чтобы было правдой
|
||||
* __Действия/Операторы__ (Actions/Operators): способы изменения состояния мира.
|
||||
|
||||
PlanSys2 поддерживает PDDL версии 2.1, тогда как последняя версия PDDL - 3.1.
|
||||
Видео-презентация [1](https://www.youtube.com/watch?v=SQoN79BBQno), [2](https://www.youtube.com/watch?v=58pvI8rgUvk)
|
||||
|
||||
## Архитектура фреймворка
|
||||
|
||||
|
@ -85,4 +78,27 @@ PlanSys2 поддерживает PDDL версии 2.1, тогда как по
|
|||
|
||||
## Симуляция и полевые испытания
|
||||
|
||||
PlanSys2 был проверен сначала в симуляции, а потом и на реальной системе, состоящей из 3-ёх роботов. Исходные коды проекта опубликованы на [Github](https://github.com/IntelligentRoboticsLabs/plansys2_cooking_experiment).
|
||||
PlanSys2 был проверен сначала в симуляции, а потом и на реальной системе, состоящей из 3-ёх роботов. Исходные коды проекта опубликованы на [Github](https://github.com/IntelligentRoboticsLabs/plansys2_cooking_experiment).
|
||||
|
||||
## Planning Domain Definition Language (PDDL)
|
||||
|
||||
Согласно [спецификации](https://planning.wiki/ref) PDDL содержит следующие базовые сущности планируемой задачи:
|
||||
* __Объекты__ (Objects)
|
||||
* __Свойства__ (Predicates) объектов (True/False)
|
||||
* __Начальное состояние__ (Initial state)
|
||||
* __Спецификация целей__ (Goal specification): то, что мы хотим, чтобы было правдой
|
||||
* __Действия/Операторы__ (Actions/Operators): способы изменения состояния мира.
|
||||
|
||||
### Основные классы алгоритмов планирования
|
||||

|
||||
|
||||
### Плагины и утилиты для работы с PDDL
|
||||
* Плагины для редакторов [VSCode](https://github.com/jan-dolejsi/vscode-pddl)  ([video-tutorial](https://www.youtube.com/watch?v=BFlCz49ETcA&list=PL1Q0jeuU6XppflOPFx1qQVuWbXTcjxevU)), [Sublime Text](https://github.com/Pold87/myPDDL) 
|
||||
* [vPlanSim](https://github.com/mastrogiorgis/vPlanSim) - графический интерфейс для визуализации и симуляции PDDL-планирования на базе Python3.7, VTK8.2, PyQt5. 
|
||||
* Парсеры PDDL - [Julia](https://github.com/JuliaPlanners/PDDL.jl), [python](https://github.com/pucrs-automated-planning/pddl-parser), [C#](https://github.com/hfoffani/pddl-lib), [Java](https://github.com/gerryai/PDDL4J), [С++](https://github.com/wisdompoet/universal-pddl-parser)
|
||||
* [planutils](https://github.com/AI-Planning/planutils) - библиотека общего назначения для разработки, запуска и оценки планировщиков. 
|
||||
* [blockly-pddl](https://github.com/AI-Planning/blockly-pddl) - транслятор PDDL-файлов в язык Blockly и обратно. 
|
||||
|
||||
### PDDL-фреймворки
|
||||
* [pddlstream](https://github.com/caelan/pddlstream) - фреймворк для планирования, состоящий из языка действий и набора алгоритмов для AI-планирования при наличии процедур выборки. PDDLStream расширяет PDDL, вводя потоки и декларативные спецификации процедур выборки. Алгоритмы PDDLStream не зависят от предметной области и решают проблемы PDDLStream только с описанием каждого сэмплера как черного ящика. Мотивом появления PDDLStream был Task and Motion Planning (TAMP) - [paper](https://arxiv.org/pdf/1802.08705.pdf). 
|
||||
* [pddlgym](https://github.com/tomsilver/pddlgym) - фреймворк, который автоматически создает среду OpenAI-Gym из спецификаций PDDL - [paper](https://arxiv.org/pdf/2002.06432.pdf). 
|
|
@ -1,8 +1,9 @@
|
|||
---
|
||||
id: o2ac-repo-review
|
||||
title: 'Команда o2ac есть чему поучиться'
|
||||
id: wrs2020-assembly-challenge
|
||||
title: 'Assembly Challenge 2020'
|
||||
---
|
||||
## Предыстория
|
||||
|
||||
## Проект команды O2AC
|
||||
|
||||

|
||||
|
||||
|
@ -20,9 +21,7 @@ title: 'Команда o2ac есть чему поучиться'
|
|||
8. Обнаружение и захват деталей расположенных в лотке неструктурировано
|
||||
9. Для установленных деталей используется библиотека TF которая содержит локальную систему координат каждого установленного элемента
|
||||
|
||||
## Обзор репозитория
|
||||
|
||||
Репозиторий состоит из 19 пакетов, в том числе есть пакеты которые достойны рассмотрения для реализации нашего Робосборщика. Кратко пройдёмся по каждому из них.
|
||||
Репозиторий проекта состоит из 19 пакетов, в том числе есть пакеты которые достойны рассмотрения для реализации нашего Робосборщика. Кратко пройдёмся по каждому из них.
|
||||
|
||||
### aist_modules
|
||||
|
||||
|
@ -127,23 +126,23 @@ def on_start(self):
|
|||
def on_stop(self):
|
||||
```
|
||||
|
||||
Далее подобные состояния комбинируются за счёт графического интерфейса Flexbe и генерируется повередние робота
|
||||
Далее подобные состояния комбинируются за счёт графического интерфейса Flexbe и генерируется повередние робота. Пример графического интерфейса:
|
||||
|
||||

|
||||

|
||||
|
||||
## o2ac_gazebo
|
||||
### o2ac_gazebo
|
||||
|
||||
Данный репозиторий включает сцену симуляции Gazebo для робототехнического сборочного комлпекса O2AC и не включает ничего специфичного, по типу плагинов для данной сцены.
|
||||
|
||||
## o2ac_moveit_config
|
||||
### o2ac_moveit_config
|
||||
|
||||
Содержит стандартный конфигурацию для moveit подготовленную с помощью moveit_setup_assistant. Из нестандартного здесь представлен pilz_industrial_motion_planner который по-умолчанию не включен в moveit и интегрируется одельно, данный планер предоставляет удобный интерфейс реализации декартовых траекторий.
|
||||
|
||||
## o2ac_msgs
|
||||
### o2ac_msgs
|
||||
|
||||
Содержит все используемые сообщения, сервисы и действия используемые в проекте. Список следующий:
|
||||
|
||||
### Сообщения
|
||||
#### Сообщения
|
||||
|
||||
В основном все сообщения основаны на проверки текущей позы манипулятора, список следующий
|
||||
|
||||
|
@ -155,7 +154,7 @@ def on_stop(self):
|
|||
* [RobotStatus.msg](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_msgs/msg/RobotStatus.msg)
|
||||
* [TouchObservation.msg](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_msgs/msg/TouchObservation.msg)
|
||||
|
||||
## Сервисы
|
||||
#### Сервисы
|
||||
|
||||
Также представлен набор сервисом для управления, рассмотрим список
|
||||
|
||||
|
@ -241,7 +240,7 @@ def on_stop(self):
|
|||
* Выдаёт на выходе
|
||||
* Ничего не выдаёт
|
||||
|
||||
### Действия
|
||||
#### Действия
|
||||
|
||||
Действия в ROS являются базовым конструктором связи с состоят из клиента и сервера. Модель такова, что клиент отсылает цель(запрос) серверу, который заточен на выполнение определённой операции и получает результат этого действия. В данном репозитории присутствует огромная библиотека действий, подразделяемая также на общие, техническое зрение и поведение. Рассмотрим список общих действий в проекте:
|
||||
|
||||
|
@ -286,11 +285,11 @@ def on_stop(self):
|
|||
* Pick.action
|
||||
* PlayBackSequence.action
|
||||
|
||||
## o2ac_parts_description
|
||||
### o2ac_parts_description
|
||||
|
||||
Данный пакет не эксплуатировался в последней версии проекта представленной на WRC2020, соответственно опустим
|
||||
|
||||
## o2ac_routines
|
||||
### o2ac_routines
|
||||
|
||||
Данный пакет является основным в перечне и предоставляет скрипты Python и управляющие программы C++ для управления всей роботизированной системой.
|
||||
|
||||
|
@ -298,7 +297,7 @@ def on_stop(self):
|
|||
* calibration.py и osx_view_testing.py являются процедурами калибровки и тестирования
|
||||
* Остальные файлы (например test.py) предназначены для разных тестов и прочего неважного кода.
|
||||
|
||||
### Класс Controller
|
||||
#### Класс Controller
|
||||
|
||||
* [`common.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/common.py) определён в [`base.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/base.py) и предлагает класс для управления всей роботизированной системой. Этот класс ( O2ACCommon) владеет другими классами, которые управляют разными подсистемами:
|
||||
* Робот руки (с помощью [`robot_base.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/robot_base.py), [`ur_robot.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/ur_robot.py), [`dual_arm.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/dual_arm.py), [`robotiq_gripper.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/robotiq_gripper.py) и [`ur_force_control.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/ur_force_control.py))
|
||||
|
@ -306,7 +305,7 @@ def on_stop(self):
|
|||
* Винтовые инструменты (через [`tools.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/tools.py))
|
||||
* [`taskboard.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/taskboard.py) и [`assembly.py`](https://github.com/o2ac/o2ac-ur/blob/main/catkin_ws/src/o2ac_routines/src/o2ac_routines/assembly.py) определены в O2ACCommon с помощью переменных и функций для конкретных задач
|
||||
|
||||
### Последовательность действий
|
||||
#### Последовательность действий
|
||||
|
||||
Они реализуют командные последовательности, в которых следующее движение либо планируется, в то время как предыдущее движение выполняется, либо совместные траектории могут сохранены или загружены в или из файла для выполнения, не требуя дополнительного времени на планирование.
|
||||
|
||||
|
@ -314,23 +313,23 @@ def on_stop(self):
|
|||
|
||||
Также см. [Pilz_robot_programming](https://github.com/PilzDE/pilz_industrial_motion/tree/melodic-devel/pilz_robot_programming), чтобы узнать об альтернативной реализации Python, которая, вероятно лучше
|
||||
|
||||
## o2ac_rviz
|
||||
### o2ac_rviz
|
||||
|
||||
Данный пакет включает в себя виджет для RViz, созданный для манипуляции и отладки процесса сборки. Каждый плагин для RViz пишется с использованием библиотеки Qt и интегрируется за счёт специального файла XML с описанием данного плагина.
|
||||
|
||||
## o2ac_scene_description
|
||||
### o2ac_scene_description
|
||||
|
||||
Данный пакет включает в себя описание роботизированной системы и сцен. Определения деталей можно найти в o2ac_parts_description. Сцены описаны с помощью фалов xacro (macro XML) и URDF (Unifined Robotic Description Format).
|
||||
|
||||
## o2ac_skills
|
||||
### o2ac_skills
|
||||
|
||||
Данный пакет не эксплуатировался в последней версии проекта представленной на WRC2020, соответственно опустим
|
||||
|
||||
## o2ac_task_planning
|
||||
### o2ac_task_planning
|
||||
|
||||
Данный пакет не эксплуатировался в последней версии проекта представленной на WRC2020, соответственно опустим
|
||||
|
||||
## o2ac_vision
|
||||
### o2ac_vision
|
||||
|
||||
Этот пакет содержит узлы, которые выполняют и передают дейсвия (actions) для комиьютерного зрения, например:
|
||||
|
||||
|
@ -343,7 +342,7 @@ def on_stop(self):
|
|||
|
||||
Для этого узлы Python объявляют ряд действий, определенных в o2ac_msgs.
|
||||
|
||||
### Распознавание деталей
|
||||
#### Распознавание деталей
|
||||
|
||||
Узел распознавания детали состоит из двух компонентов. Один - это обнаружение объекта (Chukyo), другой - оценка позы (AIST).
|
||||
|
||||
|
@ -373,7 +372,7 @@ def on_stop(self):
|
|||
|
||||

|
||||
|
||||
### Порядок распознавания (AIST)
|
||||
#### Порядок распознавания (AIST)
|
||||
|
||||
Вы можете построить порядок дейсвий от получения изображения до распознавания 3D - объектов, а также локализации с использованием `o2ac_vision` пакета, в сочетании с другими пакетами компьютерного зрения, т.е. `aist_depth_filter`, `aist_localization` и `aist_model_spawner`(по желанию). Порядок дейсвтий показан на следующем рисунке:
|
||||
|
||||
|
@ -409,10 +408,104 @@ geometry_msgs/PoseWithCovarianceStamped[] detected_poses_with_covariance
|
|||
|
||||
Пример клиентской программы `o2ac_vision / scripts / o2ac_recognition_client_example.py` показывает, как использовать порядок распознавания из пользовательских прикладных программ. Образец также предоставляет средства для визуализации результатов 3D-локализации с помощью `aist_model_spawner`.
|
||||
|
||||
## o2ac_visualisation
|
||||
### o2ac_visualisation
|
||||
|
||||
Данный пакет предосатвляет плагин визуализации состояния системы как для облегчения отладки, так и для демонстрации.
|
||||
|
||||
## wrs_dataset
|
||||
### wrs_dataset
|
||||
|
||||
Данный пакет содержит датасет Pytorch, используемые в пакете o2ac_vision для обучения распознавания объектов.
|
||||
|
||||
## Проект команды UC San Diego
|
||||
|
||||
Оригинал статьи _Aayush Naik, Priyam Parashar, Jiaming Hu and Henrik I. Christensen_ - [Lessons Learned Developing an Assembly System for WRS 2020 Assembly Challenge](https://arxiv.org/pdf/2103.15236.pdf)
|
||||
|
||||
Авторы ссылаются на опыт извлечённый ранее в ходе конкурса Amazon Picking Challenge - [paper](https://www.ijcai.org/proceedings/2017/0676.pdf).
|
||||
|
||||
Система сборки была разделена на три классических архитектурных слоя абстракции: mission (миссия, верхний уровень), task (задача, средний уровень) и behaviour layer (поведенческий уровень, самый нижний). Уровень миссии и задач разбивает общий план сборки на ряд задач (представленных в виде деревьев поведения). Он также выполняет восстановление после сбоев и планирование в случае сбоев на уровне миссии. Уровень поведения содержит определения и программы для выполнения различных навыков, таких как перемещение руки робота, открывание/закрывание захватов и вставка. Дерево поведения для каждой задачи состоит из этих навыков в виде узлов действий. Существует также прозрачный “системный” уровень, который состоит из аппаратного обеспечения (роботов и датчиков), сетей,операционной системы, ROS и менеджера процессов, такой как Supervisor. Системный уровень отвечает за прозрачное восстановление после сбоев, не связанных с планированием.
|
||||
|
||||
### Структурная схема установки
|
||||
|
||||

|
||||
|
||||
### Планирование задач с обработкой ошибок
|
||||
|
||||
Разработчики смоделировали систему планирования на основе классической трехуровневой архитектуры (3T), сочетающей в себе совещательное планирование на верхнем уровне со специализированным планированием и реактивным управлением потоками на более низких уровнях. Планировщик миссий находил правильный порядок размещения деталей (столкновения между деталями являлись основным фактором) на базе AND/OR-графа, а планировщик задач, основанный на формализме иерархической сети задач (HTN SHOP3 Planner), опирается на знания предметной области и её объекты для создания экземпляра размещения детали в виде полностью упорядоченной последовательности примитивных действий. Результатом этих двух уровней является последовательность действий и связанных с ними предварительных условий для приведения в действие робота на основе таксономии примитивных навыков сборки, предложенной _J. O. Huckaby_ в _Knowledge transfer in robot manipulation tasks_. Для создания экземпляров окончательных планов, разработанных планировщиком задач, и ввода правильных физических параметров использовались деревья поведения.
|
||||
|
||||
Разработчики создали иерархию классов для сбоев, которые могут возникнуть при планировании и выполнении сборки, и заметили, что, хотя некоторые сбои могут быть устранены реактивно на более низком уровне, другие необходимо будет передавать наверх - к совещательному планированию. Хотя объяснение полной иерархии классов выходит за рамки данного исследования, наиболее значимыми классами сбоев в системе сборки были сбои планирования задач, связанные с object grounding, и некритичные сбои выполнения, связанные с вероятностной полнотой. Grounding failures возникали, когда искомые объекты не находились в ожидаемых или оптимальных состояниях для сборочных приспособлений, что иногда требует пересмотра плана с помощью планировщика задач.
|
||||
|
||||
### Деревья поведения
|
||||
|
||||
Для реализации деревьев поведения использовалась библиотека [BehaviorTree.CPP](https://github.com/BehaviorTree/BehaviorTree.CPP) и пользовательский интерфейс для редактирования деревьев [Groot](https://github.com/BehaviorTree/Groot). Деревья поведения загружаются во рантайме и запускаются специальной программой BT-executor, которая работает в другой группе процессов Supervisor, нежели аппаратное обеспечение робота. Таким образом, когда перезапускается аппаратный узел или даже вся роботизированная система, дерево поведения продолжает работать и может возобновить выполнение – это значительно повышает отказоустойчивость. Каждый шаг выполнения записывается в key-value базу данных под названием `Blackboard`, которая используется для сохранения текущего состояния и для связи между узлами.
|
||||
|
||||
Типы действий (конечных узлов Behaviour Tree) поведенческого уровня:
|
||||
* `MoveJoint` - Принимает в качестве цели (joint goal) либо предварительно вычисленное имя ключевого кадра (keyframe), либо числовые значения шарнира. Если это возможно, перемещает руку робота к цели.
|
||||
* `MoveEE` - “Перемещение рабочего органа”. Принимает 6-мерную декартову пространственную цель для рабочего органа. Выполняет вычисления обратной кинематики и перемещает манипулятор робота так, чтобы фрейм конечного эффектора совпадал с фреймом цели
|
||||
* `Grasp` - Открывает/закрывает пальцы захвата. Может также принимать значение от 0 до 1 для частичного открытия/закрытия
|
||||
* `MoveUntilFF` - Перемещает робота вдоль текущей оси до тех пор, пока датчик силы UR5e не обнаружит силу, превышающую указанный порог
|
||||
* `SearchAlign` - Выполняет поиск по спирали в текущей плоскости (перпендикулярно пальцам захвата) для отверстия или полости
|
||||
* `NJInsert` - NonJammingInsert, “Вставка без заклинивания”. После нахождения отверстия с помощью `SearchAlign`, если мы просто протолкнем предмет в руке робота в отверстие, очень вероятно, что он застрянет (из-за строгих допусков). Объект толкается под небольшим углом в направлении, противоположном тому, где датчик ощущает наибольшую силу. Направление изменяется в режиме реального времени в соответствии с текущими значениями датчика силы
|
||||
* `EstimatePose` - Учитывая изображение RGB и название объекта, оценивает позу объекта(объектов) в 6D в кадре камеры
|
||||
* `ComputeGrasp` - Используя имя объекта и его 6-мерную позу (в любой допустимой системе координат, обычно в кадре камеры), вычисляет позу конечного эффектора для стабильного захвата объекта. Эта поза захвата предварительно вычисляется для всех объектов с помощью [Graspit](https://github.com/graspit-simulator/graspit) и сохраняется в базе данных.
|
||||
|
||||
Иллюстрация исполнения дерева поведения для реализации задачи вставки детали:
|
||||
|
||||

|
||||
|
||||
Подробное описание узлов 5-10
|
||||
|
||||

|
||||
|
||||
### Специальные конструктивные решения
|
||||
|
||||
Авторы отмечают, что использование специальных конструктивных решений может значительно снизить сложность всей системы. Это наглядно иллюстрируется конструкцией пальцев:
|
||||
|
||||

|
||||
|
||||
Пальцы имеют углубления для лучшего удержания винтов и стабилизации вала, а также имеют скошенную конструкцию, чтобы убедиться, что после захвата эластичная лента не вырывается. Эта конструкция была разработана в результате тщательного отбора из нескольких вариантов. Конструкция существенно упрощала захват. Например, даже если деталь располагалась с небольшим смещением от оптимальной позиции захвата, то она просто “вставала на место” из-за углублений.
|
||||
|
||||
Авторы также подчеркивают и обратное - неоптимальные конструкторские решения могут увеличить сложность системы. Например, наручные камеры Robotiq были смещены от центра оси захвата (смотрели вниз под углом от запястья) и это создавало проблемы для системы зрения.
|
||||
|
||||
### Оценка положения детали
|
||||
|
||||
Авторы отмечают, что детали сборки из Assembly Challenge отличаются от объектов, которые обычно используются для задач оценки положения - они не имеют ярко выраженной текстуры, имеют различную симметрию, глянцевость, радиальную анизотропию и имеют мало отличительных свойств. Это делает задачу оценки позиции сложнее. Своё видение решения задачи с помощью RGB они изложили в работе [Pose Estimation of Specular and Symmetrical Objects](https://www.researchgate.net/publication/345215874_Pose_Estimation_of_Specular_and_Symmetrical_Objects).
|
||||
|
||||
### Обеспечение надёжности исполнения
|
||||
|
||||
Для проверки надёжности исполнения задания была введена метрика `MTUI` (mean time until intervention, среднее время до вмешательства человека). Без дополнительных мер обеспечения надёжноси MTUI был крайне низким, так как sampling-based планировщики движения не всегда находили правильное решение (в установленные сроки) и многие драйверы оборудования с открытым исходным кодом предоставляли ненадежные интерфейсы. Включение восстанавливающих работу функций с помощью деревьев поведения __немного улучшило показатель MTUI__. Добавление watchdog-подсистемы, которая отслеживала все
|
||||
аппаратные компоненты и могла даже перезапустить всю систему в случае наихудших сбоев, __значительно улучшило MTUI__.
|
||||
То есть использование подсистемы сторожевого пса для перезапуска вышедших из строя компонентов и использование деревьев поведения для возобновления выполнения и восстановления. Использование watchdog и деревьев поведения позволило довести показатель MTUI в среднем до трёх часов непрерывной работы.
|
||||
|
||||
### Проблемы
|
||||
|
||||
Аппаратные
|
||||
|
||||
- При проектировании аппаратного обеспечения не учитывалось распределение нагрузки между USB-контроллерами. Из-за перегрузки оборудования (слишком много камер на одном контроллере) наблюдались частые сбои драйверов для камер. Эта проблема также перешла на захваты, которые находились на том же контроллере, что и камера. Исправлено путем подключения камер к различным USB-контроллерам и захватам к третьей шине компьютера
|
||||
- Помехи между протоколами/кабелями USB-2 и USB-3 приводили к частым сбоям драйверов как для камер, так и для захватов. Исправлено с помощью удлинителей USB 3.0
|
||||
- Проблемы с отключениями механических захватов. Несмотря на то, что захваты были на другом USB-контроллере, всё равно приходилось время от времени перезапускать захваты с помощью watchdog
|
||||
- Сбой связи с манипуляторами. Протокол для связи ROS и UR5e имеет случайные сбои и требовал перезапуска. Это было обнаружено в логах
|
||||
- Колебательное поведение робота при включении контроллера соответствия. Потребовались месяцы, прежде чем они определили первопричину: точка доступа Wi-Fi поблизости вызвала шум датчика силы и крутящего момента робота.
|
||||
|
||||
Программные
|
||||
|
||||
- Контроллеры ROS не запускались. Было исправлено путем отслеживания списка активных контроллеров и перезапуска вышедших из строя контроллеров
|
||||
- Планировщики стохастического движения иногда падали, даже если существовал выполнимый план. Решалось простым перепланированием
|
||||
- Состояние гонки по описанию робота (описание робота не загружено на сервер параметров ROS до того, как это потребуется Контролеру соответствия - compliance controller из ros_control). Исправлено путем добавления 5-секундной задержки перед запуском контроллера соответствия
|
||||
- Многие драйверы оборудования с открытым исходным кодом предоставляли ненадежные интерфейсы
|
||||
|
||||
### Извлечённые уроки
|
||||
|
||||
- Ориентация на устранение неисправностей, модульность, реактивность - ключевые характеристики для обеспечения гибкой сборки
|
||||
- Продуманные конструкторские решения снижают сложность задачи
|
||||
- ROS 1 не подходит для промышленного применения:
|
||||
- Интеграция двух манипуляторов и захватов робота в интегрированную систему была сложной задачей и требовала сложного управления пространством имен. ROS 1 не очень хорошо подходит для настройки нескольких роботов.
|
||||
- ROS 1 изначально не поддерживает управление в реальном времени. Без реального контроля в режиме реального времени невозможно дать официальные гарантии
|
||||
- Ограниченные промежуточные и продвинутые учебные руководства. Нет стандартных рекомендаций по структурированию сложной роботизированной системы.
|
||||
|
||||
### Использованное ПО
|
||||
|
||||
- ОС Ubuntu 18.04
|
||||
- ROS Melodic
|
||||
- MoveIt/OMPL/LazyPRM для планирования движений
|
||||
- BehaviorTree.CPP для деревьев поведения
|
||||
- PyTorch для оценки позиции детали
|
|
@ -2,7 +2,7 @@
|
|||
module.exports = {
|
||||
title: 'Robossembler',
|
||||
tagline: 'Self Replicated Robotics Infrastructure Documentation',
|
||||
url: 'https://robosphere.gitlab.io/robossembler-docs',
|
||||
url: 'https://robosphere.gitlab.io',
|
||||
baseUrl: '/robossembler-docs/',
|
||||
onBrokenLinks: 'throw',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
|
|
16781
package-lock.json
generated
|
@ -15,8 +15,8 @@
|
|||
"build:gitlab": "docusaurus build --out-dir public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "2.0.0-alpha.72",
|
||||
"@docusaurus/preset-classic": "2.0.0-alpha.72",
|
||||
"@docusaurus/core": "^2.0.0-beta.9",
|
||||
"@docusaurus/preset-classic": "^2.0.0-beta.9",
|
||||
"@mdx-js/react": "^1.6.21",
|
||||
"clsx": "^1.1.1",
|
||||
"react": "^17.0.1",
|
||||
|
|
12
sidebars.js
|
@ -18,7 +18,6 @@ module.exports = {
|
|||
'autostorage',
|
||||
'information/information_support',
|
||||
'information/planner',
|
||||
'techinstruction'
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -26,14 +25,13 @@ module.exports = {
|
|||
label: 'Технологии',
|
||||
collapsed: false,
|
||||
items: [
|
||||
'technologies/photopolymer',
|
||||
'technologies/wood',
|
||||
'technologies/machine-learning-in-robotics',
|
||||
'technologies/gripper-tools-research',
|
||||
'technologies/o2ac-repo-review',
|
||||
'technologies/moveit2.md',
|
||||
'technologies/dds_and_ros2.md',
|
||||
'technologies/plansys2'
|
||||
'technologies/wrs2020-assembly-challenge',
|
||||
'technologies/plansys2',
|
||||
'technologies/ASP-overview',
|
||||
'technologies/motion-planning',
|
||||
'technologies/wood',
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|