現代的先進控制理論先進在哪裡?如何評價在PID控制器份額在95%條件下穩定性遜色的先進控制系統?

對第二個問題的解釋在於,既然PID控制器運用已經如此廣泛了,那麼基於現代控制理論的現代控制系統就處於一個相對尷尬的境地,即應用有限的同時理論卻在不斷更新,這使自動化越來越像理科而不是工科,對於這種現象該如何評價。
ps.需要注意的是
1)理科的任務更像是觀察和描述自然,而工科則是利用和改造自然。
2)自動化作為一個工科學科根本關切在於解放和發展生產力,其「價值」在於提高勞動效率,降低社會必要勞動時間,從而產生更多的「價值」和「使用價值」。


一種可能,別人用上了,效果好,自己用不上,乃至說不知道怎麼用,只能用PID,這說明自己落後。

另外一種可能,有很多所謂先進的理論和演算法確實很難在實際中用,根本就是為了發論文而做的。

還有一種可能,大家都在用PID,但控制效果遠不能令人滿足,只是暫時找不到/發現不了更好的方法。

另外有個值得注意的,底層是PID,看中上層是不是PID。即雖然是PID,但是是結合比如自適應、模糊、容錯等等。而且PID的調參是否用了比如頻域分析、魯棒等等。

如何區分這幾者,是很重要的。

---

以上是短答案,以下是較長的回答。

之前一個朋友(搞電力電子控制的)說的,他們領域的,好像是一對夫妻,原來學術界的,後來創立了一家公司 One-Cycle Control,as its name indicates,做電力電子方面的control。其實電力電子方面,現在的智能電網,有非常多的控制問題。

偏過程式控制制的公司,有AspenTech: Optimizing Process Manufacturing,這名字說得已經很清楚了。

除此之外,還有很多或有名(Honeywell霍尼韋爾)或不大有名的,做偏過程式控制制。其實殼牌、美孚也有相應的部門。

說到這方面,咱中國人也不差,有朱豫才老師在荷蘭創立的太極控制(怎麼成了「太激光控制軟體」「泰極控制 泰極軟體」?泰極控制 泰極軟體 (網站正在建設中...))Taiji Control(Welcome to Tai),也有王建老師的優化佳控制(北京優化佳控制技術有限公司)。別的不說,看這兩個公司名字取的!!!二者也都偏過程式控制制。

其實過程式控制制不光是化工,發電廠什麼的也都是(GE在這些方面也在做)。而且發動機控制什麼的,也很難說屬於哪一類。

而這些公司不都是試圖把所謂的先進演算法用在實際中嗎。

這些努力,也許是白費的,證明某些演算法不能用。但也慢慢證明某些演算法確實能用,比如一些系統辨識演算法,比如預測控制。

技術發展就是這樣一點點進步的。難道控制演算法不再發展了?PID也才有大約一百年的歷史(PID controller)。而且不去嘗試,永遠不知道新理論和演算法能不能用。

隨著相關技術,特別是感測器技術的不斷發展,晶元運算速度的不斷加快,也有可能出現之前不能用,以後能用的情況。比如預測控制也可用到運動控制中了,當然不一定叫預測控制了,可能叫Receding Horizion什麼的。。。

這裡又要岔開一句。其實晶元速度只要快到一個控制周期(一般由被控對象決定)內能計算完所有需要在線計算的,也就不會帶來更多益處了。而且位數精度到了干擾的數量級(其實一般早就到了),也就不再有益處。倒是感測器,有時候執行機構也是,採用頻率跟精度遠遠不夠。

況且在現實中,PID演算法是遠遠不夠的。

比如某射電望遠鏡,之前都是用PID來調,後來轉為用LQR來設計參數。不過設計完之後,又用頻域的波特圖看過,才敢實行。最終效果好很多。原因很簡單,在模型不精確乃至沒有模型的時候都能用PID,說明PID是適用範圍廣。但沒有免費的午餐啊,適用範圍廣,則對一個特定的系統,往往效果離最好差很遠。而望遠鏡是人造的,模型比較精確,而且工作環境不確定性小,所以用LQR效果較好。

這裡還有個有意思的問題,就是量產跟不量產的區別。比如這個射電望遠鏡,就這一個,那就可能調得精確些。如果是量產的話,那各個的機械跟電子部分肯定會有差別,導致模型有差別。而這差別其實有時候是影響很大的,甚至說一個螺絲少擰半圈,原來的控制演算法就要重新調。這時候,大概就不能用這麼『陽春白雪』的控制演算法了,要『下里巴人』一些。

況且,只做這其實不是商業產品,所以在某種程度上不用受成本限制,所以感測器可以做到比較好。還有一個問題,就是這不是大眾消費品,就這那個天文台裡面,沒有什麼風吹日賽,也不會在大眾手裡鼓搗。

這樣便可以想見,以後做大眾消費品的機器人,包括現在的無人機,控制演算法要做到多麼的魯棒:首先產品的硬體會有區別,除非對每單件單獨調參;其次受成本影響,感測器曲線差;再次使用環境不確定性大,干擾大;而且還要在一般用戶手裡搗鼓,摔一下,磕磕碰碰很正常;而且用的時間長了,硬體會發生一些變化。。。

簡單的說,從理論角度,對於單入單出的線性系統時不變系統而言,PID存在,提供了三個參數,調整閉環系統的極點位置(或曰特徵根,一個極點對應一個動態模態,即動態響應的大致形式)。一個n階系統,需要n個參數配置極點。那三階及以下的系統,PID當然就夠了,乃至只需要PI、PD,或只需要P,視具體情況。甚至到了三階以上,如果系統某些本身的極點已經非常穩定了,有時候PID也足夠了。同時,也很容易找到三階以上系統,無論如何都需要三個以上的參數才能讓系統穩定,這時候當然PID不夠用。

但這些高階系統,有很多是可以分出層來的,及可加感測器控制中間某個變數,串級控制,如果串級的每一級都用PID足夠,那就成了串級PID。比如四旋翼,從電機電流,到轉速,到旋翼升力,到加速度/角加速度,到速度/角速度,到姿態/位置,就引出了好幾個串級。

這裡岔開一句,四旋翼轉速到升力,會受空氣動力學的影響,不是線性的,而且接近地面時不一樣,不同空氣密度又有影響。升力到加速度,跟姿態有耦合,而且跟傾角有非線性的關係,同時不同的質量又有影響。這裡面要做得好,要考慮解耦,非線性,自適應等問題。

從不那麼偏理論的角度說,其實可以感到PID是提供了三個自由度,就像三個操縱桿,控制一個東西,不知道那個東西的運動跟這三個操作桿具體什麼關係,只能試試湊湊。但操作桿只有三個,三個自由度而已,有些動作可以完成,有些動作不能完成。但是,如果增加了操縱桿,增加了自由度,雖然可以完成動作的可能性大了,同時操縱的難度也增加了。

從寬的角度說,那就是耦合了。處理高階,深的系統,PID有串級這一大殺器,只要中間量能測量,通過感測器往外引。而且一級級的可以加飽和。但處理寬的,耦合的系統,PID就比較難調了。幾入幾齣、耦合弱的還能解解耦(而且解耦是要基於耦合模型的),十幾入十幾齣,乃至更多,加上強耦合,有時還有硬約束,那幾乎是沒辦法調的。

從不那麼偏理論的角度說,每個PID像三個操縱桿,控制一個東西,不知道那個東西的運動跟這三個操作桿具體什麼關係,只能試試湊湊。有十幾個這樣的操縱桿和東西的話,之間又有聯動,那可能性多了去了,(十幾×3)×(十幾×3),想要讓那十幾個東西完成一些動作,就很難動過試湊來做了。

現實中,大多是PID作為底層穩定住各個單入單出的子系統,MPC在其上層做慢速的(相比PID)的優化計算,把這些耦合、約束都考慮進去,然後算出來的是各個PID的設定點。MPC算一步的時間,足夠PID動態過程結束了。

智能控制的定義其實很難劃清,大致包括專家系統,模糊,神經網路,學習,然後結合各種優化演算法的控制(遺傳、粒子群、蟻群、模擬退火等),等等。

其實可能大多數人接觸智能控制,會經歷「哇,這麼好大上」-&>「靠,原來如此」-&>「排列組合發論文,都是在忽悠」-&>「其實還是可能有點用的」-&>「現在才算理解一點」-&>「其實還是沒真正理解」。。。其實不只是智能控制啦,很多東西的學習都是如此。

先說最簡單的,結合各種優化演算法的控制。其實這些優化演算法都是單獨存在的,只不過控制問題轉化為一個二次型的優化之後,用這些優化演算法來求解,就是優化參數。這樣的話,其實任何優化演算法都可以結合控制:各種優化演算法×各種優化指標×各種控制器(如PID,狀態反饋等等)×。。。。排列組合多了去了,論文也就多了去了,導致這個領域如今很受詬病。而且其實問題的核心不在優化演算法(優化演算法也有No free lunch theorem),而是優化指標。而這優化指標的選取幾乎完全靠經驗、試湊。而且建的模型本身的精度根本達不到這優化問題的精度,很容易精確的錯。仿模擬還可以。

再岔開一句,建模,簡單的分,物理建模(部分加起來),系統辨識(輸入輸出關係作為整體);而物理建模本身,其參數的確定,也分為部分加起來,和整體辨識出來。物理建模,參數也是部分加起來,是當年物理學中就學到了,但往往會忽略掉很多東西。物理建模,參數辨識出來效果好很多,可以理解通過輸入輸出數據獲得了系統全部的信息。直接系統辨識,其實有時候反而最完整的保存了系統信息。系統辨識的問題是比較難結構化,雖然有Wiener,Hammerstein等模型,但可以一些個環節。乃至跟物理建模結合起來,各負責一些環節。

系統辨識是個大領域,輸入數據的設計,誤差準則的選擇,模型階數的缺點,乃至時延的缺點,都非常重要,而且不容易。預測控制,是基於模型的,實際中基本都是結合系統辨識在做的。否則的話,模型都錯了,那控制器就不大可能設計的好。

感測器也是系統辨識的一個重要環節。感測器精度直接決定了系統辨識的精度。

感測器曲線很差,模型也建的很差,就不要想著用「先進」的控制演算法了,肯定精確的錯;倒不如用PID什麼的,大概的對。而且倒是應該用些「先進」的估計演算法,數據融合,感測器信息融合,先把感測器曲線改善一些。然後用些「先進」的系統辨識演算法,讓得出的模型也改善一些。之後再考慮「先進」的控制演算法。

現在的情況是,很多實際工程,「先進」的估計演算法已經用了不少了,「先進」的系統辨識演算法和「先進」的控制演算法還比較少。這也就是很多人說控制工程等於PID+Kalman的原因。不奇怪,PID到「先進」的控制演算法,中間還隔著「先進」的系統辨識演算法呢(建模與模型分析)。

總而言之,先進估計+不基於模型調參的PID,先進估計+先進系統建模辨識+基於模型調參的PID,先進估計+先進系統建模辨識+先進控制演算法,現在都是存在的,其中前兩個自不必說,最後一個系統辨識+MPC+PID的組合在先進過控、能源類的控制等中比比皆是。落後這麼多了,趕緊追吧,奇怪的是竟然還有人說MPC沒用,趕緊去了解一下Aspen,Honeywell,GE,Shell,Exxon Mobil等的先進工業控制演算法吧。而且當年登月,也是先進估計+先進模型+先進控制(最優控制+PID)的例子啊。

感測器跟估計的精度決定了建模辨識與控制的精度,然後感測器跟估計的精度,與建模辨識,一起決定了控制的精度。這方面,是可以量化的。

可見感測器與估計演算法多麼重要。感測器的校正是個大問題。這一點,看看玩無人機之前大家的在那繞啊繞的動作就知道了,況且在出廠前,也要做不同的校正。這方面,GPS有室內的天然缺陷,IMU只能等降價(要是不計成本的話,可以做到嚇人的精確,比如核潛艇裡面用的),現在做光流,視覺當然是個大趨勢:軟肋在計算機視覺演算法。之後就需要更精確的建模與辨識演算法了,然後是控制演算法。畢竟現在無人機在很多方面還是受限制的,比如隨便換相機,當然雲台也是問題,送快遞(加入新的負載),或者加抓取裝置(整個力的分析就很複雜了)。

個人認為,在可預見的未來,隨著感測器本身的發展,加上計算速度提升(在線UKF現在已經不成問題了,等到在線PF也不成問題的時候,不知將會發生什麼,也許EKF什麼的,終將被歷史淘汰,敗給強大計算能力支撐下的硬算硬模擬演算法)帶來數據融合發展,下一步必將發展的是更精細的系統與信號的建模與辨識技術,之後則會有之前用不上的控制演算法逐漸被實用(當然,大部分現在的論文都是忽悠人的,幾乎是一定不會被實用的),而更有可能的是,會催生出新的控制演算法。其中自適應、自學習類的控制演算法(很可能底層還是PID,這些演算法在PID的上層)是最需要的。

為什麼呢,因為畢竟過控類的,乃至登月,幾乎談不上擴展性的問題。反正登月就這一套東西,過控類很多時候也都是如此,即使複製多套,也會有專門人員再到現場逐個的調。但未來消費類產品,比如無人機、無人車什麼的,那就不一樣了,有點像手機,但又比手機的「控制」複雜的多。再比如無人地鐵,空車跟滿人的時候,質量差很大,這是最起碼的自適應吧。當然可以想見,這自適應是上層,底冊的電機電流轉速控制當然還是跟之前一樣。

其實這辨識,不僅包括系統,也應包括信號,有時叫干擾。不過這方面有不少實際應用了,因為比較好處理,很多時候前饋抵消掉就行。

魯棒控制其實處理的是確定的不確定性,known unknown,其實算不上真的魯棒性,因為還是需要確定模型來刻畫不確定性的。真正的魯棒性,要能處理不確定的不確定性,unknown unknown。伯德圖頻譜分析算是一個這方面的好結果。

其實越是到底層,其控制演算法參數調節的『物理意味『越大。什麼意思呢,其實不僅是工程經驗還是理論都告訴我們,很多時候沒有好壞,只有trade-off。比如disturbance attenuation或叫disturbance rejection,即各個頻率點的干擾機制幅值,其平均值是大於等於一個常數的(不僅針對LTI的控制器,對任意causal的控制器也有類似結果)。這就意味著,再先進『花哨』的控制器,總是要滿足這個性能極限,不能做到所有頻段干擾抑制強,都是按下葫蘆起了瓢。也就是說,大多數時候不能說哪個控制方法更好:一個控制器高頻干擾抑制強低頻弱,一個低頻強高頻弱,怎麼比?這裡的干擾,包括確定的干擾,分析其各個頻率的分量;也包括隨機干擾,分析其功率譜。

還有比如快速的動態響應,往往意味更大的控制器信號輸出,也就意味著執行機構更高的能耗。這也是個trade-off,比如有的控制對快速性要求不高,但想降低能耗;有的則想盡辦法增加快速響應。

還有響應速度與精度的trade-off。其實這個很複雜。高頻干擾或雜訊時,當然直接trade-off,因為速度要求帶寬大(其實是頻譜更平),但高頻就進來了。但是如果幹擾在低頻,那就不存在矛盾了。或是如果在各個頻率很平均,那要降低方差,也須使得系統的頻率響應較平。而且這還是說的干擾或雜訊跟reference一個地方進來的,因為響應速度主要是說跟reference的響應。干擾或雜訊如果從其他位置進來,比如感測器,或執行機構,或直接在系統輸出上,分析就更複雜了。先不展開了,有感興趣的再說。

說到性能極限,岔開說狀態估計吧。卡爾曼濾波本質之一是,每一步,兩個兩個的,把預測值(基於之前的測量值)跟測量融合在一起,把能降低狀態估計方差的所有信息都用上了。用在數據融合,比如加速度計跟陀螺儀的融合,也是大概如此。在其假設下已經做到極限了。

性能極限還有另外一種用處。比如一個框架,EKF,經驗和理論都tell說,在某種問題,調來調去,也就這麼著了,到頂了。要想提升只有換另一個框架了,比如UKF。

控制中也有類似問題。知道了這個極限,那麼也就心裡有數了,比如調PID,什麼能做到,現狀離做到還有多遠。什麼不能做到,想要做到應該換什麼別的控制框架,或是在PID上面加什麼機制。

就現在來看,PID上面,真正能用的,應對不確定性的真正的魯棒性的控制機制,自適應控制機制,容錯控制機制,現實中都非常需要。還有真正能數據化的PID調參機制,什麼意思呢,就是把靠經驗的調參方法,是不是能『自動化』一點,即使一開始用專家系統或模糊。還有就是真正能用的故障診斷。

這裡PID還有一個有意思的特性,就是不僅對被控對象乃至干擾魯棒,就是改變一些其實也沒大不了,只要不是在太critical的位置。而且對PID本身的參數魯棒,三個參數改變一些也沒多大大不了。別小看這一點,很多控制演算法不行。

其實說到根本,這些控制演算法、估計演算法等,不過是某個框架下調參數。不管用什麼方法,找到了那個現實中好用的框架與參數,就可以用。最簡單的例子,只用PID中的K,有的人用工程經驗,有的人用理論等,最後找到的那個K可能差不多。參數越少的時候,接近物理的經驗方法其實越有優勢,PID本身三個參數,加上改進方法,多是有很強的物理『意味』。而且串級的話,可以PID一層層的調。但參數一多,離物理越遠,人的經驗可能很難顧的過來,這時候理論就有其價值了,但也要在整體上把物理搞清楚。

物理真正搞清楚了,剩下的就是數學、理論了,而且理論的分析會跟現實驚人的接近。否則的話,物理沒搞懂,不知道發生了什麼,效果好不知道為什麼好,也就不知道什麼時候會出問題,更別提出了問題該怎麼辦了,在這種情況下,說理論能用那只是一廂情願而已。

"If Thomas Edison had a needle to find in a haystack, he would proceed at once with the diligence of the bee to examine straw after straw until he found the object of his search. … I was a sorry witness of such doings, knowing that a little theory and calculation would have saved him ninety percent of his labor." --- Nikola Tesla

過度闡釋一下。

特斯拉說,理論和計算可以節省labor,這是當然。以控制器設計為例,最一般的,控制器的輸出是過去所有誤差的函數,u_k=K_k (e_k,...,e_0)。但如此這般,沒有任何結構,沒有任何框架,K_k的空間也太大了。這時候,如果用PID(PID也是理論啊,而且作為理論框架幾乎無處不在,只不過調參很多時候是靠經驗),那就把K_k的參數空間一下子減少了很多。

卡爾曼濾波、預測控制等等,也多是如此。作為理論框架,提供了結構,一下子減少了參數空間。

但特斯拉說,減少了90%的labor。即還是要有labor的,主要是在調試、調參上。PID的P、I、D,卡爾曼濾波的Q、R與初值,預測控制的時域長度、優化目標等。

這調參的labor還能再減少嗎?靠經驗當然可以。同時,逐漸的有理論的調參方法,在實際中被證明可用。而這是所有這些演算法做到真正自學習、自適應的必經一步。否則的話,要重度依賴一些基於經驗的規則庫,像專家系統、模糊等。

但這一步也是減少,不是一鎚子定音。因為理論的計算,終歸要基於模型。而模型的建立,可以處理known known,乃至可以處理known unknown(魯棒等),關鍵在於找到unknown known(體現水平的關鍵),但總是無法處理unknown unknown的。但如果前三個,known known,known unknown,unknown known,處理的好,作為實際調參的初值,乃至提供大致範圍,也就省了labor,特別是unknown unknown足夠小時。

其實很多時候,unknown unknown都不大。但為啥理論跟實際差這麼遠呢?關鍵在於unknown known。比如有很多環節,信號或系統,明明是確定的,有規律的,可以預處理抵消掉或有其他方法處理(比如前饋控制,估計中也有類似trick),但常常被當作隨機的。這樣的話,代價就是把壓力放在了演算法上面。

特斯拉說:愛迪生啊,看到一個工程問題,上來就調,試錯法。對此我那是相當無語。很多時候,所謂經驗,不過是還未找到規律、模型、理論的raw data,但找不到不代表不存在,而且從歷史來看,是一定存在的,找到一個就是科學的一次進步。摸索當然是對的,是積累經驗,但如果能總結出規律,做出模型,乃至理論框架,那就可以節省很多時間啊。純屬虛構。。。

岔開一句,也許控制系統下一步的發展還是要向人(或其它生物)來參考。什麼意思呢?比如《最強大腦》中曾有一期是兩位盲人,一個通過發出響聲,一個通過吹風,來定位。這不就很像現在的聲納,乃至Lidar嗎?視覺還基本沒用上。而從人的角度來衡量的話,聲納等對『定位演算法』的要求,可比視覺大多了。再比如單腿站立,或其它需要保持平衡的情況,閉著眼睛與睜著眼睛可就差遠了。

還有一期,是比賽通關激光光線,蒙上眼睛,則對身體本身控制的精度要求高非常之多。這不就像現在沒有視覺的控制嗎。還有,閉著眼睛寫字,那是人類都幾乎無法很好完成的任務。

控制演算法要能處理known known,known unknown,unknown known,unknown unknown。

只此一件的控制系統,在較為確定的環境里工作,參數可以專門針對硬體,調到很好。但也會跟溫室一樣,系統乃至環境的很多東西有明確的規定,甚至細到某個螺絲要擰幾圈半,外界的干擾要可忽略,等等。如此的系統,有時可以應用上較為複雜的控制演算法,也就沒有什麼好稀奇的:known known知道,unknown known能通過對系統不斷加深理解變成known known,known unknown、unknown unknown則可以通過對系統和環境的控制減少到可忽略。

但商業化產品中的控制系統,上量之後件件之間有差距,加上使用環境不確定的話,known unknown、unknown unknown都會大,而控制演算法要能魯棒(不僅限於傳統魯棒控制中的魯棒)到可以處理到這些,即使known known、unknown known處理到最好。

這裡的known與unknown,視具體情形,可以理解成,certain與uncertain,predictable與unpredictable,等等。如是便可分為,certain certain,certain uncertain,uncertain certain,uncertain uncertain;predictable predictable,predictable unpredictable,unpredictable predictable,unpredictable unpredictable。看似說的廢話,排列組合,但如果真的有個實際問題,如此可以看得比較清楚。而且可以在不同的層面看。

比如一個信號,近似等於個高斯白雜訊,用過去數據,估算出均值與方差,是known known。但肯定不準的,因為現實中就不存在標準的高斯白雜訊,於是做出一個誤差區間,有各種做法,算是known unknown。但known known跟known unknown加起來,也還是與實際有差距,是unknown unknown,是there is nothing you can do about it的了。但常被忽視的是unknown known,比如這個信號裡面,可以分離出一個周期信號(不一定是正弦),是一個干擾。知道之後,unknown known變成known known。如此等等。

前面說了,可以從不同層面考慮,比如信號分成確定部分和隨機部分,確定部分是known known。但確定部分與實際的確定部分有差別,是unknown known。隨機部分,知道分布的話,是known unknown。隨機部分也與實際的隨機部分有差別,是unknown unknown。如是如是,不一而足。從這個層面分析,不如上一段中的分析對實際有指導意義。

當然還有系統。比如一個系統,有輸入輸出數據,建模、辨識出一個LTI模型,有參數,是known known。但這個模型肯定不是完全吻合數據,所以要給一定的不確定性,比如在參數上,可能有個區間,是known unknown。即使加上這個區間,也還是與實際有差別,是謂unknown unknown。但如果一分析,發現這個模型其實可以分離成一個LTI模型,加上一個比如Wiener模型,就是unknown known被發現了。

當然也可以在不同的層面分析。

參數很多,花時間調,總能調出個鼻子亂舞的大象,特別是在模擬中更是如此。但物理學的歷史告訴我們,這個時候,應該是存在更有結構化的理論框架。當然,這樣的理論框架,如PID,如Kalman濾波,等等,也還是留有一定的參數讓在實際中調,因為known unknown與unknown unknown,是另一個層面的問題了。


物理學中有個著名的known unknown,測不準原理。但也有問題,有無大一統理論?

不能得到某個現實的工程對象到底是怎麼運轉的,只能得到現實世界的一個數學模型。模型與現實之間的差距,是一定存在的,只能說慢慢減少。也就說unknown一定存在,能做的僅僅是讓更多的變成known。


非線性泰勒展開看來要尤其注意了。


假設一個系統比如為LTI或一個信號比如為高斯白雜訊時看來要注意了。


模型不能解釋實際,那就是模型錯了。

時域、頻域,乃至熵域,還有各種變換如小波等,等等等等,可以從不同角度分析同一個問題。

別就認為自己擅長的那個模型就好,啥都往上套。這裡的模型,也可以改成演算法,等等。

各種數據預處理看來也不是隨便就可以做的,有時候可能處理掉很重要的信息。

模型與現實之間是有差距的。即使在模型中,理論或模擬,演算法可以調到象鼻子亂舞,乃至無所不能,那也不過是模型。反正參數可以隨便設,隨便調。拿到現實當中呢?

即使現實中可行的,有的演算法是一萬次成功一次,算是做個演示;有的成功失敗各半,那就剔除失敗時的數據或場景設定等等;而有的則一萬次幾乎都可以成功,乃至可以達到六西格瑪。等等。

信號、系統等等的數學模型都是假的。最好的模型就是信號、系統等等本身。但是太複雜,有太多的因素,所以我們不可能一一考慮。這個時候,我們就要把它們簡化,把其中最重要的因素抽取出來,這就形成了我們的數學模型。

但是。有一個很關鍵的問題就是,你怎麼才能知道,這些因素中,哪些是可以捨棄的,哪些是必須要提取出來的呢?這個從數學邏輯或者演算法的本身你是找不到答案的,這個需要你對信號系統的物理本質的深入理解。所以,要把數學的實用價值作用發揮出來,你不但要通數學,通演算法,還要通物理,通工程。

什麼意思呢?

不基於模型的演算法,可以直接在真實世界來調。但問題是,調也只是在特定的環境之下,如果環境變了呢?而且這樣的話,永遠做不到陣陣的自適應、自學習演算法。

基於模型的演算法,調是針對模型來調的,不是針對真實世界來調的。只不過是希望模型跟真實世界「差別」不大,因此演算法在實際中的效果也與在模型中「差別」不大。不論是數據的擬合,還是系統的辨識,等等,關鍵問題就在於怎麼樣判斷哪些是可以捨棄的,哪些是必須要提取出來的。

當然,這個問題可以從不同層面理解,也不限於信號與系統。

PID/PI/PD/P
前饋
串級
處理飽和
Bode圖等頻域分析
性能極限的分析
魯棒性分析

專家系統
模糊控制
自適應控制
預測控制
passivity-based控制
act-and-wait控制
迭代學習控制
容錯控制
variance minimization控制

Smith預估器等內模控制
最優控制
H無窮和其它魯棒控制
滑模控制
Bang-Bang控制
deadbeat控制
各種智能控制

look-up table
系統辨識
Kalman濾波

以上當然有overlap

另一方面,也可有組合,如:
專家系統PID
模糊PID
自適應PID
容錯PID

乃至
自適應專家系統PID
自適應模糊PID

乃至
容錯自適應模糊PID
。。。

先列出來,以後增加解釋

---

改變系統帶寬、時間常數、阻尼等等吧,在(控制)演算法上做,其實遠沒有在物理(機械、電氣)上來的直接。

但是物理上改,比演算法上改,「cost」大,周期長,很難iterate。

很多時候,是物理部分(包括系統,乃至包括干擾和雜訊)給定了,不能或者很難隨便改的。這時候,看演算法該能再優化到多少。這個時候,就體現出limitation的意義了。當然,這能優化多少,是由物理部分決定了的。

再反過來說,limitation跟物理部分的關係,其實可以指導第一步時物理部分本身的設計跟改造。

---

如下的幾段,本來是刪了的。沒曾想網上流傳的刪之前的幾個版本(希望大家以後轉載註明出處^_^)。在這裡乾脆把這一段,綜合一下,再加上吧。

There is nothing more practical than a good theory. 這句話的出處,網上說辭不一。其中有很多人說是Maxwell說的。麥克斯韋方程,當然是good的theory。但並不是所有的理論都是good的。其實自動控制發展這麼多年,good的理論並不多,PID、卡爾曼濾波自然在其中。但也並不是網上很多人傳的那麼少,絕不僅限於這兩個。 如今的計算機時代,這些good的理論,因為要practical,一定還有另一個特點,那就是同時也是good的演算法。


先從Kalman Filter,卡爾曼濾波,開始說起吧。


吳軍老師的《文明之光》里,有簡短的一段介紹,這裡貼在下面(侵刪):

不過糾正一下,確切的說,卡爾曼濾波是個估計演算法(估計過去叫平滑smoothing,估計現在叫濾波filtering,估計未來叫預測prediction)。控制用的是最優控制。不過兩者都是基於狀態空間方法,因此被統稱為現代控制理論(時域)。其實狀態空間方法中的很多概念,如可控性/可觀性,也都是卡爾曼提出的。


卡爾曼之前,控制與濾波理論中,經典控制理論(基於傳遞函數方法,頻域)佔據主流。而他幾乎是憑藉一己之力,扭轉大方向到時域。有意思的是,卡爾曼到了晚年(仍在世),卻到處推廣一些的頻域的想法。卡爾曼還曾討論預測控制。模型預測控制(預測控制,Model Predictive Control,MPC,Predictive Cotnrol,Receding Horizon Control,Moving Horizon Control,Dynamic Matrix Control),另一個good theory,之後也會談及。其實別的不說,就看這麼多不同的名字,不同小領域的人們給它的,就知道它應該是用處不少的。


卡爾曼何許人也,Rudolf E. K??lm??n,半個數學家。想必很多第一次接觸卡爾曼濾波的推導時,都會有這個疑問,這麼數學化的東西,還這麼難推導,在現實中能用么?難道比用了這麼多年的頻域濾波靠譜?但它就是能用。而且頻域濾波怎麼調都調不到卡爾曼濾波的效果,因為卡爾曼那濾波已經不是線性時不變的了,而是線性時變的。這才是good的theory,已經超出了所有已有的框架了。


針對非線性系統,有EKF(擴展卡爾曼濾波,Extended Kalman filtering),UKF(無味卡爾曼濾波,Unscented Kalman Filtering)等。其中這UKF,是Simon J. Julier教授(http://www0.cs.ucl.ac.uk/people/S.Julier.html
First-Hand:The Unscented Transform)的結果,也是個good的theory。實時應用中越來越多用到,比EKF準確,比Particle Filter(粒子濾波,PF)速度快。當然,PF的應用也也越來越多。說起Particle Filter,不得不提Monte Carlo演算法。是馮 諾依曼與烏拉姆提出的。


所有的這些,都是理論化的,有的乃至很艱深。但同時卻在實際中用的很多,乃至隨處可見。可有趣的是,數學家不認為這些是數學,而卡爾曼、香農等,甚至都不被認為是數學家。當然也不認為是工程師,因為搞工程的,卻覺得這些都是數學。從這一點上,卡爾曼、香農等的理論,其實更像是物理學,人造系統的物理學。傳統理論物理學,是研究自然的,實驗物理學家覺得是數學,但數學家不承認是數學。這一點上,尤其相似。

回到原問題,但並不是說所有艱深的理論都能用。其實絕大多數都不能用。這之間的差別在什麼地方呢?


一個朋友說,曾被卡爾曼的學生之一的Y Yamamoto(Yutaka Yamamoto"s Website)教授「訓」了一頓,僅僅是因為自己在講述一個問題的assumptions(假設)的時候,覺得不大重要,敘述得不大嚴謹。Yamamoto教授直接就說,作為engineer,也不能sloppy with math,也提到了卡爾曼經常對engineers" sloppiness with math很不滿。其實就詞典,Yamamoto教授曾寫過一篇文章,My Florida Days with Rudolf Kalman (IEEE Xplore Abstract (Keywords)):


These seminars were not like the ones I was familiar with. He often interrupted the speaker and started asking questions. Some questions seemed to take the speakers off track. He would pose a question on whether the theory is based on the correct assumptions or in the right framework, or even the right definitions. As a starting Ph.D. student, I was not aware how important it was to question whether we base our new theory on 「right」 definitions. In an ordinary seminar, we would naturally take the attitude that a definition is, after all, a definition, and we would hold our breath until we see the outcome. The seminars at the Center were very different. Rudolf Kalman always tried to see whether the theory is built on a sensible and fruitful definition.


I soon became more comfortable with examining basic hypotheses and saw how important it was to do so. Obviously, such an attitude is also very time consuming, but I was convinced that it is the right way to understand and build theoretical developments. Later his favorite citation was one from Newton, 「Hypotheses non fingo.」 (I do not invent hypotheses.) My candid interpretation would be 「I do not fiddle around with hypotheses.」


He always emphasized clarity in understanding. His frequent usage of the phrase 「What is crucial here is …」 reflects how he places emphasis on clarifying the role of certain key ideas. Merely proving a theorem is obviously not enough for understanding a problem. What one needs to see is the overall structure, how a certain assumption plays a crucial role in a critical step of the theory. He has an incredibly deep intuition for seeing the critical steps in the overall structure of a problem. This intuition played a great role in formulating the filtering problem in the state-space theory. That theory has flourished as Kalman filtering, and this is merely one outcome of the state-space approach that he initiated in the late 1950s.


而牛頓的原話,是這樣的(Hypotheses non fingo):


I have not as yet been able to discover the reason for these properties of gravity from phenomena, and I do not feign hypotheses (Hypotheses non fingo, Latin for "I feign no hypotheses," "I frame no hypotheses," or "I contrive no hypotheses"). For whatever is not deduced from the phenomena must be called a hypothesis; and hypotheses, whether metaphysical or physical, or based on occult qualities, or mechanical, have no place in experimental philosophy. In this philosophy particular propositions are inferred from the phenomena, and afterwards rendered general by induction.


卡爾曼濾波的假設很明確,線性系統(可時變),加性高斯白雜訊,最小方差意義下,是最優濾波器。不滿足這些假設,就不是最優。還有個結果,就是如果系統是非線性的(可時變),加性高斯白雜訊,最小方差意義下,是最優的線性濾波器。


而有如此嚴格的假設界定,才產生了各種之後的如EKF,UKF,PF等的結果,解決非線性時,卡爾曼濾波不是最優的情況下的問題。其中PF又可處理非高斯的估計問題。非白雜訊的問題也有相應的處理方法。這些EKF,UKF,PF等,都是非線性時變的濾波器了。


卡爾曼濾波本身是線性時變的,穩態時趨近一個線性時不變濾波器,跟發現卡爾曼濾波器之前的頻域濾波器的結果一致。也就是說,到了對偶的控制問題,variance minimization control,線性系統(可時變),加性高斯白雜訊,最小方差意義下,最優的反饋控制器也是線性時變的。而PID是線性時不變的,所以PID不是最優。類似的,系統是非線性的(可時變)時,也有類似結果。

Yamamoto教授其實也不愧為卡爾曼的學生,發明了YY Filter,也是以自己的名字命名的。有一篇文章,Signal reconstruction via H ∞ sampled-data control theory - beyond the Shannon paradigm (IEEE Xplore Abstract),關鍵詞有兩個,一個是把魯棒控制的H無窮演算法引入到數字信號處理中的sampling與reconstruction中;另一個是已經超過了香農、奈奎斯特 Nyquist 採樣定理(Nyquist)的框架了(其實原問題也已經不一樣了)。


一個朋友說,Yamamoto把這個專利賣給某日本的公司,好像是Sanyo,每一件產品抽專利費,賺了很多錢。


說到這裡,想起來之前一個朋友(搞電力電子的)說,好像是一對夫妻,原來學術界的,後來創立了一家公司 One-Cycle Control,as its name indicates,做電力電子方面的control。其實電力電子方面,現在的智能電網,有非常多的控制問題。


在網上看到兩段話:


馮純伯院士:電力系統的實踐與研究結果都表明:為抑制電力系統中的低頻振蕩,提高系統的穩定性,在多機電力系統中設置穩定器(PSS)是一種有些有效的方法。…為了進一步提高理論的普遍性,我又深入研究了PSS在鎮定電力系統中的低頻振蕩和提高系統穩定性的作用機制。由於PSS的設計只能取發電機組的本組局部信號,所以它是一種分散控制結構的穩定器。多級電力系統作為一個大系統,其中的低頻振蕩能否被PSS分散鎮定,這一問題的研究無疑有著重要的理論價值與實際意義。雖然,當時國際上已展開對PSS的分散鎮定作用的研究,但還是停留在一些現場試驗、模擬和實踐的階段,還未提高到理論上來分析和證明。然而這些結果已經表明,PSS確實能起到分散鎮定低頻振蕩的作用。我利用大系統理論中的『固定模態』的概念及其定理,證明了多機電力系統中引起低頻振蕩的機械振模,在PSS的分散控制結構下都不是『固定模態』,因而在理論上證明了PSS具有分散鎮定多機系統中低頻振蕩的作用。但是,究竟需要裝多少台PSS即可鎮定系統的低頻振蕩問題,還有待於進一步的研究。


楊叔子院士:我還記得,在80年代初期,我一方面研究了力學中採用有限元方法解決大型結構及其子結構的設計問題;另一方面,我也在學習自動控制理論中採用遞階控制演算法解決大系統及其子系統中的設計問題。當時,我以為從數學上將,這兩者是一回事。由於客觀原因,這方面研究中斷了,至今我深感可惜。當然對從事力學與自動控制研究的學者而言,這很可能是一個十分簡單的問題。但對於從事機械工程的我來說,確是具有十分有效的啟示的。

---

另一個答案:控制理論到底有什麼用? - 小心假設的回答

---

任何控制理論和控制演算法的應用,都得看具體問題具體分析。德國機械控制、日本精密控制、歐美航空控制、過程式控制制等等的工程師,為什麼別人可用上新的理論?不要某個新的理論、新的演算法有別人用上了,效果好了,如果知道了,就跟著用、跟著山寨比誰都快。但是別人沒用上之前,或者別人用上了不知道,就盲目地在那裡固步自封,說還是要靠所謂的經驗,所謂的調參,但說來說去的經驗啊,也還不是不成體系。德國機械控制、日本精密控制、歐美航空控制、過程式控制制等等的工程師的,也有經驗啊。

如果因為偏見導致中國的控制工程水平一直趕不,這可不是鬧著玩的。當然也算追趕得不容易。但也要想一想,既然是落後的,那就要反思落後在什麼地方?一定是自己本身有什麼地方做得不夠好。落後的原因有哪些?用不上、或者說不會用新理論、新演算法有沒可能是原因之一呢?如果是的話,那就ironic了!

用理論也得按照信號和系統模型的假設。當然也並不是說什麼樣的理論都能用。甚至說大部分理論是不能用的。如何甄別這兩者,才是功力所在。而不是一棒子打死。難道人類的控制科學,就到此止步了?不要人云亦云。

---

模糊控制創始人Lotfi Zadeh在The Evolution of System Analysis and Control: A Personal Perspective IEEE Xplore Abstract 一文中的對於Bellman動態規劃的回憶:

In the early "60s my doubts were not shared by many. The ascendancy of mathematical methods was unchallenged, and Lyapounov"s stability theory and differential-equations-based theory of nonlinear systems moved to the center of the stage, as did the problems relating to optimal control and systems optimization. The highly original work of Rudy Kalman on controllability, observability, and filtering was at the center of attention. Another contribution of major importance, whose impact transcended disciplinary lines, was Bellman"s development of dynamic programming. I became acquainted with Bellman"s work in 1954 and perceived dynamic programming as a powerful tool of wide applicability. I suggested to Bellman to submit to the IRE Proceedings a paper describing his work. He did so, but to my embarrassment his paper was rejected by the referees, who felt that Bellman did not provide convincing examples of practical applicability. It is ironic that about 30 years later, Bellman was awarded IEEE"s Medal of Honor for his development of dynamic programming.

---

未完待續。一己之見,歡迎補充指正~


這個問題可能剛學習了現代控制理論的朋友都會有。

現代的各種控制理論,都是針對特定問題而產生的特定解決方案。

PID雖然應用面比較廣,但在特定問題上並不十分好用。

傳統PID適用於線性時不變單輸入單輸出一階系統。在一定的修改下,這個條件可以放寬到近線性的、時變較少的、單輸入單輸出的一階或二階系統。

凡是不符合這種要求的,或者有額外要求的,全部都要使用某種現代控制理論。

不符合要求的:
多輸入多輸出的系統(必須使用狀態方程組表達)
高度非線性系統(要使用非線性控制方法)
高度時變系統(即系統參數變化很大,要使用自適應或強健控制方法)

有額外要求的:
要求系統能耗或某一特定狀態組合達到最小/最大(比如登月著陸的最小燃料消耗,最優化控制)
系統「慣性」大,延遲大,但仍然要求控制輸出要十分精準(比如化工,預測控制)
系統需要持續運行,運行期間參數變化較大,需要精準的控制輸出,不能有高頻震顫,而且絕大多數時候的運行狀態不利於系統辨識(自適應雙重控制)

現代控制方法的先進之處,在於解決了經典控制理論所不能解決或不好解決的問題。有的朋友覺得一種現代控制方法根本沒有用或者不好用,這往往只是因為他們還沒有碰到過這種方法所針對的那些問題。

把一種現代控制方法運用到某一控制問題之中,發現效果還不如PID,這有很多可能的原因。

首先,是在錯誤的問題上進行了應用。比如說把強健控制應用在線性時不變系統上,參數漂移範圍也沒有設個極小的值,最後就會覺得「哎?這怎麼還顫呢?我那PID可一點都不顫啊。」現代控制理論都是針對特定的問題而設計的,要搞清楚你要解決的問題是什麼,然後有針對性地進行使用。

其次,其中很多的方法都要求提供的系統參數或系統參數的範圍絕對精確。比方說滑模控制,給定的系統參數漂移範圍一定要可靠,如果系統參數飄出了給定的範圍,系統就可能失穩。同理,自適應雙重控制的卡爾曼/擴展卡爾曼濾波的那幾個矩陣,也要儘可能的準確。如果控制方法默認的參數漂移特性與實際特性不相符,或者非自適應、非強健控制方法需要用到的參數與實際參數不符,控制結果往往不會太好。這個問題對於最優控制和一部分非線性控制尤其顯著,因為這些控制方法都試圖把系統潛力吃干挖凈,一旦系統特性與實際有所不同,實際控制效果就會與紙面效果相差甚遠。而PID控制,由於對系統的潛力並沒有深挖,所以對參數變化並沒有那麼敏感。


先放一張圖,周克敏先生那本《Robust and Optimal Control》中的:

先答題,然後發散一下談談個人對控制理論發展的看法。1)現代的先進控制理論先進在哪裡?

  • PID控制器的出現甚至早於經典控制理論的崛起,比例、積分、微分這三個基本的元素至今仍在不計其數的控制領域發揮著極大的作用。但是傳統的PID控制器實際上就像上圖中拿榔頭的工程師一樣,是一種有效但是粗糙的方法。它的最大問題是沒有一個明確的目標函數(代價函數或者優化準則),這就導致:1) PID控制器的調參只能依靠經驗;2) PID控制器的設計只能是使系統達到某種可以接受的狀態,控制工程師無法回答是否存在更優的PID控制器。
  • 現代的先進控制理論如果說先進在哪裡,我認為是給控制器的設計提供了更多的框架,這些框架具有明確的優化目標,最重要的是這使得控制理論的發展與數學、計算機科學的發展牢牢的綁在了一起。實際上,我的很多老師認為控制理論最後的高潮是上世紀80年代魯棒控制的興起。之後,控制理論的學者們只好眼巴巴的等著數學和計算機科學中出現新成果,然後揉進控制理論中,這也是為什麼題主覺得現在做控制研究的大都是搞數學的。起碼Automatica和TAC這兩大控制期刊現在看起來更像數學刊物。

2)如何評價在PID控制器份額在95%條件下穩定性遜色的先進控制系統?

  • 其實現在工程中應用的PID也不再是簡單的比例、微分、積分三個元素的線性組合了,一些調整能夠讓PID控制器發揮的更好,調參更有目的性。但要知道,很多對PID的改進是基於控制理論發展的,沒有對控制理論的研究,PID不會有現在這麼強大的力量。所以雖然近20年控制理論沒有什麼令人振奮的成果,很多大師也將目光投向了其他領域,但是控制技術並不是說已經能夠完全解決人們遇到的問題。而且據我所知也還是有很多老師在做很有價值的工作。

=====================下面屬於發散的內容=====================
聊些題外話把,實際上PID和新的控制理論並不是水火不相容的對立的,他們的關係很有趣。

  • 從出發點說,它們是完全不同的控制方法。PID是找到了控制世界的三種最基本的元素,比例、積分、微分,把它們優化組合搭積木一樣完成控制的目標。而現代的先進控制方法則一定是基於某種優化指標的,然後通過設計演算法來達到優化指標從而實現控制。
  • 從表現形態而言,它們又表現出很大的相似。以Lyapunov穩定性為準則設計出的控制器大都是PD控制器(例如backstepping,滑模,因為積分會導致系統穩定性下降),LQ最後的表現形式也是PD,以至於有人為了消除模型參數不準確帶來的穩態誤差,又把積分加回到這些控制器里去。至於自適應控制,模型預測控制這一類則是可以看成濾波器/觀測器+PID控制器的形式。非線性系統里的逆系統方法也是先把非線性系統給線性化了,再用線性化的控制器去控制新系統,不用說大部分想到的還是用PID。

一個系統的控制效果也不是由控制演算法一個因素決定的,感測器、執行機構、反饋迴路的選擇等等都對控制效果影響很大。有時我也想用新演算法,但很多時候用戶對新演算法總不是很放心,甚至對計算機都不是很放心,發文章或項目答辯時候也總有專家問,你搞這個東西搞這麼花俏有PID效果好嗎?有時也確實令人無語。因為沒人知道PID能調成什麼樣子,可能要多好有多好,也有可能一頭鑽進淤泥里出不來。


推薦看一下K.J.Astrom的論文,The future of PID control. 先進控制與PID並不是誰替代誰或者說誰比誰更厲害,兩者應用場景不一樣。就過程式控制制而言,先進控制往往用在PID解決不了問題的地方(比如多變數,大滯後,大慣性系統)。以模型預測控制為例,它可以在控制量、被控量有限制的條件下,實現目標函數最優狀況下的控制,而PID是完全沒有這種功能的。值得注意的是,應用先進控制的時候,底層的控制往往仍然是通過PID控制的(比如閥門位置、流量等),先進控制器的輸出一般就是更低層次PID控制器的設定值。


先填個坑。本科自動化,研究生電氣。記得有次華電的一位實踐派教授來我們學校講座,談到現代控制與pid說了一句很極端的話:用pid就能解決我們電廠,生產線的大部分問題,現代控制理論很多時候都只是停留在紙面或者matlab里。
在電廠等領域,系統穩定/安全優先順序會很高,也不允許拿不成熟的控制方式/設備進行試驗。可能也會限制現代控制演算法的應用。
個人覺得選擇pid/現控很大程度由控制對象/執行器決定。(澳大利亞一搞無人機的過來講座,他們無人機的控制演算法也就是pid,我平時用在四旋翼或者雲台上的也就是pid/pd,因為對於無刷直流電機,基於改變pwm占空比的pid已經很成熟,有效,而gyo/acc的姿態信息獲取相反因為傳統常用的濾波演算法沒辦法達到很高要求,反而現控里的kf或ekf倍受到大家的青睞,想像下在72m主頻的mcu里跑矩陣運算的場景吧)


先進控制確實有太多應用了,比如我們組的大老闆做神經網路的,他把神經網路與其他演算法的結合用到了機器人,讓機器人有「腦」。
另外,現在的sensor日益精密,依賴數據做決定的控制也越來越多,普通的pid可能達不到參數自適應的效果。況且pid的設計要靠已知系統參數,好多系統參數無從得知,如何設計pid就會成為問題。所以pid越來越滿足不了需求。
還有行業的特殊性就決定他覺得用pid挺好,達到效果,又不用請人花錢做先進控制,為什麼要用先進的。畢竟工業界還是要賺錢有效益的,電廠停個十天半個月更新大系統,新系統上了還要費勁調試,換控制系統有什麼用, 這十幾天大家要不要用電啊,我們電廠要不要賣電啊,我們電廠連續安全運行的記錄咋辦啊。等。。。。


鄙人做過關於控制方面的項目。我覺得,控制的核心是演算法。控制的基石是PID。首先不管其衍生的微分先行,積分分離,在更進一層的基於BP-PID,FUZZY-PID還是智能控制,都基於傳統的PID思想。另外在自己設計控制策略的時候也很多演算法最終可通過PID思想來解釋(可能自己太low )。
但是對於現如今很多非線性系統,僅僅用傳統PID控制演算法是很難滿足控制要求,或改良過其他演算法輔助。通知控制的精細上還和控制器,外圍硬體有關。
so,我覺得現代控制理論的先進性在於適應性強,穩定性好。另外我覺得理科側重理論研究,工科側重實際動手能力,因此在控制方面需要兩方的配合。鄙人視野淺薄,歡迎指正。


分享一個我之前的認識,從擾動角度考慮。

  • 問題引出

一開始,人們想要控制機器人運動時,一般根據目標軌跡與機器人的逆模型,反算出所需的力矩,再把這個力矩發送給電機,這樣就大功告成啦(圖1)。然而事實卻不盡人意,機器人著了魔似得,竟然不聽我們的話跑偏了。事後分析,發現了影響了我們對機器人的控制:外界的擾動。

圖1 開環控制框圖

討厭的擾動來源與哪呢。它主要有兩個:一個是環境施加的,比如人為對機器人施加力,風帶來的力等等(環境擾動),這種擾動我們一般可通過改變環境,使其處於較小的狀態;另一個來源是由於建模不精確和系統參數辨識不精確帶來的(系統擾動)。要想機器人聽話,我們就得想方設法幫助機器人消除系統擾動,逃離魔掌。環境擾動一般可通過改變對象所處的環境來減小,我們這裡更關心如何消除系統干擾的影響。

  • 模擬研究

瓦特創造性地將系統的輸出反饋到控制器中,經過後來人的完善,奠定了PID反饋控制在控制中舉足輕重的地位(圖2)。我們結合Simulink(圖3)做個簡單的模擬研究。

圖2 PID閉環控制框圖

圖3 SImulink建模圖

先在無擾動的情況下整定好一組PID參數值,然後測試了兩種不同程度的擾動(小擾動(1*sin)-圖4,大擾動(10*sin)-圖5),可以看出,當擾動較小時,PID可以將其壓制地很好,可當擾動過大時,PID就有心無力了......

圖4 小擾動Amp=1

圖5 大擾動Amp=10

  • 理論解釋

我們只結合控制框圖,來直觀的解釋模擬的結果。外界擾動經過反饋迴路後,會產生一個附加擾動,試想如果附加擾動能抵消外界擾動,那擾動不就消除了嘛,這也是PID反饋控制能壓制外界擾動的原理(圖6)。

圖6 PID工作原理

回顧之前我們介紹的系統擾動來源。如果我們只用PID反饋控制,相當於我們不需要任何動力學建模,那我們最終設定的PID參數並不能完美適合系統,相當於引入了很大的系統擾動,這樣我們不能完美地控制機器人。既然我們靠反饋無法把擾動全壓下去,那我們是否可以考慮,通過預測外界擾動,再通過前饋補償來解決呢?如圖7。這樣,如果外界擾動是10,我們前饋補償可以消滅掉9,那剩餘的1可由PID反饋輕鬆消滅掉。於是乎,我們需要構建一個由PID反饋控制+基於系統建模的前饋控制的控制器。

圖7 前饋+反饋控制


而前饋控制器的設計得基於李雅普諾夫函數和狀態空間理論而設計。


是95%的控制系統只用了PID,還是95%的控制系統包含了PID?

這95%是效果可以接受湊合,還是尚待提高只是沒有找到更好的演算法?

那5%效果是差不多,還是更好?

大趨勢是那5%是在增加還是再減小?


簡單的說就是現實中幾乎所有控制器都是在勉強實現控制,都是各種限定條件下的,沒有普適的控制器,所以才研究現代控制器,可隨被控對象變化的控制器。


因為PID這種形式透露了線性系統的本質,系統是一個由輸入信息到輸出信息的變換過程。而這種變換不論多麼複雜,從邏輯上輸出信號就只能來自三種來源:當前時刻的信息輸入,歷史過往的信息記錄,以及未來信息的預測。而在一個線性系統中這正好對應了比例,積分,和微分三種操作。
所以PID只是一種表現形式,把複雜的控制器傳遞函數整理成這樣比較便於更直觀的理解。一般階數不太高的線形控制器不管是用什麼方法設計出來的,都可以整理成PID加上一個濾波器或是狀態觀測器這樣的結構,但這不代表他們還是用經典控制方法。

我工作中用到的機器人運動控制核心演算法在代碼實現上就是一個兩層環的PI。但實際上相關的參數加上各個反饋迴路里的低通濾波參數都是有一整套基於系統識別,最優控制已及魯棒控制的演算法在後面設計出來的。妥妥的現代控制思想。


感覺很多場合PID雖然能夠解決大部分問題,但其控制效果也許與先進控制相比,還是有差距的。比如在化工控制系統中,要求精確控制反應器溫度、濃度的同時,為了節約能源還要求加熱量最小化,這樣的附加要求只有MPC能完成得很好,技術在進步。在很多複雜系統的控制上PID會逐漸被取代


個人感覺很多先進的控制方法都是建立在可建模的基礎上的。對於可精確建模的系統,現代先進控制理論必然大幅領先。舉個例子,對於一個已知的高階系統(線性系統),使用現代控制理論,建立狀態空間模型,應用ackermann演算法配置極點,在整個卡爾曼濾波器估計狀態,效果應該優於PID控制(PID控制單就配極點就夠令人頭疼了)。
但是,很多過程無法精確建模,PID好調,所以還是有用武之地的。反正我是不想用模糊控制等一大堆所謂的先進控制,真心沒看出先進到哪裡,反而不如PID好調。


不知道題主的數據從哪裡得來的?95%這麼精確,那麼都是什麼領域,什麼地方呢?

首先,題主說的「PID控制器」這個詞,那麼我個人理解是通用的一些儀器儀錶「PID控制器」,類似於這種:

這種通用控制器,對於很多控制系統來講,確實沒辦法用,因為他的採樣精度、採樣頻率、PID演算法都是固定死的,不能進行自由調節。那麼別說和先進的控制理論作對比,就是和專用的PID控制器做對比都不行。

實際上現在的先進控制理論大多都是依託於PID控制技術發展而來的,其根本就是PID控制,只不過根據具體的使用環境進行調整,使之更加適用於某個領域而已,所以你說先進在哪裡?自適應控制、魯棒控制、模糊控制、神經網路控制等等這些都是在PID基礎上發展起來不同應用領域的專業控制技術,你說先進在哪裡?


我覺得控制演算法應該取決於控制對象,將對象深入了解了,在此基礎之上再去討論哪種控制理論適用為好。
在學校,確實有僅為了發文章而套用某種理論的事情。工程上,還是適用為好。


我從我熟悉的角度拋個磚頭。
如上面答主們所講,PID在工程領域大多數用於姿態控制,在模型不精確的情況下,通過反饋,得到一個可用的方案。
而像最優控制應用的較多,一方面常與PID結合起來使用,另一方面應用於導引演算法領域。
卡爾曼濾波及各種濾波演算法在導航領域大量使用。這其中還牽扯到了為什麼PID使用廣泛的另一個原因,因為它要求的反饋量容易測量,元器件成熟。
模糊控制這些智能控制演算法經常與PID結合,單獨使用的話,我印象里日本人在H系列運載火箭的地面系統中有應用,達到了24值守的效果,公開文獻看到的。
其他的如魯棒什麼的我沒用過,就不胡說八道了,韓京清的ADRC聽說實用效果也不錯。
關於現代控制理論,其實在應用PID時,很少使用簡單的PID控制方法,都是寫成矩陣的形式,就個人而言,看上去是PID,其實摻雜了大量線性控制理論的工作在裡面,分不清楚了。

當然,以上只是單純從控制的角度講。如果考慮到強非線性的傳動系統,越來越多的脈衝發動機,PID早已無法滿足控制的需求,大量的新方法也在應用過程中。

我個人的感覺是,在每一個細分領域,當出現了一兩種經典解決方案時,其他很多都是基於此的各種改型,創造力沒有現實激勵了後就驟然降低。

對了,像前面提到的系統辯識,這也是很複雜很複雜的一方面。前景很廣闊,關鍵是什麼,是沒有足夠的錢去實物上真的試試新東西,所以現在很多搞控制的人去買無人機。


控制精度和控制成本往往不能兼得。 PID也可能是控制成本高且精度差。在一個特定的領域可能只用PID, 然而自控是一門獨立的學科, 不能因為某一領域只在用PID就不讓自控理論在其他領域進行應用吧???


這個問題,讓我想起以前百度下載的一篇文檔,

我對它的評價正如它的名字一樣
沒看到代碼之前,看理論浪費我不少精力..
後來我都不看理論了..


推薦閱讀:

如何選購掃地機器人?
做控制、機器人等演算法工程師是怎樣一種體驗?
如何評價高博的《視覺SLAM十四講》?
國產工業機器人目前發展到了什麼水平?
2015 DARPA 決賽中韓國隊的 DRC Hubo 是如何最終拔得頭籌的?

TAG:機器人 | 自動化 | 無人機Drone | 控制理論 | 卡爾曼濾波KalmanFilter |