生きものロボットとじゃんけんしよう!(ML2Scratch)
今回の記事では、機械学習が体験できる拡張機能「ML2Scratch」を利用して、生きものロボットとじゃんけんをするプログラムを作ってみましょう。
ML2Scratchの詳しい紹介については、こちらの記事もご覧くだいさい。
プログラム次第では、絶対に勝つじゃんけんロボットや絶対に負けるじゃんけんロボットが作れます。この記事ではこんなことができます。
(反応に時間が少しかかるので後出しジャンケンロボットのような感じになります)
iOSは、この記事に対応しておりません。
iOSのWebBLEアプリではカメラを使うことができないため、他の端末をご利用いただくようお願いいたします。
用意するもの
・生きものロボットキット(ココロキット内蔵)
・カメラが搭載されている端末
・グーチョキパーの画像
生きものロボットキットをじゃんけん仕様に改良しよう
ぐー、ちょき、ぱーをロボットで表現できるようにしましょう。
サンプルロボットのくじらちゃんは手が2本なので、うでにグーチョキパーの画像を貼り付けて、下の写真のように3つの状態で表現できるようにします。
(チョキのときグーが見えてしまっているけど、ご愛嬌でお願いします)
拡張機能をロードしよう
「ココロキット」と「ML2Scratch」をロードします。
じゃんけんを機械学習しよう
グーチョキパーを認識できるようにそれぞれラベルをつけましょう。ラベルの付け方は、こちらの記事も参考にしてください。
・ラベル1→グー
・ラベル2→チョキ
・ラベル3→パー
・ラベル4→背景(なにも写ってない)
学習が終わったら、ラベルをチェックして判定がてきているか確認しよう。学習する画像の枚数によっても精度が変わるので試してみましょう。
絶対に勝つじゃんけんロボットのアルゴリズムを考えよう
ここまでで、カメラを利用して相手がグーチョキパーの何を出したかを判断することができるようになりました。次に、絶対に後出しジャンケンで勝つためにはどうしたら良いのかを考えましょう。
はい、答えは下記のようになりますね。
・相手がグー→ロボットは、パーを出す
・相手がチョキ→ロボットは、グーを出す
・相手がパー→ロボットは、チョキを出す。
プログラムしてみよう
じゃんけん仕様に改造した生きものロボットを動かすプログラムをつくります。ロボット側は、下のようになります。
・グーを出す→なにもしない
・チョキを出す→左腕を上げる
・パーを出す→右腕を上げる
プログラムを作ってみましょう。新たにブロック定義や変数を使っています。フラグという変数は、チョキやパーの処理が動いている間に、追加で命令が実行されなくするために使います。
(まち時間やモータの回転方向は自分のロボットに合わせて調整してください)
やってみよう
さあ、じゃんけんしてみましょう!うでの位置を手動で合わせてプログラムをスタートします。
いかがでしたか?少し調整が難しいと思いますが、じゃんけんロボットを自分で作ることができます。
ロボットが負けるためにはどうしたらいいかな?
後出しジャンケンで負けるようにするためにはどうしたらいいかな?いろいろ考えて改良を続けましょう!
プログラムはこちらからダウンロードできます!(グーチョキパーの学習は自分で実施してください)
これを作ってくれたら、ハッシュタグ#kurikitをつけて見せてもらえると嬉しいです!
この記事が気に入ったらサポートをしてみませんか?