Start Aktuell Flexbot Multicopter: So steuern und programmieren Sie die Mini-Drohne per Android

Flexbot Multicopter: So steuern und programmieren Sie die Mini-Drohne per Android

Über Drohnen liest man derzeit viel – im guten wie im schlechten Sinn. Ob sie nun Pakete liefern oder militärisch genutzt werden, ist ihnen eines gemeinsam: Sie üben eine gewisse Faszination aus. Mit dem Kickstarter-Projekt Flexbot gibt es nun einen Multicopter zu einem günstigen Preis, der sich mittels Android-Endgerät per App steuern lässt. Das Beste daran: Sowohl das OS des Flexbot als auch die Android-App sind komplett quelloffen und lassen sich nahezu beliebig anpassen!

Im Herbst 2013 machte ein kleines Team mit einem Kickstarter-Projekt auf sich aufmerksam: Damals noch ?Hex? bzw. "Hexairbot" genannt, bot man einen Multicopter an, der günstig, Open Source und mittels Smartphone steuerbar sein sollte. Das Projekt war ein voller Erfolg und statt der benötigten 10.000 Dollar wurden bis zum 31. Oktober 2013 mehr als eine halbe Million Dollar eingesammelt. Unterstützer konnten dabei zwischen Quadcopter, Hexcopter sowie einem Hexcopter mit WLAN-Kamera wählen. In diesen Varianten gibt es die Flexbot-Drohnen auch jetzt zu kaufen. Das kleinste Modell kostet 49 Dollar, der Hexcopter 69  Dollar und die Version mit Kameramodul 159 US Dollar. Nach einigen Problemen lizenzrechtlicher (Namenswahl) und logistischer Natur werden seit Frühjahr 2014 die ersten Drohnen ausgeliefert.

Hardware: Lieferumfang und Aufbau

Im Lieferumfang des Quadcopter-Kits befinden sich der dreigeteilte Rahmen, sechs Motoren und Rotoren (je zwei als Ersatz), zwei 350 mAh-Akkus, Ladegerät mit US-Stecker, Anleitung sowie eine ?Danke?-Karte für Unterstützer des Projekts.

Der Lieferumfang eines flexbot-Quadcopters. Es gibt auch größere Bausätze.
Der Lieferumfang eines flexbot-Quadcopters. Es gibt auch größere Bausätze.

Für den Zusammenbau ist die Anleitung wenig hilfreich: Die Motoren sind zwar durchnummeriert, jedoch wird nie festgelegt, welcher der vier Rotorarme die Position 1 hat. Da zwei der Rotoren jedoch anders geformt sind als die anderen beiden sind deren Positionen sehr wichtig! Position 1 liegt, wie in einem erst kürzlich vom Flexbot-Team veröffentlichten Video gezeigt wird, rechts neben dem USB-Anschluss wenn die USB-Buchse vom Körper weg zeigt. Gegen den Uhrzeigersinn folgen dann die Positionen 2 (links vom USB-Anschluss), 3 und 4.

Der mittels 3D-Druck hergestellte Rahmen hat eine raue Unterseite und offensichtlich keine besonders hohe Verarbeitungsqualität. Der große Vorteil der Materialwahl ist jedoch die hohe Flexibilität die auch ungewollten Boden- und Wandkontakt verzeiht. Ebenso sind die Propeller sehr robust. Nach dem Einbau von Rotoren, Motoren, Rahmen sowie dem Einsetzen und Laden des Akkus ist die Hardware des Flexbot fertig für den Erstflug – fehlt nur noch die Software.

Software: Programme für den Flexbot und den Androiden

Zuerst wird die Software für das Herzstück des Flexbot, sein Mainboard, benötigt. Dieses Mainboard basiert auf einem Arduino Leonardo (ATMega32u4) und enthält zusätzlich einen Sechs-Achsen Sensor, Magnetsensor, Barometrischen Drucksensor und ein Bluetooth-Modul. Dank dem Open Source Arduino wird der Flexbot mittels der kostenlos erhältlichen Arduino IDE mit seinem Betriebssystem versorgt. Dazu reicht es, die Entwicklungsumgebung auf einem Computer zu installieren, das Betriebssystem aus Github herunterzuladen, die entpackten Dateien in einen Ordner zu kopieren und die Hauptdatei HexNanoMWC_QUAD.ino (im Falle des Quadcopters) in der Arduino IDE zu öffnen. Nach Anschließen des Flexbots per USB, auswählen von Arduino Leonardo sowie USBtinyISP als Parameter in der IDE und Festlegung des entsprechenden COM-Ports kann die Firmware kompiliert und auf den Flexbot geladen werden. Noch ein Hinweis für die Besitzer eines Hexbots, bei denen sich zwei Rotoren nicht drehen: Auch auf dem Hex-Mainboard ist die Firmware für die Quad-Version vorinstalliert, ein Update ist also dringend erforderlich, um alle sechs Motoren zu betreiben.

Ist die Firmware auf der Drohne installiert ist es nötig die Steuerungssoftware auf einem Endgerät mit Android oder iOS zu installieren. Das Flexbot-Team stellt für den einfachen Einstieg eine App im Google Play Store bereit. Diese kann problemlos installiert werden und reicht für ein paar erste Flugversuche aus. Was vor dem ersten Start noch zu beachten ist, findet sich im Abschnitt ?Tipps für den Erstflug?. Wer sich jedoch etwas länger mit der App und dem Flexbot beschäftigt wird feststellen, dass die Android-App ein paar sinnvolle Funktionen vermissen lässt. Um weitere Verbesserungen einzubauen kann sich jedoch des offenen App-Quellcodes bedient werden, welcher ebenfalls bei Github zu finden ist.

Durch Öffnen des Projektes in einer IDE für Java mit angeschlossenem Android SDK (etwa IntelliJ IDEA in der kostenlosen Community Edition oder Eclipse) kann der Code geladen werden. Beim Import in Eclipse ist darauf zu achten dass unter ?General? die Option ?Existing Projects into Workspace? gewählt wird und nicht ?Existing Android Code?, da es sich bei der herunterladbaren .zip-Datei bereits um ein Projekt handelt. Wer dauerhaft an den Verbesserungen beteiligt sein möchte, sollte natürlich gleich im Git arbeiten, für gelegentliche Änderungen ist der hier beschriebene Weg ausreichend.

Ein in Eclipse geöffnetes Projekt der Android-App.
Ein in Eclipse geöffnetes Projekt der Android-App.

Nach dem erfolgreichen Öffnen können nun beliebige Änderungen am Code vorgenommen werden. Eine erste kleine Änderung ist das Hinzufügen eines ?alt_hold?-Buttons zur App: Der Button aktiviert einen Schwebemodus welcher dafür sorgt dass die Höhe des Flexbot im Flug etwa konstant bleibt. Im Code ist bereits ein solcher Button enthalten, dieser ist aber bei der im Play Store erhältlichen Version 1.0.0. nicht aktiviert (Stand Mitte Mai 2014).

Mit dem auskommentieren der hier blau markierten Zeile lässt sich in der App ein Hilfsbutton für den Schwebeflug einblenden.
Mit dem auskommentieren der hier blau markierten Zeile lässt sich in der App ein Hilfsbutton für den Schwebeflug einblenden.

Wird die entsprechende Zeile altHoldToggleBtn.setVisible(false) im Code auskommentiert und die App danach neu kompiliert und auf dem Android-Endgerät installiert, erscheint in der oberen linken Ecke ein Button. Wird dieser während des Fluges gedrückt – was bei gleichzeitiger Nutzung der Joysticks auf dem Display ein wenig Fingerakrobatik erfordert – hält der Flexbot die Höhe. Gerade Anfängern wird so der Schwebeflug etwas erleichtert. Das Einleiten des Schwebeflugs lässt sich noch weiter verbessern – etwa indem das Schweben automatisch beginnt wenn der Joystick für die Motorendrehzahl losgelassen wird. In der Community sind solche Änderungen bereits in Arbeit, der Flexbot-Besitzer und Programmierer Malte Franken hat bereits erste Grundlagen gelegt.

Blick in den Code mit den notwendigen Änderungen für automatischen Schwebeflug beim Loslassen des Drehzahl-Joysticks.
Blick in den Code mit den notwendigen Änderungen für automatischen Schwebeflug beim Loslassen des Drehzahl-Joysticks.

Die Abbildung 5 zeigt die in HudViewController.java notwendigen Änderungen. Wird die App dann kompiliert und auf dem Android-Endgerät installiert wird der Flexbot während des Fluges in den Schwebeflug versetzt sobald der Joystick, welcher die Drehzahl regelt, losgelassen wird. So erspart sich der Pilot das umständliche Aktivieren des Buttons für den Schwebeflug. Ein weiteres Manko der im Play Store erhältlichen App ist das Fehlen eines Unterspannungsschutzes: So empfiehlt das Flexbot-Team zwar eine maximale Flugzeit von 6 Minuten um den Akku nicht zu tief zu entladen, in der App gibt es jedoch keine Überwachung der Zeit und auf dem Mainboard des Flexbot keinen Unterspannungsschutz per Hardware. Auch dieses Problem wird schon angegangen. Ein erster Schritt ist das Einfügen eines Timers in die App. Dieser soll starten wenn der ?Unlock?-Button in der App gedrückt und die Steuerung so freigegeben wird. Beispiele für einfache Timer in Java finden sich im Netz. Eine mögliche Anpassung für die Flexbot-App ist in Abbildung 6 zu finden.

Auszug aus dem Code der Klasse des Timers.
Auszug aus dem Code der Klasse des Timers.

Der Code sowie die notwendigen Grafiken können im Github heruntergeladen werden. Die Buttons für den Timer werden im entsprechenden drawable-Ordner eingefügt und in der Klasse HudViewController.java die nötigen Eintragungen geschrieben. Nach dem kompilieren und Starten der modifizierten App ist die Anzeige für den Timer in der rechten oberen Ecke zu sehen.

Screenshot der modifizierten Flexbot-App mit dem Timer rechts oben.
Screenshot der modifizierten Flexbot-App mit dem Timer rechts oben.

Diese drei Beispiele sind nur ein kleiner Auszug an möglichen Ergänzungen der App. So könnte der Timer, welcher im Moment nur startet, aber nicht die effektive Flugzeit zählt, so verbessert werden dass nur die tatsächliche Laufzeit der Motoren gezählt wird. Hilfreich wären auch bessere Einstellungen für die Sensitivität oder die Unterstützung mehrerer Flexbots.

Tipps für den Erstflug

Das Team um Flexbot stellt für die App ein kurzes Video-Tutorial bereit, wo die wichtigsten Funktionen erklärt werden. Was im Video nicht genügend betont wird: Beim Verbinden von Akku und Mainboard muss der Flexbot auf einer geraden Oberfläche stehen, da sich im Moment des Einschaltens der Sechs-Achsen Sensor ausrichtet. Nach dem Anschließen des Akkus die App auf dem mobilen Endgerät starten und unter ?Einstellungen? mit dem Button ?Scan? nach dem Multicopter suchen. Nach erfolgter Verbindung zum Startbildschirm der App gehen und mittels ?Unlock? die Steuerung freigeben. Es empfiehlt sich, zunächst den Schwebeflug zu üben und langsam Höhe zu gewinnen, da die Steuerung auch im entschärften Beginner Modus empfindlich ist. Ideale Flugbedingungen wären eine leere Turnhalle oder eine kurz gemähte Wiese bei Windstille.

Ausblick

Die gelieferte Hardware ist sehr solide und macht definitiv Lust auf mehr. Die Software lässt jedoch noch zu wünschen übrig und ist ausbaufähig. Durch den offenen Quellcode der benötigten Programme lässt sich zum Glück viel herausholen. Eine wachsende Nutzerbasis trägt dazu bei, dass eben diese Software stetig verbessert wird. Der Schwerpunkt dieses Artikels liegt zwar auf dem Anpassen der Android-App, aber genauso kann die Firmware des Flexbots verändert werden. So lässt sich zum Beispiel die Empfindlichkeit der Sensoren verändern. Mit einem Spannungsteiler zwischen den Anschlüssen GND, A4 and VCC am Mainboard und entsprechenden Veränderungen in der config.h lässt sich auch ein Batterieindikator realisieren. Raum für weitere Verbesserungen ist natürlich immer noch vorhanden.

Für jeden, der an einem Austausch mit anderen Nutzern interessiert ist, lohnt es sich auf der offiziellen Kommentarseite des Hexairbot-Projekts sowie bei der Google+-Community vorbei zu schauen.  

Zur Flexbot-Homepage

Kommentiere den Artikel

Please enter your comment!
Please enter your name here