用意する物
- AkaDakoシリーズ
- 1個
- サーボモーター
- 1個
- 5mmスチレンボード
- A4サイズ程度
- グルーガン(もしくは接着剤)
- 適量
- 組立用 釘30mm
- 1本
- 分別用 釘
- 数本(故意に曲げた物を含む)
活動
AIの機械学習で物の自動分別を行います。 Scratchの機械学習には、TM2ScratchとML2Scratchという2つの環境があります。ここでは、ML2Scratchを使う方法で曲がった釘と真っ直ぐな釘の分別を行います。
【仕組】
画像認識にはパソコンのカメラを使います。AIは初めは赤ちゃんと同じで何も知りません。まずは、分別したい物の画像を学習させ、この学習結果を元にサーボモーターの角度を制御して、分別器を実現します。
ここでは、サーボモーターの角度を
- 分別台に何も乗ってない状態:台がフラットになる角度
- 真っ直ぐな釘を認識:フラットに対して+40度
- 曲がった釘を認識:フラットに対して-40度 に制御します。
【準備】
- 分別台の制作
- 型紙を印刷します。この時、拡大や縮小はせずに「実際のサイズ」で印刷してください。
- 型紙を5mmのスチレンボードに貼り付けて、カッターで裁断します。
- 裁断した部品は、グルーガン(なければ接着剤)で組み立てます。
- 接続
- AkaDakoシリーズをパソコンに接続します。
- サーボモーターを AkaDakoシリーズのGrove端子「デジタル」に接続します。
【プログラミング】
- アプリを起動します。
- 利用したいカメラの映像が右上のステージに出ない場合はでカメラを切り替えます。
- 緑の旗をクリックします。
- AI機械学習
- カメラに分別台が映るように調整します。
- 判別の精度を高めるために、以下の2点について注意してください。
- 人や動くものが映り込まないよう設置。
- カメラと分別台はこの全ての活動が終わるまでできるだけ動かさない。
- 左のブロックパレットで「ML2Scratch」をクリックします。
- 機械学習の方針としては、以下の方針で学習させていきます。
- ラベル1:分別台に何も乗ってない状態
- ラベル2:真っ直ぐな釘
- ラベル3:曲がった釘
- まず、分別台に何も乗っていない状態でをクリックします。
- 「最初の学習にはしばらく時間がかかるので、何度もクリックしないで下さい。」という表示が出ますが「OK」をクリックします。
- 数秒待った後、「ラベル1を学習する」を10回以上クリックします。
- 次に、分別台に真っ直ぐな釘を置きます。転がって安定しない場合は、ハンマーですべての釘の頭を潰しておくと良いと思います。
- をクリックします。
- 釘の角度や置く位置を替えながら10回以上「ラベル2を学習する」をクリックしてください。
- 最後に、分別台に曲がった釘を置きます。
- をクリックします。
- 釘の角度や置く位置を替えながら10回以上「ラベル2を学習する」をクリックしてください。
- AI機械学習結果の動作確認
- 「ラベル」ブロックにチェックを入れます。
- ステージに「ML2Scratch:ラベル 1」と表示されます。この値が、真っ直ぐな釘を置いた状態では2.曲がった釘を置いた状態では3になればOKです。
- もし、うまく識別できない場合は、いずれかの方法を行ってください。
- 学習量が少ないと誤検出をします。追加で、誤検出するラベルの学習操作を繰り返してください。
- それでもうまくいかない場合は、間違った学習をさせてしまった可能性があります。「ラベルの全ての学習をリセット」ブロックをクリックし、最初の「ラベル1を学習する」からやりなおしてください。
- サーボモーターの制御
- クリックします。
- 分別台がフラットになる角度を調べます。
- フラットになった角度をベースに、+40度と-40度になるようプログラムを作ります。サンプルでは8度でフラットだったため、ラベル2で+48度。ラベル3で-32度にしています。ポイントとしては、サーボを動かす前に「1秒待つ」を入れたほうが、釘を置き終わる前に動いてしまう事故を防止できます。
■注意事項
iPadでライトニング接続の場合、サーボを動かす電流が足りず、接続が切れるケースがあります。
「こんな教材を開発して欲しい」「オフィシャル教材のここを改良してほしい」等御座いましたら、お気軽にご意見を頂ければ幸いです。