inventorというLEGO社のロボットキットにあるサンプルのロボットの一つのGELOを使ったプログラミングについて学ぶ授業の後編です。
しっかり動かそうとすると、もっと細かなことを考えることになりそうですが、ここは一旦離れて、自由に動かせるリモコンで操縦できるロボットのプログラミングを紹介します。
導入まだまだ日本では普及しているとは思えないLEGO社のロボットキットinventorですが、枚方ロボットプログラミング学習塾では上のコースでは主力として使っています。spikeはちょっと高いのとパーツが少ないことがネックになりま[…]
inventorというLEGO社のロボットキットにあるサンプルのロボットの一つのGELOを使ったプログラミングについて学ぶ授業の中編です。見た目はよくなりますが、制御の質を求めると途端に難易度が上昇します。前編はこちらにあります。[…]
前編で足の動かし方、中編で足の位置の調整の仕方やジャイロセンサーを使った向きの制御などを説明しました。
この辺をまとめたものをYoutubeでもアップしています。
足をつける前の状態で、色々なプログラムを試しています。流れの都合で、前編と中編の一部を混ぜたような流れになっています。動画では後編で足をつけたプログラムと今回のリモコンを合わせる予定です。
inventorでリモコンを作って遠隔制御する
inventorは画面の中にボタンやスイッチを配置でき、それが操作されたらプログラムを実行する、というプログラムを簡単に作ることができます。
画面を作る
画面右にコントローラーのアイコンがあるので、これをクリックすると、画面配置のウィンドウが出てきます。
下のように出てくるので、好きなボタンを好きな場所に配置できます。色も変えられます。
ボタンをどんなふうに使うかは、その形でおおよその想像ができると思います。
今回は、GELOを前後左右に動かすので、十字ボタンを一つ配置しておきます。
ボタンを設置すると、自動的に専用のブロックが追加されます。
十字ボタンなので、右のブロックですが、スイッチやレバーでは違う制御ができるブロックが出てきます。
プログラムを書き換える
すでにプログラムを作っているので、それを活かして作っていきます。
移動用のマイブロックです。
(前回までの復習)
移動は右側と左側を前進させるか後退させるかで制御しています。
前後退の時と旋回の時で足の位置を調整することで、踏み出す時にバランスを崩したり、足が同じように動くのを回避しています。
それぞれのボタンが押されたら、マイブロックを実行するだけで、それぞれのボタンに対応した動きになります。
ただし、このままでは、動きを切り替えることはできますが、止まることができません。
「押されたら」を離れたらに変えて全種類作ってもいいですが、プログラムの数が増えるのと、他のボタンも増やすと安定しなくなるため、別の方法で実装します。
押しているボタンが「離れるまで待つ」という条件で停止する
動き続けて離れるまで待ってから止める、という制御にすることで、押している間だけ動く動作が作れます。
ボタンの時によく使うテクニックです。
これで、十字ボタンを押している間だけその方向に動くというプログラムが完成します。
プログラムを共有する
inventorはiOSの他、アンドロイドでも同じアプリが公開されています。EV3の時はタブレット版は簡易版みたいな感じで使えないブロックや機能が色々とあったのですが、今のところ、ほぼ同じプログラムができると思います。
ファイルの渡し方は色々とありますが、教室ではgoogleドライブを共有しています。(パソコンをMACにできれば楽なのですが)
プログラム名の横の3つ点が並んでいるところをクリックすると、別名で保存をすると、保存場所を選べるので、googleドライブに保存して、それをタブレット側で開くと同じプログラムが使えるようになります。
環境によって色々と違うと思うので、ご自身の環境に合わせてお調べください。
パソコンを持って操縦するのは逆に難しくなりますが、タブレットや携帯であれば手軽に操縦できると思います。
(この分量のプログラムであれば、最初からタブレットで作成しても問題ないと思います。)
リモコンの授業まとめ
授業自体は簡単です
イベント駆動(何かが起きたらプログラムが動き出す)なので、実はそれほど説明しなくても大丈夫な回になります。分ける意味があったのかどうかは、書いていても、そして実際に授業で使ってみて不安になるくらい、みんなすぐにできてしまう回です。
その土台があってこそ、ですけどね。まずは動きがおかしくなる原因を探っておくこと。そして、それぞれの基本の動きをマイブロックにしておくこと、ですね。
リモコンはあくまでも動かすための道具を追加したに過ぎず、基本の動きがあってこそです。最初からリモコンベースで動かしていると、原因の候補が増えてしまうので、問題の特定が難しくなると思います。
それまでにちゃんと作っておけば(学習していれば)、それをどう有効活用するか、ということで、プログラミングの手法としては結構重要なポイントが詰まっていたりします。ちゃんと再利用できなければ、関数化の意味がないですからね。
scratch風の言語の良さ
あとは、単純にscratch風のプログラミング環境のおかげで、流れをイメージするのはとても簡単になりました。押されたらイベントが始まる、というイベント駆動のプログラミングは従来のシングルタスクでフローも一本化された流れを軸に割り込みを考えたりなどを知っていると、違和感が強くなかなか慣れないという欠点になりますが、一からプログラミングを学ぶ子たちには、特に無理のある流れではないようです。
特にロボットや機械制御において、イベント駆動は相性が良いと思いますので、一から十を説明しなくても、一から十を勝手に学んでくれる「自ら学ぶ姿勢」を習得するには良い題材だと思います。
自分が作ったロボットを使って遊ぶ時間
時間に余裕を持たせて、せっかく作ったロボットなので好きなだけ改造したり動かして遊ぶ時間も大事だと考えています。この経験が後の自分で作る時の引き出しになりますので。
これ以降の改造に関して
リモコンに関しては、動きのアイデアが出しやすいですね。
- スピードを調整できるようにする
- 大きく曲がれるような動きもできるようにする
- 足を別々に制御できるようなマニュアルコントロール
- 障害物を避けるのは自動で動き時々介入できるようにする
- 音を出したり、色やライトディスプレイを変更する
このようなアイデアを蓄積して、もっと色々な制御を学んで、上のコースで自分だけのアイデアで一からロボットを作っていけるような活動ができるといいですね。
むしろここからがロボットプログラミングの本番なところがあります。
全体的な課題
- リモコンを作ってどうする?
- 足の動きをもっと厳密に制御して安定して歩けるように
- 早く動くと足がおかしくなる原因の追求
- 歩く以外の動作ができないかどうか
実際にはもっとあるはずです。この辺は扱う人がいればその分だけ課題が出てくるような感じでもあります。
一セットの授業で全ての疑問が解決したり、学べることを全て詰め込むようなことはしていません。本気で深く考えたら、どこまでもできて、どこまでも時間が奪われてしまうのがロボットプログラミングの良いところでもあり怖いところでもあり、学習においては注意が必要な点です。
年齢に合わない難しいことや、まだ習ってもない計算式や考え方を無理やり使って精密な制御ができても、効率の良い学びにはなりにくいと考えているからです。時にはそういう経験も必要ですけどね。
全てはバランスが大事だと考えています。
また、後でまた同じ題材を扱うことで復習になりますし、その時までに習った内容を組み合わせて何ができるか、ということを考えることが、自分のできる解決策を見つけ出す訓練になります。時間はかかりますし、何度か同じ課題に立ち向かうことになりますが、その反復も成長には必要だと考えています。
うちの教室がコースは少なめにして、でも月4回の授業でたくさん取り組める時間を設定しているのは、この辺の意図もあります。ロボットプログラミングのスキルの習得に加えて、考える力を育むとはこのような活動ができるからですね。
体験授業を実施中です
枚方ロボットプログラミング学習塾では無料で体験授業を実施しております。
興味を持たれた方はお気軽にお申し込みください。事前の問い合わせも可能です。
メール(info@hrktrpg.com)への問合せもお待ちしております。