兩種四軸PID講解

參考資料:愛無人機論壇
單級PID:
PID算法屬於一種線性控制器,這種控制器被廣泛應用於四軸上。要控制四軸,顯而易見的是控制它的角度,那麼最簡單,同時也是最容易想到的一種控制策略就是角度單環PID控制器。
相應的僞代碼如下:

以ROLL方向角度控制爲例:
測得ROLL軸向偏差:
偏差=目標期望角度-傳感器實測角度
ERROR_ANGLE.X = EXP_ANGLE.X - Q_ANGLE.Roll;
比例項的計算:
比例項輸出 = 比例係數P * 偏差
Proportion = PID_Motor.P * ERROR_ANGLE.X;
微分項計算: 由於陀螺儀測得的是ROLL軸向旋轉角速率,角速率積分就是角度,那麼角度 微分即角速率,所以微分量剛好是陀螺儀測得的值。
微分輸出=微分系數D*角速率
DifferentialCoefficient = PID_Motor.D * DMP_DATA.GYROx;
整合結果總輸出爲:
ROLL方向總控制量=比例項輸出+微分量輸出
YAW軸輸出:
微分輸出=微分系數D*角速率
YAW方向控制量 = PID_YAW.D * DMP_DATA.GYROz;
ROLL和PITCH軸按照以上公式計算PID輸出,但YAW軸比較特殊,因爲偏航角法線方向剛好和地球重力平行,這個方向的角度無法由加速度計直接測得,需要增加一個電子羅盤來替代加速度計。如果不使用羅盤的話,我們可以單純的通過角速度積分來測得偏航角,缺點是由於積分環節中存在積分漂移,偏航角隨着時間的推移會偏差越來越大,就會出現航向角漂移的問題。我們不使用羅盤就沒有比例項,只僅使用微分環節來控制。

串級PID:
上述角度單環PID控制算法僅僅考慮了飛行器的角度信息,如果想增加飛行器的穩定性(增加阻尼)並提高它的控制品質,我們可以進一步的控制它的角速度,於是角度/角速度-串級PID控制算法應運而生。
在這裏,相信大多數朋友已經初步瞭解了角度單環PID的原理,但是依舊無法理解串級PID究竟有什麼不同。其實很簡單:它就是兩個PID控制算法,只不過把他們串起來了(更精確的說是套起來)。那這麼做有什麼用?答案是,它增強了系統的抗干擾性(也就是增強穩定性),因爲有兩個控制器控制飛行器,它會比單個控制器控制更多的變量,使得飛行器的適應能力更強。
爲了更爲清晰的講解串級PID,這裏依舊畫出串級PID的原理框圖,如圖所示:
相應的僞代碼如下:
單極PID適合線性系統,當輸出量和被控制量呈線性關係時單極PID能獲得較好的效果,但是四軸不是線性系統,現代學者認爲,四軸通常可以簡化爲一個二階阻尼系統。爲什麼四軸不是線性系統呢?首先,輸出的電壓和電機轉速不是呈正比的,其次,螺旋槳轉速和升力是平方倍關係,故單極PID在四軸上很難取得很好效果,能飛,但是不好飛。
串級PID就是兩個PID串在一起,分爲內環和外環PID。在此,我們使用內環PID控制,外環PI控制。
單極PID輸入的是期望角度,反饋的是角度數據,串級PID中外環輸入反饋的也是角度數據,內環輸入反饋的便是角速度數據。通俗來講,內環就是你希望將四軸以多少度每秒的速度運動,然後他給你糾正過來,外環就是根據角度偏差告訴內環你該以多少度一秒運動。這樣,即使外環數據劇烈變化,四軸的效果也不會顯得很僵硬。
在內環中,PID三個數據作用分別是:P(將四軸從偏差角速度糾正回期望角速度)D(抑制系統運動)I(消除角速度控制靜差)
外環PI中,兩個數據的作用是:P(將四軸從偏差角度糾正回期望角度)I(消除角度控制靜差)
整定方法:
1,將內外環PID都歸0,適當增加內環的P,調整P至四軸從正面朝上自然轉動到正面朝下時能感受到阻力,且沒有抖動,有抖動就應減小P,當P減小到無抖動或者輕微抖動時即可。
2,讓內環的D慢慢增加,到你用手能明顯感受到轉動四軸產生排斥外力的阻力即可,D能抑制P產生的振盪,但是D過大也會導致高頻振盪,調整D至系統無振盪且能抑制外界的力即可。
3,給內環一點點I,注意的是I的積分要在油門開啓後纔開始,油門關閉就清0,且必須有積分限幅。I推薦取越小越好,我取的是0.01,I取大了會導致系統振盪。
4,將內環P減半,將外環P調至內環的50-70倍,根據系統產生的高頻振盪降低內環的D,直至高頻振盪消除即可。
5,給外環一點點I,同3.
6,根據實際情況對參數進行優化調整,調整過程中要注意區分各個參數的作用,時刻記住,P是回覆力,大了會低頻振盪,D是抑制力,大了會高頻振盪,I是靜差消除力,越小越好,大了會產生振盪。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章