ロボット【Pepper(ペッパー)】近づくと距離に応じて喋る2(pythonボックス版)

こんにちわ〜♪

今日は昨日言った通り、昨日の「デフォルトボックスを1つも改変せずに作る」という意味不明なプログラムをpythonボックス1つで簡素化したものを載せたいと思います( ´ ▽ ` )ノ

作って見て思ったのが、やっぱりソース直書きが一番だな〜って事ですね♪

コードが少なくて見やすいし、何より作るのが簡単!

あんなに頭ひねって、ボックスを改変しないように作ったのがバカらしいくらいです(笑)

では、とりあえずというか早速ソースを書きたいと思います。


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

    def onLoad(self):
        #put initialization code here
        self.cnt=0

    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

    def onJudge(self,p):
        if self.cnt==0:
            self.cnt=1
            self.onSay(str(p))

    def onSay(self,p):
        tts = ALProxy("ALTextToSpeech")
        tts.say(str(p))
        self.cnt=0

    def onInput_onZone1(self):
        self.onJudge("なぁに?")

    def onInput_onZone2(self):
        self.onJudge("こんにちは")

    def onInput_onZone3(self):
        self.onJudge("もっと近くに来て?")


デフォルトのpythonボックスに書き込んでる箇所は、関数5個とOnLoad関数です。
・OnLoad関数の処理にself.cnt=0の追加
・onJudge関数、onSay関数、onInput_onZone1~3関数の3つ
onJudgeは、Pepper(ペッパー)が喋り終わっているかの判定
onSayは、人がいるゾーンにあったセリフをPepper(ペッパー)に喋らせる
onInput_onZone1~3は、各ゾーンのセリフを引数にonJudge関数を呼び出してます

以上で、解説は終わりです。

まぁ、特に難しい事は何も書いてないので、pythonボックスを使ってみようかな?と思うような人であれば、誰でも読めると思います♪

あんなにごちゃごちゃしていたプログラムがたったの38行で完結♪
あとはメモリイベントを前回と同じものを使用してるだけ・・・
やっぱ、デフォルトボックスだけなんて作りづらいだけですね( ;´Д`)

つなぎ方は、下の画像を参考にしてください
近づいたら喋る(python版)

メモリイベントは、EngagementZones/PersonEnteredZone1~3を1から順にpythonボックスに繋げてます。

pythonボックスに追加した入力は、onZone1~3の3つです。

あとは、再生してみて下さい。

前回と同様Pepper(ペッパー)との距離に応じて、喋ってくれるはずです。

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です