常用控制演算法(包括PID和卡爾曼濾波等)各有什麼天然的局限乃至缺陷?


反饋控制最重要的就是兩點:
一是反饋;
二是測量的大方向。

只要有反饋的結構在,只要測量的反饋值正負號不搞錯,那其他的都只是細枝末節的問題了。下面聊聊我比較熟悉的一些控制演算法。

  • PID:天然的缺陷就是P和I和D之間的線性組合關係。至於有沒有模型,尋找最優控制參數(P+I+D線性組合架構下的最優),現在有的是手段和方法搞定。但是就是這三者間的線性組合關係,現在大家都意識到了包括超調啊,震蕩啊,問題都出在這裡,可是現有的數學工具還是不足以支撐我們找到一個「通解」。實際上,PID控制從資訊理論的角度講,是非常完美的對信息的利用,但是最理想的應用方式肯定不是簡單粗暴的把它們加在一起。所以非線性PID控制現在有點像早期一段時間的Lyapunov函數,千姿百態,有很有效的,但沒有什麼足以形成方法論的東西。
  • LQR:很多人覺得LQR太依賴模型了,實際上,就像一開始說的一樣,只要有反饋機制,只要反饋的正負號不錯,控制效果都是可以操作的。工程里我用LQR還是比較多的,從理論上很漂亮的結果,要說天然缺陷,那就是和線性狀態空間模型同生共死吧。為什麼和線性狀態空間同生共死是缺陷最後再說。
  • H-infinite:其實用LMI還蠻容易得到解的,而且模擬效果還是很好的,不過我工程里沒怎麼用過,想起左右互質分解還有正實性什麼的就有些頭大,而且魯棒方法性能上總會保守一些。
  • Backstepping:我13年博士學位論文里有部分是基於Backstepping演算法的,也是挺漂亮的演算法,天然的缺陷是基於Lyapunov穩定性理論,性能上比較保守。
  • Sliding mode:理論上很漂亮的方法,而且實際上paper里天天提的震顫問題在工程里可以犧牲一些快速性很好的解決,然而工程里很多方法並不能被很漂亮的證明穩定性。。。所以。。。這也是一個典型的被中國學者發揚光大的控制方法,感覺和MPC差不多,各種變形,各種證明。。。因為當時沒有專註這個方向,所以不是很了解。
  • 卡爾曼濾波:題主把卡爾曼濾波歸為控制方法真是很聰明,把卡爾曼濾波看成一個觀測器,是控制器的對偶問題。而且實際上,卡爾曼濾波的核心,求解卡爾曼增益利用測量值去修正預測值,實際上也可以簡單粗暴的理解為控制問題。只不過這裡不是大家喜聞樂見的控制一個信號去跟蹤我們給定的參考信號,而是控制一個信號去跟蹤一個我們不知道的「真實值」信號。韓京清老師1992年的文章《一類不確定系統的控制與濾波》的前言中就對控制問題和觀測問題有很淺顯易懂的論述,希望大家可以去讀一讀。至於卡爾曼濾波的天生缺陷,上面有答主已經說的很好的:線性和高斯性。但實際上,卡爾曼濾波的思想是非常非常值得學習的,而且經過改進在工程上有很不錯的效果。

其實對於觀測器最近幾年我研究的比較多,可是礙於不太常用就不再這裡占篇幅了。

最後說一下為什麼會講線性狀態空間會是一些演算法的天然缺陷呢,實際上我真正想說的是現在線性系統的大量成熟理論成果實際上很大程度束縛了我們的創造力,而對非線性,我們掌握的數學工具又實在是粗糙和弱小。打個比方,我們把線性系統這粒沙子琢磨的七七八八之後,抬頭髮現了一片非線性的沙漠,這就是我現在有時的感受。

以上純屬個人觀點,由於博士畢業後這三四年工程做的比較多,學術前沿關注的少了,有不對的地方還請大家指出。


拋磚引玉:

一個 LTI 的反饋系統,控制器 C,被控對象 P。如下圖示(手繪的,in case you did not notice…):

假設是控制一個輪船或無人機吧,y 是其位移或速度。y 之前有個干擾 d,即波濤起伏或風。y 之後有個雜訊 n,即感測器雜訊。那麼:

y = S * d + T * n,其中 S = 1/(1+PC), T = PC/(1+PC)。

但對任何一個頻率,都有 |S| + |T| &>= |S + T| = 1,這就是個天然的局限:即無論控制器怎麼設計,乃至無論什麼樣的被控對象,系統對干擾 d 的和雜訊 n 的 attenuation,在任何一個頻率,都是 trade-off。比如,在同一頻率點不可能都小於 1/2。

不過現實中,干擾 d 與雜訊 n 的頻段不同,因此控制器設計時,可考慮在一個頻段主要應對 d,另一個則主要應對 n。

當然,以上很多簡化的寫法,也沒正式輸入公式。如果想要詳細了解,請參考該書第六章(以上討論也是參考該書):

Feedback Control Theory
by John C. Doyle, Bruce A. Francis, Allen R. Tannenbaum
https://www.amazon.com/Feedback-Control-Theory-Electrical-Engineering/dp/0486469336/ref=sr_1_1?ie=UTF8qid=1476188483sr=8-1keywords=john+doyle+control


儘管一般來說,測量是越精確越好,對於固定參數的PID,或者收斂後的kalman,由於初始狀態的偏移,以及模型的不確定性,適當的雜訊有利於更快到逼近到真實狀態。

如果把PID的輸出類型以及值的空間固定下來之後,那麼剩下來的調參主要就是依賴於系統響應特性以及常態誤差,而kalman濾波中的模型不確定性辨識也非常依賴於更新間隔和誤差。

特別是kalman,我們通常都是在利用其濾波能力的同時去逼近未知模型參數,適當的誤差擴大了解空間的搜素範圍,避免了不必要的較大的系統誤差設定。但反過來,大的觀測誤差也不利於穩態情形下的精度逼近。

如何提高精度的同時,提高系統的動態響應特性,我認為是控制演算法中的一個需要解決的主要問題。


節選自 Hrigglund, Tore.Advanced PID Control[M].1st.Lund:Research Triangle Park,2006,87-88
《先進型PID控制器》
第三章6節When Can PID Control Be Used?
There are many requirements on a controlled system. It should respond well to set-point changes, it should attenuate load disturbancds,measurement noise should not give excessive control actions, and the system should be insensitive to process variations.

控制系統應該很好地回應設定點的變化
控制系統應該衰減負載擾動
測量雜訊不能影響太大
系統本身不能隨變數變動過大(時不變系統)

簡單而言:動作響應要線性不能太黏,負載擾動不能太大,測量雜訊不能太大,系統模型不能隨 其他變數(非 觀測與控制 變數) 發生變化


常用控制演算法(包括PID和卡爾曼濾波等)最大的問題是,研究生的時候學習一大堆,到了工作實際當中,除了PID,其他用的都非常少。過程式控制制系統里,本來那些高階系統,全部被分解為低階系統。從工藝指標上,就分解的很完美,每個參數在多少到多少之間波動。很簡單的一個PID就都搞定了。而且隨著項目越做越多,工程的標準化,連PID參數都是基本恆定的。一台火電站和一台核電站里,用到的串級PID控制也只有一個。算是稍微複雜一點。
在學校里,PID演算法是需要先對對象建模的,實際工作中根本沒人這麼做。本來可以簡化的系統,被做的很複雜。優秀的控制演算法本身可以降低系統的能耗,能夠減少執行機構的動作,能夠延長設備的壽命,但是在中國這些根本不在考慮範圍。反正中國人多,在國外無人值守的地方,在中國總是要常駐幾個人的。
上面有人說PID控制因為無法建模控制不了機器人。工業流水線和工業機器人基本上都是PID控制的,只不過跟我上面說的一樣,每個執行機構一個PID,沒有高階控制。
控制演算法工程師在中國反而成了最沒有技術含量的工種。真是學控制的悲哀!!!


任何反饋演算法都需要「測量反饋」。反饋不準就白扯了。

觀測器和濾波器是能提高準確度,但是也會帶來額外的時間開銷、反饋延遲,給整個閉環的穩定性造成隱患


PID控制演算法最大的優點也就是它的缺點——沒有數學模型。

經過國內外數學建模大賽的宣傳和各大高校在課程中的滲透,數學模型的重要性不言而喻。由於PID在工程領域的資深老大哥地位,至今多數產品、設備的控制演算法都採用PID控制,PID在實際應用中確實優勢明顯,以至於產生了很多參數整定方法,但這些方法也多是難以量化的,比如:」先調P參數,增大P到系統振蕩後減小一點,再增大I...「。使用者對PID控制始終保持一種懵逼的感情,好用,但又不知道為什麼?歸根結底就是因為沒有數學模型。

沒有數學模型意味著沒有可移植性。如果沒有對系統的深度解剖,分析工作原理,只用調參實現一個無人機的姿態控制,換一個機架可能參數就完全不同了,飛機就炸了。如果有相對準確的數學模型,同樣的飛控,對不同的機架適應性會強很多。

另一個缺點是,沒有數學模型的控制很難應用於大型系統,所以PID最好是用在小模塊尤其是末端執行器的控制上,比如控制一個雙足機器人行走,不能直接用一個PID控制器實現,而是在結合機器人結構,進行運動學、動力學分析後推導出各個關節舵機的輸入量,再結合PID計算合適的輸出。


卡爾曼濾波存在兩個限制:
1、系統和觀測值必須是線性的;
2、狀態必須是高斯的。


拋磚引玉,自己對於控制演算法的應用經驗還很欠缺,希望以後能在更多的實踐中對這些問題產生更深刻的看法。下面是自己的一點小小的看法:

同意Ryan童鞋的看法。PID的優點大家都知道,事實上PID控制也有著很廣泛的應用。而在實際應用中,為了獲得滿意的控制效果,可能就需要對PID參數進行在線調整,但這些參數往往並沒有不變的數學模型進行參考,這大概算是演算法的一個局限性吧。記得之前有了解到之前國外的一些相關公司會有專門的有經驗的人員對此負責,也一定程度反映了它的重要之處。
對於PID的調參,有人總結了PID參數整定口訣,網上也流傳已久,感興趣的童鞋可以在網上搜索一下。

卡爾曼濾波簡單來說算是一種遞推的線性最小方差估計。要說天然的局限性還是在於數學模型的精確建立上,例如系統狀態向量的統計特性,模型中雜訊方差陣Q和R的估計等等。對於這個問題,產生了很多基於自適應濾波的改進演算法。

另外一個問題,KF是在線性系統的基礎上發展來的,一般的思路是對非線性方程進行線性化。現在應用較廣的演算法應該是擴展卡爾曼濾波和無跡KF了吧。09年又有學者針對非線性濾波問題,提出了容積卡爾曼濾波,受到了廣泛的關注。
推薦一篇張友民教授的文章《卡爾曼濾波計算方法研究進展》,雖然文章比較早,但對卡爾曼濾波的了解卻依然大有裨益。


實際系統的建模問題。

我不是控制科班所以水平不高。本科學自動控制的時候,最納悶的就是
在設計系統時如何對執行機構、受控對象、感測器的建模?

實際系統存在非線性、遲滯、環境雜訊,怎麼把這些因素考慮到系統內,然後設計具體演算法?所以科班水平高的也許會設計複雜的模型,然後驗證穩定性,進行模擬什麼的,但是模型或演算法太複雜,實際效果可能建立在很高的調試成本上。一般人就用PID、局部近似的線性模型。

人們都期望有一種演算法像一個強大的黑箱,通用、易用、效果好。但更現實的問題是,如何無縫聯通理論到實際到需求的兩岸三地。


都是基於模型的控制。
模型的準確與否決定了控制器的設計和實際的使用效果。
我認為未來基於機器學習等領域的演算法可能會在實際中廣泛採用。

卡爾曼濾波不是控制,是一種觀測手段,實現最佳的估計。也得依靠模型和對雜訊的統計屬性的假設。

另外去覺得控制器的工程實現,現在大多數的控制器全部是數字實現。雖然在設計上採用了模擬的設計思想。所以,還是有一些implementation的問題需要考慮。


典型的控制演算法諸如PID等,其最大的缺陷就是在控制具有較強非線性特性的對象時效果較差,但是可以使用一些限幅等工程性的方法解決。當然你不得不說……PID還是使用最廣的。另外一個使用廣泛的控制方法,是模型預測控制,對於非線性對象的效果也是一般,並且需要線性模型設計控制器。另外一些LQR、H無窮等線性控制器呢,由於需要被控對象的準確線性模型……所以實際工程中並不好使用(其實實際物理平台的數學模型就沒有嚴格線性的)。最後,諸如反饋線性化、backstepping等非線性控制方法也不太好使用,因為準確的非線性模型同樣不好獲得。所以,從控制方法發展到現在,控制領域一直受到模型的制約……建模是個大問題。


一是硬體。硬體。硬體。
然後,機器不能預判,一切都要靠先獲取信息後做出反應,再快的運算速度也比不上生物可以根據周邊環境預判。


卡爾曼濾波器是一種最優估計演算法。題主想問的是經典控制方法和現代控制方法的優缺點吧,比如狀態空間法。


推薦閱讀:

參加大學生電子設計競賽是怎樣的體驗?
控制理論到底有什麼用?

TAG:機器人 | 自動化 | 自動控制 | 無人機Drone | 機器人控制 |