見出し画像

【Robo Blocksの使い方】発話内容と動きを毎回ランダムにする_その1

ソフトバンクロボティクスでPepperを使ったプログラミング教育を担当してる佐藤です!


今回はRobo Blocksを使って、発話内容と動き(モーション)を毎回ランダムにする方法を紹介します。
毎回同じ発話内容と動きのセットですと飽きてしまいますので、ランダム性を持たせてアプリを少し楽しくしてみましょう!

作り方

発話と動きを同時に行う場合は、下記のブロックを使うことが多いと思います。

スクリーンショット 2021-08-10 21.37.18

しかしながら、このブロックですと発話内容と動きは固定されたものになります。(発話内容のみであれば変数を使うことでランダムにすることは可能です)

ですので今回は発話と動きをそれぞれ別のブロックにします。
今回は頭を触られた時に動くように作ってみました。

スクリーンショット 2021-08-10 21.42.17

これを動かしてみると、頭を触られた時に発話と動きが別のブロックながらも同時に実行されたことが確認できると思います。
今回実現したいのはランダムな動きですので、ランダムな数を使って3パターンずつ作ってみます。

スクリーンショット 2021-08-10 21.47.28

ここで注目していただきたい点は2点です。
1. 発話用のランダムな数と動き用のランダムな数がある
2. 頭を触られた後にランダムな数を変数に代入している

1が必要な理由は、例えばランダムな数という変数1つにした場合、1が出た時の動きと動作は定義されたものですから結局どれが実行されるかがランダムなだけで発話と動きは毎回同じ物になってしまいます。発話と動き、それぞれにランダムな数を用意しましょう。

2は頭を複数回触られる場合に考慮する必要があります。
例えば以下のようにトップブロックのすぐ下でランダムな数を生成するようにプログラミングしたとします。

スクリーンショット 2021-08-10 21.51.57

この場合、ランダムな数が抽選されるのは旗をクリックした後1回だけとなりますので、再び旗がクリックされない限り何度頭を触っても3パターンのうちどれか1つを繰り返すことになります。もちろんこういう動きを実装したい場面もあると思いますので、場合によってどこでランダムな数を定義するのか注意する必要があります。

まとめ

今回は発話と動きをランダムにする方法を紹介しました。
発話と動きの組み合わせが毎回違うだけでも、ロボットとのコミュニケーションが少し楽しくなりますのでぜひ作ってみてください。
また、今回の組み方ですと今のところは正しく動いていますが選択肢の数が多くなるとバグが発生します。次回の記事では、その対処法ともっと効率のいい組み方を紹介させていただく予定です。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ソフトバンクロボティクス株式会社 ホームページ
https://www.softbankrobotics.com/jp/

Pepper教育関係者フォーラム
https://pepper-schoolchallenge.com/

Pepper for Education
https://www.softbankrobotics.com/jp/product/education/

STREAMチャレンジ
https://www.softbankrobotics.com/jp/product/academy/stream/

━━━━━━━━━━━━━━━━━━━━Pepperブログ編集部━┛