add models

This commit is contained in:
Sebastian Unterschütz
2026-04-21 15:45:43 +02:00
parent f5d344cf75
commit e72ba2989e
14 changed files with 1589 additions and 79 deletions

View File

@@ -4,43 +4,69 @@ Dieses Projekt ist eine hochoptimierte KI-Steuerung für die DJI Tello Drohne (u
## 🚀 Hauptmerkmale
- **Hybrid AI Engine**: Nutzt **YuNet** (Face Detection), **MiDaS** (Depth Estimation) und **MobileNetV3** (ReID) alle via **ONNX Runtime** für maximale FPS.
- **Multithreading**: Kamera-Stream und KI-Verarbeitung laufen in getrennten Threads. Das Videobild bleibt flüssig, egal wie schwer die KI arbeitet.
- **Visual Fingerprinting (ReID)**: Die Drohne erstellt einen digitalen Fingerabdruck einer fixierten Person und findet sie automatisch wieder, wenn sie kurz aus dem Bild verschwindet.
- **Intelligente Verfolgung**: Aktive Suche in Verschwindungsrichtung und aggressiver Verfolgungsmodus.
- **Echtzeit-HUD**: Professionelles Display mit Telemetrie, AI-Tiefenkarte und Radar-Zonen zur Hindernisvermeidung.
- **Rate Limiting**: Kontrollierter Datenfluss (10Hz) zum Tello-SDK für maximale Verbindungsstabilität.
- **Sport-Modus**: Aggressives 3-Achsen-Tracking für schnelle Verfolgungsjagden.
- **Visual Fingerprinting (ReID)**: Erkennt fixierte Personen wieder, auch wenn sie das Bild kurz verlassen.
- **Multithreading**: Flüssiges Kamerabild durch Trennung von Video-Stream und KI-Logik.
- **Simulator inklusive**: Eine integrierte Ursina-Umgebung zum gefahrlosen Testen.
## 🕹 Steuerung
Klicke mit der **Maus** direkt in das Videobild, um eine Person zu fixieren (**Lock-ON**).
## 🛠 Installation
### Tastatur-Belegung:
1. **Python-Umgebung**: Empfohlen wird Python 3.10 bis 3.12.
2. **Abhängigkeiten installieren**:
```bash
pip install -r requirements.txt
```
3. **Modelle prüfen**: Stelle sicher, dass im Ordner `models/` folgende Dateien liegen:
- `face_detection_yunet.onnx`
- `midas_small.onnx`
- `reid_mobilenet.onnx`
## 🚀 Starten der Drohne
### A) Im Simulator (Standard)
1. Öffne die Datei `run.py`.
2. Stelle sicher, dass `use_real_tello=False` eingestellt ist.
3. Starte das Programm:
```bash
python run.py
```
4. Das Simulator-Fenster und das KI-Pilot-Fenster öffnen sich automatisch.
### B) Mit der echten DJI Tello
1. Schalte deine Tello ein und verbinde deinen PC mit dem WLAN der Drohne (z.B. `TELLO-XXXXXX`).
2. Öffne die Datei `run.py` und ändere die Zeile zu:
```python
app = FaceTrackingApp(use_real_tello=True)
```
3. Starte das Programm:
```bash
python run.py
```
## 🕹 Bedienung im Flug
Sobald das Video-Fenster erscheint:
1. **Klicke mit der Maus** in das Fenster, um den Fokus zu aktivieren.
2. Drücke **'T'** zum Starten (Takeoff).
3. **Tracking aktivieren**: Klicke mit der Maus auf ein erkanntes Gesicht/Person oder drücke **'K'**, um den nächsten erkannten Kopf zu fixieren (Lock-ON).
### Wichtige Tasten:
| Taste | Aktion |
| :--- | :--- |
| **T** | **Takeoff** (Starten) - Einmal drücken und kurz warten |
| **T** | **Takeoff** (Abheben) |
| **L** | **Land** (Landen) |
| **M** | Wechsel zwischen **Manuell** und **KI-Modus** |
| **K** | Lock-ON Trigger aktivieren / Fixierung löschen |
| **Space**| **Not-Aus** (Stoppt alle Motoren sofort) |
| **W/S** | Vorwärts / Rückwärts (Manuell) |
| **A/D** | Links / Rechts (Manuell) |
| **2** | **Sport-Modus** (An/Aus) - Schnelleres Tracking auf allen Achsen |
| **M** | **Manueller Modus** (KI stoppt die Steuerung) |
| **Space**| **Not-Aus** (Motoren sofort aus) |
| **W/S/A/D**| Vorwärts, Rückwärts, Links, Rechts (Manuell) |
| **R/F** | Steigen / Sinken (Manuell) |
| **E/Z** | Drehen Links / Rechts (Manuell) |
| **1** | Automatisches Drehen (Scan-Modus) an/aus |
| **Enter**| Programm beenden |
| **Enter**| Programm sicher beenden |
## 🏗 Architektur
- `drone_pilot/main.py`: Das Herzstück. Verwaltet Threads, UI-Events und die Hauptschleife.
- `drone_pilot/vision.py`: Die KI-Engine. Lädt ONNX-Modelle und verarbeitet Bilddaten.
- `drone_pilot/flight.py`: Der Flug-Controller. Berechnet RC-Vektoren basierend auf KI-Ergebnissen.
- `drone_pilot/ui.py`: HUD-Renderer für das OpenCV-Fenster.
- `drone_pilot/config.py`: Zentrale Konfiguration für Geschwindigkeiten und Schwellenwerte.
## 🛠 Installation & Start
1. Installiere die Abhängigkeiten: `pip install -r requirements.txt`
2. Stelle sicher, dass die Modelle im Ordner `models/` liegen.
3. Starte das Programm:
- Simulator: `python run.py` (Default: `use_real_tello=False`)
- Reale Drohne: Ändere in `run.py` zu `use_real_tello=True`
## 🏗 Architektur & Performance
- **AI-Worker Thread**: Verarbeitet alle Modelle parallel zum Haupt-Thread.
- **Rate Limiting**: RC-Befehle werden mit 10Hz gesendet, um das SDK-Protokoll nicht zu überlasten.
- **ONNX Acceleration**: Nutzt CPU-Optimierungen, die bis zu 5x schneller als Standard-PyTorch sind.
---
*Hinweis: Beim Fliegen mit der realen Drohne immer auf einen Akkustand > 15% achten, da der Startbefehl sonst vom SDK abgelehnt wird.*
*Viel Spaß beim Fliegen! Achte bei der echten Drohne immer auf genügend Platz und einen vollen Akku (>15%).*