PID 控制(PID Controller)
定義
PID 控制器(Proportional–Integral–Derivative Controller)根據目標值與實際值的誤差 ,計算要送給致動器的控制量 。它是工業控制與機器人底層控制使用最廣泛的回授控制器。
數學表示
- :比例增益,看「現在差多少」
- :積分增益,看「過去累積差多少」
- :微分增益,看「誤差變化有多快」
使用情境
- 馬達速度與位置控制:機械手臂每個關節的伺服迴路。
- 無人機姿態控制:飛控以多層 PID 穩定 roll、pitch、yaw。
- 移動機器人:沿線行走、跟隨目標速度。
- ros2_control:
pid_controller與許多硬體介面內建 PID。
調參常見做法
- 先只用 P,逐步加大到系統開始振盪。
- 加入 D 抑制過衝與振盪。
- 最後加入少量 I 消除穩態誤差。
- 也可以用 Ziegler–Nichols 等經驗法則取得初始值,再手動微調。
常見限制
PID 只對「目前誤差」反應,無法預先考慮未來的約束(例如速度上限、障礙物)。需要處理多變數與約束的任務,常改用 MPC。
延伸閱讀
常見問題
- PID 三個參數各自負責什麼?
- P 讓控制量跟目前誤差成正比,越大反應越快但容易過衝;I 累積過去的誤差,用來消除穩態誤差,太大會造成振盪與積分飽和;D 對誤差變化率反應,能抑制過衝、增加阻尼,但會放大量測雜訊。
- 什麼是積分飽和(integral windup)?
- 當致動器已經輸出到極限(例如馬達滿載)而誤差仍存在,積分項會持續累積成很大的值,等誤差反轉後要很久才消退,造成嚴重過衝。常見對策是限制積分項上限,或在輸出飽和時停止積分(anti-windup)。
faq_01.log
faq_02.log