Projeto Python3 sobre a implementação de duas simulação de UAVs com sistema de prevenção de colisões com base na abordagem geométrica. Links do projeto:
UAV Collision Avoidance é o problema do projeto de tese do meu bacharelado, o problema da cooperação segura dos UAVs no espaço 3D. O projeto implementa cálculos de física funcional, GUI escalável, sistemas de prevenção de colisão do ADS-B realistas e planejamento de voo a bordo. Application oferece simulação em tempo real multithread que apresentam aeronaves simuladas, bem como simulação linearmente pré-renderizada, permitindo testes de eficácia de algoritmo rápido.
-45°, 45° e -90°, 90° respectivamente, onde ângulo de afinação positivo significa escalar e ângulo positivo de rolo significa direito bancário. Os ângulos não são aproximados para a preservação do realismo.A detecção de colisão e os algoritmos de prevenção dependem da abordagem geométrica. Eles foram apresentados no artigo 2 referenciado 2. A detecção de colisão diferencia entre colisão e colisão frontal. O segundo se aplica quando os UAVs não têm distância entre o centro de colisão projetado de massas e o primeiro quando é todos os outros tipos de contato.
A abordagem geométrica é útil na detecção e prevenção de colisões. O sistema é capaz de evitar colisões na maioria dos casos. O sistema não é perfeito e pode falhar em alguns cenários, especialmente quando as aeronaves estão muito próximas quando o conflito é detectado. O sistema é eficiente em termos de energia e pode ser usado em cenários da vida real.
O sistema de geração e avaliação de casos de teste proposto é simples e eficaz. Permite testes rápidos da eficácia do sistema em vários cenários. O sistema pode ser desenvolvido para incluir cenários mais complexos e parâmetros adicionais.
O projeto Python3 3 é embrulhado como um pacote Pypi 4 . Pyside6 5 (biblioteca Python Qt6 da QT) foi usada para implementação da GUI.
O aplicativo é construído com base em dois tipos de objetos principais, simulação e aeronaves. A simulação é criada até as configurações iniciais, permitindo a variante em tempo real simultânea e a pré-renderização linear. A aeronave consiste em dois elementos, representação física do computador UAV e controle de vôo, que é controlado pelo encadeamento ADS-B. A pesquisa entre os sistemas UAV foi extraída do segundo artigo citado 6 .
Os dados de simulação são armazenados no formato CSV. Cada linha no arquivo representa uma única simulação realizada. As colunas no arquivo CSV representam informações detalhadas sobre o caso de teste, incluindo parâmetros iniciais e finais das aeronaves, resultados de detecção de colisão e distância relativa mínima entre as aeronaves para ambos os casos com e sem evitar.
Exemplo de arquivos de dados de simulação são armazenados nos dados do diretório de dados. Os resultados de 200 testes de simulação realizados com frequência de simulação de 10 Hz são armazenados na simulação de arquivo-2024-06-10-00-21-19.CSV.
A estrutura do arquivo foi gerada usando o comando tree :
tree --gitignore -I " __pycache__|.env|.github|.pytest_cache|.vscode|assets|build|logs|path-visual|uav_collision_avoidance.egg-info|venv|docs "Veja a estrutura do arquivo aqui: estrutura do arquivo
Existem oito argumentos possíveis no momento:
file_path test_index collision_avoidance - Executa a simulação da GUI; O nome do arquivo pode ser especificado e os padrões para os dados mais recentes de simulação encontrados; O índice de teste pode ser especificado e padrão para 0; A prevenção de colisão pode ser especificada e os padrões para desligartest_number - executa testes completos comparando a eficácia do algoritmo de prevenção de colisões, o número de teste padrão com 15file_path test_index - carrega e conduz simulação sem cabeça do arquivo quando especificado, caso contrário, carrega um exemplo de teste de exemplo padrão dos dados do diretório de dados; Índice de teste pode ser especificado e padrão para 0argument - Impressões Mensagem de ajuda para o argumento do aplicativo; Padrões para todos os argumentos Lista de argumentosA versão em tempo real do aplicativo possui vários atalhos importantes, permitindo a interação do usuário com o ambiente.
Observação
Aeronaves 0 é a primeira, a aeronave 1 é a segunda.
Existem vários atalhos importantes para a versão em tempo real do aplicativo que permitem testes em larga escala.
Instale o aplicativo executando o seguinte comando:
pip install uav-collision-avoidancePara o Debian 12, você precisa instalar as seguintes dependências:
sudo apt-get install libgl1 libxcb-xinerama0Para executar o aplicativo sem cabeça, você precisa executar a seguinte exportação:
export QT_QPA_PLATFORM=offscreenUse qualquer um dos seguintes para executar o aplicativo:
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 versionConstrua -o clonando o repositório e executando os seguintes comandos:
#! /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 ] O mundo tridimensional (3D) é projetado na tela 2D por altura de achatamento (coordenada z). No início do programa, a visualização não está centrada em nenhuma das aeronaves. A visualização pode ser movida com teclas de seta ou centralizada na aeronave usando a tecla N
Uma convenção de codificação não é preservada no escopo do projeto. Os métodos do QT são formatados em camelcase e o restante é a Convenção de Nomeação de Python padrão, incluindo Snake_Case para nomes de variáveis e membros.
Miłosz Maculewicz
Verifique a licença

Drone de Anthony Lui do Projeto Substantivo (CC por 3.0)
Todas as referências usadas estão listadas abaixo.
Eixos principais de aeronaves ↩
Evitação de colisão do UAV com base na abordagem geométrica ↩
Python3 ↩
Pypi ↩
Pyqt6 ↩
Método de controle de vôo UAV com eficiência energética em um ambiente com obstáculos e rajadas de vento ↩