Заключение¶
В диссертации решена задача разработки расширяемой программной платформы симуляции в Unity для проведения экспериментальных исследований в задачах обучения и sim-to-real-переноса моделей управления робототехнической платформой Keyestudio KS0223. Поставленная во введении цель достигнута: получен завершённый и воспроизводимый программный продукт, охватывающий контур симуляции, операторский контур, контур обучения и контур поставки, а также проведены экспериментальные проверки, демонстрирующие применимость платформы.
Результаты по разделам¶
В разделе 1 проведён обзор современного состояния области и выполнен сравнительный анализ существующих симуляционных платформ — CARLA, Gazebo, AirSim, Webots, Isaac Sim, Unity ML-Agents и игровых-движковых проектов. Показано, что промежуточная ниша — кросс-платформенный симулятор с descriptor-based-плагинами, разумным рендером и нативной поддержкой обучения, ориентированный на учебные роботы класса KS0223 и сопоставимые устройства, — слабо заполнена. Привлечена литература по sim-to-real-переносу — domain randomization, behavior cloning, pretrained-визуальные представления — и литература по плагинным архитектурам в робототехнических симуляторах. На основании выявленного пробела сформулирована задача диссертации.
В разделе 2 предложена архитектура платформы, состоящая из четырёх функциональных контуров — Unity-runtime, операторский стек, командная утилита rusim и Python-контур обучения. Введено разделение продуктовой и исследовательской частей; зафиксирован поток данных и управления между подсистемами; описана внутренняя структура Unity-runtime, ответственность SimulationManager как ядра жизненного цикла, роль PluginRegistry как каталога сущностей и поверхность SimulatorApiFacade. Обоснован выбор ASP.NET Core, SignalR и React в качестве технологического стека операторского контура.
В разделе 3 описана реализация ключевых компонентов платформы. Детализированы принципы декомпозиции по ответственности и применение DI на стороне backend; описаны состояния и переходы SimulationManager, логика ResetWithConfig и цикл Step. Описаны двухуровневый реестр плагинов с merge-логикой между built-in каталогом и устанавливаемыми плагинами, фабрика BuiltinPluginFactory, procedural-fallback для отсутствующих ассетов и механизм совместимости рендер-пайплайнов. Описана реализация модели транспортного средства Ks0223Vehicle — физический контур, сенсоры, маппинг команд и презентационные visual-режимы — и реализация трасс — BasicArenaTrack, CityPolygonTrack и подсистема светофоров.
В разделе 4 зафиксирована спецификация программных интерфейсов платформы. Описаны три уровня API — Unity HTTP JSON, операторский HTTP и SignalR, plugin SDK; перечислены маршруты /reset, /step, /state, /health и маршруты model lifecycle на стороне симулятора, сгруппированные по доменам маршруты на стороне backend, контракты SignalR-хаба для push-телеметрии. Зафиксированы форматы транспортных DTO — ControlCommand, VehicleState, CameraFrame, SensorDescriptor, ActuatorDescriptor, ConfigKeyValue — и принят политика версионирования API.
В разделе 5 описана разработка плагинов как самостоятельная инженерная задача. Описаны базовые классы plugin SDK — PluginDescriptorBase, VehiclePluginDescriptor и VehicleBase, TrackPluginDescriptor и TrackBase, DeviceContractDescriptor — и механизм совместимости версий через ContractVersion. Приведены два worked-примера — плагин транспортного средства vehicle.arcade.green.v1 и плагин трассы track.city_demo.v1, — каждый с подробным циклом «создать — собрать — валидировать — экспортировать — установить». Зафиксирован формат архива .rusim-plugin.zip и команды rusim plugin install, list, remove, new.
В разделе 6 описана программная обвязка обучения на стороне Python. Зафиксирована единственная точка получения наблюдений — SimClient поверх Unity HTTP API — и предложен набор обёрток сред: одиночная среда ABCorridorVisionEnv, multi-agent в одной Unity-инстанции, meta-multi-agent поверх N инстансов, Genesis-вариант для GPU-параллельной симуляции. Описаны вспомогательные wrapper-ы — дискретизация действий, аугментация изображений, моделирование задержек. Описан тренировочный пайплайн train_cardboard_corridor_v9.py на Stable-Baselines3 с алгоритмом PPO, обоснованы гиперпараметры, описан мониторинг через EvalCallback и приёмы курикулума. Описан режим heavy-DR, frame stacking и пост-обработка реальной камеры. Описан KPI-протокол evaluate_ab_policy.py — 20-эпизодный success rate — и структура evidence-папки. Описан экспорт обученной политики в формат ONNX.
В разделе 7 описаны sim-to-real-эксперименты на физическом стенде KS0223. Сформулирована постановка задачи и природа sim-to-real-разрыва; описана эволюция базовой модели — CNN с frame stacking — от revision rev16 к revision rev29, развитие функции вознаграждения и приёмы anti-spin-shaping. Описан критерий выбора между mild-DR и heavy-DR, зафиксирован эффект heavy-DR-variance — шесть нулевых попыток обучения на revisions rev30—rev35, — и описаны меры борьбы с ним через многосидовые sweeps. Зафиксированы результаты на реальном коридоре — проезд rev29 и анализ телеметрии — и описаны характерные расхождения между симом и реальностью. Указан текущий статус: воспроизводимый sim-успех на L-corridor (75 процентов) и нерешённая задача обобщения на random tracks при heavy-DR.
В разделе 8 описаны средства тестирования, сборки и поставки платформы. Зафиксировано тестовое покрытие — Unity EditMode-тесты, backend xUnit-тесты, Python pytest для wrapper-ов и launch-скриптов; описаны workflow-ы непрерывной интеграции ci.yml, pages.yml и release-workflows; описаны многоэтапный Dockerfile, Makefile-цели и bind-mount конфигов сценариев; описана сборка Unity-runtime в headless-режиме и поставка плагинов через UPM и каталог dist/plugins/. Описана документация проекта в формате MkDocs Material и её автоматический деплой на GitHub Pages.
Оценка полноты решения задач¶
Поставленные во Введении восемь задач решены в полном объёме.
Задача 1 — анализ предметной области и формулирование пробела — закрыта разделом 1; пробел зафиксирован как отсутствие открытой кросс-платформенной descriptor-based-платформы для класса учебных мобильных роботов с нативной поддержкой обучения и sim-to-real-цикла.
Задача 2 — проектирование архитектуры — решена в разделе 2; платформа декомпозирована на четыре функциональных контура с явно зафиксированными границами ответственности и потоком данных, продуктовая и исследовательская части разделены.
Задача 3 — реализация ключевых компонентов — решена в разделе 3; ядро жизненного цикла симуляции, реестр плагинов, модель транспортного средства KS0223 и базовые трассы реализованы и работают в составе единого runtime.
Задача 4 — формулирование программных контрактов — решена в разделе 4; три уровня API специфицированы, форматы транспортных DTO зафиксированы, принята политика версионирования.
Задача 5 — обеспечение расширяемости — решена в разделах 3 и 5; descriptor-based плагины устанавливаются через CLI без модификации ядра и без перекомпиляции Unity-runtime, hot-install цикл подтверждён worked-примерами для транспортного средства и трассы.
Задача 6 — программная обвязка обучения — решена в разделе 6; единый VecEnv-интерфейс, тренировочный пайплайн на Stable-Baselines3, средства domain randomization, KPI-оценка и экспорт ONNX реализованы и применены к серии revisions модели.
Задача 7 — экспериментальная проверка sim-to-real — решена в разделе 7; перенос политики на физический стенд выполнен, проезд revision rev29 на реальном картонном коридоре подтверждён, характер расхождений между симом и реальностью проанализирован, ограничения heavy-DR-обучения зафиксированы как наблюдательный результат.
Задача 8 — инструменты тестирования, сборки и поставки — решена в разделе 8; тестовое покрытие по трём языкам (C#, .NET, Python), непрерывная интеграция через GitHub Actions, многоэтапная сборка backend и Unity-runtime, поставка плагинов и документация на MkDocs Material функционируют в штатном режиме.
Преимущества принятых решений¶
Принятые в работе решения обладают рядом преимуществ, существенных для сформулированной ниши платформы.
Descriptor-based плагинная архитектура обеспечивает добавление новых транспортных средств, трасс и сценариев без модификации ядра и без пересборки runtime. По сравнению с Unity ML-Agents, в котором поведение мира описывается компонентами Unity-сцены, и с CARLA, в которой плагины распространяются как Python-модули поверх Unreal Engine, предложенный механизм даёт инженерно более простой путь распространения расширений: автор плагина собирает архив .rusim-plugin.zip в собственном Unity-проекте и распространяет его как самодостаточный артефакт.
Унификация работы с симуляцией и реальным роботом на уровне операторского контура позволила переиспользовать один и тот же web-интерфейс и один и тот же набор контрактов в двух режимах исполнения — unity-sim и real-robot, — что снимает дублирование инженерных решений между исследовательской и эксплуатационной частями работы и облегчает воспроизведение sim-to-real-цикла на стороне пользователя.
Выбор Unity 6 в качестве симуляционной среды позволил совместить разумное визуальное качество (Universal Render Pipeline, динамическое освещение, материалы) с кросс-платформенной поставкой и низким порогом входа для разработчиков плагинов. По сравнению с Unreal-стеком и RTX-стеком Isaac, выбранная среда оказалась пригодной к запуску на разработческом узле без дискретного GPU, что соответствует исходным условиям работы.
Программный контур обучения, реализованный поверх Stable-Baselines3 и Gym-совместимых обёрток, опирается на широко распространённый инструментарий и упрощает воспроизведение результатов. Применение ONNX в качестве формата экспорта политики обеспечивает совместимость с произвольным runtime-инференсом, в том числе на стороне Raspberry Pi.
Рекомендации по использованию¶
Платформа пригодна к использованию в учебном и исследовательском процессе на кафедре «Программная инженерия» и в сопоставимых образовательных и исследовательских коллективах. Рекомендуемые сценарии использования: разработка собственных плагинов транспортного средства и трассы как форма практической работы; проведение экспериментов по обучению с подкреплением на учебной задаче L-corridor и её модификациях; sim-to-real-проверка обученных политик на физическом стенде KS0223; использование операторского интерфейса как самостоятельного инструмента дистанционного управления учебным роботом.
Для развёртывания платформы рекомендуется использовать поставляемый многоэтапный Docker-образ операторского backend, headless-сборку Unity-runtime и каталог плагинов dist/plugins/. Документация проекта на MkDocs Material содержит описание установки, использования, API и формата плагина и поддерживается в актуальном состоянии через автоматический деплой на GitHub Pages.
Технико-экономическая эффективность¶
Технико-экономическая эффективность принятых решений определяется тремя факторами. Во-первых, кросс-платформенная поставка операторского контура и Unity-runtime позволяет использовать платформу на разработческих узлах без специализированного оборудования (дискретного GPU, RTX, Linux), что снижает стоимость входа в исследовательский процесс. Во-вторых, descriptor-based-плагины снимают необходимость в дублировании ядра при разработке расширений: один runtime, поставляемый централизованно, обслуживает произвольный каталог плагинов; распределённость инженерных усилий между ядром и расширениями уменьшает общее количество кода, необходимого для покрытия класса задач. В-третьих, унификация двух режимов исполнения — unity-sim и real-robot — устраняет дублирование операторских и серверных компонентов, снижает совокупную сложность системы и уменьшает накладные расходы на поддержку.
Теоретическая и практическая ценность¶
Теоретическая ценность результатов работы состоит в систематизации требований к расширяемой симуляционной платформе для класса учебных мобильных роботов и в обосновании архитектурно-программных решений, удовлетворяющих этим требованиям; в формулировании трёхуровневой системы программных контрактов (Unity HTTP, операторский, plugin SDK) как способа изоляции продуктовой и исследовательской частей; в фиксации методики sim-to-real-проверки в условиях ограниченного оборудования и в описании наблюдательного режима heavy-DR-variance.
Практическая ценность результатов состоит в наличии завершённого и работающего программного продукта, доступного через открытый репозиторий и снабжённого развёрнутой документацией, и в наличии набора worked-примеров — плагинов и тренировочного пайплайна, — пригодных к использованию в качестве отправной точки для последующих работ.
Направления продолжения¶
Дальнейшее развитие платформы связано с несколькими направлениями.
Первое направление — расширение каталога плагинов: подключение альтернативных мобильных роботов (TurtleBot, Jetbot, образовательные дронные платформы), новых трасс (полигон, городская среда, indoor-сценарии), новых сценариев (multi-agent racing, follow-leader, маневрирование на трассе с препятствиями). Второе направление — углубление контура обучения: подключение pretrained-визуальных представлений (R3M, VC-1) в качестве замороженных encoder-ов, исследование behavior cloning поверх оператор-собранных эпизодов, развитие многосидовых sweeps как обязательной части тренировочного протокола. Третье направление — преодоление наблюдаемого heavy-DR-variance: исследование альтернативных архитектур policy (frame stacking разной глубины, рекуррентные политики, attention-механизмы), исследование зависимости стабильности обучения от размера пакета и нормализации advantages. Четвёртое направление — развитие интеграционного контура: углублённая поддержка ROS 2, подключение rosbridge-моста, экспериментальная интеграция со стеком Isaac Lab для GPU-параллельного обучения. Пятое направление — методическое: оформление учебных модулей на основе платформы, описание лабораторных работ, разработка обучающих материалов для подготовки магистрантов и студентов старших курсов по направлению «Программная инженерия».
Выполнение перечисленных направлений выходит за рамки настоящей магистерской работы и составляет содержание самостоятельных исследовательских и инженерных задач.