Für die Mini-Drohne Tello Edu von Ryze gibt es Libraries für mehrere Programmiersprachen. Die umfassendsten Libraries sind für Swift, Python und Scratch.
Die existierenden Libraries für Java sind demgegenüber sehr rudimentär. Das ist für den ws2C die ideale Ausgangssituation.
Es soll in diesem Projekt nicht nur eine bestehende Library angewendet werden, sondern gleichzeitig
-
ein Java-API zur Tello-Steuerung und eine
-
JavaFX-Applikation, die dieses API verwendet,
entworfen und entwickelt werden.
-
Java 17. Hinweis für Mac-Benutzer: Die Verwendung von SDKMAN (s.u.) für die Installation und die Verwaltung von JDKs ist sehr empfehlenswert.
-
IntelliJ IDEA 2023.2. Es ist wichtig, diese neueste Version zu verwenden. Am besten via JetBrains Toolbox installieren. Empfehlenswert ist die Verwendung der Ultimate Edition. Studierende erhalten, nach Anmeldung, eine kostenlose Lizenz. Registrieren Sie sich unter https://www.jetbrains.com/student/ mit Ihrer FHNW E-Mail-Adresse. Für die Community-Edition benötigt man keine Lizenz.
-
TelloCamp. Ein in einem IP5-Projekt entstandener Emulator für die Tello Drohne, den wir während der Entwicklung einsetzen werden. Downloaden Sie die für Ihren Laptop passende Version aus MS Teams oder direkt von hier.
-
Git. Als Sourcecode-Repository verwenden wir
git
. -
GitHub-Account. Wir werden mit GitHub Classroom arbeiten. Dafür benötigen Sie einen GitHub Account.
Für Mac und Linux gibt es ein sehr empfehlenswertes Tool zur Verwaltung unterschiedlicher Software Development Kits: SDKMAN
Insbesondere wenn, wie üblich, mehrere Java JDKs verwendet werden sollen, hilft SDKMAN.
Sie können natürlich auch weiterhin die "normalen" Installationsmöglichkeiten verwenden.
Folgenden Befehl in einem Terminal eingeben:
export SDKMAN_DIR="$HOME/sdkman" && curl -s "https://get.sdkman.io" | bash
Falls Sie SDKMAN bereits früher installiert haben, müssen Sie SDKMAN auf den neuesten Stand bringen:
sdk update
In einem neuen Terminal-Window diesen Befehl eingeben:
sdk install java 17.0.8-tem
Danach liegt der JDK in ihrer Home-Directory im Folder sdkman/candidates/java
. Von dort können Sie es dann in IntelliJ als neuen SDK anlegen und im Projekt verwenden.
Mit:
sdk ls java
können Sie sich auflisten lassen welche anderen JDKs zu Installation zur Verfügung stehen.
Im docs
-Folder ist die Original-Dokumentation zur Tello-Drohne enthalten.
Sehr empfehlenswert ist TelloCamp Instructions.pdf
. Darin enthalten ist eine überarbeitete Dokumentation der von TelloCamp
derzeit umgesetzten Kommandos.
Als Starter-Code ist in diesem Projekt eine erste, rudimentäre API zur Steuerung einer Tello-Drohne (vor allem die Klasse Tello
) und zwei kleine Apps enthalten
-
TelloFlightPlan
. Lässt die Drohne einen fixen Flugplan ausführen (ohne GUI). -
TelloAppStarter
. Eine JavaFX-Applikation zur Steuerung der Drohne. Der Aufbau dieser Applikation entspricht genau dem Unterrichtsstoff aus OOP2.
Starten Sie zunächst den TelloCamp
Emulator, anschliessend eine der beiden Apps.
Hinweis: Der Starter-Code ist in keiner Weise vollständig. Das ist auch so gewollt. Schliesslich besteht die Aufgabe für Sie ja darin, eine brauchbare, stabile Steuerungs-Applikation für die Drohne zu entwickeln.
Im Package telloflix
ist der Starter-Code ergänzt um die Verarbeitung des Video-Streams der Drohne.
Hier wird noch offensichtlicher, dass der Starter-Code noch keine brauchbare Applikation darstellt: Es werden stets nur die Videobilder nach der vollständigen Abarbeitung eines Kommandos angezeigt. Der Grund: Während der Abarbeitung eines Kommandos ist das UI blockiert und die zwischenzeitlich gelieferten Bilder können nicht angezeigt werden. Lösung: Die Kommandos müssen asynchron abgesetzt werden.
Es kann ein Installer und damit eine doppel-klickbare Applikation für Mac und Windows erzeugt werden.
Dafür im pom.xml
die zu startende Applikation in der Property <main-class>
eintragen.
Auf einem Mac:
mvn clean javafx:jlink jpackage:jpackage@mac
Auf einer Windows-Maschine:
mvn clean javafx:jlink jpackage:jpackage@win
Um das TemplateMatching laufen zu lassen wird es über die Intelij Run Configurations ausgeführt und die nötigen Argumente bei "Program Arguments" eingefügt. Das erste Argument(Pfad) stellt die Source Datei dar, das zweite das Bild welches gesucht wird "imageToFind". Es braucht keine "" '' und muss auch nicht mit einem Komma getrennt werden.