ad 卡尔曼_卡尔曼滤波剪影__Kalman Filtering · Make Intuitive
鋪墊用の引論
Kalman Filtering 算法是一種最優濾波估計算法,有了它之后,就算只知道觀測對象的少量不準確觀測信息也有可能對這一對象實現完全控制,它的Advantages和Disadvantages(Constraints)在下面分別以標黑"匚"以及普通"匚"記錄下來。
(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++.
利用分而治之的思想,可以分兩步理解這個算法:
"Filtering"的理解
這個詞由Telecommunication的信號處理工程引入,在信息傳輸過程中,噪聲使信息很難從信源準確無誤地到達信宿因此,怎樣除去噪聲的影響[1],從所獲得的信息(含有噪聲等干擾因素故不準確)中提取出人們想要的那一部分就成了一個重要的課題,就是專門用來解決這一問題的操作。這種除掉噪聲的目的,可以通過
1.時域中進行某些奇異的運算提取出想要的信息;
頻域中將處于某些頻段信息分量提取出來;
兩種方法實現,它們都可以反過來看做是將觀測得到的數據處理后得到相應參數的估計值,被叫做“濾波估計”,第二類濾波方法在早期濾波估計中較為常見,它們大多是基于Fourier變換的一些應用方法并且在信號處理領域大顯身手,其中,于1940被提出的Wiener濾波作為一種基于頻域的統計最優濾波器,開啟了對于隨機信號進行處理的先河,然而它因為頻域的限制,只能處理一維平穩隨機信號。而第一類濾波方法是近代才興起的,它們有更加廣泛的應用范圍以及更優良的性能,即如何從已知的(不精確)數據中估計出準確信息,具有代表性且最為常用的就是Kalman Filtering算法。
綜上,可以將濾波這件事總結為:
濾波的實質, Vernacularism
為最大限度上降低信息在傳輸過程中收到的噪聲干擾,對于所接收到的各種隨機信號的混合信號進行處理,并得到此條件下最優估計信號的方法,就是濾波.🚀
"KF"的應用
但話說回來,Kalman Filtering[2]一經發明,就成為了應用范圍最廣泛的濾波算法,其最早的工程應用是在Apollo moon landing program,在這個登月項目中,需要通過溫度傳感器測得的火箭燃料溫度進行動力控制,然而火箭燃料溫度
超高,一般的溫度傳感器在里面根本不能生存,這時Kalman Filtering就派上用場了,溫度傳感器可以用來間接地測量火箭外圍的溫度
,根據觀測到的這一數據,Kalman Filtering就能預測到真實的燃料溫度
,如下圖所示。
Rocket_Draft.jpg
想要切實地解決掉一個最優估計問題,需要的大多不僅僅是所測量得到的數據們,也需要如下這些部分(可以看作是最優估計問題的組分):<1>先驗知識,即已知的一些問題相關的物理量;<2>約束條件,即問題中某些參數或系統必須滿足的條件;<3>估計準則函數,用來評判一個估計解決方案的優劣。領會Kalman Filtering就是在學習求解最優估計問題,有必要形成一個遇到問題后將<1><2><3>分別對號入座的意識。
下面列舉出來了這種濾波算法超廣泛的應用場景,可以見到,它幾乎覆蓋了所有與信息處理有些許關聯的領域... ...會Kalman Filtering的人理論上真就能解決所有的觀測信號
真實信號的轉換問題。
通信
定位、跟蹤
圖像處理領域
衛星導航等速度方向的估計
語音信息重建領域
地質勘探,有效整合各種傳感器送來的信息
天氣、地震預報
證券和股票行情預測
醫療行業,這種估計方式能參與診斷某些具有統計特征的病癥
Kalman Filtering****の詳述
根據上述鋪墊,KF在這里所解決的問題是:求解一種Operation它以"隨機信號的觀測值"作為輸入,以"信息處理后得到的估計參數/研究對象當前的狀態"作為輸出。🆗,為清楚起見,可以用下圖來表示Kalman Filtering所充當的角色,就算不了解算法的真正原理,你也可以把它當作一個黑匣子無腦使用。
Apollo_machine.png
可以看到,原則上來說,我們往Kalman Filter這個濾波機器內投入每一個觀測時刻的觀測值,它就能以你投入觀測值的頻率不斷吐出你想要的對應時刻的系統參數或者對象狀態了。接下來就要具體看一看這個算法到底是怎樣一回事了。
Assumption, 事前設定
要想用KF來解決之前說的最優估計問題,此問題需要滿足以下預設條件:[3]-[5]
1.系統狀態的變量是隨機變量,且滿足Gaussian Distribution
系統可能受到的外界影響是滿足疊加定律且已知的
測量噪聲存在,且為高斯白噪聲
只適用于線性系統,非線性則采用Extended Kalman Filtering
Modeling Formulation, 実體、正規化
首先,對于研究對象進行建模,觀測系統在第
個時間段所在的狀態,可以由一個狀態向量來描述,例如說一個車站就是研究對象,那它的狀態向量
可能就是下面這個樣子:
更詳細一些的話,一個對象的狀態向量是一個包裹,里面裝了你想在
時刻了解到的屬于對象的所有有關信息(精確的),例如
時的車輛數
🚗+🚘+🚚+🚐+🚕+🚛+🚓+🚌+🚅
,車流量
。為什么要用
而不是
呢?這是因為在觀測前,對象當前的狀態對于我們而言是含糊不清的,一般只能知道好多近似信息,因此,我們使用隨機分布來表示對象的狀態,根據假設1.,它們滿足Gaussian Distribution。[6]
依據
時刻的狀態向量,根據牛頓決定論,我們原則上能夠預測出
時刻的狀態向量,因此,可以引入一個線性變換矩陣
(一說,預測矩陣Prediction Matrix),這樣
可以由前一時段的狀態向量
表示為
如果進一步考慮到外界對于系統的控制,則控制部分也應計入我們預測的狀態向量
中去,根據假設2.,我們已經知道了控制矩陣以及控制向量,可以將這一影響疊加在前述的基礎上,因此有
另一方面,為了充分挖掘出狀態向量帶給我們的信息,從而更好地完成估計的任務,我們也應將狀態向量中個元素之間的關系考慮在內,每兩個元素(隨機變量)之間的關系可以由叫做“協方差”的量來描述[6],它定義為
,即兩個隨機變量同時減去各自均值的期望,所有協方差按照
的順序排列所得的矩陣成為協方差矩陣,容易看出,每一個狀態向量就對應著一個協方差矩陣,根據
,可以得到
時刻與
時刻的協方差矩陣之間的關系
如果進一步考慮來自環境的額外的干擾,在預測/估計的時候就可以在所得的協方差矩陣中加入一個不確定性
作為修正,這里并不需要考慮這一額外因素對于狀態向量本身的影響,因為不確定性僅帶來隨機變量方差的變化,而不會對其均值產生影響,因此,我們預測出的協方差矩陣應為
另外,傳感器對于研究對象的觀測被認為是一個線性系統模型,它在
時刻給出的狀態向量和協方差矩陣為
上式就是只憑借預測得到的最終答案,然而,我們還未利用實際測量得到的值:一個是測量得到的觀測值(均值)
,另一個是觀測值向量的協方差矩陣
。Kalman Filtering的工作就是怎么權衡好這兩個組所得的值,最終給出一個最優的估計結果。
綜上,正規化的字母描述如下表所示(包含的未出現字母會在Processing中給出詮釋):
Variables (Described)
Symbols (in LaTeX)
時刻,研究對象的狀態向量
研究對象在
時刻預測部分的協方差
時刻,研究系統的狀態向量
研究對象在
時刻統計分布的協方差
時刻的控制矩陣
時刻的控制向量
目標為
時刻狀態向量,我們的預測矩陣
目標為
時刻狀態向量,傳感器的觀測矩陣
時刻來自外界的額外不確定性
時刻傳感器觀測值的值(即觀測值的均值)
時刻傳感器觀測值的協方差
Kalman系數,
時刻以及
時刻的值
時刻,狀態向量的最優估計
時刻,最優估計狀態向量的協方差
Processing, 具象処理
下面是!很重要的一個環節!為了使ni更加深刻地理解KF的算法套路,這里我們慢一些行進。
Kalman Filtering的思維分為五個步驟,它大體遵循著自回歸算法的策略,利用對于狀態和協方差的預測數據(時間更新,上文已給出)來更新二者的值(預測更新),而后又返回來根據新的狀態和協方差來更改預測數據... ...
根據前述,剩下的步驟就是怎樣有效地將
以及
融合在一起,它們是兩個概率分布,且都服從Gaussian Distribution,將它們畫在一張圖中,如下圖所示,可以推測,最優的估計值大概率會出現在二者的交集處。
Fig_for_multiply_Gaussian.jpg
由此可知,從兩個Gaussian Distribution中取得最優估計的過程就是求二者乘積的過程。
兩個一維Gaussian Distribution的乘積
會是個什么樣的分布呢?答案是:仍然是一個Gaussian Distribution
,它的均值和方差(注意這里,一維概率分布中的方差就是它的協方差)為
這樣的公式或許缺少了一些直觀性,可以引入系數
,這樣,上式可記作:
可以看到,新的概率分布系數,都是由原來的分布系數加上同一個系數乘上一個“修正值”得到的!將這一思想推廣至高維統計分布,也應如此,即:更新后的最優融合估計值可以描述為根據前一時刻
得出的估計值加上這一時刻傳感器給出的修正:
其中的
被稱作Kalman系數,表示為
由前述分析可知,有
代入(9),(10)式,得到用于Updation的式子如下
Kalman系數為
此時為計算方便,可以將
從三個式子中同時除去,用
代替原來的Kalman系數,最終的結果作為Updation步驟與前一部分(Prediction步驟,(3),(5))一同在下面的全流程中以(15), (16)出現... ...
Kalman Filtering Algorithm:
Prediction:
Updation:
這種遞歸過程最終是否能收斂到一個最優解是由給定的參數初值決定的,因此給定初值也算是一項重要環節。
綜上所述,可以將Kalman Filtering的算法流程用以下流程圖概括為[7]
Oil_Chart_for_KF.png
Final EKF, 開拓
前面討論的算法(KF)僅適用于線性系統,然而對于非線性系統而言,輸入一個滿足Gaussian Distribution的變量,其輸出并非Gaussian Distribution,舉個栗子,下圖證明了這一點,這里
是用以描述系統的非線性函數,將滿足Gaussian Distribution的變量
輸入,其輸出會變成一個奇奇怪怪的家伙(見下圖左側)[8]。
Oil_Graph_of_EKF.png
非線性系統里,我們一開始使用的方程中,我們的預測以及傳感器的觀測都演化為以下非線性向量函數
其中,
是非線性連續函數,為應對這類情形,擴展卡爾曼濾波(Extended Kalman Filtering, EKF)被發明出來,專門用來處理非線性系統的濾波問題,我們用下面的偽代碼將KF-EKF進行對比,從而給出更加直觀的解釋:
KF-EKF.png
可見,除了(17)式中所提到的變化外,KF中的
都被
所替代,
都被
所替代,它們分別為兩個非線性函數
的線性近似(即矩陣求導的Jacobi矩陣):
綜上,我們已經覆蓋了關于KF以及EKF的所有基礎內容,可以知道實際上EKF只是將非線性函數線性化后套用KF的框架而已,由于需要求解Jacobian極大增加了算法的復雜度,EKF在實際生活中的應用要遠少于KF。
Codebaseの整備場
(∪.∪ )...zzz,下面是一個實例,為更好地證實KF算法在實際Coding中的簡易性以及具體操作流程給出了相應的佐證,框架是利用C++編寫,借助于MATLAB進行了最終的二次處理,實現了試驗結果的可視化。
//The source code are prepared in the supplement files
See../"Kalman_fi.h", ../"Kalman_fi.cpp", ../"Kalman_fi.mlx"
但是你會逐漸發現算法本身以及代碼實現并不是影響大家學習Kalman Filtering的原因,關鍵在于理解它和套用它,并不是所有的領域內都有像火箭燃料那樣子有個間接觀測量,這時就需要自己去尋找適合的觀測量去與想要估計的參數之間的關系,這種先驗是很重要的。無論如何,我們還是來落到實處,具體地體會一下Kalman Filtering在實際問題中提供的具體方案。
案例,AHSの無偏估計
作為一個真實的,能夠很好地幫助理解的栗子,希望濾除噪聲,使得航向姿態系統[8]中的陀螺儀盡量精確地反映出所觀測物理量的真實值,Kalman Filtering 在這里作為一種首選的方法,能很好地適應線性系統的估值,然而對于這里的非線性系統(是一個含有多個角度值的模型,由四元數表征),卻只能提供EKF這種暴力、不利于計算機高效實現的方法(見上文,需要求一個Jacobi矩陣),由此,在工程中利用Hamilton算子改寫狀態方程為線性形式,使KF算法能夠直接應用于問題中是一個很好的策略。
此案例取自[10]-[14]。
ref-用上的和further reading
[1] 這里指廣義噪聲,即混在信息中的一些干擾因素,如你喜歡的xka和你表白時,第三方在一旁大聲說話/打鬧
[2] Kalman R E. A new approach to linear filtering and prediction problems[J]. Journal of basic Engineering, 1960, 82(1): 35-45.
[6] 這里給出一個示意圖,滿足高斯分布的變量會像下圖一樣,有均值
和方差
Gaussian_Distribution.png
協方差代表兩個隨機變量之間的正比例、反比例或“無”的關系,下面的圖示給出了協方差大于、小于、等于零時的二維分布圖像,它們分別對應著兩個變量呈成比例關系,反比例關系,無顯性關系。
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,由一套測量、顯示和提供航向角和姿態角信號的儀表(如陀螺儀、磁感應傳感器)組成,為了給自動駕駛儀、火力控制系統、雷達天線、航空照相機等一系列系統Controller提供更加精準的信息,Kalman Filtering可以作為最優無偏的一種估值器,能對于原始信號進行濾波處理,幫助系統進行姿態解算以及最優控制等任務。
[12] 高顯忠, 侯中喜, 王波, 等. 四元數卡爾曼濾波組合導航算法性能分析[J]. 控制理論與應用, 2013, 30(2): 171-177.
[13] 郜麗鵬, 朱嘉穎, 游世勛. 超視距目標跟蹤的卡爾曼濾波算法研究[J]. 應用科技, 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.
總結
以上是生活随笔為你收集整理的ad 卡尔曼_卡尔曼滤波剪影__Kalman Filtering · Make Intuitive的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个男士qq网名!
- 下一篇: mysql 分号 存储过程_MySql