ロボットなどを思い通りに動かすために、フィードフォワード制御とフィードバック制御があります。
この二つの制御方法は、
- 制御対象(ロボットなど)を、
- 目標の指令値(位置とか)まで、
- 制御する(移動とかさせる)ために、
- 必要な操作量(モータへの電流など)を送ること、
を目的としています。
今回の記事では、このフィードフォワード制御とフィードバック制御について、ブロック線図と一般例を使って紹介していきたいと思います。
フィードフォワード制御とは
フィードフォワード制御は、開ループ制御(オープンループ制御)とも呼ばれています。
フィードフォワード制御では、入力(操作量\(u\))に対する制御対象の応答\(y\)を予測します。
その予測をもとに、目標の指令値\(r\)から必要な操作量を計算して、制御対象に送ります。
フィードフォワード制御は、制御量を測定するためのセンサが不要です。
そのため、システムが簡単になり、入力に対する応答も早くなります。
しかし、指令値通りにロボットを制御するためには、制御対象の応答を正確に予測しなければなりません。
また、外乱\(d\)により制御量にズレが生じた際の修正は出来ないという問題はあります。
フィードバック制御とは
フィードバック制御は、閉ループ制御(クローズドループ制御)とも呼ばれます。
フィードバック制御では、センサなどで制御量\(y\)(出力)を検出します。
そして、検出部で変換した値をフィードバック値\(\hat{y}\)として用いて制御を行います。
フィードバック制御は、制御量を検出するためにセンサなどが必要となるため、フィードフォワード制御と比較してシステムが複雑になります。
また、システムの応答に遅れが生じます。
しかし、この欠点を上回る利点もあります。
目標の指令値\(r\)とフィードバック値の差(偏差\(e\))を用いて制御をすることで、外乱\(d\)が入った場合も操作量\(u\)を調整することで制御対象を目標の指令値に向けて制御を行うことが出来ます。
また、制御対象の応答の予測に多少の誤差があったとしても、指令値通りにロボットを制御することが可能です。
フィードフォワード制御とフィードバック制御をイメージしてみる
あなたは前方に5m進みたいとします。
この場合、
- 制御対象はあなた(肉体)で、
- 目標の指定値は前方に5m進むとなり、
- 制御量は移動した距離
になります。
まず、フィードフォワード制御を行います。
フィードフォワード制御の場合、あなたは目を閉じて前方に移動します。
今まで培ってきた感覚という制御器をもちいて、指令値の5mにむけて移動します。
(筋肉に脳から電気信号という操作量を送ります。)
正確に移動できましたか?
あなたの感覚が素晴らしい場合(制御器が完璧な場合)は、ちょうど5m進んでるはずです
おそらく5m(指令値)に対して移動距離(制御量)に誤差が発生したと思います。
次にフィードバック制御を行います。
フィードバック制御の場合、あなたは目を開けて前方に移動します。
あなたの目がセンサとなります。
目(センサ)で検出した値と目標の指令値の差となる偏差をもとに前進します。
おそらく前方にちょうど5m移動できたと思います。
これが、フィードバック制御です。
まとめ
フィードフォワード制御とフィードバック制御のそれぞれに利点と欠点があります。
この二つを上手く使い分けることが、ロボットの制御には必要になります。