Merge branch 'master' into 'dosc-programming'

# Conflicts:
#   sidebars.js
This commit is contained in:
Ilya Uraev 2021-11-24 19:43:07 +00:00
commit 2316346bf3
36 changed files with 9396 additions and 17286 deletions

1
.gitignore vendored
View file

@ -14,6 +14,7 @@
.env.development.local
.env.test.local
.env.production.local
.vs
npm-debug.log*
yarn-debug.log*

View file

@ -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

View file

@ -1,6 +0,0 @@
{
"ExpandedNodes": [
""
],
"PreviewInSolutionExplorer": false
}

Binary file not shown.

Binary file not shown.

View file

@ -1,6 +1,6 @@
---
id: autostorage
title: Автоматическое хранение и транспортировка объектов
title: Хранение и транспортировка
---
Храниться объекты АПС должны так, чтобы на них не попадала не летела, скажем, пыль и стружка. Транспортироваться все объекты должны удобным стандартным образом, чтобы не решать каждый раз эту задачу. Этому служит инфраструктура (транспортно-складская). Вот пример варианта минималистичной инфраструктуры:

View file

@ -1,6 +1,6 @@
---
id: information_support
title: Информационное обеспечение автоматического производства
title: Информационное обеспечение
---
В полностью автоматических производственных системах важную роль играют информационные процессы, связанные с разработкой и конструированием изделий, технологической подготовкой и планированием их производства, непосредственным управлением исполнительными устройствами, сбором информации от сенсоров, реагированием на возникающие нештатные и аварийные ситуации, взаимодействием с пользователями и внешней средой.

View file

@ -1,9 +1,9 @@
---
id: planner
title: Планировщик
title: Планирование
---
Планировщик управляет всеми операциями в своем кластере АПС. У него есть глобальный идентификатор, который присваивается ему при производстве. А каждый объект созданный или импортированный извне под управлением данного планировщика получает свой локальный идентификатор. Таким образом, каждый объект получает полностью уникальный идентификатор, состоящий из двух частей.
Планировщик (planner) управляет всеми операциями в своем кластере АПС. У него есть глобальный идентификатор, который присваивается ему при производстве. А каждый объект созданный или импортированный извне под управлением данного планировщика получает свой локальный идентификатор. Таким образом, каждый объект получает полностью уникальный идентификатор, состоящий из двух частей.
При производстве планировщика происходит еще некоторый криптографический процесс, в результате которого материнский и дочерний планировщики получают набор пар идентичных криптографических ключей без необходимости обмена ими по каким бы то ни было каналам передачи данных. Это позволяет им в будущем использовать аутентификацию с закрытым ключом для связи между собой.

View file

@ -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. Тестирование Робота-манипулятора
Применяется Рабочий стол, Робот-манипулятор(новый)+ Щ
Процесс: Новоустановленный Робот-манипулятор одевает Щ, и, попадая в отверстия разъёмов пилонов Рабочий стол отмечает ошибки, поправляя и уточняя исчисленную ранее кинематическую модель себя.
После тестирования робот готов к эксплуатации.
Задачи: разработка картриджа - мелкая катушка(определённое количество) на модуль печатающий;
Проблема лазерной сварки система волоконная, крайне сложная(невозможная для роботов) в ремонте и требует бережного обращения. Возможно применять в ЧПУ закрытого или проходного типа, но не на Робот-манипулятор. Полупроводниковой системе не хватит мощности.
Делать корпус для платы в жизни очень правильно, но плату нужно паять (и так разъёмов многовато, а они вредны для сигнала)
Принято решение реабилитировать сварочный модуль, но добавить сварочный модуль паяльную функцию

View 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__ - множества, построенные на графах(матрицах смежности для них) отношений(соединений) деталей. В вершинах графа - детали, в рёбрах - наличие соединения и иногда дополнительная информация о соединении (тип соединения и т.д.)
![](img/liaison-graph.jpg)
* __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% исследований
* целевых функций - минимизация стоимости и количества изменений направлений сборки.
Отношения вложенности между указанными выше сборочными последовательностями
![](img/assembly-sequence-sets.jpg)
Современные 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-систем.
![](img/assembly_graph_types.jpg)
## Обзор актуальных исследований
### 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. Красная деталь типа "мама", зелёный куб находится в координате центра отверстия детали типа "мама", жёлтая деталь типа "папа".
![](img/insertion_matrix_gen.jpg)
__Полевые испытания__: использовались робот 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).
![](img/wan_ASP_algorithm.jpg)
Алгоритм позволяет найти некоторые оптимальные порядки и направления сборки, которые
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-модель с пользовательскими метаданными, в работе не было задачи автоматизации генерации последовательности сборки
__Архитектура__:
![](img/constrained_based_sequence_planner_architecture.jpg)
* `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-модель + база данных захватов для каждой детали в сборке
__Алгоритм__:
![](img/integrated_ASP_and_Grasp_Planning.jpg)
Сначала создаются карты для тестирования геометрической осуществимости (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`:
![](img/geometric-feasibility-method-2012.jpg)
__Полевые испытания__: нет данных
### 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
__Алгоритм__:
![](img/ASPW-DRL.jpg)
__Полевые испытания__: нет данных. Игрушечные модели в 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

View file

@ -1,6 +1,6 @@
---
id: gripper-tools-research
title: 'Обзор устройств захвата для манипуляторов'
title: 'Устройства захвата'
---
## Популярные модели захватов

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View file

@ -1,6 +1,6 @@
---
id: machine-learning-in-robotics
title: 'Применение машинного обучения в робототехнике'
title: 'Машинное обучение'
---
![robolearning in VR](img/robo-learning-in-VR.jpg)
@ -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

View file

@ -0,0 +1,8 @@
---
id: motion-planning
title: 'Планирование движений'
---
## Moveit2
![moveit2_architecture](img/moveit2_architecture.png)

View file

@ -1,10 +0,0 @@
---
id: moveit2
title: 'Moveit2 и как устроен'
---
## Moveit2
Кратко о текущем состоянии порта Moveit2
![moveit2_architecture](img/moveit2_architecture.png)

View file

@ -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_planners](img/pddl_planners.jpg)
### Плагины и утилиты для работы с PDDL
* Плагины для редакторов [VSCode](https://github.com/jan-dolejsi/vscode-pddl) ![vscode-pddl](https://img.shields.io/github/stars/jan-dolejsi/vscode-pddl.svg) ([video-tutorial](https://www.youtube.com/watch?v=BFlCz49ETcA&list=PL1Q0jeuU6XppflOPFx1qQVuWbXTcjxevU)), [Sublime Text](https://github.com/Pold87/myPDDL) ![myPDDL](https://img.shields.io/github/stars/Pold87/myPDDL.svg)
* [vPlanSim](https://github.com/mastrogiorgis/vPlanSim) - графический интерфейс для визуализации и симуляции PDDL-планирования на базе Python3.7, VTK8.2, PyQt5. ![vPlanSim](https://img.shields.io/github/stars/mastrogiorgis/vPlanSim.svg)
* Парсеры 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) - библиотека общего назначения для разработки, запуска и оценки планировщиков. ![planutils](https://img.shields.io/github/stars/AI-Planning/planutils.svg)
* [blockly-pddl](https://github.com/AI-Planning/blockly-pddl) - транслятор PDDL-файлов в язык Blockly и обратно. ![blockly-pddl](https://img.shields.io/github/stars/AI-Planning/blockly-pddl.svg)
### 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). ![pddlstream](https://img.shields.io/github/stars/caelan/pddlstream.svg)
* [pddlgym](https://github.com/tomsilver/pddlgym) - фреймворк, который автоматически создает среду OpenAI-Gym из спецификаций PDDL - [paper](https://arxiv.org/pdf/2002.06432.pdf). ![pddlgym](https://img.shields.io/github/stars/tomsilver/pddlgym.svg)

View file

@ -1,8 +1,9 @@
---
id: o2ac-repo-review
title: 'Команда o2ac есть чему поучиться'
id: wrs2020-assembly-challenge
title: 'Assembly Challenge 2020'
---
## Предыстория
## Проект команды O2AC
![o2ac_example_2_arm](https://github.com/o2ac/o2ac-ur/raw/main/images/tray_carry.gif)
@ -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 и генерируется повередние робота. Пример графического интерфейса:
![f](http://philserver.bplaced.net/fbe/img/tutorials/fbetut26.png)
![flexbe](img/flexbe_example_1.png)
## 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):
![set_bearing](https://github.com/o2ac/o2ac-ur/raw/main/images/bearing_insertion.gif)
### Порядок распознавания (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. Системный уровень отвечает за прозрачное восстановление после сбоев, не связанных с планированием.
### Структурная схема установки
![](img/ca_schematics.jpg)
### Планирование задач с обработкой ошибок
Разработчики смоделировали систему планирования на основе классической трехуровневой архитектуры (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) и сохраняется в базе данных.
Иллюстрация исполнения дерева поведения для реализации задачи вставки детали:
![](img/ca_bt_execution_full.jpg)
Подробное описание узлов 5-10
![](img/ca_bt_execution.jpg)
### Специальные конструктивные решения
Авторы отмечают, что использование специальных конструктивных решений может значительно снизить сложность всей системы. Это наглядно иллюстрируется конструкцией пальцев:
![](img/ca_special_finger_design.jpg)
Пальцы имеют углубления для лучшего удержания винтов и стабилизации вала, а также имеют скошенную конструкцию, чтобы убедиться, что после захвата эластичная лента не вырывается. Эта конструкция была разработана в результате тщательного отбора из нескольких вариантов. Конструкция существенно упрощала захват. Например, даже если деталь располагалась с небольшим смещением от оптимальной позиции захвата, то она просто “вставала на место” из-за углублений.
Авторы также подчеркивают и обратное - неоптимальные конструкторские решения могут увеличить сложность системы. Например, наручные камеры 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 для оценки позиции детали

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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",

View file

@ -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',
],
},
{

8993
yarn.lock Normal file

File diff suppressed because it is too large Load diff