Python-Box-Konzept (Pepper Tech Fes Technical Session)

Choregraphe und Python

In den bisherigen Tutorials haben wir uns die verschiedenen in Choregraphe verfügbaren Boxen angesehen. Boxen allein können eine Vielzahl von Anwendungen ermöglichen, aber Sie können noch mehr tun, indem Sie direkt mit Python auf die API zugreifen.

In der technischen Sitzung des Pepper Tech Festival 2014 haben wir die Python-Box als eine der Möglichkeiten zur Verwendung von Python vorgestellt. Dieses Tutorial gibt einen Überblick über das Python-Box-Konzept.

Die in Choregraphe verwendete Python-Version ist 2.7. Grundlegende Python-Tutorials finden Sie unter http://docs.python.jp/2/tutorial/ usw. Weitere Informationen finden Sie im API-Dokument [Ereigniserkennung für Stoßfängersensor #Dokumentprüfung](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) Siehe.

Python-Box

Hier werde ich eine leere Python-Box mit Choregraphe erstellen und die Python-Box erklären, während ich hineinschaue.

  1. Klicken Sie mit der rechten Maustaste auf das Flussdiagramm und ** wählen Sie Python ... aus dem Menü New Box ** new-python-box.png

  2. Geben Sie ** Test als Namen [A] ** ein und klicken Sie auf die Schaltfläche ** [OK] [B] ** new-python-dialog.png

Dadurch wird eine Python-Box erstellt. python-box.png

Doppelklicken Sie auf das erstellte Testfeld. Der Skripteditor wird mit ähnlichem Code wie folgt geöffnet.

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

Das Verhalten der Python-Box wird durch die MyClass-Klasse definiert. Die GeneratedClass -Klasse wird automatisch generiert, wenn das Verhalten ausgeführt wird, und bietet zusätzliche integrierte Funktionen, wie in der Box definiert.

In der Box definierte Methoden

Eingang

In der Klasse "MyClass" müssen Sie eine Methode definieren, die der Eingabe der Box entspricht. Diese Namen sind als ** onInput_ ** definiert und werden bei der Eingabe aufgerufen.

Das Argument ändert sich je nach Eingabetyp. Wenn Sie beispielsweise eine Eingabe mit dem Namen * myInput * erstellen, die ein einfaches Ereignis (Bang) ist,

    def onInput_myInput(self):
        pass

Im Fall einer Zahl (Number), einer Zeichenfolge (String) oder einer Dynamik (Dynamic),

    def onInput_myNumberInput(self, p):
        pass

    def onInput_myStringInput(self, p):
        pass

    def onInput_myDynamicInput(self, p):
        pass

Und es wird einen Streit geben. Im Fall von Dynamic kann es wie Bang aufgerufen werden (ohne einen Wert zu übergeben), daher kann es wie folgt definiert werden.

    def onInput_myDynamicInput(self, p = None):
        pass

Standardmäßig sind die Eingaben * onStart * und * onStop * definiert, daher werden hier zwei Methoden generiert: onInput_onStart und onInput_onStop.

Laden und entladen

Die Klasse "MyClass" definiert die Methoden "onLoad" und "onUnload", die aufgerufen werden, wenn die Box geladen oder entladen wird.

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

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

Es wird empfohlen, "onUnload" mit der Methode aufzurufen, die dem Stoppen der Box entspricht (OnStop-Eingabe usw.), da diese nach dem Stoppen der Box neu initialisiert wird.

Integrierte Funktionen der Box

Da "MyClass" von "GeneratedClass" erbt, können Sie die integrierten Funktionen von "GeneratedClass" in Ihrem Skript verwenden.

Ausgabe

Eine Methode, die jeder Ausgabe in der Box entspricht, wird mit dem Namen ** ** definiert. Sie können die Box ausgeben, indem Sie diese Methode aufrufen.

Wie bei der Eingabe ändern sich die Argumente je nach Ausgabetyp (http://qiita.com/Atelier-Akihabara/items/7a898f5e4d878b1ad889#3-2). Wenn Sie eine Ausgabe mit dem Namen * myBangOutput * definieren, bei der es sich um ein einfaches Ereignis (Bang) handelt,

    def onInput_onStart(self):
        self.myBangOutput()

Sie können einen Wert an das Ausgabeziel übergeben, indem Sie ihn ohne Argument aufrufen, z. B. und im Fall einer Zahl (Zahl), Zeichenfolge (Zeichenfolge) oder dynamisch (Dynamisch), indem Sie ihn mit einem Argument aufrufen.

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

Parameter

Sie können auch die im Feld angegebenen Parameter verwenden. Sie können eine der folgenden Methoden verwenden.

  1. Verwendung der Methode "getParameter" Um den Parameter mit dem Namen * param1 * abzurufen, rufen Sie die Methode getParameter wie folgt auf:

        value = self.getParameter("param1")
    
  2. So überschreiben Sie die setParameter-Methode Sie können auch beschreiben, was passiert, wenn sich ein Parameter ändert, indem Sie die Methode "setParameter" in der Klasse "MyClass" überschreiben.

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

Log

Sie können das Protokoll auch über die Python-Box ausgeben. Das Ausgabeprotokoll kann mit dem Protokoll-Viewer angezeigt werden.

Methode Funktion
self.log("my message") Nachrichtenausgabe auf Info-Ebene
self.logger.fatal("my message") Nachrichtenausgabe auf schwerwiegender Ebene
self.logger.error("my message") Nachrichtenausgabe auf Fehlerebene
self.logger.warning("my message") Nachrichtenausgabe auf Warnstufe
self.logger.info("my message") Nachrichtenausgabe auf Info-Ebene
self.logger.debug("my message") Nachrichtenausgabe auf Debug-Ebene

Die print-Anweisung kann nicht an den Log Viewer ausgegeben werden. Sie müssen diese Methoden verwenden.

Wenn Sie eine Python-Box wie diese erstellen, können Sie Python-Code direkt in die Box schreiben. Durch Aufrufen der API direkt in diesem Code können Sie Dinge tun, die in der Box-Bibliothek nicht behandelt werden. In Zukunft planen wir, das Konzept dieser Python-Boxen anhand konkreter Beispiele im Tutorial zu betrachten.

Recommended Posts

Python-Box-Konzept (Pepper Tech Fes Technical Session)
Begrüßen Sie das Python SDK (technische Sitzung von Pepper Tech Fes)
Grundlegendes zur Python for Pepper-Entwicklung. -Python Box selbst erstellte Funktions Edition-
Grundlegendes zur Python for Pepper-Entwicklung. -Einführung in Python Box-
Python Golf Tech (AtCoder)