Vier Wege vom vorhandenen Foto bis zur offenen Entwicklungsplattform – mit nachvollziehbaren Schnittstellen, praktischen Einstiegen und klaren Grenzen.
Einordnung: Diese Seite ist eine recherchierte technische Grundlage, keine Zusage für ein bestimmtes Modell. D.R.O.L. entwickelt und untersucht diese Wege; ein fertiges autonomes Flugprodukt oder ein eigener Testflug wird hier nicht behauptet. Quellen geprüft: 5. November 2026.
Vorhandene Kamera → Bilddatei → PC → OpenCV oder ein KI-Modell → fachlich geprüfter Bericht. Oft der schnellste Einstieg, selbst ohne Drohnen-SDK. EXIF und Originaldateien erhalten; Bilder dürfen keine unzulässigen personenbezogenen Daten enthalten.
Grenze: Keine Reaktion während des Fluges. Eine normale RGB-Kamera misst keine Temperatur.
B · KI am Boden
Drohne → freigegebener Videostream und gegebenenfalls Telemetrie → Bodenstation → Analyse und Anzeige. Ob Bild und Positionsdaten zugänglich sind, hängt von Modell, Fernsteuerung, App und Firmware ab. Ein Smartphone-Bildschirm allein ist keine dokumentierte Videoschnittstelle.
Grenze: Funkunterbrechung, Verzögerung und Datenrate; Bildanalyse allein steuert nicht die Drohne.
C · Companion an Bord
Zusatzkamera → Raspberry Pi oder NVIDIA Jetson → lokale Erkennung → Speicherung oder Übertragung. Ein Companion benötigt Strom, passende Kamera, Kühlung, sicheren Einbau und genügend Nutzlast. Stromversorgung und Flugzeit sind vorab zu berechnen.
Grenze: Ein separat angebrachtes System hat nicht automatisch Zugriff auf die herstellereigene Kamera oder Steuerung.
D · Offenes Gesamtsystem
Sensoren → Flugcontroller mit ArduPilot oder PX4 ↔ MAVLink ↔ Companion mit MAVSDK oder ROS 2. Die Flugstabilisierung läuft auf dem Flugcontroller; die Zusatzsoftware kann Daten auswerten und – nur gezielt konfiguriert – Befehle senden.
Grenze: Kommunikationsverlust, Fehlklassifikation und ungeprüfte Befehle müssen durch Betriebs- und Sicherheitskonzept berücksichtigt werden.
Bei allen Varianten gilt: Bildauswertung, Assistenz und Eingriff in die Flugsteuerung sind unterschiedliche Entwicklungsstufen. Vor Hardwaretests zuerst ohne Propeller und in Simulation arbeiten. Eine sichere Rückfallebene muss separat geplant und getestet werden.
Ein Flugcontroller verarbeitet Sensoren und regelt das Fluggerät. Seine Firmware ist zeitkritisch. Ein Companion Computer ist ein zusätzlicher Rechner für rechenintensive Anwendungen. Ein Bootloader startet und aktualisiert Firmware; sein Vorhandensein bedeutet keinen offenen Zugriff. Ein SDK stellt Entwicklungswerkzeuge und Funktionen bereit, eine API beschreibt nutzbare Aufrufe.
Offizielle Schnittstellen
Mit Modell, Firmware, Fernsteuerung und SDK-Version beginnen; dann die konkrete Dokumentation prüfen. Ein SDK kann Bilder, Telemetrie oder Steuerung unterstützen – jede Fähigkeit ist einzeln nachzuweisen.
Protokolle und Hardware
USB und UART sind Schnittstellen, WLAN und Bluetooth Übertragungswege, CAN ein Bussystem. MAVLink ist ein Nachrichtenprotokoll; MAVSDK eine Programmbibliothek dafür. Keiner dieser Begriffe allein beweist Unterstützung durch eine konkrete Drohne.
Forschung am eigenen Gerät beginnt mit Dokumentation, Sicherung und passiver Beobachtung im eigenen isolierten Testnetz. Spannungspegel und elektrische Trennung prüfen, bevor eine serielle Schnittstelle angeschlossen wird. Kein Eingriff in fremde Systeme und keine Abschaltung sicherheitskritischer Funktionen. Ein externer Bildworkflow kann sinnvoller sein als eine Änderung der Firmware.
Der Schwerpunkt von D.R.O.L. liegt auf GPS-fähigen Kamera- und Entwicklungsdrohnen sowie offenen Flugplattformen. Frühere Untersuchungen einfacher WLAN-Geräte bleiben als technische Quellen erhalten.
Frühere Community-Experimente ansehen
Die folgenden Repositories sind öffentliche Forschungsarbeiten, keine von D.R.O.L. praktisch bestätigten Integrationen. Modellbezeichnungen können bei günstigen Geräten mehrere Hardwareversionen bezeichnen.
Das Projekt beschreibt einen Python-Controller, Video und optischen Fluss für ein konkretes FLOW-UFO-Gerät. Die Aussagen stammen aus dem Projekt-README; eine Übertragbarkeit auf alle E58-Geräte ist nicht belegt. Letzter Repository-Push laut GitHub: 25.03.2026. Lizenz: im Repository-Metadatensatz keine ausgewiesen; vor Wiederverwendung separat klären. Community · experimentell
Der Autor beschreibt die Analyse der WLAN-Kommunikation und ein Python-Steuerungsbeispiel; den Videostream konnte er laut README nicht dekodieren. Letzter Repository-Push laut GitHub: 31.12.2023. Lizenz: im Repository-Metadatensatz keine ausgewiesen; vor Wiederverwendung separat klären. Community · experimentell
Ein dokumentierter Ansatz ist weder eine Produktfreigabe noch der Nachweis eines erfolgreichen Fluges mit der eigenen Hardware.
Kamera und Daten: Projekt-README beschreibt ein konkretes WLAN-Gerät mit zwei Kameras; andere Gerätevarianten können abweichen.
Software und Firmware: Proprietäres Consumer-Gerät; das Community-Projekt beschreibt eine aus Netzwerkverkehr untersuchte Python-Steuerung.
Schnittstellen: Das Repository beschreibt Video, Bedienung und optischen Fluss für das untersuchte FLOW-UFO-Gerät. Die Aussagen sind Projektaussagen, keine Herstellerzusage.
KI-Anbindung: Als Forschungsansatz für Bildverarbeitung interessant; verwendbare Bildqualität und Verhalten müssen am eigenen Gerät geprüft werden.
Grenzen und Prüfstatus: Keine Übertragbarkeit auf alle E58- oder FLOW-UFO-Varianten behauptet. Lizenz und Entwicklungstand vor Nutzung prüfen; kein D.R.O.L.-Test.
Dokumentationsbasierter Einstieg · nicht selbst ausgeführt
Voraussetzungen: Ein PC mit genügend Speicher, stabilem Internet und einer geeigneten Linux-Umgebung; für Windows die jeweils aktuelle herstellerspezifische Anleitung beachten.
ArduPilot: Die offiziellen SITL-Installationsschritte für Betriebssystem und ausgewählten Stand ausführen. Version und Commit dokumentieren. SITL simuliert Flugsteuerung und Fahrzeug auf dem Rechner.
Telemetrie: Erst wenn die Simulation läuft, Ground Station oder MAVSDK über den in der jeweiligen Konfiguration dokumentierten lokalen UDP-Port verbinden. Ports unterscheiden sich nach Simulator und Weiterleitung. Nur lesen, nicht scharf schalten.
Erwartung: Die Bodenstation erkennt ein simuliertes Fahrzeug und zeigt Telemetrie. Bei fehlender Verbindung Simulatorausgabe, Portbelegung und Firewall prüfen.
Praxisanleitung: ArduPilot-Simulation und Telemetrie mit Python
Fortgeschritten · Dokumentation geprüft: 5. November 2026 · nicht praktisch getestet
Dieses Beispiel liest ausschließlich HEARTBEAT-Nachrichten einer lokalen Simulation. Es sendet keine Flugbefehle und benötigt keine Drohne. Es ersetzt nicht die Sicherheitsprüfung eines echten Systems.
1. Voraussetzungen und Version dokumentieren
Benötigt werden Ubuntu Linux, Python 3 mit venv und eine nach der offiziellen ArduPilot-Anleitung eingerichtete Entwicklungsumgebung einschließlich SITL und MAVProxy. Die konkreten Paket- und Systemversionen hängen vom gewählten ArduPilot-Stand ab. Im ArduPilot-Verzeichnis den Stand festhalten:
git rev-parse HEAD
python3 --version
Dieses Tutorial wurde gegen die am Prüftag verfügbaren Dokumentationen formuliert; ein bestimmter ArduPilot-Release wurde hier nicht praktisch verifiziert.
2. Copter-Simulation starten
Im ArduPilot-Verzeichnis:
cd ArduCopter
sim_vehicle.py --console --map -w
-w setzt die gespeicherten Parameter der Simulation zurück: nur beim ersten Start oder wenn ein Rücksetzen beabsichtigt ist verwenden. Beim ersten Start wird die Simulation gebaut, was mehrere Minuten dauern kann. Anschließend läuft MAVProxy in der Konsole. In dessen Eingabe prüfen:
output
Ist noch keine Ausgabe an 127.0.0.1:14553 vorhanden, diese in MAVProxy hinzufügen:
output add 127.0.0.1:14553
Nur lokale Tests verwenden und diesen Port nicht nach außen freigeben. Falls der Port bereits belegt ist, einen anderen freien Port sowohl in MAVProxy als auch im folgenden Skript eintragen.
3. Python-Umgebung einrichten
Ein zweites Terminal öffnen und in einem eigenen Arbeitsverzeichnis ausführen:
Die angezeigte Version zusammen mit dem ArduPilot-Commit notieren. Anleitungen und Paketversionen können sich ändern.
4. HEARTBEAT lesen
Folgenden Code als heartbeat.py speichern und mit python heartbeat.py starten:
from pymavlink import mavutil
link = mavutil.mavlink_connection("udpin:127.0.0.1:14553")
print("Warte bis zu 15 Sekunden auf einen HEARTBEAT ...")
msg = link.recv_match(type="HEARTBEAT", blocking=True, timeout=15)
if msg is None:
raise SystemExit("Kein HEARTBEAT: Simulation, UDP-Ausgabe und Port prüfen")
print("HEARTBEAT empfangen")
print("System:", msg.get_srcSystem(), "Komponente:", msg.get_srcComponent())
print("Autopilot-Typ:", msg.autopilot, "Status:", msg.system_status)
link.close()
Erwartetes Ergebnis: Die Konsole meldet einen empfangenen HEARTBEAT und zeigt System- und Komponenten-ID. Der konkrete Inhalt hängt vom simulierten System ab. Der Empfang belegt lediglich die Datenverbindung, keine Flugfreigabe.
5. Fehler eingrenzen
Kein HEARTBEAT: Läuft die Simulation? Zeigt MAVProxy mit output den richtigen Empfänger? Stimmen IP und Port im Skript?
Adresse bereits belegt: Den belegenden Prozess prüfen oder einen freien lokalen Port wählen und auf beiden Seiten ändern.
Modul fehlt: Virtuelle Umgebung aktivieren und python -m pip show pymavlink prüfen.
Simulationsstart scheitert: ArduPilot-Build-Umgebung, Terminalausgabe und Dokumentation für den verwendeten Stand prüfen.
Beispielcode · Ausführung in dieser Veröffentlichung nicht nachgewiesen
Voraussetzungen: Python 3 und OpenCV-Python in einer virtuellen Umgebung, eine eigene Datei aufnahme.jpg. Installationshinweise und Versionen: OpenCV-Dokumentation. Die Datei bleibt lokal. Das folgende Beispiel erkennt Kanten, keine Schäden und keine Objekte.
import cv2
bild = cv2.imread("aufnahme.jpg")
if bild is None:
raise FileNotFoundError("aufnahme.jpg nicht lesbar")
grau = cv2.cvtColor(bild, cv2.COLOR_BGR2GRAY)
kanten = cv2.Canny(grau, 100, 200)
if not cv2.imwrite("kanten.png", kanten):
raise OSError("Ausgabe konnte nicht gespeichert werden")
print("Gespeichert: kanten.png")
Erwartung: Eine Graustufen-Kantenkarte namens kanten.png. Bei Fehlern Dateinamen und Arbeitsverzeichnis, OpenCV-Installation und Schreibrechte prüfen. Original und Metadaten bleiben separat erhalten; die Ausgabedatei übernimmt nicht automatisch GPS-Metadaten. OpenCV: Canny
6. Von hier aus weiter
Ein sinnvoller Entwicklungspfad: vorhandene Aufnahmen lokal prüfen → Datenformate und Zeitstempel dokumentieren → Telemetrie in SITL lesen → erst dann kompatible Hardware und Strombudget auswählen. Ob YOLO, TensorFlow Lite, ROS 2 oder RTAB-Map passend sind, hängt von Aufgabe, Hardware und Version ab.
Vor einem tatsächlichen Einsatz gelten die jeweils aktuellen Betriebs-, Datenschutz- und Luftfahrtregeln. Informationen: EASA Drohnen · Luftfahrt-Bundesamt.
D.R.O.L. Lab · Diagnoseleitfaden
Kein MAVLink-Signal? Die Verbindung systematisch prüfen
Dieser Leitfaden gilt für eigene, autorisiert betriebene ArduPilot-/PX4-Simulationsumgebungen und offen dokumentierte Telemetrieverbindungen. Er ist keine Anleitung zum Zugriff auf fremde Fluggeräte. Die konkrete Portbelegung hängt von Simulator, Version und Konfiguration ab.
Verbindungstyp feststellen: Ist der Datenweg UDP, TCP oder seriell? IP-Adresse, Port und Baudrate aus der jeweiligen Konfiguration übernehmen, nicht raten.
Quelle zuerst prüfen: Läuft SITL tatsächlich und sendet es MAVLink? Konsolenausgabe und Simulatorstatus kontrollieren. Ein gestartetes Analyseprogramm allein erzeugt keine Telemetrie.
Empfänger abgleichen: Bei UDP müssen Zieladresse und Empfangsport zusammenpassen. Lokaler Rechner und Container haben nicht zwangsläufig dieselbe Netzwerkadresse.
Protokoll nachweisen: Zunächst nur auf eine gültige HEARTBEAT-Nachricht warten. Erst danach weitere Nachrichtentypen auswerten. Ein empfangenes UDP-Paket beweist noch kein MAVLink.
Versionsstand dokumentieren: Autopilot, SITL, MAVLink-Bibliothek, Betriebssystem, Startbefehl und Portkonfiguration in einem Testprotokoll festhalten.
Fehler eingrenzen: Erst Netzwerk und Firewall, dann Protokolldekodierung, anschließend Datenfelder und Einheiten prüfen. Keine Flugbefehle zur reinen Verbindungsdiagnose senden.
Minimales Prüfprotokoll
Datum · Simulator/Version · Transport (UDP/TCP/seriell) · Port · Empfang von HEARTBEAT (ja/nein) · Zeit bis zur ersten Nachricht · Fehlermeldung · Ergebnis. Status: redaktioneller Leitfaden, nicht auf der produktiven D.R.O.L.-Website praktisch getestet.
MAVLink-Telemetrie aus einer Simulation als CSV protokollieren
Dieses Beispiel verbindet sich mit einer eigenen ArduPilot-SITL-Instanz, wartet auf ein HEARTBEAT und schreibt ausgewählte Positionsmeldungen in eine lokale CSV-Datei. Damit entsteht eine nachvollziehbare Grundlage für Karten, Zeitreihen und spätere KI-Auswertungen. Es sendet keine Flugbefehle.
Voraussetzungen und Datenfluss
Python 3, das Paket pymavlink, eine gestartete ArduPilot-SITL-Simulation und ein ausdrücklich für diesen Empfänger konfigurierter MAVLink-UDP-Datenstrom. Datenfluss: SITL → MAVLink/UDP → Python → lokale CSV. Beispieladresse 127.0.0.1:14550 ist ein konfigurierbarer Beispielport, kein universeller SITL-Standard.
SITL nach offizieller ArduPilot-Anleitung starten und einen UDP-Ausgang für den Python-Empfänger einrichten.
In einer isolierten Python-Umgebung python -m pip install pymavlink ausführen.
Den folgenden Code als telemetrie_csv.py speichern und den UDP-Port gegebenenfalls anpassen.
Das Skript mit python telemetrie_csv.py starten; bei eingehenden GLOBAL_POSITION_INT-Nachrichten entsteht telemetrie.csv.
import csv
import time
from pymavlink import mavutil
PORT = 14550 # An den konfigurierten SITL-UDP-Ausgang anpassen
link = mavutil.mavlink_connection(f"udpin:127.0.0.1:{PORT}")
print("Warte auf HEARTBEAT (max. 30 Sekunden) ...")
if link.wait_heartbeat(timeout=30) is None:
raise SystemExit("Kein HEARTBEAT: SITL, UDP-Ziel und Port prüfen.")
deadline = time.monotonic() + 60
count = 0
with open("telemetrie.csv", "w", newline="", encoding="utf-8") as out:
writer = csv.writer(out)
writer.writerow(["timestamp_utc", "lat_deg", "lon_deg", "alt_rel_m"])
while time.monotonic() < deadline:
msg = link.recv_match(type="GLOBAL_POSITION_INT",
blocking=True, timeout=2)
if msg is None:
continue
writer.writerow([
time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),
msg.lat / 1e7,
msg.lon / 1e7,
msg.relative_alt / 1000,
])
count += 1
print(f"{count} Positionsmeldungen gespeichert.")
Ergebnis und Fehlerdiagnose
Die CSV enthält einen UTC-Empfangszeitpunkt sowie Breiten- und Längengrad in Grad und relative Höhe in Metern. GLOBAL_POSITION_INT ist nicht garantiert: ohne gültige Positionsdaten oder passenden Nachrichtenstrom bleibt die Datei möglicherweise bei der Kopfzeile. Die Zeitangabe stammt vom empfangenden Rechner, nicht aus der Flugcontroller-Uhr.
Bei fehlendem HEARTBEAT zuerst die MAVLink-Diagnose nutzen. Bei leerer CSV Nachrichtenrate und SITL-Positionsstatus prüfen. CSV-Dateien können sensible Geodaten enthalten; nur lokal speichern und vor Weitergabe bereinigen.
Prüfstatus: redaktionell erstelltes Beispiel; in diesem Arbeitslauf nicht gegen eine laufende SITL-Instanz ausgeführt. Keine Hardware- oder Firmware-Kompatibilität zugesichert.