Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Баранов_В_С_Пояснительная_записка.docx
Скачиваний:
0
Добавлен:
03.07.2025
Размер:
9.83 Mб
Скачать

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.