Freitag, 27. Dezember 2019

Tello GoLang - programming beyond SDK




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

Das SDK erleichtert die Erstellung eigener Programme, ist aber nicht zwingend erforderlich.
Es gibt einige Besipiel-Programme im Internet, die ohne SDK auskommen.

Das tello Go (golang) package ist von Stephen Merrony aus Frankreich geschrieben. "The tello Go (golang) package is an unofficial, easy-to-use, standalone API for the Ryze Tello® drone."

Was ist go, was ist golang? Go ist eine Programmiersprache (siehe Wikipedia). Also die (n+1)te Programmiersprache erlernen!
Zuerst einmal den Compiler installieren und mit einem "hello world" - Programm testen.
Dann ein - gut gemachtes - tutorial durchlaufen.

Einiges ist anders als gewohnt. Bei Variablendeklarationen steht der Typ in C vor dem Variablennamen, bei go danach. Der Funktionsrumpf wird wie in C in geschweiften Klammern geschrieben, aber anders als in C ist es nicht egal welche und wie viele whitespace-character vor der ersten geschweiften Klammer stehen. Schlimmer noch: Man muss die Klammer so setzen wie ich es nicht mag. Na gut, Gewohnheitssache.

Open Source ist ja ein erstaunliches Phänomen in unserer von Kommerz geprägten Welt. Der Compiler ist frei downloadbar, und das tello golang Paket ist ebenfalls kostenlos und im source code verfügbar.

https://github.com/SMerrony/tello
und um das package zu testen ein Terminalprogramm das die Funktionen aufruft:
https://github.com/SMerrony/telloterm

Downloaden und zu übersetzen beginnen. Erste Fehlermeldung - ein fehlendes package downloaden - nächste Fehlermeldung - wieder ein package ergänzen, nach 5 zusätzlichen Packages bekomme ich ein exekutierbares Programm!

Tello einschalten, PC mit dem WLAN verbinden und telloterm starten.


Ich kann Tello mit Tastendrücken abheben lassen, steigen, sinken, drehen, landen.
Ich bekomme die Koordiantenangaben die mir das SDK 2.0 vorenthalten hat.

Videostram darstellen - dazu musste ich mplayer downloaden - funktioniert!

Bild im Bild im Bild...
Kamera auf den Bildschirm gerichtet
immer wieder lustig

Das Programm verwendet nicht die SDK sondern die "normale" Kommunikation die auch die apps verwenden. Hier wird nicht mit ASCII-Strings gearbeitet sondern mit Bitfeldern in denen die Angaben binär codiert auf gewissen bits liegen. Unter anderem sind Einträge für die Position der Steuerknüppel, die eine harmonische Steuerung des Tello erlauben. Das ganze ist natürlich unabhängig von der Programmiersprache.

Und schon juckt es mich in den Fingern das Programm abzuwandeln oder zu verbessern, seine Funktionen für eigene Programme zu verwenden. Im code herum stierln um draufzukommen wie die Kommunikation zum Tello funktioniert.

Links

 Compiler installieren

Go tutorial "A Tour of Go"

https://github.com/SMerrony/tello

https://github.com/SMerrony/telloterm

tello package documentation https://godoc.org/github.com/SMerrony/tello

https://github.com/SMerrony/tello/blob/master/ImplementationChart.md Hex-Codes für Befehle

https://gobot.io/blog/2018/04/20/hello-tello-hacking-drones-with-go/

Keine Kommentare: