[PYTHON] Zu beachtende Punkte beim Wechsel von NAOqi OS 2.4.3 zu 2.5.5

Einführung

Ein Update für NAOqi OS 2.5.5 wird am 4. April 2017 für Pepper for Biz verfügbar sein.

[Pepper for Biz] Versionshinweis zur Software "NAOqi OS 2.5.5"

Dieses Update enthält einige Änderungen, die mit früheren Betriebssystemen nicht kompatibel sind. Apps, die unter NAOqi OS 2.4.3 ausgeführt wurden, funktionieren möglicherweise nicht mehr. In diesem Artikel werden einige der Einschränkungen aufgeführt, die ich bei der Migration von Apps festgestellt habe, auf denen bereits NAOqi OS 2.4.3 auf 2.5.5 ausgeführt wird.

Außerdem habe ich die Teile, die bereits offiziell angekündigt wurden und geändert werden müssen, nicht angesprochen. Weitere Informationen finden Sie weiter unten. [Hinweis zum Upgrade der NAOqi-Version (v2.5.5) .pdf](https://developer.softbankrobotics.com/Software/documentation/NAOqi%E3%83%8F%E3%82%99%E3%83%BC%E3 % 82% B7% E3% 82% 99% E3% 83% A7% E3% 83% B3% E3% 82% A2% E3% 83% 83% E3% 83% 95% E3% 82% 9A (v2.5.5) )% E3% 81% AE% E3% 81% 8A% E7% 9F% A5% E3% 82% 89% E3% 81% 9B.pdf)

Voraussetzungen

Alle folgenden Beschreibungen wurden für die Zusammenarbeit mit Pepper for Biz bestätigt.

Sprachreco, Dialog onStoppte die Ausgabezeit, wenn keine Internetverbindung besteht

Zuerst müssen Sie ersetzen

Das Sprachreco-Feld und das Dialogfeld, die häufig in Pepper-Apps verwendet werden, werden unter "Einführung" PDF-Dokument beschrieben % E3% 82% 99% E3% 83% BC% E3% 82% B7% E3% 82% 99% E3% 83% A7% E3% 83% B3% E3% 82% A2% E3% 83% 83% E3 % 83% 95% E3% 82% 9A (v2.5.5)% E3% 81% AE% E3% 81% 8A% E7% 9F% A5% E3% 82% 89% E3% 81% 9B.pdf) Es wird als "Inkompatibler BOX-Ersatz" bezeichnet. Wenn Sie also eine vorhandene App unter NAOqi OS 2.5.5 ausführen möchten, müssen Sie die Box durch Choregraphe 2.5.5 ersetzen.

Was ist los

"Wenn das Internet nicht verbunden ist" bedeutet, dass der Computer nur mit dem LAN verbunden ist und der Netzwerkstatus auf dem Pepper-Einstellungsbildschirm orange ist.

screen.png

Grundsätzlich wird empfohlen, Pepper in einer Umgebung mit Internetverbindung zu verwenden. Es kann jedoch überraschend sein, dass Pepper in einer Umgebung wie einem Veranstaltungsort oder einer unterirdischen Etage betrieben wird, in der es mit einem LAN, jedoch nicht mit dem Internet verbunden werden kann. Die folgenden Ereignisse treten auf, wenn die App in einer solchen Umgebung ausgeführt wird.

Das Folgende ist ein häufiger Anwendungsfall für Speech Reco. Nach dem Erkennen der Stimme wird die Sprachaufzeichnungsbox selbst gestoppt und der nächste Vorgang gestartet. Dies verhindert, dass Pepper seine eigenen Zeilen hört und in eine Endlosschleife eintritt, oder Sie können die Wortliste, die bei Verwendung mehrerer Sprachaufzeichnungsfelder erkannt wird, auf eine andere Sprachaufzeichnungsbox umschalten. ..

スクリーンショット 2017-03-29 13.09.55.png

Wenn Sie nicht mit dem Internet verbunden sind und NAOqi OS 2.4.3 mit Speech Reco oder Dilalog verwenden, dauert es ** Sekunden, bis die Ausgabe onStopped ausgelöst wird. ** ** ** Unter NAOqi OS 2.5.5 wird die onStopped-Ausgabe jedoch ausgelöst, wenn sie in die onStop-Eingabe eingeht.

Wenn Sie es in der Erwartung implementieren, dass es einige Sekunden dauern wird, wenn keine Internetverbindung besteht, wird onStopped möglicherweise zu einem unerwarteten Zeitpunkt ausgelöst und verhält sich unerwartet, wenn Sie mit 2.5.5 arbeiten.

Lösungen

Um dieses Problem zu beheben (oder besser zu beheben), sollten Sie sich darüber im Klaren sein, dass die onStopped-Ausgabe zu unterschiedlichen Zeiten ausgelöst wird, wenn Sie das Dialogfeld Speech Reco, Dialogfeld mit NAOqi OS 2.5.5 verwenden, wenn keine Internetverbindung besteht. Sie müssen es implementieren.

So schreiben Sie die Parameter des Ausdrucksüberwachungsfelds

Was ist Expression Watcher Box?

Die Expression Watcher-Box ist eine Box, die die Daten von ALMemory überwacht, verschiedene Ereignisse, die ausgelöst werden, während Pepper ausgeführt wird. Es ist ein Feld, das wahr und falsch ausgibt, indem Bedingungen für Datenwerte angegeben werden, anstatt einfach "ausgelöst" zu sagen.

スクリーンショット 2017-03-29 10.52.57.png

Schauen wir uns ein Beispiel an. Geben Sie zunächst die folgenden Bedingungen in den Parameter "Bedingung" des Felds Expression Watcher ein.

('MyData' == 1) ~2

Dies ist der Fall, wenn die Daten im Schlüssel "MyData" 2 Sekunden lang 1 sind.

Geben Sie "MyData" für den Parameter "key" in das Feld "Daten einfügen" ein. Die Anordnung der Boxen sieht so aus.

スクリーンショット 2017-03-29 11.02.47.png

Wenn Sie die App in diesem Zustand starten, wird plötzlich false aus dem Feld Expression Watcher ausgegeben. Es ist falsch, da die angegebenen Bedingungen noch nicht erfüllt sind. Doppelklicken Sie nun auf die Eingabe onStart im Feld Daten einfügen.

スクリーンショット_2017-03-29_11_02_47_のコピー.png

Dann wird der Eingabebildschirm angezeigt. Geben Sie also "1" ein und klicken Sie auf "OK". Und warte 2 Sekunden ...

スクリーンショット 2017-03-29 11.09.04.png

true ist die Ausgabe. Auf diese Weise können Sie zeitliche Bedingungen für den Wert festlegen. Außerdem ist es eine sehr praktische Box, da Sie mehrere Bedingungen kombinieren können.

Weitere Informationen zum bedingten Format finden Sie in der Choregraphe-Dokumentation. Launch trigger conditions — Aldebaran 2.4.3.28 documentation

Was ist los

Die Einführung ist lang geworden, aber es ist das Hauptthema.

Als ich versuchte, eine App auszuführen, die unter NAOqi OS 2.4.3 unter 2.5.5 ausgeführt wurde, wurde im Feld Expression Watcher der folgende Fehler angezeigt.

RuntimeError: Invalid expression syntax: "bang(myEvent) && 'myEvent' == 1"  

Anscheinend ist es ein Syntaxfehler. Die Bedingungen in der tatsächlichen App waren nicht so einfach wie im obigen Beispiel, daher dauerte es einige Zeit, um herauszufinden, was genau die Ursache für die Bedingungsanweisung war.

Lösungen

Wenn Sie sich als Test die Beschreibung im Parameter "Bedingung" des Standardfelds "Expression Watcher" in Choregraphe 2.4.3 und 2.5.5 ansehen, lautet sie wie folgt.

Für 2.4.3

bang(myEvent) && 'myEvent' == 1

Für 2.5.5

bang('myEvent') && 'myEvent' == 1

In 2.5.5 scheint es streng geprüft zu sein, den in der Bedingung angegebenen Schlüsselnamen von ALMemory in einfache Anführungszeichen zu setzen.

Wenn ein ähnliches Ereignis auftritt, überprüfen Sie bitte die in der Bedingung angegebene Zeichenfolge.

Fordert die Bibliotheksversion an

Pfeffer und Anfragen

Anfragen ist eine in Python häufig verwendete HTTP-Bibliothek. (Ich werde die Erklärung zur Verwendung weglassen) Requests: HTTP for Humans

Da diese Bibliothek in Pepper selbst installiert ist, ** wenn sie mit dem eigentlichen Pepper-Computer verbunden ist **, behalten Sie durch "Importieren" in der App insbesondere die Anforderungsbibliothek in der App. Kann ohne verwendet werden. (Wenn Sie die Anforderungsbibliothek mit einem virtuellen Roboter verwenden möchten, müssen Sie den Pfad zur Anforderungsbibliothek übergeben, die in der App gespeichert ist.)

Mit diesem NAOqi OS 2.5.5-Update wurde die Version dieser Bibliothek wie folgt gesenkt.

NAOqi OS ver requests ver
2.4.3 2.5.1
2.5.5 2.3.0

Was ist los

Schreiben Sie in Anforderungen Folgendes, wenn Sie Parameter veröffentlichen.

url = 'https://api.github.com/some/endpoint'
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=payload)

Zu diesem Zeitpunkt ist beim Senden des POST-Parameters im JSON-Format die folgende Schreibmethode möglich. (** Anfragen 2.4.2 oder höher **)

url = 'https://api.github.com/some/endpoint'
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, json=payload)

In Fettdruck sind JSON-formatierte POST-Anforderungen im obigen Format in Anforderungen ab Version 2.4.2 verfügbar. Ich konnte es unter NAOqi OS 2.4.3 Pepper ausführen, erhalte jedoch eine Fehlermeldung unter 2.5.5 Pepper.

Lösungen

Die einfache Lösung besteht darin, die automatische Konvertierungsfunktion mit dem Schlüsselwortargument "json" nicht mehr zu verwenden. Das Folgende ist ein Beispiel.

import json
url = 'https://api.github.com/some/endpoint'
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=json.dumps(payload))

Dies betraf nur unsere App. Bei Verwendung von Anforderungen mit NAOqi OS 2.5.5 Möglicherweise können Probleme behoben werden, indem berücksichtigt wird, dass die Version der Anforderungen reduziert wurde.

Zusammenfassung

In diesem Artikel haben wir die Punkte beschrieben, die wir bei der Migration unserer Anwendung von NAOqi OS 2.4.3 auf 2.5.5 festgestellt haben. Ich denke, dass das Verhalten für andere Boxen anders ist, und es kann notwendig sein, sich mit dem Teil der ursprünglichen Implementierung zu befassen, aber ich hoffe, es hilft sogar ein wenig.

Recommended Posts

Zu beachtende Punkte beim Wechsel von NAOqi OS 2.4.3 zu 2.5.5
Punkte, die beim Aktualisieren auf WSL2 zu beachten sind
Zu beachtende Punkte beim Löschen mehrerer Elemente aus der Liste
Vorsichtsmaßnahmen bei der Durchführung einer logistischen Regression mit Statsmodels
(Hinweis) Punkte, auf die Sie bei der Installation von Scilab unter ArchLinux achten sollten
Zu beachtende Punkte, wenn Pandas CSV der Excel-Ausgabe lesen
Vorsichtsmaßnahmen beim Ausführen von Python unter EC2 über AWS Lambda (Befehl ausführen)
Zusammenfassung der Vor- und Nachteile beim Wechsel von CUnit zu Google Test
[Hinweis] [PyTorch] Von der Installation bis zur einfachen Verwendung
Zu berücksichtigende Punkte, wenn Sie die SoftLayer-API über eine App auf Bluemix aufrufen
[Amazon Linux] Wechsel von der Python 2-Serie zur Python 3-Serie
Eine Geschichte, die unter einem Unterschied im Betriebssystem litt, als sie versuchte, ein Papier zu implementieren
Python Hinweis: Wenn Sie einer Zeichenfolge einen Wert zuweisen
Was ich beim Update von Python 2.6 auf 2.7 gemacht habe
Was ist fehlgeschlagen, als ich von Javaer zu Pythonista gewechselt bin?
Summe von 1 bis 10
Flugbahn bei SSH-Verbindung zum Gastbetriebssystem auf VirtualBox
RaspberryPi3 (STRETCH) Setup von der Betriebssysteminstallation bis Hello World
Python - Hinweise beim Konvertieren vom Typ str in den Typ int
Beachten Sie beim Initialisieren einer Liste in Python
Beschleunigen Sie die Verbindung von cx_Oracle zur autonomen Datenbank
Mercurial funktioniert nach der Migration von Python 2 auf Python 3 nicht mehr (Hinweis)
Farbpunkte entsprechend dem Abstand von der Regressionskurve