--- title: Модуль управления виртуальными средами --- При управлении роботами в симуляторе Gazebo через фреймворк ROS2 возникает необходимость конфигурировать не только робота-манипулятора, но и саму сцену. Однако стандартный подход, основанный на конфигурационных файлах Gazebo, зачастую оказывается избыточным и недостаточно гибким для динамических сценариев, к которым относится обучение с подкреплением. **env_manager** — это пакет, предназначенный для конфигурирования сцен в симуляторе Gazebo, предоставляющий более удобный и гибкий подход к созданию и настройке симуляционных сред. ## Возможности пакета С последнего обновления модуль был полностью переработан. Если ранее его функции ограничивались указанием объектов, находящихся в среде, для работы в ROS2, то теперь он предоставляет инструменты для: - полного конфигурирования сцены, - настройки объектов наблюдения для ROS2. Конфигурация осуществляется с использованием **датаклассов** или **YAML-файлов**, что соответствует декларативному подходу описания сцены. Это делает процесс настройки интуитивно понятным и легко масштабируемым. Пример файла описания сцены, а также файл с конфигурацией по умолчанию доступны [здесь](https://git.robossembler.org/nodes/seed.robossembler.org/rad:z46gtVRpXaXrGQM7Fxiqu7pLy7kip/tree/env_manager/rbs_runtime/config/default-scene-config.yaml). ## Возможности конфигурации Модуль поддерживает добавление различных типов объектов в сцену, включая: - **Модель** - **Меш** - **Бокс** - **Цилиндр** - **Сферу** Различие между "моделью" и "мешем" заключается в том, находится ли объект в библиотеке **rbs_assets_library** (подробнее о ней см. [соответствующий раздел](#rbsassetslibrary)). Дополнительно поддерживается **рандомизация объектов**, позволяющая случайным образом изменять их цвет и положение в сцене. Помимо объектов, с помощью пакета можно настраивать: - **Источники света** - **Сенсоры** - **Роботов** - **Рабочие поверхности** Каждый тип объекта обладает как параметрами размещения, так и параметрами рандомизации. Для камер предусмотрены настройки публикации данных: - изображения глубины - цветного изображения - облаков точек. Параметры рандомизации могут включать в себя положение, ориентацию в заданных пользователем пределах, а также. Для рабочей поверхности также включается возможность рандомизации текстуры, а для робота имеется возможность рандомизировать его положения, в том числе конфигурацию и расположение базы робота. ## Архитектура и спецификации Основная структура модуля включает обертки для добавления объектов в сцену. Полная спецификация доступных параметров и взаимосвязей между классами представлена в папке конфигураций. Для каждой категории объектов используются отдельные датаклассы, что упрощает организацию и модификацию параметров. Диаграмма классов конфигурации сцены представлена ниже: ![scene_class_diagramm](./img/scene_data_class_diagram.png) *Диаграмма классов конфигурации сцены* ## Примеры Ниже представлены различные сцены, созданные с использованием возможностей **env_manager**: | **Сценарий 1** | **Сценарий 2** | **Сценарий 3** | |-----------------|-----------------|-----------------| | ![one](./img/ar_textured_ground.png) | ![two](./img/ar_textured_ground2.png) | ![three](./img/rbs_texture_ground_and_spawned_objects.png) |