您理解的自動控制的知識結構體系是什麼樣的?

初步涉足控制理論,還沒有建立知識結構體系。想沿著一個方向學下去,不知各位前輩對控制理論的結構體系有何見解?
目前看的書有限,自動化控制(基於傳遞函數),現代控制理論(基於狀態空間),非線性控制(基於李雅普諾夫理論),還有沒學習的:模糊控制,魯棒控制、系統辨識、神經網路……等等太多概念,這些是遞進關係,還是並列呢?是否和某些概念屬於一個子分支呢?還有比較先進的控制理念有哪些,是否是建立在現有體系之上?

各位前輩是否可以「描繪」一個粗糙的脈絡圖,這樣學習的更有體系一些。


自動控制有哪些鮮為人知的應用? - 知乎

之前寫過一個類似的,可能你會用得到


我好像答非所問了,題主問的是整個控制體系的知識結構,囧。等大神來回答吧

原答案--------------------------

最近在重學自控原理,跟著清華學堂在線的《自動控制理論1》視頻學習,鏈接自動控制理論(1)(自主模式)-學堂在線慕課(MOOC)平台

緒論中有一張自動控制理論知識路徑圖,放在這裡供參考,侵刪


拋磚引玉吧。

首先了解系統的概念,這裡討論主要動態的系統。系統這個概念非常抽象,接受輸入,產生輸出的,都是系統。舉例說明,一個電機,輸入電流產生一定轉速,這裡,電機就是一個系統,其輸入為電流,輸出為轉速。控制論需要將系統轉變為數學方程後進行研究,其中經典控制論中利用transfer function來構建系統模型,而現代控制論利用state-space model來建立系統模型。

然後從控制的目的來說,我覺得有2個主要的方向,stabilization和tracking。

這兩層是遞進的關係,面對一個系統,我們首先要做的是確定系統的穩定性,系統穩定性判據包括考慮phase margin和gain margin,根軌跡(以上為經典控制論),系統矩陣的eigenvalue是否在複平面左半平面(此為現代控制論),系統不穩定,就要先用各種辦法讓系統穩定,例如調整控制器的gain,pole-placement等等。

tracking,就是要跟蹤某個信號,比如希望電機轉速達到500轉每秒。這裡需要跟蹤的信號就是一個轉速值。

如何實現追蹤呢,還是以電機轉速為例,我們則需要一個感測器提供電機的轉速信息。一般的做法就是,將目標值-實際值,得到一個error信號,這個信號被輸入到控制器里,控制器由這個error輸出相應的輸入(這個例子里是電流)來使得電機達到相應轉速。

一般而言,我們主要要研究如何設計這個將error轉變為輸出的東西,即控制器。

這樣一看控制似乎包括的東西不多。

但是正如上文所提到的,控制需要首先將系統轉化為數學方程,即建模,如何建模?第一種方式:first principle modelling,即利用物理模型建立數學模型。例如一個機械手臂,可以利用拉格朗日方程來建模。也有一部分系統無法使用物理方程來建立,這一類模型的建立就可能需要利用神經網路等方式來建立

模型建立了以後,如何識別模型中的參數?例如一個倒立擺,長度l是多少?最簡單的方式可以測量。但是有很多參數無法被測量,怎麼辦?這就涉及到一個領域system identification,系統辨識。一種方式是輸入一些信號得到系統的輸出,然後根據輸入輸出數據來得到模型參數。

模型建好了,可以開始設計控制器了嗎?not really。很多時候,我們得到的模型可能是非線性的,對於此類模型,我們需要將模型做線性化(當然也可以使用非線性控制,這又是另一個大塊的內容了)。又或者模型的state太多了,我們可能需要簡化模型。

有了模型,我們才能開始利用控制理論去設計控制器。等等,這樣就完了嗎?當然還沒有。在上面的例子里,談到了感測器,很多時候,感測器是有噪音的,還有的時候,我們需要了解的量無法用感測器來檢測,這個時候怎麼辦?如果感測器有噪音,我們就可能需要用filter了(當然大部分感測器都有雜訊)。如果是後者我們就需要用狀態觀測器(state observer),用已知的測量量和數學模型結合中嘗試得到我們想要測量卻無法測量的量。

系統模型有了,且可控而且可觀,我們就可以開始設計控制器了。設計好了,但是oooops,控制器達不到想達到的效果,可能因為數學模型和實際的系統本身依然是很有差距的,或者一開始控制器可以運轉,過了一段時間以後發現效果越來越差。可能是因為系統本身的某些參數隨著時間的變化而變化。這又涉及到了一個新的領域,robust control,即系統參數在一定範圍變化時,需要設計一個控制器可以tolerate這些變化。

---------------------------------------------------------------

更新

前面主要的側重點在於線性控制,現在來講一下非線性控制吧,但是非線性控制比較沒有規律可循。前面講到對於非線性模型,我們需要線性化來分析,只是因為線性控制是一個更加簡單控制方式,如果可以將系統線性化,在大多數情況下我們更願意對線性系統做分析。而非線性控制則更複雜。

之前說到對於一個系統,我們首先要做的是stabilization,對於線性系統,我們有非常決定性的判定方式,但是非線性系統的穩定性判據,李雅普諾夫方程,是一個很蛋疼的工具,蛋疼的地方在於,如果成功找到了李雅普諾夫方程,系統可以被認為是穩定的,若找不到李雅普諾夫方程,也不能說明系統是不穩定的。並且系統的穩定性不單有穩定或不穩定,而是有local/global asymptotic/exponential stability 4種可能的穩定情況,涉及到Invariant set theorem, center manifold theoerm等一系列定理。

然後在線性系統里我們提到了可控和可觀的概念,在線性系統中,可控意味著通過state feedback可以調整這個狀態所對應的特徵值,可觀意味這該狀態可以通過測量值和數學模型建立觀測器得到。這兩個概念同樣適用於非線性系統,但是需要用Lie algebra(Lie bracket, Lie derivatives)來得到。

非線性控制方法我所接觸過的只有2種。

一種叫做feedback linearization,這個挺bug的方法就是通過feedback把一個非線性系統變成一個線性系統,但是這個bug方法的弊端是1.不是所有的非線性系統都可以適用 (check for input-state/input-output linearization conditions)2.對系統模型的精度要求非常高,如果系統模型本身並不精確,feedback linearization以後的系統就依然是個非線性系統,並且可能更加複雜。

第二種叫做sliding mode control,大意在非線性系統的解空間S內找到一個非線性空間A,在A這個空間上,所有的state都會asymptotically converge到0,然後設計控制器讓系統的state被約束在這個A空間中。(因為接觸的年代比較久遠,不知道這個解釋是否正確)

以上基本就是我理解的控制的結構體系。還有一點需要補充的可能就是優化了,但是優化真的無處不在,不知道放在哪裡說比較好,而且對於我來說,工程的最終目的都是在優化一個cost function。另外,非線性控制這一塊,可能因為我自己的理解也有限,所以不太能夠像線性控制一樣講出清晰的脈絡,實力水平有限,望見諒。


自動控制可分為兩個目標:跟蹤和鎮定,跟蹤就是沿著期望的參考信號運行,譬如飛機沿著指定的航跡飛行;鎮定是在被控對象受到擾動之後仍能維持在平衡狀態,例如飛機受到陣風等干擾之後仍能保持平衡狀態。評價控制系統的指標主要由穩定,快速和準確。

設計控制系統首先要對被控對象進行數學建模,大多數情況下是個微分方程,這個微分方程經過拉普拉斯變換之後,就變成了傳遞函數,然後可以利用學的自動控制原理進行設計控制系統。如果這個微分方程具有多個狀態變數和多個輸出,一般寫成狀態空間矩陣,然後利用現代控制理論進行設計。如果這個微分方程是非線性的則需要利用非線性控制系統來設計。自動控制(多為單輸入單輸出系統),現代控制理論(多為多輸入和多輸出系統),非線性控制理論(非線性系統)是遞進的關係。

在建模過程中,所得出的微分方程可能存在某個參數不確定,某些非線性函數未知,或者存在干擾,這時就需要利用自適應控制,神經網路控制/模糊控制,魯棒控制來解決這些問題。


跑題一個,推薦一本書吧:


機器崛起:遺失的控制論歷史

亞馬遜鏈接:

《機器崛起:遺失的控制論歷史》 托馬斯·瑞德【摘要 書評 試讀】圖書


自控、現控、非線性是遞進的

自控的關鍵是理解「穩定性」,傳遞函數只是方便實現穩定(將系統階數轉為S/Z的加減乘除),這個很基本也很易理解。

現控就是「穩定」的另一形式——與傳遞函數相對的微分方程組矩陣,個人覺得系統矩陣比傳遞函數好理解也易實現好用些。

李雅普諾夫穩定,就是不只被控變數穩定,系統的其他狀態(誤差)、狀態(誤差)導數都穩定,這所謂就全局穩定了。

私以為以上3個基本就是控制工程里的「道」了,其他的都只是術

魯棒控制的關鍵應該是基於干擾或狀態、參數、模型的不確定性,增加前饋反饋等多樣措施,以消除外界干擾對系統的狀態、甚至參數或結構的影響,保持穩定。魯棒性這詞很晦澀,用「耐X性」來理解應該會快些……

模糊控制和神經網路應該為並列的,一般統稱智能控制,一般用來做控制器,但神經網路能逼近非線性,還能做觀測器

系統辨識,其實就是建模,對被控對象或者系統建模

其餘EE,CS在控制中,都是為了對系統的數學模型進行操作。比如計算機控制,原來建模好的控制器怎麼整?對傳遞函數離散化,Z變換。執行器很慢?來設計個超快的板子或者擼個FPGA。

要了解體系,個人認為最快的方法當然還是讀下培養計劃或者教學大綱啦。

我推薦

隨便哪個學校圖書館應該都能找到,一晚上能翻完。

可見控制,電子,計算機的課程與其他學校差別不會太大,還是那個道道,穩定,李雅普諾夫穩定,然後焊板子碼程序來實現。
自動化也確實是萬金油,從最底層模電到頂層的演算法,算是打通了個遍了。聽說有的學校還學力學課程之類。但我想,只要是圍繞穩定、收斂這個「道」,那就是自動化的體系了。


經典控制和線性方面的內容姑且就不多說了,線性系統,Linear-quadratic-regulator (LQR) 都可以有最優解,操作空間著實不大。我就來說說非線性相關的控制,以及說一些Adaptive Control 相關的內容。

首先,非線性系統里有很多Real Analysis 的概念和內容,不然很多地方的證明很難理解,我這裡就捋一捋非線性里的順序。

控制系統一切的一切都從,Lyapunov Stability Theory 開始,下圖簡單表面了Lyapunov Stable和Asymptotically Stable的概念。

Lyapunov function 的構建,我們的第一反應一定是能量方程,但是問題在於用能量方程有很大的可能性只能得到Lyapunov stable 而不是Asymptotically Stable。所以這裡就用到了Barbashin-Krasovskii-LaSalle Theorem。就是說Lyapunov Stable +Barbashin-Krasovskii-LaSalle Theorem = Asymptotically Stable

當然了,用兩個定理證明Asymptotically Stable還是麻煩,或者有時候能量方程也不好使,最好還是一步構建到位,所以可以用以下的一些理論來構建Lyapunov Function:

the variable gradient, Krasovskii"s theorem, Zubov"s Theorem, Energy-Casimir 來構建

至此呢,我們已經有能力來分析一個系統的所有變數是否穩定。那下面就是Partial Stability就是說,這個系統中,有些變數我要穩定,但有些變數我完全不care,舉個例子假設說有一個航天器,我只要求它在某一個軌道上,我對於它的角度完全無所謂,那麼就用用到 Partial Stability的理論。那麼對於Time-Varying 系統來說,也是另外一種partial Stability 的問題,把t當做一個不care的變數就可以了。

下面要引入另一個概念是,Dissipativity Theory. 就是一種將能量相關係統的一種方式,當然這裡的能量實際上不一定具有物理意義。中文可能是叫做耗散系統,即它自身能量的一部分會傳到環境中,給它做的功也只有一部分被儲存為能量。Dissipativity Theory 基本可以算是 Absolute Stability theory的基礎。

Absolute Stability 解決的就是一個線性系統,有個非線性的負反饋,這個負反饋在什麼樣一個範圍里,這個系統不管怎麼樣都是穩定的,可以用Circle 和 Popov Criteria,來判定。這個也是robust stability分析的基礎。

其實到目前為止,都是如何分析一個系統,沒有任何關於如何去控制的內容,只有知道如何分析一個系統才能談控制不是。

非線性系統,可以線性化來控制,可行。但是有些情況下,非線性控制器要遠遠好過於線性控制器。特別的,系統動力學方程或者測量是非線性,擾動不能相加,performance measure function is considered as nonquadratic的時候非線性控制顯得很重要。

經過一些簡化,妥協一些普適性之後,the Hamilton-Jacobi-Bellman equation 可以作為 Lyapunov function,可以同時保證穩定和最優。

這裡僅僅說的是負反饋系統的Optimal,系統如下圖

我們這裡為了表達的更明確些就用nonlinear affine system 來說明,系統如下,不知道為什麼草稿沒有顯示公式,不知道發布以後能不能解決,如果有顯示問題一定要告訴我

dot{x} (t) = f(x(t))+G(x(t))u(t)

維數等細節,就不多說了。

L(x) = L_1(x)+L_2(x)u+u^TR_2(x)uJ(x_0,u()) = int_0^{infty}L(x)dtH(x,u) = L(x)+V^{prime}(x)(f(x)+G(x)u)

總之呢這幾個公式,聯想著線性系統的riccati equation 可以有進一步的理解。


可是現實生活中,因為很多很多的原因,系統就是不是確定的,或者本身就在變化,那該怎麼控制呢。那麼下面就要提到 Robust Control 和 Adaptive Control,但是實際上最開始讓我困惑的是這兩個區別是什麼?不都是解決系統不確定性問題的嗎?

引用一段話回答這個問題:

The fundamental differences between adaptive control design and robust control theory can be traced to the modeling and treatment of system uncertainties as well as the controller architectures. In particular, adaptive control is based on constant linearly parameterized system uncertainty models of a known structure but unknown variation, while robust control is predicated on structured and/or unstructured linear or nonlinear(possibly time-varying ) operator uncertainty models consisting of bounded variation.

所以,Adaptive 核心就是知道系統的結構,什麼叫做系統的結構:

舉個例子:

f(x) = ax^2+bxsin(t)

這裡a,b就是不確定性的來源,但是,x^2 和xsin(t)是知道的,這叫做知道結構,這樣就可以一步步按照Adaptive的流程來,然後一定就是穩定的,性能能不能滿足要求,這就兩說了。下面的任務就是優化,這裡我就也確實是還沒有了解過該怎麼優化,用基因演算法這類的應該可以,只是不知道有沒有系統化的優化方案。

以上就是我的一些理解,歡迎討論。


也是想總結一下自己的學習路線,東西記得不一定全,歡迎指正~先說一下理論吧,控制理論的學習路線應該是這樣,先學好動力學建模,再學自控原理,然後是線性系統,數字控制系統,最後學非線性控制,自適應控制。下面詳細說一下:

動力學建模: 動力學是控制的基礎。一個系統要實現有效控制的前提,首先要對這個系統建立足夠精確的模型。所以要想學好控制,首先一定要學好動力學。微分方程,拉格朗日法這些東西肯定要熟練。

自動控制原理: 這一部分主要是學好控制的基本概念。什麼是李雅普諾夫穩定,拉普拉斯變換,pid的基本概念,頻域與時域的轉換,開環與閉環傳遞函數,零極點的概念,勞斯判據,各種信號的特徵,如何通過零極點判斷穩定性,伯德圖,奈奎斯特圖。

線性系統: 這一部分要著重學幾塊內容,矩陣論要學向量空間,特徵值,特徵向量,正定矩陣,矩陣範數,約當標準型,奇異值分解,控制部分要學如何線性化非線性系統,狀態空間表達,以及如何解狀態方程,矩陣指數,可控,可觀的定義,可控標準型,可觀標準型,全狀態反饋如何計算feedback gain,如何設計observer。

數字控制系統: 現在基本上工業界所有的系統都是離散系統,所以要學習離散系統下的控制器設計,這裡要學z變換,*變化,狀態空間表達式離散化,傅里葉變化,卡爾曼濾波,zero order hold等等。我也是在這裡學的最優控制,cost function,lqr。

非線性控制: 之前我們學的這些內容都是針對線性系統,就算有非線性系統也是需要先在平衡點附近線性化過了才能適用。但是實際系統絕大多數都是非線性系統,所以這裡要直接針對非線性系統進行控制。這裡要學習如何構造李雅普諾夫函數使得最大化region of attraction。幾種stability的定義,asymptotically stable,exponentially stable等。幾種比較特殊的設計,backstepping,sontag。好像工業界基本都是用線性系統來解決問題的,非線性控制如果不做科研的話基本也不太用的到,導致我現在很多都忘了……

這些都是控制理論,控制也有很多很好的應用方向,機電系統,嵌入式系統,電機控制,汽車控制,機器人控制等。如果想以後找相關工作,上這些實用的課程其實更有用處。如果要去上這些課程,在學過線性系統以後其實都不會有太大的障礙。

暫時就先想到這麼多,如果想到別的再補充吧( ?° ?? ?°)?


謝不邀。之前遇到和一個驅動器供應商聊了一些關於電機和驅動器監測系統的要素。聊完之後,他就對我說,你要多動手探索才能真正明白其中的道理。我想要表達的意思就是,學習自動控制或者是其他的知識我個人覺得最起碼要有兩步。
一,知識的儲備。想要儲備知識,就要系統的學習它。而我覺得,很多時候所謂的系統的學習就是先找一本好書。一個知識框架是何其複雜,哪怕有童鞋給你總結好了,你也未必看的出來其中的內涵。倒不如簡單直白,認真的跟隨一本書的內容去走,例如胡壽松或者田玉平的自動控制原理都是很棒的書。樓主你現在知識量略淺,我覺得不必太在乎所謂的知識框架。先跟著書走,認真學習,等你自己對自動控制有了一定的理解之後,再去談系統學習,各類控制方法也不遲。
二,對於實際問題的思考。自動控制原理,包含的不僅僅是simulink 模擬。我覺得它裡面的理論更多的對現實模型的折射。生活中遇到的各類運動控制等,你都要認真思考它的模型才能體會到控制理論的內在含義。例如,一輛二輪車巡線行駛,它的模型是什麼?需要獲取哪些感測器數據?哪一類控制?怎樣控制?這些情況雖然常見,但並不是所有人都能看清問題。
總得來說吧,控制原理是一門包含複雜理論和現實狀態的學科。你需要有自己的知識儲備和對現實的思考才能真正的體會到控制之美。
手機碼字,有什麼語句不通的地方,多有見諒。


推薦閱讀:

自動控制有哪些鮮為人知的應用?
浙江大學自動化專業的前景?
當下看來,本科階段是否還有開設「自動化」這一專業的必要?

TAG:自動化 | 自動控制 | 自動化專業 | 控制理論 |