そうだったんだ技術者用語 PID制御、フィードフォワード制御、そしてモデルベース制御

Pocket

PID制御の解説

今回は「PID制御」について、走る人間を追いかけるロボットの制御を例にして、やさしく説明します。
加えて、PID制御との比較で、「フィードフォワード制御」と「モデルベース制御」についても説明します。

PID制御の基本的な考え方

PID制御では、目標値に対して生じた誤差を、制御変数を操作することで低減します。

まずは、イメージをつかむための例として今回取りあげた、走る人間を追いかけるロボットの制御における制御の基本項目を挙げます。(例として設定)

  • 制御目標:前を走る人間をターゲットとし、その横にピッタリと並ぶ(ピッタリの定義:人間との位置の差が前後30cm)
  • ロボットで制御する変数:速度
  • 目標値に対して生じた誤差:追いつかない距離、または追い抜き過ぎた距離
  • 制御変数を変えられる時間間隔:3秒

 

P制御、D制御、そしてI制御

P制御

P制御では、制御の結果で目標値に対して生じた誤差に比例して、制御変数を変えます。

比例的(Proportional)に制御し、誤差に対して比例値ベースで制御するということで「P制御」と呼びます。

今回の例で言えば、人間に離される距離に応じて、ロボットの速度を変えます。
例えば、前を走る人間との距離が10m、20m、30m、・・・の場合には、追いかけるロボットの速度も比例して上げていきます。
すなわち、離れていればいるほど、ロボットの速度を上げることになります。

P制御の場合、人間がある程度の速度変化で走っている場合には追いつきますが、突然にスパートをした場合には、一気に差が広がってしまいます。

このような場合に対応するのが「D制御」です。

D制御

D制御では、誤差の変化率に応じて、制御変数を変えます。

変化率は誤差を微分(Differential)して求められますので、誤差に対して微分値ベースで制御するということで「D制御」と呼びます。

今回の例で言えば、人間がスパートすることにより、ロボットとの間の距離が、一気に2倍、3倍、4倍・・・になった場合に、この変化率に応じてロボットの速度を変えます。
 
次に、目標の人間にある程度まで接近しましたが、中々、目標(前後30cm)に入らないケースを考えてみましょう。
人間のペースがほぼ一定で差も小さい場合、P制御による制御変数の変化もほとんどありませんし、速度変化も小さいので、D制御による制御変数の変化もほとんどありません。
差はこれ以上に縮まりません。

ここで活躍するのが「I制御」です。

I制御

I制御では、誤差の累積値(継続する誤差の合計)に応じて、制御変数を変えます。

累積値は誤差を積分(Integral)して求められますので、誤差に対して積分値ベースで制御するということで「I制御」と呼びます。

人間との距離が、50cm~70cmであっても、その状態が長く続く、すなわち三回目制御、四回目制御、5回目制御での結果の差の合計、すなわち累積値が、60+50+70=180cm,  60+50+70+50=230cm, 60+50+70+50+60=290cmというように増えていく場合、これに応じてロボットの制御変数(速度)を変え加速します。

人間にある程度近づいているのに、追いつかずに、そのままの状態が長い間続く場合には、完全に追いつくために、ロボットは加速します。
 

P分、I分、そしてD分

PID制御で決まる最終的な制御変数は、三つの制御の合計となります。
以下のように表され、三つの成分をP分、I分、およびD分と呼びます。

Kp×(誤差値)+Ki×(積分値)+Kd ×(微分値)

Kp、Ki、およびKdは、それぞれP定数、I定数、およびD定数と呼びます。
これらの定数は制御の強さを決めるもので、誤差の差分値、積分値、および微分値に応じて、どの程度強く制御変数を変えるかを決めます

今回の例で言えば、ロボットが人間に離される距離が、10m、20m、30m、・・・だった場合に、速度を1倍、2倍、3倍、・・・と変えていくのか、あるいは2倍、4倍、6倍、・・・と変えていくのかがP定数となります。

同様に、P定数では、離される距離の変化が、5m/秒、10m/秒、15m/秒、・・・だったら、速度をどのように変えていくかを決め、I定数では、設定時間または設定制御回数の合計誤差が、3m、6m、9m、・・・だったら、速度をどのように変えていくかを決めます。
 

制御の応答性と安定性

ロボットが人間に早く追いつくためには、単純にP定数とD定数を大きくする、すなわち、差があれば素早く速度を増やし加速すれば良いと思われます。

ここで制御目標を思い出していただきたいのですが、目標は「人間の横にピッタリと並ぶ(人間との位置の差が前後30cm)」です。

P定数が大きく、追いつく加速が大過ぎると、大きく追い抜いてしまいます。一方、追い越し後に急減速しても、今度は人間から遅れて離される側に戻ってしまう場合があります。

制御において、前者を「オーバシュート」、後者を「アンダーシュート」と呼びます。

PID制御では、制御応答性を最適化して、オーバシュートとアンダーシュートをできるかぎり小さくしなければなりません
そのためには、P定数、I定数、およびD定数を最適値とする作業が必要となります。

今回の例で言えば、ロボットを走らせる実験を何度も繰り返したり、シミュレーションするなどの評価・検討をしなければなりません。

ロボットが人間を大きく追い抜いたり戻ったりを頻繁に繰り返すと、思わぬ不具合が起こります。(振動を低減するPID制御の例では、PID定数が充分最適化されていない場合、ターゲットの振動が抑えられても別の種類の振動が発生します)

制御した結果には、安定性(素早く目標値に収束し、フラフラ変動しないこと)が求められます。
制御をすることにより、逆に不安定変動をもたらすような現象を「制御ハンティング」と呼びます。

PID制御は、結果を見てから制御変数を変えるフィードバック制御ですから、目標値を一度は越え、目標値周辺で行く戻るのオーバシュートを繰り返すのは避けられません。

このため、例えば、行く戻るを三回以内にする(三回以内に目標値に収束する)、あるいは収束する制限時間を決めるなどして、設定するPID定数の評価・最適化を行います。
 

大変化と小変化

これまでの理解を基にすると、PID定数を状況により変えるという発想が浮かぶと思います。

よく用いられるのが、ウィンドウと呼ばれる誤差範囲の設定を行い、その中と外でPID定数を変えるというものです。

今回の例で言えば、目標の人間とピタリと横に並ぶことが容易にできる射程圏を決めて置き、その中と外でPID制御の戦略を変えます。
人間が大きく変化して射程圏内から出た場合には応答性重視の制御を行い、射程圏内の小さい変化では、落ち着いて、安定性重視の制御を行います。
横に並んだ人間におもいっきり加速されて大きく先行された場合には、こちらも大きく加速しますが、ある程度の距離にいる場合には、ジタバタといちいち大きく反応しません。

このようにPID定数を”二段階”に変えるケースに対して、”多段階”に変える、または”完全に可変”とするという考えも発想されると思いますが、その場合には定数の最適化作業も大変になります。

大雑把に言えば、P分は基本制御、D分は細かい制御、そしてI分は時間軸での変化を大きく捉えての制御とも言えます。
応答性をそれほど必要としない制御では、D制御を用いず、PI制御のみで対応する場合もあります。

一方、D制御を行っても応答性が不足する場合には、コントローラでの目標値演算時間などを省くためD分をアナログ回路で直接対応させるという例もあります。(人間で言えば、脳を介さずに動く条件反射です)
このような制御を「セミデジタル制御」と呼び、設定によっては、PIDの三制御を全てデジタル制御するよりも性能を上げることができます。
 

フィードフォワード制御とモデルベース制御

PID制御は、「フィードバック制御」あるいは「閉ループ制御」と呼ばれる制御の一つです。

これに対して、開ループ制御の一つで「フィードフォワード制御」と呼ばれる制御があります。
フィードフォワード制御では、制御結果に応じてではなく、最初からどう制御するのかを決めて制御します。

フィードバック制御では間に合わない場合、制御の結果が制御対象に追加の挙動を与える場合、あるいは別の制御との複合作用が同時進行的に発生するような場合には、フィードフォワード制御が有効です。

今回の例で言えば、ターゲットの人間により、追いつかれそうになると意識的に急加速したり、逆に急減速するような動きが3秒以内にされるには、PID制御では充分に対応できません。
このような挙動や特性があらかじめ分かっている場合には、そのように動くことを想定して制御を行います。
このように予測して制御を行うことを「フィードフォワード制御」と呼びます。

このような予測制御をさらに進め、制御対象の挙動をモデル化して制御するのが「モデルベース制御」です。

今回の例で言えば、逃げる人間の挙動モデルをコントローラの中に持ち、状況変化に対してモデル化された人間がどう動くかをシミュレーション予測し、それに応じて制御を行います。
フィードバック制御の場合には多くのセンサを用いて状態の最新状況を知らなければなりませんが、モデルベースの制御では、センサによる情報を待たずに、ある時間後にはこう変化しているはずという想定を用いて制御変数をコントロールします。
 

CPSと制御コンセプト

IoT(Internet of Things)に含まれる技術として、CPS(Cyber-Physical System)と呼ばれる技術があります。

CPSの意味する技術は、実際の状態を様々なセンサで収集した大量の情報を用いて、サイバー空間、すなわちバーチャルワールドでモデル化やシミュレーションを行い、リアルワールドの制御を行う技術と表されます。

今回のロボットの制御を、CPSを用いてコンセプト設計してみましょう。
ロボットの持つセンサは、人間との距離を計測するセンサ、手足の挙動、発汗状態および表情を検出する画像解析カメラ、人間の発熱状態を見るサーモセンサおよびロボット自身の状態を見る各種センサです。
ロボットはコントローラを搭載し基本的にはインテリジェント化されますが、運動能力に重点を置き、コントローラ部を軽くするため、分担する演算は最低限とします。様々な情報分析や基本的制御戦略の決定はネットワークで繋がれた外部のシステムで行います。

人間Aが、ぶらりと手を下げた後や、首を曲げたとき、次にどのように動くか、これから走る道路や建物、自然環境の中で、どのように動こうとするのかは、外部システムで人間Aの過去の行動データを分析して推定します。風、湿度および温度の変化は極地気象情報を用いて推定します。
走行路と極地気象情報により、ロボットの足の接地摩擦係数が変化することを予測し、制御変数である目標速度の補正を行います。
モデルベース制御も含めて外部システムで決めた制御目標情報をロボットが受信し、フィードフォワード制御とフィードバック制御を組み合わせて実際のロボットの動きを制御します。

制御コンセプトの実現には多くの制約があります。
一方、制御コンセプトを考えることは自由です。制約は将来、克服されるかもしれません。
現在のご自身の開発課題に対して、CPSを適用するとしたら、どのような可能性があるか考えてみませんか?
 
(日本アイアール株式会社 特許調査部 H・N)
 

同じカテゴリの記事はこちら 

そうだったんだ技術者用語設計・開発

Pocket

製造業向けeラーニング_講座リスト

在宅勤務者用WEBセミナーサービス

技術セミナー開催スケジュール

資料ダウンロード

講師紹介

技術の超キホン

そうだったのか技術者用語

機械設計マスター

技術者べからず集

工場運営A to Z

生産技術のツボ

技術者のための法律講座

センサのお話

公式Facebookページ

スぺシャルコンテンツ
Special Contents

導入・活用事例

テキスト/教材の制作・販売