Skip to main content

Сценарии использования

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

В частности,

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

Ниже рассмотрены сценарии использования, которые были разработаны командой Robossembler.

Обучение с подкреплением - rbs_gym

Модуль rbs_gym предназначен для реализации среды обучения с подкреплением для роботов-манипуляторов. Он активно использует возможности открытой библиотеки Робосборщик, упрощая управление сценой и настройку среды.

Основные компоненты модуля обеспечивают:

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

Пространства наблюдения и действий

Пространство наблюдения включает:

  • скорость на эффекторе робота,
  • положения суставов робота,
  • изображения с камеры (глубина, цвет или облака точек).

Пространство действий позволяет:

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

Гибкая настройка агентов

В составе модуля реализован класс ExperimentManager, который управляет предварительной настройкой агентов обучения. Конфигурации описываются в формате YAML. Пример гиперпараметров для алгоритма TD3 доступен здесь.

Поддерживаются следующие алгоритмы обучения:

Общая структура и примеры

Общий вид среды обучения для задачи достиженая точки пространства представлен на изображении:

rbs_gym_env_view

Общий вид среды для задачи "достижения точки" в rbs_gym

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

Диаграмма классов на примере задачи Reach детализирует архитектуру модуля:

rbs_gym_class_diagram
Диаграмма классов для задачи Reach

Агент использует усилия в пространстве задач для достижения до точки.

Управляющие сигналы:

W=[fxfyfz000]T\bm{W} = \begin{bmatrix} f_x & f_y & f_z & 0 & 0 & 0 \end{bmatrix}^T

где ff — компоненты силы.

Пространство наблюдения:

O=[pepove]T\bm{O} = \begin{bmatrix} \bm{p}_e & \bm{p}_o & \bm{v}_e \end{bmatrix}^T

где:

  • pe=[x,y,z]T\bm{p}_e = [x, y, z]^T — положение эффектора робота,
  • po=[x,y,z]T\bm{p}_o = [x, y, z]^T — положение цели,
  • ve\bm{v}_e — пространственный вектор скорости эффектора.

Функция наград:

  1. За уменьшение дистанции до цели:
Rd=t=0T1ΔDt10R_d = \sum_{t=0}^{T-1} \Delta D_t \cdot 10

где TT — число шагов, DtD_t — расстояние до цели, ΔDt=DtDt1\Delta D_t = D_{t} - D_{t-1}.

  1. За коллизии:
Rc=t=0T1{10,если qtCo,0,иначеR_c = \sum_{t=0}^{T-1} \begin{cases} -10, & \text{если } q_t \in C_o, \\ 0, & \text{иначе} \end{cases}

где CoC_o — пространство коллизий.

  1. Штраф за медленное выполнение задачи:
Rq=t=0T10.01R_q = \sum_{t=0}^{T-1} -0.01
  1. Бонус за достижение цели:
Rs={100,если Dt<0.05,0,иначе.R_s = \begin{cases} 100, & \text{если } D_t < 0.05, \\ 0, & \text{иначе.} \end{cases}

Результирующая награда:

R=Rc+Rd+Rq+RsR = R_c + R_d + R_q + R_s

Агент считается обученным, если R=100±10R = 100 \pm 10 за эпизод.

Тестирование и результаты

На графике представлены результаты обучения:

train_metrics
Графики обучения. Допустимая область (100 ± 10) показывает диапазон, при котором агент считается обученным.

Самостоятельный запуск обучения

Для самостоятельно запуска этого примера следуйте инструкции.

Имитационное обучение с помощью деревьев поведения

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

robossembler imitation learning

На диаграмме показано каким образом программные модули фреймворка bt_executor, scene_builder, rbs_runtime, env_manager интегрируются со сторонними библиотеками - в частности, с библиотекой lerobot, из которой используются модули для формирования Policy, обучения и конвертации датасета. На диаграмме также выделены примитивы дерева поведения, среди которых можно отметить RecordEpisode, осуществляющий запись демонстраций в runtime в цикле.