Skip to content

AsterPhys/Diploma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Разработка системы компьютерного зрения и автономного управления для дрона в виртуальной среде (AirSim + Unreal Engine)

alt text

alt text

alt text

alt text

alt text

Дипломный проект, посвященный разработке гибридной системы управления беспилотным летательным аппаратом (БПЛА). Проект объединяет алгоритмы Обучения с подкреплением (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).

Архитектура проекта

Проект разделен на три независимых, но интегрируемых модуля:

1. RL_agent/ — Навигация

Система обучения агента лететь из точки А в точку Б, огибая препятствия. Включает кастомную среду Gym (env.py), автоматический генератор маршрутов и систему логирования.

2. Landing/ — Компьютерное зрение

Пайплайн для создания системы семантического анализа поверхности:

  • Сбор данных (collector.py): Автоматическая генерация датасета с рандомизацией погоды, времени суток и положения дрона (с использованием полигонов спавна).
  • Обучение (train.py): Обучение моделей сегментации. Включает Grid Search для поиска оптимальных гиперпараметров.

3. Pipeline/ — Гибридный конечный автомат

Интеграционный модуль, объединяющий обученные модели в единый рабочий процесс:

  1. Взлет.
  2. Навигация к целевой зоне под управлением RL-агента.
  3. Остановка и активация камеры направленной вниз.
  4. Запрос маски сегментации у FastAPI-сервера.
  5. Поиск безопасной точки (с учетом уклона и дистанции до препятствий).
  6. Точное снижение с использованием ПИД-регулятора.

Структура репозитория

📦 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, с которым можно ознакомиться по ссылке: Dataset on Hugging Face

Автор и контакты

  • Разработчик: Бурцева А.И.
  • Специальность: Прикладная математика и информатика
  • ВУЗ: Финансовый университет при Правительстве РФ, 2026 г.

Связь со мной:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages