Minidrohnen

Zielsetzung

Ziel dieses Projekts ist die 3D-Positionierung und Steuerung von mehreren Minidrohnen mithilfe von Embedded Systems wie den Raspberry Pi. Die Vision ist dabei unter anderem eine modulare Station für Events mit der mehrere Minidrohnen in Formationen fliegen können. Wir haben jedoch noch weitere Ziele, die wir mit leichten Erweiterungen desselben Systems erreichen wollen: 

  • Kamera-Stick zum Steuern z.B. mit Gesten 
  • Fliegen im begrenzten Platz des Werkstattschaufensters 
  • Andere Interaktionen wie Tic-Tak-Toe spielen und geometrische Formen zeichnen  

 

Projektdetails

Nach ersten Versuchen mit ArUco-Markern, die immense Probleme bei Low-light, weiten Entfernungen und schnellen Bewegungen zeigten, haben wir uns auf simple LED-Marker festgelegt, die auf der Drohne montiert werden. 

Die Erkennung der Marker findet auf einem Raspberry Pi System statt, da sowohl die PiCamera als auch die Plattform selbst sehr flexibel ist. Insbesondere ist es für die effektive Erkennung wichtig, dass die Belichtungszeit sehr niedrig gesetzt werden kann, um die LEDs nicht überzubelichten. 

Statt einer OpenCV-Implementation auf der CPU haben wir uns entschieden, die Hardware des Raspberry Pis auszunutzen und einen eigenen Blob-Detection Algorithmus auf der VideoCore GPU mit OpenGL als Basis zu nehmen. Damit erreichen wir höhere Framerates und vor allem geringere Latenzen, da das üblicherweise gefürchtete Bewegen von Daten von GPU nach CPU fast komplett vermieden wird. Dies ermöglicht uns auch das Nutzen des kleinen 5€ Computers Raspberry Pi Zero mit Echtzeit Performance. 

Nach Erkennung der LEDs muss dann auf der CPU die 3D-Position des Markers erkannt werden, was vermutlich mit solvePnP von OpenCV geschehen wird. Dann folgt das Filtern und Vorhersagen dieser Position, um ein flüssiges und genaues Tracking der Drohne sicherzustellen. Zu guter Letzt werden die gewünschten Bewegungen der Drohne berechnet, in Steuerungsbefehle umgewandelt und mithilfe eines externen RF-Moduls an die Drohne gesendet. 

Fortschritt

Für das Fertigstellen der Grundsoftware sind folgende Schritte notwendig: 

  • Hardware-nahe LED-Erkennung durch Blob-Detection 
  • Marker-Erkennung in den gefundenen Bildpunkten 
  • Herleiten der 3D-Position der Marker aus den Bildpunkten 
  • Filtern der Pose über Zeit und Vorhersage zukünftiger Positionen 
  • Treiber zum Ansteuern der Drohne mit einem RF-Modul zum Raspberry Pi portieren 
  • Korrigieren der Position der Drohne zu der gewünschten Position 

Danach sind unsere konkreten Ziele an der Reihe. Für unser erstes Ziel, den Kamera Stick, wird ein eigens designter Körper mit ergonomischem Griff und elegantem Design angestrebt (in anderen Worten: keine neue Software). Für Formationen sind komplexere Vorhersagen und akkuratere Einstellungen (PIDs) nötig, um eine gewünschte Bahn zu halten.

Bedeutung

Mit diesem Projekt zeigen wir, das auf einem kostengünstigen Embedded System durchaus Computer Vision Aufgaben in Echtzeit möglich sind. Mit dem Raspberry Pi Zero (5€) und einer billigen PiCamera (2,50€) ist dies ein extrem kompetitiver und recht starker low-cost optical tracker. Unoptimiert erreicht das aktuelle System 640×480@45fps / 960×544@30fps. 

Ebenso kann dies einfach zu einem Stereo-System erweitert werden, da zwei Zeros mit einem externen Microcontroller (3€) synchronisiert werden können, womit eine deutlich höhere Genauigkeit möglich wird. 

Nicht undenkbar sind auch andere, kompliziertere CV-Algorithmen, indem die QPU direkt beschrieben wird.

Kontakt

Hast du noch eine Frage zum Projekt oder willst Mitglied werden? Dann schick uns gerne einfach eine Email.

 > Kontakt

de_DEGerman