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)
Alle folgenden Beschreibungen wurden für die Zusammenarbeit mit Pepper for Biz bestätigt.
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.
"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.
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. ..
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.
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.
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.
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.
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.
Dann wird der Eingabebildschirm angezeigt. Geben Sie also "1" ein und klicken Sie auf "OK". Und warte 2 Sekunden ...
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
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.
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.
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 |
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.
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.
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