センサ特性の確認
ロボット教室で多い質問のひとつがPID制御です。
”パラメータの設定が上手くいかない”と言うのが多いのですが、ライントレースのPID制御には先ずハードがP制御(比例制御)に適した作りになっている事が重要です。
ラインセンサの視野がラインの幅と同じ位になる様にセッティングするのが基本です。
ハードがP制御(比例制御)に適した作りになっているかの評価方法は以下を参考にして下さい。
要するにセンサがライン中心を捉えている時に最小値、そこから離れる方向に移動させて、徐々に最大値になる様にセンサセッティングできればOKです。
比例制御
比例制御は目標値との差分に比例してモータパワーの制御を行います。
下図の様にラインセンサの値と目標値の差に対して制御を行います。
制御は ” 制御値 = ( 目標値 - 現在値 )×比例ゲイン " となります。
比例ゲイン = 1 として、横軸が時間軸で目盛りが何回目の制御かを示しています。
この制御間隔を制御周期とします。
1回目は”-80”の差分がありますのでモータは80%のパワーで目標値に近づきます。
2回目は60%、3回目は40%、4回目(現在)は20%のパワーで目標に近づきます。
しかし、モータは10%ではロボットを動かす事ができないことがあります。
モータとモータドライバの組み合わせによって異なりますが20%でも動くか動かないか位の場合もあります。
つまり目標値付近、例えば制御値 = -10 ~+10の範囲はロボットを制御する力が殆どありません。
4回目、5回目はそれ以前の旋回の勢いで制御値に近づき、6回目は行き過ぎていますが、まだ姿勢を戻す力がありません。
この状態では姿勢を戻す力がモータに加わる所まで行き過ぎた後、目標値に戻る動作をし、また行き過ぎて、これを繰り返します。
この状態を振動状態と言います。
比例制御は振動状態にならない様に比例ゲインによって制御量を調整します。
結果として目標値と少しズレた所で安定します。
積分制御
積分と言ってもプログラムでは台形の面積計算((上底+下底)×高さ÷2)を行うだけですので難しく考えないで下さい。
下図の様にラインセンサが示す "台形面積" に対して制御を行います。
上底が前回値と目標値の差、下底が現在値と目標値の差、高さが制御周期です。
制御は " 制御値 +=((前回値と目標値の差+現在値と目標値の差)÷2 )× 制御周期 × 積分ゲイン " となります。
比例制御で行き過ぎた所で安定していても、ズレによって発生する面積が時間と共に大きくなり、目標値に近づくパワーになります。
微分制御
微分と言ってもプログラムでは傾きを求めるだけですので難しく考えないで下さい。
制御は " 制御値 =( ( 現在値 - 目標値 ) - ( 前回値 - 目標値 )) ÷ 制御周期 × 微分ゲイン "となります。
要するに目標値に急速に近づいていると制御値は大きく、ゆっくり近づいていると制御値が小さくなります。
限界感度法
比例制御(P)、積分制御(I)、微分制御(D)のそれぞれのゲインを決める方法として限界感度法を紹介します。
先ず比例制御のプログラムを作って持続振動状態にゲイン調整を行います。
この動画の様に持続振動時の比例ゲインと振動周期を求めます。
この比例ゲインを限界感度と呼び、Kuとし、振動周期をPuとします。
Ti = Pu × 0.5
Td = Pu × 0.125
比例ゲイン = Ku × 0.6
積分ゲイン = 比例ゲイン ÷ Ti
微分ゲイン = 比例ゲイン × Td
この値は、必ずしもベストな値ではありません。
グラフから制御をイメージしてロボットの動きを観測して微修正を加えて下さい。