読者です 読者をやめる 読者になる 読者になる

Pepper・NAOの開発でダイアログから独自ビヘイビアを起動する方法

Pepper・NAOプログラミングで、声掛けから独自作成したビヘイビアを

起動する方法で苦労したので記載しておく。
オートノマスライフ実行中に、声掛けからプログラムを実行には、
・トリガーセンテンス
・コラボラティブダイアログ
の2つの方法があるようだと理解している。

この2つにどのような違いがあるのか、コラボラティブダイアログは、
トリガーセンテンスの代用として利用することができるのかは、よくわからないのだが
下記の回答の中に、
https://community.aldebaran.com/en/node/6610

トリガーセンテンスの機能の代替として利用することもできますが、オートノマスライフの会話を拡張するというのが主な使い方で、トリガーセンテンスとイコールではありません。」
とありつつも
「現状 pepper においてはコラボラティブダイアログを使うのは、アプリ起動のトリガーとして使うなどが考えられる利用方法となります。」
といった記載もあるため、トリガーセンテンスの代用と考えてよいように思われる。

まず本丸のトリガーセンテンスを試すが、これがうまくいかない。
コレグラフでの出力内容を見ながら確認をおこなったが、まず複雑な言葉をセンテンスとして設定した場合、かけた言葉がその言葉として認識されない。トリガーセンテンスに記述した言葉は、SpeechRecoのように、聞き取った言葉とより近い設定センテンスで強引に認識されるのかと思ったが、そうでもないらしい。
そこで、試しに認識しやすい短く単純なワードをトリガーセンテンスとして設定しなおしてみた。するとその言葉自体は正しく認識(出力)されるようになったが、とくに設定したビヘイビアが発動されない。アクティビティはInteractiveを選択している。設定などいろいろ変えて試してみたが、状況は変わらず。トリガーセンテンスに関しては、ここで行き詰ってしまった。
ロボット側に必要なインストールが足りていないかもしれないのだが、そこは深追いをしていない。

そこで、もう一方の方法であるコラボラティブダイアログを試してみる。
http://qiita.com/Atelier-Akihabara/items/37f5e99058ec39307038
http://qiita.com/DeveloperRyo87/items/da5a73f15f0da3aea2a2
などを参考に、ダイアログからビヘイビアを呼び出すためには、
^run(ビヘービア名) または ^start(ビヘービア名)
という記載をすればよさそうであったので、下記のように記載して試してみる。

u:(起動して)お待ちください ^run(アプリケーションID/ビヘイビアのパス)

「起動して」と声をかけると「お待ちください」と返答はあるが、そのあと独自ビヘイビアからの
発話をしない。^start にかえても同じである。
こちらでも行き詰って、色々悩んだあげく、ようやく下記のサイトを見つけて一応解決をした。
https://community.aldebaran.com/ja/forum/%E5%AD%90%E3%83%93%E3%83%98%E3%82%A4%E3%83%93%E3%82%A2%E3%81%AEsay-text%E3%81%AF%E7%99%BA%E
5%A3%B0%E3%81%97%E3%81%AA%E3%81%84%EF%BC%9F-3871


https://community.aldebaran.com/ja/node/571

最初のサイトでは、
^runおよび^startでは
「^run や ^start は、会話中に身振り手振りを導入する目的で存在するというのがあります。」
「会話中から呼び出す動作は発話すべきではないと考えられます。現にこれらの子ビヘイビアは発話中に呼び出されうるので、意図的に子ビヘイビア内の発話はカットされていてもおかしくはありません。」
とあり、
2番目のサイトで、
「^switchFocus」をつかえ、とあります。

最終的に下記のようにダイアログに記載することで、独自ビヘイビア(発話つき)を呼び出すことができました。

u:(起動して)お待ちください ^run(アプリケーションID/ビヘイビアのパス) $onStopped = 1