Montag, 23. Dezember 2019

Tello EDU



© Ryze Robotics

Das ist ein rein technischer Artikel über die Programmierung des Tello.
Wer sich nur für das fliegen und fotografieren/filmen mit Quadrocoptern interessiert, findet die relevanten Artikel hier


Per Programm Befehle zum Tello zu schicken macht Spaß, gerade auch in Verbindung mit dem Cozmo. Aber im Vergleich zum Cozmo bietet das SDK sehr wenig. Was mir gefehlt hat, das waren Befehle zum Abfragen der aktuellen Position, zum Positionieren an eine absolute Koordinatenangabe und zum Streamen des Videos.

Ich habe die Beschreibung der SDK 2.0 gefunden, wo genau diese Features enthalten sind.
Aber wie, bitte, kommt man zur SDK 2.0?

In der Beschreibung der SDK 2.0 wird ein anderer UDP Port verwendet. Das wird es wohl sein! UDP Port geändert, das Verhalten ist unverändert.Eingabe von sdk?" ergibt "unknown command".

Firmware updaten, schließlich läuft das SDK in der firmware - nichts.

-grübel-grübel-und-studier-

Des Rätsels Lösung: Es gibt einen Tello EDU ("educational") der mechanisch identisch ist und die gleichen Daten aufweist, aber eine andere Firmware hat.

SDK 2.0 kann mehr, die zusätzlichen Fähigkeiten sind:
  • Zusätzliche Kommandos wie SDK-Version und Seriennummer abfragen sowie an eine vorgegebene Position fliegen
  • Seinen Status melden der aus Position, Geschwindigkeit, Beschleunigung und Temperatur besteht EDIT: Das kann der normale Tello auch 
  • "Mission pads" erkennen, das sind Karten mit aufgedruckten Mustern, und sich relativ zu einem mission pad positionieren 
  • Den Video-stream empfangen EDIT: Das kann der normale Tello auch
  • Mit einem existierenden WLAN verbinden statt einen eigenen WLAN access point bereitzustellen (so lässt sich ein Drohnen-Schwarm realisieren)
Im Prinzip muss das eigentlich auch mit dem normalen Tello gehen, weil die Entwickler von apps Zugang zu diesen Daten haben, mit Ausnahme der mission pads.

Ich finde die Idee des EDU gut: Jugendlichen spielerisch das Programmieren beibringen. Wie ich begonnen habe programmieren zu lernen, war unser Erfolgserlebnis  eine Textausgabe auf einem Fernschreiber (Bildschirme sind erst später gekommen). Als Assistent an der TU konnten wir Studierenden das Erlebnis bieten, mit ihren Programmen etwas reales bewegen zu können. Industrieroboter und einfache Manipulatoren. Einen Quadrocopter per Programm durchs Zimmer fliegen zu lassen finde ich faszinierend.

Hätte ich doch die - um einiges teurere - EDU-Variante nehmen sollen? Tello hat noch keine Gebrauchs-spuren und die Original-Verpackung habe ich sicherheitshalber aufgehoben. Also sorgfältig verpacken, auch der Akku kommt ins originale Säckchen, und wieder zum Conrad pilgern. Der Verkäufer (ein anderer als der der mich beim Kauf beraten hat) beäugt den Tello kritisch, bemerkt Haare die mir nicht aufgefallen waren und geht seinen Chef fragen ob er den Tello zurück nehmen darf. Mit etwas Verhandlungsgeschick und dem Hinweis auf die lobende Erwähnung in diesem Blog erreiche ich dass Tello zurückgenommen wird und Tello EDU bestellt wird.

Er ist nach drei Tagen da. Bei der Inbetriebnahme gibt es ein Problem: Die Tello FPV app meldet dass ich zuerst die Original-app verwenden muss um den Tello zu "autorisieren". Wozu dieser Schritt dienen soll ist mir nicht klar. aTelloPilot gibt zwar keine Fehlermeldung aus, aber Tello startet nicht. Also die original-app öffnen - geht nicht. Mein Handy hat sich in der Zwischenzeit auf Android 10 ge-updated, und die original-app läuft nicht unter Android 10.

Was tun? Auf dem PC habe ich Bluestacks installiert, einen Android-Emulator. Dort die original-app installiert und gestartet - geht. Wieder auf's handy, Tello FPV und aTelloPilot funktionieren. Wer meinen Tello beim Conrad erworben hat, dem ist dieses Problem erspart geblieben.

Das Demo-Programm auf dem PC starten und "sdk?" eingeben - Antwort: "20". Gut, ich habe SDK 2.0.

Die bisherigen Programme testen - geht nach ein bisschen herumbasteln. Tello EDU ist abwärts-kompatibel mit dem normalen Tello.

Ein Problem: Während ich herum probiere und Tello EDU auf dem Schreibtisch liegt, läuft er heiß und schaltet sich ab. Offensichtlich fehlt ihm der kühlende Luftstrom der Rotoren. Das hat der normale Tello nicht gemacht.

Und jetzt mache ich mich daran, die neuen Funktionen zu implementieren. Für den Videostream gibt es ein ziemlich aufwändiges Demo-Programm, das aufwändige daran ist die Installation von unterstützender Software. Also doch etwas am PC installieren - aber das kann warten.

Vorher ein Programm schreiben das den Status ausliest. Dafür gibt es kein Beispielprogramm.

Aus der Beschreibung des SDK 2.0:


OK, einen UDP server aufsetzen. Das habe ich bei Siemens gemacht, mit einer anderen Programmiersprache und auf einem anderen Prozessor. Es gelingt - überraschenderweise - auf Anhieb. Jetzt ballert Tello auf den Bildschirm. 


Was ich mit diesen Daten anfangen werde, das werdet ihr später hier lesen können.


Tello EDU hat mich in zwei Punkten enttäuscht: 


  1. Die Abfrage des Status ist bei der SDK 2.0 beschrieben. Ein Freund hat den normalen Tello, auf seinem Tello sollte diese Abfrage nicht funktionieren. Sie funktioniert aber bei ihm.
    Habe ich um 60€ zu viel ausgegeben?
  2. Die Abfrage der Position funktioniert nur im "mission pad" Modus, nur wenn ein mission pad erkannt wurde und nur relativ zum mission pad (was auch so in der Dokumentation steht, ich habe sie nicht genau genug gelesen).
    Ich habe erwartet dass ohne mission pad eine Position relativ zur Start-Position ausgegeben wird, was mit dem optischen Positionierungssystem zumindest ungefähr möglich sein sollte. 

Natürlich hätte ich mit dem normalen Cozmo versuchen können, den Status zu empfangen. Ich abe aber nicht damit gerechnet, den UDP-Server auf Anhieb hinzukriegen. Wenn es dann nicht geht dann weiß man nicht ob man einen Fehler gemacht hat oder ob es prinzipiell nicht geht.

Gleiches gilt natürlich auch für den Video-stream.

Links:

https://tellopilots.com/threads/let-the-swarm-begin.3452/#post-21129
Nicht nur der Drohnenschwarm ist hier interessant, auch die Verwendung von packetsender

Keine Kommentare: