Python3 -Projekt zur Implementierung von zwei UAVs -Simulation mit Kollisionsvermeidungssystem basierend auf geometrischem Ansatz. Projektlinks:
UAV Collision Avoidance ist das Problem der Abschlussprojekt meines Bachelor -Abschlussprojekts der sicheren Zusammenarbeit von UAVs im 3D -Raum. Projekt implementiert funktionale Physikberechnungen, skalierbare GUI, realistische ADS-B-Wahrscheinlichkeiten Kollisionsvermeidungssysteme und Flugplanung in Bord. Die Anwendung bietet eine multitHhread-Echtzeitsimulation mit simulierten Flugzeugen sowie linear vorgerendete Simulation, die einen schnellen Algorithmus-Effektivitätstests ermöglichen.
-45°, 45° bzw. -90°, 90° betrachtet, wobei ein positiver Stellwinkel Klettern und positives Rollwinkel bedeutet, dass das Banken rechts bedeutet. Winkel werden nicht für die Realismus -Erhaltung angenähert.Sowohl Kollisionserkennungs- als auch Vermeidungsalgorithmen beruhen auf den geometrischen Ansatz. Sie wurden in Referenzpapier 2 präsentiert. Die Kollisionserkennung differenziert zwischen Kollision und Frontalkollision. Der zweite gilt, wenn UAVs keinen Abstand zwischen ihrem projizierten Kollisionszentrum und dem ersten haben, wenn es sich um jede andere Art von Kontakt handelt.
Der geometrische Ansatz erweist sich bei der Erkennung und Vermeidung von Kollisionen nützlich. Das System kann in den meisten Fällen Kollisionen vermeiden. Das System ist nicht perfekt und kann in einigen Szenarien versagen, insbesondere wenn die Flugzeuge zu nahe aneinander sind, wenn Konflikte erkannt werden. Das System ist energieeffizient und kann in realen Szenarien eingesetzt werden.
Das vorgeschlagene Testfälle für die Erzeugung und das Bewertung von Testfällen sind einfach und effektiv. Es ermöglicht eine schnelle Prüfung der Wirksamkeit des Systems in verschiedenen Szenarien. Das System kann weiter entwickelt werden, um komplexere Szenarien und zusätzliche Parameter einzubeziehen.
Das Python3 3 -Projekt wird als PYPI -Paket 4 verpackt. Pyside6 5 (QTs Python QT6 -Bibliothek) wurde für die GUI -Implementierung verwendet.
Die Anwendung basiert auf zwei Hauptobjekttypen, Simulation und Flugzeugen. Die Simulation wird bis zu den ersten Einstellungen erstellt, sodass eine gleichzeitige Echtzeitvariante und eine lineare Vorrenderung ermöglicht werden. Das Flugzeug besteht aus zwei Elementen, physikalischer Darstellung des UAV und Flugsteuerungscomputer, der vom ADS-B-Faden gesteuert wird. Die Forschung unter den UAV -Systemen wurde aus dem zweiten zitierten Papier 6 gezogen.
Simulationsdaten werden im CSV -Format gespeichert. Jede Zeile in der Datei stellt eine einzelne Simulation dar. Die Spalten in der CSV -Datei stellen detaillierte Informationen zum Testfall dar, einschließlich der ersten und endgültigen Parameter der Flugzeuge, der Kollisionserkennungsergebnisse und dem minimalen relativen Abstand zwischen den Flugzeugen für beide Fälle mit und ohne Vermeidung.
Beispiel -Simulationsdatendateien werden in den Datenverzeichnisdaten gespeichert. Die Ergebnisse von 200 Simulationstests mit einer 10 Hz Simulationsfrequenz werden in der Datei Simulation-2024-06-10-00-21-19 gespeichert.
Die Dateistruktur wurde unter Verwendung tree erzeugt:
tree --gitignore -I " __pycache__|.env|.github|.pytest_cache|.vscode|assets|build|logs|path-visual|uav_collision_avoidance.egg-info|venv|docs "Zeigen Sie die Dateistruktur hier an: Dateistruktur
Im Moment gibt es acht mögliche Argumente:
file_path test_index collision_avoidance - führt GUI -Simulation aus; Der Dateiname kann angegeben und standardmäßig zu den neuesten Simulationsdaten angegeben werden. Der Testindex kann angegeben und standardmäßig auf 0 angegeben werden. Die Vermeidung von Kollision kann angegeben werden und standardmäßig ausgeschaltet werdentest_number - Führen Sie die vollständigen Tests aus, um die Effektivität des Kollisionsvermeidungsalgorithmus zu vergleichen, die Testnummer standardmäßig auf 15file_path test_index - Laden und lädt bei der Angabe eine kopflose Simulation aus der Datei. Andernfalls lädt der Standard -Beispiel -Testfall aus Datenverzeichnisdaten. Der Testindex kann angegeben werden und standardmäßig 0argument - Drucke Hilfe -Nachricht für das App -Argument; Standardeinstellungen für alle ArgumentelistenDie Echtzeitversion der App verfügt über mehrere wichtige Verknüpfungen, die die Benutzerinteraktion mit der Umgebung ermöglichen.
Notiz
Flugzeug 0 ist das erste, Flugzeug 1 ist der zweite.
Es gibt mehrere wichtige Verknüpfungen für die Echtzeitversion der App, die ein umfassendes Tests ermöglichen.
Installieren Sie die App, indem Sie den folgenden Befehl ausführen:
pip install uav-collision-avoidanceFür Debian 12 müssen Sie die folgenden Abhängigkeiten installieren:
sudo apt-get install libgl1 libxcb-xinerama0Um die App kopflos auszuführen, müssen Sie den folgenden Export ausführen:
export QT_QPA_PLATFORM=offscreenVerwenden Sie eine der folgenden Ausführungen, um die App auszuführen:
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 versionErstellen Sie es, indem Sie das Repo klonen und die folgenden Befehle ausführen:
#! /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 ] Die 3-dimensionale (3D) Welt wird auf dem 2D-Bildschirm durch Abflachungshöhe (Z-Koordinate) projiziert. Zu Beginn des Programms befindet sich die Aussicht auf keiner der Flugzeuge. Die Ansicht kann mit Pfeiltasten oder mit der N -Taste auf dem Flugzeug zentriert werden.
Eine Codierungskonvention ist im Rahmen des Projekts nicht erhalten. Die Methoden von QT sind die Kamelcase -Formatierung und der Rest standardmäßig Python -Namenskonvention einschließlich Snake_Case für Variable und Mitgliedsnamen.
Miłosz Maculewicz
Lizenz überprüfen

Drohne von Anthony Lui vom NOUN -Projekt (CC von 3.0)
Alle verwendeten Referenzen sind unten aufgeführt.
Flugzeugprinzip -Achsen ↩
UAV -Kollisionsvermeidung auf der Grundlage des geometrischen Ansatzes ↩
Python3 ↩
Pypi ↩
Pyqt6 ↩
Energieeffiziente UAV -Flugkontrollmethode in einer Umgebung mit Hindernissen und Windböen ↩