Cet article Système d'avis d'évacuation à l'aide d'un drone Ceci est le premier chapitre de. Veuillez vous y référer pour le contexte de production.
Créez un système capable de faire fonctionner le drone Tello sur AWS. Si vous pouvez l'utiliser sur AWS, vous pouvez vous connecter à divers services, alors élargissons vos rêves.
Tello edu développé par la start-up chinoise Ryze Tech est utilisé. Le [SDK] officiel (https://github.com/dji-sdk/Tello-Python) est en cours de développement par Intel et DJI, et la v2 peut être utilisée avec la version edu, et le drone est une unité esclave. Il est recommandé d'acheter la version edu car il est possible de voler en formation. Étant donné que ce SDK est utilisé pour le contrôle des drones, git le clonez à l'avance. Pour les méthodes de vol et de diffusion d'images de base en Python à l'aide de la construction d'environnement et du SDK, consultez le SDK Guide de l'utilisateur Voir 20User% 20Guide.pdf) et un autre article sur Tello.
Donnez simplement une commande de chaîne à l'argument de la méthode send_command de la classe Tello et il volera. Pour référence, la commande de vol de base est la suivante. En plus de ceux-ci, il existe également des commandes de rotation et des commandes pour dessiner un arc en spécifiant la vitesse, alors vérifiez le cas échéant en fonction de votre utilisation.
Command | La description |
---|---|
command | Démarrer le mode SDK |
takeoff | décollage |
land | atterrissage |
emergency | Arrêt immédiat du moteur |
up x | 20~Montée entre 500 cm |
down x | 20~Descente entre 500 cm |
left x | 20~Volez vers la gauche entre 500 cm |
right x | 20~Volez vers la droite entre 500 cm |
forward x | 20~Avancez entre 500 cm |
back x | 20~Fly back entre 500 cm |
En premier lieu, le drone Tello ne prend pas en charge les services de communication mobile tels que la communication 4G, et il est peu probable qu'il soit exploité à distance en fonctionnement réel, mais il sera utile à l'avenir de le contrôler en utilisant des services sur Internet comme déclencheur. C'est considéré. Dans ce système, nous utiliserons AWS en tant que service cloud et essayerons de voler tello depuis le cloud.
Lorsque vous utilisez Tello comme unité de base wifi et que vous vous connectez à un PC via wifi, il n'est pas possible d'utiliser une connexion wifi pour se connecter à AWS. Par conséquent, cette fois, nous avons connecté le PC et le smartphone par fil afin que le PC et AWS puissent communiquer via le tethering du smartphone. À ce stade, la priorité du service de partage de connexion utilisé pour la connexion à Internet doit être supérieure à celle du Wifi.
Cette fois, la communication MQTT a été adoptée au lieu de la communication HTTP pour la communication entre AWS et le drone. C'est un protocole de message plus léger que la communication HTTP, et j'ai pensé que la communication MQTT conviendrait pour l'envoi de commandes de chaînes de caractères (je voulais aussi essayer MQTT lol). La communication MQTT est effectuée en définissant un canal dans le courtier MQTT et en vous abonnant aux données publiées sur ce canal. Une caractéristique majeure est que la communication plusieurs-à-plusieurs peut être facilement effectuée. (peut être) AWSIoTCore fournit un courtier MQTT, et dans ce système, le drone publie la commande de vol du côté abonnement de la commande de vol et confirme le vol pour le moment.
AWS IoT Core Ensuite, connectez-vous à AWS, ouvrez IoT Core et enregistrez Drone en tant que chose.
Créez un certificat, attachez une stratégie et activez le certificat. Cet article est extrêmement facile à comprendre pour les procédures détaillées. (URL de référence) J'utiliserai le certificat plus tard, donc je vais certainement le télécharger.
Il semble que le SDK Tello soit compatible avec le système python2, donc je pense que les bibliothèques etc. devraient être adaptées au système 2. (Non vérifié si cela fonctionne avec python3)
pip install AWSIoTPythonSDK
Et mettez la bibliothèque pour IoT Core à partir de Python.
Ce n'est pas grave si vous écrivez le programme de contrôle principal suivant dans le répertoire où se trouvent le certificat et Tello.py (par exemple 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') #Valeur appropriée
myMQTTClient.configureEndpoint('xxxxxxxxxxxx.ap-northeast-1.amazonaws.com', 8883) #Vérifier sur l'écran de gestion
myMQTTClient.configureCredentials('rootCA.pem', 'xxxxx-private.pem.key', 'xxxxx-certificate.pem.crt') #Divers certificats
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() #Créer une instance Tello
tello.send_command('command') #Démarrer le mode SDK
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/Abonnez-vous à la chaîne de pub
while True:
time.sleep(1)
Oui, je vais le tester. Tout d'abord, exécutez le code Python ci-dessus pour vérifier la connexion avec Tello. Ensuite, ouvrez l'onglet de test sur IoT Core, spécifiez le canal, spécifiez la commande de vol sous forme de chaîne de caractères dans la valeur de «message» et envoyez-la à la rubrique.
Il est facile à comprendre et l'opération est résumée dans la vidéo. https://youtu.be/MKF2P_rrS9U
J'ai entré une commande depuis AWS IoT Core et j'ai réussi à piloter Tello. Ensuite, établissons un lien avec un service externe. [AWS / Tello] J'ai essayé de faire fonctionner le drone avec la voix Part1
Recommended Posts