古典制御、これまで扱った現代制御理論とも、対象は線形です。線形というのはたとえば
非線形がからむ制御としては、
これらに対する一般的な対処法としては、
非線型なものも、部分的に見れば線形に近似できる。
対象となるシステムに正弦波を入れ、その出力から擬似的に伝達関数化して解析、制御。
2次系(x, dx/dt, d2x/dt2)のシステムで、(x, dx/dt)の挙動をグラフ上で解析。
タンクの液面の変動は、流れ出す水量によって決まりますが、この流れ出す水量が高さと非線型な関係を持ちます(直感的に考えて、深いほうが流量は多くなる)。
タンク断面積:A
パイプ断面積:B
水面高さ:h
流速:v
時間流量:q
時間dtで流れ出す水量は、
以上のように、非線型なシステムでも、関心を持つところを限れば、線形とみなすことができます。
右図のように、時間dtの間に、質量dMの水が流れ出したとします。この時、エネルギー保存の法則を考えると、
が成り立ちます。解くと
となります。
であり、それよって液面が変化します。
これらより、
という方程式が成り立ちます。これがシステムの微分方程式になりますが、非線形要素である平方根が入っています。
まず、平方根部分だけを考えて、
とすると、
なので、
接点:
傾き:
よって、
と、近似できます。
以上より、もとの微分方程式は、
と近似することができます。これは、hに関しての線形な微分方程式なので、これまでの方法で制御することができます。
という特徴を持ちます。
(1)目標角度θr=0、θ≒0の場合(ほぼ上向き)
(2)目標角度θr=π/2、θ≒π/2の場合(ほぼ真横)
つまり、PD制御では狙い通りには制御できません。
※定常状態では無視されるのにD制御を敢えて加えていますが、これは実際に本物を制御するときにDが不可欠なためです。Dがないと落ち着かず、発振状態に理論上はなります(摩擦などで適当に落ち着くこともありますが)。
となるため、
よって、θ=0となります。(目的通りに制御できる)
となるため、
となります。π/2は目標角度なので問題ないとして、mgl/KPが余分についてきて、静止状態で誤差が残ります。
これを定常偏差と呼びます。数式上はKPを大きくするほど減少しますが、実際にはKPを大きくしすぎると制御が不安定化するため、限度があります。
例:θr=π/2→0に急に変化した場合
(1)まず、θr=π/2で誤差0に整定
十分時間が経過した整定時には、
となっています。
(2)目標がθr=0に変化
積分値が変化するよりも十分早く動きが落ち着いたとすると、そのとき、
よって、
となります。
誤差の積分まで完了すると、積分値がゼロとなって最終的にはθ=0となりますが、一時的にずれたところで落ち着くことになります。
重力補償はこのように、腕状のものに非常に効果的に働きます。計算は、ロボットの姿勢のみですむため、それほどやっかいでもありません。もちろん、対象のモデルがわかっていることが前提ですが、多少ずれても致命的なことにはならず、多少Iを加えておくと残った誤差も消すことができます(全部Iでやるのにくらべて、上述の問題はおきにくくなる)。
なお、実際にこのようなメカをつくると、モータに対する負荷が大きくなり、結果的にモータが大きくなって、さらに質量が増えて、、、と悪循環が生じます。そこで、今回のような制御の上での重力補償に加えて、バネを含む機構を加えて多くをキャンセルする目的の、重力補償機構というものも存在します。
たとえば、右図のようなバネマス系の場合、摩擦がなければ、
(1)PID制御
(2)摩擦補償
摩擦補償は、重力補償に比べるとぴたりとはまることはあまりありません。
ただ、重力の場合にはあくまで連続的なのに対して、摩擦は不連続でもあるため、経験上、いやなトラブルが多くありました。
そのときに、おおざっぱに上式のような補償を加えてやると、それだけで改善が見られました。
と単純な式になりますが、動摩擦があるとすると、
というように、運動方向に応じて摩擦力のかかり方はかわります。
また、止まった場合には静止摩擦も考慮する必要があります。
運動方程式は
となります。ここで、fは物体の運動のために作用させる力、Fは摩擦力です。
後ろの条件で、前者は運動中、後者は静止から運動開始、つまり止まっているものを動かそうという静摩擦への対応です。ちなみに、止まっている場合には、上式でf-F≧0、下式でf+F≦0です(摩擦力で走り出すことはない)。
この対象の制御を考えます。
積分項によって、目標に達する前に停止すると、誤差積分値が蓄積するため、いつかは静止摩擦力を振り切って動き出します。
しかし、一般に静止摩擦力よりも動摩擦力が小さいため、一旦動き出すと、目標を通りすぎてからP制御によって停止し、また同じことを繰り返します。そのため、なかなか目標地点に到達しません。
運動状況をもとに、
を操作量とします。つまり、摩擦で目減りする分をあらかじめ加えておきます。
理論的に正確に摩擦をモデル化することは困難ですが、実際にシステムを組んだ状態で測定した値を加えてやるだけでも、動作は劇的に改善する場合があります。
※測定法:PI制御にしておいて動き出す瞬間の操作量を測定する、手動で操作量を調整して動き出すところを調べる、など
このページ、ここで終了。