圖片16.png (290.14 KB, 下載次數(shù): 61)
下載附件
2020-3-27 10:40 上傳
PID基礎(chǔ)一、PID簡介PID控制是自動控制系統(tǒng)中最常用的一種控制手段,它的誕生主要是為了解決自動控制系統(tǒng)的快、穩(wěn)、準(zhǔn)的問題。 PID控制中的P指的是Proportion(比例),即對輸入的偏差乘以一個系數(shù);I指的是Integral(積分),即對輸入偏差進行積分運算;而D指的是Derivative(微分),即對輸入偏差進行微分運算。通過比例、積分、微分結(jié)合適當(dāng)?shù)姆答伨涂梢孕纬梢惶追(wěn)定的閉環(huán)調(diào)節(jié)系統(tǒng)。如下圖所示為COCOFLY的PID控制器的結(jié)構(gòu)圖。
圖片17.png (29.37 KB, 下載次數(shù): 55)
下載附件
2020-3-27 10:40 上傳
其中期望角度(高度)由遙控器提供,角度環(huán)(高度環(huán))以及角速度環(huán)(高速度環(huán))由PID代碼處理,STM32輸出四路PWM到無人機的電機控制端口,IMU(慣性測量單元)以及飛行姿態(tài)提供反饋值。 二、PID控制原理PID控制的過程,其實是不斷糾正偏差的過程,其中的偏差=當(dāng)前被控對象的反饋值-設(shè)定的期望值。 這里舉一個比較簡單又經(jīng)典的PID控制的例子,比如需要控制一個機器人以PID的方式向前行走110步,然后停下來。此時這個110步則是設(shè)定的期望值。 如果按照P比例控制,也就是控制機器人按照一定的比例走,然后停下。比如比例系數(shù)為108,則走一次就走了108步,再走一次的話就超過110步了,所以就不走了。從這里可得知P比例控制是一種最簡單的控制方式,控制器的輸出與輸入誤差信號成比例關(guān)系。但是僅有比例控制時系統(tǒng)輸出存在穩(wěn)態(tài)誤差。比如上面的只能走到108,或者超過108步,無論怎樣都走不到110。 為了消除穩(wěn)態(tài)誤差,在控制器中必須引入“積分項I”。積分項對誤差的影響取決于時間的積分,隨著時間的增加,積分項會增大。這樣,即便誤差很小,積分項也會隨著時間的增加而加大,它推動控制器的輸出增大,從而使穩(wěn)態(tài)誤差進一步減小,直到等于0。即在“積分項I”控制中,控制器的輸出與輸入誤差信號成正比關(guān)系,且比例+積分(PI)控制器可以使系統(tǒng)在進入穩(wěn)態(tài)后無穩(wěn)態(tài)誤差。 也就是說,如果按照PI(比例、積分)控制的方式,則是控制機器人按照一定的步伐走到112步然后回頭接著走,走到108步位置時,然后又回頭向110步位置走。在110位置處來回晃蕩幾次,最后停在110步的位置。 微分項,主要用于預(yù)判誤差變化的趨勢從而作出對應(yīng)的改變。在自動控制系統(tǒng)在克服誤差的調(diào)節(jié)過程中可能會出現(xiàn)振蕩甚至失穩(wěn),原因是存在較大慣性組件(環(huán)節(jié))或滯后組件,具有抑制誤差的作用,其變化總是落后于誤差的變化。解決的辦法是使抑制誤差作用的變化“超前”,即在誤差接近于零時,抑制誤差的作用就應(yīng)該是零。這就是說,在控制器中僅引入“比例P”項往往是不夠的,比例項的作用僅是放大誤差的幅值,而目前需要增加的是“微分項”,它能預(yù)測誤差變化的趨勢。這樣,具有比例+微分的控制器就能夠提前使抑制誤差的控制作用等于零,甚至為負(fù)值,從而避免了被控量的嚴(yán)重超調(diào)。所以對有較大慣性或滯后的被控對象,比例P+微分D(PD)控制器能改善系統(tǒng)在調(diào)節(jié)過程中的動態(tài)特性。 也就是說,如果按照PD比例、微分控制的方式,則為控制機器人按照一定的步伐走到一百零幾步后,再慢慢地走向110步的位置靠近,如果最后能精確停在110步的位置,就是無靜差控制;如果停在110步附近(如109步或111步位置),就是有靜差控制。由此得知在微分控制D中,控制器的輸出與輸入誤差信號的微分(即誤差的變化率)成正比關(guān)系。 前面說到PID是為了解決自動控制系統(tǒng)中的快、穩(wěn)、準(zhǔn)的問題的。其中那么他們之間的關(guān)系以及對應(yīng)調(diào)節(jié)參數(shù)是什么呢?如下表所示。 特性 | | | | 系統(tǒng)對動態(tài)響應(yīng)的要求,由響應(yīng)時間的長短來衡量。 | P和D可以提高響應(yīng)速度,I降低響應(yīng)速度。 | | 在平衡狀態(tài)下,系統(tǒng)受到某個干擾后,經(jīng)過一段時間其被控量可以達到某一穩(wěn)定狀態(tài)。 | P和I降低系統(tǒng)穩(wěn)定性,D提高系統(tǒng)穩(wěn)定性。 | | 系統(tǒng)處于穩(wěn)態(tài)時,其穩(wěn)態(tài)誤差。 | |
三、PID代碼結(jié)構(gòu)在飛控系統(tǒng)中PID是極為重要的一環(huán),在COCOFLY飛控系統(tǒng)中也多處應(yīng)用到了PID主要集中在AltCtrl.c、Ctrl.c中。如下圖所示為高度環(huán)PID控制源碼。
圖片18.png (56.42 KB, 下載次數(shù): 61)
下載附件
2020-3-27 10:41 上傳
圖片19.png (101.64 KB, 下載次數(shù): 55)
下載附件
2020-3-27 10:42 上傳
如下圖所示為高度速度環(huán)PID控制源碼。
圖片20.png (136.73 KB, 下載次數(shù): 59)
下載附件
2020-3-27 10:43 上傳
如下圖所示為角度環(huán)PID控制源碼。
圖片21.png (252.46 KB, 下載次數(shù): 57)
下載附件
2020-3-27 10:43 上傳
如下圖所示為角速率環(huán)PID控制源碼。 |