Proyecto Python3 con respecto a la implementación de dos simulación UAV con sistema de evitación de colisiones basado en el enfoque geométrico. Enlaces del proyecto:
UAV Collision Avoidance es mi problema del proyecto de tesis de licenciatura para reuniones de la cooperación segura de los UAV en el espacio 3D. El proyecto implementa cálculos de física funcional, GUI escalable, ADS-B realistas Probable Sistemas de evitación de colisiones y planificación de vuelo a bordo. La aplicación ofrece simulación en tiempo real multiproceso que presenta aviones simulados, así como una simulación renderizada linealmente, permitiendo pruebas rápidas de efectividad del algoritmo.
-45°, 45° y -90°, 90° respectivamente, donde el ángulo de tono positivo significa escalar y el ángulo de rodillo positivo significa banca a la derecha. Los ángulos no se aproximan a la preservación del realismo.Tanto los algoritmos de detección como de evitación se basan en el enfoque geométrico. Se presentaron en el documento referenciado 2 . La detección de colisiones diferencia entre colisión y colisión frontal. El segundo se aplica cuando los UAV no tienen distancia entre su colisión de Centro Proyectado de Masas, y el primero cuando es cualquier otro tipo de contacto.
El enfoque geométrico resulta útil en la detección y evitación de colisiones. El sistema es capaz de evitar colisiones en la mayoría de los casos. El sistema no es perfecto y puede fallar en algunos escenarios, especialmente cuando las aeronaves están demasiado cerca entre sí cuando se detectan conflictos. El sistema es eficiente en energía y puede usarse en escenarios de la vida real.
Los casos de prueba propuesto del sistema de generación y evaluación son simples y efectivos. Permite una prueba rápida de la efectividad del sistema en varios escenarios. El sistema se puede desarrollar aún más para incluir escenarios más complejos y parámetros adicionales.
El proyecto Python3 3 está envuelto como un paquete PYPI 4 . PYSIDE6 5 (Biblioteca Python Qt6 de QT) se utilizó para la implementación de la GUI.
La aplicación se construye en función de dos tipos de objetos principales, simulación y aviones. La simulación se crea hasta la configuración inicial, lo que permite la variante en tiempo real concurrente y la pre-renderización lineal. La aeronave consta de dos elementos, la representación física de la computadora UAV y el control de vuelo, que está controlada por el hilo ADS-B. La investigación entre los sistemas UAV se obtuvo del segundo documento citado 6 .
Los datos de simulación se almacenan en formato CSV. Cada fila en el archivo representa una única simulación realizada. Las columnas en el archivo CSV representan información detallada sobre el caso de prueba, incluidos los parámetros iniciales y finales de las aeronaves, los resultados de la detección de colisiones y la distancia relativa mínima entre las aeronaves para los casos con y sin evitar.
Ejemplo Los archivos de datos de simulación se almacenan en los datos del directorio de datos. Los resultados de 200 pruebas de simulación realizadas con frecuencia de simulación de 10 Hz se almacenan en la simulación de archivo-2024-06-10-00-21-19.CSV.
La estructura del archivo se generó usando el comando tree :
tree --gitignore -I " __pycache__|.env|.github|.pytest_cache|.vscode|assets|build|logs|path-visual|uav_collision_avoidance.egg-info|venv|docs "Ver la estructura del archivo aquí: estructura de archivos
Hay ocho posibles argumentos en este momento:
file_path test_index collision_avoidance - ejecuta simulación GUI; El nombre del archivo se puede especificar y el valor predeterminado a los últimos datos de simulación encontrados; Se puede especificar el índice de prueba y el valor predeterminado a 0; La evitación de colisión se puede especificar y el valor predeterminado en apagadotest_number : ejecuta pruebas completas comparando la efectividad del algoritmo de evitación de colisión, el número de prueba predeterminado a 15file_path test_index : carga y realiza una simulación sin cabeza desde el archivo cuando se especifica, de lo contrario, carga el caso de prueba predeterminado de los datos del directorio de datos; Se puede especificar el índice de prueba y el valor predeterminado a 0argument de ayuda: imprime el mensaje de ayuda para el argumento de la aplicación; El valor predeterminado a toda la lista de argumentosLa versión en tiempo real de la aplicación tiene varios atajos clave que permiten la interacción del usuario con el entorno.
Nota
El avión 0 es el primero, el avión 1 es el segundo.
Hay varios atajos clave para la versión en tiempo real de la aplicación que permiten pruebas a gran escala.
Instale la aplicación ejecutando el siguiente comando:
pip install uav-collision-avoidancePara Debian 12, debe instalar las siguientes dependencias:
sudo apt-get install libgl1 libxcb-xinerama0Para ejecutar la aplicación sin cabeza, debe ejecutar la siguiente exportación:
export QT_QPA_PLATFORM=offscreenUse cualquiera de los siguientes para ejecutar la aplicación:
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 versionConstruya clonando el repositorio y ejecutando los siguientes 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 ] El mundo tridimensional (3D) se proyecta en la pantalla 2D por altura de aplanamiento (coordenada z). Al inicio del programa, la vista no se centra en ninguna de las aeronaves. La vista se puede mover con llaves de flecha o centrarse en la aeronave usando la tecla N
Una convención de codificación no se conserva en el alcance del proyecto. Los métodos de QT están formateados por CamelCase y el resto es una convención predeterminada de nombres de Python, incluyendo Snake_Case para nombres variables y de miembros.
Miłosz Maculewicz
Revisar la licencia

Drone de Anthony Lui de sustantivo proyecto (CC por 3.0)
Todas las referencias usadas se enumeran a continuación.
Ejes principales de la aeronave ↩
Evitación de colisión UAV basada en el enfoque geométrico ↩
Python3 ↩
Pypi ↩
Pyqt6 ↩
Método de control de vuelo de UAV de eficiencia energética en un entorno con obstáculos y ráfagas de viento ↩