Dieser Beitrag Evakuierungsberatungssystem mit Drohne Dies ist das erste Kapitel von. Den Produktionshintergrund entnehmen Sie bitte.
Erstellen Sie ein System, das Tello-Drohnen unter AWS betreiben kann. Wenn Sie es unter AWS betreiben können, können Sie es mit verschiedenen Diensten verknüpfen. Lassen Sie uns also Ihre Träume erweitern.
Tello edu, das vom chinesischen Startup-Unternehmen Ryze Tech entwickelt wurde, wird verwendet. Das offizielle SDK wird von Intel und DJI entwickelt, und v2 kann mit der Edu-Version verwendet werden, und die Drohne ist eine Slave-Einheit. Es wird empfohlen, die Edu-Version zu kaufen, da es möglich ist, in einer Formation zu fliegen. Da dieses SDK für die Drohnensteuerung verwendet wird, klonen Sie es im Voraus. Grundlegende Flug- und Bild-Streaming-Methoden in Python unter Verwendung der Umgebungskonstruktion und des SDK finden Sie im SDK Benutzerhandbuch. Siehe 20User% 20Guide.pdf) und einen weiteren Artikel über Tello.
Geben Sie dem Argument der send_command-Methode der Tello-Klasse einfach einen Zeichenfolgenbefehl, und es wird fliegen. Als Referenz lautet der grundlegende Flugbefehl wie folgt. Darüber hinaus gibt es auch Rotationsbefehle und Befehle zum Zeichnen eines Bogens durch Angabe der Geschwindigkeit. Überprüfen Sie daher, wie Sie ihn verwenden.
Command | Erläuterung |
---|---|
command | Starten Sie den SDK-Modus |
takeoff | ausziehen, starten, abheben, losfahren |
land | Landung |
emergency | Sofortiger Motorstopp |
up x | 20~Steigen Sie zwischen 500 cm |
down x | 20~Abstieg zwischen 500 cm |
left x | 20~Fliegen Sie zwischen 500 cm nach links |
right x | 20~Fliegen Sie zwischen 500 cm nach rechts |
forward x | 20~Fliegen Sie zwischen 500 cm vorwärts |
back x | 20~Fliegen Sie zwischen 500 cm zurück |
Erstens unterstützt die Tello-Drohne keine Mobilkommunikationsdienste wie die 4G-Kommunikation, und es ist unwahrscheinlich, dass sie im tatsächlichen Betrieb ferngesteuert wird, aber es wird in Zukunft nützlich sein, sie durch die Verwendung von Diensten im Internet als Auslöser zu steuern. Es gilt als. In diesem System werden wir AWS als Cloud-Service verwenden und versuchen, Tello aus der Cloud zu fliegen.
Wenn Sie Tello als WLAN-Basiseinheit verwenden und über WLAN eine Verbindung zu einem PC herstellen, ist es nicht möglich, eine WLAN-Verbindung für die Verbindung mit AWS zu verwenden. Daher haben wir diesmal den PC und das Smartphone per Kabel verbunden, damit PC und AWS über das Tethering des Smartphones kommunizieren können. Zu diesem Zeitpunkt muss die Priorität des Tethering-Dienstes, der für die Verbindung zum Internet verwendet wird, höher sein als die von Wifi.
Dieses Mal wurde die MQTT-Kommunikation anstelle der HTTP-Kommunikation für die Kommunikation zwischen AWS und der Drohne übernommen. Es ist ein Nachrichtenprotokoll, das leichter als die HTTP-Kommunikation ist, und ich dachte, dass die MQTT-Kommunikation zum Senden von Zeichenfolgenbefehlen geeignet ist (ich wollte auch MQTT lol ausprobieren). Die MQTT-Kommunikation wird durchgeführt, indem ein Kanal im MQTT-Broker festgelegt und die veröffentlichten Daten auf diesem Kanal abonniert werden. Ein Hauptmerkmal ist, dass viele-zu-viele-Kommunikation leicht durchgeführt werden kann. (vielleicht) AWSIoTCore bietet einen MQTT-Broker. In diesem System veröffentlicht die Drohne den Flugbefehl auf der Abonnementseite des Flugbefehls und bestätigt den Flug vorerst.
AWS IoT Core Melden Sie sich als Nächstes bei AWS an, öffnen Sie IoT Core und registrieren Sie Drone als Objekt.
Erstellen Sie ein Zertifikat, fügen Sie eine Richtlinie hinzu und aktivieren Sie das Zertifikat. Dieser Artikel ist für detaillierte Verfahren überwiegend leicht zu verstehen. (Referenz-URL) Ich werde das Zertifikat später verwenden, also werde ich es definitiv herunterladen.
Es scheint, dass das Tello SDK mit dem Python2-System kompatibel ist, daher denke ich, dass die Bibliotheken usw. an das 2-System angepasst werden sollten. (Nicht überprüft, ob es mit Python3 funktioniert)
pip install AWSIoTPythonSDK
Und setzen Sie die Bibliothek für IoT Core von Python.
Es ist in Ordnung, wenn Sie das folgende Hauptsteuerungsprogramm in das Verzeichnis schreiben, in dem sich das Zertifikat und Tello.py befinden (z. B. Single_Tello_Test).
main.py
# -*- coding:utf8 -*-
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
from datetime import datetime
from tello import Tello
import ast
import time
import json
import sys
# For certificate based connection
myMQTTClient = AWSIoTMQTTClient('device001') #Angemessener Wert
myMQTTClient.configureEndpoint('xxxxxxxxxxxx.ap-northeast-1.amazonaws.com', 8883) #Überprüfen Sie auf dem Verwaltungsbildschirm
myMQTTClient.configureCredentials('rootCA.pem', 'xxxxx-private.pem.key', 'xxxxx-certificate.pem.crt') #Verschiedene Zertifikate
myMQTTClient.configureOfflinePublishQueueing(-1) # Infinite offline Publish queueing
myMQTTClient.configureDrainingFrequency(2) # Draining: 2 Hz
myMQTTClient.configureConnectDisconnectTimeout(10) # 10 sec
myMQTTClient.configureMQTTOperationTimeout(5) # 5 sec
myMQTTClient.connect()
tello = Tello() #Erstellen Sie eine Tello-Instanz
tello.send_command('command') #Starten Sie den SDK-Modus
def customCallback(client, userdata, message):
payload = message.payload
print('Received a new message: ')
print(payload)
print('from topic: ')
print(message.topic)
print('--------------\n\n')
# command = payload[0]
dic = ast.literal_eval(payload)
tello.send_command(dic['message'])
myMQTTClient.subscribe("test/pub", 1, customCallback) # test/Abonnieren Sie den Pub-Kanal
while True:
time.sleep(1)
Ja, ich werde es testen. Führen Sie zunächst den obigen Python-Code aus, um die Verbindung mit Tello zu überprüfen. Öffnen Sie als Nächstes die Registerkarte Test in IoT Core, geben Sie den Kanal an, geben Sie den Flugbefehl als Zeichenfolge im Wert von "message" an und geben Sie ihn an das Thema aus.
Es ist leicht zu verstehen und die Bedienung ist im Video zusammengefasst. https://youtu.be/MKF2P_rrS9U
Ich gab einen Befehl von AWS IoT Core ein und konnte Tello fliegen. Als nächstes verknüpfen wir uns mit einem externen Dienst. [AWS / Tello] Ich habe versucht, die Drohne mit Voice Part1 zu bedienen