簡単なライントレースをスムースに行う
比例制御の考え方
ラインセンサーは2つ用いることにします。それぞれ、黒いラインを挟んで設置されていることとします。

上図で、左下から動いてきたとします。図の赤点はセンサーの位置とします。直線部分では両センサーとも白を検出しています。カーブは右側に曲がっているので、ラインに入ってしまうと右のセンサーが黒を検出します。黒を検出してしまっては少し動作が遅れてしまい、結局ギザギザな動作になります。ですから、黒のラインに突入する前に動作を始めればスムースな動作が行われます。しかし、モーターのスピードが速い、遅いの二者択一だったら結局は同じことです。
ラインセンサーの値は明るさに応じて数字が返ってきます。センサーの前に白と黒のエッジがあるとすれば、灰色と検出しますし、白が多くて黒が少しならば、黒っぽい白と検出します。ですから、黒っぽさの比率でスピードを決めてあげれば、もう少しスムースな制御が出来そうな気がします。これを比例制御(P制御、proportion)
これを数式にしてみると、次のようになります。
回転量 = 比例ゲイン×偏差×turn値の幅が±100%となる係数
となり、具体的には、以下のような式になります。
左のモーターのスピード = 比例ゲイン×(左のセンサ値 - 左の黒値) / (左の白値 - 左の黒値)+基本最低スピード
右のモーターのスピード = 比例ゲイン×(右のセンサ値 - 右の黒値) / (右の白値 - 右の黒値)+基本最低スピード
となります。
注:白値はセンサーで白を検出する最大値
黒値はセンサーで黒ほ検出する最少値
課題
- 上記の式に応じた比例制御プログラムを作りなさい。
- ロボットが一番早くコースを周回できるようにスピード、比例ゲインを設定しなさい。
- 一番早かったときのラップタイムを記録しなさい。