---
title: Веб-сервис Robossembler
---

Исходный код: https://gitlab.com/robossembler/webservice

Основная прикладная задача сервиса - сопровождение процесса/жизненного цикла генерации датасетов для множества деталей. Сервис "связывает" воедино процессы разработки управляющих программ для роботов. Каждая фаза жизненного цикла имеет своё представление в виде страницы в веб-сервисе. Переключение между фазами осуществляется через нажатие соответствующей вкладки.

## Основные функции

- Создание проекта сборки
- Подготовка и генерация датасета
- Конфигурация сцены - Scene Builder
- Создание дерева поведения из навыков
- Просмотр результатов симуляции
- Оценка производительности обучения навыков

## Основные компоненты

Веб-сервис включает в себя серверную и клиентскую части. Серверная часть состоит из NodeJS приложения и документ-ориентированной базы данных MongoDB. Она служит для запуска всех необходимых процессов генерации датасетов или машинного обучения в конвейере подготовки роботизированных программ сборки, хранения и обеспечения доступа к исходным и генерируемым данным. Клиентская часть представляет собой браузерное приложение (веб-интерфейс), написанное на языке TypeScript, которое позволяет создавать, конфигурировать и запускать разнообразные процессы вычисления - генерации синтетических датасетов и обучения. Каждый запущенный процесс вычисления отображается в веб-интерфейсе соответствующим элементом интерфейса типа «карточка» (card), который позволяет с помощью модуля оценки производительности перейти к отображению логов обучения.

## Конфигуратор навыков

Веб-сервис позволяет создавать шаблоны навыков, описывать их параметры и добавлять сколь угодное количество параметризированных навыков для прикладных задач. Каждый навык содержит команды запуска (ros2 launch), параметры конфигурирования и интерфейсы для взаимодействия с ним в ходе исполнения.

![](img/web_create_skill.jpg)

## Запуск процессов вычислений/обучения

Веб-сервис позволяет создавать типы процессов, запускать их экземпляры для конкретных навыков и публиковать результаты в веб-интерфейсе. Например, типом процесса может быть «Обучение навыку обнаружения объектов с помощью YOLOv8» или «Обучение навыку планирования движений робота с помощью алгоритма Soft-Actor-Critic». Для каждого типа процесс задаётся соответствующий набор команд, аргументов/параметров вызова. После сохранения соответствующего типа процесса в интерфейсе для обучения появляется возможность создать конкретный процесс, задав требуемые навыки. Конкретным процессом может быть «Обучение навыку обнаружения детали N с помощью метода YOLOv8», который, будучи запущенным со всеми необходимыми параметрами, запускает вычисления с последующим сохранением результатов в виде логов обучения, файлами моделей весов нейронной сети и т. п. артефактами.

Типы процессов и формы заполнения параметров создаются с помощью Form Builder — специального программного модуля серверной части веб-сервиса, который осуществляет разбор конфигурационного файла формы в json-подобном формате и автоматически создаёт соответствующий ему графический веб-интерфейс для заполнения без необходимости править конфигурационные файлы вручную, что позволяет снизить шансы на ошибку при вводе данных. Для каждого процесса может быть задана мета-модель параметров под названием «context» и сама модель параметров под названием «result». В мета-модели описываются основные типы данных. На снимке экрана ниже представлен пример навыка обнаружения объектов, для которого задаются параметры ITEM, представляющие собой словарь.

![](img/web_formbuilder.png)

## Редактор деревьев поведения

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

![](img/web_bt_builder.jpg)
![](img/web_bt_builder_2.jpg)