Une mise à jour pour NAOqi OS 2.5.5 sera disponible pour Pepper for Biz le 4 avril 2017.
Avis de publication du logiciel [Pepper for Biz] "NAOqi OS 2.5.5"
Cette mise à jour inclut certaines modifications incompatibles avec les systèmes d'exploitation précédents. Les applications qui s'exécutaient sur NAOqi OS 2.4.3 peuvent cesser de fonctionner. Cet article répertorie certaines des mises en garde que j'ai trouvées lors de la migration d'applications qui exécutent déjà NAOqi OS 2.4.3 vers 2.5.5.
De plus, je n'ai pas abordé les parties qui ont déjà été officiellement annoncées et doivent être modifiées. Voir ci-dessous pour plus d'informations. [Avis de mise à niveau de la version NAOqi (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)
Toutes les descriptions suivantes ont été confirmées pour fonctionner avec Pepper for Biz.
La boîte de dialogue et la boîte de dialogue Speech Reco, qui sont souvent utilisées dans les applications Pepper, sont décrites dans «Introduction» [document 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) , Il est décrit comme "Remplacement BOX incompatible", donc si vous souhaitez exécuter une application existante sur NAOqi OS 2.5.5, vous devez remplacer la box par Choregraphe 2.5.5.
«Quand Internet n'est pas connecté» signifie que l'ordinateur est connecté uniquement au LAN et que l'état du réseau sur l'écran de réglage Pepper est orange.
Fondamentalement, il est recommandé d'utiliser Pepper dans un environnement avec une connexion Internet, mais il peut être surprenant qu'il puisse fonctionner dans un environnement tel qu'un lieu d'événement ou un sous-sol où il peut être connecté à un réseau local mais pas à Internet. Les événements suivants se produisent lors de l'exécution de l'application dans un tel environnement.
Voici un cas d'utilisation courant de Speech Reco. Après avoir reconnu la voix, la boîte de reconnaissance vocale elle-même est arrêtée et le processus suivant est lancé. Cela empêchera Pepper d'écouter ses propres lignes et d'entrer dans une boucle infinie, ou vous pouvez basculer la liste de mots qu'il reconnaît lors de l'utilisation de plusieurs boîtes de reconnaissance vocale vers une autre boîte de reconnaissance vocale. ..
Sans connexion Internet et NAOqi OS 2.4.3, en utilisant les boîtiers Speech Reco ou Dilalog, la sortie onStopped prend ** secondes pour se déclencher. ** ** Cependant, lors de l'exécution sur NAOqi OS 2.5.5, la sortie onStopped est déclenchée lorsqu'elle entre dans l'entrée onStop.
Si vous prévoyez que cela prendra quelques secondes lorsque vous n'êtes pas connecté à Internet, onStopped peut se déclencher à un moment inattendu et se comporter de manière inattendue lorsque vous l'exécutez avec 2.5.5.
Pour résoudre (ou plutôt traiter) ce problème, comprenez parfaitement que la sortie onStopped est déclenchée à des moments différents lorsque vous utilisez la boîte de dialogue Speech Reco, avec NAOqi OS 2.5.5 lorsque Internet n'est pas connecté. Vous devez le mettre en œuvre.
La boîte Expression Watcher est une boîte qui surveille les données d'ALMemory, divers événements qui se déclenchent pendant l'exécution de Pepper. C'est une boîte qui affiche vrai et faux en spécifiant des conditions pour les valeurs de données, plutôt que de simplement dire «déclenché».
Regardons un exemple. Tout d'abord, entrez les conditions suivantes dans le paramètre "Condition" de la boîte Expression Watcher.
('MyData' == 1) ~2
C'est le cas si les données de la clé «MyData» sont 1 pendant 2 secondes.
Essayez de taper "MyData" pour le paramètre "clé" dans la zone Insérer des données. La disposition des boîtes ressemble à ceci.
Si vous démarrez l'application dans cet état, false sera généré soudainement à partir de la zone Expression Watcher. Ce sera faux car les conditions spécifiées ne sont pas encore remplies. Maintenant, double-cliquez sur l'entrée onStart dans la zone Insérer des données.
Ensuite, l'écran de saisie sera affiché, alors entrez "1" et cliquez sur "OK". Et attendez 2 secondes ...
true est la sortie. De cette manière, vous pouvez spécifier des conditions temporelles pour la valeur. De plus, c'est une boîte très pratique car vous pouvez combiner plusieurs conditions.
Veuillez consulter la documentation de Choregraphe pour plus de détails sur le format conditionnel. Launch trigger conditions — Aldebaran 2.4.3.28 documentation
L'introduction est devenue longue, mais c'est le sujet principal.
Lorsque j'ai essayé d'exécuter une application qui fonctionnait sur NAOqi OS 2.4.3 sur 2.5.5, j'ai eu l'erreur suivante dans la boîte Expression Watcher.
RuntimeError: Invalid expression syntax: "bang(myEvent) && 'myEvent' == 1"
Apparemment, c'est une erreur de syntaxe. Les conditions dans l'application réelle n'étaient pas aussi simples que l'exemple ci-dessus, il a donc fallu un certain temps pour savoir exactement quelle était la cause de l'instruction de condition.
À titre de test, si vous regardez la description dans le paramètre "Condition" de la boîte par défaut Expression Watcher dans Choregraphe 2.4.3 et 2.5.5, c'est comme suit.
Pour 2.4.3
bang(myEvent) && 'myEvent' == 1
Pour 2.5.5
bang('myEvent') && 'myEvent' == 1
En 2.5.5, il semble qu'il soit strictement vérifié de mettre entre guillemets le nom de clé de ALMemory spécifié dans la condition.
Si un événement similaire se produit, veuillez vérifier la chaîne de caractères spécifiée dans la condition.
requêtes est une bibliothèque HTTP couramment utilisée en Python. (Je vais omettre l'explication sur la façon de l'utiliser) Requests: HTTP for Humans
Puisque cette bibliothèque est installée dans Pepper lui-même, ** si elle est connectée à la machine Pepper réelle **, par ʻimport` dans l'application, gardez en particulier la bibliothèque de requêtes dans l'application. Peut être utilisé sans. (Si vous souhaitez utiliser la bibliothèque de requêtes avec un robot virtuel, vous devez passer le chemin vers la bibliothèque de requêtes conservée dans l'application)
Avec cette mise à jour NAOqi OS 2.5.5, la version de cette bibliothèque a été abaissée comme suit.
NAOqi OS ver | requests ver |
---|---|
2.4.3 | 2.5.1 |
2.5.5 | 2.3.0 |
Dans les requêtes, écrivez ce qui suit lors du POST des paramètres.
url = 'https://api.github.com/some/endpoint'
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=payload)
À ce stade, lors de l'envoi du paramètre POST au format JSON, la méthode d'écriture suivante est possible. (** demandes 2.4.2 ou version ultérieure **)
url = 'https://api.github.com/some/endpoint'
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, json=payload)
Comme indiqué en gras, les requêtes POST au format JSON au format ci-dessus sont disponibles dans les requêtes version 2.4.2 et supérieures. J'ai pu l'exécuter sur NAOqi OS 2.4.3 Pepper, mais j'obtiens une erreur sur 2.5.5 Pepper.
La solution simple est d'arrêter d'utiliser la fonction de conversion automatique avec l'argument de mot-clé json
.
Ce qui suit est un exemple.
import json
url = 'https://api.github.com/some/endpoint'
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=json.dumps(payload))
Cela n'a affecté que notre application, mais lors de l'utilisation de requêtes avec NAOqi OS 2.5.5, Certains problèmes peuvent être résolus en gardant à l'esprit que la version des demandes a été réduite.
Dans cet article, nous avons décrit les points que nous avons remarqués lors de la migration de notre application de NAOqi OS 2.4.3 vers 2.5.5. Je pense que le comportement est différent pour les autres boîtes, et il peut être nécessaire de traiter la partie de l'implémentation d'origine, mais j'espère que cela aide même un peu.
Recommended Posts