PID 控制(PID Controller)

定義

PID 控制器(Proportional–Integral–Derivative Controller)根據目標值與實際值的誤差 e(t)e(t),計算要送給致動器的控制量 u(t)u(t)。它是工業控制與機器人底層控制使用最廣泛的回授控制器。

數學表示

u(t)=Kp e(t)+Ki∫0te(τ) dτ+Kd de(t)dtu(t) = K_p\,e(t) + K_i \int_0^t e(\tau)\,d\tau + K_d\,\frac{de(t)}{dt}
  • KpK_p:比例增益,看「現在差多少」
  • KiK_i:積分增益,看「過去累積差多少」
  • KdK_d:微分增益,看「誤差變化有多快」

使用情境

  • 馬達速度與位置控制:機械手臂每個關節的伺服迴路。
  • 無人機姿態控制:飛控以多層 PID 穩定 roll、pitch、yaw。
  • 移動機器人:沿線行走、跟隨目標速度。
  • ros2_control:pid_controller 與許多硬體介面內建 PID。

調參常見做法

  1. 先只用 P,逐步加大到系統開始振盪。
  2. 加入 D 抑制過衝與振盪。
  3. 最後加入少量 I 消除穩態誤差。
  4. 也可以用 Ziegler–Nichols 等經驗法則取得初始值,再手動微調。

常見限制

PID 只對「目前誤差」反應,無法預先考慮未來的約束(例如速度上限、障礙物)。需要處理多變數與約束的任務,常改用 MPC。

延伸閱讀

常見問題

faq_01.log
PID 三個參數各自負責什麼?
P 讓控制量跟目前誤差成正比,越大反應越快但容易過衝;I 累積過去的誤差,用來消除穩態誤差,太大會造成振盪與積分飽和;D 對誤差變化率反應,能抑制過衝、增加阻尼,但會放大量測雜訊。
faq_02.log
什麼是積分飽和(integral windup)?
當致動器已經輸出到極限(例如馬達滿載)而誤差仍存在,積分項會持續累積成很大的值,等誤差反轉後要很久才消退,造成嚴重過衝。常見對策是限制積分項上限,或在輸出飽和時停止積分(anti-windup)。

相關文章

相關術語