本文へ移動
雑学書庫好奇心が集まる場所
日本語

目標に向けて誤差を減らす技術、比例・積分・微分制御(Proportional-Integral-Derivative Control)

ロボットアームがコップをつかもうと手を伸ばすとき、目標位置に近づくのが速すぎると行き過ぎてしまい、慎重すぎるとなかなか進みません。人は目で距離を見ながら自然に速度を落としますが、機械はその瞬間ごとにどれだけ力を加えるかを計算する必要があります。この計算を担う、最も古くから広く使われている方法がPID制御です。

PID制御とは、簡単に言えば「目標と現在の状態との差を見て、その差の大きさと蓄積量、変化する速さを合わせて考え、力を決める方法」です。正式名称は比例・積分・微分制御(Proportional-Integral-Derivative Control)で、それぞれの単語の頭文字を取ってPIDと呼びます。

本資料では、PID制御がどのように生まれたのか、各要素がそれぞれどのような働きをするのか、そしてロボットや身近な機械でどのように使われ、どのような限界があるのかを順に見ていきます。


PID制御の原理と活用

船の操舵手から学んだ制御

PID制御の概念図。目標値rから測定値yを引いて誤差eを求め、P・I・D制御器が各項を足し合わせて制御信号uを生成する。制御対象の測定値が誤差の計算に戻される。比例・積分・微分の意味とゲイン調整、飽和、ノイズによる限界を説明する。
基本的な負のフィードバック構造とPIDの各項。実際の設計では、対象の特性に合わせたゲイン調整、出力の制限、ノイズへの対処が必要となる。
大きな木製の舵輪と真鍮の装飾がある20世紀初頭の蒸気船の操舵室

PID制御の理論は、船をまっすぐに進ませるための試行錯誤から始まりました。1922年、ロシア出身のアメリカの工学者ニコラス・ミノルスキーは、「自動操縦される物体の方向安定性」という論文で、各要素を組み合わせて使う制御方式を数学的に分析しました。

ミノルスキーは、熟練した操舵手が船を操る様子に注目しました。操舵手は、船が航路からどれだけ外れているかだけでなく、船がどれほどの速さで旋回しているかも確認しながら舵を切っていました。彼はこの感覚を数式に置き換え、翌1923年、アメリカ海軍の戦艦ニューメキシコで自動操舵装置を試験し、良好な結果を得ました。

この研究が重要なのは、人の感覚に頼っていた操縦を、誰もが実践できる規則へと変えた点にあります。同じ原理を、船でも機械でも、動くあらゆるものに適用できるようになったのです。

その後、1942年にアメリカのジョン・ジーグラーとナサニエル・ニコルスが現場で使える調整則を発表すると、PID制御は工場の温度や圧力を調整する装置に急速に普及しました。


各要素の働き

明るい実験室の作業台で小型のロボットアームを調整するエンジニア

PID制御では、まずセンサーで現在の状態を測定し、目標値との差である誤差を求めます。そして、この誤差を異なる観点から捉えます。

(1)比例(Proportional)
現在の誤差が大きいほど、大きな力を加えます。目標から遠ければ強く、近ければ弱く動かす、最も基本的な反応です。ただし、これだけでは目標の直前で、少し届かないまま止まってしまうことがよくあります。

(2)積分(Integral)
これまでに蓄積した誤差を足し合わせ、力に上乗せします。蓄積された誤差を反映することで、残る誤差を減らすのに役立ちます。ただし、安定性や出力の制限、ゲイン調整によって結果は変わります。

(3)微分(Derivative)
誤差がどれほどの速さで減ったり増えたりしているかを見ます。適切に調整すれば目標を行き過ぎる現象を減らすのに役立つ場合がありますが、常に防げるわけではありません。

シャワーのお湯の温度を調整する人を思い浮かべると、理解しやすくなります。水が冷たければハンドルを大きく回し(比例)、しばらくたってもぬるければもう少し回し(積分)、お湯が急に熱くなってきたと感じたら早めに手を止めます(微分)。

これらの値にそれぞれ適切な重みを掛けて足し合わせたものが、最終的な出力です。簡単に言えば、比例は現在を、積分は過去を、微分は近い未来を見ているといえます。


ロボットと暮らしの中のPID制御

風が吹く緑の野原の上で安定して浮かぶクアッドコプタードローン

PID制御は構造が単純で計算の負荷も小さいため、今日でも産業現場の制御装置のかなりの割合を占めています。ロボット工学でも、機体を動かすほぼあらゆる部分に組み込まれています。

  • 関節位置制御(Joint Position Control):産業用ロボットアームの各関節のモーターが、決められた角度まで正確に回転して止まるようにします。
  • 姿勢安定化(Attitude Stabilization):ドローンは傾斜センサーの値を見ながらプロペラの回転速度を絶えず修正し、風の中でも水平を保ちます。
  • バランス維持(Balancing):二輪で立つロボットは、機体が傾く方向に車輪を回し、倒れないように踏ん張ります。
  • 速度維持(Cruise Control):自動車の定速走行装置は、坂道でも決められた速度を保つようにエンジン出力を調整します。

家庭のボイラーが室温を一定に保つのも、同じ原理です。私たちが気づかないうちに、数多くの機械がPID制御で誤差を減らしています。


調整の難しさと限界

明るいロボット研究室の床にまっすぐ立つ二輪の自己平衡ロボット

PID制御の性能は、各要素の重みをどれだけうまく調整できるかにかかっています。この作業をチューニング(Tuning)と呼びますが、重みが適切でないと、機械が目標付近で揺れ続けたり、動きが遅すぎたりします。

よく起こる問題
  • オーバーシュート(Overshoot):比例や積分の働きが強すぎると、目標を行き過ぎては戻る動きを繰り返します。
  • 積分ワインドアップ(Integral Windup):モーターが出せる力には限界があるのに誤差が蓄積し続けると、後で大きく行き過ぎる原因になります。
  • ノイズ増幅(Noise Amplification):微分は変化に敏感なため、センサー値の小さな揺らぎまで大きく増幅することがあります。

また、PID制御は誤差が生じてから初めて反応するため、重量が大きく変わるロボットや動きが複雑なロボットでは限界が現れます。そのため、歩行ロボットのような難しい場合には、機体の動きをあらかじめ計算する別の制御方式と併用されることが多くあります。


PID制御は、現在の差、蓄積した差、変化する速さという観点から機械を目標へ導く方法です。100年前に船の操舵手から学んだこの単純な原理は、今日もロボットの関節やドローンの翼の中で、休むことなく働き続けています。

目標との差をありのままに測り、少しずつ修正していくこと。それが正確な動きへの第一歩です。