Pepper
Choregraphe

Pepper / Subscribe to EventとRaise Eventについて

More than 3 years have passed since last update.

PepperのALMemory周りのメモ

Choregrapheに用意されているBOXのみでALMemoryにデータを格納、

通知を受け取って他のボックスに更新を適用させるサンプル。


1. 目的

Choregrapheにデフォルトで用意されているボックスのみを使って、

イベントの通知によって別のボックスの動作を促せないか、、、


2. 結果

Subscribe to EventというボックスとRaise Eventというボックスを利用することにより実現出来る!

(正確にはSubscribe to Eventを利用しなくてもできます)


3. 概要

Screen-Shot-2015-02-26-at-11.12.57-AM.jpg

rootObserverという名前のボックスとNotificationという名前のボックスを配置


  • Observerボックスにはイベント通知を受け取った後の処理

  • Notificationボックスにはイベント通知をするための処理


3-1. Observerボックス

root > Observer

Screen-Shot-2015-02-26-at-11.10.52-AM.jpg

Observerボックスの中身にはSubscribe to Eventと確認用にSay Textを配置。

Screen Shot 2015-02-26 at 12.24.20 PM.png

Subscribe to Eventのパラメーターはそのままで。


3-2. Notificationボックス

root > Notification

Screen Shot 2015-02-26 at 3.13.14 PM.png

Notificationボックスの中身にはPepperくんに挨拶する内容によって、

Raise Eventに渡る値が変化するようにボックスを配置

動作の流れ



  1. Speech Reco.によってPepperくんに音声をインプット


  2. Switch Caseを使い聞いた言葉により条件分岐してMulti Editで値の調節


  3. Raise Eventを使って受け取った値を通知(重要)

Screen Shot 2015-02-26 at 12.39.02 PM.png

Raise Eventのパラメーターもそのままで。


3-3. Subscribe to EventとRaise Eventの簡単な説明

Raise Eventというボックスに値を送ることにより、

パラメーターで設定したMyApplication/MyDataというイベントの

値が更新され、Subscribe to Eventに通知されます。

簡単!!


3-4. 実行結果

Screen-Shot-2015-02-26-at-3.13.45-PM_2.jpg

先ほど組んだアプリを起動して、Dialogウィンドウに「おはよう」と打ってエンターを押すと、

「今は朝なんですね」と返ってきました。


3-5. アプリの流れ

(Pepper実機では無いのでSpeech Reco.でエラーが起きてます、、、)

Screen-Shot-2015-02-26-at-3.13.45-PM.jpg

Pepperに「おはよう」と話しかけることにより、

Notificationボックス内のSpeech Reco.が反応、Raise Eventに値が渡ります。

Screen-Shot-2015-02-26-at-3.14.16-PM.jpg

Observerボックス内のSubscribe to EventALMemoryの更新通知を受け取り

値をSay Textに吐き出します。


3-6. こっちの方がスマート、、、?

Screen Shot 2015-02-26 at 3.36.34 PM.png

Add event from ALMemoryの吹き出しが付いてる下の(+)をクリック。

Screen Shot 2015-02-26 at 3.39.15 PM.png

MyApplication/MyData(Raise Eventのパラメーターにセットしたイベント名)

のチェックボックスにチェックを入れる。

Screen-Shot-2015-02-26-at-3.33.34-PM.jpg

すると、MyApplication/MyDataという新しいインプットが増えているので、

ここからSay Textに繋ぐ。

Screen-Shot-2015-02-26-at-3.35.20-PM.jpg

これでも先ほどと同じ動作をします。

こちらのほうが少しアプリがスマートになるのかな。

(内部的にはどのような処理の違いがあるのか分かりませんが、、、)


4. まとめ

他の方法でもこのアプリの実装は可能ですが、

Notification(インプット)とObserver(アウトプット)を分けることで、

簡単なアプリならごちゃごちゃせずに組めます。