読者対象
- プログラミングについて学びたい人・教えたい人
- プログラムが動く楽しさを知りたい人
- プログラムでロボットを動かしたい人
目指すプログラムの概要
前回の記事でも説明しましたが、改めて簡単に課題を説明します。
商品を購入した時の箱に印刷されているルートを使って、図1のようにスタート地点から赤線内をゴールまで走行するプログラムを作成します。
実際に走行するルートは、赤線内であればよく、任意のタイミングでバックしてもよいこととします。
そして、今回のプログラミングでは、その課題を達成するために「赤外線センサーを人が持ち、ロボットがセンサーの後を追うようにし、ゴールまで導く」ことができるようにします。

曲がる仕組み
プログラムで用意されている「ステアリング」ブロックを使うと簡単に曲がることができますが、ここで「曲がる」仕組みについて理解します。
「曲がる」というと非常に簡単な操作に思えますが、実際には思ったよりも複雑です。例えば、自転車などの二輪車であれば、図2のようにハンドルを傾けると曲がります。

しかし、今回のロボットは、4輪なので自動車と同じです。しかし、ハンドルのようにタイヤが傾くような仕組みはありません。そのため、左右の回転数を変えることで曲がります。
例えば、右に曲がりたい場合には、左のタイヤが右のタイヤよりもより多く回転することで、進む距離が変わります。
そのため、図3(左)のように左のタイヤの方がより前に進むことになります。しかし、左右のタイヤの位置はロボットに対して位置が変わらないので結果的に図3(右)のように曲がります。

例えば、自動車のようにタイヤの向きを変えるハンドルがあっても、実は、このように左右のタイヤの回転数を変える機能も持っています。
これは、2つのタイヤがある場合に、図4のように左右のタイヤが進む距離が違うためで、スムーズに曲がるには左右の回転数を変えない必要がある訳です。

曲がる動作とプログラミングを確認する
続いて、「ステアリング」ブロックを使って、曲がる動作を確認します。今回のロボットは、モーターが逆に回転することで前に進む構造になってしまっています。それは、モーターのつける向きに原因があります。
前回も、後ろに進む処理で前進する仕組みになっていました。こちらはまっすぐでしたので比較的容易でしたが、今回の曲がる動作についてはイメージがしづらい方もいると思います。筆者も直感的にはイメージできないので、ここで動作を確認します。
その際にプログラムとロボットの動きを図5のように合わせて見るとわかりやすくなります。

Note:モーターの向きを変えるブロックについて
モーターはつける向きによって、今回のように動作のルールが難解になります。そのために拡張ブロックの中に、モーター逆回転ブロックがあります。
しかしこのブロックは、「ステアリング」や「タンク」などの2つのモーターをセットで使うブロックには残念ながら使えないので注意しましょう。