PID從20世紀(jì)二三十年代開始被工業(yè)界廣泛應(yīng)用,戲法變了好幾十年,也該換換花樣了。PID說一千道一萬,還是經(jīng)典控制理論的產(chǎn)物。20世紀(jì)五六十年代時(shí),什么都要現(xiàn)代派:建筑從經(jīng)典的柱式、比例、細(xì)節(jié)的象征意義,變到“形式服從功能”的鋼架玻璃盒子;汽車從用機(jī)器牽引的馬車,變到流線型的鋼鐵藝術(shù);控制理論也要緊跟形勢(shì),要現(xiàn)代化。于是,美國人魯?shù)婪颉た柭≈赝瞥鰹V波器·····現(xiàn)代控制理論。昌暉儀表網(wǎng)技術(shù)文庫欄目以大話形式推出一系列介紹控制理論的文章,分別介紹線性控制、最優(yōu)控制、離散控制模型與辨識(shí)、自適應(yīng)控制模型預(yù)估控制方面的內(nèi)容。
大話現(xiàn)代控制理論之線性控制篇
大家都看過舞龍吧?一個(gè)張牙舞爪的龍頭氣咻咻地追逐著一個(gè)大繡球,龍身子扭來扭去,還時(shí)不時(shí)跳那么一兩下。中國春節(jié)沒有舞龍,就和西方人的圣誕節(jié)沒有圣誕老人一樣不可思議。想象一下,如果這是一條眼睛看不見的盲龍,只能通過一個(gè)人捏著龍尾巴在后面指揮,然后再通過龍身體里的人一個(gè)接一個(gè)地傳遞控制指令,最后使龍頭咬住繡球。這顯然是一個(gè)動(dòng)態(tài)系統(tǒng),龍身越長(zhǎng),人越多,動(dòng)態(tài)響應(yīng)越遲緩。如果只看龍頭的位置,只操控龍尾巴,而忽略龍身子的動(dòng)態(tài),那就是所謂的輸入-輸出系統(tǒng)。經(jīng)典控制理論就是建立在輸入-輸出系統(tǒng)的基礎(chǔ)上的。對(duì)于很多常見的應(yīng)用,這就足夠了。
但是卡爾曼不滿足于“足夠”。龍頭當(dāng)然要看住,龍尾巴當(dāng)然要捏住,但龍身體為什么就要忽略呢?要是能夠看住龍身體,甚至操縱龍身體,也就是說,不光要控制龍頭龍尾巴,還要控制整個(gè)龍身體,那豈不更好?這就是狀態(tài)空間的概念:將一個(gè)系統(tǒng)分解為輸入、輸出和狀態(tài)。輸出本身也是一個(gè)狀態(tài),或者是狀態(tài)的一個(gè)組合。在數(shù)學(xué)上,卡爾曼的狀態(tài)空間方法就是將一個(gè)高階微分方程分解成一組聯(lián)立的一階微分方程,這樣可以使用很多線性代數(shù)的工具,在表述上也比較簡(jiǎn)潔、明了。
卡爾曼是一個(gè)數(shù)學(xué)家,數(shù)學(xué)家的想法就是和工程師不一樣。工程師腦子里轉(zhuǎn)的第一個(gè)念頭就是“我怎么控制這個(gè)東西?增益少?控制器結(jié)構(gòu)是什么樣的?”數(shù)學(xué)家想的卻是什么解的存在性、唯一性之類虛頭巴腦的東西。不過呢,這么說數(shù)學(xué)家也不公平。好多時(shí)候,工程師憑想象和“實(shí)干”辛苦了半天,發(fā)現(xiàn)想法完全不靠譜,結(jié)果完全不合情理,這時(shí)才想起那些存在性、唯一性什么的還是有用的。還記得永動(dòng)機(jī)嗎?這不是勤奮加小聰明就可以發(fā)明的,不可能的就是不可能的。
圖1 本來龍尾巴這一頭的控制指令可以通過一個(gè)人、一個(gè)人往下傳,控制整個(gè)舞龍動(dòng)作的,但中間有兩個(gè)人開小差,這龍就舞不起來了,換句話說,不可控了
還是回過來看這條龍?,F(xiàn)在,龍頭、龍尾巴、龍?bào)w都要看,不光要看,還要直接拿捏住每一個(gè)環(huán)節(jié)。但是,這龍不是想看就看得了的,不是想舞就舞得了的。說到“看”,直接能夠測(cè)量/觀測(cè)的狀態(tài)在實(shí)際上是不多的,所謂看,實(shí)際上是估算。要是知道龍身體有多少節(jié)(就是有多少個(gè)人在下面撐著啦),龍身體的彈性/韌性有多少,那么捏住龍尾巴抖一抖,再看看龍頭最后落到哪里,是可以估算出龍身體每一節(jié)的位置的,這叫作狀態(tài)觀測(cè)。那么,要是這龍中間有幾個(gè)人開小差,手不好好拉住,那再捏住龍尾巴亂抖也沒用,
這時(shí)系統(tǒng)中的部分狀態(tài)就是不可觀測(cè)的。如果你一聲令下,部分人充耳不聞,根本不理會(huì)你的指揮,或者說控制命令根本傳不到這些人這里,那這些狀態(tài)就是不可控制的??柭鼜臄?shù)學(xué)上推導(dǎo)出不可控和不可觀的條件,在根本上解決了什么時(shí)候才不瞎耽誤工夫的問題。這是控制理論的一個(gè)重要里程碑。
再來看這條龍。如果要看這條龍整齊不整齊,排成縱列的容易看清楚;如果要清點(diǎn)人數(shù),看每一個(gè)人的動(dòng)作,排成橫列更容易看清楚。但是無論怎么排,這條龍還是這條龍,只是看的角度不同。早些年中國的春節(jié)舞龍還沒有在美國的中國城里鬧騰起來,不知道卡爾曼有沒有看到過舞龍,反正他把數(shù)學(xué)上的線性變換和線性空間的理論搬到控制里面,從此,搞控制的人有了新工具:一個(gè)系統(tǒng)橫著看不順眼的話,可以豎著看。興趣來了,還可以斜著看、倒著看、擰著看,因?yàn)闊o論怎么看,系統(tǒng)的本質(zhì)是一樣的。但是不同的角度有不同的用處,有的角度設(shè)計(jì)控制器容易一點(diǎn),有的角度分析系統(tǒng)的穩(wěn)定性容易點(diǎn),諸如此類。在控制理論里,有各種特診的形式就叫這個(gè)那個(gè)“標(biāo)準(zhǔn)型”。這是控制理論的有一個(gè)里程碑。
這個(gè)“觀測(cè)狀態(tài)的最終目的還是控制。只用輸出的反饋叫作輸出反饋,經(jīng)典控制理論里的反饋都可以歸到輸出反饋里,但是用狀態(tài)進(jìn)行反饋的就叫狀態(tài)反饋了。輸出反饋對(duì)常見系統(tǒng)已經(jīng)很有效了,但狀態(tài)反饋要猛得多,可以對(duì)所有零極點(diǎn)精確配置,而不是像經(jīng)典方法那樣,只配置主要零極點(diǎn),其他的只是“趕”到左半平面(穩(wěn)定區(qū)域)足夠遠(yuǎn)的地方就行了。想象一下,一個(gè)系統(tǒng)的所有狀態(tài)都被牢牢地瞄住,所有狀態(tài)都乖乖地聽從調(diào)遣,那是何等的威風(fēng)?
盡管學(xué)控制的人都要學(xué)現(xiàn)代控制理論,但大多數(shù)人記得卡爾曼還是因?yàn)槟莻€(gè)卡爾曼濾波器(Kalman Filter)。說它是濾波器,其實(shí)是一個(gè)狀態(tài)觀測(cè)器(State Observer),是用來從輸入和輸出“重構(gòu)”系統(tǒng)狀態(tài)的。這重構(gòu)聽著玄妙,其實(shí)不復(fù)雜。不是有系統(tǒng)的數(shù)學(xué)模型嗎?只要模型精確,給它和真實(shí)系統(tǒng)一樣的輸入,它不就乖乖地把系統(tǒng)狀態(tài)給復(fù)現(xiàn)出來了嗎?且慢,微分方程的解不光由微分方程本身決定,還有一個(gè)初始條件,要是初始條件不對(duì),即使微分方程的解的形式是正確的,但是數(shù)值永遠(yuǎn)差一拍??柭谙到y(tǒng)模型的微分方程后再加了一個(gè)尾巴,把實(shí)際系統(tǒng)輸出和模型計(jì)算的理論輸出相比較,再乘上一個(gè)校正因子,形成一個(gè)實(shí)際上的狀態(tài)反饋,把狀態(tài)重構(gòu)的偏差漸進(jìn)地消除,解決了未知或者不確定初始條件和其他的系統(tǒng)誤差問題。
圖2 根據(jù)經(jīng)驗(yàn)(數(shù)學(xué)模型)推斷,然后根據(jù)斷斷續(xù)續(xù)的情報(bào)(實(shí)時(shí)測(cè)量)修正,來推測(cè)系統(tǒng)狀態(tài),這就是卡爾曼濾波的基本原理
卡爾曼濾波器最精妙之處,在于卡爾曼推導(dǎo)出一個(gè)系統(tǒng)的方法,可以考慮進(jìn)測(cè)量噪聲和系統(tǒng)內(nèi)在的隨機(jī)噪聲,根據(jù)信噪比來決定上述校正因子的大小。如果測(cè)量噪聲主導(dǎo),那最優(yōu)狀態(tài)估計(jì)主要基于從系統(tǒng)模型重構(gòu);如果系統(tǒng)本質(zhì)噪聲主導(dǎo),那最優(yōu)狀態(tài)估計(jì)主要依賴輸出測(cè)量的校正。這是符合實(shí)際生活經(jīng)驗(yàn)的。在戰(zhàn)斗中,如果“戰(zhàn)爭(zhēng)之霧”濃重,無法得到及時(shí)、確切的敵人情報(bào),有經(jīng)驗(yàn)的指揮官會(huì)根據(jù)先前已知的確切情報(bào)和對(duì)敵人通常行為的了解,來憑經(jīng)驗(yàn)對(duì)當(dāng)前敵人的狀態(tài)進(jìn)行推斷;如果敵人根本沒有章法,打仗時(shí)還常常會(huì)莫名其妙亂跑,串個(gè)門、敘個(gè)舊什么的,那就只有根據(jù)當(dāng)前戰(zhàn)線位置反過來推斷了。
預(yù)估-校正”的構(gòu)型其實(shí)不是卡爾曼的獨(dú)創(chuàng),卡爾·隆伯格(Carl Luenburg)也得出了類似的結(jié)構(gòu),但他是從系統(tǒng)穩(wěn)定性角度出發(fā)的,用極點(diǎn)配置的辦法來決定校正因子,并不直接考慮測(cè)量噪聲和系統(tǒng)噪聲的問題。
同樣的結(jié)構(gòu)大量用于各種“預(yù)測(cè)-校正”模型結(jié)構(gòu),在工業(yè)上也得到很多應(yīng)用。比如聚合反應(yīng)器的分子重量分布可以用反應(yīng)器的溫度、進(jìn)料配比、催化劑等來間接計(jì)算,但不夠精確,也無法把林林總總的無法測(cè)量的干擾因素統(tǒng)統(tǒng)包括進(jìn)數(shù)學(xué)模型里。這時(shí)用定時(shí)采樣、中心分析室測(cè)定的真實(shí)值來定期與模型估計(jì)值相比較,計(jì)入校正因子(業(yè)內(nèi)也稱為“信任因子”,代表對(duì)模型計(jì)算和分析結(jié)果的相對(duì)信任程度)后,就可以結(jié)合數(shù)學(xué)模型及時(shí)的特點(diǎn)和分析結(jié)果精確的特點(diǎn),滿足實(shí)時(shí)控制的要求,這或許可以算作簡(jiǎn)易的卡爾曼濾波器。
卡爾曼濾波器最早的應(yīng)用還是在雷達(dá)上。所謂邊掃描邊跟蹤,就是用卡爾曼濾波器根據(jù)飛機(jī)的動(dòng)態(tài)模型估計(jì)敵機(jī)的位置,再由雷達(dá)的間隙掃描結(jié)果來實(shí)際校正。實(shí)際應(yīng)用中還有一個(gè)典型的問題:有時(shí)候,對(duì)同一個(gè)變量可以有好幾個(gè)測(cè)量值可用,比如有的比較間接而且不甚精確,但很快捷;有的是直接測(cè)量,很精確但有很大的滯后,這時(shí)可以用卡爾曼濾波器把不同來源的數(shù)據(jù)按不同的信噪比加權(quán)“整合”起來,也算是簡(jiǎn)化版的“信息融合”。關(guān)于信息融合,后面還會(huì)更多地談到。
除了卡爾曼濾波器外,卡爾曼的理論在實(shí)際中用得不多,但是卡爾曼建立了一個(gè)出色的理論框架,對(duì)理解和研究控制問題有極大的作用。
順便說一句,卡爾曼的理論基本局限于線形系統(tǒng),也就是說,十塊大洋買一袋米,二十塊大洋就買兩袋米,都是成比例的。實(shí)際系統(tǒng)中有很多非線性的問題,兩千塊大洋還能買兩百袋米,但兩千萬大洋就要看米倉有沒有貨了,不是錢越多,買的米越多,有一個(gè)“飽和”的問題。另一方面,要是米倉有足夠的貨,兩千萬大洋的集團(tuán)購買力強(qiáng),或許就可以討價(jià)還價(jià)出一個(gè)折扣價(jià),買三百萬袋米了。這些只是非線性的簡(jiǎn)單例子。所有偏離線性的問題都是非線性的。非線性的問題研究起來要復(fù)雜得多。實(shí)際系統(tǒng)還有其他特性,有的是所謂時(shí)變系統(tǒng),像宇宙火箭,其重量隨時(shí)間和燃料的消耗而變,系統(tǒng)特性當(dāng)然也就變了。很多問題都是多變量的,像汽車轉(zhuǎn)彎,不光方向盤的轉(zhuǎn)動(dòng)是一個(gè)輸入,加速和制動(dòng)也是輸入變量。狀態(tài)空間的理論在數(shù)學(xué)表述上為線性、非線性、單變量、多變量、時(shí)變、時(shí)不變系統(tǒng)提供了一個(gè)統(tǒng)一的框架,這是卡爾曼最大的貢獻(xiàn)。
在實(shí)用中,可以把非線性系統(tǒng)按當(dāng)前條件用泰勒級(jí)數(shù)展開,取線性項(xiàng)作為近似,這樣又可以把卡爾曼的經(jīng)典線性理論用上了。在實(shí)際使用中,隨當(dāng)前條件的漂移,重新計(jì)算近似的線性項(xiàng),與時(shí)俱進(jìn),這就是簡(jiǎn)單的自適應(yīng)卡爾曼濾波,也叫作增廣卡爾曼濾波。不過,其是否有效取決于很多因素,本來就接近線性的容易成功,但這也不需要費(fèi)自適應(yīng)這個(gè)事,鎖定一個(gè)近似線性項(xiàng)就差不多了;高度本質(zhì)非線性的就比較難,但這恰恰是需要自適應(yīng)的地方。沒辦法,世界上的事情常常就是這么擰:好做的不需要,難做的做不了。
大話現(xiàn)代控制理論之線性控制篇的內(nèi)容到此結(jié)束。歡迎大家繼續(xù)關(guān)注《大話現(xiàn)代控制理論之最優(yōu)控制篇》。
作者:[加]晨楓