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

株式会社ネクスト エンジニアBlog

不動産・住宅情報サイト HOME'Sを運営する株式会社ネクストのエンジニアが提供する技術ブログです。エンジニアに役立つ情報の発信や、弊社エンジニアの活動を中心にお届けします。

pepperのDialogで注意すべき点

pepper Choregraph

こんにちは、上津原です。 最近はpepperを触っています。少しずつpepperのアプリケーションを開発するにあたって気づいた点などを紹介していこうと思います。

pepperとは?

pepperは、ソフトバンクロボティクスから出ているロボットです。TVCMなどで見たことがある人も多いと思います。

pepperはChoregraphという統合環境を使ってアプリケーションの開発ができます。Choregraph内ではpythonを使ってより詳細なロジックの作成ができます。

pepperにおけるDialogとは?

Dialogと言うのは、pepperとの会話のやりとりを作成する部分です。

「こんにちは」と声をかけられたらpepperは何と返すか?などを記述するものです。

詳しいやり方はこちらのページを見てもらうとわかりやすいと思います。

注意するべき点って?

コレは自分がハマったことなのですが

  • Dialogが一番下まで完了すれば勝手に次の処理に進むと思っていたが、そうではないということ。

例えば、「はい」「いいえ」でそれぞれ違う回答をさせたい場合は

u:(はい) そうですよね〜
u:(いいえ) まじですか

というふうに書くわけですが、コレではこの受け答えをループしてしまうだけになってしまいます。

これらを次のアクションへ繋げたい場合は、後ろにoutputの名前を記述し、1を代入します。

(ex:onStoppedを動かしたい場合)
u:(はい) そうですよね〜 $onStopped=1
u:(いいえ) まじですか $onStopped=1

こうすることで、次の処理へつなぐことが出来ます。 任意でoutputを作成した場合は、同じようにその名前を書いてやればOKです。

ここでもう一つ注意なのですが、onStoppedを使わなかった場合、Dialogの聞き取りモードが継続して動き続けてしまう状態に陥ります。 そうなると、他の処理中に音声を拾ってしまい動作がおかしくなってしまうので、そういった場合は聞き取り後にonStopにもラインをつなげておくと安心です。

こんなかんじ

f:id:nextdeveloper:20150128162606p:plain

pepperは意外と自分でいろんなことをしてくれない。

ロボットなんだから結構気が利いて、色々といい感じにやってくれるんだろうな〜とか最初思ってたんですが、全くそんなことはなく、きっちりこっちがロジックを書いてあげないと訳の分からない動きをしたりします。

ロボットだということで妙な期待を寄せていると、ロジック周りでいろんな落とし穴があるので色々と気をつけていきたいですね。