diff --git a/docs/motivation.md b/docs/motivation.md new file mode 100644 index 0000000..deaa446 --- /dev/null +++ b/docs/motivation.md @@ -0,0 +1,32 @@ +--- +id: motivation +title: Мотивация +--- + +![Глянцевая робофабрика](Images/robofactory_art.jpg) + +Идея создания роботов, которые воспроизводят сами себя, занимает умы человечества с середины 20 века. Джон фон Нейман - отец-основатель информатики, был одним из первых, кто озадачился этим вопросом по серьёзному. Тем не менее, за прошедшие десятилетия, тема так и не вышла за рамки академических кругов. Все известные широкой публике [проекты](https://doi.org/10.1146/annurev-control-071819-010010) собирающих самих себя машин не нашли своего применения ни в промышленности, ни в повседневной жизни. + +Вполне возможно, что это происходит по той причине, что самовоспроизводство не рассматривается с практической точки зрения - как технология, способная привнести ощутимый вклад улучшение качества жизни людей и общества. Эксперименты исследовательских ВУЗов лишь подкрепляют эту точку зрения. + +В тоже время, коммерческие компании также не готовы прибегать к технологиями самовоспроизводства. Робототехнические комплексы не проектируются для автономной эксплуатации, а чрезмерная автоматизация несёт дополнительные риски. Развитие коллаборативных технологий ещё дальше смещает внимание компаний от такой постановки задачи. + +То есть с одной стороны мы видим исключительно академические эксперименты, лишённые какой-либо прикладной ценности. С другой стороны мы наблюдаем за тем, как ведущие мировые компании избегают полностью автоматизировать производство. + +В рамках проекта ___Robossembler___ мы постараемся разрешить это противоречие и использовать технологии самовоспроизводства для достижения практической пользы. На наш взгляд технологии самовоспроизводства действительно важны - они способны, например, обеспечить зачастую критически важную масштабируемость производственной системы (резко нарастить производство какого-то жизненно-важного для общества ресурса - например, респираторов). + +## Предпосылки + +Современные производственные системы (заводы, фабрики) представляют собой сложные программно-аппаратные комплексы, состоящие из большого количества компонентов с разной степенью взаимозависимости, которые разрабатываются, изготавливаются и поставляются разными компаниями. Глубокое разделение труда с одной стороны повышает качество, но с другой - затрудняет возможности интеграции компонентов в полностью автоматизированные надсистемы. +В свою очередь, задача разработки автономных (_light's out_) или самовоспроизводящихся (_self-replication_) технических систем требует тесной интеграции данных жизненного цикла в рамках общего для всех его подсистем требования «безлюдности». Данное требование также налагает ряд существенных ограничений на дизайн всех компонентов системы и делает почти невозможным разработку и внедрение в рамках _отдельно взятой компании_. Даже наиболее автоматизированные отрасли промышленности (например, автомобильная) не могут уйти от ручного труда; в особенности на сборочных операциях. + +Однако полностью автоматизированное производство обладает и рядом преимуществ, потому как позволяет достичь высокого синергетического эффекта за счёт отказа от +* человеко-машинных интерфейсов и требований к эстетичности (в том числе специальная маркировка); +* условий эксплуатации, адаптированных под человека (воздух, влажность, освещение, температура); +* соблюдения стандартов безопасности, взаимозаменяемости в рамках существующей номенклатуры компонентов, ремонтопригодности. + +То есть разработка подобного рода систем требует пересмотра многих компонентов технических систем и принципов производственного процесса, который в настоящее время ориентирован под сборку, наладку и эксплуатацию человеком. + +Однако то, что невозможно для отдельно взятой компании, может быть возможным для международного движения open source. Открытость процесса разработки и документации посодействует непрерывной интеграции данных жизненного цикла подсистем, разрабатываемых отдельными командами, что затруднительно в условиях закрытых инжиниринговых фирм. + +Также, современный уровень вычислительных систем на текущем этапе их развития делает возможным создание цифровых двойников (_digital twin_) производств, поведение которых в рамках симуляции может быть приближено к реальным физическим объектам. В перспективе станет возможным не дожидаться опытного производства, чтобы проверить какую-то гипотезу, а ограничиться физическим и имитационным моделированием. Разработчики не будут скованы ограничениями существующей компонентной базы и обусловленной этим инерцией мышления. Допустимо придумать всё с нуля — с учётом требования полной автоматизированности. \ No newline at end of file diff --git a/docs/robossembler-overview.md b/docs/robossembler-overview.md index b2a29a7..8b4c393 100644 --- a/docs/robossembler-overview.md +++ b/docs/robossembler-overview.md @@ -1,57 +1,37 @@ --- -title: О проекте Robossembler +title: Рамки проекта slug: / --- -![Глянцевая робофабрика](Images/robofactory_art.jpg) -Идея создания роботов, которые воспроизводят сами себя, занимает умы человечества с середины 20 века. Джон фон Нейман - отец-основатель информатики, был одним из первых, кто озадачился этим вопросом по серьёзному. Тем не менее, за прошедшие десятилетия, тема так и не вышла за рамки академических кругов. Все известные широкой публике [проекты](https://doi.org/10.1146/annurev-control-071819-010010) собирающих самих себя машин не нашли своего применения ни в промышленности, ни в повседневной жизни. +Цель проекта - создание ___симуляции___ автономной производственной линии, где роботы-манипуляторы собирают свои копии, осуществляют их наладку и ввод в эксплуатацию, чем достигается частичное самовоспроизводство. Проектирование _изначально автономной_ производственной системы позволит использовать материалы, технологии и условия эксплуатации, недопустимые для классических промышленных систем. -Вполне возможно, что это происходит по той причине, что самовоспроизводство не рассматривается с практической точки зрения - как технология, способная привнести ощутимый вклад улучшение качества жизни людей и общества. Эксперименты исследовательских ВУЗов лишь подкрепляют эту точку зрения. +## Компоненты системы и их репозитории -В тоже время, коммерческие компании также не готовы прибегать к технологиями самовоспроизводства. Робототехнические комплексы не проектируются для автономной эксплуатации, а чрезмерная автоматизация несёт дополнительные риски. Развитие коллаборативных технологий ещё дальше смещает внимание компаний от такой постановки задачи. +### Робот-манипулятор с 6-ю степенями свободы +Роботы-манипуляторы Robossembler со сменными инструментами покрывают большой класс производственных задач. Они проектируются для автономной сборки и эксплуатации, поэтому к ним не предъявляются характерные для коллаборативных роботов требования безопасности, эстетичности и быстродействия. -То есть с одной стороны мы видим исключительно академические эксперименты, лишённые какой-либо прикладной ценности. С другой стороны мы наблюдаем за тем, как ведущие мировые компании избегают полностью автоматизировать производство. +В проекте разрабатываются два варианта исполнения манипулятора: +- [Манипулятор](https://gitlab.com/robosphere/roboarm) для изготовления с помощью литья в [прессформе](https://gitlab.com/robosphere/cnc/roboarm-link-mold). Звено данного манипулятора состоит из двух оригинальных [сервоприводов](https://gitlab.com/robosphere/servo) и производится методом заливки компаундом, перестановкой оснастки на позицию будущего звена и дальнейшей закладкой приводов и кабелей. Данное технологические решение позволяет избавиться от крепёжных, кабельных и ременных соединений, а также необходимости отдельно производить корпус. Материал компаунда подбирается таким образом, чтобы обеспечить оптимальный теплоотвод, дешевизну, удобную утилизацию и повторную переработку компонентов манипулятора. Типы компаунда могут варьироваться в зависимости от нагрузок на конкретные разновидности звеньев. +- [Манипулятор](https://gitlab.com/robosphere/roboarm-diy-version) для изготовления с помощью 3D-печати. Используются серийно изготавливаемые приводы GM6208 с оригинальным редуктором. -В рамках проекта ___Robossembler___ мы постараемся разрешить это противоречие и использовать технологии самовоспроизводства для достижения практической пользы. На наш взгляд технологии самовоспроизводства действительно важны - они способны, например, обеспечить зачастую критически важную масштабируемость производственной системы (резко нарастить производство какого-то жизненно-важного для общества ресурса - например, респираторов). - -## Предпосылки - -Современные производственные системы (заводы, фабрики) представляют собой сложные программно-аппаратные комплексы, состоящие из большого количества компонентов с разной степенью взаимозависимости, которые разрабатываются, изготавливаются и поставляются разными компаниями. Глубокое разделение труда с одной стороны повышает качество, но с другой - затрудняет возможности интеграции компонентов в полностью автоматизированные надсистемы. -В свою очередь, задача разработки автономных (_light's out_) или самовоспроизводящихся (_self-replication_) технических систем требует тесной интеграции данных жизненного цикла в рамках общего для всех его подсистем требования «безлюдности». Данное требование также налагает ряд существенных ограничений на дизайн всех компонентов системы и делает почти невозможным разработку и внедрение в рамках _отдельно взятой компании_. Даже наиболее автоматизированные отрасли промышленности (например, автомобильная) не могут уйти от ручного труда; в особенности на сборочных операциях. - -Однако полностью автоматизированное производство обладает и рядом преимуществ, потому как позволяет достичь высокого синергетического эффекта за счёт отказа от -* человеко-машинных интерфейсов и требований к эстетичности (в том числе специальная маркировка); -* условий эксплуатации, адаптированных под человека (воздух, влажность, освещение, температура); -* соблюдения стандартов безопасности, взаимозаменяемости в рамках существующей номенклатуры компонентов, ремонтопригодности. - -То есть разработка подобного рода систем требует пересмотра многих компонентов технических систем и принципов производственного процесса, который в настоящее время ориентирован под сборку, наладку и эксплуатацию человеком. - -Однако то, что невозможно для отдельно взятой компании, может быть возможным для международного движения open source. Открытость процесса разработки и документации посодействует непрерывной интеграции данных жизненного цикла подсистем, разрабатываемых отдельными командами, что затруднительно в условиях закрытых инжиниринговых фирм. - -Также, современный уровень вычислительных систем на текущем этапе их развития делает возможным создание цифровых двойников (_digital twin_) производств, поведение которых в рамках симуляции может быть приближено к реальным физическим объектам. В перспективе станет возможным не дожидаться опытного производства, чтобы проверить какую-то гипотезу, а ограничиться физическим и имитационным моделированием. Разработчики не будут скованы ограничениями существующей компонентной базы и обусловленной этим инерцией мышления. Допустимо придумать всё с нуля — с учётом требования полной автоматизированности. - -## Рамки проекта - -Мы начнём с конца, а именно с процесса сборки, с автоматизацией которого есть проблемы даже у самых технологичных производителей. - -Мы создадим _цифровую модель_ производственной линии, где роботы-манипуляторы собирают свои копии и сразу же вводят их в работу, чем и достигается частичное самовоспроизводство. Манипуляторы покрывают довольно большой класс производственных задач при наличии разнообразного сменного инструмента, их сборка до сих пор слабо автоматизирована даже у ведущих производителей. Мы покажем каким образом требование "безлюдности" позволит это осуществить. - -Наш подход отличается от подходов современных производителей манипуляторов тем, что мы будем создавать _изначально автономную систему_, где не предполагается присутствие человека. Мы будем использовать материалы, технологии и условия эксплуатации, которые могут быть недопустимы для неавтономных промышленных систем. После ввода в эксплуатацию производственная линия будет самостоятельно собирать изделия, осуществлять их наладку и ввод в эксплуатацию. Таким образом, при наличии достаточного количества поступающих на вход линии комплектующих, линия будет непрерывно наращивать свой производственный потенциал. - -Звенья манипулятора будут обладать следующими свойствами: - -1. Конструкция обеспечивает максимальное использование пространства вокруг робота, что хорошо для автономных систем, оперирующих в небольшом объёме, и для совместной сборки несколькими роботами; -2. Кабельные и ременные соединения сложны в монтаже, поэтому конструкция манипулятора не будет их предусматривать; вместо этого мы будем стремиться к созданию кабелей-стержней, вмонтированных в роторы моторов; -3. Не учитываются требования безопасности и эстетичности (которые соблюдаются для коллаборативных роботов). - -Роботы-манипуляторы будут оснащаться рабочими столами - местами, где будет осуществляться сборка. Столы будут обеспечивать: - -1. Легкое подключение к нему оснований манипуляторов с помощью специальных надёжных электрических разъемов, которые предстоит разработать; +### Рабочий стол +Роботы-манипуляторы оснащаются [рабочими столами](https://gitlab.com/robosphere/cnc/roboarm-workspace) - местами, где будет осуществляться сборка и другие технологические операции. Рабочий стол имеет форму пчелиной соты и содержит в себе вычислительный узел для управления рабочим местом. +Столы будут обеспечивать: +1. Легкое подключение к ним манипуляторов с помощью специальных надёжных электрических разъемов; 2. Электропитание и управление - рабочий стол будет включать в себя систему управления для всех подключаемых к нему манипуляторов; -3. Столы будут подключаться друг к другу, образуя связанную локальной сетью большую производственную линию, где будет возможна организация конвейеров. +3. Подключение к себе других рабочих столов для создания связанной локальной сети и производственной линии. -Простота реализации сборки будет достигнута благодаря формовке корпусов с помощью компаунда. Мы избавимся от крепежа и необходимости производить отдельно корпус. Материал компаунда можно подобрать таким образом, чтобы обеспечить оптимальный теплоотвод, дешевизну (без оглядки на безопасность для человека), удобную утилизацию и повторную переработку компонентов манипулятора. Например, вспененный полимер на основе кремнезёма(не нефтепродукт). Его легко растворять, склеивать - неисправные манипуляторы будут погружаться в растворитель и разбираться на комплектующие без ущерба для них самих. -## Совершенствование методов разработки +### Приспособления манипулятора +Все приспособления монтируются к манипулятору через [стыковочный интерфейс](https://gitlab.com/robosphere/arm-tools/connection-tool). Для смены и хранения двух и более приспособлений используется [Библиотека приспособлений](https://gitlab.com/robosphere/arm-tools/tools-library), к которой в дальнейшем будут присоединяться узлы подачи материалов. -Разработка самовоспроизводящейся системы, в силу её сложности, потребует вовлечения большого количества людей, новых инженерных решений и интенсивного процесса управления данными жизненного цикла(PLM). Указанная выше модель частично самовоспроизводящейся фабрики может послужить полигоном для отработки открытых децентрализованных методов проектирования и в перспективе обеспечить достаточное для реализации грандиозных проектов масштабирование. Разработка отдельных узлов может вестись отдельными независимыми командами, а интеграция данных жизненного цикла разработки этих узлов может осуществляться через публичную распределённую базу данных. Для взаимодействия разработчиков и существующих в реальности капиталоёмких кибер-физических систем с целью изготовления прототипов или проведения испытаний может использоваться платформа Robonomics, в которой будут публиковаться заказы на изготовление/испытание деталей/сборок/изделий и с помощью сети маяков подбираться наиболее выгодные предложения по воплощению. Это позволит опробовать механизм коммуникации между отдельными парачейнами в рамках экосистемы Polkadot, где парачейн Robonomics выступит шлюзом между идеальным миром моделей разработчиков и реальным миром кибер-физических систем. Постепенно взаимодействие этих миров поспособствует выстроить оптимальную траекторию от имеющихся возможностей к идеальному желаемому результату. \ No newline at end of file +Полный перечень приспособлений +- [Механический захват](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) + +Рабочий стол и подключённые к нему манипуляторы с приспособлениями формируют Автоматизированное рабочее место (АРМ), которое может быть объединено с другими рабочими местами, формируя сложные производственные комплексы. Конфигурация конкретного АРМ формируется исходя из требований к производственному процессу. \ No newline at end of file diff --git a/docs/techinstruction.md b/docs/techinstruction.md index 5e34506..eb814e4 100644 --- a/docs/techinstruction.md +++ b/docs/techinstruction.md @@ -5,60 +5,38 @@ title: 'Технологическая инструкция по сборке' ## Компоненты системы -### Автоматическое рабочее место (АРМ) -Главная рабочая единица: рабочий стол + 2 и более роботов манипуляторов, может иметь адаптер станков. Может быть объединена с другими комплексами рабочего места. -### Адаптер станков -Выносной интерфейс, соединяющий АРМ с ЧПУ станками, имеет так же адаптер для робота манипулятора для обслуживания ЧПУ станка. -### Робот манипулятор 5-7 DoF (в базовом варианте 7) -Самостоятельная рабочая единица, может работать как над персональным заданием, так и в составе АРМ, в том числе посредством Адаптера станков при ЧПУ станке. +### Робот манипулятор +Сейчас существуют два варианта исполнения манипулятора: +- [Манипулятор для изготовления с помощью литья в прессформе](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 пилонов по граням, сложный в полноцикловом режиме воспроизводства -### Сверхманевренное шасси -Могут быть различных конструкций, и применяться как в составе тележки, так индивидуально для синхронного перемещения 1, или нескольких АРМ в сборе. -### Управляющие программы (УП) -### Станки с числовым программным управлением -### Аккумуляторная батарея +Ключевой элемент АРМ и его основная управляющая единица. Содержит в себе вычислительный узел. Имеет форму пчелиной соты и 6 пилонов по граням. +- [Рабочий стол для манипуляторов и транспортных модулей](https://gitlab.com/robosphere/cnc/roboarm-workspace). + ### Приспособления манипулятора +Все приспособления монтируются к манипулятору через [стыковочный интерфейс](https://gitlab.com/robosphere/arm-tools/connection-tool). Модуль стыковки имеет выводы для управления инструментом по CAN/RS485 шине и выводы питания инструмента на торце. В середине торца, по оси мотора имеется подвижный (втягиваемый) штырь для фиксации инструментов на Роботе-манипуляторе и специальный рельеф для центровки инструмента при фиксации. -- [Модуль механического захвата](https://gitlab.com/robosphere/arm-tools/grip-tool), 2 прорезиненных пальца, с полукруглым охватом посередине и определёнными выступами - замками на концах. - - Захват Механический должен расходиться в стороны не менее чем на 80мм - - Усилие смыкания не должно быть меньше 2Кгс - - Форма губ должна содержать: - 1. треугольную продольную канавку для удержания кабелей толщиной более 1,2мм - 2. низких(менее1мм) конических зубца со стальным наконечником и цилиндрическим основанием для надёжного удерживания приводов за спец. места и арматурных (строповочных) петель для удержания оснасток и оснований - 3. Основная плоскость захвата механического должна быть покрыта фрикционным тонким покрытием, допускающим упругую деформацию не более 0,5мм +Для хранения двух и более приспособлений, а также их смены, используется [Библиотека приспособлений](https://gitlab.com/robosphere/arm-tools/tools-library), к которой в дальнейшем будут присоединяться узлы подачи материала. -- [Модуль печатающий](https://gitlab.com/robosphere/arm-tools/3d-print-tool), печатающая головка 3D принтера, адаптированная для применения Робот-манипулятор. - - Печатающий модуль состоит из быстросменного сопла, нагреваемой трубки, подающего модуля и сменного картриджа с пластиковой нитью определённой длины (длина рассчитана под конкретный объём печати) - - Подача пластика должна быть регулируемой, а подающий модуль – компактным, приводы должны быть либо BLDC(рекомендовано), либо шаговые моторы. - - Основной пластик – АБС, PVA, их электропроводимые вариации +Полный перечень репозиториев с приспособлениями манипулятора +- [Механический захват](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) -- [Модуль подачи компаунда](https://gitlab.com/robosphere/arm-tools/). Форсунка с пассивным смесителем компонентов компаунда, переключаемое на полимерный клей. Применяется для заливки корпусов. - - Модуль содержащий 2 реагента и вспениватель, смешиваемых в сопле, которое проворотом переключается на пропитывающий полимер - - 1 конусообразное сопло с приводом, длиной 1 см - - 4 трубки, ведущие к перезаправляемым баллонам и насосу. -- [Модуль паяльный](https://gitlab.com/robosphere/arm-tools/soldering-tool) с щупом(паяльник с возможностью проводить электротестирование; Тонкий, длинный, с керамическим нагревателем и металлической двуслойной оболочкой для дозированного смачивания жала паяльника припоем; рабочая температура до 400C) +### Автоматизированное рабочее место (АРМ) +Рабочий стол и манипуляторы с приспособлениями формируют Автоматизированное рабочее место (АРМ), которое может быть объединено с другими рабочими местами, формируя сложные производственные комплексы. -- [Модуль сварки](https://gitlab.com/robosphere/arm-tools/welding-tool), головка сварочного автомата подающая и фиксирующая проволоку. Проволока подаётся от самого автомата, который является трудноперемещаемой оснасткой. - - - Податчик проволоки D1-2мм - - Встроенный модуль отрезания проволоки - - Узкий и острый: рабочий наконечник и сопло - - Быстросменный наконечник - - Возможность варьирования режима работы от пайки до сварки и электроэрозии - -- [Модуль стыковки](https://gitlab.com/robosphere/arm-tools/connection-tool), последнее звено при производстве Робота-манипулятор. Является механизмом, вмещающим привод поворота по своей оси небольшой мощности с редуктором и контроллером, и привод втягивания крепёжного штыря. модуль стыковки имеет выводы для управления инструментом по CAN шине и выводы питания инструмента на торце. В середине торца, по оси мотора имеется подвижный (втягиваемый) штырь для фиксации инструментов на Роботе-манипуляторе и специальный рельеф для центровки инструмента при фиксации. - -### Звено - - - сборка 2х [приводов](https://gitlab.com/robosphere/servo) в составе корпуса, есть 2 основных типа звеньев, которые производятся в порядке очереди, методом заливки корпуса, его застыванием, и перестановкой оснастки на позицию будущего звена и дальнейшей закладкой приводов и кабелей, и заливкой, шаг за шагом. ### Кабели Объёмные или плоскостные структуры из одножильной проволоки. Проволока выбирается сварочной легированной и омеднённой сталью, поставляется рулонами. Также это может быть сложная 3D деталь — слабопроводящий пластик напечатанный с растворимой поддержкой и нерастворимым каркасом. Потом гальванически обращенный медью, никелем, оловом до нужной толщины. Лишний пластик можно отжечь, но на малых токах медь и так осаждается в неплохой проводник. В целом, технология гальванпластики очень хорошо совместима с 3д печатью. Так осаждают и железо (я сам немножко пробовал), оно получается твердым, царапает обычное железо. Это, конечно, не из-за углерода, которого там нет, а из-за водорода. Обычно это считается недостатком и процесс ведут либо на малом токе, либо потом отжигают продукт примерно при 400С. Тогда водород уходит и железо получается столь мягким,что в I мировую войну им заменяли дефицитную медь для поясков снарядов. -Корпус - отвердевший компаунд, связавший собой исполнительные механизмы, приводы, основания. Несёт на себе защитные и конструктивные функции. Может иметь внешнюю оболочку напечатанной из полимеров, или не иметь её и быть просто пористым прочным телом, для повышения прочности пористое тело пропитывается сверхтекучими полимерами. -Корпус и кабели входят в состав звена. +Корпус - отвердевший компаунд, связавший собой исполнительные механизмы, приводы, основания. Несёт на себе защитные и конструктивные функции. Может иметь внешнюю оболочку напечатанной из полимеров, или не иметь её и быть просто пористым прочным телом, для повышения прочности пористое тело пропитывается сверхтекучими полимерами. Корпус и кабели входят в состав звена. ### Компаунд @@ -220,7 +198,7 @@ title: 'Технологическая инструкция по сборке' Применяются: 1 Робот-манипулятор + 1 модуль печатающий, расходный материал: АБС, обычная 3Dпечать, компаундооталкивающий состав. -Процесс: 3D печать 2х частей формы по УП. Количество деталей формы может быть увеличено до 3х основных формообразующих + 2 направляющих + 2 замка, чтоб роботам можно было проще(и качественнее) паять кабельные трассы. Затем робот при помощи МЗ и кисточки покрывает формообразующие поверхности вязким и клейким на первых порах составом(аналог - герметик) +Процесс: 3D печать 2х частей формы по управляющей программе. Количество деталей формы может быть увеличено до 3х основных формообразующих + 2 направляющих + 2 замка, чтоб роботам можно было проще(и качественнее) паять кабельные трассы. Затем робот при помощи МЗ и кисточки покрывает формообразующие поверхности вязким и клейким на первых порах составом(аналог - герметик) #### 11. Подготовка оснастки литья корпуса звена diff --git a/docs/technologies/img/action.png b/docs/technologies/img/action.png new file mode 100644 index 0000000..3540d66 Binary files /dev/null and b/docs/technologies/img/action.png differ diff --git a/docs/technologies/img/action_execution_flow.png b/docs/technologies/img/action_execution_flow.png new file mode 100644 index 0000000..e05aca3 Binary files /dev/null and b/docs/technologies/img/action_execution_flow.png differ diff --git a/docs/technologies/img/action_execution_flow_example.png b/docs/technologies/img/action_execution_flow_example.png new file mode 100644 index 0000000..9eed49e Binary files /dev/null and b/docs/technologies/img/action_execution_flow_example.png differ diff --git a/docs/technologies/img/behaviour_tree_from_pddl.png b/docs/technologies/img/behaviour_tree_from_pddl.png new file mode 100644 index 0000000..0c02d4e Binary files /dev/null and b/docs/technologies/img/behaviour_tree_from_pddl.png differ diff --git a/docs/technologies/img/plansys2_architecture.png b/docs/technologies/img/plansys2_architecture.png new file mode 100644 index 0000000..343b873 Binary files /dev/null and b/docs/technologies/img/plansys2_architecture.png differ diff --git a/docs/technologies/plansys2.md b/docs/technologies/plansys2.md new file mode 100644 index 0000000..37ff0d9 --- /dev/null +++ b/docs/technologies/plansys2.md @@ -0,0 +1,88 @@ +--- +id: plansys2 +title: 'PlanSys2' +--- + +[PlanSys2](https://github.com/IntelligentRoboticsLabs/ros2_planning_system) - это система планирования для ROS2 от создателей ROSPlan (система планирования для ROS1). PlanSys2 не ограничивается планированием в рамках одного устройства, а поддерживает распределение задач между _многими взаимодействующими агентами_ в реальном времени. Исполнение планов реализовано на базе _Деревьев поведения_. + +Планы и задачи описываются на Lisp-подобном языке PDDL (Planning Domain Definition Language). Согласно спецификации PDDL содержит следующие базовые сущности планируемой задачи: +* __Объекты__ (Objects) +* __Свойства__ (Predicates) объектов (True/False). +* __Начальное состояние__ (Initial state) +* __Спецификация целей__ (Goal specification): то, что мы хотим, чтобы было правдой +* __Действия/Операторы__ (Actions/Operators): способы изменения состояния мира. + +PlanSys2 поддерживает PDDL версии 2.1, тогда как последняя версия PDDL - 3.1. + +## Архитектура фреймворка + +Архитектура PlanSys2 модульная и каждый отдельный компонент может быть заменён. + +![](img/plansys2_architecture.png) + +Описание компонентов +* __Planner Node__ - основной узел. Содержит алгоритм планирования и использует разные т.н. plan solvers - POPF, TFD. При генерации планов Planner Node обращается к узлам Domain Expert и Problem Expert, содержащими описания соответствующих предметным областям в формате PDDL. +* __Domain Expert__ считывает PDDL-файлы и размещает их во внутренней памяти. Этот компонент содержит общее описание предметной области. +* __Problem Expert__ содержит описание проблемы(задачи), которую нужно решить, включая конкретные экземпляры классов, предикаты, функции и цели, которые валидируются Domain Expert. то есть Problem Expert содержит динамическое знание приложения. Этот узел создаёт описания задач для Planner Node в формате PDDL. +* __Executor Node__ запрашивает у Planner Node план и, если тот существует, то выполняет его. План превращается в _Дерево поведения (Behaviour Tree)_. Для исполнения действий используется протокол аукциона, который выбирает наиболее подходящий узел, реализующий выполняемое действие. +* __Applications__ - приложения роботов, использующие PlanSys2. Содержат узлы, реализующие действия(__Actions__), и модель PDDL, которая их реализует. Любое приложение также включает в себя узел Controller Node, который +обращается к знаниям Problem Expert для консультаций и установления экземпляров, предикатов и целей. Этот контроллер также запрашивает Executor Node для выполнения или отмены планов. +* __Terminal__ - среда исполнения команд для управления и мониторинга PlanSys2. + * Визуализирует структуру сущностей PDDL и информацию Problem Expert. + * Показывает подробности о свойствах и действиях в терминах PDDL. + * Устанавливает и удаляет экземпляры, свойства, функции и цели. + * Визуализирует, исполняет и отслеживает планы. + * Проверяет статус узлов, исполняющих действия. + + +## Пример сборки автомобиля тремя роботами + +Сначала формируется план в PDDL-формате: + +``` +0 (move rb1 assembly_zone body_car_zone) +0 (move rb2 assembly_zone steerwheel_zone) +0 (move rb3 assembly_zone wheels_zone) +5.001 (transport rb1 bc_1 body_car_zone assembly_zone) +5.001 (transport rb2 stwhl_1 steerwheel_zone assembly_zone) +5.001 (transport rb3 whl_1 wheels_zone assembly_zone) +10.002 (assemble rb1 assembly_zone whl_1 bc_1 stwhl_1 car_1) +10.002 (move rb2 assembly_zone body_car_zone) +10.002 (move rb3 assembly_zone steerwheel_zone) +15.003 (move rb1 assembly_zone wheels_zone) +15.003 (transport rb2 bc_2 body_car_zone assembly_zone) +15.003 (transport rb3 stwhl_2 steerwheel_zone assembly_zone) +20.004 (transport rb1 whl_2 wheels_zone assembly_zone) +20.004 (move rb3 assembly_zone body_car_zone) +25.005 (assemble rb2 assembly_zone whl_2 bc_2 stwhl_2 car_2) +25.005 (move rb1 assembly_zone steerwheel_zone) +25.005 (transport rb3 bc_3 body_car_zone assembly_zone) +30.006 (move rb2 assembly_zone wheels_zone) +30.006 (transport rb1 stwhl_3 steerwheel_zone assembly_zone) +35.007 (transport rb2 whl_3 wheels_zone assembly_zone) +40.008 (assemble rb1 assembly_zone whl_3 bc_3 stwhl_3 car_3) +``` +Данный план преобразуется в Дерево поведения, где заданы узлы для параллельного и последовательного выполнения задач: + +![](img/behaviour_tree_from_pddl.png) + +Структура отдельного действия: + +![](img/action.png) + +При определении порядка исполнения плана используется т.н. _Аукцион действий (action auction)_. Когда наступает очередь для выполнения действия (например, из схемы выше), формируется новая запись _ActionPerformerClient_ в таблице _ActionMap_. + +![](img/action_execution_flow.png) + +Протокол работает так: +* Когда ActionPerformerClient запись создана, посылается сообщение-запрос с описанием действия и его параметров +* Ноды, находящиеся в состоянии ожидания и способные выполнить этот запрос, отвечают, подтверждая или отвергая данный запрос +* После подтверждения ноды приступают к исполнению +* Периодически ноды отправляют сообщения с обратной связью о действиях, которые они исполняют. + +Пример: +![](img/action_execution_flow_example.png) + +## Симуляция и полевые испытания + +PlanSys2 был проверен сначала в симуляции, а потом и на реальной системе, состоящей из 3-ёх роботов. Исходные коды проекта опубликованы на [Github](https://github.com/IntelligentRoboticsLabs/plansys2_cooking_experiment). \ No newline at end of file diff --git a/sidebars.js b/sidebars.js index 174405a..2dfe3ba 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1,14 +1,13 @@ -module.exports = { +module.exports = { docs: [ { type: 'category', label: 'Общая информация', collapsed: false, items: [ + 'motivation', 'robossembler-overview', - 'plan', - 'replication', - 'mining' + 'plan' ], }, { @@ -31,9 +30,14 @@ 'technologies/wood', 'technologies/machine-learning-in-robotics', 'technologies/gripper-tools-research', +<<<<<<< sidebars.js 'technologies/o2ac-repo-review', 'technologies/moveit2.md', - 'technologies/dds_and_ros2.md' + 'technologies/dds_and_ros2.md', + 'technologies/plansys2' +======= + 'technologies/plansys2' +>>>>>>> sidebars.js ], }, { @@ -58,6 +62,8 @@ label: 'Разное', collapsed: false, items: [ + 'replication', + 'mining', 'glossary', 'analogy', ],