ad 卡尔曼_卡尔曼滤波剪影__Kalman Filtering · Make Intuitive
鋪墊用の引論
Kalman Filtering 算法是一種最優(yōu)濾波估計(jì)算法,有了它之后,就算只知道觀測(cè)對(duì)象的少量不準(zhǔn)確觀測(cè)信息也有可能對(duì)這一對(duì)象實(shí)現(xiàn)完全控制,它的Advantages和Disadvantages(Constraints)在下面分別以標(biāo)黑"匚"以及普通"匚"記錄下來(lái)。
(DIS)Advantages總覽
Can be operated on a continuous function or a discrete function;
Can handle not only stationary processes, but also non-stationary and multidimensional processes;
Faster speed;
Well suited for embedded systems, and real time problems;
Smaller memory requirements;
When information about the initial state is unknown and no prior knowledge is available, KF can be extended to EKF, thus solve the problem;
It is expected to be mixed with artificial neural networks, to gain some newer properties;
The object must be in the time domain, and the discrete model can be constructed;
The runtime is limited by the computer hardware, which leads to the singularity of the covariance matrix in the process of calculation transfer, so there will be great instability in the numerical calculation, these can be avoided by its extension such as Singular Value Filter, UD Decomposition Filter, Particle Filter;
Ordinary filtering must be recursive and applied to linear systems, while non-linearity needs to be replaced by EKF with high complexity. Recursion is also not conducive to stack management in C++.
利用分而治之的思想,可以分兩步理解這個(gè)算法:
"Filtering"的理解
這個(gè)詞由Telecommunication的信號(hào)處理工程引入,在信息傳輸過(guò)程中,噪聲使信息很難從信源準(zhǔn)確無(wú)誤地到達(dá)信宿因此,怎樣除去噪聲的影響[1],從所獲得的信息(含有噪聲等干擾因素故不準(zhǔn)確)中提取出人們想要的那一部分就成了一個(gè)重要的課題,就是專門用來(lái)解決這一問(wèn)題的操作。這種除掉噪聲的目的,可以通過(guò)
1.時(shí)域中進(jìn)行某些奇異的運(yùn)算提取出想要的信息;
頻域中將處于某些頻段信息分量提取出來(lái);
兩種方法實(shí)現(xiàn),它們都可以反過(guò)來(lái)看做是將觀測(cè)得到的數(shù)據(jù)處理后得到相應(yīng)參數(shù)的估計(jì)值,被叫做“濾波估計(jì)”,第二類濾波方法在早期濾波估計(jì)中較為常見(jiàn),它們大多是基于Fourier變換的一些應(yīng)用方法并且在信號(hào)處理領(lǐng)域大顯身手,其中,于1940被提出的Wiener濾波作為一種基于頻域的統(tǒng)計(jì)最優(yōu)濾波器,開(kāi)啟了對(duì)于隨機(jī)信號(hào)進(jìn)行處理的先河,然而它因?yàn)轭l域的限制,只能處理一維平穩(wěn)隨機(jī)信號(hào)。而第一類濾波方法是近代才興起的,它們有更加廣泛的應(yīng)用范圍以及更優(yōu)良的性能,即如何從已知的(不精確)數(shù)據(jù)中估計(jì)出準(zhǔn)確信息,具有代表性且最為常用的就是Kalman Filtering算法。
綜上,可以將濾波這件事總結(jié)為:
濾波的實(shí)質(zhì), Vernacularism
為最大限度上降低信息在傳輸過(guò)程中收到的噪聲干擾,對(duì)于所接收到的各種隨機(jī)信號(hào)的混合信號(hào)進(jìn)行處理,并得到此條件下最優(yōu)估計(jì)信號(hào)的方法,就是濾波.🚀
"KF"的應(yīng)用
但話說(shuō)回來(lái),Kalman Filtering[2]一經(jīng)發(fā)明,就成為了應(yīng)用范圍最廣泛的濾波算法,其最早的工程應(yīng)用是在Apollo moon landing program,在這個(gè)登月項(xiàng)目中,需要通過(guò)溫度傳感器測(cè)得的火箭燃料溫度進(jìn)行動(dòng)力控制,然而火箭燃料溫度
超高,一般的溫度傳感器在里面根本不能生存,這時(shí)Kalman Filtering就派上用場(chǎng)了,溫度傳感器可以用來(lái)間接地測(cè)量火箭外圍的溫度
,根據(jù)觀測(cè)到的這一數(shù)據(jù),Kalman Filtering就能預(yù)測(cè)到真實(shí)的燃料溫度
,如下圖所示。
Rocket_Draft.jpg
想要切實(shí)地解決掉一個(gè)最優(yōu)估計(jì)問(wèn)題,需要的大多不僅僅是所測(cè)量得到的數(shù)據(jù)們,也需要如下這些部分(可以看作是最優(yōu)估計(jì)問(wèn)題的組分):<1>先驗(yàn)知識(shí),即已知的一些問(wèn)題相關(guān)的物理量;<2>約束條件,即問(wèn)題中某些參數(shù)或系統(tǒng)必須滿足的條件;<3>估計(jì)準(zhǔn)則函數(shù),用來(lái)評(píng)判一個(gè)估計(jì)解決方案的優(yōu)劣。領(lǐng)會(huì)Kalman Filtering就是在學(xué)習(xí)求解最優(yōu)估計(jì)問(wèn)題,有必要形成一個(gè)遇到問(wèn)題后將<1><2><3>分別對(duì)號(hào)入座的意識(shí)。
下面列舉出來(lái)了這種濾波算法超廣泛的應(yīng)用場(chǎng)景,可以見(jiàn)到,它幾乎覆蓋了所有與信息處理有些許關(guān)聯(lián)的領(lǐng)域... ...會(huì)Kalman Filtering的人理論上真就能解決所有的觀測(cè)信號(hào)
真實(shí)信號(hào)的轉(zhuǎn)換問(wèn)題。
通信
定位、跟蹤
圖像處理領(lǐng)域
衛(wèi)星導(dǎo)航等速度方向的估計(jì)
語(yǔ)音信息重建領(lǐng)域
地質(zhì)勘探,有效整合各種傳感器送來(lái)的信息
天氣、地震預(yù)報(bào)
證券和股票行情預(yù)測(cè)
醫(yī)療行業(yè),這種估計(jì)方式能參與診斷某些具有統(tǒng)計(jì)特征的病癥
Kalman Filtering****の詳述
根據(jù)上述鋪墊,KF在這里所解決的問(wèn)題是:求解一種Operation它以"隨機(jī)信號(hào)的觀測(cè)值"作為輸入,以"信息處理后得到的估計(jì)參數(shù)/研究對(duì)象當(dāng)前的狀態(tài)"作為輸出。🆗,為清楚起見(jiàn),可以用下圖來(lái)表示Kalman Filtering所充當(dāng)?shù)慕巧?#xff0c;就算不了解算法的真正原理,你也可以把它當(dāng)作一個(gè)黑匣子無(wú)腦使用。
Apollo_machine.png
可以看到,原則上來(lái)說(shuō),我們往Kalman Filter這個(gè)濾波機(jī)器內(nèi)投入每一個(gè)觀測(cè)時(shí)刻的觀測(cè)值,它就能以你投入觀測(cè)值的頻率不斷吐出你想要的對(duì)應(yīng)時(shí)刻的系統(tǒng)參數(shù)或者對(duì)象狀態(tài)了。接下來(lái)就要具體看一看這個(gè)算法到底是怎樣一回事了。
Assumption, 事前設(shè)定
要想用KF來(lái)解決之前說(shuō)的最優(yōu)估計(jì)問(wèn)題,此問(wèn)題需要滿足以下預(yù)設(shè)條件:[3]-[5]
1.系統(tǒng)狀態(tài)的變量是隨機(jī)變量,且滿足Gaussian Distribution
系統(tǒng)可能受到的外界影響是滿足疊加定律且已知的
測(cè)量噪聲存在,且為高斯白噪聲
只適用于線性系統(tǒng),非線性則采用Extended Kalman Filtering
Modeling Formulation, 実體、正規(guī)化
首先,對(duì)于研究對(duì)象進(jìn)行建模,觀測(cè)系統(tǒng)在第
個(gè)時(shí)間段所在的狀態(tài),可以由一個(gè)狀態(tài)向量來(lái)描述,例如說(shuō)一個(gè)車站就是研究對(duì)象,那它的狀態(tài)向量
可能就是下面這個(gè)樣子:
更詳細(xì)一些的話,一個(gè)對(duì)象的狀態(tài)向量是一個(gè)包裹,里面裝了你想在
時(shí)刻了解到的屬于對(duì)象的所有有關(guān)信息(精確的),例如
時(shí)的車輛數(shù)
🚗+🚘+🚚+🚐+🚕+🚛+🚓+🚌+🚅
,車流量
。為什么要用
而不是
呢?這是因?yàn)樵谟^測(cè)前,對(duì)象當(dāng)前的狀態(tài)對(duì)于我們而言是含糊不清的,一般只能知道好多近似信息,因此,我們使用隨機(jī)分布來(lái)表示對(duì)象的狀態(tài),根據(jù)假設(shè)1.,它們滿足Gaussian Distribution。[6]
依據(jù)
時(shí)刻的狀態(tài)向量,根據(jù)牛頓決定論,我們?cè)瓌t上能夠預(yù)測(cè)出
時(shí)刻的狀態(tài)向量,因此,可以引入一個(gè)線性變換矩陣
(一說(shuō),預(yù)測(cè)矩陣Prediction Matrix),這樣
可以由前一時(shí)段的狀態(tài)向量
表示為
如果進(jìn)一步考慮到外界對(duì)于系統(tǒng)的控制,則控制部分也應(yīng)計(jì)入我們預(yù)測(cè)的狀態(tài)向量
中去,根據(jù)假設(shè)2.,我們已經(jīng)知道了控制矩陣以及控制向量,可以將這一影響疊加在前述的基礎(chǔ)上,因此有
另一方面,為了充分挖掘出狀態(tài)向量帶給我們的信息,從而更好地完成估計(jì)的任務(wù),我們也應(yīng)將狀態(tài)向量中個(gè)元素之間的關(guān)系考慮在內(nèi),每?jī)蓚€(gè)元素(隨機(jī)變量)之間的關(guān)系可以由叫做“協(xié)方差”的量來(lái)描述[6],它定義為
,即兩個(gè)隨機(jī)變量同時(shí)減去各自均值的期望,所有協(xié)方差按照
的順序排列所得的矩陣成為協(xié)方差矩陣,容易看出,每一個(gè)狀態(tài)向量就對(duì)應(yīng)著一個(gè)協(xié)方差矩陣,根據(jù)
,可以得到
時(shí)刻與
時(shí)刻的協(xié)方差矩陣之間的關(guān)系
如果進(jìn)一步考慮來(lái)自環(huán)境的額外的干擾,在預(yù)測(cè)/估計(jì)的時(shí)候就可以在所得的協(xié)方差矩陣中加入一個(gè)不確定性
作為修正,這里并不需要考慮這一額外因素對(duì)于狀態(tài)向量本身的影響,因?yàn)椴淮_定性僅帶來(lái)隨機(jī)變量方差的變化,而不會(huì)對(duì)其均值產(chǎn)生影響,因此,我們預(yù)測(cè)出的協(xié)方差矩陣應(yīng)為
另外,傳感器對(duì)于研究對(duì)象的觀測(cè)被認(rèn)為是一個(gè)線性系統(tǒng)模型,它在
時(shí)刻給出的狀態(tài)向量和協(xié)方差矩陣為
上式就是只憑借預(yù)測(cè)得到的最終答案,然而,我們還未利用實(shí)際測(cè)量得到的值:一個(gè)是測(cè)量得到的觀測(cè)值(均值)
,另一個(gè)是觀測(cè)值向量的協(xié)方差矩陣
。Kalman Filtering的工作就是怎么權(quán)衡好這兩個(gè)組所得的值,最終給出一個(gè)最優(yōu)的估計(jì)結(jié)果。
綜上,正規(guī)化的字母描述如下表所示(包含的未出現(xiàn)字母會(huì)在Processing中給出詮釋):
Variables (Described)
Symbols (in LaTeX)
時(shí)刻,研究對(duì)象的狀態(tài)向量
研究對(duì)象在
時(shí)刻預(yù)測(cè)部分的協(xié)方差
時(shí)刻,研究系統(tǒng)的狀態(tài)向量
研究對(duì)象在
時(shí)刻統(tǒng)計(jì)分布的協(xié)方差
時(shí)刻的控制矩陣
時(shí)刻的控制向量
目標(biāo)為
時(shí)刻狀態(tài)向量,我們的預(yù)測(cè)矩陣
目標(biāo)為
時(shí)刻狀態(tài)向量,傳感器的觀測(cè)矩陣
時(shí)刻來(lái)自外界的額外不確定性
時(shí)刻傳感器觀測(cè)值的值(即觀測(cè)值的均值)
時(shí)刻傳感器觀測(cè)值的協(xié)方差
Kalman系數(shù),
時(shí)刻以及
時(shí)刻的值
時(shí)刻,狀態(tài)向量的最優(yōu)估計(jì)
時(shí)刻,最優(yōu)估計(jì)狀態(tài)向量的協(xié)方差
Processing, 具象処理
下面是!很重要的一個(gè)環(huán)節(jié)!為了使ni更加深刻地理解KF的算法套路,這里我們慢一些行進(jìn)。
Kalman Filtering的思維分為五個(gè)步驟,它大體遵循著自回歸算法的策略,利用對(duì)于狀態(tài)和協(xié)方差的預(yù)測(cè)數(shù)據(jù)(時(shí)間更新,上文已給出)來(lái)更新二者的值(預(yù)測(cè)更新),而后又返回來(lái)根據(jù)新的狀態(tài)和協(xié)方差來(lái)更改預(yù)測(cè)數(shù)據(jù)... ...
根據(jù)前述,剩下的步驟就是怎樣有效地將
以及
融合在一起,它們是兩個(gè)概率分布,且都服從Gaussian Distribution,將它們畫在一張圖中,如下圖所示,可以推測(cè),最優(yōu)的估計(jì)值大概率會(huì)出現(xiàn)在二者的交集處。
Fig_for_multiply_Gaussian.jpg
由此可知,從兩個(gè)Gaussian Distribution中取得最優(yōu)估計(jì)的過(guò)程就是求二者乘積的過(guò)程。
兩個(gè)一維Gaussian Distribution的乘積
會(huì)是個(gè)什么樣的分布呢?答案是:仍然是一個(gè)Gaussian Distribution
,它的均值和方差(注意這里,一維概率分布中的方差就是它的協(xié)方差)為
這樣的公式或許缺少了一些直觀性,可以引入系數(shù)
,這樣,上式可記作:
可以看到,新的概率分布系數(shù),都是由原來(lái)的分布系數(shù)加上同一個(gè)系數(shù)乘上一個(gè)“修正值”得到的!將這一思想推廣至高維統(tǒng)計(jì)分布,也應(yīng)如此,即:更新后的最優(yōu)融合估計(jì)值可以描述為根據(jù)前一時(shí)刻
得出的估計(jì)值加上這一時(shí)刻傳感器給出的修正:
其中的
被稱作Kalman系數(shù),表示為
由前述分析可知,有
代入(9),(10)式,得到用于Updation的式子如下
Kalman系數(shù)為
此時(shí)為計(jì)算方便,可以將
從三個(gè)式子中同時(shí)除去,用
代替原來(lái)的Kalman系數(shù),最終的結(jié)果作為Updation步驟與前一部分(Prediction步驟,(3),(5))一同在下面的全流程中以(15), (16)出現(xiàn)... ...
Kalman Filtering Algorithm:
Prediction:
Updation:
這種遞歸過(guò)程最終是否能收斂到一個(gè)最優(yōu)解是由給定的參數(shù)初值決定的,因此給定初值也算是一項(xiàng)重要環(huán)節(jié)。
綜上所述,可以將Kalman Filtering的算法流程用以下流程圖概括為[7]
Oil_Chart_for_KF.png
Final EKF, 開(kāi)拓
前面討論的算法(KF)僅適用于線性系統(tǒng),然而對(duì)于非線性系統(tǒng)而言,輸入一個(gè)滿足Gaussian Distribution的變量,其輸出并非Gaussian Distribution,舉個(gè)栗子,下圖證明了這一點(diǎn),這里
是用以描述系統(tǒng)的非線性函數(shù),將滿足Gaussian Distribution的變量
輸入,其輸出會(huì)變成一個(gè)奇奇怪怪的家伙(見(jiàn)下圖左側(cè))[8]。
Oil_Graph_of_EKF.png
非線性系統(tǒng)里,我們一開(kāi)始使用的方程中,我們的預(yù)測(cè)以及傳感器的觀測(cè)都演化為以下非線性向量函數(shù)
其中,
是非線性連續(xù)函數(shù),為應(yīng)對(duì)這類情形,擴(kuò)展卡爾曼濾波(Extended Kalman Filtering, EKF)被發(fā)明出來(lái),專門用來(lái)處理非線性系統(tǒng)的濾波問(wèn)題,我們用下面的偽代碼將KF-EKF進(jìn)行對(duì)比,從而給出更加直觀的解釋:
KF-EKF.png
可見(jiàn),除了(17)式中所提到的變化外,KF中的
都被
所替代,
都被
所替代,它們分別為兩個(gè)非線性函數(shù)
的線性近似(即矩陣求導(dǎo)的Jacobi矩陣):
綜上,我們已經(jīng)覆蓋了關(guān)于KF以及EKF的所有基礎(chǔ)內(nèi)容,可以知道實(shí)際上EKF只是將非線性函數(shù)線性化后套用KF的框架而已,由于需要求解Jacobian極大增加了算法的復(fù)雜度,EKF在實(shí)際生活中的應(yīng)用要遠(yuǎn)少于KF。
Codebaseの整備場(chǎng)
(∪.∪ )...zzz,下面是一個(gè)實(shí)例,為更好地證實(shí)KF算法在實(shí)際Coding中的簡(jiǎn)易性以及具體操作流程給出了相應(yīng)的佐證,框架是利用C++編寫,借助于MATLAB進(jìn)行了最終的二次處理,實(shí)現(xiàn)了試驗(yàn)結(jié)果的可視化。
//The source code are prepared in the supplement files
See../"Kalman_fi.h", ../"Kalman_fi.cpp", ../"Kalman_fi.mlx"
但是你會(huì)逐漸發(fā)現(xiàn)算法本身以及代碼實(shí)現(xiàn)并不是影響大家學(xué)習(xí)Kalman Filtering的原因,關(guān)鍵在于理解它和套用它,并不是所有的領(lǐng)域內(nèi)都有像火箭燃料那樣子有個(gè)間接觀測(cè)量,這時(shí)就需要自己去尋找適合的觀測(cè)量去與想要估計(jì)的參數(shù)之間的關(guān)系,這種先驗(yàn)是很重要的。無(wú)論如何,我們還是來(lái)落到實(shí)處,具體地體會(huì)一下Kalman Filtering在實(shí)際問(wèn)題中提供的具體方案。
案例,AHSの無(wú)偏估計(jì)
作為一個(gè)真實(shí)的,能夠很好地幫助理解的栗子,希望濾除噪聲,使得航向姿態(tài)系統(tǒng)[8]中的陀螺儀盡量精確地反映出所觀測(cè)物理量的真實(shí)值,Kalman Filtering 在這里作為一種首選的方法,能很好地適應(yīng)線性系統(tǒng)的估值,然而對(duì)于這里的非線性系統(tǒng)(是一個(gè)含有多個(gè)角度值的模型,由四元數(shù)表征),卻只能提供EKF這種暴力、不利于計(jì)算機(jī)高效實(shí)現(xiàn)的方法(見(jiàn)上文,需要求一個(gè)Jacobi矩陣),由此,在工程中利用Hamilton算子改寫狀態(tài)方程為線性形式,使KF算法能夠直接應(yīng)用于問(wèn)題中是一個(gè)很好的策略。
此案例取自[10]-[14]。
ref-用上的和further reading
[1] 這里指廣義噪聲,即混在信息中的一些干擾因素,如你喜歡的xka和你表白時(shí),第三方在一旁大聲說(shuō)話/打鬧
[2] Kalman R E. A new approach to linear filtering and prediction problems[J]. Journal of basic Engineering, 1960, 82(1): 35-45.
[6] 這里給出一個(gè)示意圖,滿足高斯分布的變量會(huì)像下圖一樣,有均值
和方差
Gaussian_Distribution.png
協(xié)方差代表兩個(gè)隨機(jī)變量之間的正比例、反比例或“無(wú)”的關(guān)系,下面的圖示給出了協(xié)方差大于、小于、等于零時(shí)的二維分布圖像,它們分別對(duì)應(yīng)著兩個(gè)變量呈成比例關(guān)系,反比例關(guān)系,無(wú)顯性關(guān)系。
Comparision_fairly.png
[9] Faragher R. Understanding the basis of the kalman filter via a simple and intuitive derivation {lecture notes}[J]. IEEE Signal processing magazine, 2012, 29(5): 128-132.
[10] Attitude and Heading System,AHS,由一套測(cè)量、顯示和提供航向角和姿態(tài)角信號(hào)的儀表(如陀螺儀、磁感應(yīng)傳感器)組成,為了給自動(dòng)駕駛儀、火力控制系統(tǒng)、雷達(dá)天線、航空照相機(jī)等一系列系統(tǒng)Controller提供更加精準(zhǔn)的信息,Kalman Filtering可以作為最優(yōu)無(wú)偏的一種估值器,能對(duì)于原始信號(hào)進(jìn)行濾波處理,幫助系統(tǒng)進(jìn)行姿態(tài)解算以及最優(yōu)控制等任務(wù)。
[12] 高顯忠, 侯中喜, 王波, 等. 四元數(shù)卡爾曼濾波組合導(dǎo)航算法性能分析[J]. 控制理論與應(yīng)用, 2013, 30(2): 171-177.
[13] 郜麗鵬, 朱嘉穎, 游世勛. 超視距目標(biāo)跟蹤的卡爾曼濾波算法研究[J]. 應(yīng)用科技, 2019, 46(4): 61-69.
[14] Sabatini A M. Quaternion-based extended Kalman filter for determining orientation by inertial and magnetic sensing[J]. IEEE transactions on Biomedical Engineering, 2006, 53(7): 1346-1356.
總結(jié)
以上是生活随笔為你收集整理的ad 卡尔曼_卡尔曼滤波剪影__Kalman Filtering · Make Intuitive的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求一个男士qq网名!
- 下一篇: mysql 分号 存储过程_MySql