- •Курсовая работа
- •Тема: «Обучение с подкреплением в робототехнике: обзор алгоритмов (dqn, ppo, sac) и примеров применения в сборке. Сравнение методов, их применимость для задач манипуляции нежёсткими объектами.»
- •Аннотация
- •Содержание
- •Список сокращений и условных обозначений
- •Введение
- •Системный анализ разработки интеллектуального агента с применением обучения с подкреплением
- •1.1 Общая характеристика и современные тенденции применения искусственного интеллекта и машинного обучения в игровой индустрии и симуляциях
- •1.2 Анализ задач и определение требований к интеллектуальному агенту. Характеристика целевых сред и сценариев тестирования
- •1.3 Описание потоков данных и бизнес-процессов
- •1.4 Обзор и сравнительный анализ игровых движков и фреймворков для реализации обучения с подкреплением
- •1.5 Анализ проблематики выбора архитектуры агента, настройки гиперпараметров и обеспечения стабильности обучения
- •1.6 Патентный поиск
- •1.7 Анализ существующих методов и алгоритмов обучения с подкреплением (dqn, ppo, sac) для задач навигации, управления и принятия решений в виртуальной среде
- •1.7.1 Математическая формализация процесса обучения и алгоритмов ppo и sac
- •1.8 Применимость алгоритмов dqn, ppo и sac для задач манипуляции нежёсткими объектами в роботизированной сборке
- •1.9 Выводы по главе 1
- •2. Методы и технологии разработки и исследования интеллектуального агента в среде unity
- •2.1 Применение фреймворка Unity ml-Agents Toolkit для создания среды обучения, конфигурации агентов и нейронных сетей
- •2.1.1 Архитектура искусственной нейронной сети и конфигурация гиперпараметров
- •2.2 Обзор и сравнительный анализ алгоритмов обучения с подкреплением, методов предобработки данных и техник ускорения обучения
- •2.3 Методы сбора, обработки и визуализации метрик обучения (cumulative reward, loss, entropy) для анализа поведения и эффективности агента
- •2.3.1 Итеративная настройка и эволюция функции подкрепления (Reward Engineering)
- •2.4 Методы оценки производительности, обобщающей способности и устойчивости обученного агента в детерминированных и стохастических условиях
- •2.5 Технологический стек и архитектурные решения для интеграции модели машинного обучения (Python) с игровой логикой и физическим движком (c#/Unity)
- •2.6 Выводы по главе 2
- •3.Экспериментальные исследования и анализ результатов работы интеллектуального агента
- •3.1 Характеристика экспериментального стенда и условий проведения эксперимента
- •3.2 Сравнительный анализ эффективности алгоритмов ppo и sac в задаче навигации
- •3.3 Исследование влияния сенсорной системы и формирования функции вознаграждения
- •3.4 Анализ влияния гиперпараметров на сходимость алгоритма ppo
- •3.5 Абляционные исследования: влияние архитектуры сенсоров и функции вознаграждения на процесс обучения
- •3.6 Профилирование производительности и анализ вычислительной нагрузки в режиме реального времени
- •3.7 Программная реализация алгоритмов поведения и управления агентом
- •3.8 Тестирование и валидация обученной модели в режиме инференса
- •3.9 Выводы по главе 3
- •Заключение
- •Список использованных источников
- •Приложение а
- •Приложение б
3.7 Программная реализация алгоритмов поведения и управления агентом
Разработка программной логики интеллектуального агента осуществлялась на языке C# в среде Unity. Ключевым компонентом системы является класс RollerAgent, наследуемый от базового класса Agent библиотеки ML-Agents. Программная архитектура включает в себя методы инициализации, сбора сенсорных данных и исполнения управляющих воздействий.
Особое внимание при реализации было уделено проблеме корректной инициализации эпизодов обучения. В условиях сложной топологии лабиринта стандартные методы случайного размещения (Random.Range) приводили к появлению агентов внутри статических коллайдеров (стен), что вызывало ошибки физического движка и некорректные данные для обучения. Для решения этой задачи был разработан и внедрен алгоритм безопасного размещения GetRandomSafePosition.
Алгоритм работает по принципу «зондирования» пространства. Перед размещением объекта (агента или цели) генерируется случайная координата, вокруг которой создается виртуальная сфера малого радиуса. С помощью метода Physics.OverlapSphere производится проверка на пересечение данной сферы с объектами, имеющими тег Wall. Если пересечение обнаружено, координата отбрасывается, и генерируется новая. Цикл повторяется до нахождения валидной точки. Данный подход обеспечил 100% гарантию корректного старта эпизодов даже при параллельном обучении 20 агентов.
Логика движения агента реализована в методе OnActionReceived. Нейронная сеть возвращает вектор из двух непрерывных значений (continuous actions) в диапазоне [-1; 1]. Эти значения интерпретируются как управляющие сигналы по осям X и Z. Для обеспечения высокой динамики и отзывчивости управления применение силы к физическому телу (Rigidbody) осуществляется в режиме ForceMode.VelocityChange. Это позволяет мгновенно изменять вектор скорости агента, нивелируя инерцию, что критически важно для маневрирования в узких коридорах лабиринта.
3.8 Тестирование и валидация обученной модели в режиме инференса
Финальным этапом работы стала интеграция обученной нейронной сети в исполняемое приложение (Build). Для этого файл модели .onnx, полученный в результате обучения алгоритмом PPO, был внедрен в компонент Behavior Parameters с типом поведения Inference Only.
Тестирование проводилось в двух режимах:
В среде редактора Unity: Проверка корректности работы сенсоров (визуализация лучей) и отсутствия программных ошибок (Exceptions) в консоли.
В автономной сборке (Standalone Build): Проект был скомпилирован в исполняемый файл .exe для ОС Windows.
В ходе тестирования автономной сборки проверялась способность агента решать задачу навигации без связи с внешней средой Python. Результаты тестов показали, что интеллектуальные агенты демонстрируют стабильное поведение:
Успешное достижение цели наблюдается в 96-99% эпизодов.
Агенты эффективно используют данные лидара (Ray Perception) для избегания столкновений со стенами.
Время нахождения пути до цели варьируется в зависимости от сложности спавна (расстояния и количества поворотов), но всегда стремится к оптимальному маршруту.
Окно Game с финальным результатом работы модели можно увидеть на рисунке 3.4.
Рисунок 3.4 - Окно Game с финальным результатом, где много агентов успешно идут к целям
