まずは、完成ビデオをご紹介します。私の頭・腕の動きと連動して、分身ロボットが動きます。
では、どのようにして作るか、ご紹介します。
Scratch特別バージョンには、AIの画像認識機能を使える拡張ブロックがいろいろあります。
これを使うと、画像から物の名前や、人体の目や鼻などの座標、音声認識など、いろいろなことができます。
さらに、Scratchとmicro:bitをBluetooth通信でつなぐ機能などもあります。
そこで、Scratchで顔の傾きや手の上げ下げを認識させて、micro:bit上のサーボモーターを動かすことで自分のアバター(というほどの物ではありませんが)を作ってみたいと思います。
まず、工作です。
3つのサーボーモーターを棒に貼り付け、さらにイーオがぶら下がるようにネジを付けます。イーオの穴の部分は、このような工作に役立ちます。
木の棒に、3つのサーボモーターを取り付けていきます。
グルーガンで、腕をはり付けます。
ネジをつけて、イーオを吊せるようにします。
かなり雑ですが、大体できました。3つのサーボモーターは、イーオのピンに差し込みます。今回は、P0(頭),P1(右腕),P2(左腕)を使用しています。
イーオ上のP0,P1,P2端子に差し込みます。電源は、イーオの裏にある単4×3本の電池から供給しました。
プログラム
事前準備①
次のページからmicrobit-more用のHEXファイルをダウンロードして、micro:bitにドラッグアンドドロップで書き込みします。
事前準備②
Windowsで使う場合には、Scratch Linkをインストールします。
事前準備③
拡張された特別のScratchを使用します。
micro:bitと通信する際に、サーボのコントロールをしたいので、拡張機能のmicrobit-moreを読み込みます。
さらに、AI機能としてPosenet2scratchを読み込みました。
いよいよプログラムです。Posenet2scratchには、右目・左目・右腕・左腕の位置座標を返すブロックが準備されているので、そのブロックを使いました。
頭の傾きは、(左目のy座標ー右目のy座標)を計算して、マイナスなら右に傾いている、プラスなら左に傾いているという判断をさせました。
腕の上下は、ちょうどスクラッチのy座標が-180~+180だったので、その座標を半分にしてサーボを0~180°動かしています。
microbit-moreを使うと、直接イーオにつないだサーボモーターをコントロールできます。
イーオは、乾電池でサーボモーターまで動かせるので、このような工作でも簡単にできます。
イーオの販売ページ
このようば素晴らしいソフトを開発しているchampierre様、Yengawa Lab様に感謝申し上げます。