robossembler.org/docs/models/generation/generation.md

21 KiB
Raw Blame History

id title
generation Генеративный дизайн машинной клетки

Клетка - стандартный фрагмент автоматической производственной системы (АПС), способный к автономной работе, развитию и репликации. Она состоит из оболочки, рабочей, складской и транспортной зон.

Идеальная карта клетки Map[] в нашей модели представляет собой квадратный массив чисел, указывающих, что именно и где должно в ней находиться. Таким образом, карта позволяет определить маршруты перемещения мобильных манипуляторов (ММ), места для складирования объектов, места для монтажа машин, места для обмена объектами с окружающей средой, порядок постройки и развития клетки. Сопоставление фактического состояния элемента территории с элементом карты позволяет выявлять ошибки и аварии.

Алгоритм генеративного дизайна позволяет автоматически спроектировать карту для любого набора заданных в начале программы параметров клетки, учитывая размер и количество машин, площади складов, порты для заряда мобильных манипуляторов и т.п.

(см. рабочий python-код в файле generation.ipynb - лучше открывать с помощью Jupyter Notebook)

Описание элементов карты и их числовые коды:

    1. территория, непригодная к использованию (пока не реализовано, предполагается что на сложной местности, содержащей непроходимые участки тоже можно построить клетку с ограниченным функционалом, огибающую эти участки)
    1. территория, пригодная к использованию (на ней можно строить клетку путем установки готовых блоков с помощью ММ)
    1. элемент пола базовый имеет ножки адаптивной высоты и зацепы для сборки в площадки произвольного размера и формы. ММ укладывают элементы пола прямо на территорию, пригодную к использованию, регулируют ножки по высоте и соединяют с соседними. Между элементами пола могут передаваться электричество и сигналы управления, а при необходимости - и другие коммуникации, не загромождая поверхность над ними и обеспечивая избыточную связность клетки (при повреждении или отсутствии значительного числа элементов пола все равно обеспечивается надежная передача энергии и сигналов управления). При застройке территории ММ может ездить по элементам пола и при этом устанавливать новый элемент пола рядом с собой. Затем продвигатсья дальше. Это позволяет при желании обходиться вообще без аккумуляторов в ММ, питая их все вреям через элементы пола, либо обходиться вообще без ММ, придав элементам пола возможность перемещения объектов.
    1. порт для монтажа прямого элемента забора Забор отделяет клетку от внешней среды, ничего материального не впуская и не выпуская. Граничит с заборами других клеток и потому может участвовать в передаче данных между клетками. Устанавливается с помощью ММ на элемент пола, имеет два разъема на противоположных сторонах для соединения с себе подобными.
    1. порт для монтажа углового элемента забора. Угловой элемент забора граничит сразу с несколькими углами заборов соседних клеток и может играть особую роль в коммуникации. Также может содержать маяки для навигации ММ. Устанавливается на элемент пола, имеет два разъема на смежных сторонах для соединения с элементами забора. Может быть при желании унифицирован с прямым элементом забора.
    1. складское место - элемент пола, предназначенный для установки на него коробок с объектами. Может отличаться от базовых элементов пола, а может и не отличаться. Расстановка складских мест на карте производится так, чтобы коробки на них не мешали друг другу, и к каждому месту был обеспечен доступ ММ хотя бы с одной стороны.
    1. порт створки ворот - элемент забора, способный частично открываться для передвижения ММ между клетками. При этом ММ (возможно, с грузом) проходит через специальный элемент - порт ворот, а сами ворота, находящиеся по бокам от него, приоткрываются. Ничего и никого другого ворота не пропускают. Таким образом, чтобы перейти из одной клетки в другую (например, вновь строящуюся) ММ сначала проходит "свои", потом "чужие" ворота.
    1. порт ворот - элемент забора, спообный пропускать через себя коробки и ММ. Мы предполагаем что ММ может быть шире чем порт ворот (который сам должен быть перевозимым при помощи ММ), поэтому окружаем его с двух сторон воротами. Коробка же несколько уже чем порт ворот, поэтому может проходить через него в обоих направлениях, если он будет открыт. По умолчанию же порт ворот закрыт и открывается лишь когда ММ передает через него груз в соседнюю клетку. Вариант использования 1: ММ с грузом подъезжает вплотную к порту ворот своей клетки и сквозь него кладет коробку в порт ворот чужой клетки, откуда его забирает ММ той клетки. Вариант использования 2: ММ с грузом кладет коробку в порт ворот своей клетки, а ММ другой клетки забирает его оттуда.
    1. трасса - базовый элемент пола, учитываемый при построении маршрутов и используемый для перемещения ММ во время работы клетки. Расстановка трасс на карте производится так чтобы обеспечить доступ ММ во все необходимые места и избегать заторов при работе многих ММ.
    1. машинный порт - элемент пола на которых устанавливается машинный блок (автоматизированное рабочее место (АРМ), станок или любой другой компонент такого рода). Машинные порты собраны в группы, образующие места для монтажа машины.
    1. рабочий порт - элемент пола, на который устанавливается коробка с объектом для его использования машиной, находящейся рядом. Машины изначально проектируются так чтобы брать и помещать объекты в коробки находящиеся здесь. Вокруг каждой машины создается как можно больше рабочих портов так чтобы они не мешали друг другу и могли независимо обслуживаться ММ.
    1. порт мобильного манипулятора - элемент пола, предназначенный для заряда и парковки мобильного манипулятора
    1. порт электростанции - машинный порт, зарезервированный для монтажа блоков специфических машин - электростанций
    1. порт утилизатора - машинный порт, зарезервированный для монтажа блоков специфических машин - утилизаторов отходов и брака
    1. порт планировщика - машинный порт, зарезервированный для монтажа блоков специфических машин - планировщиков
    1. порт шахты - машинный порт, зарезервированный для монтажа блоков специфических машин - шахт, автоматически добывающих полезные ископаемые из недр земли. Может отличаться возможностью доступа через него вниз. При этом должна сохраняться возможность проезда по нему ММ.

Мобильный манипулятор может брать, перемещать и устанавливать любые из этих блоков, а также другие мобильные маниепуляторы и коробки. Обрабатываемые АПС бъекты могут находиться в боксах и путешествовать с ними, а в рабочих портах машин удаляться из коробок и помещаться в них. Также в рабочих портах могнут появляться (как результат работы машин) объекты, не помещающиеся в коробки: сами коробки, мобильные манипуляторы, все вышеперечисленные пронумерованные блоки.

Алгоритм генеративного дизайна

В качестве исходных данных используются:

  • максимальное число блоков в машине
  • число рабочих машин в клетке (для роста, для репликации, максимальное)
  • максимальное число планировщиков, утилизаторов, электростанций, шахт
  • емкость склада (для роста, для репликации, максимальная)
  • максимальное число мобильных манипуляторов
  • число машиномест и складских мест оставляемое пустым для резерва

Далее выполняются следующие действия:

  • Найти общее количество машин (включая служебные) и общую емкость склада (включая места для ММ)
  • Подобрать прямоугольную форму машины, по возможности близкую к квадратной, содержащую количество блоков не меньше заданного и хорошо стыкуемую с соседями, дорожками и складской зоной. Определить ширину и высоту машины, фактическое количество в ней блоков и занимаемую ей площадь.
  • Подобрать прямоугольную форму рабочей зоны, по возможности близкую к квадратной, содержащую количество машин не меньше заданного и хорошо стыкуемую с дорожками и складскими зонами. Определить ширину и высоту рабочей зоны, фактическое количество машин и занимаемую ей площадь.
  • Рассчитать размер территории, занимаемой клеткой
  • Создать карту как числовой массив (или импортировать из файла для учета непроходимых территорий)
  • Заполнить ее базовыми элементами пола
  • Указать порты для прямых и угловых элементов забора
  • Задать трассу по периметру клетки
  • Указать порты для монтажа ворот и створок ворот
  • Раставить складские места
  • Создать посередине клетки рабочую зону - машины, их рабочие порты, трассы между ними
  • Создать дополнительные вертикальные трассы возле машинной зоны
  • Создать порты мобильных манипуляторов
  • Зарегистрировать элементы карты как экземпляры классов

Примеры работы алгоритма. Над картинками указаны задаваемые число блоков в машине, число машин, число складских мест и ММ.

Artificial cells examples

Можно генерировать и очень большие клетки с сотнями тысяч и даже миллионами элементов. Инструменты видуализации matplotlib позволяют величивать фрагменты и "бродить" по клетке.

Artificial cells examples

Порядок фактической постройки клетки

Когда у нас есть общая карта клетки, можно, сопоставляя реальность с этой картой осмысленно диагностировать, ремонтировать и воспроизводить клетки.

Начинаем с анализа территории. Если есть непроходимые, непригодные участки, смотрим, достаточный ли запас места чтобы их обойти (вычеркиваем машины и складские позиции на этих территориях и смотрим, достаточно ли места для работ I и II очереди) или бракуем весь квадрат и ничего там не строим.

Задача I очереди строительства - установить все необходимое для самостоятельного развития новой клетки.

  • Все элементы пола. Строительство начинается с одной или нескольких из сторон. Первыми укладываются элементы пола, граничащие с воротами материнской клетки. После этого ММ огут заехать на них и установить смежные с ними элементы пола и так далее.
  • Забор с угловыми элементами и воротами
  • По одному экземпляру служебных машин: электростанция, планировщик, утилизатор, шахта
  • Рабочие машины I очереди
  • Коробки с объектами I очереди

После этого клетка может развиваться сама. Начинаются работы II очереди (самостоятельно или при помощи соседей). Их цель - обеспечить клетку всем необходимым для самостоятельной репликации.

  • Рабочие машины II очереди
  • Коробки с объектами II очереди

После этого клетка способна самостоятельно производить себе подобные. Дальнейшее ее поведение может определяться, например, следующим алгоритмом:

  • Если рядом есть строящиеся клетки, помогаем им в работах I и II очереди (получаем доступ к плану производства и подписываемся на выполнение его части, производим и отправляем)
  • Иначе, если рядом есть пустое место, создаем и строим там новую клетку (выпускаем стандартный план ее производства и выполняем его, сами или при помощи соседей).
  • Иначе, если со стороны одного из соседей приходит высокий (выше заданного предела) уровень сигнала об активном строительстве новых клеток ("гормона роста"), производим и передаем все производимое туда. Так как строящиеся клетки могут быть не близко, в этих условиях производим и отправляем только наиболее стандартные и массовые компоненты вроде элементов пола и ММ.
  • Иначе ведем работы III очереди - нарабатываем элементы пола, машины и коробки с объектами, оставляя свободным лишь установленное резервное количество мест складских и машинных.

Задачи на будущее

  • умная регистрация машинных блоков, машиномест со связанными портами и объектов
  • перемещение ММ, перевозка коробок
  • правила дорожного движения для ММ и тесты на случайные перемещения коробок толпой мм
  • репликация как монтаж готовых элементов пола и блоков при помощи ММ
  • демонтаж и замена случайно поврежденных блоков
  • межклеточное взаимодействие
  • соответсвие объектов коробкам
  • подробное описание работы машин - что из чего они делают
  • генерация технологических графов и их исполнение клеткой
  • перейти от абстрактных к конкретным машинам и объектам