56 lines
5.6 KiB
Markdown
56 lines
5.6 KiB
Markdown
|
# Модуль управления виртуальными средами
|
|||
|
---
|
|||
|
|
|||
|
При управлении роботами в симуляторе Gazebo через фреймворк ROS2 возникает необходимость конфигурировать не только робота-манипулятора, но и саму сцену. Однако стандартный подход, основанный на конфигурационных файлах Gazebo, зачастую оказывается избыточным и недостаточно гибким для динамических сценариев, к которым относится обучение с подкреплением.
|
|||
|
|
|||
|
**env_manager** — это пакет, предназначенный для конфигурирования сцен в симуляторе Gazebo, предоставляющий более удобный и гибкий подход к созданию и настройке симуляционных сред.
|
|||
|
|
|||
|
## Возможности пакета
|
|||
|
|
|||
|
С последнего обновления модуль был полностью переработан. Если ранее его функции ограничивались указанием объектов, находящихся в среде, для работы в ROS2, то теперь он предоставляет инструменты для:
|
|||
|
- полного конфигурирования сцены,
|
|||
|
- настройки объектов наблюдения для ROS2.
|
|||
|
|
|||
|
Конфигурация осуществляется с использованием **датаклассов** или **YAML-файлов**, что соответствует декларативному подходу описания сцены. Это делает процесс настройки интуитивно понятным и легко масштабируемым. Пример файла описания сцены, а также файл с конфигурацией по умолчанию доступны [здесь](https://gitlab.com/solid-sinusoid/env_manager/-/blob/b425a1b012bc8320bba7b68e5481da187d64d76e/rbs_runtime/config/default-scene-config.yaml).
|
|||
|
|
|||
|
## Возможности конфигурации
|
|||
|
|
|||
|
Модуль поддерживает добавление различных типов объектов в сцену, включая:
|
|||
|
- **Модель**
|
|||
|
- **Меш**
|
|||
|
- **Бокс**
|
|||
|
- **Цилиндр**
|
|||
|
- **Сферу**
|
|||
|
|
|||
|
Различие между "моделью" и "мешем" заключается в том, находится ли объект в библиотеке **rbs_assets_library** (подробнее о ней см. [соответствующий раздел](https://robossembler.org/docs/software/ros2#rbs_assets_library)). Дополнительно поддерживается **рандомизация объектов**, позволяющая случайным образом изменять их цвет и положение в сцене.
|
|||
|
|
|||
|
Помимо объектов, с помощью пакета можно настраивать:
|
|||
|
- **Источники света**
|
|||
|
- **Сенсоры**
|
|||
|
- **Роботов**
|
|||
|
- **Рабочие поверхности**
|
|||
|
|
|||
|
Каждый тип объекта обладает как параметрами размещения, так и параметрами рандомизации. Для камер предусмотрены настройки публикации данных:
|
|||
|
- изображения глубины
|
|||
|
- цветного изображения
|
|||
|
- облаков точек.
|
|||
|
|
|||
|
Параметры рандомизации могут включать в себя положение, ориентацию в заданных пользователем пределах, а также. Для рабочей поверхности также включается возможность рандомизации текстуры, а для робота имеется возможность рандомизировать его положения, в том числе конфигурацию и расположение базы робота.
|
|||
|
|
|||
|
## Архитектура и спецификации
|
|||
|
|
|||
|
Основная структура модуля включает обертки для добавления объектов в сцену. Полная спецификация доступных параметров и взаимосвязей между классами представлена в папке конфигураций. Для каждой категории объектов используются отдельные датаклассы, что упрощает организацию и модификацию параметров.
|
|||
|
|
|||
|
Диаграмма классов конфигурации сцены представлена ниже:
|
|||
|
|
|||
|

|
|||
|
*Диаграмма классов конфигурации сцены*
|
|||
|
|
|||
|
## Примеры
|
|||
|
|
|||
|
Ниже представлены различные сцены, созданные с использованием возможностей **env_manager**:
|
|||
|
|
|||
|
| **Сценарий 1** | **Сценарий 2** | **Сценарий 3** |
|
|||
|
|-----------------|-----------------|-----------------|
|
|||
|
|  |  |  |
|