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