前回の投稿から期間が空いてしまったが、Scratchの続編。前回はこちらを参照してほしい。
今回は教育版 LEGO® MINDSTORMS EV3(以降EV3)をScratchを使って簡単な制御を行ってみる。次回はML2ScratchとEV3を組み合わせてAIロボットを作る予定。
今回使うロボット・モデル
Scratchでは様々なデバイスを拡張機能として制御することができる。microbitやWeDo2.0などが挙げられるが今回はLEGO Mindstorms EV3を利用する。
EV3はレゴブロックとモーターやセンサーをあわせて組み立てたロボットを、プログラムで自由に制御することができる製品である。詳しくは以下を参照してほしい。
教育版レゴ® マインドストーム® EV3製品詳細
今回のEV3はトレーニングロボットと呼ばれるモデルを使用していく。
Scratch上でEV3を使う準備 ScratchLink
Scratch3.0およびScratch3.0ベースでデバイスを制御するためには、ScratchLinkというソフトウェアをインストールする必要がある。以下のサイトから環境に合わせてインストールする。
Windows環境ではMicrosoft Storeからインストールするか、セットアップファイルを直接ダウンロードしてインストールするか選択することができる。(今回はセットアップファイルを利用してインストールする。)
ダウンロードしたファイルを解凍し、中のmsiファイルを実行する。
セットアップのウィザードが開くので表示に從い進める。基本的に難しいことはないので問題ないと思う。最後のLaunch Scratch Linkの欄にはチェックをいれて「Finish」する。
ScratchLinkが起動されていると画面右下のツールバーにアイコンが表示される。
Scratch上でEV3を使う準備 拡張機能の追加とペアリング
続いてScratch上でEV3をBluetoothを用いてペアリングしていく。
まずは前回同様こちらからカスタムされたScratchを開く。(通常のScratchでもEV3を扱うことができるが、今後AI系の拡張機能も合わせて使っていくためここは統一してカスタムされたScratchを使っていく。)
ちなみに推奨されるブラウザはChrome。
画面が開けたら左下のマークを選択してEV3の拡張機能を追加する。
拡張機能を選択すると、すぐにペアリングの画面が出てくる。(追加されたブロックの欄にあるマークを選択することでペアリングも可能)
EV3の電源が入っていれば検索一覧にデバイスが表示されるので「接続する」を選択しペアリングを行う。
それと同時にEV3の液晶ディスプレイを確認するとPCからの接続を許可するか聞かれるので許可し、続いてPINについても確認されるため「1234」の状態で決定する。
接続が完了すると以下のように表示されるので「エディターへ行く」を選択する。
これでプログラムを作成し、実行する環境が整った。
簡単なプログラムを作ってEV3を動かしてみる
ここからは実際にScratch上でプログラムを作って、EV3を動かしてみる。
EV3を制御するプログラムを作る上でモーターやセンサーが接続されているポートを把握する必要がある。今回は以下のようにEV3にモーターが接続されている。
・左モータ Bポート
・右モータ Cポート
まずは以下のようにブロックを配置して、それぞれをクリックして動きを確認してみる。
配置したブロックを拡大すると・・・
モーターの回転方向を制御するブロックは「こちら向き」「あちら向き」と少し分かりづらい表記になっているため実際に動かして動作を確認してみる。
左側のブロック「こちら向き」をクリックすると以下のように動作する。
右側のブロック「あちら向き」をクリックすると以下のように動作する。
「こちら向き」が今回のロボットの形では前進になるため、今度は以下のようにプログラムを作り変えていく。BポートとCポートのモーターを同時に動作させるプログラムになっている。
配置したブロックを拡大すると・・・
ここまでのプログラムで前進・左右旋回の動かし方はわかった。また、「あちら向き」に変えることで後退させることもできるのがわかった。
ScratchのスプライトとEV3の動きを連携させる
では応用として、ここまで作ってきたEV3の動きとスプライトの動きを連携させるプログラムを作ってみる。
プログラムとしては以下のように作る。
・EV3をキーボードの矢印キーで操作する(前進・後退・左右旋回)
・スプライトの猫もEV3が動くのに合わせてステージ上で動く(座標・方向が変わる)
・スペースキーで猫を中央にリセットする
猫の動きとEV3の操作を関連付けることができた。
まとめ
今回は、モーターのみを使った制御をScratchと連携させて行った。使ってみた感じとしては、モーターやセンサーが接続されているポートをしっかり把握してブロックの設定を変えれば簡単に動かせる敷居の低さを感じた。またプログラムを作成してから実行するまでにコンパイルやファイル転送等を必要としないのもストレスを感じずにできている。応用としてここにセンサーの制御を交えることでさらに実現できる動きを拡張することができる。またセンサーで判断を前回利用したML2ScratchなどのAIによる制御に置き換えることもできる。次回以降は他のAIの拡張機能やEV3とAI拡張の連携を試していく。