robossembler.org/docs/technologies/assembly-sequence-planning-overview.md

198 lines
No EOL
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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

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