Python Box Concept (Session technique Pepper Tech Fes)

Chorégraphe et Python

Dans les tutoriels jusqu'à présent, nous avons examiné les différentes boîtes disponibles dans Choregraphe. Vous pouvez réaliser une variété d'applications avec juste une boîte, mais vous pouvez faire encore plus en accédant directement à l'API à l'aide de Python.

Lors de la session technique du Pepper Tech Festival 2014, nous avons présenté la boîte Python comme l'une des façons d'utiliser Python. Ce tutoriel donne un aperçu du concept de boîte Python.

La version de Python utilisée dans Choregraphe est la 2.7. Pour les didacticiels de base sur Python, consultez http://docs.python.jp/2/tutorial/ et ainsi de suite. Reportez-vous également au document de l'API [Bumper sensor event detection #Document check](http://qiita.com/Atelier-Akihabara/items/d87553893fe2caa26d67#%E3%83%89%E3%82%AD%E3 % 83% A5% E3% 83% A1% E3% 83% B3% E3% 83% 88% E3% 81% AE% E7% A2% BA% E8% AA% 8D) Veuillez vous référer à.

Boîte Python

Ici, je vais créer une boîte Python vide avec Choregraphe et expliquer la boîte Python en regardant à l'intérieur.

  1. Cliquez avec le bouton droit sur le diagramme de flux et ** sélectionnez Python ... dans le menu Nouvelle boîte ** new-python-box.png

  2. Entrez ** Test comme nom [A] ** et cliquez sur le bouton ** [OK] [B] ** new-python-dialog.png

Cela créera une boîte Python. python-box.png

Essayez de double-cliquer sur la boîte de test créée. L'éditeur de script s'ouvre avec un code similaire au suivant.

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        #put initialization code here
        pass

    def onUnload(self):
        #put clean-up code here
        pass

    def onInput_onStart(self):
        #self.onStopped() #activate the output of the box
        pass

    def onInput_onStop(self):
        self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
        self.onStopped() #activate the output of the box

Le comportement de la boîte Python est défini par la classe MyClass. La classe GeneratedClass est automatiquement générée lorsque le comportement est exécuté et fournit des fonctions intégrées supplémentaires telles que définies dans la boîte.

Méthodes définies dans la boîte

contribution

Dans la classe MyClass, vous devez définir une méthode qui correspond à l'entrée de la boîte. Ces noms sont définis comme ** onInput_ <nom de l'entrée> ** et sont appelés lorsque l'entrée est effectuée.

L'argument change en fonction du Type d'entrée. Par exemple, si vous créez une entrée nommée * myInput * qui est un simple événement (Bang),

    def onInput_myInput(self):
        pass

Dans le cas d'un nombre (Number), d'une chaîne (String) ou d'une dynamique (Dynamic),

    def onInput_myNumberInput(self, p):
        pass

    def onInput_myStringInput(self, p):
        pass

    def onInput_myDynamicInput(self, p):
        pass

Et il aura un argument. Dans le cas de Dynamic, il peut être appelé comme Bang (sans passer de valeur), il peut donc être défini comme suit.

    def onInput_myDynamicInput(self, p = None):
        pass

Par défaut, les entrées * onStart * et * onStop * sont définies, donc deux méthodes sont générées ici: ʻonInput_onStart et ʻonInput_onStop.

Charger et décharger

La classe MyClass définit les méthodes ʻonLoad et ʻonUnload, qui sont appelées lorsque la boîte est chargée ou déchargée.

    def onLoad(self):
        #put initialization code here
        pass

    def onUnload(self):
        #put clean-up code here
        pass

Il est recommandé d'appeler ʻonUnload` avec la méthode équivalente à l'arrêt de la boîte (entrée onStop, etc.) car elle sera réinitialisée après l'arrêt de la boîte.

Fonctions intégrées fournies par la boîte

Puisque MyClass hérite de GeneratedClass, vous pouvez utiliser les fonctions intégrées fournies par GeneratedClass dans votre script.

production

Une méthode correspondant à chaque sortie de la boîte est définie avec le nom ** **. Vous pouvez sortir la boîte en appelant cette méthode.

Comme pour l'entrée, les arguments changent en fonction du type de sortie (http://qiita.com/Atelier-Akihabara/items/7a898f5e4d878b1ad889#3-2). Si vous définissez une sortie appelée * myBangOutput *, qui est un simple événement (Bang),

    def onInput_onStart(self):
        self.myBangOutput()

Vous pouvez transmettre une valeur à la destination de sortie en l'appelant sans argument, tel que, et dans le cas d'un nombre (Number), string (String) ou dynamic (Dynamic), en l'appelant avec un argument.

    def onInput_onStart(self):
        self.myNumberOutput(1000)

Paramètres

Vous pouvez également utiliser les paramètres spécifiés dans la boîte. Vous pouvez utiliser l'une des méthodes suivantes.

  1. Comment utiliser la méthode getParameter Pour obtenir le paramètre nommé * param1 *, appelez la méthode getParameter comme suit:

        value = self.getParameter("param1")
    
  2. Comment remplacer la méthode setParameter Vous pouvez également décrire ce qui se passe lorsqu'un paramètre change en remplaçant la méthode setParameter dans la classe MyClass.

    def setParameter(self, parameterName, newValue):
        if(parameterName == "param1"):
            self.param1 = newValue
    

Journal

Vous pouvez également générer le journal depuis la boîte Python. Le journal de sortie peut être consulté avec la visionneuse de journal.

Méthode une fonction
self.log("my message") Sortie de message au niveau info
self.logger.fatal("my message") Sortie de message au niveau fatal
self.logger.error("my message") Sortie de message au niveau d'erreur
self.logger.warning("my message") Sortie de message au niveau d'avertissement
self.logger.info("my message") Sortie de message au niveau info
self.logger.debug("my message") Sortie de message au niveau de débogage

L'instruction d'impression ne peut pas être sortie vers la visionneuse de journal. Vous devez utiliser ces méthodes.

En créant une boîte Python comme celle-ci, vous pouvez écrire du code Python directement dans la boîte. En appelant l'API directement dans ce code, vous pouvez faire des choses que la bibliothèque box ne couvre pas. Dans le futur, nous prévoyons de jeter un œil au concept de ces boîtes Python à travers des exemples concrets dans le tutoriel.

Recommended Posts

Python Box Concept (Session technique Pepper Tech Fes)
Dites bonjour avec le SDK Python (session technique Pepper Tech Fes)
Comprendre le développement de Python pour Pepper. -Édition de fonction auto-fabriquée par Python box-
Comprendre le développement de Python pour Pepper. -Introduction à Python Box-
Technologie de golf Python (AtCoder)