P制御・I制御・D制御とは

制御とは?

「制御」とは英語で「コントロール」です。つまり、どのように機械をコントロールするのかということを考えることが「制御」というものです。

P制御・I制御・D制御とは?

プレコース内のyoutube動画でも紹介がありましたが、こちらの概念はサマーコースでも使用する大切な考え方になるので、こちらで日本語で再度紹介します。

「P・I・D」のアルファベットの後に「制御」とついていますが、これらは別々のコントロール方法になります。

具体例

ここから制御について考えるにあたって、具体的な状況を設定したいと思います。より具体的にするため自動運転の開発をしたいとしましょう。

車が常に 道の真ん中を走行できるような制御を作りたいんだけど、どうすれば常に道の真ん中を走ってくれるのかがわからない。。。。

上記のようなことを世界中の自動車の技術者たちは、どうやって車(ロボット)に道をちゃんと走ってもらおう。。。。と考えているはずです。

その答えの内の一つがP制御・I制御・D制御です。
(D制御・P制御・I制御の順番でご紹介します!)

D制御とは

まず、D制御からお話をします。Dとは「 Differential 」の頭文字です。「Differential」とは「微分」、つまり、「違い」のみを認識して制御する方法がD制御です。

具体的には、「技術者が考える理想」と「ロボットが実際に動く量」のを常に認識し、その差があるかないかに応じてロボットが反応を変えます。

まっすぐ走行することはなく常に左右に動いてしまう欠点がありますが、その分CPUにかかる負荷は少なく、比較的簡単に導入することが出来ます。

P制御とは

P制御のPとは、「 Proportional 」の頭文字をとっているものです。「 Proportional」とは「比例」という意味になります。

具体的には、「技術者が考える理想」と「ロボットが実際に動く量」の差の量を常に認識し、その差があるかないかに応じてロボットが反応を変えます。

理論上は永遠に近づくだけで、道路の中心に行くことはありません。

しかし、なだらかに近づいていくので自動車の乗り心地としては良いです。

I制御とは

I制御のIとは、「 Integral 」の頭文字で、 「Integral 」は「積分」という意味です。つまりこちらは積分を利用した制御になります。

しかし、積分のみの制御では効率が悪く一般的にPI制御という形で利用されているものが多いです。P制御の真ん中に行かないという問題を解決するモデルになります。

具体的には、「技術者が考える理想」と「ロボットが実際に動く量」の今までの差の量を常に認識し、その差があるかないかに応じてロボットが反応を変えます。

先ほどと同様、なだらかに中心に近づいていきます。最終的に真ん中にたどり着くことが出来ることが違いです。

PID制御とは

PID制御とは、上記すべての制御を同時に実行した制御のことです。

しかし、 このP・I・D制御 をそのまま3つ同時に実行すると問題が起こります。例えば、道路の左側を走行している途中だとして、真ん中に行きたいとしましょう。

このシチュエーションで単純に3つを実行した場合 「P制御で右にいきたいと思う量」 「I制御で右にいきたいと思う量」 「D制御で右にいきたいと思う量」 を足し算してしまうと、右に行きすぎてしまうことが想像できます。

そこで、 「P制御分の右移動×0.3」 「I制御分の右移動×0.3」 「D制御分の右移動×0.3」と として全体的なバランスをとります。すると、右に行きすぎることはなくなります。

そして、「0.3」などをかけることでそれぞれの制御によって進む値を小さくすることで、下記画像のような走行軌跡をとれるようになります。

上記より、PID制御だと、3つの制御方法を同時に組み合わせるので、3つの制御方法の理解と途中調整が必要になります。

しかし、理解と調整さえ終われば、道路真ん中を走行するまでの距離が他と比べて短いことが分かります。

これがPID制御です。P制御・I制御・D制御3つを組み合わせると、短い距離で理想的な挙動をマシンがしてくれることが伝わったかと思います。

また、ここではわかりやすさを重視したので 「P制御分の右移動×0.3」「I制御分の右移動×0.3」「D制御分の右移動×0.3」としましたが、ここの「0.3」という数値は制御したいマシンによって変わってきます。

ちなみに制御によるマシン挙動の違いは、特にD制御とPID制御での差が大きいので、 下記動画も紹介しておきます。