記得本科的時候,上自動控制課的時候接觸過PID控制器,也用SIMULINK模擬過,但其實理解的不夠深入。上次和小夥伴吃完飯提起來PID的時候,整個腦子一個一片懵逼。於是乎,想review一下這個topic. 看看到底什麼是PID,怎麼理解PID控制?

PID控制理論是由觀察舵手的動作而來

PID控制器可以追溯到1890年代的調速器設計。PID控制器是在船舶自動操作系統中漸漸發展。但凡有點自控理論基礎的,應該對下圖很熟悉了:

再配上非常dry的數學公式:

這就是PID控制器。好dry, 其實真心挺難理解的。怎麼就一會積分一會微分?為什麼三項相加不是相乘?為什麼?為什麼?為什麼?不如帶著這種傻白甜的心態,開始嘗試理解以上這些乾貨吧。

一般PID的控制結果都如下圖,非常優美的彩色曲線:

PID的控制結果舉例

也就是說我們的目標就是讓紅的曲線最終可以儘可能靠近藍色曲線,越近越好,最好完全重合。這種思路,不禁讓我聯想到卡爾曼濾波器的功能,讓估計值儘可能的接近真實值。雖然前者是控制領域,後者是估計領域,但會不會有些什麼相通的地方呢?咱們接著往下挖。

其實我也是想了半天,感覺有點牽強,但硬著頭皮往下推到試試看吧。

根據貝葉斯框架,很容易把最前面的那個圖的數學模型寫出來,我們這一次對output信號做一個最優估計:

貝葉斯後驗概率表達式
PID數學模型框圖

接下來,嘗試解釋一下貝葉斯公式上面的三項和實際物理意義之間的關係:

(1)首先最左邊一項:

likelihood

是likelihood項,也就是最基本的相似度定義,這裡如果我們用L1 norm 來度量r(t)和y(t)之間的距離,也就是e(t), 當然可以在前面加一個係數,表示權重,這是一個非常工程的做法,於是我們就得到了:

likelihood的具體表達式

(2)接下來是第二項:

預測項

是預測項,也就是基於上一時刻的值,來預測這一時刻的值。那麼在簡單的PID連續時間控制中,我們可以通過求一階級導數來預測下一時刻的值,當然前面也可以加一個係數來表示權重,於是我們就得到了:

預測項的具體表達式

(3)最後就是第三項了:

先驗項

是先驗項,也就是代表過去的信息。由於我們不僅知道歷史上所有的r值, 也知道所有的y值,所以我們可以將上面的公式鏈式展開:

先驗項展開

所以,相當於過去所有誤差相乘,然而對概率分布函數取ln, 得到能量函數後就成了相加,如果在時間域上是連續的,那麼就成為了積分表達:

先驗項的具體表達

驚奇的發現,把以上三相合在一起,就表達了PID的經典數學公式,這樣理解雖然有點曲折,不過也從一個側面證明很多理論其實是相同的,貝葉斯框架還是非常強大的,往往能夠深刻的理解一些東西。

以上推導也許有不對的地方,並不保證正確性,所以有興趣的朋友可以大概看看,如果有想法或者建議,可以留言或者私信我,非常樂意一起討論。


推薦閱讀:
相关文章