142 lines
9.1 KiB
Markdown
142 lines
9.1 KiB
Markdown
|
---
|
|||
|
title: Сценарии использования
|
|||
|
---
|
|||
|
|
|||
|
Фреймворк может найти достаточно широкое распространение. Несмотря на то, что основной задачей фреймворка являлась автоматизация процесса разработки программ роботизированной сборки, программное обеспечение может применяться также и для других задач.
|
|||
|
|
|||
|
В частности,
|
|||
|
- веб-сервис с модулями генерации датасетов и интерфейсом создания новых навыков может применяться для запуска любых других поддерживающих API навыков, не связанным напрямую с задачей сборки изделий;
|
|||
|
- модуль исполнения программ ROS 2 включает в себя довольно гибкую систему управления исполнением с помощью деревьев поведения и может быть применён к любым задачам планирования, требующих модульности и реактивности;
|
|||
|
- для студентов, исследователей и инженеров фреймворк может упростить разработку и отладку программного обеспечения за счёт использования функций высокого уровня абстракции при решении задач манипулирования.
|
|||
|
|
|||
|
Ниже рассмотрены сценарии использования, которые были разработаны командой Robossembler.
|
|||
|
|
|||
|
## Обучение с подкреплением - rbs_gym
|
|||
|
|
|||
|
Модуль **rbs_gym** предназначен для реализации среды обучения с подкреплением для роботов-манипуляторов. Он активно использует возможности открытой библиотеки Робосборщик, упрощая управление сценой и настройку среды.
|
|||
|
|
|||
|
Основные компоненты модуля обеспечивают:
|
|||
|
- получение пространства наблюдения,
|
|||
|
- передачу управляющих сигналов агенту,
|
|||
|
- рандомизацию параметров среды,
|
|||
|
- настройку задач, определяющих награды и условия для агента.
|
|||
|
|
|||
|
### Пространства наблюдения и действий
|
|||
|
|
|||
|
**Пространство наблюдения** включает:
|
|||
|
- скорость на эффекторе робота,
|
|||
|
- положения суставов робота,
|
|||
|
- изображения с камеры (глубина, цвет или облака точек).
|
|||
|
|
|||
|
**Пространство действий** позволяет:
|
|||
|
- отправлять управляющие сигналы в виде усилий или скоростей в пространстве задач робота,
|
|||
|
- управлять положением захватного устройства,
|
|||
|
- задавать усилия в конфигурационном пространстве робота.
|
|||
|
|
|||
|
### Гибкая настройка агентов
|
|||
|
|
|||
|
В составе модуля реализован класс **ExperimentManager**, который управляет предварительной настройкой агентов обучения. Конфигурации описываются в формате YAML. Пример гиперпараметров для алгоритма TD3 доступен [здесь](https://git.robossembler.org/nodes/seed.robossembler.org/rad:z46gtVRpXaXrGQM7Fxiqu7pLy7kip/tree/env_manager/rbs_gym/hyperparams/td3.yml).
|
|||
|
|
|||
|
Поддерживаются следующие алгоритмы обучения:
|
|||
|
- [TD3](https://arxiv.org/abs/1802.09477)
|
|||
|
- [SAC](https://arxiv.org/abs/1801.01290)
|
|||
|
- [TQC](https://arxiv.org/abs/2005.04269)
|
|||
|
|
|||
|
### Общая структура и примеры
|
|||
|
|
|||
|
Общий вид среды обучения для задачи достиженая точки пространства представлен на изображении:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
_Общий вид среды для задачи "достижения точки" в **rbs_gym**_
|
|||
|
|
|||
|
На рисунке точка отмечена зеленым шаром. Каждую эпоху обучения выбираются разные позиции для робота в конфигурационном пространстве, а также позиция объекта выбирается случайным образом.
|
|||
|
|
|||
|
Диаграмма классов на примере задачи Reach детализирует архитектуру модуля:
|
|||
|
|
|||
|

|
|||
|
*Диаграмма классов для задачи Reach*
|
|||
|
|
|||
|
Агент использует усилия в пространстве задач для достижения до точки.
|
|||
|
|
|||
|
**Управляющие сигналы**:
|
|||
|
|
|||
|
$$
|
|||
|
\bm{W} = \begin{bmatrix} f_x & f_y & f_z & 0 & 0 & 0 \end{bmatrix}^T
|
|||
|
$$
|
|||
|
|
|||
|
где $f$ — компоненты силы.
|
|||
|
|
|||
|
**Пространство наблюдения**:
|
|||
|
|
|||
|
$$
|
|||
|
\bm{O} = \begin{bmatrix} \bm{p}_e & \bm{p}_o & \bm{v}_e \end{bmatrix}^T
|
|||
|
$$
|
|||
|
|
|||
|
где:
|
|||
|
- $\bm{p}_e = [x, y, z]^T$ — положение эффектора робота,
|
|||
|
- $\bm{p}_o = [x, y, z]^T$ — положение цели,
|
|||
|
- $\bm{v}_e$ — пространственный вектор скорости эффектора.
|
|||
|
|
|||
|
**Функция наград**:
|
|||
|
|
|||
|
1. **За уменьшение дистанции до цели**:
|
|||
|
|
|||
|
$$
|
|||
|
R_d = \sum_{t=0}^{T-1} \Delta D_t \cdot 10
|
|||
|
$$
|
|||
|
|
|||
|
где $T$ — число шагов, $D_t$ — расстояние до цели, $\Delta D_t = D_{t} - D_{t-1}$.
|
|||
|
|
|||
|
2. **За коллизии**:
|
|||
|
|
|||
|
$$
|
|||
|
R_c = \sum_{t=0}^{T-1} \begin{cases}
|
|||
|
-10, & \text{если } q_t \in C_o, \\
|
|||
|
0, & \text{иначе}
|
|||
|
\end{cases}
|
|||
|
$$
|
|||
|
|
|||
|
где $C_o$ — пространство коллизий.
|
|||
|
|
|||
|
3. **Штраф за медленное выполнение задачи**:
|
|||
|
|
|||
|
$$
|
|||
|
R_q = \sum_{t=0}^{T-1} -0.01
|
|||
|
$$
|
|||
|
|
|||
|
4. **Бонус за достижение цели**:
|
|||
|
|
|||
|
$$
|
|||
|
R_s = \begin{cases}
|
|||
|
100, & \text{если } D_t < 0.05, \\
|
|||
|
0, & \text{иначе.}
|
|||
|
\end{cases}
|
|||
|
$$
|
|||
|
|
|||
|
**Результирующая награда**:
|
|||
|
|
|||
|
$$
|
|||
|
R = R_c + R_d + R_q + R_s
|
|||
|
$$
|
|||
|
|
|||
|
Агент считается обученным, если $R = 100 \pm 10$ за эпизод.
|
|||
|
|
|||
|
### Тестирование и результаты
|
|||
|
|
|||
|
На графике представлены результаты обучения:
|
|||
|
|
|||
|

|
|||
|
*Графики обучения. Допустимая область (100 ± 10) показывает диапазон, при котором агент считается обученным.*
|
|||
|
|
|||
|
### Самостоятельный запуск обучения
|
|||
|
|
|||
|
Для самостоятельно запуска этого примера следуйте [инструкции](https://gitlab.com/solid-sinusoid/env_manager/-/blob/main/docs/getting_started/getting_started.ru.md).
|
|||
|
|
|||
|
## Имитационное обучение с помощью деревьев поведения
|
|||
|
|
|||
|
Описанный выше модуль `rbs_gym` также можно использовать для более специфических сценариев применения - в частности, для имитационного обучения, где обучение с подкреплением дополняется демонстрациями, полученными в симуляторе или с помощью устройств телеуправления роботом. Ниже приведена диаграмма ориентировочной реализации такого сценария, на которой отражены основные модули системы и их взаимосвязи.
|
|||
|
|
|||
|

|
|||
|
|
|||
|
На диаграмме показано каким образом программные модули фреймворка `bt_executor`, `scene_builder`, `rbs_runtime`, `env_manager` интегрируются со сторонними библиотеками - в частности, с библиотекой [lerobot](https://github.com/huggingface/lerobot), из которой используются модули для формирования `Policy`, обучения и конвертации датасета. На диаграмме также выделены примитивы дерева поведения, среди которых можно отметить RecordEpisode, осуществляющий запись демонстраций в runtime в цикле.
|