
- •Аннотация
- •Содержание
- •Введение
- •Глава 1. Исследовательский раздел
- •Научная новизна и актуальность работы
- •Анализ современных методов построения авиационных маршрутов
- •Обзор существующих аналогов
- •4. Бпла delta-m (российская разработка)
- •5. Agisoft Metashape (ранее PhotoScan)
- •Постановка задачи
- •Описание модели взаимодействия пользователей с веб-интерфейсом
- •1. Общая структура интерфейса
- •2. Сценарии взаимодействия
- •Интеграция геопространственных данных в системы управления бпла
- •Перспективные направления исследований
- •Обзор структуры беспилотника
- •1. Входы (куда Pixhawk получает информацию)
- •2. Выходы (куда Pixhawk отправляет команды)
- •Глава 2. Реализация
- •2.1. Техническое задание
- •2.2. Построение ортодромии и локсодромии
- •2.3. Ручной ввод координат и параметров полета
- •1. Механизм ввода координат
- •2. Параметры полета
- •4. Обработка ошибок
- •2.4. Генерация kmz-файлов
- •2.5. Проверка пересечений с запретными зонами
- •1. Клиентская часть (JavaScript):
- •2. Серверная часть (Python/Flask):
- •2.6. Подключение и обзор беспилотника
- •2.7. Сервис высот
- •Глава 3. Испытательный раздел
- •3.1. Тестирование работы алгоритмов для программного комплекса на беспилотнике Holybro x500
- •3.2. Составление тест-кейсов для алгоритмов в совокупности с программным комплексом
- •3.3. Результаты тестирования
- •3.4. Опытная эксплуатация
- •Заключение
- •Список сокращений
- •Список использованных источников
1. Входы (куда Pixhawk получает информацию)
GPS1 Это как «навигатор» дрона. Сюда подключается GPS-модуль, чтобы дрон знал, где он находится. Пример: если вы задали маршрут Москва→Санкт-Петербург, GPS помогает дрону не заблудиться.
PPM/SBUS RC Сюда подключается пульт управления.
TELEM1 / TELEM2 Это «рация» дрона. Через эти порты Pixhawk общается с моей программой. Пример: моя программа отправляет маршрут через TELEM1, а дрон присылает обратно данные о высоте и скорости.
DSM Для специальных пультов (например, Spektrum). Если у нас обычный пульт.
2. Выходы (куда Pixhawk отправляет команды)
I/O PWM OUT Это «руки» дрона. Отсюда идут сигналы к моторам и сервоприводам. Пример: если моя программа говорит: «Лети на высоту 100 м» — Pixhawk через эти выходы регулирует обороты моторов.
CAN1 / CAN2 Это «дополнительные выходы» для продвинутых функций. Пример: если мы добавили камеру или лидар — их можно подключить сюда.
USB Как флешка для компьютера. Через USB мы настраиваем Pixhawk и загружаем прошивку.
Глава 2. Реализация
2.1. Техническое задание
Программный комплекс должен обеспечивать следующие функциональные возможности:
1. Планирование и визуализация маршрутов на карте:
Расчет ортодромии (кратчайшего пути на сфере) между заданными координатами.
Построение прямолинейного и кривого маршрута между точками.
Автоматический обход запретных зон с адаптивным смещением траектории.
Визуализация маршрутов на интерактивной карте (Yandex Maps API).
2. Работа с геоданными:
Загрузка и обработка цифровых моделей рельефа (DEM) для учета высотных характеристик местности.
Преобразование координат между системами (WGS84, проекция DEM) с использованием библиотеки rasterio.
Генерация WKT-представлений маршрутов с добавлением данных о высоте.
3. Управление ограничениями:
Создание и редактирование полигонов запретных зон через веб-интерфейс.
Проверка и выделение пересечений маршрута с запретными зонами в реальном времени.
Автоматическая корректировка маршрута при обнаружении пересечений.
4. Интеграция с БПЛА:
Передача параметров полета (скорость, высота) на БПЛА через протокол MAVLink.
Мониторинг состояния аппарата (текущие координаты, заряд батареи, ошибки).
Экспорт маршрутов в формате KMZ для загрузки в GIS-системы и бортовое ПО.
5. Вспомогательные функции:
Настройка параметров алгоритмов (точность расчета, допустимое расстояние до зон).
Критерии выполнения требований:
Время расчета маршрута не превышает 3 секунд для дистанции до 1000 км.
Точность определения пересечений с запретными зонами — не менее 90%.
Поддержка DEM-файлов разрешением до 1 м/пиксель.
Совместимость с БПЛА, поддерживающими протокол MAVLink v2.0.
Интерфейс должен быть доступен на устройствах с разрешением экрана от 1280×720 px.
2.2. Построение ортодромии и локсодромии
В рамках проекта реализованы два метода построения маршрутов для БПЛА: ортодромия (кратчайший путь на сфере) и локсодромия (путь с постоянным азимутом). Оба метода интегрированы в веб-приложение с использованием геодезических расчетов и визуализации на картографической платформе.
Алгоритм построения ортодромии
Входные данные:
Координаты стартовой (start_point) и конечной (end_point) точек в формате [широта, долгота].
Количество узлов (num_nodes) для дискретизации маршрута. (рисунок 2.2.1).
Рисунок 2.2.1 Интерфейс построения маршрута
Математическая основа: Ортодромия рассчитывается как последовательность точек вдоль дуги большого круга на эллипсоиде WGS84. Для этого используется библиотека pyproj с методом geod.npts(), который решает геодезическую задачу нахождения промежуточных точек.
Реализация в коде:
if is_orthodrome:
points = geod.npts(lon1, lat1, lon2, lat2, num_nodes)
Здесь lon1, lat1 и lon2, lat2 — долгота и широта начальной и конечной точек. num_nodes – кол-во узлов (изначальное заданное значение 2000 для лучшей визуализации построения кривой).
Визуализация: Рассчитанные точки передаются на пользовательский интерфейс, где отображаются на карте (Yandex Maps) в виде прямой или кривой линии.
Алгоритм построения локсодромии
Входные данные: Аналогичны ортодромии, но маршрут представляет собой прямую линию в проекции Меркатора (карта мира, умещенная в прямоугольнике) .
Математическая основа: Локсодромия реализована через линейную интерполяцию координат между начальной и конечной точками. В упрощенном виде (для картографического интерфейса) это соответствует прямой линии на карте.
Реализация в коде:
else:
lons = [lon1 + (lon2 - lon1) * i / (num_nodes - 1) for i in range(num_nodes)]
lats = [lat1 + (lat2 - lat1) * i / (num_nodes - 1) for i in range(num_nodes)]
points = zip(lons, lats)
Здесь представлена формула линейной интерполяции, где координаты равномерно распределяются между точками (узлами), что соответствует локсодромии в выбранной проекции.
Интеграция с интерфейсом
Выбор режима: Пользователь может переключаться между ортодромией и локсодромией через флаг is_orthodrome в интерфейсе.
Пример использования
На рис. 2.2.2 показан маршрут ортодромии между Москвой и Владивостоком, построенный через 5000 узлов.
Рисунок 2.2.2 Ортодромия Москва - Владивосток
Рис. 2.2.3 Сравнение ортодромии (синяя линия) и локсодромии (коричневая линия)
Рисунок 2.2.3 Сравнение локсодромии и ортодромии
Сравнение ортодромии и локсодромии:
Ортодромия — кратчайший путь по дуге большого круга (например, Тюмень → Новосибирск). Экономит время и топливо, но требует корректировки курса.
Локсодромия — путь с постоянным азимутом (прямая на карте Меркатора). Удобна для навигации, но длиннее на больших расстояниях.
Блок-схему построения ортодромии можно увидеть в приложении 1.