Verbinden und Steuern

Obwohl ich eine Reihe von Tutorials darueber schreibe, wie man DJI-Drohnen programmiert, wenn ich gefragt werde, welche die ideale Anfaengerdrohne zum Fliegenlernen und Programmieren ist, ist meine Standardantwort die Ryze Tello. Hier sind ein paar Gruende, sie zu waehlen:

  • Ziemlich niedriger Preis
  • Einfach in verschiedenen Sprachen zu programmieren
  • Sicher fuer Innenraeume
  • Sehr robust

Seien wir ehrlich: Es gibt auch einige Nachteile:

  • Kein GPS
  • Nicht geeignet bei windigen Bedingungen
  • Anfaellig fuer WLAN-Stoerungen
  • Begrenzte Reichweite
  • Kein Gimbal; nur feste Kamera

Wenn du bereits eine Ryze Tello, ein iPhone und ein MacBook hast, ist dieses Tutorial der richtige Ort, um mit dem Programmieren zu beginnen.

Dieses Tutorial bietet eine vollstaendige iOS-App, implementiert in Swift und SwiftUI, die sich mit der Tello-Drohne verbindet und Befehle wie Starten und Landen ausfuehrt.

Wenn du die Nachteile der Tello nicht akzeptieren kannst oder eine Drohne fuer den Aussenbereich mit erweiterter Reichweite benoetigst, empfehle ich meine Serie “Programming DJI Drones”.

Die Beispiel-App zeigt ein paar Buttons; jeder Button ruft einen Drohnenbefehl auf. Ich habe die folgenden Befehle implementiert:

  • Mit der Drohne verbinden
  • Befehlsmodus aktivieren
  • Abheben
  • Landen
  • 360 Grad im Uhrzeigersinn drehen
  • 360 Grad gegen den Uhrzeigersinn drehen

Hier ist ein Screenshot der App, nachdem du sie auf deinem Handy gebaut und ausgefuehrt hast.

Alle Befehle sind im Tello SDK-Handbuch dokumentiert. Siehe den Ressourcenabschnitt am Ende dieses Beitrags fuer Links.

Dieser Code gibt dir alles, was du brauchst, um die App zu erweitern und deine eigene Funktionalitaet hinzuzufuegen.

Es sind mindestens zwei weitere Tutorials fuer die Tello-Drohne geplant.

Das zweite Tutorial behandelt das Empfangen von Telemetriedaten und deren Echtzeitanzeige in der App.

Im dritten Teil zapfen wir den Videostream der Tello an und zeigen ihn im Vollbildmodus auf dem iOS-Geraet.

Der vollstaendige Code fuer dieses Tutorial kann hier heruntergeladen werden.

Eine Verbindung herstellen

Die gesamte Kommunikation mit der Tello-Drohne basiert auf UDP und wird von der UdpSender-Klasse in der begleitenden Tutorial-App behandelt.

Um Befehle wie Abheben und Landen zu senden, muessen wir uns zuerst verbinden.

Wir verwenden Apples Network-Framework, das es unkompliziert macht, eine UDP-Verbindung herzustellen und Daten zu senden.

Der folgende Code ist Teil von UdpSender und initiiert bei Aufruf eine Verbindung zu einem host an einem angegebenen port.

func connect() {
 connection = NWConnection(host: host, port: port, using:.udp)

 connection!.stateUpdateHandler = { (newState) in
...
 }

 connection!.viabilityUpdateHandler = { (isViable) in
...
 }

 connection!.betterPathUpdateHandler = { (betterPathAvailable) in
...
 }

 connection!.start(queue:.global())
}

Erst nach diesem Schritt koennen wir Befehle ausgeben, um die Drohne das tun zu lassen, was sie tun soll: abheben und fliegen.

Befehlsmodus

Die Tello muss auf command-Modus gesetzt werden, bevor wir andere Befehle wie takeoff und land ausgeben koennen.

Du kannst pruefen, ob deine Drohne bereits im command-Modus ist, wenn das vordere Licht langsam gruen blinkt. Wenn es nach einer Weile rot blinkt, hat die Drohne innerhalb von 15 Sekunden keinen Befehl erhalten.

Die Tello SDK-Dokumentation enthaelt die vollstaendige Liste der verfuegbaren Befehle, die an die Drohne gesendet werden koennen.

UdpSender enthaelt den Code zum Senden von Befehlen:

func send(_ payload: Data) {
 guard let connection = self.connection else { return }

 connection.send(content: payload, completion:.contentProcessed({ sendError in
...
 }))
}

Es steckt nicht viel mehr dahinter - es ist wirklich so einfach.

Wenn die Tello einen Befehl empfaengt und ihn ausfuehrt, antwortet sie mit “ok”.

Ich habe bemerkt, dass dieses “ok” manchmal verzerrt erscheinen kann und die Konsole seltsame Zeichen anzeigen koennte. Das verhindert nicht das Senden eines weiteren Befehls.

Fahre fort und baue die App auf deinem iPhone. Wir werden sie fuer den naechsten Schritt brauchen.

Abheben und Fliegen

Mit der gebauten und auf deinem iPhone laufbereiten App ist es Zeit, die Drohne in die Luft zu bringen.

Folge diesen Schritten:

  • Setze den Akku in die Drohne ein
  • Schalte die Drohne ein; nach kurzer Zeit sollte sie gelb blinken
  • Verbinde das WLAN deines Telefons mit dem Netzwerk der Drohne

  • Starte die App
  • Druecke den “Connect”-Button
  • Die Drohne sollte jetzt gruen blinken
  • Druecke den “Takeoff”-Button

Gut gemacht - viel Spass beim Fliegen!

Fazit

Jetzt hast du alles, was du brauchst, um deine Tello-Drohne mit deiner eigenen SwiftUI-App zu steuern.

Erweitere sie mit mehr Befehlen und Funktionen.

In der Zwischenzeit arbeite ich am zweiten Teil des Tutorials fuer das Empfangen und Anzeigen von Telemetriedaten.

Der vollstaendige Code fuer dieses Tutorial kann hier heruntergeladen werden.

Ressourcen