Lesson3:順序だてて指示をしないとロボットは動かない ー順次処理ー
Lesson2では、ロボットを動かすには、まずは「イベント」というきっかけを与えてあげないといけないという事を理解しました。このイベントという概念と、「順次処理」「繰り返し処理」「分岐処理」というものを組み合わせることがプログラミングの基本中の基本です。
ちなみに、子供向けのロボットプログラミングでは、順次処理・繰り返し処理・分岐処理のような基本処理を説明するより、まずは、ロボット動かすためのブロックの作り方を説明し、その中で、上の3つの処理の概念を自然と理解してもらうような構成のものが多い気がしました。
こちらの講座は、大人向けなので、あえて、基本の処理みたいな感じで教科書的に最初に話した方が、まどろっこしくなくて、逆に理解が早いかなと思ったので、こういう感じで書いています。
今回は、順次処理(シーケンス・Sequence)についてのお話です。
■Lesson3の目標
■Lesson3で準備するもの
キーコンセプト:順次処理とは?
CodeyRockyを四角く動かすにはどうしたらよいでしょうか?
四角く走るというブロックがあればいいですが、そいういうブロックはありません。仮にあったとしても、どのくらいの大きさの四角を描くようにするのか?CodeyRockyはその指示をもらわないと、動けません。
プログラミングにおいて、このようなタスク(あるいは問題)を遂行(解決)させるためには、タスクをより小さく分解していくという思考が、非常に重要です。
例えば、CodeyRockyを四角く走らせるというタスクを分解すると・・
前進する→左に曲がる→前進する→左に曲がる→前進する→左に曲がる
このような動作に分解できると思います。
ただ、ロボットは、これだけでもうまく動きません。
上記では、どのくらいの長さ前進するか、CodeyRockyは分かりません。
CodeyRockyに走る長さを指定するためには、どのくらいの時間?かを設定してあげる必要があります。
1秒前進する→1秒左に曲がる→1秒前進する→1秒左に曲がる→1秒前進する→1秒左に曲がる→1秒前進する
さて、これで四角く動いたでしょうか?
恐らく、これでも、真四角には動いてくれなかったんじゃないでしょうか?実際に動かしてみると、左折する時に90度に曲がってほしいのに、それ以上、曲がってしまったりしませんでしたか?つまり、1秒だと90度ぴったりに曲がってくれないのです。
ではどうしたらよいでしょうか?ここで実は2通りの考え方ができます。
・90度左折する為の、時間を細かく調整する
・90度の角度に左折するブロックを利用する
CodeyRockyの場合ですが、実は、○○度左折させるという便利なブロックがあるんです。それで組んでみると、このようになります。
これで、四角く動くことが出来ました!
■コーディングにおけるmBotとCodeyRockyの違い
mBot(Makeblock社のSTEMロボット)で、今回のように四角く走らせるという事を実践された方も多いかと思います。(参考記事:mBotの自立走行)
その場合は、mBotを「●●度左折させる」というブロックがないために、時間で角度を調整してあげる必要がありました。
この違いは、恐らく、CodeyRockyとmBotに内蔵されているセンサーの違いだと思います。CodeyRockyは、角度を測るジャイロセンサーが内蔵されているので、それを使って角度制御しているのでしょう。mBotの基本構成にはジャイロセンサーがありません。
コーディング練習
CodeyRockyを↓の動画のように、ニコニコさせてみましょう!
まとめ:課題を細かく分解し、順序だてて指示をしていく
今回、ロボットプログラミングにおける順次処理と呼ばれるプログラムを理解しました。
1、動作を順序だてて指示を与えないと、ロボットは、人間の思った通りには動かない
2、動作を順序だてて指示するためには、タスク(問題)を細かく分解する思考が重要になる
3、一つの動作をさせるにも、色々な指示の仕方がある(色々なプログラムの組み方がある)
プログラミングを学ぶと、論理的思考が養われるという話を聞かれたことがあるかと思います。ロボットプログラミングで、順次処理をするには、問題を分解し、順序j立てて説明してあげる必要があり、これが、論理的思考力を養うのに、適しているという事なのでしょう。
大人になっても、この能力は、重要ですよね。社会生活の中でも、取引先・同僚・妻・夫が阿吽の呼吸で動いてくれるとは限らないです(笑)