Разработка системы компьютерного зрения и автономного управления для дрона в виртуальной среде (AirSim + Unreal Engine)
Дипломный проект, посвященный разработке гибридной системы управления беспилотным летательным аппаратом (БПЛА). Проект объединяет алгоритмы Обучения с подкреплением (Reinforcement Learning) для глобальной навигации в сложных средах и методы Компьютерного зрения (Computer Vision) для безопасной автономной посадки на основе анализа семантики и геометрии поверхности.
Симуляция среды, физики дрона и сбор синтетических данных реализованы на базе Unreal Engine 5.4 и Microsoft AirSim.
- Глобальная навигация (RL): Агент (PPO/SAC) управляет дроном на основе карт глубины и вектора до цели.
- Curriculum Learning: Автоматическое повышение сложности среды (смена уровней и маршрутов) по мере роста успешности агента.
- Sim-to-Real адаптация: Интеграция гауссовского шума и эмуляция "слепых зон" (dropouts) датчиков глубины и GPS для повышения устойчивости модели к реальным условиям.
- Семантическая посадка: Нейросетевая сегментация визуальных данных для поиска безопасных зон и обхода статических/динамических препятствий.
- Геометрический анализ: Расчет угла наклона поверхности (через градиенты Собеля по карте глубины) и поиск оптимальной точки посадки с помощью Distance Transform.
- Микросервисная архитектура: Модель компьютерного зрения вынесена в независимый FastAPI-сервер для устранения задержек при симуляции физики.
- Автоматизация: Встроенные менеджеры (manager.py) для автоматического перезапуска Unreal Engine, контроля зависаний (Watchdog) и управления конфигурацией AirSim (settings.json).
Проект разделен на три независимых, но интегрируемых модуля:
Система обучения агента лететь из точки А в точку Б, огибая препятствия. Включает кастомную среду Gym (env.py), автоматический генератор маршрутов и систему логирования.
Пайплайн для создания системы семантического анализа поверхности:
- Сбор данных (collector.py): Автоматическая генерация датасета с рандомизацией погоды, времени суток и положения дрона (с использованием полигонов спавна).
- Обучение (train.py): Обучение моделей сегментации. Включает Grid Search для поиска оптимальных гиперпараметров.
Интеграционный модуль, объединяющий обученные модели в единый рабочий процесс:
- Взлет.
- Навигация к целевой зоне под управлением RL-агента.
- Остановка и активация камеры направленной вниз.
- Запрос маски сегментации у FastAPI-сервера.
- Поиск безопасной точки (с учетом уклона и дистанции до препятствий).
- Точное снижение с использованием ПИД-регулятора.
📦 Project Root
┣ 📂 docs/ # Техническая документация проекта
┃ ┣ 📜 README.md # Общая архитектура и связи модулей
┃ ┣ 📜 landing.md # Документация модуля посадки
┃ ┣ 📜 pipeline.md # Описание State Machine и интеграции
┃ ┣ 📜 rl_agent.md # Документация обучения навигации
┃ ┣ 📜 installation_and_configuration.md # Установка и настройка
┃ ┗ 📜 launching_and_using.md # Запуск и использование
┣ 📂 demonstration/ # Демонстрационные материалы
┣ 📂 RL_agent/ # Модуль обучения навигации (PPO/SAC)
┃ ┣ 📂 models/ # Сохраненные веса и логи TensorBoard
┃ ┣ 📜 config.py # Гиперпараметры RL
┃ ┣ 📜 env.py # Кастомная среда Gymnasium для AirSim
┃ ┣ 📜 manager.py # Авто-менеджер запуска UE и обучения
┃ ┗ 📜 train.py # Скрипт обучения RL-агента
┣ 📂 Landing/ # Модуль семантической посадки
┃ ┣ 📂 data/ # Синтетические датасеты (RGB, Depth, Mask)
┃ ┣ 📜 collector.py # Скрипт автоматического сбора данных
┃ ┣ 📜 train.py # Обучение семантической сегментации
┃ ┗ 📜 utils.py # Очистка, валидация и сплит датасета
┣ 📂 Pipeline/ # Модуль интеграции (State Machine)
┃ ┣ 📂 modules/ # ПИД-контроллер, геометрия посадки, клиенты API
┃ ┣ 📜 config_pipeline.py # Конфигурация гибридного полета
┃ ┣ 📜 state_machine.py # Главный скрипт выполнения миссии
┃ ┗ 📜 vision_server.py # FastAPI сервер для инференса сегментации
┣ 📜 settings_manager.py # Менеджер внедрения settings.json в AirSim
┗ 📜 README.md # Документация проекта
В документации вы можете ознакомиться со следующими разделами:
- Установка и настройка (
docs/installation_and_configuration.md) - Запуск и использование (
docs/launching_and_using.md) - Общая архитектура проекта (
docs/README.md) и отдельных модулей (docs/landing.md, docs/rl_agent.md, docs/pipeline.md)
Вы можете ознакомиться с полным текстом диплома, демонстрационными видео и фото в папке demonstration.
Специально для обучения модели семантической сегментации в ходе разработки был сформирован датасет airsim-drone-dataset, с которым можно ознакомиться по ссылке:
- Разработчик: Бурцева А.И.
- Специальность: Прикладная математика и информатика
- ВУЗ: Финансовый университет при Правительстве РФ, 2026 г.
Связь со мной:
- Email: anastasiiaburtseva03@gmail.com
- Telegram: @asterphys