まっつん総研連絡用ブログ

プログラミング教育とかMSXとか。

実習室で使っている教材:教育版LEGO MINDSTORMS EV3

 プログラミング実習室で使っていたり、要望があれば使えるようにしている教材のうち、教育版LEGO MINDSTORMS EV3について書いてみます。

※「子ども向けプログラミング環境にはどのようなものがあるか」、また「そのプログラミング環境がどのようなものであるか」については、既にネットに情報があふれていますので、あくまで身の周りでどのように使っているかを書いています。

f:id:matsun-ri:20220214212914j:plain
LEGO MINDSTORMS EV3で組み立てたロボット

目次

概要

 レゴブロックで有名なレゴ社と、Scratch子ども向けプログラミングワークショップでScratchを選択する理由)で有名なミッチェル・レズニック教授のタッグが送る、テック好きな親御さん垂涎の的のロボット教材です(なにせ、品質なりに高いので)。
 これで何ができるのかを確認したいなら、YouTube あたりを“MINDSTORMS”で検索するのが一番でしょう。ロボットを理解するには動いているところを見ることです。

 MINDSTORMSシリーズは、やる気とパーツ次第で本当に何でも作れます。
 例えば、阪大レゴ部が自動紙飛行機折り機*1を作った際には、ニュースに取り上げられました。
www.youtube.com

 こういった機械を思いつきで作ろうとしても、かつては高専生や工学部生が学校の設備で金属を切断するところから始めなければならなかったのですが、MINDSTORMSの登場によって、プロトタイピングがずっと身近になりました。

開発環境

 利用できるプログラミング言語は、ブロックプログラミングのほか、C, Java, C#, mrubyなどのテキストプログラミングに対応しています。

 当初のブロックプログラミング環境は『EV3ソフトウェア*2でした。

f:id:matsun-ri:20220217212017j:plain
EV3ソフトウェアで書いた障害物回避のコード

 これはScratch Jr.のように、文字の書かれていないアイコンブロックを右方向に連結することでコーディングするものでした。
 ブロック(コード)に文字が使われていないので、利用者の母語にあまり左右されない利点がありますが、慣れないと理解しづらくもあります。

 その後『EV3 Classroom』がリリースされ、プログラミング環境が Scratchのようなテキストブロック形式になりました。

f:id:matsun-ri:20220217212206j:plain
EV3 Classroomで書いたライントレースのコード

 Scratch経験者なら EV3 を簡単に動かせるようになるでしょうし、EV3 Classroom がはじめてのプログラミング環境であったなら、Scratch もじきに使いこなせるようになるでしょう。*3

 とはいえ、少し残念な点もあります。

f:id:matsun-ri:20220217212922j:plain
簡体字っぽいフォント

 上の例では、特に「位」「進」「」が読めません。

オンラインテキスト

 プログラミングに関する紙の教本は、ユーザーガイド(取説)くらいしか附属しません。
 代わりに、EV3アプリやEV3 Classroomなどの開発環境に、これでもかというくらいの量のオンラインテキストが提供されます。しかも、生徒側のテキストだけでなく、教える側にとっての授業のためのヒントも提供されます。

 オンラインテキストは更新されることもあるのですが、EV3は既にサポートが終了しているため、将来的にはパソコンを買い替えた際などに EV3 Classroom がインストールできなかったり、インストールができてもテキストがダウンロードできなくなることもありえるのが気がかりです。

EV3 Classroomのチュートリアル

 EV3 Classroom には、数多くのレッスンプランがオンラインテキストで用意されています。

 はじめにというチュートリアルでは、

  • EV3本体 と EV3 Classroom(をインストールしたパソコン)の Bluetoothによる接続
  • モーターとセンサーをプログラミングによって制御(ソースコードが例示されます)
  • ドライビングベース(左右の車輪が別々のモーターに繋がっている車)の組立と制御(ソースコードが例示されます)

といった、EV3を操る最初の一歩を知ることができます。

 続いて、ユニットプランというレッスン集では、ロボットトレーナー、エンジニアリングラボ、スペースチャレンジといったレッスンが用意されています。

 ロボットトレーナーでは、EV3に含まれているモーターや各センサーを、順を追って実際に利用していきます。
 途中までは、ソースコードが例示されます。

  • 直進と回転(モーターの使用)
  • 物体と障害物(超音波センサーの使用)
  • つかんで離す(電動アームの作成。ただし、掴むというよりは引っ掛けるというほうが正しい)
  • 色と線(カラーセンサーの使用によるライントレース)
  • 角度とパターン(ジャイロの使用)
  • 工場で働くロボット(ブロックを移動させる、線に沿って進むなど、ロボットとしての具体的な動作を実現します。ここからはソースコードが例示されません
  • FIRST LEGO League(世界規模のロボット競技会)への誘い

 エンジニアリングラボでは、動作の精度、ギアチェンジ、摩擦係数、重力加速度を考慮したギミックを作成します。ソースコードが例示されます。

 スペースチャレンジでは、火星探査ミッションの実現のため、探査車や探査衛星、ロケット発射機を作ります。ただし、ソースコードは例示されません。またレゴ マインドストーム教育版に入っていないパーツを利用します。

 他に、基本セットモデルでは、以下の組み立て方と制御用のソースコードが例示されます。

  • ジャイロボーイ(ジャイロによって、セグウェイのように2輪だけで直立する車)
  • カラーソーター(ブロックの色を認識し、選り分けるアーム)
  • パピー(ロボット犬)
  • ロボットアームH25(ブロックを持ち上げるアーム)

 ここまで試すころには、EV3で思った通りのものが作れるようになるのではないでしょうか。

MakeCode for EV3

 以前、micro:bit実習室で使っている教材:BBC micro:bit)や MakeCode Arcade(実習室で使っている教材:Microsoft MakeCode Arcade )で紹介した Microsoft MakeCode は、EV3にも対応しています。
 MakeCode for EV3 では、ブロックプログラミングでプログラムを作成し、USB接続でMINDSTORMS EV3へプログラムを転送できます。

f:id:matsun-ri:20220217221421j:plain
MakeCode for EV3で書いたライントレースのコード

 ただ、上に示したコードのとおり、EV3の醍醐味であるモーター駆動系の命令が、なぜか日本語化されていません。*5

ロボットコンテスト

 EV3を利用して作られた自律型ロボットによる国際的なロボットコンテストが定期的に開催されています。
www.wroj.org

 既定の競技フィールドの上を、モーター制御や各種センサーを駆使して、荷物をルールに従って移動させ、ゴールまで到着する、といった内容で、様々な部門が用意されています。*6
 ロボットの機種は、EV3の他、前世代のNXT、次世代のSPIKE や Robot Inventorで参加が可能です。

次世代機

 EV3を購入した翌年には、LEGO SPIKE や MINDSTORMS Robot Inventor などの新機種へ移行するとのことで販売終了してしまいました。
 阪大レゴ部みたいな名だたる所でも、前世代の機種(NXTなど)を使っているようですし、ロボコンにも引き続き参加できるようなので、大事に使っていきたいと思います。

 新機種はドットマトリクス液晶もなく、単体でのオンブロックプログラミング*7もできないようなので、今後フルカラー液晶を搭載した後継機が出ない限り、EV3は精神的な頂点であり続けるかもしれません。*8

状況

 パソコン本体にお金を掛けなかったのが認められたのか、予算を通してもらえました*9

 最初に試しに作ったロボットは、チュートリアルの通りに作ったもので、左右の車輪をそれぞれ独立したモーターで動かすことができるものでした。
 その後、見様見真似でロボットアームを追加し、薬の空き箱くらいなら掴めるようになりました。

f:id:matsun-ri:20220214213443j:plain
ロボットアーム

 そこで、以下のようなプログラムを作ってみました。

  • 起動直後に360度回転し、自分の周囲にある空き箱を探す
  • 最も近い空き箱の方向に向く
  • 空き箱に向かって走る(最初は速く、近づいたら遅く)
  • ちょうどいい距離になったら止まる
  • 開いていたアームを閉じ、空き箱を掴む
  • そのまま180度回転する
  • 少し走る
  • アームを開いて空き箱を離す
  • 少しバックする

 このプログラムがうまく動くと、EV3で作ったロボットが、自律的に空き箱を探して走り、持ち運ぶように見えます。
 プログラムの作りこみが甘く、うまくいくときもあればいかないときもありますが、そこが子どもに人気の理由かもしれません。

 うち特有の問題としては、EV3の開発環境はWindows,Mac,iOS,Android,Chromeと幅広く対応しているものの、うち最大派閥のUbuntuには対応していないため、利用できるパソコンが限られる点が挙げられます。*10

 現在の常連である4・5年生は、ロボットよりもScratchプログラミングに夢中*11なのですが、新たに中学生たちがロボット作りに参加することになり、今後が楽しみです。

Tips

 Raspberry PiMicrosoft MakeCode for EV3にてプログラムを作成した場合、USB接続でEV3に流し込むことになりますが、USBケーブルを繋いだだけだとEV3が書込禁止ドライブとなり、せっかく作ったプログラムが書き込めないようです。
 書込可能にするには、ターミナルにて次の操作が必要です。

$ sudo mount -o remount,rw '/media/pi/0042-0042'
(下線部は環境に依るかも)

 なお、流し込む度に一旦切断されて再接続されるので、その都度操作が必要です。

*1:この名前は、完全ではありません。折るだけではなく自動的に発射までできてしまうからです。

*2:途中で『EV3 Lab』という名前に変わったようですが、その後すぐにEV3自体が販売終了になってしまったので、この名前はあまり見かけません。

*3:そもそも、Scratch開発者のレズニック教授が早くからMINDSTORMSの開発メンバーだったので、こうなることは必然だったのではないでしょうか。

*4:外国製アプリによくあるパターンですが、Scratchは、このあたりが丁寧に作られています。

*5:2022年2月現在。

*6:YouTubeで“WRO”を検索すると、公式による動画を観ることができます。

*7:EV3には本体の液晶画面を利用し、本体だけでプログラミングができるという、びっくりするような機能があります。

*8:外国でも似たような主張がされているようで、そういう人に向けて「新型がEV3より優れている理由」といった動画が作られています。

*9:そりゃ、本当ならノートパソコンが10台くらい欲しいところを、捨てられかけてるデスクトップパソコンを全部自分でキッティングして済ませたわけですし……。ああ、空からChromeBookが降ってこないかなあ。

*10:C言語などでの開発はできるようですが、MINDSTORMSを触りたい小学生全員にC言語を書かせるのは現実的ではないでしょう。

*11:こないだロボットを卒業したばかりだから、だったりして。