卡爾曼濾波

卡爾曼濾波，它能夠從一系列的不完全及包含雜訊的測量中，估計動態系統的狀態。卡爾曼濾波會根據各測量量在不同時間下的值，考慮各時間下的聯合分佈，再產生對未知變數的估計，因此會比只以單一測量量為基礎的估計方式要準。卡爾曼濾波得名自主要貢獻者之一的魯道夫·卡爾曼。卡爾曼濾波在技術領域有許多的應用。常見的有飛機及太空船的。卡爾曼濾波也廣為使用在時間序列的分析中，例如訊號處理及計量經濟學中。卡爾曼濾波也是機器人運動規劃及控制的重要主題之一，有時也包括在。卡爾曼濾波也用在中軸神經系統運動控制的建模中。因為從給與運動命令到收到感覺神經的回授之間有時間差，使用卡爾曼濾波有助於建立符合實際的系統，估計運動系統的目前狀態，並且更新命令。卡爾曼濾波的演演算法是二步驟的程式。在估計步驟中，卡爾曼濾波會產生有關目前狀態的估計，其中也包括不確定性。只要觀察到下一個量測。會透過加權平均來更新估計值，而確定性越高的量測加權比重也越高。演演算法是迭代的，可以在實時控制系統中執行，只需要目前的輸入量測、以往的計算值以及其不確定性矩陣，不需要其他以往的資訊。使用卡爾曼濾波不用假設誤差是正態分佈，不過若所有的誤差都是正態分佈，卡爾曼濾波可以得到正確的條件機率估計。也發展了一些擴充套件或是廣義的卡爾曼濾波，例如運作在非線性系統的及無跡卡爾曼濾波。底層的模型類似隱馬爾可夫模型，不過的狀態空間是連續的，而且所有潛在變數及可觀測變數都是正態分佈。應用例項.卡爾曼濾波的一個典型例項是從一組有限的，包含噪聲的，透過對物體位置的觀察序列中都可以找到它的身影。同時，卡爾曼濾波也是控制理論以及控制系統工程中的一個重要課題。例如，對於雷達來說，人們感興趣的是其能夠跟蹤目標。但目標的位置、速度、加速度的測量值往往在任何時候都有噪聲。卡爾曼濾波利用目標的動態資訊，設法去掉噪聲的影響，得到一個關於目標位置的好的估計。這個估計可以是對當前目標位置的估計。命名.這種濾波方法以它的發明者魯道夫·卡爾曼命名，但是根據知實際上Peter Swerling在更早之前就提出了一種類似的演算法。發表。目前，卡爾曼濾波已經有很多不同的實現。卡爾曼最初提出的形式現在一般稱為"簡單"卡爾曼濾波器。除此以外，還有施密特擴充套件濾波器、資訊濾波器以及很多Bierman, Thornton開發的平方根濾波器的變種。也許最常見的卡爾曼濾波器是鎖相環，它在收音機、計算機和幾乎任何影片或通訊裝置中廣泛存在。以下的討論需要線性代數以及機率論的一般知識。演算概念.卡爾曼濾波器使用系統的動態模型更好的估計，其精度比僅使用一種測量獲得的估算值高。它是一種常見的感測器融合和資料融合演算法。感測器資料的雜訊，描述系統演化的方程式的近似值以及未考慮所有因素的外部因素都限制了確定系統狀態的能力。卡爾曼濾波器有效地處理了由於感測器資料雜訊引起的不確定性，並在一定程度上處理了隨機外部因素。卡爾曼濾波器使用加權平均值生成系統狀態的估計值，作為系統預測狀態和新測量值的平均值。權重的目的是估計值具有更好的不確定性的值會被更多“信任”。權重是根據共變異數來計算的，共變異數是對系統狀態預測的估計不確定性的度量。加權平均值的結果是介於預測狀態和測量狀態之間的新狀態估計，並且比任何一個狀態都有更好的估計不確定性。在每個時間步重複此過程，新的估計值及其共變異數將通知後續迭代中使用的預測。這意味著卡爾曼濾波器可以遞迴地工作，並且只需要系統狀態的最後“最佳猜測”，而不是整個歷史，就可以計算新狀態。測量和當前狀態估計的相對確定性是重要的考慮因素，通常根據卡爾曼濾波器的增益來討論濾波器的反應。卡爾曼增益是賦予測量值和當前狀態估計值的相對權重，可以進行“調整”以獲得特定的效能。增益高時，濾波器將更多的精力放在最新的測量上，因此反應速度更快。增益較低時，濾波器會更緊密地遵循模型預測。在極端情況下，接近1的高增益將導致估計的軌跡更加跳躍，而接近零的低增益將消除雜訊，但會降低反應速度。在執行濾波器的實際計算時之間的線性關係。基本動態系統模型.卡爾曼濾波建立線上性代數和隱馬爾可夫模型干擾的線性運算元上的。系統的狀態可以用一個元素為實數的向量表示。隨著離散時間的每一個增加，這個線性運算元就會作用在當前狀態上，產生一個新的狀態，並也會帶入一些噪聲，同時系統的一些已知的控制器的控制資訊也會被加入。同時，另一個受噪聲干擾的線性運算元產生出這些隱含狀態的可見輸出。為了從一系列有噪聲的觀察資料中用卡爾曼濾波器估計出被觀察過程的內部狀態，必須把這個過程在卡爾曼濾波的框架下建立模型。也就是說對於每一步"k"，定義矩陣F"k", H"k", Q"k", R"k"，有時也需要定義B"k"，如下。卡爾曼濾波模型假設"k"時刻的真實狀態是從時刻的狀態演化而來，符合下式：formula_1其中formula_2時刻"k"，對真實狀態x"k"的一個測量z"k"滿足下式：formula_3其中H"k"是觀測模型，它把真實狀態空間對映成觀測空間，v"k"是觀測噪聲，其均值為零，協方差矩陣為R"k",且服從正態分佈。formula_4初始狀態以及每一時刻的噪聲{x0, w1, ..., w"k", v1 ... v"k"}都認為是互相獨立的。實際上，很多真實世界的動態系統都並不確切的符合這個模型；但是由於卡爾曼濾波器被設計在有噪聲的情況下工作，一個近似的符合已經可以使這個濾波器非常有用了。更多其它更復雜的卡爾曼濾波器的變種，在下邊討論中有描述。卡爾曼濾波器.卡爾曼濾波是一種遞迴的估計，即只要獲知上一時刻狀態的估計值以及當前狀態的觀測值就可以計算出當前狀態的估計值，因此不需要記錄觀測或者估計的歷史資訊。卡爾曼濾波器與大多數濾波器不同之處，在於它是一種純粹的時域濾波器，它不需要像低通濾波器等頻域濾波器那樣，需要在頻域設計再轉換到時域實現。卡爾曼濾波器的狀態由以下兩個變量表示：卡爾曼濾波器的操作包括兩個階段：預測與更新。在預測階段，濾波器使用上一狀態的估計，做出對當前狀態的估計。在更新階段，濾波器利用對當前狀態的觀測值最佳化在預測階段獲得的預測值，以獲得一個更精確的新估計值。formula_7formula_8預測.可參考：http://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf 可參考：http://web.mit.edu/kirtley/kirtley/binlustuff/literature/control/Kalman%20filter.pdf 更新.首先要算出以下三個量：formula_9formula_10formula_11然後用它們來更新濾波器變數x與P：formula_12formula_13使用上述公式計算formula_14僅在最優卡爾曼增益的時候有效。使用其他增益的話，公式要複雜一些，請導。不變數.如果模型準確，而且formula_15與formula_16的值準確的反映了最初狀態的分佈，那麼以下不變數就保持不變：所有估計的誤差均值為零且協方差矩陣準確的反映了估計的協方差：請注意，其中formula_22表示formula_23的期望值, formula_24。例項.考慮在無摩擦的、無限長的直軌道上的一輛車。該車最初停在位置0處，但時不時受到隨機的衝擊。每隔"Δt"秒即測量車的位置，但是這個測量是非精確的；想建立一個關於其位置以及速度的模型。來看如何推匯出這個模型以及如何從這個模型得到卡爾曼濾波器。因為車上無動力，所以可以忽略掉B"k"和u"k"。由於F、H、R和Q是常數，所以時間下標可以去掉。車的位置以及速度可以被線性狀態空間描述如下：formula_25其中formula_26是速度，也就是位置對於時間的導數。假設在時刻與"k"時刻之間，車受到"a""k"的加速度，其符合均值為0，標準差為"σ""a"的正態分佈。根據牛頓運動定律，可以推出formula_27其中formula_28且formula_29可以發現formula_30。在每一時刻，對其位置進行測量，測量受到噪聲干擾。假設噪聲服從正態分佈，均值為0，標準差為"σ"z。formula_31其中formula_32且formula_33如果知道足夠精確的車最初的位置，那麼可以初始化formula_34並且，若讓濾波器知道確切的初始位置，可給出一個協方差矩陣：formula_35如果不確切的知道最初的位置與速度，那麼協方差矩陣可以初始化為一個對角線元素是"B"的矩陣，"B"取一個合適的比較大的數。formula_36此時，與使用模型中已有資訊相比，濾波器更傾向於使用初次測量值的資訊。推導.推導後驗協方差矩陣.按照上邊的定義，從誤差協方差formula_6開始推導如下：formula_38代入formula_5formula_40再代入 formula_41formula_42與formula_43formula_44整理誤差向量，得formula_45因為測量誤差v"k"與其他項是非相關的，因此有formula_46利用協方差矩陣的性質，此式可以寫作formula_47使用不變數P"k"|"k"-1以及R"k"的定義這一項可以寫作formula_48這一公式對於任何卡爾曼增益K"k"都成立。如果K"k"是最優卡爾曼增益，則可以進一步簡化，請見下文。最優卡爾曼增益的推導.卡爾曼濾波器是一個最小均方誤差估計器，後驗狀態誤差估計是formula_49最小化這個向量幅度平方的期望值，formula_50，這等同於最小化後驗估計協方差矩陣P"k"|"k"的跡。將上面方程中的項展開、抵消，得到：當矩陣導數是0的時候得到P"k"|"k"的跡的最小值：formula_51此處須用到一個常用的式子，如下：formula_52從這個方程解出卡爾曼增益K"k"：formula_53formula_54這個增益稱為"最優卡爾曼增益"，在使用時得到最小均方誤差。後驗誤差協方差公式的化簡.在卡爾曼增益等於上面匯出的最優值時，計算後驗協方差的公式可以進行簡化。在卡爾曼增益公式兩側的右邊都乘以S"k"K"k""T"得到formula_55根據上面後驗誤差協方差展開公式，formula_56最後兩項可以抵消，得到formula_57.這個公式的計算比較簡單，所以實際中總是使用這個公式，但是需注意這公式僅在使用最優卡爾曼增益的時候它才成立。如果算術精度總是很低而導致數值穩定性出現問題，或者特意使用非最優卡爾曼增益，那麼就不能使用這個簡化；必須使用上面匯出的後驗誤差協方差公式。與遞迴貝葉斯估計之間的關係.假設真正的狀態是無法觀察的馬爾可夫過程，測量結果是從隱性馬爾可夫模型觀察到的狀態。根據馬爾可夫假設，真正的狀態僅受最近一個狀態影響而與其它以前狀態無關。formula_58與此類似，在時刻"k"測量只與當前狀態有關而與其它狀態無關。formula_59根據這些假設，隱性馬爾可夫模型所有狀態的機率分佈可以簡化為：formula_60然而，當卡爾曼濾波器用來估計狀態x時，感興趣的機率分佈，是基於目前為止所有個測量值來得到的當前狀態之機率分佈formula_61資訊濾波器.在資訊濾波器或逆共變異數濾波器中，估計的共變異數和估計狀態分別由資訊矩陣和資訊向量代替。 這些定義為：formula_62同樣，預測的共變異數和狀態具有等效的資訊形式，定義為：formula_63以及測量共變異數和測量向量，它們定義為：formula_64資訊更新現在變得微不足道了。formula_65資訊過濾器的主要優點是，只需將其測量資訊矩陣和向量相加即可在每個時間步長過濾N個測量值。formula_66為了預測資訊過濾器，可以將資訊矩陣和向量轉換回它們的狀態空間等效項，或者可以使用資訊空間預測。formula_67如果F和Q是非時變的，則可以將這些值快取起來，並且F和Q必須是可逆的。頻率加權卡爾曼濾波器.在1930年代，Fletcher和Munson進行了有關不同頻率的聲音感知的開創性研究。他們的工作導致了在工業雜訊和聽力損失調查中加權測得的聲音水平的標準方法。此後，已在濾波器和控制器設計中使用了頻率加權，以管理目標頻段內的效能。通常，頻率整形函式用於加權指定頻段中誤差頻譜密度的平均功率。 令 formula_68 表示由 傳統的卡爾曼濾波器。 同樣，讓 formula_69 表示因果頻率加權傳遞函式。 最小化 formula_70 是透過簡單地構建 formula_71 而產生的。formula_69的設計仍然是一個懸而未決的問題。 一種進行方式是識別產生估計誤差的系統，並將 formula_69 設定為等於該系統的倒數。 可以重複執行此過程，以提高均方誤差為代價，增加濾波器階數。可以將相同的技術應用於平滑器。非線性濾波器.基本卡爾曼濾波器中，或者兩者兼有之。擴充套件卡爾曼濾波器.在擴充套件卡爾曼濾波器函式。formula_74formula_75函式"f"可以用來從過去的估計值中計算預測的狀態，相似的，函式"h"可以用來以預測的狀態計算預測的測量值。然而"f"和"h"不能直接的應用在協方差中，取而代之的是計算偏導矩陣。在每一步中使用當前的估計狀態計算Jacobian矩陣，這幾個矩陣可以用在卡爾曼濾波器的方程中。這個過程，實質上將非線性的函式在當前估計值處線性化了。這樣一來，卡爾曼濾波器的等式為：預測formula_76formula_77使用Jacobians矩陣更新模型formula_78formula_79更新formula_80formula_10formula_11formula_12formula_84預測如同擴充套件卡爾曼濾波器更新過程合併來使用；或者，UKF的預測過程與更新過程在上述中地位互換亦可。卡爾曼-布西濾波器.卡爾曼-布西濾波器是Kalman濾波器的連續時間版本。它基於狀態空間模型formula_85其中 formula_86 和 formula_87 分別代表兩個白噪聲項 formula_88 和 formula_89 的強度。該濾波器由兩個微分方程組成，一個用於狀態估計，一個用於共變異數：formula_90卡爾曼增益由formula_91注意，在此表示式中，對於 formula_92 ，觀察雜訊 formula_87 的共變異數同時表示預測誤差formula_94 的共變異數； 這些共變異數僅在連續時間的情況下才相等。離散時間卡爾曼濾波的預測步驟和更新步驟之間的區別在連續時間內不存在。用於共變異數的第二個微分方程是Riccati方程的一個示例。混合型卡爾曼濾波器.大多數物理系統表示為連續時間模型，而離散時間測量則經常透過數字處理器進行狀態估計。 因此，系統模型和測量模型由下式給出：formula_95當formula_96.formula_97formula_98預測.預測方程式是從連續時間卡爾曼濾波器的方程式推導而得，而無需進行測量更新，例如: formula_99 。預測狀態和共變異數分別透過求解一組初始值等於上一步估計值的微分方程組來計算。線上性非時變系統的情況下，可以使用矩陣指數將連續時間動態精確地離散化為離散時間系統。formula_100更新.更新方程與離散時間卡爾曼濾波器的更新方程相同。