[PYTHON] [AWS / Tello] Aufbau eines Systems zum Betrieb von Drohnen in der Cloud

Einführung

Dieser Beitrag Evakuierungsberatungssystem mit Drohne Dies ist das erste Kapitel von. Den Produktionshintergrund entnehmen Sie bitte.

Überblick

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.

Über die zu verwendende Drohne

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.

Flugbefehl

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

Kommunikation zwischen Tello <-> PC <-> AWS

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.

Verbindungsmethode

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. wificonnect.png

Kommunikationsprotokoll mit Drohne

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. iotcore2tello.png

AWS IoT Core Melden Sie sich als Nächstes bei AWS an, öffnen Sie IoT Core und registrieren Sie Drone als Objekt.

droneiot.png

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.

Tello Steuerungsprogramm

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)

Prüfung

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. takeoff.png

Es ist leicht zu verstehen und die Bedienung ist im Video zusammengefasst. https://youtu.be/MKF2P_rrS9U IMAGE ALT TEXT HERE

Zusammenfassung

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

Recommended Posts

[AWS / Tello] Aufbau eines Systems zum Betrieb von Drohnen in der Cloud
Erstellen Sie mit pulumi eine WardPress-Umgebung auf AWS
Erstellen Sie ein billiges Zusammenfassungssystem mit AWS-Komponenten
# 2 Erstellen Sie eine Python-Umgebung mit einer EC2-Instanz von AWS (ubuntu18.04).
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
Lassen Sie einen Papagei LINE Bot mit AWS Cloud9 zurückgeben
Es war ein Leben, das ich auf AWS Lambda OCR wollte, um die Charaktere zu lokalisieren.
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
So erstellen Sie eine neue virtuelle Python-Umgebung unter Ubuntu
[Einführung in AWS] Memorandum zum Erstellen eines Webservers auf AWS
Ich habe versucht, den Ipython-Cluster unter AWS auf das Minimum zu starten
Ich habe versucht, eine SATA-Software-RAID-Konfiguration zu erstellen, die das Betriebssystem unter Ubuntu Server startet
[AWS] Was tun, wenn der Ping-Befehl eine "Zeitüberschreitung" verursacht?
[AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part2 zu bedienen
Ein Hinweis zum Überprüfen der Verbindung zum Lizenzserver-Port
Erstellen Sie in kürzester Zeit eine Selenium-Umgebung unter Amazon Linux 2
Erstellen Sie mit Python und Redis eine Rangliste für Spiele in der Alibaba-Cloud
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
Wie einfach ist es, ein Medikament auf dem Markt zu synthetisieren?
# 3 Erstellen Sie eine Python-Umgebung (Django) mit einer EC2-Instanz (ubuntu18.04) von AWS part2
Ich habe gerade ein Skript geschrieben, um Android auf einem anderen Computer zu erstellen
Der einfachste Weg, um eine Spleeter-Nutzungsumgebung unter Windows zu erstellen
Ich möchte ein System erstellen, um zu verhindern, dass vergessen wird, den Schlüssel 1 festzuziehen
Ich habe versucht, einen Sender auf der IoT-Plattform "Rimotte" zu registrieren.
[AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part1 zu bedienen
Schreiben Sie ein Skript, um die Entfernung mit dem Elasticsearch 5-System schmerzfrei zu berechnen
Ein Befehl zum einfachen Überprüfen der Netzwerkgeschwindigkeit auf der Konsole
So stellen Sie eine Webanwendung in der Alibaba Cloud als Freiberufler bereit
So aktualisieren Sie die Python-Version von Cloud Shell in GCP
Erstellen einer Umgebung zum Ausführen von ChainerMN auf einer AWS-GPU-Instanz
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Laden Sie Daten mit einem Befehl und einer Aktualisierung auf s3 von aws hoch und löschen Sie die verwendeten Daten (unterwegs).
Starten Sie Data Science in der Cloud
Erstellen Sie eine Python3-Umgebung unter CentOS7
Arbeitsnotiz zum Migrieren und Aktualisieren von Skripten der Python 2-Serie in der Cloud auf 3-Serien
Erstellen Sie eine Django-App auf Docker und stellen Sie sie in AWS Fargate bereit
Ich habe einen Küchentimer erstellt, der in der Statusleiste angezeigt wird!
Erzeugt halbautomatisch eine Beschreibung des Pakets, das in PyPI registriert werden soll
Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben
So richten Sie ein Jupyter-Notebook am SSH-Ziel ein (AWS EC2)
Version vom Juni 2017 zum Erstellen einer Tensorflow / Keras-Umgebung auf einer GPU-Instanz von AWS
Erstellen Sie mit Cloud9 (jupyter miniconda python3) eine Lernumgebung für "Deep Learning von Grund auf neu".
So erstellen Sie eine Anwendung aus der Cloud mithilfe des Django-Webframeworks
Erstellen Sie Linux in einer Windows-Umgebung. Schritte zum Installieren und Migrieren von Laradock
Verwenden Sie Cloud Composer, um regelmäßig auf die Youtube-API zuzugreifen und eine Pipeline zum Speichern der Ergebnisse in Bigquery zu erstellen