[PYTHON] Revivez le rêve que vous avez manqué! (Cependant, limité à Pepper)

Origine

La Golden Week est terminée. Quand je suis venu travailler pour la première fois depuis longtemps, Pepper a été déçu et refusé et n'a pas bougé. Pepper, qui était toujours absent, s'est finalement enfui et est parti avec Patrasche. Il n'y a rien de tel, je n'ai tout simplement pas mis l'appareil sous tension, mais les gens qui ont été traités comme de mauvaises choses, comme se frapper la tête quand il y avait un bug au milieu du développement et donner un coup de pied dans la jambe en réagissant soudainement L'objet type peut donner l'impression d'avoir un appel silencieux.

Et j'ai réalisé quand j'essayais d'accomplir la tâche de rêver de Pepper, qui est devenu une routine quotidienne.

Oh, quel genre de rêve Pepper a-t-il fait pendant la Golden Week?

Expérience

Connectez-vous avec python et découvrez quel est le rêve de Pepper.

$python >>> from naoqi import ALProxy >>> bahav = ALProxy("ALBehavoirManager", "192.168.10.10", 9559) >>> behavList = [b for b in behav.getInstalledBehaviors() if 'pepper-dream365' in b] >>> behavList ['sbr_00160_pepper-dream365_044/0427', 'sbr_00160_pepper-dream365_044/0428', 'sbr_00160_pepper-dream365_044/0429', 'sbr_00160_pepper-dream365_044/0430', 'sbr_00160_pepper-dream365_044/0501', 'sbr_00160_pepper-dream365_044/0502', 'sbr_00160_pepper-dream365_044/0503', 'sbr_00160_pepper-dream365_045/0504', 'sbr_00160_pepper-dream365_045/0505', 'sbr_00160_pepper-dream365_045/0506', 'sbr_00160_pepper-dream365_045/0507', 'sbr_00160_pepper-dream365_045/0508', 'sbr_00160_pepper-dream365_045/0509', 'sbr_00160_pepper-dream365_045/0510', 'sbr_00160_pepper-dream365_046/0511', 'sbr_00160_pepper-dream365_046/0512', 'sbr_00160_pepper-dream365_046/0513', 'sbr_00160_pepper-dream365_046/0514', 'sbr_00160_pepper-dream365_046/0515', 'sbr_00160_pepper-dream365_046/0516', 'sbr_00160_pepper-dream365_046/0517', 'sbr_00160_pepper-dream365_047/0518', 'sbr_00160_pepper-dream365_047/0519', 'sbr_00160_pepper-dream365_047/0520', 'sbr_00160_pepper-dream365_047/0521', 'sbr_00160_pepper-dream365_047/0522', 'sbr_00160_pepper-dream365_047/0523', 'sbr_00160_pepper-dream365_047/0524', 'sbr_00160_pepper-dream365_048/0525', 'sbr_00160_pepper-dream365_048/0526', 'sbr_00160_pepper-dream365_048/0527', 'sbr_00160_pepper-dream365_048/0528', 'sbr_00160_pepper-dream365_048/0529', 'sbr_00160_pepper-dream365_048/0530', 'sbr_00160_pepper-dream365_048/0531']

Puisque le nom du comportement est la date, il semble que vous puissiez exécuter le rêve de la date spécifiée en récupérant les 4 derniers caractères.

La source

J'ai dû désactiver l'autonomie et changer inputMode sur 2 avant de pouvoir l'exécuter correctement.

itsudemo_yumewo.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from naoqi import ALProxy

if (len(sys.argv) < 2):
    print "Usage: 'python itsudemo_yumewo.py IP [PORT]'"
    sys.exit(1)

IP = sys.argv[1]
PORT = 9559
if (len(sys.argv) > 2):
    PORT = sys.argv[2]

try:
    behav = ALProxy("ALBehaviorManager", IP, PORT)
except Exception,e:
    print "Could not create proxy to ALBehaviorManager"
    print "Error was: ",e
    sys.exit(1)

try:
    tts = ALProxy("ALTextToSpeech", IP, PORT)
except Exception,e:
    print "Could not create proxy to ALTextToSpeech"
    print "Error was: ",e
    sys.exit(1)

try:
    autonomous = ALProxy("ALAutonomousLife", IP, PORT)
except Exception,e:
    print "Could not create proxy to ALAutonomousLife"
    print "Error was: ",e
    sys.exit(1)

try:
    motion = ALProxy("ALMotion", IP, PORT)
except Exception,e:
    print "Could not create proxy to ALMotion"
    print "Error was: ",e
    sys.exit(1)

#Obtenez un laissez-passer de comportement de rêve
behavList = [b for b in behav.getInstalledBehaviors() if '_pepper-dream365_' in b]
# behavMaps[month][date]Remplacer par
behavMaps = {}

for b in behavList:
	month = b[-4:-2]
	date = b[-2:]
	if month not in behavMaps:
		behavMaps[month] = {}
	behavMaps[month][date] = b

#Rêve d'une date précise
def seeDream(month, date):
    print 'This is a %s/%s\'s dream' % (month, date)
    
    behav.runBehavior(behavMaps[month][date])

#Sélectionnez une date
def selectDream():
    print "Which month?"
    print behavMaps.keys()
    
    input_month = raw_input('>>> ')
    if input_month in behavMaps:
        print "What's the date?"
        print behavMaps[input_month].keys()
        input_date = raw_input('>>> ')
        if input_date in behavMaps[input_month]:
            seeDream(input_month, input_date)
    next()

#Que voir encore
def next():
    input = raw_input('more?[Y/n]>>> ')
    if input != 'n':
        selectDream()

#Prétraitement (désactive l'autonomie)
autonomous.setState('disabled')
motion.wakeUp()
tts.setParameter("inputMode", 2)

#Sélection de rêve
selectDream()

#Nettoyer (redémarrer autonome)
tts.setParameter("inputMode", 3)
autonomous.setState('solitary')

Comment utiliser

Spécifiez le mois et la date en deux chiffres sur la ligne de commande. Si vous en avez plus?, Appuyez sur Y pour continuer et exécuter les rêves de l'autre jour. Appuyez sur n pour quitter.

$ python itsudemo_yumewo.py 192.168.10.10 Which month? ['04', '05'] >>> 04 What's the date? ['27', '28', '29', '30'] >>> 29 This is a 04/29's dream more?[Y/n]>>> Which month? ['04', '05'] >>> 05 What's the date? ['30', '02', '03', '26', '01', '06', '07', '04', '05', '08', '09', '28', '29', '14', '24', '25', '27', '20', '21', '11', '10', '13', '12', '15', '22', '17', '16', '19', '18', '31', '23'] >>> 01 This is a 05/01's dream more?[Y/n]>>> n

Postscript

À part Pepper, je pense que quelqu'un d'autre que moi le préparera, alors attendez patiemment un bon hack. En fait, depuis que j'ai fait ce script, j'ai pensé que c'était correct de créer l'application de rêve, mais dans une situation solitaire où Pepper n'est pas si impliqué. C'est aussi une idée que ce sera pratique.

Recommended Posts

Revivez le rêve que vous avez manqué! (Cependant, limité à Pepper)
Demandez à NAO (Pepper) de vous dire la météo
Vous qui coloriez le journal pour le rendre plus facile à voir
[Pepper] Comment l'utiliser?
Quand il est difficile de copier ce que vous avez construit avec vue
Est-il facile de synthétiser un médicament sur le marché?
Lorsque vous souhaitez l'utiliser tel quel lorsque vous l'utilisez avec lambda memo
Est-il possible d'extraire les informations de profil de la personne du journal de discussion?
Si vous ne savez pas comment dessiner le graphique que vous voulez avec matplotlib, il est pratique de regarder la galerie