Pepper 개발을 위해 Python을 이해합니다. -Python 박스 입문편-
                                            
                                                
                                                
                                                
                                                
                                                
                                                 6124 단어  Choreographer파이썬PepperNAOqiNAO
                    
사전 쓰기
Pepper나 NAO의 개발을 할 때 Python의 지식은 필수라고 할 수 있습니다.
그래서 간단하지만 Naoqi에서 파이썬 박스를 설명하고 싶습니다.
 개발 환경
모델명 : MacBook Pro
OS : Yosemite 10.10.3
프로세서 이름 : Intel Core i5 2.6 GHz
메모리 : 16GB
그래픽 : Intel Iris 1536MB
Choreographe : 2.3.1
 주제
 파이썬 박스
 파이썬 박스란?
우선 파이썬 박스에 대해 간단히 설명하고 싶습니다.
파이썬 박스는 박스 라이브러리 아래에 있습니다.
그렇지 않으면 돋보기에서 검색하십시오.
[Programming]->[Template]->Python 상자
 
input : "onStart""onStop"
output : "onStopped"
로 구성된 상자입니다.
 스크립트
Choreographe 내의 박스는 기본적으로 모두 다음의 구성을 바탕으로 작성되고 있습니다.
스크립트는 다음과 같습니다.
#GeneratedClassの派生クラスがMyClassとなっていることがわかります。
class MyClass(GeneratedClass):
    #まずbehaviorが読み込まれた際に初めて呼び出されるのが__init__(self)です。
    def __init__(self):
        #GeneratedClassの__init__(self)をオーバーライドしていることがわかります。
        GeneratedClass.__init__(self)
        #ここにはbehaviorが読み込まれた際に呼び出されるものを入れましょう。
    def onLoad(self):
        #put initialization code here
        #ここでは初期化処理を入れましょう。
        #behaviorが読み込まれ、すべてのinitが呼び出されたあとに呼ばれます。
        pass
    def onUnload(self):
        #put clean-up code here
        #アプリケーション終了時、onInput_onStopに入力があったときに呼ばれます。
        pass
    def onInput_onStart(self):
        #self.onStopped() #activate the output of the box
        #onStartに入力があった時に呼ばれます。
        #self.onStopped()を記述しないと出力がなされません、注意しましょう。
        pass
    def onInput_onStop(self):
         #onStopに入力があった時に呼ばれます。
        self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
        self.onStopped() #activate the output of the box
 검증
Python 상자가 호출되는 방법을 확인합니다.
각 함수에 Logger를 넣어 실행 순서를 확인했습니다.
모델명 : MacBook Pro
OS : Yosemite 10.10.3
프로세서 이름 : Intel Core i5 2.6 GHz
메모리 : 16GB
그래픽 : Intel Iris 1536MB
Choreographe : 2.3.1
주제
 파이썬 박스
 파이썬 박스란?
우선 파이썬 박스에 대해 간단히 설명하고 싶습니다.
파이썬 박스는 박스 라이브러리 아래에 있습니다.
그렇지 않으면 돋보기에서 검색하십시오.
[Programming]->[Template]->Python 상자
 
input : "onStart""onStop"
output : "onStopped"
로 구성된 상자입니다.
 스크립트
Choreographe 내의 박스는 기본적으로 모두 다음의 구성을 바탕으로 작성되고 있습니다.
스크립트는 다음과 같습니다.
#GeneratedClassの派生クラスがMyClassとなっていることがわかります。
class MyClass(GeneratedClass):
    #まずbehaviorが読み込まれた際に初めて呼び出されるのが__init__(self)です。
    def __init__(self):
        #GeneratedClassの__init__(self)をオーバーライドしていることがわかります。
        GeneratedClass.__init__(self)
        #ここにはbehaviorが読み込まれた際に呼び出されるものを入れましょう。
    def onLoad(self):
        #put initialization code here
        #ここでは初期化処理を入れましょう。
        #behaviorが読み込まれ、すべてのinitが呼び出されたあとに呼ばれます。
        pass
    def onUnload(self):
        #put clean-up code here
        #アプリケーション終了時、onInput_onStopに入力があったときに呼ばれます。
        pass
    def onInput_onStart(self):
        #self.onStopped() #activate the output of the box
        #onStartに入力があった時に呼ばれます。
        #self.onStopped()を記述しないと出力がなされません、注意しましょう。
        pass
    def onInput_onStop(self):
         #onStopに入力があった時に呼ばれます。
        self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
        self.onStopped() #activate the output of the box
 검증
Python 상자가 호출되는 방법을 확인합니다.
각 함수에 Logger를 넣어 실행 순서를 확인했습니다.
#GeneratedClassの派生クラスがMyClassとなっていることがわかります。
class MyClass(GeneratedClass):
    #まずbehaviorが読み込まれた際に初めて呼び出されるのが__init__(self)です。
    def __init__(self):
        #GeneratedClassの__init__(self)をオーバーライドしていることがわかります。
        GeneratedClass.__init__(self)
        #ここにはbehaviorが読み込まれた際に呼び出されるものを入れましょう。
    def onLoad(self):
        #put initialization code here
        #ここでは初期化処理を入れましょう。
        #behaviorが読み込まれ、すべてのinitが呼び出されたあとに呼ばれます。
        pass
    def onUnload(self):
        #put clean-up code here
        #アプリケーション終了時、onInput_onStopに入力があったときに呼ばれます。
        pass
    def onInput_onStart(self):
        #self.onStopped() #activate the output of the box
        #onStartに入力があった時に呼ばれます。
        #self.onStopped()を記述しないと出力がなされません、注意しましょう。
        pass
    def onInput_onStop(self):
         #onStopに入力があった時に呼ばれます。
        self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
        self.onStopped() #activate the output of the box
연결되지 않은 상자를 정렬했습니다.

[INFO] init 0
[INFO] init 1
[INFO] init 2
[INFO] init 3
[INFO] onLoad 0
[INFO] onLoad 1
[INFO] onLoad 2
[INFO] onLoad 3
#ここでrootのonStopをダブルクリック
[INFO] onUnload 0
[INFO] onUnload 1
[INFO] onUnload 2
[INFO] onUnload 3
init이 호출되고 onLoad가 호출되었음을 알 수 있습니다.
그런 다음 onUnload가 차례로 호출되어 종료됩니다.
직렬로 결선해 보았습니다.

[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
위에서도 썼지만 "onInput_onStart"메소드에 self.onStopped()를 추가하지 않으면 출력이 이루어지지 않습니다.
그래서 다음은 self.onStopped()를 넣은 것으로 검증합니다.
2에 self.onStopped()를 넣은 것.
"onInput_onStart"메소드에 self.onStopped()를 추가했습니다.
[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
올바르게 끝까지 출력되었습니다.
스크립트는 그대로 ☓로 연결되었습니다.

[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
#注目
[INFO] onUnload 3
[INFO] onInput_onStop 3
[INFO] onUnload 0
[INFO] onUnload 1
[INFO] onUnload 2
[INFO] onUnload 3
주목과 기술한 곳입니다만, onInput_onStop과 onUnload의 순서가 역전해 불려 가고 있는 것을 알 수 있습니다.
몇번이나 반복해 보았습니다만, 써내지는 순서가 역전하는지, 불려 가는 순서가 역전하는지 모릅니다만, 0~2의 때와 같이 올바른 순서로 움직일 때도 있으면, 3 때처럼 역전하는 경우도 있습니다.
원인은 알 수 없습니다. Choreographe의 버그일지도 모르겠네요.
또한 onUnload가 두 번 호출되는 것에 주목합니다. ☓에 input했을 때와 behavior가 종료할 때의 2도 불려 갑니다.
감상
계속 기사로서 자작 함수의 활용 방법과 외부 라이브러리를 이용하는 방법을 써 가고 싶습니다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(Pepper 개발을 위해 Python을 이해합니다. -Python 박스 입문편-), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/Ryo87/items/fe00ae0f0c0cc34092ba
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
Reference
이 문제에 관하여(Pepper 개발을 위해 Python을 이해합니다. -Python 박스 입문편-), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ryo87/items/fe00ae0f0c0cc34092ba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)