GELOを使った授業(前編)

導入

まだまだ日本では普及しているとは思えないLEGO社のロボットキットinventorですが、枚方ロボットプログラミング学習塾では上のコースでは主力として使っています。spikeはちょっと高いのとパーツが少ないことがネックになりますし、EV3は生産終了になりました。inventorはEV3と同じmindstormsの名も引き継いでいて、後継機と考えて良いと思います。(仕様はspikeと同じなので、よりややこしい話になっていますが)

ですが、この手のロボットキットをご自宅で購入して一人で進めるのは、とんでもなくハードルが高いと思います。ヘルプが説明書としての体を成しておらず、使って学ぶというには無茶なくらいサンプルも雑です。結果として、ロボット教室でキットを購入したけど、教室をやめたら不要になったとかいう話もちらほら聞くことになるのですが、これから購入をされる方や、余らせてしまっている方に届けば幸いです。

本筋として、うちの教室ではこんな授業をしていますよという案内でもあります。

枚方ロボットプログラミング学習塾のコースとしては、スタンダードコースの後半に差し掛かったくらいで取り扱える難易度です。ある程度プログラムの流れがわかっていて、繰り返しや条件分岐、各種センサーが使えて、マイブロックという関数が使えるくらいが適正と考えています。

最初の目的通り、全くinventorに慣れていなくてもわかるように説明は細かく記載しています。

GELOについて

GELOは、LEGOの最新のロボットキットのinventorに作り方や専用のプログラミングブロックが用意さているロボットの一つです。

一番右のロボットです。いかつい生き物みたいな感じですね。

GELOの仕様

4速歩行ができるロボットです。足はそれぞれ別々のモーターで動かせるので、プログラムで自由に動かすことができます。足はリンク機構になっているので楕円を描くように動きます。

文章では説明しにくいのですが、この足をオリジナルの発想で作るのはなかなか難しい構造になっています。

GELOの後ろ足

目のような超音波センサーが縦に付いているので、バケモノみたいな見た目になりますが、正面の障害物までの距離を検知できます。

口のところにはカラーセンサーが付いています。

前から見たGELO

GELOを作る

inventorはこんな感じでロボットごとの基本と応用の動かし方などを紹介してくれます。

画像を選択するとサンプルの動画も流れますが、5秒ほどしかなく、いつも良いところで終わってしまうのはどういう意図があるかわかりにくいですね。実際に動かしてみようというのは、かなり難易度が高いと思います。

GELOの作成 ステップ1

GELOを作っていきます。まずはステップ1から。選択するとプログラムの画面になりますが、右側の組み立てを押すと組み立て図に切り替わります。

組み立て図

組み立ては普通のLEGOの説明書とほとんど同じです。

四本足をそれぞれ作っていくので、手数は多めですが。同じことの繰り返しが多いので、難易度はそれほど高くありません。

上から
斜め前から

ステップ1の完成です。ぺったんこなロボットです。

この時点でモーターが4つ搭載されているので、足の動きを確認するプログラムが作れたりします。足がついているより安定しているので、この時点で足の動きを確認します。

GELOのプログラミング

サンプルは学習しやすいように、余分なプログラムブロックをカットしたモードがあります。

ただ、これだとプログラムの練習というのは物足りない上に、色々な作り方ができません。最初はこのまま進めますが、基本の動きがある程度確認できたら、通常のモードに戻していきます。

四本足を同時に動かすプログラム

同時に動かすだけなら簡単にできますが、その場でわずかに旋回するだけです。ジタバタしている勢いで少しずつずれているようにも見えます。

この時点では、動きをゆっくりにして確認してもわかりにくいと思います。

複数を選択する

ということで、原因を探るのも難しいので先に提示します。

  • 左右のモーターが逆向きについているため、回転が逆になる
    右足が前、左足が後ろに進もうとするとその場でぐるぐる回ります。
  • 足のスタート位置が同じなので、同時に足が出る
    動きの効率が悪いため、少しずつしか動きません。バタフライとクロールの違いを思い浮かべると良いかもしれません。

回転を逆にする

スピードをマイナスにすれば、モーターは逆回転してくれます。

ただ、左右揃っているために、バタフライのような動きになります。

AとCを逆回転にする

足の初期位置をずらす

左右のモーターの開始位置を反対にします。具体的には初期位置を180度にすることで、反転させられます。

これで、前足を前に出すときに、後ろ脚は後ろになり、左右も交互に動くので、力強く歩いているような動きになります。

初期位置を設定する

旋回する

先ほどのプログラムとAとCのモーターのスピードを他と揃えただけですが、足がずれているだけでスムーズに旋回できます。

その場で旋回することを超信地旋回と呼ぶこともあります。

AとCのスピードをプラスに戻す

通常のプログラミングのモードに戻す

左下の方に、アクティビティと書かれたボタンがあるので、そこから通常のモード(MINDSTORMS)のブロックに切り替えることができます。

これで、全てのプログラムブロックが使えます。

メッセージやマイブロックを使うことで、いろいろな動きを追加してもごちゃごちゃしないプログラムにできます。

また、音やライトも使えるようになるので、雰囲気をガラッと変えることもできます。

動きをマイブロックにする(関数化する)

ここから少しプログラミングの応用に入ります。

プログラムは見やすくし、再利用をしやすくするために、同じ処理や特定の処理をまとめて、そのまとまりを呼び出して使います。このまとまりは言語によって違いますが、関数やメソッドと呼ばれ、EV3と同様に、inventorでもマイブロックと呼びます。

マイブロックの例

マイブロックを作ると、上記のように動きをまとめた新しいブロックを作ることができます。

実行時は右側のようにそれぞれに作ったマイブロックを使うだけでロボットの動きが作れます

しかし、このままではいつも10回転しか動けないので細かく動きを調整することができません。

マイブロックに引数(パラメーター)を追加する

後からマイブロックを変更する場合は、マイブロックで右クリックして編集します。

入力を追加」で数値を決められるようにして、「ラベルを追加」で説明文を追加します。

入力として与えられる値(回転)は変数として使えるので、今まで回転数を指定していたところに置き換えます。

マイブロックを使う時に回転数を好きなように変更できるようになったので、マイブロックが便利になって、プログラムは自由度が増えました。

応用として、スピードを変えることもできますね。

ロボット作りとプログラミングのまとめ

GELOの作成と移動用のプログラミングを説明しました。

ポイントは足の動きと回転方向ですね。ロボットの基本はモーターをどう動かすかなので、これだけでも基本を学べる良い題材です。このような移動のプログラミングはサンプルではわかりにくくなっているので、ここで説明したように順番に一つ一つ考えていけるようにチャレンジしてくことがロボットを動かすプログラミングで必要なことを学べると思います。

また、マイブロックを使ってこれからの動作をまとめることを学習できれば、プログラミングの初心者の枠は抜け出せると思います。

これ以降の内容

ここまでできていれば、GELOを完成させてもほとんど問題なく動かすことができると思います。足を追加した分、安定させるためにスピードの調整が必要になったり、超音波センサーやカラーセンサーが使えるようになるので、その制御をどうするか、ついでにジャイロセンサーを使って指定した方向に向くなどもまとめて学習できます。

また、今回はメッセージを使っていませんが、初期化のタイミングを同時にできます。

センサーを使うことで新しい問題も発生しますが、これをヒントなしで気づくことができれば、良いセンスを持っていると思います。今までの内容で気づくこともできますし、解決方法も経験済みです。

いろいろな問題を一気に改善する答えを求めているようでは、せっかくのロボットの調整を通じた学びを体験するチャンスを捨てることになるので、授業でも一つ一つ解決して、そしたらまた違う問題に出逢うのでそれを解決して、これを繰り返していきながら、問題を見つけ解決する力や、試行錯誤の価値を感じ取ってもらい、ロボット以外にも活かしてもらえればと思っています。

中編に続きます

中編

inventorというLEGO社のロボットキットにあるサンプルのロボットの一つのGELOを使ったプログラミングについて学ぶ授業の中編です。見た目はよくなりますが、制御の質を求めると途端に難易度が上昇します。前編はこちらにあります。[…]

枚方ロボットプログラミング学習塾では、このようなロボットづくりを通じて、プログラミングやロボット作りのスキルを身につける以外に、考える体験や問題を見抜く練習ができるような授業を実施しています。

単に技術力を鍛えるだけでなく、いろいろな方面に生きる考える力を鍛えることができます。

体験授業は無料で実施しております。

その他ご質問なども何なりとお答えいたしますのでお気軽に相談ください。

連絡先 info@hrktrpg.com