簡単なライントレースをスムースに行う

比例制御の考え方

ラインセンサーは2つ用いることにします。それぞれ、黒いラインを挟んで設置されていることとします。


上図で、左下から動いてきたとします。図の赤点はセンサーの位置とします。直線部分では両センサーとも白を検出しています。カーブは右側に曲がっているので、ラインに入ってしまうと右のセンサーが黒を検出します。黒を検出してしまっては少し動作が遅れてしまい、結局ギザギザな動作になります。ですから、黒のラインに突入する前に動作を始めればスムースな動作が行われます。しかし、モーターのスピードが速い、遅いの二者択一だったら結局は同じことです。
ラインセンサーの値は明るさに応じて数字が返ってきます。センサーの前に白と黒のエッジがあるとすれば、灰色と検出しますし、白が多くて黒が少しならば、黒っぽい白と検出します。ですから、黒っぽさの比率でスピードを決めてあげれば、もう少しスムースな制御が出来そうな気がします。これを比例制御(P制御、proportion)
これを数式にしてみると、次のようになります。

回転量 = 比例ゲイン×偏差×turn値の幅が±100%となる係数

となり、具体的には、以下のような式になります。

左のモーターのスピード = 比例ゲイン×(左のセンサ値 - 左の黒値) / (左の白値 - 左の黒値)+基本最低スピード
右のモーターのスピード = 比例ゲイン×(右のセンサ値 - 右の黒値) / (右の白値 - 右の黒値)+基本最低スピード

となります。

注:白値はセンサーで白を検出する最大値
  黒値はセンサーで黒ほ検出する最少値

課題
  1. 上記の式に応じた比例制御プログラムを作りなさい。
  2. ロボットが一番早くコースを周回できるようにスピード、比例ゲインを設定しなさい。
  3. 一番早かったときのラップタイムを記録しなさい。