Robossembler Summary 2022-2023
216
blog/2024-01-25-2nd-3rd-year-summary.md
Normal file
|
@ -0,0 +1,216 @@
|
|||
---
|
||||
slug: 2nd-year-summary
|
||||
title: Итоги 2023 года
|
||||
author: Игорь Брылёв
|
||||
author_title: Team Lead @ Robossembler
|
||||
author_url: https://gitlab.com/movefasta
|
||||
author_image_url: https://gitlab.com/uploads/-/system/user/avatar/4249760/avatar.png
|
||||
tags: [robossembler, milestone, summary]
|
||||
---
|
||||
|
||||
[Видео-версия](https://youtu.be/vWpaZ8DRftI)
|
||||
|
||||
В этом обзоре мы расскажем о разработках в рамках проекта Робосборщик в 2022-2023 годах.
|
||||
|
||||
## Аппаратное обеспечение
|
||||
|
||||
### Robossembler Arm и его двигатели
|
||||
|
||||
Самая главная аппаратная разработка этих полутора лет — рука Робосборщика или [Robossembler Arm](https://gitlab.com/robossembler/roboarm-diy-version).
|
||||
|
||||

|
||||
|
||||
Это шести-осевой робот манипулятор, который существенно изменился - сокращены габаритные размеры, вес, снижено общее количество деталей и крепежа.
|
||||
|
||||

|
||||
|
||||
Всего в конструкции теперь 66 деталей и 32 соединителя, которые достаточно крупные, чтобы вставлять их вручную, без помощи вспомогательного инструмента, или даже автоматически - разработанным нами захватным устройством. Все детали содержат специальные пазы для удобства захвата.
|
||||
|
||||

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

|
||||
|
||||
Одной из ключевых особенностей робота является [симметричный стыковочный интерфейс](https://gitlab.com/robossembler/arm-tools/connection-tool), который позволяет роботу перемещаться между совместимыми с ним посадочными местами и, тем самым, расширять доступную для работы зону.
|
||||
|
||||

|
||||
|
||||
Стыковочный интерфейс претерпел уже 8 модификаций, прошёл первичные испытания на прочность соединения и готов к интеграционным испытаниям с остальной частью робота.
|
||||
|
||||

|
||||
|
||||
Мы его упростили, облегчили, при этом сохранив его достаточно жёстким; конструкция препятствует повреждению контактов при ручной установке.
|
||||
|
||||
Ключевым узлом робота является разработанный нами с нуля серводвигатель. На данный момент изготовлен его прототип вместе с контроллерами и ведётся разработка программного обеспечения для управления.
|
||||
|
||||

|
||||
|
||||
Изначально мы разработали две модификации серводвигателя - один для создания крутящего момента на звене манипулятора, второй - для монтажа рабочего органа или монтажа самого манипулятора к опорному каркасу, но со временем заменили их на один универсальный контроллер для всех версий привода, что позволит ещё больше сократить номенклатуру компонентов и, соответственно, уменьшить себестоимость изделия.
|
||||
|
||||

|
||||

|
||||
|
||||
Изменения в серводвигателях коснулись в основном системы вентиляции обмоток и подшипникового узла, который на данный момент может быть использован как радиально-упорный подшипник скольжения, изготовленный методом печати, так и на его место может быть установлен стандартный набор из двух подшипников качения. Улучшено крепление магнитов к ротору с целью уменьшения магнитного зазора. На данный момент испытано семь вариантов печатных роторов и найден оптимальный механизм крепления магнитов.
|
||||
|
||||

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

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

|
||||
|
||||
Датчик реализован на кондуктометрическом принципе и обладает чрезвычайно низкой себестоимостью.
|
||||
|
||||
### Опорный каркас
|
||||
|
||||
[Опорный каркас](https://gitlab.com/robossembler/cnc/cubic-modular-workspace), который мы показывали в прошлый раз, тоже претерпел большие изменения. Мы убрали дополнительные соединители и теперь весь каркас состоит из практически одних и тех же универсальных сборочных единиц - опорных пластин. Пластины могут быть двух типов.
|
||||
|
||||

|
||||
|
||||
Первый тип — это пластины с симметричным стыковочным интерфейсом. К ним подключается активное оборудование - роботы или рабочие органы. Другие пластины - пассивные, в них вместо стыковочного интерфейса установлена заглушка. Они выполняют функции передатчиков сигналов и обеспечивают жесткость всей конструкции.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### Источик питания
|
||||
|
||||
Также разработан совместимый с опорным каркасом [источник питания](https://gitlab.com/robossembler/arm-tools/power-supply-box) от сети переменного тока.
|
||||
|
||||
### Оснастка для производства
|
||||
|
||||
Мы стремимся сделать робота максимально простым в изготовлении, поэтому помимо конструктивных решений для удобства сборки, разрабатываем и вспомогательную оснастку для автоматизации производства. Мы активно разрабатываем [станок для намотки катушек индуктивности двигателя](https://gitlab.com/robossembler/cnc/motor-wire-winder).
|
||||
|
||||

|
||||
|
||||
Опробованы два варианта намоточного станка - ручной и полуавтоматический, сейчас разрабатывается третий вариант. Станок позволит нам обеспечить серийное производство моторов и сервоприводов. Как и во всех остальных случаях, конструкторская документация на станок будет открыта.
|
||||
|
||||
### Приспособление для захвата
|
||||
|
||||
Существенно изменена конструкция [приспособления для захвата](https://gitlab.com/robossembler/arm-tools/grip-tool), в котором теперь используются те же самые узлы, что и в манипуляторе - двигатель с контроллером, стыковочный интерфейс.
|
||||
|
||||

|
||||
|
||||
В новой версии улучшены передаточные механизмы, добавлены редукторы, изменён корпус. Новая конструкция позволяет вращать пальцы на угол 360 градусов, а новая форма пальцев - "захватывать" объекты внешней стороной.
|
||||
|
||||
## Программные решения
|
||||
|
||||
### Robonomics Bridge
|
||||
|
||||
В 2022 году нашей командой разработан [мост между Робономикой и ROS2](https://gitlab.com/robossembler/robonomics_bridge), который решает проблему взаимодействия различных кибер-физических систем через публичную сеть интернет.
|
||||
|
||||

|
||||
|
||||
Фреймворк ROS2 основан на протоколе под названием DDS или Data Distrubution Service, который обеспечивает взаимодействие узлов ROS друг с другом. Этот протокол ориентирован на работу в локальной сети, в нём заложены механизмы автоматического обнаружения устройств и очень интенсивное взаимодействие между ними. Однако, в случах когда требуется обеспечить работу отдельных узлов ROS с каким-то внешним сервисом или системой, то возникает проблема безопасности - получив доступ к одному узлу, сторонний сервис получает доступ и ко всем остальным - он может полностью прослушивать весь внутренний трафик DDS.
|
||||
|
||||
Чтобы решить проблему доступа узлов друг к другу можно использовать пакет ROS2 Security, который настраивает политики доступа к данным. Однако, этот подход обладает большим минусом - весь трафик в системе шифруется, что может сказаться на быстродействии при той нагрузке на сеть, которую создаёт DDS. Другое решение заключается в создании так называемых шлюзов, которые публикуют нужные данные, сохраняя всё остальное приватным. Как правило, это достигается при помощи тоннелей VPN или SSH между взаимодействующими узлами. Такой подход применён в таких проектах как Husarnet, Integration Service и Zenoh, но и он не лишён недостатков. В этом случае вам нужно создать защищённый канал связи, который жёстко привязан к IP-адресу или доменному имени контрагента, а они имеют свойство меняться, блокироваться и подвергаться атакам.
|
||||
|
||||
Проблему можно обойти с помощью технологий p2p, на которых построен блокчейн [Robonomics](https://robonomics.network/). По сути блокчейн может являться в этом случае очень защищённой таблицей маршрутизации, адресами контрагентов в которой являются публичные ключи узлов. Вам нужен локальный узел блокчейна и знание о том какой публичный ключ у вашего контрагента, чтобы далее не зависеть от системы DNS и блокировок IP-адресов. Библиотека libp2p, на которой построен блокчейн Робономики, может использовать разные транспортные протоколы для доставки сообщений. Однако, это не все возможности, которые может дать блокчейн. Помимо простого коммутирования потоков сообщений, в блокчейне в будущем может быть реализована и более сложная логика на смарт-контрактах, подразумевающая взаимодействие большого количества агентов. Например, принятие решение о запуске производства какого-то продукта может быть привязано к голосованию в организации потенциальных потребителей этого продукта, с учётом экономической целесообразности. Сейчас решение о запуске какого-либо производства принимается с помощью механизма инвестиций, когда инвесторы, получив информацию о потенциальном спросе, могут приобретать акции отдельных компаний, которые этот спрос смогут в будущем удовлетворить. То есть инвесторы являются лишним передаточным звеном между потребителями и производителями. Если потребители смогут более активно участвовать в разработке и ценообразовании новых продуктов, то мы сможем в перспективе перейти на такую схему работы, когда производство будет автоматически перестраиваться на удовлетворение спроса по данным, предоставляемым в блокчейн потребителями.
|
||||
|
||||
### Robossembler Framework
|
||||
|
||||
Основной разработкой проекта по-прежнему является Фреймворк Робосборщик, в котором можно выделить два основных блока - Offline и Online.
|
||||
|
||||

|
||||
|
||||
[Оффлайн-часть](https://gitlab.com/robossembler/framework) связана с подготовкой моделей для симуляции, машинному обучению, взаимодействию с системами контроля версий и непрерывной интеграции. По сути она представляет собой конвейер подготовки трёхмерных моделей и инструменты анализа статической структуры изделия. Одним из важнейших узлов в этом конвейере является разработанный нами планировщик сборки или планировщик последовательности сборки — Assembly Sequence Planner.
|
||||
|
||||

|
||||
|
||||
Этот программный компонент анализирует сборку в формате STEP, проверяет наличие дефектов в геометрии, которые делают проблематичным подготовку моделей в формат пригодный для симуляции. Также он проверяет требуемые допуски между деталями и строит так называемую матрицу смежности, которая содержит полную информацию о сопряжениях между деталями. Чтобы построить всю последовательность сборки. Дальше сформированные подсборки проверяются на стабильность в гравитационном поле и алгоритм генерирует подходящие варианты для отладки в симуляции. В 2023 году мы дополнили нашу [коллекцию исследований](https://robossembler.org/docs/technologies/ASP-overview) по генерации последовательности сборки. Найдены новые исследователи, работающие в направлении автоматизации планирования сборки - в частности, доктор технических наук Божко Аркадий Николаевич, преподаватель из Бауманского университета, с достаточно оригинальным подходом к решению задачи через использование гипер-графов, который мы планируем поддержать в нашей программной части.
|
||||
|
||||
Далее работу принимает часть конвейера, отвечающая за компьютерную графику.
|
||||
|
||||

|
||||
|
||||
Детали, входящие в сборки, преобразовываются в так называемые ассеты компьютерной графики разной степени полигональности. Для преобразования ассетов используется свободный редактор компьютерной графики Blender и разработанный нами аддон. Аддон формирует три типа ассетов. Высоко-полигональные модели содержат много деталей и могут использоваться для качественной визуализации. Для симуляции требуется обратное - чтобы количество полигонов было как можно меньшим. Поэтому производится оптимизация полигональной сети и в некоторых случаях склейка отдельных компонентов в монолитный кусок. Также аддон, используя информацию об материалах деталей из CAD, генерирует так называемые физически реалистичные текстуры, производит так называемое запекание текстур. Чтобы познакомиться с конвейером компьютерной графики подробнее, рекомендую прочесть статью на нашем сайте.
|
||||
|
||||
Онлайн-часть или рантайм [Robossembler ROS2](https://gitlab.com/robossembler/robossembler-ros2) непосредственно выполняется на железе в момент работы робота. За прошедший год мы перевели проект с ROS2 Foxy, поддержка которой была прекращена в 2023 году, на ROS 2 Humble. ROS2 Humble является так называемым долгоживущим релизом или LTS, который будет поддерживаться еще три года.
|
||||
|
||||
### Архитектура runtime
|
||||
|
||||
В рантайме у нас реализована архитектура из нескольких разных уровней планирования.
|
||||
|
||||

|
||||
|
||||
Самый верхний уровень стека - уровень миссии. Там происходит по сути планирование производственных заданий, подобно ERP-системе, где определяется сколько чего мы производим. Далее следует уровень планирования задач - разбиение процесса сборки отдельного изделия на кванты - логические операции, которые, в свою очередь, опираются на уровень поведения, где работают соответствующие задаче комбинации навыков в виде деревьев поведения. Это поведение стоится на базе атомарных навыков, например, движение к точке, движение по траектории, различные типы восприятия изображений, из которых собирается более сложное поведение. Атомарные навыки работают с аппаратным слоем, то есть с железом, через драйвера устройств. Там решается как именно мы получаем данные, через какие интерфейсы, топики или сервисы, как сигналы преобразовываем и куда передаем.
|
||||
|
||||
### Деревья поведения и управление жизненным циклом навыков
|
||||
|
||||
В основе рантайма у нас лежат деревья поведения. Изначально деревья поведения появились в сфере разработки компьютерных игр для того, чтобы программировать персонажей NPC. Однако, со временем данный подход был предложен также для использования и в робототехнике, в частности Петером Оргеном, который популяризирует и всячески пытается приладить к задачам робототехники. Очень хорошо данный подход себя зарекомендовал себя в области мобильной робототехники - это разнообразная навигация по помещениям. В основе популярнейшего пакета ROS Navigation лежат именно деревья поведения. Мы увидели преимущества этого подхода прежде всего в модульности. Мы заранее не знаем какие именно методы подойдут лучше всего для тех или иных задач, поэтому от фреймворка требуется обеспечить изменяемость - чтобы не надо было менять всю остальную программу при изменениях в отдельном навыке или дереве поведения. Также этому подходу присуща и нужная для производства отказоустойчивость.
|
||||
|
||||

|
||||
|
||||
В проекте Robossembler ROS2 разработан BT-executor, в котором реализованы первые узлы или навыки - в частности, движения к точке пространства через решение обратной задачи кинематики, обнаружение объектов в сцене - Object Detection, а также оценка 6D позиции объектов - Pose Estimation для распознавания положения деталей в пространстве перед захватом и сборкой.
|
||||
|
||||
Помимо деревьев поведения, нами также внедрён один из важных концептов, появившихся в ROS2 под названием Lifecycle Nodes или Managed Nodes. Это такой тип узлов ROS2, который позволяет их включать, выключать, конфигурировать, когда надо убирать, добавлять. Это делает удобным подмену, конфигурацию и запуск отдельных навыков в ходе исполнения программы.
|
||||
|
||||

|
||||
|
||||
Например, навык Object Detection у нас используется в нескольких вариантах. В ходе работы программы часто возникает ситуация, когда нужно переключиться на другую реализацию навыка, если текущая не сработала. Разумеется, мы не можем держать всех их в памяти одновременно. Особенно это актуально когда для работы навыка требуется много ресурсов, что часто бывает с нейронными сетями. Здесь на помощь приходят Lifecycle Nodes. Почти все имеющиеся на данный момент навыки в фреймворке реализованы в виде Lifecycle Nodes.
|
||||
|
||||
### Управление виртуальными средами
|
||||
|
||||
Одним из нововведений, которые мы сделали в фреймворке, является Environment Manager или менеджер управления виртуальными средами. Это модуль, который соединяет рантайм с разнообразными средами - как виртуальными, так и не очень. Виртуальной средой может быть игровой движок или симулятор.
|
||||
|
||||

|
||||
|
||||
Environment Manager реализует абстрактный интерфейс, который позволяет соединять рантайм, его драйвера с виртуальной средой. Например, мы можем получать изображение от реальной камеры через какой-то топик, а в этот же топик Environment Manager может нам в дальнейшем, когда мы переключимся на режим симуляции, передавать данные не с камеры, а с симулятора. В этом случае сама программа останется прежней, ничего переписывать не надо. В качестве первой среды мы выбрали симулятор Gazebo, архитектура которого предусматривает разбиение на отдельные компоненты, которые реализовывают физику, рендеринг и многое другое, что делает удобными применение нашего подхода. По нашей задумке Environment Manager должен оказать большое влияние на сам подход к разработке управляющих программ роботов, делая более простым и доступным обучение с подкреплением.
|
||||
|
||||
## Прикладные решения
|
||||
|
||||
### Растениеводство
|
||||
|
||||
Продвигается и разработка прикладных решений на базе наших модулей. Одним из таких решений является роботизированный комплекс для размножения растений методом микроклонирования, который разрабатывается вместе с нашими коллегами из компании [Фито Слим](https://agrostab.ru/).
|
||||
|
||||

|
||||
|
||||
На данный момент микроклонирование представляет собой комплекс сложных операций, каждая из которых требует большого объёма рутинного ручного труда, а качество результата очень чувствительно к чистоте и стерильности помещений. Любой случайно привнесенный вирус может означать гибель всех организмов на той стадии, когда они еще очень слабы и не могут этому вирусу сопротивляться. Роботы потенциально могут решить эти проблемы. В рамках концептуального проектирования разработано специальное приспособление для манипулирования растениями в пробирках.
|
||||
|
||||

|
||||
|
||||
Форма нашего робота хорошо подошла для оперировавания в таких стеснённых пространствах как ламинатор.
|
||||
|
||||
В рамках смежного направления также разработана концепция использования манипуляторов для черенкования, не столь требовательная к самим помещениям, но требовательная к стерильности инструментов. Мы разработали эскиз линии или аппаратный комплекс для отладки исследовательских программ черенкования.
|
||||
|
||||

|
||||
|
||||
Комплекс включает в себя камеры для разносторонней съёмки процесса, чтобы собирать данные и в дальнейшем использовать их для научной и инженерной работы.
|
||||
|
||||

|
||||
|
||||
На базе обоих решений можно создать научно-исследовательский комплекс, которые позволит проводить эксперименты по селекции и отлаживать весь цикл выращивания от микроклонирования до получения саженцев пригодных к открытому грунту.
|
||||
|
||||

|
||||
|
||||
## Вместо заключения
|
||||
|
||||
В заключение хотелось бы отметить, что мы кардинально изменили наш статус - открыли предприятие. Теперь Робосборщик — это не только кружок или клуб единомышленников, а полноценная организация с юридическим статусом. Организация оформлена после победы в конкурсе соискателей финансирования для открытых проектов библиотек программного обеспечения под названием «Код цифровые технологии», организованного Фондом содействия инновациям.
|
||||
|
||||
В 2024 году мы планируем завершить разработку программного обеспечения контроллера серводвигателя, запустить манипулятор и испытать его вместе с нашим рантайм модулем. Параллельно этой работе будет вестись и проект фреймворка для отладки программ через симуляцию.
|
||||
|
||||
Подписывайтесь на наши каналы в [Telegram](https://t.me/robossembler_ru) и [Youtube](https://www.youtube.com/channel/UC32Xgbsw9XQlN1QH59pe8HA). Если у Вас есть идеи как можно помочь проекту, то Вы можете непосредственно зайти в [GitLab](https://gitlab.com/robossembler), выбрать нужный подпроект и просто написать там issue, где поделиться своими мыслями.
|
||||
|
||||
## Команда
|
||||
|
||||
В работе участвовали:
|
||||
|
||||
- Игорь Брылёв
|
||||
- Станислав Сгонов
|
||||
- Алексей Топтун
|
||||
- Александр Оликевич
|
||||
- Роман Андрианов
|
||||
- Илья Ураев
|
||||
- Марк Вольтов
|
||||
- Илья Курочкин
|
||||
- Никита Молканов
|
||||
- Андрей Ермаков
|
||||
- Вячеслав Македонский
|
||||
- Александр Шевеленко
|
||||
- Иван Ершов
|
||||
- Михаил Якушкин
|
||||
- Степан Воронов
|
BIN
blog/img/2022-2023-summary-slides/image-1.png
Normal file
After Width: | Height: | Size: 497 KiB |
BIN
blog/img/2022-2023-summary-slides/image-10.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
blog/img/2022-2023-summary-slides/image-11.png
Normal file
After Width: | Height: | Size: 2 MiB |
BIN
blog/img/2022-2023-summary-slides/image-12.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
blog/img/2022-2023-summary-slides/image-13.png
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
blog/img/2022-2023-summary-slides/image-14.png
Normal file
After Width: | Height: | Size: 1.8 MiB |
BIN
blog/img/2022-2023-summary-slides/image-15.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
blog/img/2022-2023-summary-slides/image-16.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
blog/img/2022-2023-summary-slides/image-17.png
Normal file
After Width: | Height: | Size: 671 KiB |
BIN
blog/img/2022-2023-summary-slides/image-18.png
Normal file
After Width: | Height: | Size: 359 KiB |
BIN
blog/img/2022-2023-summary-slides/image-19.png
Normal file
After Width: | Height: | Size: 659 KiB |
BIN
blog/img/2022-2023-summary-slides/image-2.png
Normal file
After Width: | Height: | Size: 584 KiB |
BIN
blog/img/2022-2023-summary-slides/image-20.png
Normal file
After Width: | Height: | Size: 391 KiB |
BIN
blog/img/2022-2023-summary-slides/image-21.png
Normal file
After Width: | Height: | Size: 448 KiB |
BIN
blog/img/2022-2023-summary-slides/image-22.png
Normal file
After Width: | Height: | Size: 448 KiB |
BIN
blog/img/2022-2023-summary-slides/image-23.png
Normal file
After Width: | Height: | Size: 567 KiB |
BIN
blog/img/2022-2023-summary-slides/image-24.png
Normal file
After Width: | Height: | Size: 462 KiB |
BIN
blog/img/2022-2023-summary-slides/image-25.png
Normal file
After Width: | Height: | Size: 320 KiB |
BIN
blog/img/2022-2023-summary-slides/image-26.png
Normal file
After Width: | Height: | Size: 507 KiB |
BIN
blog/img/2022-2023-summary-slides/image-27.png
Normal file
After Width: | Height: | Size: 566 KiB |
BIN
blog/img/2022-2023-summary-slides/image-28.png
Normal file
After Width: | Height: | Size: 401 KiB |
BIN
blog/img/2022-2023-summary-slides/image-29.png
Normal file
After Width: | Height: | Size: 401 KiB |
BIN
blog/img/2022-2023-summary-slides/image-3.png
Normal file
After Width: | Height: | Size: 416 KiB |
BIN
blog/img/2022-2023-summary-slides/image-30.png
Normal file
After Width: | Height: | Size: 988 KiB |
BIN
blog/img/2022-2023-summary-slides/image-31.png
Normal file
After Width: | Height: | Size: 665 KiB |
BIN
blog/img/2022-2023-summary-slides/image-4.png
Normal file
After Width: | Height: | Size: 355 KiB |
BIN
blog/img/2022-2023-summary-slides/image-5.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
blog/img/2022-2023-summary-slides/image-6.png
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
blog/img/2022-2023-summary-slides/image-7.png
Normal file
After Width: | Height: | Size: 2.3 MiB |
BIN
blog/img/2022-2023-summary-slides/image-8.png
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
blog/img/2022-2023-summary-slides/image-9.png
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
blog/img/2022-2023-summary-slides/image.png
Normal file
After Width: | Height: | Size: 613 KiB |