之前做過壹個汽車跟蹤項目,簡單跟蹤擺動較大,效果如下:
PID算法優化後,跟蹤穩定性大大提高,效果如下:
PID算法:即“比例、積分、微分”,是壹種常見的“保持穩定”的控制算法。
常規模擬PID控制系統的原理框圖如下:
因此,e(t)和u(t)之間的關系可以得到:
其中包括:
Kp:比例增益,是自適應參數;
Ki:積分增益,也是壹個適應參數;
Kd:差分增益,也是自適應參數;
e:誤差=設定值(SP)-反饋值(PV);
t:現在的時間。
數學公式可能比較枯燥,通過下面的例子,了解PID算法的應用。
比如用控制器把壹壺水的溫度保持在50℃,低於50℃就讓它加熱,超過50℃就關掉電源。
沒錯,不苛求的情況下也可以。換個角度說,妳就知道問題出在哪裏了。
如果控制對象是汽車呢?如果想把車速保持在50km/h,這種方法就有問題。
想象壹下,如果汽車的巡航控制電腦在某個時間檢測到車速為45km/h,它立刻命令發動機:加速!
結果發動機突然有壹個100%的全油門,車子突然加速到60km/h,然後電腦發出命令:剎車!結果乘客都嘔吐了......
所以在大多數場合,用“通斷值”來控制壹個物理量是比較簡單粗暴的,有時也無法保持穩定,因為單片機和傳感器並不是無限快,采集和控制都需要時間。
而且被控對象是有慣性的,比如拔掉熱水控制器,它的“余熱”,也就是熱慣性,可能會持續升高水溫壹小會兒。
這時候就需要PID控制算法了。
那麽我們再來詳細了解壹下PID控制算法的三個基本參數:Kp比例增益,Ki積分增益,Kd微分增益。
1,Kp比例增益
Kp比例控制考慮了當前誤差,誤差值乘以壹個正常數Kp(代表比例)。要控制的量,比如水溫,有它的當前值,也有我們預期的目標值。
當兩者相差不大時,讓加熱器“輕輕”加熱。
如果因為某種原因溫度下降很多,讓加熱器“稍微”加熱壹下。
如果當前溫度遠低於目標溫度,讓加熱器“滿功率運行”,讓水溫盡快達到目標。
這就是p的作用,相比開關控制方式,是否“溫柔”?
實際寫程序時,讓偏差(目標減去電流)和調節裝置的“調節強度”建立線性函數關系,就可以實現最基本的“比例”控制了~
Kp越大,調控越激進,Kp越小,調控越保守。
如果妳在做平衡車,用P的功能,妳會發現平衡車在平衡角附近來回“狂搖”,比較難穩定。
2.Kd差分增益
Kd微分控制考慮未來誤差,計算誤差的壹階導數,並乘以正常數Kd。
有了P的作用,我們不難發現,只有P並不能讓天平站起來,水溫也控制得搖搖欲墜,仿佛整個系統都不是特別穩定,總是在“晃動”。
想象壹個彈簧:現在在平衡位置,拉壹下然後松手,那麽它就會振蕩,因為阻力很小,可能會振蕩很久,然後再停在平衡位置。
想象壹下,如果上圖所示的系統浸沒在水中,妳也可以拉它:這種情況下,停在平衡位置的時間要短得多。
這時就需要壹個控制函數,使被控物理量的“變化速度”趨於零,類似於“阻尼”函數。
因為,當接近目標時,P的控制作用相對較小,越接近目標,P的作用越平緩,有很多內部或外部因素使控制變量在小範圍內擺動。
D的作用是使物理量的速度趨於零。每當這個量有速度時,D就會反方向施力,試圖阻止這種變化。
Kd參數越大,反方向的制動力越強。如果是平衡車,加上P和D控制功能,參數調得合適的話應該能站得住。
3.Ki積分增益
Ki積分控制考慮過去的誤差,並將壹段時間內的誤差值之和乘以壹個正常數Ki。
以熱水為例。如果有人把加熱裝置拿到很冷的地方,開始燒水,需要加熱到50℃。
在P的作用下,水溫慢慢上升,直到45℃,他發現了壹件壞事:天氣太冷,水的散熱速率等於P控制的升溫速率。
我能怎麽做呢?
P哥是這樣想的:我離目標很近了,只需要輕輕加熱。
d哥是這麽認為的:加熱和散熱是對等的,溫度不波動。好像不需要調整什麽。
結果水溫永遠停留在45℃,永遠達不到50℃。
根據常識,我們知道供熱功率應該進壹步增加,但是如何計算增加量呢?
這位資深科學家想出的方法真是別出心裁。設置壹個整數。只要偏差存在,偏差就會不斷地被整合(積累)並體現在調整力度上。
這樣,即使45℃和50℃相差不太大,隨著時間的推移,只要沒有達到目標溫度,這個積分就會不斷增加,系統就會逐漸意識到沒有達到目標溫度,這時就該加大功率了!
達到目標溫度後,假設溫度不波動,積分值不會再變化。此時,加熱功率仍然等於冷卻功率,但溫度穩定在50℃。
Ki值越大,積分時間倍增系數越大,積分效果越明顯。因此,I的作用是減少靜態條件下的誤差,使被控物理量盡可能接近目標值。
我用的時候還有壹個問題:需要設置積分限制,防止積分過大,加熱初期難以控制。
PID算法的參數調試是指通過調整控制參數(比例增益、積分增益/時間、微分增益/時間),使系統達到最佳的控制效果。
穩定(無發散振動)是調試的首要條件。此外,不同的系統有不同的行為,不同的應用程序有不同的需求,這些需求可能會相互沖突。
PID算法只有三個參數,原理上很容易解釋,但是調試PID算法的參數比較困難,因為它要滿足壹些特殊的準則,PID控制有其局限性。
1,穩定性
如果PID算法控制器的參數選擇不當,其控制器輸出可能不穩定,即輸出可能發散,過程中可能振蕩也可能不振蕩,其輸出僅受飽和或機械損傷的限制。不穩定壹般是由於增益過大造成的,特別是對於延遲時間較長的系統。
2、最佳性能
PID控制器的最佳性能可能與過程變化或設定點變化有關,並且也將隨著應用而變化。
兩個基本要求是調節(幹擾抑制,保持系統在設定值)和命令跟隨(當設定值改變時,控制器輸出跟隨設定值的響應速度)。關於命令跟隨的壹些標準包括上升時間和設置時間。有些應用出於安全考慮可能不允許輸出超過設定值,有些應用要求在達到設定值的過程中能量可以最小化。
3.各種調試方法的比較
4.調節PID參數對系統的影響