Dieser Beitrag Evakuierungsberatungssystem mit Drohne Dies ist das zweite Kapitel von. Den Produktionshintergrund entnehmen Sie bitte.
Darüber hinaus basiert der Inhalt dieses Kapitels auf den folgenden Inhalten. Wenn Sie es also noch nicht gelesen haben, lesen Sie es bitte zuerst. Kapitel 1 [AWS / Tello] Erstellen eines Systems zum Betreiben von Drohnen in der Cloud
Lassen Sie uns die Tello-Drohne mit Alexa per Sprache bedienen. AWS wird als Infrastruktur verwendet. Schauen wir uns zuerst das ausgefüllte Formular im Video an.
Ich habe die Kommunikation zwischen IoT Core und Tello bis zum letzten Mal bestätigt, also diesmal Hosten Sie Ihren Alexa-Skill-Endpunkt auf Lambda und veröffentlichen Sie ihn im IoT Core. Teil 1: Kompetenzentwicklung / Zusammenarbeit mit Lambda Teil 2. Kommunikation von Lambda zu IoT Core
Melden Sie sich bei der alexa Developer Console (ADC) an und erstellen Sie eine benutzerdefinierte Fähigkeit.
Wenn Sie "Benutzerdefinierte Bereitstellung" als Backend der Fertigkeit auswählen, müssen Sie Ihre eigene Lambda-Funktion vorbereiten. Wenn Sie "Alexa-Hosted" auswählen, können Sie den Code-Editor auf dem ADC verwenden und fühlen, dass es für Anfänger einfach ist, sich zu engagieren. Da es unter Berücksichtigung der zukünftigen Erweiterbarkeit mit IoT Core kommuniziert, werden wir hier die frühere Methode zur Erstellung einer Lambda-Funktion selbst verwenden. Deshalb werde ich ein neues Lambda vorbereiten. Notieren Sie sich die ARN des Lambda und setzen Sie sie auf den Standardbereich des Skill-Endpunkts.
Da es nett ist, werde ich die Grundbegriffe der Fähigkeit erneut bestätigen. Ich werde später ausführlich darauf eingehen.
__Call name __: Wort zum Starten eines Dialogs (Sitzung) __Intent __: Absicht des Dialogs (Entwickler kann frei einstellen) __Eingebaute Absicht __: Standardmäßig eingebaute Absicht (Abbrechen, Stoppen, Hilfe usw.) __Sample Speaking __: Ein Slogan, um eine bestimmte Absicht innerhalb einer Sitzung aufzurufen __Slot __: So etwas wie eine Variable, die in einer Beispielrede enthalten ist __ Eingebauter Slot __: Slots bereits vorbereitet (es gibt Nummern, Namen von Einrichtungen, Namen von Schauspielerinnen ... erstaunlich) __Custom Slot __: Slots, die Entwickler frei festlegen können
Slots sind übrigens wunderbar, weil Sie Synonyme und ID-Spezifikationen flexibel festlegen können.
Details zu den Fähigkeiten dieses Drohnensteuerungssystems. (Als Referenz)
__Anrufname __: "Controller" __Intent __: Controller / Land Controller-Absicht, wenn Sie die Drohne bewegen möchten, Land-Absicht, wenn Sie landen möchten (Flip Intent sieht interessant aus) __ Beispielrede __: Für Controller-Absichten
__Eingebauter Steckplatz __: num (Nummer) __ Benutzerdefinierter Steckplatz __: Richtung
Mit anderen Worten, die Controller-Absicht erfordert zwei Informationen, die Fahrtrichtung und die Entfernung. Es ist eine Präferenz, aber Sie sollten einen Weg finden, um auf die Entfernung zu hören, wenn nur die Richtung per Stimme mit der tatsächlichen Fähigkeit eingegeben wird. Es scheint, dass das Dialogmodell hier von json definiert werden kann, daher werde ich es im Anhang veröffentlichen.
Spielen Sie mit dem Lambda, das Sie zuvor erstellt haben. Es ist definitiv besser, hier "Alexa Skills Kit SDK" zu verwenden. Sie können dies tun, ohne es zu verwenden, aber die Verschachtelung von json im Anforderungsparameter ist tiefgreifend und die Verarbeitung scheint mühsam zu sein. Die Sprache wird Python sein. Da es viele Leute gibt, die Nodejs verwenden, und nur wenige Leute, die Python verwenden, habe ich es gewagt, Python hier zu verwenden.
Alexa Skills Kit SDK for Python
Importieren Sie zunächst ask_sdk_core mit Lambda.
$ import ask_sdk_core
Wenn es jedoch so bleibt, wie es ist, kann die externe Bibliothek nicht gelesen werden. Fügen wir also ask_sdk_core als Ebene hinzu.
Sie können die Installation auch lokal im Projekt durchführen, das gesamte Projekt komprimieren und auf Lambda hochladen. Der folgende Link fasst die Methode und das Ökosystem der lokalen Entwicklung von Lambda zusammen. Schauen Sie also bitte vorbei, wenn Sie interessiert sind. [AWS / Lambda] Methode zum Laden einer externen Python-Bibliothek
Da ask_sdk_core eine PurePython-Bibliothek ist, sollte jede Umgebung zum Erstellen einer Zip-Datei für die Ebene in Ordnung sein. Es wurde unter MacOS gemacht. (Beispiel für 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 .
Fügen Sie die generierte ask_sdk.zip zur Ebene hinzu und passen Sie die Ebene im Lambda an, um die Bibliothek zu laden.
Natürlich ist dieser Lambda-Auslöser das Alexa Skill Kit, und die Skill-ID ist die ID der Skill, die Sie zuvor erstellt haben.
Das Interaktionsmodell von Alexas Können und Lambda wurde verknüpft. Als nächstes werden wir Lambda-Code entwickeln und IoT Core verknüpfen.
Da es länger geworden ist, werde ich mit Teil 2 fortfahren. Kapitel 3 [AWS / Tello] Ich habe versucht, die Drohne mit Voice Part2 zu bedienen
Ich werde das Dialogmodell in json setzen. Wenn Sie eine neue Absicht haben, veröffentlichen Sie diese bitte auf GitHub: beten Sie: https://github.com/shoda888/tello_ask_model
{
"interactionModel": {
"languageModel": {
"invocationName": "Regler",
"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}Zentimeter{direction}Gehe zu",
"{direction}Zu{num}Zentimeter",
"{direction}Zu{num}Bewegen Sie sich einen Zentimeter"
]
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": []
},
{
"name": "Land",
"slots": [],
"samples": [
"Landung",
"Landung",
"Land"
]
}
],
"types": [
{
"name": "direction",
"values": [
{
"id": "back",
"name": {
"value": "Hinter",
"synonyms": [
"zurück",
"Rückseite"
]
}
},
{
"id": "forward",
"name": {
"value": "Vor",
"synonyms": [
"Bisherige",
"Nach vorne"
]
}
},
{
"id": "down",
"name": {
"value": "tat",
"synonyms": [
"unter",
"Abstammung",
"Nieder"
]
}
},
{
"id": "up",
"name": {
"value": "über",
"synonyms": [
"Oben",
"Nach oben",
"Erhebt euch"
]
}
},
{
"id": "left",
"name": {
"value": "Hidari",
"synonyms": [
"links"
]
}
},
{
"id": "right",
"name": {
"value": "Migi",
"synonyms": [
"richtig"
]
}
}
]
}
]
}
}
}
Recommended Posts