1. 程式人生 > >初學者的卡爾曼濾波——擴充套件卡爾曼濾波(一)

初學者的卡爾曼濾波——擴充套件卡爾曼濾波(一)

簡介

  已經歷經了半個世紀的卡爾曼濾波至今仍然是研究的熱點,相關的文章不斷被髮表。其中許多文章是關於卡爾曼濾波器的新應用,但也不乏改善和擴充套件濾波器演算法的研究。而對演算法的研究多著重於將卡爾曼濾波應用於非線性系統。

  為什麼學界要這麼熱衷於將卡爾曼濾波器用於非線性系統呢?因為卡爾曼濾波器從一開始就是為線性系統設計的演算法,不能用於非線性系統中。但是事實上多數系統都是非線性的,所以如果卡爾曼濾波器不能用在非線性系統中的話,那麼它的應用範圍就非常有限了。如果真的是這樣,卡爾曼濾波器可能早就壽終正寢或者過很久很久才會被人注意到。幸運的是早期的學者們對這個問題理解的非常深刻,而且也找到了解決方法,就是擴充套件卡爾曼濾波(EKF)。

  事實上世界上的第一個卡爾曼濾波也是擴充套件卡爾曼濾波,而不是線性卡爾曼濾波器。擴充套件卡爾曼濾波有很久遠的歷史,如果說有一個非線性系統需要用到卡爾曼濾波的話,不必懷疑,先試試擴充套件卡爾曼濾波準沒錯。因為他有很久遠的歷史,所以可以輕鬆的找到許多這方面的資料。

  不過擴充套件卡爾曼濾波也不是無懈可擊的,它有一個很嚴重的短板——發散。使用擴充套件卡爾曼濾波的時候請務必記在心上,時刻提醒自己,這樣設計濾波器其結果會發散嗎?毫不誇張地說相對於線性卡爾曼濾波設計擴充套件卡爾曼濾波器的就是在解決發散問題。發散問題解決了剩下的都是小事。

小結:

  • 擴充套件卡爾曼濾波器主要用於非線性系統;
  • 擴充套件卡爾曼濾波器會發散。

線性化的卡爾曼濾波器

  在討論擴充套件卡爾曼濾波之前,首先要了解一下線性化卡爾曼濾波。它和線性卡爾曼濾波器在濾波器的演算法方面有同樣的演算法結構,一樣一樣的。不一樣的地方在於這兩者的系統模型不同。線性卡爾曼濾波器的系統本身就是線性系統,而線性化卡爾曼濾波器的系統本身是非線性系統,但是機智的大神們將非線性的系統進行了線性化,於是卡爾曼濾波就可以用在非線性系統中了。對於一個卡爾曼濾波器的設計者,就不要去管你的模型到底是一開始就是線性系統還是非線性系統線性化得到的線性系統,反正只要是線性系統就好了。好了,現在你有了一個線性系統,那你還需要擔心什麼呢?這就是一個之前講過的線性卡爾曼濾波器啦。

  的確是這樣的,沒有很大的差別,但是請跟我一起念:線性化卡爾曼濾波器會發散。為什麼會發散呢?是這樣,我們在對非線性系統進行線性化的過程中,只有被線性化的那個點附近的線性化模型和真實的模型相近,遠的誤差就大了,那麼這個時候卡爾曼濾波器的效果就不好。如果懂點線性化知識這個道理就很明顯。所以線性化的這個限制要時刻考慮,這也就是為什麼要把線性卡爾曼濾波器和線性化卡爾曼濾波器區分開的理由。

  而決定一個線性化濾波器成功與否的關鍵就在於這個濾波器系統模型線性化得好不好。一個貼近於真實模型的線性化模型對於濾波器的良好輸出非常重要。所以說掌握如何線性化一個非線性模型很重要,然而我們並不會討論關於系統線性化的問題,因為這已經不屬於卡爾曼濾波的範疇了,而且每個系統有不同的線性化方法,有點複雜。

  總而言之,如果你已經明白瞭如何使用線性卡爾曼濾波器,那麼使用線性化卡爾曼濾波器就沒有什麼需要擔心的,因為演算法結構一樣嘛。唯一需要注意的就是線性化卡爾曼濾波器會發散,要在有效範圍內使用,要不然濾波器的表現不會好。

小結:

  • 線性化卡爾曼濾波器與線性卡爾曼濾波器有同樣的演算法結構,不同樣的系統模型;
  • 線性化卡爾曼濾波器會發散,原因在於函式在遠於被線性化的點的時候並不接近於非線性函式;
  • 線性化卡爾曼的表現取決於線性化做得好不好。

擴充套件卡爾曼濾波器

   在這節具體介紹卡爾曼濾波器。首先從比較熟悉的線性卡爾曼濾波器開始比較擴充套件卡爾曼濾波器與線性化卡爾曼濾波器的異同,從系統模型到濾波器演算法,並解釋這些不同。之後將提供兩個具體的應用例子來加以體會。這門書的重點在於如何感性的理解和使用卡爾曼濾波器,所以對於演算法的推導不會被具體描述。但是如何理解和區別這些不同,這些不同表達了什麼意義將會一一解釋。如下圖所示,右面是我們已經熟悉的經典的線性化卡爾曼濾波的演算法結構和步驟,左面則是擴充套件卡爾曼濾波器的演算法結構和步驟,其中不同的地方已經用紅筆圈出來。可以看到兩個濾波器的演算法結構是相同的,只有幾個方程上有細微的差別。

  非線性系統模型

  在非線性系統中,系統模型是這樣的:

xk+1 = f(Xk)+ wk

zk = h(Xk) + vk

  這與線性系統的區別在於非線性系統的狀態向量和其係數是不能夠分離的。

  比如說,在GPS定位的偽距與接收機位置的關係中:ρ[Xu]= [(xu-xsi+ (yu -ysi2 +(zu - zsi2 ]1/2 + b + vi 

  其中[Xu]=[xu,yu,zu,b]是系統狀態向量,分別是接收機的位置和接收機與衛星的鐘差,

    [xsi,ysi,zsi]是衛星的位置座標,ρ是偽距,vi是觀測噪聲。

  在這個關係中狀態向量與它的係數就是不可分離的,沒有辦法寫成AXk的形式,只能是f(Xk)。h(Xk)的存在同理。

  擴充套件卡爾曼濾波器演算法

  比較上圖,可以看到差別主要在這樣兩個地方:

  1. 第  I   步中xk+1 = f(xk-1),與原來的xk+1 = Axk-1
  2. 第 III 步中Xk = Xk + Kk(zk - h(xk)),與原來的Xk = Xk + Kk(zk - Hxk);

  其他的地方則完全一樣。那麼是不是隻需要改動這兩點就可以將一個線性卡爾曼濾波變成擴充套件卡爾曼濾波呢?不是的,有一些更重要的差別隱藏在公式中。在右圖中,也就是線性卡爾曼濾波器中矩陣A和矩陣H是已知的,在而左圖中雖然將第I步和第III步中的A和H替換成f和h,但是其他地方的A和H卻仍然存在,可是在非線性系統中,哪有A和H呢?

  A和H的獲得就要涉及到之前所提到的決定擴充套件卡爾曼濾波器表現的決定因素:線性化。線性化的方法很經典:

  將非線性系統中的f對x求(xk估計)處的偏導得到A,同樣的求h對x求(xk)處的偏導得到H。(向量和矩陣怎麼求偏導?)

  線性化濾波器和擴充套件卡爾曼濾波器的共同點在於他們都需要經歷一個線性化的過程,不同點在於,擴充套件卡爾曼濾波器是將xk估計作為線性化的參考點,線性化卡爾曼濾波器不是。(線性化濾波器是用什麼作為線性化參考點?參考點是不是就是求偏導以後的帶入值?) 在設計擴充套件卡爾曼濾波器的時候是不是知道這一點並不會有什麼不同。但是如果你在猶豫我是要用擴充套件卡爾曼濾波器還是用線性化卡爾曼濾波器的時候,明白這一點是非常重要的。下面對線性化濾波器和卡爾曼濾波器線性化參考點的差異做簡單的解釋。

  在擴充套件卡爾曼濾波中,我們並不用前一個時刻的先驗值Xk-(卡爾曼濾波器未經過修正的預測值)作為參考點,而是用前一個時刻的估計值作為參考點做線性化。這是因為相對於先驗值,前一個時刻的估計值更加貼近於真實值,將估計值作為線性化參考點可以得到一個更加貼近於實際的線性化系統模型。這種線性化方法跟適合難以提前確定線性化參考點的系統模型。而相反的。如果說線性化參考點已經確定了,那麼完全不必用前一刻的估計值作為線性化參考點。比如說在對衛星的位置這樣的系統模型進行線性化的時候,由於衛星的運動軌跡有一個連續的軌道,在這種情況下,就不必用前一個時刻的估計值作為線性化參考點。(而是直接用系統對下一個時刻的預測就可以了?)

  總而言之,你只要有個概念,擴充套件卡爾曼濾波器是基於先驗估計做系統線性化的就可以了。具體的細節在實驗中就會有所體會。重要的是我們知道了A和H是根據上面兩個公式得到的。

  總結一下這一小結講的什麼。我們看到總體而言擴充套件卡爾曼濾波器的結構過程都和線性卡爾曼濾波器相同。但是每一步的等式都有一些細微的差別,這些差別可以分為兩塊:第一個是擴充套件卡爾曼濾波器用非線性系統系統方程f和h替換了線性系統的A和H。第二個是擴充套件卡爾曼濾波器中的矩陣A和矩陣H是非線性系統的雅可比行列式(什麼鬼)。除了這兩塊剩下的都和線性卡爾曼濾波器相同。

小結:

  • 在第I步和第III步中,用f和h代替原來的A和H;
  • 剩下的A和H,分別求f和h在(xk估計)和(xk)處的偏導得到;
  • 擴充套件卡爾曼濾波器用前一個時刻的估計值作為參考點做線性化。

 總結:

  所謂擴充套件卡爾曼濾波器,就是適用於非線性系統的卡爾曼濾波器。它與經典的線性卡爾曼濾波器很相似,演算法步驟和結構都相同。不同在於系統模型和矩陣A和H。在擴充套件卡爾曼濾波器當中用非線性系統模型方程代替線性系統墨香的系統方程;將系統模型求偏導得到新的擴充套件卡爾曼濾波器當中的矩陣A和H,在偏導的求解過程中,也是就是線性化的過程中用前一個時刻的估計值作為參考點。通過這樣的修改就得到了適用於非線性系統的擴充套件卡爾曼濾波器。在使用的過程中我們要時刻牢記,擴充套件卡爾曼濾波會發散。下一篇是實驗。

  未解決的問題:1.如何對非線性系統線性化,求偏導就可以嗎?2.矩陣和向量怎麼求偏導?3.為什麼f和h求偏導的點不同?4.線性化參考點是不是就是求偏導以後的參考點?5.雅可比行列式?

相關推薦

【NLP】揭祕馬可夫模型神祕面紗系列文章

作者:白寧超 2016年7月10日20:34:20 摘要:最早接觸馬爾可夫模型的定義源於吳軍先生《數學之美》一書,起初覺得深奧難懂且無什麼用場。直到學習自然語言處理時,才真正使用到隱馬爾可夫模型,並體會到此模型的妙用之處。馬爾可夫模型在處理序列分類時具體強大的功能,諸如解決:詞類標註、語音識別、句

第一章謝菲德大學的MATLAB遺傳演算法工具箱

clc clear all close all %% 畫出函式圖 figure(1); hold on; lb=1;ub=2; %函式自變數範圍【1,2】 ezplot('sin(10*pi*X)/X',[lb,ub]);   %畫出函式曲線 xlabel('自變數/X'

初學者怎麼理解整合開發環境,編譯與連結

大部分講c語言或者c++語言的書籍,一上來都是直接編寫程式碼,諸如經典“hello,world”程式。 這對初學者,尤其是自學者造成了不小的困難,初學程式設計的時候,簡直一頭霧水,拿著教材都不知道從哪

初學者的卡濾波——擴充套件濾波

簡介 轉自:http://www.cnblogs.com/ymxiansen/p/5368547.html   已經歷經了半個世紀的卡爾曼濾波至今仍然是研究的熱點,相關的文章不斷被髮表。其中許多文章是關於卡爾曼濾波器的新應用,但也不乏改善和擴充套件濾波器演算法的研究。而對演算法的研究多著

初學者的卡濾波——擴充套件濾波

簡介   已經歷經了半個世紀的卡爾曼濾波至今仍然是研究的熱點,相關的文章不斷被髮表。其中許多文章是關於卡爾曼濾波器的新應用,但也不乏改善和擴充套件濾波器演算法的研究。而對演算法的研究多著重於將卡爾曼濾波應用於非線性系統。   為什麼學界要這麼熱衷於將卡爾曼濾波器用於非線性系統呢?因為卡爾曼濾波器從一開

慣性導航——擴充套件濾波

對於無人機的慣性導航系統,系統的狀態方程是非線性的,根據擴充套件卡爾曼濾波方程: Predict x^k|k−1Pk|k−1=f(x^k−1|k−1,uk−1)=Fk−1Pk−1|k−1FT

濾波原理及應用

出於科研需要,打算開始學習卡爾曼濾波(Kalmam Filter)。很早之前就聽說過卡爾曼濾波,但一直沒能深入學習,這次終於有機會了,哈哈。 1.卡爾曼濾波的發展過程 卡爾曼濾波的本質屬於"估計"範疇.先介紹下估計,所謂“估計”問題,就是對收到隨機干擾和隨機測量誤差作用的物理系統,按照某種效

濾波

舉個例子,上一時刻房間溫度最優值為26度,由於溫度變化緩慢,則可以根據經驗估計本次溫度也為26度,即四式右邊第一項,而此時溫度計讀數為28度,那麼本時刻溫度應該是多少?不知道溫度計精度的情況下,可以對兩個資料求平均,為27度,即T=26+0.5*(28-26)=27。這裡0.5就是本例子中的修正係數,那麼假如

無人駕駛汽車系統入門——濾波與目標追蹤

前言:隨著深度學習近幾年來的突破性進展,無人駕駛汽車也在這些年開始不斷向商用化推進。很顯然,無人駕駛汽車已經不是遙不可及的“未來技術”了,未來10年

濾波初探

卡爾曼濾波初探 基於時域的線性模型預測 這裡先給出幾個概念(初看的時候很多部落格都沒有這方面說明,若你看到下面懵逼的時候,不妨上來再看看?)  預測:就是根據已有的①經驗、②公式、③以及上一個時間()下檢測物件的狀態的最優估計等資訊,從而得到一個對下一個

Kalman濾波--Kalman濾波的本質

1.Kalman濾波的簡介        接觸過訊號處理的朋友應該清楚,訊號在傳輸過程中必然受到噪聲干擾(外界的二和內部的),使得輸出訊號具有隨機性,為了最大限度降低這種干擾,就需要從混雜在一起的各種訊號中提取自己想要的訊號,這過程稱之為濾波,濾波的方法因訊號而異。    

痞子衡嵌入式:飛思i.MX RT系列微控制器啟動篇2- Boot配置(BOOT_CFG Pin/eFUSE)

TP 執行 不同 mcu 更新 oom als 配置 示例   大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RT系列MCU的Boot配置。   在上一篇文章 飛思卡爾i.MX RT系列微控制器啟動篇(1)- Boot簡介 裏痞子衡為大

痞子衡嵌入式:飛思i.MX RT系列微控制器介紹篇3- 命名規則

rule 成員 oom 嵌入 信息 100% 規則 控制器 今天   大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RT系列MCU的命名規則。   打開任何一款i.MX RT系列芯片的Data Sheet均可找到如下命名規則表,以i.M

痞子衡嵌入式:飛思i.MX RT系列微控制器啟動篇3- Serial Downloader模式(sdphost/mfgtool)

efi RM pda lock mman www. esc https conn   大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RT系列MCU的Serial Downloader模式。   在上一篇文章 飛思卡爾i.MX RT系列微

痞子衡嵌入式:飛思i.MX RT系列微控制器啟動篇6- Bootable image格式與加載(elftosb/.bd/.bin)

before 詳細介紹 tab true 加載完成 table sdp 推薦 包含   大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RT系列MCU的Bootable image格式與加載過程。   在i.MXRT啟動系列第三篇文章 飛

痞子衡嵌入式:飛思i.MX RT系列微控制器啟動篇9- 從Parallel NOR啟動

16bit erase section cloud 你會 命令執行 選型 兩個 寬度   大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RT系列MCU的Parallel NOR啟動。   上一篇講i.MXRT從Raw NAND啟動的文章

痞子衡嵌入式:飛思i.MX RT系列微控制器啟動篇13- 從Serial(1-bit SPI) EEPROM/NOR恢復啟動

如何 use pin 訪問 fill normal loader 擔心 飛思卡爾   大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RT系列MCU的Serial EEPROM/NOR恢復啟動。   在前幾篇裏痞子衡介紹的Boot Dev

freescale飛思 HC9S12 系列微控制器 Flash擦寫詳解之時鐘設定

       Flash擦寫的內容,個人做HC9S12系列微控制器時覺得應該是各模組內容中最難而且是最麻煩的一步了。只有能夠對Flash進行擦寫以後,所做的Bootloader才有真正手段將串列埠或者其他通訊手段接收到的資料或者程式寫入Flash中進行程式或者資料的更新。當初做Flash的擦寫也遇到了很多問題

Oracle- 笛積造成的問題

問題sql: select /*+rule */ a.unoin,a.name,b.product_id,c.partiname from pc_union_detail a,sp_product_all b,bf_dict c where a.union_id=b.uni

隱馬可夫模型

回溯 一是 描述 數學 函數 觀測 tran 隱藏 之間 隱馬爾可夫模型   隱馬爾可夫模型(Hidden Markov Model,HMM)是一種統計模型,廣泛應用在語音識別,詞性自動標註,音字轉換,概率文法等各個自然語言處理等應用領域。經過長期發展,尤其