PID算法簡介
P指的是比例(Proportion),I指的是積分(Integral),D指的是微分(Differential)。在電機調(diào)速系統(tǒng)中,輸入信號為正,要求電機正轉(zhuǎn)時,反饋信號也為正(PID算法時,誤差=輸入-反饋),同時電機轉(zhuǎn)速越高,反饋信號越大。
要想搞懂PID算法的原理,首先必須先明白P,I,D各自的含義及控制規(guī)律:
01?
比例P:
比例項部分其實就是對預(yù)設(shè)值和反饋值差值的放大倍數(shù)。舉個例子,假如原來電機兩端的電壓為U0,比例P為0.2,輸入值是800,而反饋值是1000,那么輸出到電機兩端的電壓應(yīng)變?yōu)閁0+0.2*(800-1000)。從而達到了調(diào)節(jié)速度的目的。顯然比例P越大時,電機轉(zhuǎn)速回歸到輸入值的速度將更快,及調(diào)節(jié)靈敏度就越高。從而,加大P值,可以減少從非穩(wěn)態(tài)到穩(wěn)態(tài)的時間。但是同時也可能造成電機轉(zhuǎn)速在預(yù)設(shè)值附近振蕩的情形,所以又引入積分I解決此問題。
02?
積分I:
積分項部分其實就是對預(yù)設(shè)值和反饋值之間的差值在時間上進行累加。當差值不是很大時,為了不引起振蕩。可以先讓電機按原轉(zhuǎn)速繼續(xù)運行。當時要將這個差值用積分項累加。當這個和累加到一定值時,再一次性進行處理。從而避免了振蕩現(xiàn)象的發(fā)生??梢姡e分項的調(diào)節(jié)存在明顯的滯后。而且I值越大,滯后效果越明顯。
03?
微分D:
微分項部分其實就是求電機轉(zhuǎn)速的變化率。也就是前后兩次差值的差而已。也就是說,微分項是根據(jù)差值變化的速率,提前給出一個相應(yīng)的調(diào)節(jié)動作。可見微分項的調(diào)節(jié)是超前的。并且D值越大,超前作用越明顯??梢栽谝欢ǔ潭壬暇彌_振蕩。比例項的作用僅是放大誤差的幅值,而目前需要增加的是“微分項”,它能預(yù)測誤差變化的趨勢,這樣,具有比例+微分的控制器,就能夠提前使抑制誤差的控制作用等于零,甚至為負值,從而避免了被控量的嚴重超調(diào)。

偏差信號進行比例、積分和微分運算變換后形成一種控制規(guī)律?!袄闷?,糾正偏差”。
No.2
參數(shù)調(diào)整一般規(guī)則
由各個參數(shù)的控制規(guī)律可知,比例P使反應(yīng)變快,微分D使反應(yīng)提前,積分I使反應(yīng)滯后。在一定范圍內(nèi),P,D值越大,調(diào)節(jié)的效果越好。各個參數(shù)的調(diào)節(jié)原則如下:
PID調(diào)試一般原則
a.在輸出不振蕩時,增大比例增益P。
b.在輸出不振蕩時,減小積分時間常數(shù)Ti。
c.輸出不振蕩時,增大微分時間常數(shù)Td。
No.3
參數(shù)調(diào)整一般步驟
由于自動控制系統(tǒng)被控對象的千差萬別,PID的參數(shù)也必須隨之變化,以滿足系統(tǒng)的性能要求。這就給使用者帶來相當?shù)穆闊?,特別是對初學(xué)者。下面簡單介紹一下調(diào)試PID參數(shù)的一般步驟:
01
確定比例增益
P確定比例增益P時,首先去掉PID的積分項和微分項,一般是令Ti=0、Td=0,PID為純比例調(diào)節(jié)。輸入設(shè)定為系統(tǒng)允許的最大值的60%~70%,由0逐漸加大比例增益P,直至系統(tǒng)出現(xiàn)振蕩;再反過來,從此時的比例增益P逐漸減小,直至系統(tǒng)振蕩消失,記錄此時的比例增益P,設(shè)定PID的比例增益P為當前值的60%~70%。比例增益P調(diào)試完成。
02
確定積分時間常數(shù)Ti
比例增益P確定后,設(shè)定一個較大的積分時間常數(shù)Ti的初值,然后逐漸減小Ti,直至系統(tǒng)出現(xiàn)振蕩,之后在反過來,逐漸加大Ti,直至系統(tǒng)振蕩消失。記錄此時的Ti,設(shè)定PID的積分時間常數(shù)Ti為當前值的150%~180%。積分時間常數(shù)Ti調(diào)試完成。
03
確定微分時間常數(shù)Td
微分時間常數(shù)Td一般不用設(shè)定,為0即可。若要設(shè)定,與確定P和Ti的方法相同,取不振蕩時的30%。
04
聯(lián)調(diào)
系統(tǒng)空載、帶載聯(lián)調(diào),再對PID參數(shù)進行微調(diào),直至滿足要求。

No.4
總結(jié)
參數(shù)整定尋最佳,從大到小順次查。先是比例后積分,最后再把微分加。曲線振蕩很頻繁,比例度盤要放大。曲線漂浮繞大彎,比例度盤往小扳。曲線偏離回復(fù)慢,積分時間往下降。曲線波動周期長,積分時間再加長。理想曲線兩個波,調(diào)節(jié)過程高質(zhì)量。
實際應(yīng)用,進行PID參數(shù)調(diào)節(jié)時,一般使用試湊法,PID參數(shù)整定口訣如下:
參數(shù)整定找最佳,從小到大順序查,
先是比例后積分,最后再把微分加,
曲線振蕩很頻繁,比例度盤要放大,
曲線漂浮繞大灣,比例度盤往小扳,
曲線偏離回復(fù)慢,積分時間往下降,
曲線波動周期長,積分時間再加長,
曲線振蕩頻率快,先把微分降下來,
動差大來波動慢,微分時間應(yīng)加長,
理想曲線兩個波,前高后低4比1,
一看二調(diào)多分析,調(diào)節(jié)質(zhì)量不會低。
*************************************** Pixhawk *****************************************
轉(zhuǎn)向:https://ardupilot.org/rover/docs/rover-tuning-steering-rate.html
速度和油門:https://ardupilot.org/rover/docs/rover-tuning-throttle-and-speed.html
油門控制器
一般來說,最好先調(diào)整這個控制器,然后再轉(zhuǎn)向轉(zhuǎn)向控制器。
P增益是最重要的,應(yīng)首先進行調(diào)整。如果車輛速度顛簸且不穩(wěn)定,則應(yīng)減小此參數(shù)。如果車輛速度較慢,則應(yīng)增加此參數(shù)。
I增益可糾正長期誤差。如果車輛從未達到所需速度,則應(yīng)增加此參數(shù)。如果車輛的速度在太快和太慢之間緩慢振蕩,則應(yīng)減小此參數(shù)。I 通常應(yīng)該低于 P。
D 增益旨在通過對抗速度的短期變化來穩(wěn)定輸出。這可以保留為零。
FF增益應(yīng)保留為零,因為CRUISE_THROTTLE和CRUISE_SPEED用于計算基本油門輸出,這消除了對前饋的需要。
轉(zhuǎn)彎率控制器嘗試使用 PID 控制器實現(xiàn)所需的轉(zhuǎn)彎率(由飛行員或自動駕駛儀設(shè)置)。
該控制器的 FF、P、I 和 D 增益分別保存在ATC_STR_RAT_FF、ATC_STR_RAT_P、ATC_STR_RAT_I和ATC_STR_RAT_D參數(shù)中。
轉(zhuǎn)彎速率:
首先調(diào)整FF 增益。該增益將所需的轉(zhuǎn)彎速率直接轉(zhuǎn)換為轉(zhuǎn)向伺服或電機輸出。如果車輛的轉(zhuǎn)彎速率響應(yīng)遲緩,則應(yīng)增加此參數(shù)。如果車輛不斷超過其所需的轉(zhuǎn)彎率,則應(yīng)減小此參數(shù)。
P增益校正短期誤差。如果 FF 值設(shè)置得當,它通??梢员A魹榱慊蛄硪粋€非常低的值。如果設(shè)置得太高,旋轉(zhuǎn)速率可能會振蕩。此P 增益應(yīng)始終低于FF 增益。
I增益可糾正長期誤差。如果車輛從未達到所需的轉(zhuǎn)彎速率,則應(yīng)增加此參數(shù)。如果車輛的轉(zhuǎn)彎速率緩慢振蕩,則應(yīng)減小此參數(shù)。這個I 增益應(yīng)該始終低于FF 增益。
D增益旨在通過對抗轉(zhuǎn)彎率的短期變化來穩(wěn)定輸出。該增益通常可以保留為零。
幾處特別需要注意的參數(shù):
