■はじめに
前回は、1つのアクションを挟んでから「HelloWorld」と話すPepperアプリケーションをご紹介しました。
今回は、具体的に Pepper に、自分達の思い通りの動作をつけてみます。
Pepper は両手の開閉を行う事が出来ますので、じゃんけんの「グー」と「パー」の動きを実現してみます。
■ポーズを作る
じゃんけんをする際の、腕の動きは、以下の様になります
- 片手を前に出す
- 「じゃんけん」のかけ声とともに、腕を振り上げる
- 「ポン」で「グー」か「パー」を出す
そこでまずは、それぞれのポーズを作成しようと思います。
Pepper では、比較的簡単に GUI 上の操作で、新しいポーズを作成出来ます。
まずは図1で、じゃんけんを行う前の、立っているだけの Pepper を設定しました。
※ポーズライブラリにはじめからある、「Stand」を設定してます

図1 じゃんけんのベースプロジェクト
図1の画面右に、Pepper が立っています。
この Pepper の右腕を選択すると、図2のように、腕を設定する画面が表示されます。

図2 ポーズ作成画面表示
図2では各関節単位で、どこをどれくらい曲げるのか、回転させるのかを設定することが出来ます。
まずは、「片手を前に出す(この時は「グー」である)」を行いたいので、図3のように設定してみました。

図3 片手を前に出すポーズの作成
この状態を保存して、新しいポーズとします。
「ポーズライブラリ」にある「+」ボタンを押すと、図4が表示されます。

図4 ポーズの保存画面
ここで、「じゃんけんスタート」という名称を付けて保存すると、図5のように、新しいポーズが出来上がります。

図5 「じゃんけんスタート」のポーズを保存
同じ要領で、「じゃんけん」「ポン(パー)」「ポン(グー)」という3つのモーションを作成しました。
図6のように、全部で4つのモーションを追加しています。

図6 じゃんけんに必要なポーズをすべて作成後
■ポーズを並べて動きをつける
こうして作成した全てのモーションを、今度はタイムライン上に設置して行きます。
試しに、「立っている状態」「じゃんけんスタート」「じゃんけん」「ポン(パー)」をシーケンシャルに並べてみました。
図7の状態にしたところで、実行ボタンを押下すると、新しく作成したポーズが繋がって、じゃんけんしているような動作になりました。

図7 じゃんけんするようにポーズを並べる
■「グー」と「パー」に分岐する
ただ、このままでは「ポン(グー)」を出す事が出来ません。
そこで、「じゃんけん」から「ポン(パー)」に行くのか、「ポン(グー)」に行くのかを乱数で決定したいと思います。
条件分岐として、今回は「ボックスライブラリ」にある「If」という部品を使用します。
こちらを「じゃんけん」と「ポン(パー)」の間に入れる+「ポン(グー)」を設定すると、図8のようになります。

図8 「グー」と「パー」への分岐を作る
本来この部品は、音声入力やテキスト入力に応じて処理を分岐するものですが、プログラムを少し改造して、乱数での条件分岐に対応します。
Ifの部品上で右クリックして、「ボックスのスクリプトを編集」を選択(図9)すると、図10のように、Ifの部品に関するプログラムが表示されます。

図9 分岐の部品(If)のプログラムを開く 1
図10 分岐の部品(If)のプログラムを開く 2
各種パラメータ等は入力情報になるのですが、今回はこの値を外部から取得するのではなく、乱数を生成して、乱数の値が 0.5 未満なら「パー」、0.5以上なら「グー」を出す様にしてみました。

図11 乱数を使って「グー」と「パー」へ分岐するように変更
実行した結果、「グー」(図12)、「パー」(図13)がランダムに出る様になりました。

図12 「グー」が出ました
図13 「パー」が出ました
■まとめ
如何でしたでしょうか?
今回動かしたのは右腕だけですが、他の部位についても同じ様に、自分の好きなポーズを作成して、新たなポーズとして保存出来ますので、Pepper に色々なことをさせることが出来そうですね。
また、Pepper に音声を認識させて、「じゃんけん」と声をかけたら「じゃんけん」を行う、といったことも出来ます。
今回ご紹介した一方通行のアクションだけではなく、対話形式の動きを作れば、より色々なことができるようになると思います。
以上で Pepperアプリケーション開発 ~じゃんけんさせる~ は終了となります。
最後までご覧いただき有難うございました。
次回も引き続きPepperアプリケーションに触れていく予定です。
弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。