PepperのALMemory
周りのメモ
Choregrapheに用意されているBOXのみでALMemory
にデータを格納、
通知を受け取って他のボックスに更新を適用させるサンプル。
#1. 目的
Choregrapheにデフォルトで用意されているボックスのみを使って、
イベントの通知によって別のボックスの動作を促せないか、、、
#2. 結果
Subscribe to Event
というボックスとRaise Event
というボックスを利用することにより実現出来る!
(正確にはSubscribe to Event
を利用しなくてもできます)
root
にObserver
という名前のボックスとNotification
という名前のボックスを配置
Observer
ボックスにはイベント通知を受け取った後の処理Notification
ボックスにはイベント通知をするための処理
##3-1. Observerボックス
root > Observer
Observer
ボックスの中身には**Subscribe to Event
**と確認用にSay Text
を配置。
Subscribe to Event
のパラメーターはそのままで。
##3-2. Notificationボックス
root > Notification
Notification
ボックスの中身にはPepperくんに挨拶する内容によって、
**Raise Event
**に渡る値が変化するようにボックスを配置
動作の流れ
-
Speech Reco.
によってPepperくんに音声をインプット -
Switch Case
を使い聞いた言葉により条件分岐してMulti Edit
で値の調節 -
Raise Event
を使って受け取った値を通知(重要)
Raise Event
のパラメーターもそのままで。
##3-3. Subscribe to EventとRaise Eventの簡単な説明
Raise Event
というボックスに値を送ることにより、
パラメーターで設定したMyApplication/MyData
というイベントの
値が更新され、Subscribe to Event
に通知されます。
簡単!!
##3-4. 実行結果
先ほど組んだアプリを起動して、Dialogウィンドウに「おはよう」と打ってエンターを押すと、
「今は朝なんですね」と返ってきました。
##3-5. アプリの流れ
(Pepper実機では無いのでSpeech Reco.
でエラーが起きてます、、、)
Pepperに「おはよう」と話しかけることにより、
Notification
ボックス内のSpeech Reco.
が反応、Raise Event
に値が渡ります。
Observer
ボックス内のSubscribe to Event
がALMemory
の更新通知を受け取り、
値をSay Text
に吐き出します。
##3-6. こっちの方がスマート、、、?
Add event from ALMemory
の吹き出しが付いてる下の(+)をクリック。
MyApplication/MyData
(Raise Event
のパラメーターにセットしたイベント名)
のチェックボックスにチェックを入れる。
すると、**MyApplication/MyData
**という新しいインプットが増えているので、
ここからSay Text
に繋ぐ。
これでも先ほどと同じ動作をします。
こちらのほうが少しアプリがスマートになるのかな。
(内部的にはどのような処理の違いがあるのか分かりませんが、、、)
#4. まとめ
他の方法でもこのアプリの実装は可能ですが、
Notification
(インプット)とObserver
(アウトプット)を分けることで、
簡単なアプリならごちゃごちゃせずに組めます。