Pepperの音声認識を使ってクイズアプリを作るPepperで始めるロボットプログラミング(3)(2/4 ページ)

» 2015年03月27日 11時00分 公開
[大塚実MONOist]

入出力ポートの種類と使い方

 本連載では今まで、ボックスの使い方について詳しく説明しないままで来たが、ボックスの入出力について、ここでちょっと補足しておこう。

 ボックスの両側に並んでいる四角いアイコンが入出力に使うポートである。左側に入力、右側に出力のポートが置かれているので、Choregrapheでは基本的に、ボックスを左から右に並べて、各ボックスの出力と入力をつなげていくことになる。

photo

 ポートにはそれぞれ固有の名前が付けられているのだが、さまざまな種類があって、色とアイコンで意味を見分けることができる。まず色についてであるが、これには引き渡されるデータにより、以下の4タイプが用意されている。

  • バン(黒)…タイミングを伝える信号で、意味のあるデータは持たない
  • 数(黄)…データとして数値(小数または整数)が渡される
  • 文字列(青)…データとして文字列が渡される
  • ダイナミック(灰)…バン、数、文字列のいずれかとなる

 先ほどのサンプルアプリを見ると、Speech Reco.ボックスからSwitch Caseボックスには、文字列データが渡されていることが分かる。ただSwitch Caseの入力はダイナミックなので、文字列以外にも対応していることが見て取れる。

 一方、アイコンは動作に関する情報を示している。これには入力側と出力側に、以下の種類がある。

  • 入力
photo onStart

 「OnStart」…このポートに入力があると、ボックスは開始状態になる

photo onStop

 「OnStop」…このポートに入力があると、ボックスは停止状態になる

photo onEvent

 「onEvent」…開始/停止以外の入力。意味はボックスにより異なる


  • 出力
photo onStopped

 「onStopped」…ボックスが停止状態になると出力される

photo onStopped

 「即時」…停止以外の出力。意味はボックスにより異なる


photo マウスオーバーで、各ポートの名称や種類を見ることができる

 ポートのアイコンと色に注目した上で、次のアプリを見て欲しい。これは、Pepperが単語を認識できなかったときの反応を追加したものだ。

 単語認識に失敗したとき、Speech Reco.ボックスの右下、onNothingという名前のポートから信号が出力される。その後ろのSayボックスで「良く聞こえませんでした。もう一度言ってください」というせりふを喋らせているのだが、じつはPepperは自分自身の声も認識しようとしてしまうため、誤動作する場合がある。そんなときは、onNothing出力とonStop入力を繋げて、Speech Reco.をいったん止めてしまえばいい。

photo Speech Reco.のonNothing出力とonStop入力をつなげるとこうなる。ちょうど真横なので、ループの線が棒にしか見えない

 ここで1つ注意して欲しいのは、バーチャルロボットと実機で挙動が異なる場合があるということだ。実機だと、単語が認識できなかったとき、前述のようにonNothing出力があるが、バーチャルロボットだと、ワードリストに関係なく、なぜか入力した単語がそのままSwitch Caseに引き渡されてしまう。Choregrapheのバージョンが上がると改善される可能性はあるが(現在は2.0.5)、Speech Reco.を使うときは気をつけて欲しい。

Copyright © ITmedia, Inc. All Rights Reserved.