Перейти к содержанию

Архитектура

uav-simulator состоит из четырех рабочих частей: - Unity runtime; - operator stack (backend + web-ui); - CLI rusim; - Python training/eval tooling.

Общая схема

flowchart LR
    User["Оператор / разработчик"] --> UI["Web UI"]
    User --> CLI["rusim CLI"]
    UI --> Backend["ASP.NET Core backend"]
    CLI --> Backend
    CLI --> RuntimeApi["Unity HTTP JSON API"]
    Backend --> RuntimeApi
    RuntimeApi --> SimCore["SimulationManager"]
    SimCore --> Plugins["PluginRegistry"]
    Plugins --> Track["Track plugins"]
    Plugins --> Vehicle["Robot plugins"]
    Python["Python training / eval"] --> RuntimeApi

Unity runtime

Основные компоненты: - RuntimeSceneBootstrap - SimulationManager - PluginRegistry - HttpJsonApiHost - HttpJsonSimulatorApiServer - SimulatorApiFacade

Unity runtime отвечает за: - запуск сцены; - загрузку каталога треков и роботов; - reset и step цикл; - выдачу состояния, телеметрии и camera frame; - выполнение сценариев поверх активного runtime.

Operator stack

Operator stack состоит из: - backend на ASP.NET Core; - web-ui на React; - runtime provider-ов для unity-sim и real-robot.

Ключевая граница: - web-ui не знает транспортных деталей конкретного runtime; - runtime-specific логика живет в backend provider-ах и сервисах.

Отдельные backend-сервисы: - ModelRegistryService — загрузка, список и активация моделей; - AutopilotService — inference loop и управление автопилотом; - connection/session слой — подключение к unity-sim и real-robot.

CLI rusim

rusim — продуктовая точка входа для: - установки окружения; - сборки и запуска runtime; - применения сценариев; - диагностики runtime; - установки моделей; - установки пользовательских плагинов.

CLI работает как с Unity runtime напрямую, так и с backend API для model lifecycle.

Python training/eval

Python-контур отвечает за: - обучение модели в симуляторе; - сборку ONNX-артефакта; - запуск KPI-оценки; - подготовку evidence для experimental stage.

Типовой сценарий: 1. Python получает наблюдения через runtime API. 2. Собирает или обучает модель. 3. Экспортирует ONNX + metadata.json + metrics.json. 4. Модель ставится через rusim или backend API. 5. Автопилот запускается в unity-sim.

Plugin architecture

Каталог плагинов строится из: - PluginRegistry.asset; - descriptor assets в Assets/Resources/UavSimulator/Plugins; - fallback из BuiltinPluginFactory, если assets не найдены.

Это дает: - расширяемый каталог роботов и треков; - стабильные product IDs; - единый источник данных для runtime, CLI и contract discovery.

Инструментарий разработки плагинов

Для внешних разработчиков доступны:

  • Plugin SDK (packages/com.uav-simulator.plugin-sdk) -- UPM-пакет с базовыми классами, контрактами и editor-инструментами;
  • Plugin Templates (templates/plugin-vehicle, templates/plugin-track) -- шаблоны для быстрого старта;
  • Editor Tools: Tools > UavSimulator > Validate Plugins и Tools > UavSimulator > Export Plugin (.zip);
  • CLI: rusim plugin new, rusim plugin install, rusim plugin list, rusim plugin remove.

Формат плагина

Плагин распространяется как .rusim-plugin.zip архив с manifest.json (pluginId, type, version, compatibleRuntime).

Базовый продуктовый контур

flowchart LR
    Train["Train / Build artifact"] --> Install["Install model"]
    Install --> Activate["Activate model"]
    Activate --> Start["Start autopilot"]
    Start --> Run["Run in unity-sim"]
    Run --> Eval["Collect KPI"]

Сейчас этот контур собран для unity-sim. Перенос на real-robot относится к следующему этапу практики.

Связанные страницы