黒いラインの上を勝手に動くロボットを使ってプログラミングを学べます。 コンピュータでうまく制御(コントロール)して、最速を目指そう!
整理券制ではございませんので、お気軽にお立ち寄りください。
対象:小学生~大人まで
会場:工学部2号館3階 機械系会議室
開催日時:各日9:30~12:30、14:30~17:30
所要時間:30分程度(入退室自由)
※各回終了まで30分を切っている場合や、満席の場合など、お入りいただけない場合もございます。ご了承ください。
さて、どのような仕組みで制御(コントロール)されているのでしょうか? どのような指示をしておけば、 途中で手を加えなくても黒い線の上を進み続けてくれるでしょうか?
黒い線がまっすぐなら、話は単純です。左右の車輪同じ速度で回転させておけば 車はまっすぐ進んでくれるでしょう。 でも、黒い線が途中で曲がっていたら、だんだん黒い線からずれていってしまいますよね。
例えば上図左のような場合、まっすぐ進み続けると、ロボットは黒線からどんどん右にずれてしまいます。 黒い線の上に沿って進んでほしいなら、右の車輪を速く、左の車輪を遅く回転させれば良さそうです。 反対の場合も同じです。まっすぐなままでは左にずれてしまうので、左の車輪を速めに、 右の車輪を遅めに回転させれば良いのです。 黒い線とロボットの位置関係の「ずれ」を感知し、左右のタイヤの回転速度を調節する。これがこのロボットが動く仕組みというわけです
(もちろん、あらかじめコースが分かっているのであれば、このような仕組みを用いなくとも、例えば「3秒後に右へ曲がる」「曲がった後さらに5秒後に左へ曲がる」といった動きの組み合わせによって、ロボットを目的地まで誘導することもできます。 これも立派なロボットコントロールの一つです。)
では、どうやって「ずれ」を感知するのでしょうか? ここでは、ロボットの左右にあるセンサーを使います。このセンサーは真下の明るさを測定することができます。 綺麗に黒い線を進んでいるときにはどちらも「暗い」という判定になるでしょう。しかし、例えば車体が右にずれていたら(これは左に曲がる必要があることを意味します)左側のセンサーは「暗い」、右側のセンサーは「明るい」という判定を返してくれるでしょう。 このようにして黒い線とのズレをチェックしているわけです。(上のゲームでは、センサー下の明るさを数値化して、「右の明るさ」ー「左の明るさ」計算して曲がっています。)
実は、上の制御だけでは、実際に動かしたときにかなりカクカクとした動きになってしまいます。そこで、「もっとカッコよく車体を動かしたい!」と考えた偉大な先人によって編み出されたのが、PID制御というものです。
上のゲームに比べて車がヌルヌル動くのがわかると思います。 PID制御はP制御、I制御、D制御の3つの制御を組み合わせたものですが、今回はその三つについてなんとなーくくらいの説明をしておきます。(興味がある人はスマホで検索してみてください。)
P制御は上で説明したものと同じです。「今現在」どれだけ黒い線からズレているのか、を調べて修正します。
先程の説明で疑問に思った方もいるかもしれませんが、P制御だけだと「ちょっとだけ黒い線からズレている」ようなときには、修正ができません。(両方のセンサーはどちらも「暗い」を示してしまうため) そこで、I制御では「今までどれだけ黒い線からズレていたか」を足し続け、その分だけ修正をかけるという方法をとります。ずっと「少しだけズレている」状況が続いているか、をチェックしているわけです。 上に書いてある「積分」とは、今回はそのような意味を表します。(詳しくは高校で勉強します)
「微分」も高校生の数学で詳しく習うのでここでは細かく説明しませんが、今回は「想定する速度と現在速度との差」と思っておいて下さい。 車体を実際に動かしていくと、突如風が吹いたり、地面がデコボコしていて車体がガタガタと動いてズレてしまったりと、色々な予測との誤差が発生します。(これを「外乱」と言います。) 先程までの制御だと、このような速度の急激な変化には対応できません。そこで、この外乱を補正するために、「ちょっと早いなあ」と思ったらスピードを下げたり、逆に「ちょっと遅いなあ」と思ったらスピードを上げたりするのがD制御です。