日期:2023-02-22 14:52:43瀏覽量:34932
這里我們來講解減速電機(jī)的轉(zhuǎn)速六個(gè)問題,如何系統(tǒng)性的進(jìn)行PID調(diào)參!
這里我們先聊聊什么是PID~
當(dāng)今的閉環(huán)自動(dòng)控制技術(shù)都是基于反饋的概念以減少不確定性。反饋理論的要素包括三個(gè)部分:測(cè)量、比較和執(zhí)行。測(cè)量關(guān)鍵的是被控變量的實(shí)際值,與期望值相比較,用這個(gè)偏差來糾正系統(tǒng)的響應(yīng),執(zhí)行調(diào)節(jié)控制。在工程實(shí)際中,應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律為比例、積分、微分控制,簡(jiǎn)稱PID控制,又稱PID調(diào)節(jié)。
PID控制器(比例-積分-微分控制器)是一個(gè)在工業(yè)控制應(yīng)用中常見的反饋回路部件,由比例單元P、積分單元I和微分單元D組成。PID控制的基礎(chǔ)是比例控制;積分控制可消除穩(wěn)態(tài)誤差,但可能增加超調(diào);微分控制可加快大慣性系統(tǒng)響應(yīng)速度以及減弱超調(diào)趨勢(shì)。
這個(gè)理論和應(yīng)用的關(guān)鍵是,做出正確的測(cè)量和比較后,如何才能更好地糾正系統(tǒng)。
PID(比例(proportion)、積分(integral)、微分(differential))控制器作為最早實(shí)用化的控制器已有近百年歷史,現(xiàn)在仍然是應(yīng)用最廣泛的工業(yè)控制器。PID控制器簡(jiǎn)單易懂,使用中不需精確的系統(tǒng)模型等先決條件,因而成為應(yīng)用最為廣泛的控制器。
以上內(nèi)容節(jié)選自百度百科!
PID控制有很多,速度環(huán)、位置環(huán)、扭矩環(huán)等等,我們?cè)赗OS系統(tǒng)下用的只是速度環(huán)控制——設(shè)定一個(gè)減速電機(jī)的轉(zhuǎn)速使電機(jī)的真實(shí)轉(zhuǎn)速接近!注意,這里是接近,不是到達(dá)!
PID總是搞得玄而又玄,很多人聽說PID就覺得頭大,其實(shí)PID一點(diǎn)都不困難!
不過確實(shí)是但看這張圖,我也不想去學(xué)習(xí)PID,一看就是很難!
這里關(guān)于PID的內(nèi)容有我之前的一篇博客《PID一點(diǎn)都不難》:
https://www.guyuehome.com/33646!
這里我們來聊一個(gè)問題,如何實(shí)現(xiàn)對(duì)減速電機(jī)的轉(zhuǎn)速控制!
現(xiàn)在你有一個(gè)直流減速編碼電機(jī),需要通過單片機(jī)的IO口輸出PWM來控制電機(jī)的轉(zhuǎn)速,需要你求出一個(gè)PWM和速度值的關(guān)系,實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)速的控制。
這里我們需要通過對(duì)PWM值的調(diào)節(jié)來實(shí)現(xiàn)速度的控制。
通過直流編碼電機(jī)上面的編碼器,我們可以計(jì)算得到電機(jī)的實(shí)時(shí)轉(zhuǎn)速,如果實(shí)時(shí)轉(zhuǎn)速比我們預(yù)設(shè)值小,那么我們就需要來加大PWM來提高轉(zhuǎn)速。
如果實(shí)際轉(zhuǎn)速比我們預(yù)設(shè)值高,那么我們就需要來減小PWM來降低轉(zhuǎn)速。
最終要實(shí)現(xiàn)就是讓實(shí)際轉(zhuǎn)速盡量接近預(yù)設(shè)值,注意是接近,而不是到達(dá),當(dāng)然最好達(dá)到!
Error偏差值= setpoint目標(biāo)值-output反饋值
P比例= Kp比例常數(shù)* Error偏差
I積分= Ki積分常數(shù)* Sum_Error偏差總和
D微分= Kd微分常數(shù)* (Last_Error上次偏差-PrevError上上次偏差)
Output = P比例+ I積分+ D微分
這個(gè),就是我們ROS小車底盤上面,設(shè)定速度值轉(zhuǎn)成PWM值的計(jì)算!
void doPID(SetPointInfo * p) {
long Perror;
long output;
int input;
input = p->Encoder - p->PrevEnc;
Perror = p->TargetTicksPerFrame - input;
output = (Kp * Perror - Kd * (input - p->PrevInput) + p->ITerm) / Ko;
p->PrevEnc = p->Encoder;
output += p->output;
if (output >= MAX_PWM)
output = MAX_PWM;
else if (output <= -MAX_PWM)
output = -MAX_PWM;
else
p->ITerm += Ki * Perror;
p->output = output;
p->PrevInput = input;
}
這個(gè)函數(shù)是ros_arduino_bridge固件diff_controller.h文件里面的PID計(jì)算函數(shù)實(shí)現(xiàn)~
這個(gè)函數(shù)是某機(jī)器人底盤上面關(guān)于PID計(jì)算函數(shù)實(shí)現(xiàn)
調(diào)試中的PID曲線展示,藍(lán)色是預(yù)設(shè)值(期望值),紅色是真實(shí)值(通過編碼器計(jì)算得到的)~
用PID的很多都是直接套用上面的公式,然后修改三個(gè)比例系數(shù)。通過看兩條曲線,分析真實(shí)值和期望值,對(duì)三個(gè)參數(shù)進(jìn)行修改實(shí)現(xiàn)~
如何系統(tǒng)性的調(diào)試PID,其實(shí)也就是那個(gè)口訣!
參數(shù)整定找最佳,從小到大順序查
先是比例后積分,最后再把微分加
曲線振蕩很頻繁,比例度盤要放大
曲線漂浮繞大灣,比例度盤往小扳
曲線偏離回復(fù)慢,積分時(shí)間往下降
曲線波動(dòng)周期長(zhǎng),積分時(shí)間再加長(zhǎng)
曲線振蕩頻率快,先把微分降下來
動(dòng)差大來波動(dòng)慢,微分時(shí)間應(yīng)加長(zhǎng)
理想曲線兩個(gè)波,前高后低4比1
一看二調(diào)多分析,調(diào)節(jié)質(zhì)量不會(huì)低
先是比例后積分,最后再把微分加!這個(gè)是順序~
接下來是對(duì)P、I、D三個(gè)比例系數(shù)如何調(diào)整的口訣~
理想狀態(tài)兩個(gè)波,前高后低4比1!這個(gè),你可以來嘗試調(diào)試一下試試看!(ros_arduino_bridge這一套就可以?。?/span>
《基于深度學(xué)習(xí)的機(jī)器人平面抓取》
課程將帶領(lǐng)大家學(xué)習(xí)基于深度學(xué)習(xí)的機(jī)器人平面抓取算法的概念和分類,并從零開始搭建抓取檢測(cè)數(shù)據(jù)集以及訓(xùn)練經(jīng)典抓取檢測(cè)網(wǎng)絡(luò)GGCNN,并一步一步將GGCNN與pybullet仿真環(huán)境和kinova機(jī)械臂融合。