Kenntnisse in Python sind für die Entwicklung von Pepper und NAO unerlässlich. Daher möchte ich kurz die Python-Box in Naoqi erklären.
Modellname: MacBook Pro OS : Yosemite 10.10.3 Prozessorname: Intel Core i5 2,6 GHz Speicher: 16 GB Grafik: Intel Iris 1536MB Choreographe : 2.3.1
Zunächst möchte ich die Python-Box kurz erläutern. Die Python-Box finden Sie in der Box-Bibliothek unter:
Wenn nicht, suchen Sie bitte anhand der Lupenmarkierung.
** [Programmierung] -> [Vorlage] -> Python Box **
input : "onStart" "onStop" output : "onStopped"
Es ist eine Box bestehend aus.
Alle Boxen in Choreographe werden grundsätzlich basierend auf der folgenden Konfiguration erstellt. Das Skript sieht folgendermaßen aus:
#Sie können sehen, dass die abgeleitete Klasse von GeneratedClass MyClass ist.
class MyClass(GeneratedClass):
#Das erste, was aufgerufen wird, wenn das Verhalten geladen wird__init__(self)ist.
def __init__(self):
#Generierte Klasse__init__(self)Sie können sehen, dass es überschreibt.
GeneratedClass.__init__(self)
#Lassen Sie uns hier sagen, was heißt, wenn das Verhalten geladen wird.
def onLoad(self):
#put initialization code here
#Lassen Sie uns hier den Initialisierungsprozess einfügen.
#Wird aufgerufen, nachdem das Verhalten geladen und alle Init aufgerufen wurden.
pass
def onUnload(self):
#put clean-up code here
#OnInput am Ende der Anwendung_Wird aufgerufen, wenn eine Eingabe für onStop vorliegt.
pass
def onInput_onStart(self):
#self.onStopped() #activate the output of the box
#Wird aufgerufen, wenn in onStart eine Eingabe erfolgt.
#self.onStopped()Bitte beachten Sie, dass die Ausgabe nur erfolgt, wenn dies beschrieben wird.
pass
def onInput_onStop(self):
#Wird aufgerufen, wenn eine Eingabe für onStop vorliegt.
self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
self.onStopped() #activate the output of the box
Überprüfen Sie, wie die Python-Box aufgerufen wird. Ich habe Logger in jede Funktion eingefügt und die Ausführungsreihenfolge überprüft.
Ich habe die nicht verbundenen Boxen angeordnet.
[INFO] init 0 [INFO] init 1 [INFO] init 2 [INFO] init 3 [INFO] onLoad 0 [INFO] onLoad 1 [INFO] onLoad 2 [INFO] onLoad 3 #Doppelklicken Sie hier auf root onStop [INFO] onUnload 0 [INFO] onUnload 1 [INFO] onUnload 2 [INFO] onUnload 3 ``` Sie können sehen, dass init und onLoad aufgerufen werden. Danach wird onUnload der Reihe nach aufgerufen und endet. 2. Ich habe versucht, mich in Reihe zu verbinden.
```
[INFO] init 0 [INFO] init 1 [INFO] init 2 [INFO] init 3 [INFO] onLoad 0 [INFO] onLoad 1 [INFO] onLoad 2 [INFO] onLoad 3 [INFO] onInput_onStart 0 ``` Wie ich oben geschrieben habe, wird keine Ausgabe durchgeführt, wenn Sie der Methode "onInput_onStart" nicht self.onStopped () hinzufügen. Lassen Sie uns als nächstes mit dem mit self.onStopped () überprüfen. 3.2 mit self.onStopped () in 2. Self.onStopped () zur Methode "onInput_onStart" hinzugefügt.
```
[INFO] init 0 [INFO] init 1 [INFO] init 2 [INFO] init 3 [INFO] onLoad 0 [INFO] onLoad 1 [INFO] onLoad 2 [INFO] onLoad 3 [INFO] onInput_onStart 0 [INFO] onInput_onStart 1 [INFO] onInput_onStart 2 [INFO] onInput_onStart 3 [INFO] onUnload 0 [INFO] onUnload 1 [INFO] onUnload 2 [INFO] onUnload 3 ``` Es wurde bis zum Ende korrekt ausgegeben. 4. Ich habe das Skript so belassen, wie es war, und es mit ☓ verbunden.
```
[INFO] init 0 [INFO] init 1 [INFO] init 2 [INFO] init 3 [INFO] onLoad 0 [INFO] onLoad 1 [INFO] onLoad 2 [INFO] onLoad 3 [INFO] onInput_onStop 0 [INFO] onUnload 0 [INFO] onInput_onStop 1 [INFO] onUnload 1 [INFO] onInput_onStop 2 [INFO] onUnload 2 #Beachtung [INFO] onUnload 3 [INFO] onInput_onStop 3 [INFO] onUnload 0 [INFO] onUnload 1 [INFO] onUnload 2 [INFO] onUnload 3 ``` Ich habe es gerade als Aufmerksamkeit beschrieben, aber Sie können sehen, dass die Reihenfolge von onInput_onStop und onUnload umgekehrt und aufgerufen wird. Ich habe es mehrmals wiederholt, aber ich weiß nicht, ob die Schreibreihenfolge umgekehrt oder die Anrufreihenfolge umgekehrt ist, aber manchmal funktioniert es in der richtigen Reihenfolge, z. B. 0 ~ 2 und 3 Es kann wie im Fall von umgekehrt werden. ** Die Ursache ist unbekannt. ** Es kann ein Fehler in Choreographe sein.
Beachten Sie auch, dass onUnload zweimal aufgerufen wird. Es wird zweimal aufgerufen, wenn Sie in ☓ eingeben und wenn das Verhalten endet.
Als Fortsetzung des Artikels möchte ich schreiben, wie ich meine eigenen Funktionen und externe Bibliotheken verwende.
Recommended Posts