常用四軸的兩種PID算法
這里主要講解的PID算法屬于一種線性控制器,這種控制器被廣泛應用于四軸上。要控制四軸,顯而易見的是控制它的角度,那么最簡單,同時也是最容易想到的一種控制策略就是角度單環PID控制器,系統框圖如圖所示:
上述角度單環PID控制算法僅僅考慮了飛行器的角度信息,如果想增加飛行器的穩定性(增加阻尼)并提高它的控制品質,我們可以進一步的控制它的角速度,于是角度/角速度-串級PID控制算法應運而生。在這里,相信大多數朋友已經初步了解了角度單環PID的原理,但是依舊無法理解串級PID究竟有什么不同。其實很簡單:它就是兩個PID控制算法,只不過把他們串起來了(更精確的說是套起來)。那這么做有什么用?答案是,它增強了系統的抗干擾性(也就是增強穩定性),因為有兩個控制器控制飛行器,它會比單個控制器控制更多的變量,使得飛行器的適應能力更強。為了更為清晰的講解串級PID,這里筆者依舊畫出串級PID的原理框圖,如圖所示:
同樣,為了幫助一些朋友編程實現,給出串級PID偽代碼:
四軸專用PID參數整定方法及原理
使用PID的四軸會在飛行中震蕩,告訴大家為什么光使用PID并不能實現對四軸姿態‘足夠好’的控制。文章中還是涉及了不少自控原理和其他控制相關的姿勢,沒有一點底子的話確實會看著很困惑(不然那么些人花好幾年學控制還有什么意義?)。如果你只想知道結論的話,直接看文章開頭和結尾部分就好了
PID控制器是什么?
我想每一個看到這里的人都對PID的概念有了足夠的了解,我一遍遍嘰歪比例積分微分沒有任何意義。這里我只想說一些大家提的較少的‘重點’內容:
PID控制器是一個線性的控制器!從這里開始我們進入正題了,雖然若干年來PID已然成為了世界上使用最普遍的控制方法,也逐漸被人們神話到幾乎可以控制一切………………但是,從理論上來說,只有‘線性的,符合要求的’被控系統才能在PID控制下實現良好的控制效果。
所以說,我們首先第一步,要保證我們的被控系統在被PID控制的區域‘表現為’一個線性系統才行。于是這里有人會說了,現實中沒有哪個系統是線性的,自然,我們的四軸飛行器在大范圍內是一個非常典型的非線性系統(隨便按照理論推推模型就會出現漫天的三角函數),也就是說,我們‘僅’使用標準PID控制的話是不可能讓四軸從各個姿態回到目標狀態的過程都能保持穩定。于是這里出現我們使用PID時要注意的第一個問題:
我們的PID控制只能工作在四軸角度偏移不大的一個近似線性的區域內。這個區域沒有定論,不過你要是飛機偏了90°的話想用PID調回到水平狀態指定是非常危險的事情。PID的模型相關問題非常重要也比較費口舌,我們等下認真討論,現在要先說另一個非常重要的非線性問題:
要保證我的控制通道與電機的輸出力矩是線性的。如果我們的控制通道與電機輸出力矩都不是線性的的話,我們的PID控制就很難起作用了,節省時間不舉例子了,不明白的自行補腦吧,于是我這里要提醒大家的事情是:我們的航模電調調整的都是力矩而不是轉速(雖然它叫做電子調速器),這是我們的福音,因為大家知道,螺旋槳產生的升力與轉速的平方成正比,而角加速度與力矩成正比,正是因為我們的電調讓電機產生的升力與我們輸出的油門量成正比了我們才能使用PID控制器對四軸的姿態進行控制。這里可以看下我的四軸使用的四合一電調輸出的升力與油門的對應曲線:
圖中橫坐標是輸出油門的百分比,縱坐標是四個電機產生的總拉力(單位暫定kg),可以看到,具有非常好的線性關系,所以我們可以使用PID對大四軸實現比較好的控制。于是我們首先發現了第一個問題,有人反映小四軸不好調參數,因為小四軸沒有專用的電子調速器,所以油門與輸出力矩并不是嚴格線性的(這里我沒有實踐過,請大家隨意批評指正),這時使用PID控制性能就會明顯下降,當你的電機輸出力矩與你的控制信號不是線性關系的時候,請先使用軟件補償的方法對油門做一下分段的線性仿射變化,再設計PID控制器。
不過對于大四軸而言貌似就不用那么麻煩了,那我們直接進入PID的控制模型環節。
評論
查看更多