Cet article Système d'avis d'évacuation à l'aide d'un drone Ceci est le deuxième chapitre de. Veuillez vous y référer pour le contexte de production.
De plus, le contenu de ce chapitre est basé sur le contenu suivant, donc si vous ne l'avez pas encore lu, veuillez d'abord le lire. Chapitre 1 [AWS / Tello] Création d'un système d'exploitation de drones sur le cloud
Exploitons le drone Tello par la voix en utilisant Alexa. AWS est utilisé comme infrastructure. Voyons d'abord le formulaire rempli dans la vidéo.
J'ai confirmé la communication entre IoT Core et Tello jusqu'à la dernière fois, donc cette fois Hébergez votre point de terminaison de compétence Alexa sur lambda et publiez-le sur IoT Core. Première partie. Développement des compétences / coopération avec lambda Partie 2. Communication de lambda à IoT Core
Connectez-vous à la console développeur alexa (ADC) et créez une compétence personnalisée.
Si vous sélectionnez «Approvisionnement défini par l'utilisateur» comme backend de la compétence, vous devez préparer votre propre fonction lambda. Si vous sélectionnez "Alexa-Hosted", vous pouvez utiliser l'éditeur de code sur l'ADC et sentir qu'il est facile pour les débutants de s'impliquer. Puisqu'il communique avec IoT Core, compte tenu de l'évolutivité future, nous utiliserons ici l'ancienne méthode de préparation d'une fonction lambda par nous-mêmes. C'est pourquoi je vais préparer un nouveau lambda. Notez l'ARN du lambda et définissez-le sur la région par défaut sur le point de terminaison de compétence.
Puisqu'il est gentil, je vais reconfirmer les termes de base de la compétence. J'y reviendrai en détail plus tard.
__Call name __: Word pour démarrer un dialogue (session) __Intent __: Intention de dialogue (le développeur peut définir librement) __ Intention intégrée __: Intention intégrée par défaut (annulation, arrêt, aide, etc.) __Sample Speaking __: Un slogan pour appeler une intention spécifique dans une session __Slot __: Quelque chose comme une variable contenue dans un exemple de discours __Fente intégrée __: Machines à sous déjà préparées (il y a des numéros, des noms d'installations, des noms d'actrice ... incroyable) __Custom Slot __: Slots que les développeurs peuvent définir librement
À propos, les emplacements sont merveilleux car vous pouvez définir de manière flexible des synonymes et des spécifications d'identification.
Détails des compétences définies dans ce système de contrôle de drone. (Pour votre référence)
__Nom de l'appel __: "Contrôleur" __Intent __: Contrôleur / Terrain Intention du contrôleur lorsque vous souhaitez déplacer le drone, intention d'atterrir lorsque vous souhaitez atterrir (L'intention de retournement semble intéressante) __ Exemple de discours __: Pour l'intention du contrôleur
__Fente intégrée __: num (nombre) __ Emplacement personnalisé __: direction
En d'autres termes, l'intention du contrôleur nécessite deux éléments d'information, la direction du déplacement et la distance. C'est une préférence, mais vous devriez trouver un moyen d'écouter la distance lorsque seule la direction est entrée par la voix avec la compétence réelle. Il semble que le modèle de dialogue ici puisse être défini par json, je le posterai donc en annexe.
Jouez avec le lambda que vous avez créé précédemment. Il est certainement préférable d'utiliser "Alexa Skills Kit SDK" ici. Vous pouvez le faire sans l'utiliser, mais l'imbrication de json dans le paramètre de requête est profonde et le traitement semble gênant. Le langage sera Python. Comme il y a beaucoup de gens qui utilisent Nodejs et peu de gens qui utilisent Python, j'ai osé utiliser Python ici.
Alexa Skills Kit SDK for Python
Tout d'abord, importez ask_sdk_core avec lambda.
$ import ask_sdk_core
Cependant, si elle est laissée telle quelle, la bibliothèque externe ne peut pas être lue, ajoutons donc ask_sdk_core en tant que couche.
Vous pouvez également installer localement dans le projet, compresser l'ensemble du projet et le télécharger vers lambda. Le lien ci-dessous résume la méthode et l'écosystème de développement local de lambda, alors jetez un œil si vous êtes intéressé. [AWS / Lambda] Méthode de chargement de la bibliothèque externe Python
Puisque ask_sdk_core est une bibliothèque PurePython, tout environnement pour créer un fichier zip pour la couche devrait être correct. Cela a été fait sur MacOS. (Exemple de python3.7)
$ mkdir -p build/python/lib/python3.7/site-packages
$ pip3 install ask_sdk_core -t build/python/lib/python3.7/site-packages/
$ cd build
$ zip -r ask_sdk.zip .
Ajoutez le fichier ask_sdk.zip généré à la couche et adaptez la couche dans le lambda pour charger la bibliothèque.
Bien sûr, ce déclencheur lambda est Alexa Skill Kit et l'ID de compétence est l'ID de la compétence que vous avez créée précédemment.
Le modèle d'interaction de la compétence d'Alexa et du lambda a été lié. Ensuite, nous développerons du code lambda et lierons IoT Core.
Puisqu'il est devenu plus long, je vais passer à la partie 2. Chapitre 3 [AWS / Tello] J'ai essayé de faire fonctionner le drone avec la voix Part2
Je vais mettre le modèle de dialogue dans json. Si vous avez une nouvelle intention, veuillez la publier sur GitHub: priez: https://github.com/shoda888/tello_ask_model
{
"interactionModel": {
"languageModel": {
"invocationName": "manette",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "Controller",
"slots": [
{
"name": "num",
"type": "AMAZON.NUMBER"
},
{
"name": "direction",
"type": "direction"
}
],
"samples": [
"{direction} {num}",
" {num}centimètre{direction}Aller à",
"{direction}À{num}centimètre",
"{direction}À{num}Déplacez-vous d'un centimètre"
]
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": []
},
{
"name": "Land",
"slots": [],
"samples": [
"atterrissage",
"Atterrissage",
"terre"
]
}
],
"types": [
{
"name": "direction",
"values": [
{
"id": "back",
"name": {
"value": "Derrière",
"synonyms": [
"retour",
"Arrière"
]
}
},
{
"id": "forward",
"name": {
"value": "Avant",
"synonyms": [
"Avant",
"Vers l'avant"
]
}
},
{
"id": "down",
"name": {
"value": "fait",
"synonyms": [
"en dessous de",
"Descente",
"Vers le bas"
]
}
},
{
"id": "up",
"name": {
"value": "haut",
"synonyms": [
"Vers le haut",
"Vers le haut",
"Monter"
]
}
},
{
"id": "left",
"name": {
"value": "Hidari",
"synonyms": [
"la gauche"
]
}
},
{
"id": "right",
"name": {
"value": "Migi",
"synonyms": [
"droite"
]
}
}
]
}
]
}
}
}