Проект Python3 в отношении реализации двух моделирования БПЛА с системой избегания столкновений на основе геометрического подхода. Ссылки проекта:
UAV Collision Avoidance - это проблема встречи в проекте диссертации моего бакалавра в области безопасного сотрудничества БПЛА в трехмерном пространстве. Проект реализует расчеты функциональной физики, масштабируемый графический интерфейс, реалистичные системы вероятных ADS-B, и планы полета. Приложение предлагает многопоточное моделирование в реальном времени, представляющее моделируемые самолеты, а также линейно предварительно предопределенное моделирование, позволяющее провести быстрый тестирование эффективности алгоритма.
-45°, 45° и -90°, 90° соответственно, где положительный угол шага означает скалолазание, а положительный угол рулета означает банковское дело. Углы не аппроксимированы для сохранения реализма.И алгоритмы обнаружения и избегания столкновений полагаются на геометрический подход. Они были представлены в ссылке на статью 2 . Обнаружение столкновения различает столкновение и лобовое столкновение. Второй применяется, когда БПЛА не проходит расстояние между их прогнозируемым центром столкновений масс, и первым, когда это все остальные контакты.
Геометрический подход оказывается полезным для обнаружения и предотвращения столкновений. Система способна избежать столкновений в большинстве случаев. Система не идеальна и может потерпеть неудачу в некоторых сценариях, особенно когда самолеты слишком близки друг к другу при обнаружении конфликта. Система экономична и может использоваться в реальных сценариях.
Предлагаемые тестовые случаи генерации и система оценки проста и эффективны. Это позволяет быстро тестировать эффективность системы в различных сценариях. Система может быть дополнительно разработана, чтобы включить более сложные сценарии и дополнительные параметры.
Проект Python3 3 завершен как пакет PYPI 4 . Pyside6 5 (библиотека Python QT6 от QT) использовалась для реализации графического интерфейса.
Приложение построено на основе двух основных типов объектов, моделирования и самолетов. Моделирование создается до начальных настроек, что позволяет одновременно вариант в реальном времени и линейную предварительную зону. Самолет состоит из двух элементов, физического представления БПЛА и компьютера управления полетом, который контролируется потоком ADS-B. Исследование среди систем БПЛА было взято из второй цитируемой статьи 6 .
Данные моделирования хранятся в формате CSV. Каждая строка в файле представляет собой единственную симуляцию. Столбцы в файле CSV представляют собой подробную информацию о тестовом случае, включая начальные и конечные параметры самолетов, результаты обнаружения столкновений и минимальное относительное расстояние между самолетами для обоих случаев с и без него.
Примеры файлов данных моделирования хранятся в данных каталога данных. Результаты 200 моделирования, проведенных с частотой моделирования 10 Hz хранятся в моделировании файлов-2024-06-10-00-21-19.CSV.
Структура файла была сгенерирована с использованием команды tree :
tree --gitignore -I " __pycache__|.env|.github|.pytest_cache|.vscode|assets|build|logs|path-visual|uav_collision_avoidance.egg-info|venv|docs "Просмотреть структуру файла здесь: Структура файла
На данный момент есть восемь возможных аргументов:
file_path test_index collision_avoidance - запускает моделирование графического интерфейса; Имя файла может быть указано и по умолчанию на последних данных моделирования; Индекс теста может быть указан и по умолчанию до 0; Возможно, предотвращение столкновений и по умолчанию выключитьtest_number - Проводят полные тесты, сравнивая эффективность алгоритма избегания столкновений, тестовый номер по умолчанию до 15file_path test_index - загружает и проводит безголостное моделирование из файла при указании, в противном случае загружает пример примера по умолчанию из данных о каталоге данных; Индекс тестирования может быть указан и по умолчанию 0argument - печатает сообщение справки для аргумента приложения; по умолчанию ко всем списку аргументовВерсия приложения в реальном времени имеет несколько ключевых ярлыков, позволяющих взаимодействовать с пользователем с окружающей средой.
Примечание
Самолет 0 является первым, самолет 1 является вторым.
Есть несколько ключевых ярлыков для версии приложения в реальном времени, которые позволяют полномасштабное тестирование.
Установите приложение, выполнив следующую команду:
pip install uav-collision-avoidanceДля Debian 12 вам нужно установить следующие зависимости:
sudo apt-get install libgl1 libxcb-xinerama0Чтобы запустить приложение без головы, вам нужно запустить следующий экспорт:
export QT_QPA_PLATFORM=offscreenИспользуйте любое из следующего, чтобы запустить приложение:
uav-collision-avoidanceuav-collision-avoidance realtime [file_name] [test_index] [collision_avoidance]uav-collision-avoidance headlessuav-collision-avoidance tests [test_number]uav-collision-avoidance ongoinguav-collision-avoidance load [file_name] [test_index]uav-collision-avoidance help [argument]uav-collision-avoidance versionСоздайте его, клонируя репо и выполняя следующие команды:
#! /bin/bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python main.py [argument]python - m venv venv
.venvScriptsactivate
pip install - r requirements.txt
python main.py [ argument ] Трехмерный (3D) мир проецируется на 2D-экране путем выравнивания высоты (z координата). При начале программы вид не сосредоточен ни на одном из самолетов. Вид может быть перемещен с помощью клавиш со стрелками или сосредоточен на самолете с помощью N -ключа.
Одно соглашение о кодировании не сохранилось в сфере проекта. Методы QT отформатированы Camelcase, а остальное - соглашение о именовании Python по умолчанию, включая Snake_case для переменных и имен участников.
Милош Макулевич
Проверьте лицензию

Дрон Энтони Луи из существительного Project (CC на 3,0)
Все использованные ссылки перечислены ниже.
Основные оси самолета ↩
Избегание столкновений БПЛА на основе геометрического подхода ↩
Python3 ↩
Пипи ↩
Pyqt6 ↩
Энергоэффективный метод управления полетом БПЛА в среде с препятствиями и порывами ветра ↩