21 KiB
id | title |
---|---|
generation | Генеративный дизайн машинной клетки |
Клетка - стандартный фрагмент автоматической производственной системы (АПС), способный к автономной работе, развитию и репликации. Она состоит из оболочки, рабочей, складской и транспортной зон.
Идеальная карта клетки Map[] в нашей модели представляет собой квадратный массив чисел, указывающих, что именно и где должно в ней находиться. Таким образом, карта позволяет определить маршруты перемещения мобильных манипуляторов (ММ), места для складирования объектов, места для монтажа машин, места для обмена объектами с окружающей средой, порядок постройки и развития клетки. Сопоставление фактического состояния элемента территории с элементом карты позволяет выявлять ошибки и аварии.
Алгоритм генеративного дизайна позволяет автоматически спроектировать карту для любого набора заданных в начале программы параметров клетки, учитывая размер и количество машин, площади складов, порты для заряда мобильных манипуляторов и т.п.
(см. рабочий python-код в файле generation.ipynb - лучше открывать с помощью Jupyter Notebook)
Описание элементов карты и их числовые коды:
-
- территория, непригодная к использованию (пока не реализовано, предполагается что на сложной местности, содержащей непроходимые участки тоже можно построить клетку с ограниченным функционалом, огибающую эти участки)
-
- территория, пригодная к использованию (на ней можно строить клетку путем установки готовых блоков с помощью ММ)
-
- элемент пола базовый имеет ножки адаптивной высоты и зацепы для сборки в площадки произвольного размера и формы. ММ укладывают элементы пола прямо на территорию, пригодную к использованию, регулируют ножки по высоте и соединяют с соседними. Между элементами пола могут передаваться электричество и сигналы управления, а при необходимости - и другие коммуникации, не загромождая поверхность над ними и обеспечивая избыточную связность клетки (при повреждении или отсутствии значительного числа элементов пола все равно обеспечивается надежная передача энергии и сигналов управления). При застройке территории ММ может ездить по элементам пола и при этом устанавливать новый элемент пола рядом с собой. Затем продвигатсья дальше. Это позволяет при желании обходиться вообще без аккумуляторов в ММ, питая их все вреям через элементы пола, либо обходиться вообще без ММ, придав элементам пола возможность перемещения объектов.
-
- порт для монтажа прямого элемента забора Забор отделяет клетку от внешней среды, ничего материального не впуская и не выпуская. Граничит с заборами других клеток и потому может участвовать в передаче данных между клетками. Устанавливается с помощью ММ на элемент пола, имеет два разъема на противоположных сторонах для соединения с себе подобными.
-
- порт для монтажа углового элемента забора. Угловой элемент забора граничит сразу с несколькими углами заборов соседних клеток и может играть особую роль в коммуникации. Также может содержать маяки для навигации ММ. Устанавливается на элемент пола, имеет два разъема на смежных сторонах для соединения с элементами забора. Может быть при желании унифицирован с прямым элементом забора.
-
- складское место - элемент пола, предназначенный для установки на него коробок с объектами. Может отличаться от базовых элементов пола, а может и не отличаться. Расстановка складских мест на карте производится так, чтобы коробки на них не мешали друг другу, и к каждому месту был обеспечен доступ ММ хотя бы с одной стороны.
-
- порт створки ворот - элемент забора, способный частично открываться для передвижения ММ между клетками. При этом ММ (возможно, с грузом) проходит через специальный элемент - порт ворот, а сами ворота, находящиеся по бокам от него, приоткрываются. Ничего и никого другого ворота не пропускают. Таким образом, чтобы перейти из одной клетки в другую (например, вновь строящуюся) ММ сначала проходит "свои", потом "чужие" ворота.
-
- порт ворот - элемент забора, спообный пропускать через себя коробки и ММ. Мы предполагаем что ММ может быть шире чем порт ворот (который сам должен быть перевозимым при помощи ММ), поэтому окружаем его с двух сторон воротами. Коробка же несколько уже чем порт ворот, поэтому может проходить через него в обоих направлениях, если он будет открыт. По умолчанию же порт ворот закрыт и открывается лишь когда ММ передает через него груз в соседнюю клетку. Вариант использования 1: ММ с грузом подъезжает вплотную к порту ворот своей клетки и сквозь него кладет коробку в порт ворот чужой клетки, откуда его забирает ММ той клетки. Вариант использования 2: ММ с грузом кладет коробку в порт ворот своей клетки, а ММ другой клетки забирает его оттуда.
-
- трасса - базовый элемент пола, учитываемый при построении маршрутов и используемый для перемещения ММ во время работы клетки. Расстановка трасс на карте производится так чтобы обеспечить доступ ММ во все необходимые места и избегать заторов при работе многих ММ.
-
- машинный порт - элемент пола на которых устанавливается машинный блок (автоматизированное рабочее место (АРМ), станок или любой другой компонент такого рода). Машинные порты собраны в группы, образующие места для монтажа машины.
-
- рабочий порт - элемент пола, на который устанавливается коробка с объектом для его использования машиной, находящейся рядом. Машины изначально проектируются так чтобы брать и помещать объекты в коробки находящиеся здесь. Вокруг каждой машины создается как можно больше рабочих портов так чтобы они не мешали друг другу и могли независимо обслуживаться ММ.
-
- порт мобильного манипулятора - элемент пола, предназначенный для заряда и парковки мобильного манипулятора
-
- порт электростанции - машинный порт, зарезервированный для монтажа блоков специфических машин - электростанций
-
- порт утилизатора - машинный порт, зарезервированный для монтажа блоков специфических машин - утилизаторов отходов и брака
-
- порт планировщика - машинный порт, зарезервированный для монтажа блоков специфических машин - планировщиков
-
- порт шахты - машинный порт, зарезервированный для монтажа блоков специфических машин - шахт, автоматически добывающих полезные ископаемые из недр земли. Может отличаться возможностью доступа через него вниз. При этом должна сохраняться возможность проезда по нему ММ.
Мобильный манипулятор может брать, перемещать и устанавливать любые из этих блоков, а также другие мобильные маниепуляторы и коробки. Обрабатываемые АПС бъекты могут находиться в боксах и путешествовать с ними, а в рабочих портах машин удаляться из коробок и помещаться в них. Также в рабочих портах могнут появляться (как результат работы машин) объекты, не помещающиеся в коробки: сами коробки, мобильные манипуляторы, все вышеперечисленные пронумерованные блоки.
Алгоритм генеративного дизайна
В качестве исходных данных используются:
- максимальное число блоков в машине
- число рабочих машин в клетке (для роста, для репликации, максимальное)
- максимальное число планировщиков, утилизаторов, электростанций, шахт
- емкость склада (для роста, для репликации, максимальная)
- максимальное число мобильных манипуляторов
- число машиномест и складских мест оставляемое пустым для резерва
Далее выполняются следующие действия:
- Найти общее количество машин (включая служебные) и общую емкость склада (включая места для ММ)
- Подобрать прямоугольную форму машины, по возможности близкую к квадратной, содержащую количество блоков не меньше заданного и хорошо стыкуемую с соседями, дорожками и складской зоной. Определить ширину и высоту машины, фактическое количество в ней блоков и занимаемую ей площадь.
- Подобрать прямоугольную форму рабочей зоны, по возможности близкую к квадратной, содержащую количество машин не меньше заданного и хорошо стыкуемую с дорожками и складскими зонами. Определить ширину и высоту рабочей зоны, фактическое количество машин и занимаемую ей площадь.
- Рассчитать размер территории, занимаемой клеткой
- Создать карту как числовой массив (или импортировать из файла для учета непроходимых территорий)
- Заполнить ее базовыми элементами пола
- Указать порты для прямых и угловых элементов забора
- Задать трассу по периметру клетки
- Указать порты для монтажа ворот и створок ворот
- Раставить складские места
- Создать посередине клетки рабочую зону - машины, их рабочие порты, трассы между ними
- Создать дополнительные вертикальные трассы возле машинной зоны
- Создать порты мобильных манипуляторов
- Зарегистрировать элементы карты как экземпляры классов
Примеры работы алгоритма. Над картинками указаны задаваемые число блоков в машине, число машин, число складских мест и ММ.
Можно генерировать и очень большие клетки с сотнями тысяч и даже миллионами элементов. Инструменты видуализации matplotlib позволяют величивать фрагменты и "бродить" по клетке.
Порядок фактической постройки клетки
Когда у нас есть общая карта клетки, можно, сопоставляя реальность с этой картой осмысленно диагностировать, ремонтировать и воспроизводить клетки.
Начинаем с анализа территории. Если есть непроходимые, непригодные участки, смотрим, достаточный ли запас места чтобы их обойти (вычеркиваем машины и складские позиции на этих территориях и смотрим, достаточно ли места для работ I и II очереди) или бракуем весь квадрат и ничего там не строим.
Задача I очереди строительства - установить все необходимое для самостоятельного развития новой клетки.
- Все элементы пола. Строительство начинается с одной или нескольких из сторон. Первыми укладываются элементы пола, граничащие с воротами материнской клетки. После этого ММ огут заехать на них и установить смежные с ними элементы пола и так далее.
- Забор с угловыми элементами и воротами
- По одному экземпляру служебных машин: электростанция, планировщик, утилизатор, шахта
- Рабочие машины I очереди
- Коробки с объектами I очереди
После этого клетка может развиваться сама. Начинаются работы II очереди (самостоятельно или при помощи соседей). Их цель - обеспечить клетку всем необходимым для самостоятельной репликации.
- Рабочие машины II очереди
- Коробки с объектами II очереди
После этого клетка способна самостоятельно производить себе подобные. Дальнейшее ее поведение может определяться, например, следующим алгоритмом:
- Если рядом есть строящиеся клетки, помогаем им в работах I и II очереди (получаем доступ к плану производства и подписываемся на выполнение его части, производим и отправляем)
- Иначе, если рядом есть пустое место, создаем и строим там новую клетку (выпускаем стандартный план ее производства и выполняем его, сами или при помощи соседей).
- Иначе, если со стороны одного из соседей приходит высокий (выше заданного предела) уровень сигнала об активном строительстве новых клеток ("гормона роста"), производим и передаем все производимое туда. Так как строящиеся клетки могут быть не близко, в этих условиях производим и отправляем только наиболее стандартные и массовые компоненты вроде элементов пола и ММ.
- Иначе ведем работы III очереди - нарабатываем элементы пола, машины и коробки с объектами, оставляя свободным лишь установленное резервное количество мест складских и машинных.
Задачи на будущее
- умная регистрация машинных блоков, машиномест со связанными портами и объектов
- перемещение ММ, перевозка коробок
- правила дорожного движения для ММ и тесты на случайные перемещения коробок толпой мм
- репликация как монтаж готовых элементов пола и блоков при помощи ММ
- демонтаж и замена случайно поврежденных блоков
- межклеточное взаимодействие
- соответсвие объектов коробкам
- подробное описание работы машин - что из чего они делают
- генерация технологических графов и их исполнение клеткой
- перейти от абстрактных к конкретным машинам и объектам