[PYTHON] [AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part1 zu bedienen

Einführung

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

Überblick

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. IMAGE ALT TEXT HERE

Systemkonfiguration

system.png

Dinge die zu tun sind

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

Fähigkeits-Entwicklung

Fähigkeitserstellung

Melden Sie sich bei der alexa Developer Console (ADC) an und erstellen Sie eine benutzerdefinierte Fähigkeit. skillselect1.png backendforalexa.png

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

Fähigkeitsglossar

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.

Fähigkeitsdetails

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

__Eingebauter Steckplatz __: num (Nummer) __ Benutzerdefinierter Steckplatz __: Richtung slot_direc.png

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.

Backend

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

layer.png

Lambda-Trigger-Einstellungen

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

Zusammenfassung

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

Blinddarm

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

[AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part2 zu bedienen
[AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part1 zu bedienen
Ich habe versucht, den DNN-Teil von OpenPose mit Chainer-CPU auszuführen
Ich habe versucht, mit Pillow mit dem Bild zu spielen
Ich habe einen kleinen Tello-Formationsflug mit Drohnen mit ESP32 versucht: DJI Tello-Drohnen-Formationsflug
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, AWS Lambda mit anderen Diensten zu verbinden
Ich habe versucht, mit tkinter mit dem Taschenrechner zu spielen
[Einführung in AWS] Ich habe versucht, eine Konversations-App zu portieren und mit text2speech @ AWS playing zu spielen
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe eine emotionale Analyse von Amazon Comprehend mit der AWS CLI durchgeführt.
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
[MQTT] Ich habe versucht, mit einem Gerät über AWS IoT Core und Soracom Beam zu sprechen.
Ich habe AWS CDK ausprobiert!
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe AWS Iot ausprobiert
[Einführung in AWS] Ich habe versucht, mit der Sprach-Text-Konvertierung zu spielen ♪
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, die API mit dem Python-Client von echonest zu erreichen
Ich wollte die Google-Tabelle mit AWS Lambda betreiben, also habe ich es versucht [Teil 2]
Ich habe versucht, den Stromverbrauch meines Hauses mit Nature Remo E lite zu visualisieren
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, die Zugverspätungsinformationen mit LINE Notify zu benachrichtigen
Ich habe versucht, den DRF-API-Anforderungsverlauf mit django-request zu speichern
Ich habe versucht, den Ipython-Cluster unter AWS auf das Minimum zu starten
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, mit Elasticsearch Ranking zu lernen!
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, AWS Chalice zu verwenden
Ich habe versucht herauszufinden, wie ich den Arbeitsablauf mit Excel × Python, meiner Artikelzusammenfassung ★, optimieren kann
Ich habe versucht, den Sesam für Eingang 2 mit einem einzigen Druck auf die AWS IoT-Taste zu entsperren
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich habe versucht, eine eigenständige Bereitstellung von Play with Fabric [AWS-Operation mit Boto] [Play Deployment] durchzuführen.
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe eine Kreuzvalidierung basierend auf dem Rastersuchergebnis mit scikit-learn versucht
Ich habe versucht, das Bild mit OpenCV im "Skizzenstil" zu verarbeiten
Ich habe mit Kaggle Start Book basierend auf Kaggle studiert [Teil 1]
Wenn ich die exe-Datei mit pyinstaller ausführe, stürzt mein PC ab.
Ich habe am Wochenende versucht, mit Bitcoin Systre zu beginnen
Ich habe versucht, PyEZ und JSNAPy zu verwenden. Teil 4: Automatisieren Sie die ISP-Einrichtung mit PyEZ und JSNAPy
Ich habe versucht, E-Mails vom Sakura-Server mit Flask-Mail zu senden
Ich habe die Grundoperation von Pandas im Jupyter Lab geschrieben (Teil 1)
Ich war an Diagrammen interessiert und habe versucht, sie mit einer Flasche zu umwickeln
Ich habe versucht, das Bild mit OpenCV im "Bleistift-Zeichenstil" zu verarbeiten
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!