Blog

Deep Learning Blimp

Jelte Hoekstra

Aktualisiert Oktober 21, 2025
8 Minuten

Als Berater bei GoDataDriven haben wir reichlich Gelegenheit, mit neuen Technologien zu experimentieren, zum Beispiel bei den monatlichen Hack-What-You-Want Friday, an dem wir einen ganzen Tag lang alles ausprobieren, hacken oder studieren können, was uns gefällt. Für größere Projekte haben wirdie GoDataDriven Moonshots. Kürzlich wurde dem Mix eine weitere Gelegenheit hinzugefügt: Deep Learning Initiatives, bei denen wir fünf Tage lang an einem Projekt arbeiten können, bei dem Deep Learning zum Einsatz kommt.

Der Plan

Deep Learning ist zwar für sich genommen schon sehr interessant, aber noch viel interessanter ist es natürlich, wenn es mit fliegenden Objekten kombiniert wird. Bei diesem Projekt hatten wir einen Traum: Wir wollten einen fliegenden Begrüßer für unser schönes Büro in der Wibautstraat bauen. Und weil Drohnen (Quadcopter) heutzutage zu alltäglich sind, haben wir beschlossen, einen autonomen Luftschiff zu bauen!

Ein Luftschiff finden

Ein Luftschiff von Grund auf zu bauen ist cool, aber auch sehr zeitaufwändig. Da wir uns hauptsächlich für maschinelles Lernen interessierten, beschlossen wir, ein Blimp-Paket zu bestellen, das einen Ballon, einen Controller und Propeller enthält. Natürlich brauchten wir auch etwas Helium. Das Aufblasen eines Luftschiffs ist buchstäblich ein Kinderspiel. Was für eine Freude, Ihr erstes Luftschiff auf dem Dach kleben zu sehen!

Helium ist echt!

Das Paket enthielt einige Gegengewichte, um den Auftrieb des Luftschiffs zu neutralisieren: sehr praktisch. Und es wurde mit einer Smartphone-App geliefert, mit der es gesteuert werden kann. Was für ein cooles Spielzeug! Aber natürlich haben wir es nicht gekauft, um es selbst zu fliegen.

Gehirne hinzufügen

Der nächste Schritt bestand darin, das Luftschiff mit einem Gehirn in Form einer Kamera und Rechenleistung auszustatten. Leider kann unser Luftschiff höchstens 15 g tragen, das sind etwa 10 große Büroklammern. Es gibt nicht viele Kameras, die so wenig wie 15 g wiegen, vor allem nicht , wenn sie auch noch eine externe Batterie benötigen!

Es war also nicht möglich, eine Kamera am Luftschiff zu befestigen. Stattdessen haben wir uns für eine stationäre Kamera entschieden, die an einen Raspberry Pi angeschlossen ist. Natürlich ist der Pi nicht für umfangreiche Berechnungen geeignet, aber er lässt sich sehr leicht bewegen. Wir installierten einen Flask-Webserver, der Bilder auf Abruf bereitstellt, und richteten auf einem unserer Laptops, einem Macbook Pro, einen Client ein, der das Bild anfordert und etwas Deep Learning anwendet.

Die Verwendung einer stationären Kamera hatte einen großen Vorteil: Statt 'Objekte' im Sichtfeld des Luftschiffs erkennen zu müssen, mussten wir nur das Luftschiff selbst erkennen. Und während ein Zeppelin eine sehr gut definierte Form hat, gibt es in unserem Büro viele verschiedene Formen und Größen von Objekten, mit denen ein Zeppelin zusammenstoßen könnte.

Erkennen eines Luftschiffs

Das erste, was wir ausprobiert haben, war unsere Einrichtung von YOLO, einem Objekterkennungsmodell, das mit einer Webcam verbunden ist. Es ist darauf trainiert, eine Fülle von Dingen zu erkennen: Stühle, Tische, Pflanzen, Data Scientists und dergleichen.

Data Scientists und Hunde in unserem Büro

Als wir das Modell einschalteten und den Zeppelin vor die Kamera hielten, erwarteten wir natürlich, dass es den Zeppelin erkennen würde. Tatsächlich erkannte das Modell unser Luftschiff, aber zu unserer Überraschung nannte es es lieber 'Handtasche'.

YOLO so zu modifizieren, dass es unser Luftschiff korrekt erkennt, ist kompliziert und zeitaufwändig. Unser nächster Schritt bestand also darin, nach einer anderen Möglichkeit zu suchen, ein Luftschiff auf einem Bild zu identifizieren und eine Schätzung seiner Position zu erhalten. Auf dem Blog von Waleed Abdullah haben wir genau das gefunden, wonach wir gesucht haben: ein vortrainiertes Modell, das Ballons erkennt! Und natürlich ist ein Luftschiff eine Art Ballon, nicht wahr? Leider stelltfest, dass ein metallisches Luftschiff ganz anders aussieht als ein bunter Luftballon. Trotzdem hat das Modell vonihn die meiste Zeit über erkannt. Erschwerend kam hinzu, dass die Lüftung in unserem Büro die gleiche metallische Oberfläche hat wie der Zeppelin: Wenn der Zeppelin vor der Lüftung schwebte, verschmolz er mit dem Hintergrund.

Wir brauchen mehr Luftballons

Schließlich fanden wir eine einfache Lösung für unser Problem: Wir befestigten einen echten Ballon an dem Luftschiff und nutzten , um diesen Ballon zu erkennen. Also machten wir uns auf den Weg zum Supermarkt, wo wir einen Vergleich anstellten, um die leichtesten verfügbaren Ballons zu finden.

Die Suche nach Leuchtballons

Es reicht nicht aus, einen Ballon aufzublasen: Er ist so schwer! Stattdessen brauchte unser zusätzlicher Ballon auch noch etwas Helium.

Helium ist cool. Besonders, wenn es aus dem Kanister kommt.

Zu unserer großen Freude konnten wir feststellen, dass unser Modell den zweiten Ballon recht gut erkennen konnte. Allerdings war es nicht sehr schnell... Es dauerte etwa 8 Sekunden, um ein Bild zu verarbeiten! Das Luftschiff müsste sich sehr langsam bewegen, um bei dieser Geschwindigkeit eine nützliche Rückkopplungsschleife aufzubauen.

Eingabe der GPU

Es ist nie schlecht, wenn Sie feststellen, dass Sie ein paar zusätzliche Pferdestärken benötigen. Zum Glück hat unser Büro genau das:

Blimp Gehirne XXL

Diese Schönheit ist in Verbindung mit einem NUC ein großartiger Server. Er kann etwa 3 Bilder pro Sekunde klassifizieren und erzeugt so einen schönen, gleichmäßigen Strom von Feedback.

Solange sich das Luftschiff innerhalb des Blickfelds der Kamera bewegt, sollten wir in der Lage sein, seine Position zu bestimmen. Wenn das Luftschiff im oberen Teil des Bildschirms erscheint, muss seine vertikale Koordinate etwas größer sein. In ähnlicher Weise wirddie horizontale Position des Luftschiffs ermittelt, indem man berücksichtigt, ob es links oder rechts auf dem Bildschirm erscheint. Bleibt noch die Tiefe, die etwas kniffliger ist: Sie muss aus der scheinbaren Größe des Luftschiffs abgeleitet werden. Wenn das Luftschiff weit von der Kamera entfernt ist, erscheint es kleiner.

Im Prinzip 'sieht' die Kamera in sphärischen Koordinaten, und die Mathematik für die Übersetzung dieser Koordinaten in normale kartesische Koordinaten ist ziemlich einfach. Aber bevor Sie das tun können, müssen Sie die Position auf der Kamera in tatsächliche sphärische Koordinaten umrechnen - und das hängt vom Blickwinkel Ihres Objektivs ab. Wir haben diese Umrechnung kalibriert, indem wir das Luftschiff in einer festen Position hielten und die von der Kamera angezeigte Position mit der tatsächlichen Position verglichen.

Der nächste Schritt: die Steuerung des Luftschiffs.

Hacken des Bluetooth-Controllers

Das Luftschiff kann über eine Smartphone-App über Bluetooth ferngesteuert werden. Leider war keine öffentliche API verfügbarund es gab keine klare Möglichkeit, mit ihm zu kommunizieren. Stattdessen beschlossen wir, das Risiko einzugehen und eine der verfügbaren Python bluetooth connector libraries (bluepy) auszuprobieren. Nach einigem Herumprobieren gelang es uns, eine Verbindung zum Controller herzustellen. Als wir die Verbindung untersuchten, fanden wir etwa 10 verschiedene 'Merkmale': Register/Variablen, die einen Wert zwischen 0 und 128 enthalten. Zusammen bestimmen die Werte in den Merkmalen das Ausgangsverhalten des Motors.

Da diese Merkmale keine aussagekräftigen Namen haben und keine Anleitungen verfügbar waren, machten wir uns an die einzig sinnvolle Sache, die noch übrig hatte: Schreiben Sie in die Registrierungen und versuchen Sie herauszufinden, was sie tun! Nach etwa einer Stunde hatten wir es geschafft, ein Python-Programm zu schreiben, das Tastatureingaben den entsprechenden Änderungen in der Registrierung zuordnet. Zeit, unseren ersten computergesteuerten Testflug zu machen!

Die Eroberung der vertikalen Ebene

Als ersten Versuch des autonomen Fliegens haben wir uns nur auf die Steuerung der vertikalen Achse konzentriert. Die vertikale Steuerung war bei weitem am einfachsten: Einer der Propeller befand sich an der Unterseite des Luftschiffs und war entlang der vertikalen Achse auf den Boden gerichtet. Mit Hilfe eines PID-Reglers, einem weit verbreiteten Steuerungsmechanismus, der im Laufe seiner Lebensdauer eine optimale Steuerungsfunktion erlernt, gelang es uns, das Luftschiff in einer bestimmten Höhe zu stabilisieren.

Wir stießen schnell auf einige Herausforderungen. Bald wurde klar, dass das Luftschiff auf die kleinste Windböe reagiert. Lassen Sie besser keine Türen offen!

Hüten Sie sich vor entweichenden Luftschiffen!

Außerdem scheint es dem Luftschiff Spaß zu machen, einige unserer Kollegen zu ärgern.

*Bump*

Am Ende haben wir uns eine schöne Dockingstation ausgedacht.

Leider verfügt der Blimp nicht über eine kabellose Ladefunktion.

Die Meister des Himmels

Nachdem wir einen grundlegenden Mechanismus gefunden hatten, um unser Luftschiff in der Luft zu halten, war es nun an der Zeit, es auf Reisen zu schicken. Das Luftschiff verfügt überzwei parallele Heckpropeller. Das bedeutet, dass das Fliegen in eine bestimmte Richtung ein zweistufiger Prozess ist: Zuerst richten Sie das Luftschiff aus,dann geben Sie Gas. Die Ausrichtung des Luftschiffs konnte jedoch nicht einfach von der Kamera aus erkannt werden: Ein Ballon siehtvon jedem Standpunkt aus ungefähr gleich aus! Ohne die Orientierung zu kennen, gibt es keine Möglichkeit festzustellen, ob das Luftschiff in die gewünschte Richtung zeigt, oder die Lücke zu schließen.

Unser erster Versuch bestand darin, eines der größten und universellsten Hilfsmittel der Büroorganisation einzusetzen: farbige Klebezettel. Wenn wir einen rotenauf die Vorderseite und einen blauen auf die Rückseite des Luftschiffs kleben, sollten wir in der Lage sein, die beiden zu unterscheiden. Auf diese Weise würdeuns sagen, ob unser Luftschiff zur Kamera hin oder von ihr weg ausgerichtet war. In der Praxis hat das nicht funktioniert: ein Klebeband ist nicht ausreichend, um eine Farbe zu unterscheiden - mehr Klebebänder verwandeln das Luftschiff in einen Ziegelstein. Andere Methoden wie farbige Luftballons destabilisierten das Luftschiff oder verwirrten das Modell.

Schließlich haben wir uns eine einfachere Aufgabe ausgedacht: Kreise fliegen. Der Trick besteht darin, etwas Gas zu geben, wenn Sie sich in der Startrichtung bewegen. Dies erzeugt eine Rückmeldung, die dem Controller mitteilt, wie der Ballon neu ausgerichtet werden sollte. Am Ende funktionierte dieses ziemlich gut!

Die eiserne Faust der Natur

Alle guten Dinge haben ein Ende, und das Ende unseres Luftschiffs war klar, als es eintraf: Nach einer beeindruckenden Anzahl von Abstürzen brach der vertikale Propeller des Luftschiffs ab. Ein natürlicher Tod, ein würdiges Ende, im Namen der Wissenschaft.

Hat Sie unser Deep Learning-Luftschiff inspiriert?

Bauen Sie mit dem Wissen, das Sie in unserem dreitägigen Deep Learning-Kurs erworben haben, Ihr eigenes System auf!

Verfasst von

Jelte Hoekstra

Contact

Let’s discuss how we can support your journey.