LoginSignup
4
2

More than 3 years have passed since last update.

ScratchでLEGO Mindstormsを動かしてみる

Last updated at Posted at 2020-09-23

前回:機械学習×Scratch!? 使ってみた

前回の投稿から期間が空いてしまったが、Scratchの続編。前回はこちらを参照してほしい。
今回は教育版 LEGO® MINDSTORMS EV3(以降EV3)をScratchを使って簡単な制御を行ってみる。次回はML2ScratchとEV3を組み合わせてAIロボットを作る予定。

今回使うロボット・モデル

Scratchでは様々なデバイスを拡張機能として制御することができる。microbitやWeDo2.0などが挙げられるが今回はLEGO Mindstorms EV3を利用する。

EV3はレゴブロックとモーターやセンサーをあわせて組み立てたロボットを、プログラムで自由に制御することができる製品である。詳しくは以下を参照してほしい。
教育版レゴ® マインドストーム® EV3製品詳細

今回のEV3はトレーニングロボットと呼ばれるモデルを使用していく。
21.png

Scratch上でEV3を使う準備 ScratchLink

Scratch3.0およびScratch3.0ベースでデバイスを制御するためには、ScratchLinkというソフトウェアをインストールする必要がある。以下のサイトから環境に合わせてインストールする。

Windows環境ではMicrosoft Storeからインストールするか、セットアップファイルを直接ダウンロードしてインストールするか選択することができる。(今回はセットアップファイルを利用してインストールする。)
4.png

ダウンロードしたファイルを解凍し、中のmsiファイルを実行する。

5.png
6.png
セットアップのウィザードが開くので表示に從い進める。基本的に難しいことはないので問題ないと思う。最後のLaunch Scratch Linkの欄にはチェックをいれて「Finish」する。

7.png
8.png
9.png

ScratchLinkが起動されていると画面右下のツールバーにアイコンが表示される。

10.png

Scratch上でEV3を使う準備 拡張機能の追加とペアリング

続いてScratch上でEV3をBluetoothを用いてペアリングしていく。
まずは前回同様こちらからカスタムされたScratchを開く。(通常のScratchでもEV3を扱うことができるが、今後AI系の拡張機能も合わせて使っていくためここは統一してカスタムされたScratchを使っていく。)
ちなみに推奨されるブラウザはChrome。

画面が開けたら左下のマークを選択してEV3の拡張機能を追加する。
0.png
1.png

拡張機能を選択すると、すぐにペアリングの画面が出てくる。(追加されたブロックの欄にあるマークを選択することでペアリングも可能)
EV3の電源が入っていれば検索一覧にデバイスが表示されるので「接続する」を選択しペアリングを行う。

11.png
10-1.png

続いて以下のようにPINコードを確認される。
12.png

それと同時にEV3の液晶ディスプレイを確認するとPCからの接続を許可するか聞かれるので許可し、続いてPINについても確認されるため「1234」の状態で決定する。

IMG_5718.jpg
IMG_5719.jpg

接続が完了すると以下のように表示されるので「エディターへ行く」を選択する。

13.png
これでプログラムを作成し、実行する環境が整った。

簡単なプログラムを作ってEV3を動かしてみる

ここからは実際にScratch上でプログラムを作って、EV3を動かしてみる。
EV3を制御するプログラムを作る上でモーターやセンサーが接続されているポートを把握する必要がある。今回は以下のようにEV3にモーターが接続されている。
・左モータ Bポート
・右モータ Cポート

まずは以下のようにブロックを配置して、それぞれをクリックして動きを確認してみる。
15.png
配置したブロックを拡大すると・・・
15-1.png

モーターの回転方向を制御するブロックは「こちら向き」「あちら向き」と少し分かりづらい表記になっているため実際に動かして動作を確認してみる。
左側のブロック「こちら向き」をクリックすると以下のように動作する。
1.git
右側のブロック「あちら向き」をクリックすると以下のように動作する。
2.git
「こちら向き」が今回のロボットの形では前進になるため、今度は以下のようにプログラムを作り変えていく。BポートとCポートのモーターを同時に動作させるプログラムになっている。
16.png
配置したブロックを拡大すると・・・
15-1.png

旗マークをクリックすると以下のように動作する。

3.git

ここまでのプログラムで前進・左右旋回の動かし方はわかった。また、「あちら向き」に変えることで後退させることもできるのがわかった。

ScratchのスプライトとEV3の動きを連携させる

では応用として、ここまで作ってきたEV3の動きとスプライトの動きを連携させるプログラムを作ってみる。
プログラムとしては以下のように作る。
・EV3をキーボードの矢印キーで操作する(前進・後退・左右旋回)
・スプライトの猫もEV3が動くのに合わせてステージ上で動く(座標・方向が変わる)
・スペースキーで猫を中央にリセットする

プログラムを以下のように作った。

18.png
19.png
20.png

動作としては以下のようになる。

4.git

猫の動きとEV3の操作を関連付けることができた。

まとめ

今回は、モーターのみを使った制御をScratchと連携させて行った。使ってみた感じとしては、モーターやセンサーが接続されているポートをしっかり把握してブロックの設定を変えれば簡単に動かせる敷居の低さを感じた。またプログラムを作成してから実行するまでにコンパイルやファイル転送等を必要としないのもストレスを感じずにできている。応用としてここにセンサーの制御を交えることでさらに実現できる動きを拡張することができる。またセンサーで判断を前回利用したML2ScratchなどのAIによる制御に置き換えることもできる。次回以降は他のAIの拡張機能やEV3とAI拡張の連携を試していく。

次回:機械学習モデルとScratchを連携! TM拡張機能使ってみた

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2