Posts mit dem Label Drohne werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Drohne werden angezeigt. Alle Posts anzeigen

Samstag, 2. Januar 2021

Follow Me!

 Ich probiere die TelloMe app, die eine FollowMe-Funktion für den Tello realisiert. 

Mit dieser App wird aus dem Quadrocopter (im Volksmund "Drohne" genannt) wirklich so etwas wie eine Drohne. Ein "fliegender Roboter" der mit einem Sensor seine Umgebung erkennt.  

Leider lässt sich Tello nicht mit einem gamepad steuern während diese app läuft. Der Entwickler meint dass bluetooth zu sehr stört. Ich kann mit den simulierten joysticks am handy nicht gut fliegen. Macht nichts, ich will ja nicht selber steuern sondern das soll die app für mich machen. 

Nach Angabe des Entwicklers soll man alle anderen apps und Funktionen am Handy ausschalten. Bei mir hat es trotzdem funktioniert, außerdem funktioniert sie bei nicht so gutem Licht auch, was ansonsten dem Tello eher Probleme macht.

Die Video-Aufzeichnung  wird automatisch gestartet und beim Landen gespeichert. Das gespeicherte Video enthält keine overlay-Texte und controls. Ich habe das obige Video mit einem Bildschirm-Recorder aufgezeichnet damit man die Overlays sehen kann und damit man sieht wie die app funktioniert. 

Die app hat gut funktioniert und ich habe sie um ca. 5€ gekauft.  

Die app ist hier zu finden: https://play.google.com/store/apps/details?id=com.volatello.tellomea
und hier für iOS: https://apps.apple.com/us/app/tellome/id1494624791

Von Volate!lo ist auch die Tello FPV app die ich sehr gerne verwende. 

Eine andere app die eine Nachfolge-Funkion anbietet, allerdings nicht für Personen sondern für Gesichter und auch für Objekte, ist aTelloPilot. Bei ihr kann man das gamepad verwenden. 

Tello Vision 1D ist kostenlos und kann auch Personen folgen, ich habe es noch nicht probiert. 

Ein Video mit diesen apps folgt demnächst. 


Freitag, 28. Februar 2020

Dachträger


Was man alles auf den Tello drauf packen kann! Auf thingiverse gibt es jede Menge Vorrichtungen um einen Reperater, einen Raspberry, eine zusätzliche Kamera, ein Männchen oder sonst irgend etwas auf dem Tello zu montieren. Auf der Unterseite darf man nichts montieren was die Boden-Kamera verdecken würde. Bleibt also die Oberseite.

Prints oder andere flache Teile werden üblicherweise waagrecht angeordnet, wo sie sich teilweise über den Rotoren befinden. Das gefällt mir gar nicht. Der Luftstrom ist vorwiegend senkrecht, daher möchte ich den Print auch senkrecht montieren.Außerdem wird die Führung des Versorgungskabels, das natürlich nicht in die Rotoren geraten darf, einfacher.


Ich drucke eine Halterung für einen Raspberry Pi Zero, verwende aber nur den Unterteil (siehe auch Tello Tile Mount https://www.thingiverse.com/thing:2943670) der perfekt auf den Tello passt und schön einrastet. Siehe obiges Foto, der blaue Teil.


Auf diesen setze ich einen selbst entworfenen Print-Halter.


Im obigen Foto seht ihr diesen Print-Halter, er ist mit schwarzem Filament gedruckt. Die beiden Teile sind mit Superkleber zusammengeklebt. Die seitlichen Arme des blauen Teils könnte man abschneiden. Oder, besser, im CAD entfernen.

Mein PCB-Halter ist hier: https://www.thingiverse.com/thing:4190491

Wenn der Print-Halter liegend gedruckt wird, braucht er supports. Diese habe ich nicht gänzlich entfernt, sondern den Print mit etwas Kraft hinein gedrückt, wobei die Reste der Supports helfen den Print zu  fixieren.

Bei Seitenwind kann diese "Segelfläche" natürlich Probleme verursachen. Anders als beim Flächenflieger, wo das oft behauptet wird.  "Side force generators" für den Messerflug waren eine Zeit lang beliebt und ebenso umstritten, eben wegen der vermeintlichen Seitenwind-Problematik. Aber der Flächenflieger fliegt relativ zur Luft immer vorwärts und nicht seitwärts (außer beim slippen). Beim (Heli- und) Quadrocopter ist das natürlich anders.


Und hier ist Tello mit montiertem Xiaomi Mi 2 repeater (ohne Gehäuse). Das Versorgungskabel ist an Der Rückseite mit einem Stück Klebeband befestigt so dass es nicht in die Rotoren geraten kann. Das muss man zum Akku-Tausch entfernen.

Ein kurzer Indoor-Flug mit dem mitfliegenden Repeater bei Kunstlicht, bei dem ich nicht mit Knüppelausschlägen gespart habe, scheint eine wesentlich verbesserte Video-Qualität zu zeigen. Besser als ohne repeater oder mit stationärem Repeater. Für Outdoor-Flüge ist die derzeitige Wetterlage absolut nicht geeignet. Wenn das Wetter es zulässt werde ich dieses setup ausführlich testen, auch einen zweiten Repeater werde ich in Betrieb nehmen. Und natürlich berichten.

Raspberry Pi Zero Mount https://www.thingiverse.com/thing:4022999
Tello Tile Mount https://www.thingiverse.com/thing:2943670
Tello vertical PCB mount https://www.thingiverse.com/thing:4190491



Sonntag, 23. Februar 2020

nix wia bresln mit dem Brezlbrett

(für nicht-österreichische bzw. nicht-ost-österreichische Leser: "nix wia bresln" heißt so viel wie "nichts als Schwierigkeiten" (Bresln = Brösel = Krümel))
Und warum Brezlbrett? Weiß ich auch nicht. Wir kommen gleich dazu.

Das ist ein vorwiegend 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

Die Steuerung des Tello mit Arduino und PC funktioniert gut und war ein Spaß zu bauen. Aber in Gedanken war ich, wie ich bereits angedeutet habe, schon weiter.

Statt den PC herum zu schleppen könnte der Arduino direkt mit dem Tello kommunizieren. Dazu gibt es einen Arduino mit eingebautem WLAN-Modul, also genau das richtige für mein Vorhaben. Es handelt sich um einen Nano-kompatiblen Mikroprozessor mit einem ESP 8266 Modul das für die Kommunikation sorgt. Das ganze nennt sich NanoESP oder  "Pretzelboard". Fragt mich nicht woher der zweite Name kommt.

NanoESP ist nicht viel größer als ein Nano alleine. Tello kann ja an seinem Ladestecker 5V liefern (dazu braucht man ein OTG-fähiges USB-Kabel). Dann könnte das Pretzelboard ja mitfliegen und z.B. mit einem Distanz-Sensor (Laser. Ultraschall,...) Kollisionen vermeiden.

Wie sieht die Spannung aus, ist sie stabil, kann man ihr einen Prozessor anvertrauen? Interessanterweise wird die Spannung erst nach dem Selbsttest eingeschaltet, und dann in zwei Stufen. Dies zeigt das folgende Oszilloskop-Bild:


(übrigens ein screenshot vom Raspberry Pi 4, auf dem die Oszlloskop-Software läuft)

Aber erst einmal das Pretzelboard in Betrieb nehmen. Ich habe schon länger eines herum liegen. Ich habe einen Webserver damit realisiert. Mit CGI-Funktionen konnte der Server auf Benutzer-Eingaben reagieren. Ich wollte es verwenden um Reglerparameter für ein autonom fahrendes Segelboot einstellen zu können ohne den PC per Kabel mit dem Boot verbinden zu müssen. Die Kommunikation hat gut funktioniert, aber ich war bald mit dem Speicherplatz zu ende. Ein Micro-SD Kartenleser der Abhilfe hätte schaffen sollen hat aber nicht gut funktioniert sodass das Projekt ins Stocken geraten ist.

OK, TCP/IP geht, UDP sollte ein Kinderspiel sein. Sollte man meinen.

Zuerst einmal kryptische Compilerfehler. Die Ursache: Ich habe zwei ähnliche libraries auf meinem Rechner gehabt die das gleiche h-file beinhaltet haben. Das sollte der Compiler zwar bemerken, hat es aber nicht. Gut, ich habe es bemerkt. Eine library löschen.

Der ESP 8266 wird über AT-Kommandos angesprochen, die der Nano per Software-Serial an den ESP schickt. Ein simples sketch verbindet den PC mit dem ESP indem er die Kommandos durchreicht. Ein typischer Kommunikationsvorgang kann so aussehen:

AT+RST
OK

Das sollte den ESP resettieren. Ich bekomme aber:

AR+RST
ERROR

Jeder Befehl wird mit ERROR verweigert. Was ist los? Im Internet suchen, natürlich hat jemand das gleiche Problem gehabt. Der serielle Monitor muss auf CR/LF eingestellt sein. Steht übrigens in der (sehr knappen) Bedienungsanleitung. RTFM.Read the fabulous manual.

Nachdem diese Hindernisse aus dem Weg geräumt sind geht es an die UDP-Kommunikation. Beispiel-Programme gibt es ja - wie bei fast allem was mit dem Arduino zu tun hat - genug.

Tello mag keine CR/LF's, daher stelle ich den Monitor wieder um und füge CR/LF's dort ein wo der ESP 8266 sie braucht, aber nicht dort wo ein Kommando an Tello weitergereicht wird. 



Aber es will nicht klappen. Ich bekomme zeitweise "gallische Schimpfwörter" wie wenn ich die falsche Baudrate eingestellt hätte. Delays einfügen - nicht sehr sauber - dann funktioniert das.

Das eine Beispielprogramm kann - nach etwas Modifikation - Daten an den PC senden, das andere kann Daten vom PC empfangen. Der jeweils andere Weg funktioniert nicht. Mit etwas Bastlerei gelingt es, ein Programm zusammen zu schustern bei dem Senden und Empfangen funktionieren.

Also Tello einschalten und das Pretzelboard mit dem Tello verbinden, dann kann der erste Probeflug stattfinden!

Geht nicht, ich kann mich nicht mit dem Tello verbinden. Mit allen anderen Netzen hat es bisher geklappt. Ich konnte den NanoESP überall mit dem Internet verbinden, auch im Urlaub über das WLAN des Hotels. Umgekehrt, mit allen anderen Geräten (PC, Handy, Raspberry Pi) konnte ich die Verbindung zum Tello herstellen. Nur diese Kombination geht nicht.

Frust. 

Okay, es gibt einen workaround. Würg-around. Da ich den Tello EDU habe, kann ich ja, umgekehrt, Tello und NanoESP mit einem anderen Netz verbinden, z.B. einem handy-hotspot.

Tello's IP-Adresse mit einem IP-scanner feststellen und diese Adresse ins Arduino-Programm eingeben (vorerst hard-coded). 


So klappt es. In den beiden screenshots sieht man die AT-Kommandos die ich zum Debuggen anzeige. Wie man hier sieht bin ich die gallischen Schimpfwörter nicht ganz los geworden, wahrschenlich  hat Tello etwas "unanständiges" geschickt (das kommt vor, weil auch nicht-ASCII-codierte Informationen ausgetauscht werden, siehe hier). Aber das betrifft nur die Kommunikation zwischen Pretzelboard und PC (der in diesem Stadium der Entwicklung noch dran hängt), über's WLAN scheint es glatt zu gehen. Immerhin, ein Probeflug mit dem Pretzelboard ist geschafft.

Und dann Tello umstellen so dass er wieder einen access point zur Verfügung stellt. Auch ein bisschen kryptisch. Heute bin ich froh dass Tello auf dem Ventilator steht und nicht dauernd überhitzt.

------

Ich habe den Raspberry Pi erwähnt. Den könnte man als Bindeglied zwischen Controller bzw. RC-Sender  und Tello verwenden, obgleich das hieße mit Kanonen auf Spatzen zu schießen.

Leute montieren einen Raspberry auf den Tello, das scheint doch ein bisserl zu viel Gewicht zu sein??

Aber halt! Nicht den normalen Raspberry Pi 3 oder 4, sondern den den "Raspberry Pi Zero W". Kaum größer als das Pretzelboard, mit WLAN, SD-Karte, Kamera-Anschluss und Linux. Und kostet die Hälfte. Ich glaube, er wird auf den Tello gepackt.

Aber das ist eine andere Geschichte und die soll ein anderes Mal erzählt werden.

Links:

https://www.mikrocontroller-elektronik.de/wifi-board-nanoesp-bzw-pretzel-board/

https://iot.fkainka.de/library

 https://iot.fkainka.de/day-3


Mittwoch, 5. Februar 2020

Kühlen Kopter bewahren

Beim Programmieren kommt es vor dass ich länger sitze und nachdenke. Wenn ich dann so weit bin die neue Version zu testen funktioniert es nicht weil Tello sich inzwischen ausgeschaltet hat. Aber warum?

Ich habe mir ja ein Programm geschrieben mit dem ich Daten auslesen und in ein spreadsheet kopieren kann. Der Versuch bestätigt den Verdacht: Tello ist überhitzt weil ihm der Luftstrom fehlt. Das folgende Diagramm zeigt den Temperaturverlauf, nach 10 Minuten ist die Temperatur auf 95 Grad angestiegen und Tello schaltet sich ab.  


Also ein Gestell entwerfen in dem ein Lüfter eingebaut ist der von unten auf die Kühlrippen bläst. Natürlich wird das Gestell mit dem 3D-Drucker realisiert.

Tello möge mir dieses Portrait verzeihen,
um das Gestell zu entwerfen ist es gut genug.




Weil andere das gleiche Problem haben, gibt es das Gestell auf thingiverse zum Nachdrucken:
https://www.thingiverse.com/thing:4144048

Weiters wird ein Lüfter mit den Maßen 25 x 25 x 10mm benötigt, wie z.B. dieser.
Zur Stromversorgung habe ich ein USB-Kabel durchgeschnitten und die Versorgungsleitungen an den Lüfter gelötet. So kann ich den Lüfter von einem USB-Netzgerät, vom PC oder von einer power bank betreiben.

Ich wiederhole den Versuch mit Lüfter: Die Temperatur bleibt konstant.






Samstag, 1. Februar 2020

Guter Schüler


Das ist ein vorwiegend 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

Statt des Controllers der für Kinderhände gebaut ist hätte ich auch meinen guten, alten 35MHz Sender zerlegen und umbauen können. Auch er hat Potentiometer die man anzapfen könnte, und in seinem Gehäuse hätte ich den Arduino locker untergebracht.

Mein guter, alter 35MHz Sender
Aber ich habe es nicht übers Herz gebracht den Sender kaputt zu machen, auch wenn wir aus guten Gründen nicht mehr mit 35MHz fliegen. Wie viele Abstürze gehen auf das Konto der Funkstörungen! Heute fliegen wir mit 2,4GHz und die Funkstörungen sind Geschichte.

Der Sender hat eine Lehrer-Schüler-Buchse, praktischerweise ein 2,5mm Klinkenstecker den man leicht bekommt. Sie ist dazu gedacht, zwei Sender miteinander zu verbinden. Der Schüler-Sender schickt seine Knüppelstellungen über das Kabel an den Lehrer-Sender. Der Lehrer kann über einen Schalter entscheiden ob sein Sender das Signal des Schülers an das Modell schickt oder die Daten des Lehrer-Senders. Ich verwende meinen Sender als Schüler-Sender und den PC als "Lehrer-Sender".

Das Signal das bei der Schüler-Buchse heraus kommt lässt sich auslesen und verarbeiten.

8-Kanal PPM-Signal

Das PPM (Puls-Pause-Modulation) Format kodiert die Information in Pulsen, deren Dauer von der Knüppelstellung der jeweiligen Kanäle abhängt. Wie man im obigen Oszillogramm sieht, handelt es sich um einen 8-Kanal-Sender. Wenn ich die Knüppel bewege verschieben sich die Pulse.



Ich habe mir schon überlegt wie man ein Programm realisieren könnte das diese Zeitdauern misst. Relativ kompliziert, mit Interrupts. Aber ich bin doch sicher nicht der erste der das versucht und habe Tante Gugl gefragt. Sie hat mir zwei nützliche Informationen gegeben.
  1. Arduino stellt einen Befehl "pulseIn" zur Verfügung der Pulslängen misst 
  2. Jemand hat schon ein Arduino-Programm geschrieben das genau das macht
Dieses Programm nehme ich als Basis um mein eigenes Programm daraus zu entwickeln. Werte umrechnen, ins richtige Format bringen und an der seriellen Schnittstelle ausgeben. Fertig. Na ja, ganz so einfach wie ich es mir vorgestellt habe war es dann doch nicht.

Man könnte jeden Arduino dazu verwenden, aber ich bin zufällig auf eine besondere Ausführung gestoßen: Beetle BadUSB. Ein Arduino auf einer winzigen Platine die sich direkt in USB-Buchse des Computers stecken lässt.

Zusätzlich handelt es sich um einen 32U4-Prozessor mit dem man die Maus- und Keyboard-Bibliotheken des Arduino verwenden kann. Für meinen konkreten Anwendungsfall brauche ich dieses Feature nicht, weil ich auf der PC-Seite auf die (simulierte) serielle Schnittstelle zugreifen kann. Aber mit Maus- und/oder Keyboard-Simulation kann man jedes beliebige Programm steuern, z.B. Spiele.

Ob du es glaubst oder nicht,
das ist ein Arduino!
Naturgemäß ist die Anzahl der IO-Pins auf dieser Platine eingeschränkt, es stehen nur je 3 digitale und analoge Ein/Ausgänge zur Verfügung. Mit meiner angedachten Interrupt-Lösung hätte ich keine Chance weil es leider keine interrupt-fähigen Eingänge sind, aber für die (blockierende) pulsIn-Funktion kann man jeden Eingang verwenden.


Ein bisschen Schrumpfschlauch und fertig.
Ich habe damals noch einen zusätzlichen Schalter in den Sender eingebaut. Diesen verwende ich jetzt um den Befehl zum Landen zu geben. Außerdem baue ich mein Programm so dass es den Befehl zum Landen schickt wenn das PPM_Signal ausfällt. Sender ausschalten und Tello landet. Sender wieder einschalten und Tello ist startklar.

Und dann der erste Probeflug mit der neuem Konfiguration. Der "richtige" Sender vermittelt ein ganz anderes Gefühl als die als die kleinen Spielkonsolen und erlaubt eine wesentlich feinfühligere Steuerung. Trimmung, Expo und einstellbare Rückholfedern stehen zur Verfügung. Das steigert das Flugvergnügen noch einmal!

Wie immer gibt es mein Programm als open-source auf GitHub, siehe hier

Projekt abgeschlossen. Abgehakt? Dann kennst du mich schlecht. Die nächsten Ideen geistern schon in meinem Kopf herum. Den Sender mit nach draußen nehmen, aber den Laptop auf der Parkbank platzieren? Oder auf dem Schoß (dazu ist er ja gedacht)? Nicht so gut. Wie wäre es mit einem kompakteren Rechner? Da gibt es doch den Raspberry Pi. Das Python-Programm auf dem Raspberry zum Laufen bringen und den Raspberry an den Sender montieren. Und noch ein paar Schieber, Schalter, Taster in den Sender einbauen. Und den Raspberry mit dem Handy verbinden,.....

Oder einen Arduino NanoESP ins Gehäuse des Sender einbauen und direkt, ohne zusätzlichen Rechner, mit dem Tello kommunizieren.

Hier wird es bald wieder etwas neues zu lesen geben.


Dienstag, 21. Januar 2020

WLAN-repeater

Im Tello-Forum gibt es jede Menge posts zum Thema repeater.

Repeater sind normalerweise dazu da, das WLAN-Signal in entlegene Winkel eines Hauses zu bringen und um die Reichweite zu erhöhen. Beides interessiert mich nicht besonders. Allzu weit weg kann man mit dem kleinen Ding sowieso nicht fliegen, und auf das Video-Bild zum FPV-Fliegen möchte ich mich nicht verlassen (abgesehen davon dass es nicht erlaubt ist, ohne direkte Sichtverbindung zu fliegen).

Aber die Nutzer haben auch von einer verbesserten Videoqualität berichtet, vor allem die ruckweise Wiedergabe soll damit zu beheben sein. Und das ist interessant, weil mich diese Ruckler sehr gestört haben.

Das Ding ist für wenige Euro zu haben, aber die Einrichtung ist nicht ganz einfach. Anhand von Anleitungen im Netz klappt es aber. Den Access Point des Tello umbenennen und (wenn noch nicht geschehen) ein password einrichten. Die MI Home app installieren, einen account anlegen, die Region auf China setzen.

Die app ist nicht ganz intuitiv zu bedienen und so habe ich einen ganzen Nachmittag dazu gebraucht. Und dann die app deinstallieren. Sie verursacht einen hohen Akkuverbrauch und wer weiß was sie sonst noch alles anstellt oder ausspioniert. Sie kann nicht nur den Repeater einrichten sondern ist eine smart home Applikation die alles vom Staubsauger bis zur Türklingel vernetzt, und solche Netzwerke stehen in dem Ruf Sicherheitsprobleme zu verursachen.

Der Access point des Tello heißt jetzt "tMartinpi". Der repeater erzeugt einen access point mit dem Namen tMartinpi_plus der mit dem selben password zu erreichen ist.

Der repeater wird von einer Powerbank gespeist. Powerbank und repeater sind auf einem Stativ fixiert.

Und dann die spannende Probe aufs Exempel. Meine "Drehorte" im Stadtpark eignen sich gut für einen Test weil sie teilweise ganz schön "elektromagnetisch verseucht" sind. Dadurch fliegt Tello ziemlich unruhig und das Video ruckelt stark.
Ergebnis:
  • Tello fliegt wesentlich stabiler 
  • Das Video ist subjektiv besser, aber nicht perfekt


(dass nichts zu hören ist liegt nicht an deinen Brüllwürfeln sondern daran dass das Video keinen Ton hat)

Ein Reflektor aus Alufolie könnte die Leistung noch einmal verbessern, aber dann muss man immer zum Tello zielen. Wäre auch einen Versuch wert. 

Ein Tüftler hat sich noch eine weitere Verbesserung ausgedacht: Ein mit dem Quadrocopter mitfliegender repeater. Aus Gewichtsgründen wird das Gehäuse entfernt. Je ein Repeater in der Luft und am Boden verstärken das Signal. Das Netzwerk mit dem sich das Endgerät (handy oder PC) verbindet heißt dann tMartinpi_plus_plus.

Natürlich werde ich auch das probieren und darüber berichten.

Links:

WIFI repeater auf tellopilots.com

https://docandrew2018.blog/2018/07/15/reichweiten-erhoehung-fuer-die-ryze-dji-tello-droehnen/
wenn's auf deutsch sein soll....

WIFI repeater advice

Step by Step Setup for Xiaomi WIFI Repeater 2 Amplifier (increases distance up to 550+ ft!)

WIFI+S Range Extender vs Xiami WIFI Repeater and Tello Channel choice

2 Repeater,  einer am Boden und einer auf dem Tello montiert:

  1. https://tellopilots.com/threads/xiaomi-repeater-onboard-tello-mod.3592/
  2. http://protello.com/de/verbesserung-der-tello-leistung-durch-verwendung-von-repeatern-2/
  3. Video über die 2-repeater-Lösung


Montag, 20. Januar 2020

Eigenbau-Controller

Am PC programmieren macht Spaß. Während Tello gerade nicht automatisch und von einem Programm gesteuert fliegt gebe ich Befehle per Hand ein. Über die Tastatur. Das ist nicht sehr komfortabel.

Ich habe doch noch einen Controller von so einem 15€-Quadrocopter herum liegen der nicht mehr fliegt. Zu viel Staub, Haare, vielleicht auch überhitzt, und immer noch nicht entsorgt. Sein Controller kommt jetzt zu Ehren.


Ein Arduino findet sich auch noch in der Bastelkiste, und so entsteht ein Drahtverhau der wie Daniel Düsentrieb's neueste Erfindung aussieht.

Der Arduino wird in das Gehäuse eingebaut, ein entsprechendes Python-Programm auf der PC-Seite, und der Controller darf jetzt ein viel edleres Fluggerät steuern.

Mit den winzigen Joysticks hat man wenig Gefühl, kein Wunder dass der zugehörige Quadrocopter so oft gegen die Wand geklatscht ist. Aber für den eigenstabilen Tello reicht es. Und die Bastlerei an einem verregneten Wochenende hat Spaß gemacht.

Das Rezept zum Nachkochen ist hier: homebrew-usb-controller-for-tello

Samstag, 11. Januar 2020

tell Tello oder Der Barometermacher auf der Drohneninsel

Von einem Fliegerkollegen
vorgeschlagener Testaufbau ;-)
© Terry
Viele Stunden sind in die Programmierung gelaufen. So wie es Raimund's Barometermacher auf die Zauberinsel verschlagen hat, hat mich die Programmierung des Tello in ihren Bann gezogen. Diverse features kann man nur ausprobieren indem man ein Programm schreibt. Aus einem einfachen demo-Programm das man im Internet findet wird ein kleines Testprogramm das immer weiter wächst.

Eine beispielhafte Anwendung war der Test des Luftdruck-Sensors um ihn später für eine Regelung der Flughöhe einzusetzen.



Der Versuch, ein graphisches user interface (GUI) mit tkinter zu bauen, ist gescheitert. Es hat zwar funktioniert, aber das timing hat nicht gepasst und Werte die ich von Tello ausgelesen habe waren zwar auf den ersten Blick plausibel aber nicht korrekt.



So bin ich reumütig zum guten alten Console-Programm zurückgekehrt. So schlecht ist das aber auch nicht. Was mein Programm kann:
  • Fly Tello with text commands (like "ccw 90") or with keys (like w/a/s/d and cursor keys)
  • execute commands from a text file
  • watch selected variables from the status string and write them to a comma-separated list (csv-format)
Die erste Probe war eben das Auslesen der Luftdruck-Werte. Nach ein paar Fehlversuchen und geschredderten Zimmerpflanzen war es so weit.


Tello wird vom Programm gesteuert und die Werte werden im csv-Format ausgegeben. In's spreadsheet kopieren und mit wenigen Klicks ein Diagramm erstellen - fertig!

Das Programm kann nicht nur Barometerwerte auslesen sondern auch vieles andere. Unter dem Namen "tellTello" steht es frei zugänglich im Internet.

Have some fun with it!

Links: 


cozmobotics/tellTello

telltello-a-console-based-frontend-to-the-sdk-written-in-python3

https://tellopilots.com/threads/testing-the-barometer.4743


Freitag, 3. Januar 2020

Rauchfang-Inspektion

Du hast doch eine Drohne? Kann man damit den Rauchfang anschauen?

Es ist ein windstiller Tag, also geht es. Abheben, steigen, hin fliegen, Auslöser drücken, fertig.



Ich habe ein bisschen Bedenken gehabt ob sich Tello über der schrägen Dachfläche orientieren kann. Und ob ich mich nicht irre und gegen Dach oder Rauchfang fliege, dann müsste man eine Bergungsaktion einleiten. Die Bedenken waren unbegründet, mission completed,

"Dann ist das Ding ja wenigstens zu irgendetwas zu gebrauchen" - Zitat eines nicht namentlich genannten Familienmitgliedes.

Dabei ist darauf zu achten, dass – sobald das unbemannte Gerät für den Zweck von Kamera- oder Filmaufnahmen eingesetzt wird – dieses als unbemanntes Luftfahrzeug der Klasse 1 gilt und daher eine Betriebsbewilligung erforderlich ist.
Quelle: 
https://www.bmvit.gv.at/themen/luftfahrt/sicherheit/drohnen/tipps.html

Aber halt! 

Das stimmt natürlich nicht, wie ich es geschrieben habe. Ich bin nicht geflogen um den Rauchfang zu inspizieren. Und erst recht nicht, um ihn zu fotografieren.

Der Zweck des Fluges darf nur der Flug selbst sein, sonst wäre der Flug - jedenfalls bis 1. Juli 2020 - genehmigungspflichtig. Die Genehmigung würde 6-8 Wochen dauern und wahrscheinlich einiges kosten.

Ähnliches gab es damals mit Amateurfunkanlagen (ich weiß nicht ob die Regelung heute noch gilt). Man durfte mit anderen Funkern nur über das Funken reden. Auf vielen Segelyachten waren Amateurfunkanlagen zusätzlich zur Seefunkanlage installiert. Die Mitteilung "Der Standort meines Schiffes ist 2 Seemeilen westlich von Capo della Sapientia, Fahrt 6 Knoten, Kurs ONO" war nicht erlaubt, es hätte heißen müssen "Meine Antenne befindet sich 2 Seemeilen westlich von Capo della Sapientia und bewegt sich mit 6 Knoten nach ONO" (Niemand hat sich daran gehalten, es war ein kleines Kuriosum).

Ich bin also nur zum Spaß herum geflogen und um zu zeigen wie schön und ruhig Tello fliegt (Tello ist wirklich traumhaft geflogen, noch ruhiger und stabiler als sonst) und dass die schräge Dachfläche kein Problem für die Lageregelung darstellt habe ich auf den Auslöser gedrückt.

Mit besonders freundlichen Grüßen an die Freundinnen und Freunde bei Polizei, Aeroclub, Verkehrsministerium und Austro Control.

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/

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

Samstag, 21. Dezember 2019

Tello SDK





Tello kann man nicht nur fliegen, sondern auch programmieren. So wie ich es vom Cozmo kenne, einem kleinen Roboter, wird vom Hersteller ein System Design Kit SDK zur Verfügung gestellt.


Cozmo beim Test der Gesichtserkennung

Cozmo hat Garchen Rimpoche erkannt

Im Gegensatz zum Cozmo liegt die SDK beim Tello (oder bei der Tello, ich weiß noch immer nicht ob er, sie oder es) komplett in der Firmware. Auf dem PC (oder Handy) ist keine eigene Bibliothek oder Unterstützungs-Software notwendig, auf dem PC muss nichts tello-spezifisches installiert werden. So ist man in der Wahl der Programmiersprache komplett  frei. Es gibt ein Beispielprogramm in Python, eine in der Robotik verbreitete Programmiersprache.

Auch Pepper, ein humanoider Roboter mit dem ich an der TU Wien arbeite, wird in Python programmiert.


Pepper

Tello unterhält sich mit dem PC oder Handy über das WLAN per UDP. Die Befehle und Rückmeldungen sind utf8-codierte ASCII-Strings. "takeoff" schicken und auf "ok" warten. Es gibt Befehle zum Abheben, vorwärts, rückwärts fliegen, zum Landen, zur Abfrage des Akku-Ladezustandes und ähnliches.

Eine Besonderheit der SDK-Kommunikation sind die "abgehackten" Bewegungen: Wenn ich z.B. "forward 50"schicke dann kippt Tello nach vorne um zu beschleunigen, fliegt 50 cm nach vorne und kippt nach hinten um stehen zu bleiben. Dann schickt er "ok" und ist bereit für den nächsten Befehl.

Ich habe ein Tello-Beispielprogramm mit einem Cozmo-Programm kombiniert und um die Möglichkeit erweitert, Befehle aus einem File zu lesen und abzuarbeiten. So können Tello und Cozmo gemeinsam eine vorgegebene Route abfliegen bzw. -fahren. Wer früher am Wendepunkt ist wartet auf den anderen, ein Pas de Deux.



Beim Programmieren ist mir ein Hoppala passiert: Ich wollte Tello um einen halben Meter Höher steigen lassen und habe "up 500" eingegeben. Schon ist er an der Zimmerdecke gepickt. Was ist los? Ach ja, Cozmo rechnet in Millimeter, Tello in Zentimeter.....


Links:


https://dl-cdn.ryzerobotics.com/downloads/tello/0228/Tello+SDK+Readme.pdf

https://dl-cdn.ryzerobotics.com/downloads/Tello/Tello SDK 2.0 User Guide.pdf
Zum Thema "SDK 2.0" gibt es noch etwas zu sagen, das kommt im nächsten post.

https://github.com/dji-sdk/Tello-Python Beispielprogramme mit Video-Übertragung und pose-recognition .... Ich habe bisher glücklos versucht, irgend eines dieser Programme zum laufen zu bringen :-(

https://github.com/f41ardu/Tello-Python library mit Video-Übertragung, h.264-decoder und Gesichtserkennung

https://github.com/damiafuentes/DJITelloPy ... sehr gute python library
Unterstützt auch Drohnenschwarm (für den Drohnenschwarm braucht man den Tello EDU)

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



Montag, 16. Dezember 2019

Tello


Einmal in der Woche komme ich zufällig, also wegen eines anderen Termins, beim Conrad vorbei. Dort bin ich schon lange um die Quadrocopter herum geschlichen. Wenn ich irgendwelche elektronischen Bauteile gebraucht habe, und schon alles gehabt habe was ich brauche, dann habe ich noch in der Modellbau-Abteilung vorbei geschaut.

So auch diesmal. Der kompetente und kurz vor Ladenschluss noch motivierte Verkäufer hat mich gefragt ob er helfen kann, und ich habe ihn nach einer Drohne gefragt die in mode 1 zu fliegen ist. Ich bin mode 1 gewohnt, und die meisten billigen Fernsteuerungen sind fix in mode 2 belegt. (mode bezeichnet die Funktion der Steuerknüppel, mode1 = Gas rechts, mode2 = Gas links)

Er hat es nicht sicher gewusst, hat aber gleich nachgeschaut. Die app hat sich auf Mode 1 umstellen lassen und er ist durch die Gänge geflogen. Die Tello stabilisiert sich mit Hilfe einer Kamera. Beide Knüppel loslassen und sie steht in der Luft. Schon hat sie mir gehört.




Standardmäßig wird die Tello mit dem Handy gesteuert. Der Verkäufer hat mir einen gameSir T1d Controller (= Sender) um ca. 30€ empfohlen der per Bluetooth mit dem Handy verbunden wird. Das Handy wird mit einer Halterung am Controller fixiert. Das Protokoll dieser Bluetooth-Verbindung ist proprietär, also der Controller lässt sich nicht wie ein "normales" Bluetooth-Gerät koppeln. Eine andere app wie z.B. einen Modellflugsimulator mit dem gameSir zu steuern geht leider nicht, sofern die app nicht speziell dafür gebaut ist.

Umgekehrt, man kann manche andere controller wie z.B. Nintendo Controller, dazu verwenden den Tello zu steuern.

Von meinen Modellen bin ich gewohnt die Funktion der Fernsteuerung, also die Ansteuerung der einzelnen Achsen, am Boden zu überprüfen. Beim Quadrocopter geht das natürlich nicht (oder ich habe noch nicht herausgefunden wie es geht). Aber durch die Stabilisierung ist das kein Problem. Abheben, und wenn es nicht wie gewollt geht, landen. Dafür muss man nur einen Button klicken, Tello landet automatisch.





Die Möglichkeiten Geld auszugeben sind nach oben offen. Mit ca. 100€ handelt es sich bei der Tello um ein Spielzeug.


ACHTUNG! 

Es gibt ganz ähnliche Tello's die von den Daten her gleich sind, sich aber in der Firmware und der SDK (System Design Kit, siehe unten) unterscheiden.  Tello EDU verwendet SDK 2.0, der normale Tello verwendet eine frühere SDK (Version nicht auslesbar).

Nicht überraschend ist Tello EDU teurer. Versuche, die EDU Firmware auf einen normalen Tello zu laden sind fehlgeschlagen, siehe hier und hier.


Die Stabilisierung, großspurig Autopilot genannt, funktioniert eben optisch. Dazu müssen verschiedene Bedingungen erfüllt sein wie ausreichendes Licht (Nachtflug geht nicht), strukturierter und unbeweglicher Grund (über Wasser geht's auch nicht) etc. Die Tello kann auch ohne Stabilisierung geflogen werden, aber das können billigere Quadrocopter auch.

Das Kamerabild wird per WLAN zum Handy gefunkt wo es als Foto oder Video aufgezeichnet wird. Das ist gleich eine Schwachstelle der Tello, denn die Übertragungsgeschwindigkeit und -qualität über dieses Medium ist begrenzt. Ein Micro-SD-Karten-Slot wäre technisch kein Problem für den Hersteller, das hat rechtliche Gründe. Ein Fluggerät das eine Kamera mit Aufzeichnungsfunktion an Bord hat ist (zumindest nach derzeit in Österreich geltendem Recht) genehmigungspflichtig. Dass das Handy die vom Fluggerät empfangenen Daten aufzeichnet dürfte in den Graubereich oder in eine Gesetzeslücke fallen. 

Block-Artefakte und Ruckler kommen im Video vor. Die verscheidenen Apps bieten verschiedene EInstellmöglichkeiten um es zu verbessern. Ein WiFi-repeater soll auch helfen. Fotografieren geht viel besser. Die Auflösung ist 1280*720, also HD aber nicht full HD. 30 Bilder/Sekunde.



ACHTUNG! 

In den Werkseinstellungen ist das WLAN offen, d.h. jeder der in der Reichweite ist (Bürohaus, Wohnhaus,...) kann sich verbinden und z.B. das Kamera-Bild auslesen. 

Es kann zwar immer nur ein Benutzer aktiv sein, aber wenn Tello eingeschaltet ist und keine app aktiv ist, sind die Daten für andere zugänglich. 

Aus Sicherheitsgründen sollte ein WLAN-Password eingerichtet werden.



Die Kamera ist wie bei allen Drohnen dieser Preisklasse nicht schwenkbar sondern fix waagerecht eingebaut. Schade, denn der Blick nach unten ist beim Fliegen der interessanteste. Sie müsste ja nicht im Flug verstellbar sein, es würde genügen sie vor dem Flug händisch zu schwenken. Vielleicht lässt sich mit einem (Oberflächen-) Spiegel ein Blick hinunter realisieren.

EDIT: Das hat auch jemand anderen gestört und er hat eine Lösung: Mit dem 3D-Drucker einen Kamera-Adapter machen, siehe https://www.thingiverse.com/thing:3116704

Das Fliegen mit der Stabilisierung ist deppensicher.

Dass die Höhe mit dem Gas gesteuert wird ist trotz gewohntem mode ungewohnt. Und dass man drücken muss um zu steigen, das muss man erst einmal verinnerlichen. Bei einer der verwendeten apps (siehe unten) könnte man den Knüppel invertieren.

Der Akku soll 13 Minuten halten und benötigt 1,5 Stunden zum Aufladen. Wahrscheinlich wurden diese 13 Minuten ohne Propeller-Schutz gemessen, das zusätzliche Gewicht und der zusätzliche Luftwiderstand fordern ihren Tribut.

Auch wenn es nur 11 Minuten sind ist das lang, aber 1,5 Stunden sind auch lang. Fade G'schicht, vor allem beim programmieren (siehe später). Zusatz-Akkus und Ladegeräte sind relativ teuer. Allein schon deshalb weil der Akku direkt im Rumpf mit Kontakten einrastet statt mit einem Stecker verbunden zu werden. Das ist zwar schneller und einfacher zu bewerkstelligen, benötigt aber eine spezielle Bauform des Akkus.

Optisch wirkt Tello fragil, aber die Arme und die abnehmbaren Propeller-Käfige sind aus weichem Plastik, so dass sie wahrscheinlich den einen oder anderen Absturz überstehen. Auch die Propeller sind flexibel. Reserve-Propeller und ein Werkzeug zum Abnehmen der Propeller sind dabei.

Da die Original-app schlechte Kritiken bekommen hat habe ich mir gleich zwei (kostenpflichtige) apps von Drittanbietern installiert. Die schlechten Kritiken konnte ich nicht bestätigen bis sich mein Handy auf Android 10 updatet hat, und die anderen apps sind ihr Geld wert. Hier ist ein Vergleich der apps.


ACHTUNG! 

Zur ersten Inbetriebnahme ist die Original-app erforderlich! 
Wenn diese nicht läuft (Android 10!), hast du ein Problem.


Meine Lösung: Bluestacks (Android-Emulator für den PC). Ich weiß nicht welche Android-Version bei meiner Bluestacks-Installation emuliert wird, aber es hat geklappt.


App-Vergleich
Name Tello Tello FPV aTelloPilot
Version 1.3.0.0 1.5d P 0.7
Hersteller Shenzhen RYZE Volate!lo PingguSoft
läuft unter Android 10 nein, nur bis Android 9 ja ja
IOS (iPhone,...) ja nein nein
gameSir Controller jedes Mal händisch aktivieren automatisch aktiviert button drücken
Stick-Belegung Mode1/Mode2 frei belegbar, Kanäle invertierbar, expo Mode1/Mode2, expo
Lehrer/Schüler nein ja (z.B. einer steuert mit dem gmeSir und einer wischt am Handy) nein
Video Qualität wähl-bar "hoch"/"niedrig" Einstellmöglichkeiten für Bitraten und IFrame interval.
Bessere Video-Qualität
viele Einstellmöglichkeiten, raw video
Foto/Video Auslöser Tasten am Controller Tasten am Controller, frei belegbar,Video kann automatisch mit dem Abheben gestartet werden.  Tasten am Controller (funktioniert???)
Mission planner nein nein ja
Objekt- und Gesichts-erkennung und -verfolgung nein nein ja
Audio nein  über Handy-Mikrofon, ist aber nicht synchron zum Bild über Handy-Mikrofon, ist aber nicht synchron zum Bild
Sprachausgabe nein nein ja, nervig, abschaltbar
Dokumentation minimal pdf, englisch, 35 Seiten wiki in github für Versionen 0.5 und 0.6

Dass es keine oder wenige apps für das iPhone gibt hat rechtliche Gründe. Der Entwickler von Tello FPV hat sich da die Nase blutig gestoßen und hat es aufgegeben (sie hier).

Die in der Tabelle angeführten apps haben die gleiche Funktionalität wie die original-app und können an ihrer Stelle verwendet werden, es gibt noch jede Menge weitere. Bei der Suche nach "tello" in Google Play Store habe ich schnell einmal 14 Apps gezählt. Nicht mitgerechnet sind die DJI apps.

Unter anderem eine scratch-basierende Programmierumgebung, genannt DroneBlocks.

Zusätzlich bietet der Hersteller ein SDK (System Design Kit), also eine Schnittstelle zum Entwickeln eigener Programme, an. Darüber werde ich das nächste Mal berichten.

Links: 

https://www.ryzerobotics.com/de

Forum: https://tellopilots.com/

computerbild Tello-Mini-Drohne-Test

https://www.drohnen.de/18821/ryze-dji-tello-test/

Buying a Ryze Tello Drone? Watch This First!
https://www.youtube.com/watch?v=yQoC_n6126A

Tello FPV http://tellohq.com/tellofpv-gives-you-total-control-over-your-tello/

Scratch: https://www.halfchrome.com/program-the-ryze-tello-with-scratch/

aTelloPilot https://tellopilots.com/threads/another-tello-pilot-android-app.1634/
aTelloPilot Face tracking https://www.youtube.com/watch?v=iqH2i2DYx3M

3D-Druck: Thingiverse - Tello

Sonntag, 15. Dezember 2019

me too: Quadrocopter

Jetzt ist es so weit, irgendwann musste es sein: Ich besitze einen Quadrocopter, im Volksmund Drohne genannt.

Über den Quadrocopter schreibe ich demnächst mehr. Hier erst einmal ein Video vom ersten outdoor-Flug im Stadtpark.



Sorry für die Ruckler, daran arbeite ich noch.

Drohnozoo: Heli-, Quadro-, und andere -copter

MQ-9A „Reaper“ der United States Air Force
Bildquelle: Wikipedia
Ja, was ist denn eine Drohne? Drohnen wurden im Irak-Krieg berühmt-berüchtigt. Es handelt sich um unmanned aerial vehicles, UAV, also unbemannte Luftfahrzeuge. Wobei es egal ist ob es sich um ein Flächenflugzeug, einen Hubschrauber oder einen Multicopter handelt.

Eine Drohne muss aber mehr können als ein ferngesteuertes Flugzeug. Entweder wird sie von einem Piloten gesteuert der das Bild einer eingebauten Kamera benutzt um das Fluggerät zu steuern als ob er selbst drin säße (first-person-view, FPV), oder es besitzt ein Navigationssystem mit dem es automatisch eine vorgegebene Route abfliegen kann, es kann auch mit Sensoren (militärische) Ziele erkennen und ansteuern.

Das Militär verwendet Drohnen sowohl zum Kampf als auch zur Aufklärung.

Bildquelle: Wikipedia
Vor ein paar Jahren haben sie als Open-Source-Projekt für Bastler begonnen, heute sind sie ein Massenprodukt. Der Name Drohne hat sich eingebürgert, obwohl die meisten von ihnen nur ferngesteuerte Flugmodelle sind: Die Quadrocopter.

Wie bei einem Hubschrauber erzeugen Rotoren den nötigen Auf- und auch Vortrieb. Letzteres indem das Fluggerät um seine Längs- und Querachsen gekippt wird und der Luftstrahl damit nicht senkrecht steht sondern auch eine horizontale Komponente aufweist. Das ist auch bei einem Helikopter so.

Der Name Helikopter kommt aus dem Griechischen. Helix ist die Schraube, Pterigon der Flügel. Also ein Schraubenflügler.

Bildquelle: Wikipedia
Mehr als ein "Schraubenflügel" machen aus einem Helikopter einen Multicopter.

Die Anzahl der Rotoren muss gerade sein, eine Hälfte rotiert in eine Richtung, die andere in die andere sodass die Drehmomente der Rotoren einander kompensieren. Mindestens vier Rotoren sind notwendig, daher Quadrocopter. Sechs, acht,... dürfen es auch sein.




Hauptrotorkopf eines Eurocopter EC 155
Bildquelle: Wikipedia
Während beim Hubschrauber oder Helikopter eine relativ aufwändige mechanische Steuerung notwendig ist um den Luftstrahl des Hauptrotors in die gewünschte Stärke und Richtung zu lenken (Taumelscheiben-Steuerung), und außerdem ein Heckrotor das Drehmoment des Hauptrotors ausgleichen und für die Steuerbarkeit um die Hochachse sorgen muss ("gieren"), fällt einem dies beim Multicopter quasi in den Schoß. Die Rotoren sind einfache starre Luftschrauben, die Steuerung der heutzutage sehr effizienten  Elektroantriebe erfolgt durch die heutzutage ebenfalls sehr effiziente sowie gewichts- und kostengünstige Mikroelektronik.

Ein solches Gebilde stabil zu halten wäre noch schwieriger als einen Hubschrauber zu fliegen. Auch da steht uns die Elektronik hilfreich zur Seite. Früher nutzte man die Tendenz eines Kreisels, seine Achse im Raum unbewegt zu halten aus, um Drehbewegungen zu erkennen und ihnen entgegenzuwirken, also das Luftfahrzeug zu stabilisieren. Auch wenn das längst nicht mehr mit mechanisch rotierenden Bauteilen sondern mit Halbleitern geschieht, spricht man heute noch vom Kreiselstabilisator oder Gyroskop (englisch gyroscope). Also kein Fernglas mit dem man nachschauen kann wo es Gyros gibt ;-)

Solche Stabilisatoren können also um die drei Rotationsachsen stabilisieren, aber wie sieht es mit den drei translatorischen Achsen aus? Auf der Verpackung eines jeden, auch noch so billigen Quadrocopters (Drohne) findet sich vollmundig die Angabe "6-Achs-Gyroskop". Nun, die Physik, bzw. die Geometrie, sagt uns dass es nur drei Achsen gibt um die man mit einem Gyroskop stabilisieren kann. Im Fall der billigen Spielzeuge ist diese Angabe meines Erachtens schlichtweg falsch.

Bei diesen fällt es mir besonders schwer, die Höhe zu halten. Entweder saust das Ding an die Zimmerdecke, oder es befindet sich in einem schnellen Sinkflug der auch mit Vollgas nicht zu stoppen ist.

Die nächste Stufe der Komplexität sind daher Multicopter die zusätzliche Stabilisatoren besitzen. Mit Beschleunigungssensoren und/oder einer Kamera die nach unten gerichtet ist stellt der Multicopter seine Position und Geschwindigkeit gegenüber dem Grund fest und regelt seine Position, sogar bei Wind. Das sieht gespenstisch aus wenn das Fluggerät wie mit dem Siemens Lufthaken festgenagelt erscheint. Stupst man es an, kehrt es an die vorherige Position zurück.

Auch das Abfliegen bestimmter Bahnen oder das automatische Zurückkommen können so realisiert werden. Da kann man dann schon wirklich von einer Drohne sprechen.

Der häufigste Einsatzzweck für Drohnen ist das Filmen und Fotografieren, auch im professionellen Bereich. Auch eine teure Drohne ist immer noch viel billiger und flexibler einsetzbar als ein manntragendes Luftfahrzeug.

Professionelle Aufnahmen dürfen natürlich nicht verwackelt sein, daher wird die Kamera noch zusätzlich mit einem sogenannten Gimbal stabilisiert. Damit gelingen wirklich perfekte Aufnahmen.

Dienstag, 10. Dezember 2019

Quadrocopter-Flug im Garten


Ton einschalten!


Pilot und Luftfahrzeughalter ist mein Neffe Jakob.
MIt dem Handy vom FPV-Bildschirm abgefilmt.