Архитектура · код · интеграция

Разработка ПО для БПЛА: как устроена программная система

ПО БПЛА состоит из нескольких частей: встраиваемого кода, программ полётного контроллера, навигационных и коммуникационных модулей, бортового компьютера, наземного ПО и систем computer vision / AI.

Программирование — это написание кода. Разработка ПО для БПЛА включает ещё проектирование архитектуры, интеграцию с оборудованием, симуляцию, тестирование, оптимизацию, документацию и сопровождение.

Архитектуранесколько уровней ПО
ИнтеграцияПО работает вместе с сенсорами и контроллерами
Проверкасимуляция, тестирование и оптимизация
01 · Архитектура

От встроенного ПО до обработки данных и AI

В БПЛА разные задачи выполняют разные программные компоненты — от кода микроконтроллеров до обработки данных на бортовом компьютере.

Низкий уровень
Встраиваемое ПОкод для микроконтроллеров, датчиков и периферии
Контур управления полётомПО реального времени для стабилизации и управления полётом
Автопилотлогика автоматического управления полётом
→
Связующие слои
Навигационное ПОобрабатывает данные о положении и движении БПЛА
Коммуникационный слойобеспечивает обмен командами и телеметрией через систему связи
→
Высокий уровень
ПО бортового компьютераобрабатывает данные и выполняет высокоуровневую логику
Наземное ПОинтерфейс оператора, мониторинг, телеметрия и обмен данными
Computer vision / AIобработка изображений и данных с датчиков
Полётный контроллерРабота в реальном времени

Работа с датчиками, стабилизацией и исполнительными системами требует предсказуемого времени выполнения.

Бортовой компьютерСложные вычисления

Обработка данных, computer vision, AI и другая высокоуровневая логика.

Наземная программаРабота оператора с системой

Мониторинг, телеметрия и настройка программных компонентов.

Как ПО работает с оборудованиемсенсоры · контроллер · система связи
сенсор передаёт данныеПО принимает данныеалгоритм обрабатывает ихПО формирует результатконтроллер передаёт команду оборудованию
02 · Языки и инструменты

Для каждого уровня — свои инструменты

C++, Python, Lua, MAVLink, SITL, OpenCV и другие технологии используют для разных задач. Конкретный набор зависит от проекта.

Где используют C++, Python и Lua

Выбор языка зависит от задачи и требований к этой части системы.

C++
Встраиваемые и real-time компоненты

C++ часто используют для микроконтроллеров, производительного кода и компонентов, где важно точное время выполнения.

Python
Высокоуровневая логика и данные

Python подходит для прототипов, интеграции, обработки данных, computer vision и AI.

Lua
Скриптовое расширение

Lua может использоваться для скриптов внутри поддерживаемой среды, например ArduPilot, но не заменяет основную прошивку автопилота.

Обмен и интеграцияКак компоненты обмениваются данными
MAVLinkпротокол для передачи команд и телеметрии между компонентами
DroneKitPython-интерфейс для взаимодействия с БПЛА через MAVLink
APIпрограммный интерфейс для связи между компонентами
СимуляцияПроверка в симуляторе
SITLSoftware-in-the-loop: запуск ПО в виртуальной среде без физического аппарата
ArduPilot SITLсреда для симуляции и тестирования
Zephyr Drone Simulator · Квадросимдругие варианты симуляции
OpenCVобработка изображений и видеопотока
YOLOобнаружение объектов внутри программной системы
Визуальные среды для начала DroneBlocksTRIK StudioGoogle Blockly
03 · Жизненный цикл

Как проходит разработка от требований до сопровождения

Работа начинается с требований и архитектуры, затем идут реализация, интеграция и тестирование, а после — оптимизация, документация и сопровождение.

Фаза 01Спроектировать
01
Требованияопределяют функции системы и её работу с оборудованием
02
Архитектурапроектируют компоненты, интерфейсы и уровни системы
03
Реализацияпишут алгоритмы и программный код
Фаза 02Интегрировать и проверить
04
ИнтеграцияПО подключают к контроллерам, сенсорам и системе связи
05
Симуляцияпроверяют работу системы в виртуальной среде
06
Тестированиепроверяют отдельные компоненты и их совместную работу
07
Отладканаходят и исправляют ошибки
Фаза 03Уложиться в ограничения
08
Профилированиеизмеряют производительность и находят узкие места
09
Оптимизацияоптимизируют алгоритмы под доступные ресурсы и ограничения по времени
Фаза 04Зафиксировать и сопровождать
10
Документированиефиксируют архитектуру, API, интерфейсы и результаты испытаний
11
Безопасность ПО и сопровождениеучитывают риски, защиту данных, требования и дальнейшие изменения системы
Почему важна работа в реальном времени

Некоторые бортовые компоненты должны выполнять задачи за строго ограниченное время, поэтому для них особенно важны стабильная производительность и предсказуемое выполнение.

Автоматизация тестов

Автоматизированные тесты позволяют многократно повторять одинаковые проверки, а симулятор помогает воспроизводить нужные условия.

04 · Computer vision и AI

Как изображение превращается в данные для ПО

Computer vision работает на высоком уровне: обрабатывает изображение и передаёт результат другим программным компонентам. Полётный контроллер при этом решает свои задачи управления и стабилизации.

Исследовательская разработка программного обеспечения и computer vision для гражданского БПЛА
Пример из исследованияВ примере ниже использованы параметры одного научного исследования. Их нельзя переносить на все системы БПЛА.

Как ПО обрабатывает изображение

камеракадрпрограммный модульмодель распознаваниярезультатдальнейшая программная логика
OpenCVРабота с изображением

OpenCV используют для получения кадров, обработки изображений и работы с видеопотоком.

YOLOРаспознавание

Модель семейства YOLO может обнаруживать объекты на изображении и передавать результат программе.

Как обучают ML-модель
сбор данныхдатасетразделениеобучениевалидациятестированиеloss и mAPинтеграция
Исследовательский пример: Python 3.11, YOLOv8, OpenCV и Geoscan Pioneer mini+

В исследовании Кузбасского государственного аграрного университета систему разработали в 2023 году, а публикация вышла 21 марта 2024 года. Автор — Дмитрий Федоров, кандидат технических наук. В качестве платформы использовали Geoscan Pioneer mini.

СредаPyCharm 2023.2.1версия, использованная в исследовании
ЯзыкPython 3.11использовался в программной части
МодельYOLOv8 · Ultralyticsдля распознавания изображений
БиблиотекаOpenCV / cv2работа с изображением
Датасетоколо 3700 фотографийфотографии с разными фонами, положением и освещением
Разделение7 : 3 : 1обучение · валидация · тест
Обучениедо 300 эпох · batch 8оптимизатор SGD
Модель168 слоёв3 005 843 параметра
Метрикиloss · mAP · mAP50 · mAP50-95mAP50-95 примерно 0,845–0,855; применялась ранняя остановка
СвязьWi‑Fiиспользовался в эксперименте
Функциикадр · распознавание · координаты · отображениев исследовании также использовали графическую симуляцию и программные ограничения
ПубликацияDOI 10.32634/0869-8155-2024-379-2-107-112в публикации также указан ORCID и университетская аффилиация
Основные технологииЧто для чего используют
C++ → встроенное ПО и real-timePython → данные, CV и AILua → скрипты и расширение логики MAVLink → обмен сообщениямиSITL → проверка в симулятореOpenCV → обработка изображений YOLO → обнаружение объектовAPI → программный интерфейспрофилирование → поиск проблем производительностиавтоматизированные тесты → регулярные проверки
Частые вопросы

Коротко о разработке ПО для БПЛА

Ответы на частые вопросы об архитектуре, языках, MAVLink, SITL, тестировании и computer vision.

Из каких программных систем состоит БПЛА?+
В состав ПО могут входить встроенные компоненты, программы полётного контроллера, навигационные алгоритмы, коммуникационный слой, ПО бортового компьютера, наземная программа и модули обработки данных.
На каких языках программируют БПЛА?+
Часто используют C++, Python и Lua. C++ подходит для производительного и встроенного кода, Python — для высокоуровневой логики и обработки данных, Lua — для скриптов в некоторых автопилотах.
Что такое MAVLink?+
MAVLink — протокол, через который компоненты беспилотной системы могут передавать команды и телеметрию.
Что такое SITL?+
Software-in-the-loop позволяет проверять программу и её компоненты в симуляторе до испытаний на физическом оборудовании.
Чем полётный контроллер отличается от бортового компьютера?+
Полётный контроллер отвечает за задачи управления, где важна работа в реальном времени. Бортовой компьютер может брать на себя более тяжёлую обработку данных, computer vision и другие вычисления.
Как тестируют ПО БПЛА?+
ПО проверяют в симуляторе и на тестовых сценариях, используют автоматизированные проверки, отладку и профилирование, а также проверяют работу вместе с аппаратными компонентами.
Где используются OpenCV и YOLO?+
OpenCV используют для обработки изображений и видео, а модели семейства YOLO — для обнаружения объектов.
Зачем разработке ПО техническая документация?+
Документация сохраняет описание архитектуры, API, интерфейсов и результаты испытаний — всё, что нужно для дальнейшей работы с системой.
Разработка ПО и программирование БПЛА — это одно и то же?+
Нет. Программирование — это написание кода, а разработка ПО включает ещё требования, архитектуру, интеграцию, тестирование, оптимизацию, документацию и сопровождение.
Разработчик ПО БПЛА — отдельная профессия?+
Да. Разработчик ПО для БПЛА — отдельная специальность. Обязанности, навыки, образование и карьерный путь разобраны в отдельном материале.
На чём основан материал

Описание процесса разработки основано на материалах СПбПУ, а пример с computer vision — на публикации журнала «Аграрная наука» с DOI, ORCID и университетской аффилиацией. Версии Python, PyCharm и YOLO, параметры датасета и метрики относятся только к этому исследованию.

Остались вопросы по разработке ПО для БПЛА?

Задайте вопрос об архитектуре ПО, C++, Python, MAVLink, SITL, интеграции, тестировании или computer vision.

Задать вопрос

Обновлено 7 сентября 2026 года · обзор архитектуры и разработки ПО для БПЛА.