在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是卡爾曼濾波?卡爾曼濾波的作用是什么

嵌入式開發愛好者 ? 來源:嵌入式開發愛好者 ? 2023-08-08 09:39 ? 次閱讀

一、什么是卡爾曼濾波?

你可以在任何含有不確定信息的動態系統中使用卡爾曼濾波,對系統下一步的走向做出有根據的預測,即使伴隨著各種干擾,卡爾曼濾波總是能指出真實發生的情況。

在連續變化的系統中使用卡爾曼濾波是非常理想的,它具有占用內存小的優點(除了前一個狀態量外,不需要保留其它歷史數據),并且速度很快,很適合應用于實時問題和嵌入式系統

在Google上找到的大多數關于實現卡爾曼濾波的數學公式看起來有點晦澀難懂,這個狀況有點糟糕。實際上,如果以正確的方式看待它,卡爾曼濾波是非常簡單和容易理解的,下面我將用漂亮的圖片和色彩清晰的闡述它,你只需要懂一些基本的概率和矩陣的知識就可以了。

二、我們能用卡爾曼濾波做什么?

用玩具舉例:你開發了一個可以在樹林里到處跑的小機器人,這個機器人需要知道它所在的確切位置才能導航。

我們可以說機器人有一個狀態07c5ed2a-353c-11ee-9e74-dac502259ad0.png,表示位置和速度:

07d3c8c8-353c-11ee-9e74-dac502259ad0.png

注意這個狀態只是關于這個系統基本屬性的一堆數字,它可以是任何其它的東西。在這個例子中是位置和速度,它也可以是一個容器中液體的總量,汽車發動機的溫度,用戶手指在觸摸板上的位置坐標,或者任何你需要跟蹤的信號

這個機器人帶有GPS,精度大約為10米,還算不錯,但是,它需要將自己的位置精確到10米以內。樹林里有很多溝壑和懸崖,如果機器人走錯了一步,就有可能掉下懸崖,所以只有GPS是不夠的。

或許我們知道一些機器人如何運動的信息:例如,機器人知道發送給電機的指令,知道自己是否在朝一個方向移動并且沒有人干預,在下一個狀態,機器人很可能朝著相同的方向移動。當然,機器人對自己的運動是一無所知的:它可能受到風吹的影響,輪子方向偏了一點,或者遇到不平的地面而翻倒。所以,輪子轉過的長度并不能精確表示機器人實際行走的距離,預測也不是很完美。

GPS 傳感器告訴了我們一些狀態信息,我們的預測告訴了我們機器人會怎樣運動,但都只是間接的,并且伴隨著一些不確定和不準確性。但是,如果使用所有對我們可用的信息,我們能得到一個比任何依據自身估計更好的結果嗎?回答當然是YES,這就是卡爾曼濾波的用處。

三、卡爾曼濾波是如何看到你問題的

下面我們繼續以只有位置和速度這兩個狀態的簡單例子做解釋。

07f111c6-353c-11ee-9e74-dac502259ad0.png

我們并不知道實際的位置和速度,它們之間有很多種可能正確的組合,但其中一些的可能性要大于其它部分:

07fc6a44-353c-11ee-9e74-dac502259ad0.png

卡爾曼濾波假設兩個變量(位置和速度,在這個例子中)都是隨機的,并且服從高斯分布。每個變量都有一個均值 μ,表示隨機分布的中心(最可能的狀態),以及方差08099516-353c-11ee-9e74-dac502259ad0.png,表示不確定性。

081ee290-353c-11ee-9e74-dac502259ad0.png

在上圖中,位置和速度是不相關的,這意味著由其中一個變量的狀態無法推測出另一個變量可能的值。下面的例子更有趣:位置和速度是相關的,觀測特定位置的可能性取決于當前的速度:

0838cf16-353c-11ee-9e74-dac502259ad0.png

這種情況是有可能發生的,例如,我們基于舊的位置來估計新位置。如果速度過高,我們可能已經移動很遠了。如果緩慢移動,則距離不會很遠。跟蹤這種關系是非常重要的,因為它帶給我們更多的信息:其中一個測量值告訴了我們其它變量可能的值,這就是卡爾曼濾波的目的,盡可能地在包含不確定性的測量數據中提取更多信息!

這種相關性用協方差矩陣來表示,簡而言之,矩陣中的每個元素0845498a-353c-11ee-9e74-dac502259ad0.png表示第 i 個和第 j 個狀態變量之間的相關度。(你可能已經猜到協方差矩陣是一個對稱矩陣,這意味著可以任意交換 i 和 j)。協方差矩陣通常用“0853b4b6-353c-11ee-9e74-dac502259ad0.png”來表示,其中的元素則表示為“085d1a10-353c-11ee-9e74-dac502259ad0.png”。

086df3b2-353c-11ee-9e74-dac502259ad0.png

四、使用矩陣來描述問題

我們基于高斯分布來建立狀態變量,所以在時刻 k 需要兩個信息:最佳估計088e74e8-353c-11ee-9e74-dac502259ad0.png(即均值,其它地方常用 μ 表示),以及協方差矩陣0896ba0e-353c-11ee-9e74-dac502259ad0.png

08a2dafa-353c-11ee-9e74-dac502259ad0.png

(1)

(當然,在這里我們只用到了位置和速度,實際上這個狀態可以包含多個變量,代表任何你想表示的信息)。接下來,我們需要根據當前狀態(k-1 時刻)來預測下一狀態(k 時刻)。記住,我們并不知道對下一狀態的所有預測中哪個是“真實”的,但我們的預測函數并不在乎。它對所有的可能性進行預測,并給出新的高斯分布。

08b7526e-353c-11ee-9e74-dac502259ad0.png

我們可以用矩陣08daee90-353c-11ee-9e74-dac502259ad0.png來表示這個預測過程:

08ebe7b8-353c-11ee-9e74-dac502259ad0.png

它將我們原始估計中的每個點都移動到了一個新的預測位置,如果原始估計是正確的話,這個新的預測位置就是系統下一步會移動到的位置。那我們又如何用矩陣來預測下一個時刻的位置和速度呢?下面用一個基本的運動學公式來表示:

08faeaba-353c-11ee-9e74-dac502259ad0.png

現在,我們有了一個預測矩陣來表示下一時刻的狀態,但是,我們仍然不知道怎么更新協方差矩陣。此時,我們需要引入另一個公式,如果我們將分布中的每個點都乘以矩陣 A,那么它的協方差矩陣090520ac-353c-11ee-9e74-dac502259ad0.png會怎樣變化呢?很簡單,下面給出公式:

0915477a-353c-11ee-9e74-dac502259ad0.png

結合方程(4)和(3)得到:

092560c4-353c-11ee-9e74-dac502259ad0.png

五、外部控制量

我們并沒有捕捉到一切信息,可能存在外部因素會對系統進行控制,帶來一些與系統自身狀態沒有相關性的改變。

以火車的運動狀態模型為例,火車司機可能會操縱油門,讓火車加速。相同地,在我們機器人這個例子中,導航軟件可能會發出一個指令讓輪子轉向或者停止。如果知道這些額外的信息,我們可以用一個向量09365bae-353c-11ee-9e74-dac502259ad0.png來表示,將它加到我們的預測方程中做修正。

假設由于油門的設置或控制命令,我們知道了期望的加速度093eb448-353c-11ee-9e74-dac502259ad0.jpg,根據基本的運動學方程可以得到:

094967e4-353c-11ee-9e74-dac502259ad0.png

以矩陣的形式表示就是:

09590ece-353c-11ee-9e74-dac502259ad0.png

09749d88-353c-11ee-9e74-dac502259ad0.png稱為控制矩陣,09365bae-353c-11ee-9e74-dac502259ad0.png稱為控制向量(對于沒有外部控制的簡單系統來說,這部分可以忽略)。讓我們再思考一下,如果我們的預測并不是100%準確的,該怎么辦呢?

外部干擾

如果這些狀態量是基于系統自身的屬性或者已知的外部控制作用來變化的,則不會出現什么問題。

但是,如果存在未知的干擾呢?例如,假設我們跟蹤一個四旋翼飛行器,它可能會受到風的干擾,如果我們跟蹤一個輪式機器人,輪子可能會打滑,或者路面上的小坡會讓它減速。這樣的話我們就不能繼續對這些狀態進行跟蹤,如果沒有把這些外部干擾考慮在內,我們的預測就會出現偏差。

在每次預測之后,我們可以添加一些新的不確定性來建立這種與“外界”(即我們沒有跟蹤的干擾)之間的不確定性模型:

0996b7b0-353c-11ee-9e74-dac502259ad0.png

原始估計中的每個狀態變量更新到新的狀態后,仍然服從高斯分布。我們可以說09a50a72-353c-11ee-9e74-dac502259ad0.png的每個狀態變量移動到了一個新的服從高斯分布的區域,協方差為09afb300-353c-11ee-9e74-dac502259ad0.png。換句話說就是,我們將這些沒有被跟蹤的干擾當作協方差為09afb300-353c-11ee-9e74-dac502259ad0.png的噪聲來處理。

09da50c4-353c-11ee-9e74-dac502259ad0.png

這產生了具有不同協方差(但是具有相同的均值)的新的高斯分布。

09e3944a-353c-11ee-9e74-dac502259ad0.png

我們通過簡單地添加09afb300-353c-11ee-9e74-dac502259ad0.png得到擴展的協方差,下面給出預測步驟的完整表達式:

0a094a0a-353c-11ee-9e74-dac502259ad0.png

由上式可知,新的最優估計是根據上一最優估計預測得到的,并加上已知外部控制量的修正。

而新的不確定性由上一不確定性預測得到,并加上外部環境的干擾。

好了,我們對系統可能的動向有了一個模糊的估計,用0a168c1a-353c-11ee-9e74-dac502259ad0.png0a2c267e-353c-11ee-9e74-dac502259ad0.png來表示。如果再結合傳感器的數據會怎樣呢?

六、用測量值來修正估計值

我們可能會有多個傳感器來測量系統當前的狀態,哪個傳感器具體測量的是哪個狀態變量并不重要,也許一個是測量位置,一個是測量速度,每個傳感器間接地告訴了我們一些狀態信息。

0a357bc0-353c-11ee-9e74-dac502259ad0.jpg

注意,傳感器讀取的數據的單位和尺度有可能與我們要跟蹤的狀態的單位和尺度不一樣,我們用矩陣0a4cfad4-353c-11ee-9e74-dac502259ad0.png來表示傳感器的數據。

0a5961e8-353c-11ee-9e74-dac502259ad0.jpg

我們可以計算出傳感器讀數的分布,用之前的表示方法如下式所示:

0a6b89c2-353c-11ee-9e74-dac502259ad0.png

卡爾曼濾波的一大優點就是能處理傳感器噪聲,換句話說,我們的傳感器或多或少都有點不可靠,并且原始估計中的每個狀態可以和一定范圍內的傳感器讀數對應起來。

0a7c2dae-353c-11ee-9e74-dac502259ad0.jpg

從測量到的傳感器數據中,我們大致能猜到系統當前處于什么狀態。但是由于存在不確定性,某些狀態可能比我們得到的讀數更接近真實狀態。

0a85e722-353c-11ee-9e74-dac502259ad0.png

我們將這種不確定性(例如:傳感器噪聲)用協方差0aa58582-353c-11ee-9e74-dac502259ad0.png表示,該分布的均值就是我們讀取到的傳感器數據,稱之為0ab4bff2-353c-11ee-9e74-dac502259ad0.png

現在我們有了兩個高斯分布,一個是在預測值附近,一個是在傳感器讀數附近。

0ac61f54-353c-11ee-9e74-dac502259ad0.jpg

我們必須在預測值(粉紅色)和傳感器測量值(綠色)之間找到最優解。

那么,我們最有可能的狀態是什么呢?對于任何可能的讀數0ade2928-353c-11ee-9e74-dac502259ad0.png,有兩種情況:(1)傳感器的測量值;(2)由前一狀態得到的預測值。如果我們想知道這兩種情況都可能發生的概率,將這兩個高斯分布相乘就可以了。

0ae7b68c-353c-11ee-9e74-dac502259ad0.png

剩下的就是重疊部分了,這個重疊部分的均值就是兩個估計最可能的值,也就是給定的所有信息中的最優估計。

瞧!這個重疊的區域看起來像另一個高斯分布。

0afc44a8-353c-11ee-9e74-dac502259ad0.png

如你所見,把兩個具有不同均值和方差的高斯分布相乘,你會得到一個新的具有獨立均值和方差的高斯分布!下面用公式講解。

七、融合高斯分布

先以一維高斯分布來分析比較簡單點,具有方差0b13ad1e-353c-11ee-9e74-dac502259ad0.png和 μ 的高斯曲線可以用下式表示:

0b27698a-353c-11ee-9e74-dac502259ad0.png

如果把兩個服從高斯分布的函數相乘會得到什么呢?

0b36ac60-353c-11ee-9e74-dac502259ad0.png

將式(9)代入到式(10)中(注意重新歸一化,使總概率為1)可以得到:

0b3f6864-353c-11ee-9e74-dac502259ad0.png

將式(11)中的兩個式子相同的部分用 k 表示:

0b4a283a-353c-11ee-9e74-dac502259ad0.png

下面進一步將式(12)和(13)寫成矩陣的形式,如果 Σ 表示高斯分布的協方差,0b548910-353c-11ee-9e74-dac502259ad0.png表示每個維度的均值,則:

0b65868e-353c-11ee-9e74-dac502259ad0.png

矩陣0b73d162-353c-11ee-9e74-dac502259ad0.jpg稱為卡爾曼增益,下面將會用到。放松!我們快要完成了!

八、將所有公式整合起來

我們有兩個高斯分布,預測部分0b7c88d4-353c-11ee-9e74-dac502259ad0.png,和測量部分0b876678-353c-11ee-9e74-dac502259ad0.png,將它們放到式(15)中算出它們之間的重疊部分:

0b953b90-353c-11ee-9e74-dac502259ad0.png

由式(14)可得卡爾曼增益為:

0ba3a8b0-353c-11ee-9e74-dac502259ad0.png

將式(16)和式(17)的兩邊同時左乘矩陣的逆(注意0b73d162-353c-11ee-9e74-dac502259ad0.jpg里面包含了0bc220e2-353c-11ee-9e74-dac502259ad0.png)將其約掉,再將式(16)的第二個等式兩邊同時右乘矩陣0bcce662-353c-11ee-9e74-dac502259ad0.png的逆得到以下等式:

0bd81762-353c-11ee-9e74-dac502259ad0.png

上式給出了完整的更新步驟方程。0be984de-353c-11ee-9e74-dac502259ad0.png就是新的最優估計,我們可以將它和0bf8b5da-353c-11ee-9e74-dac502259ad0.png放到下一個預測和更新方程中不斷迭代。

0c01a492-353c-11ee-9e74-dac502259ad0.jpg

九、總結

以上所有公式中,你只需要用到式(7)、(18)、(19)。(如果忘了的話,你可以根據式(4)和(15)重新推導一下)

我們可以用這些公式對任何線性系統建立精確的模型,對于非線性系統來說,我們使用擴展卡爾曼濾波,區別在于EKF多了一個把預測和測量部分進行線性化的過程。

責任編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3625

    瀏覽量

    129754
  • 數據
    +關注

    關注

    8

    文章

    7139

    瀏覽量

    89578
  • 模型
    +關注

    關注

    1

    文章

    3306

    瀏覽量

    49223
  • 卡爾曼濾波
    +關注

    關注

    3

    文章

    166

    瀏覽量

    24699

原文標題:卡爾曼濾波算法原理的基本分析

文章出處:【微信號:嵌入式開發愛好者,微信公眾號:嵌入式開發愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    卡爾濾波

    卡爾濾波的估計值能很好的逼近真實值,我的疑惑是,這和濾波有什么關系,請高手介紹下卡爾算法是如
    發表于 07-04 22:57

    卡爾濾波有哪些應用

    卡爾濾波風力發電機中的風速估計,轉速估計甚至扭矩估計都設計到卡爾濾波,如果只是單一傳感變量的
    發表于 07-12 06:00

    卡爾濾波簡介

    在這里我就不介紹卡爾的數學推算了,網上的數學推導一抓一大把,如果想了解推導過程的小伙伴可以去大佬的博客。如果你是想直接簡單運用卡爾濾波
    發表于 02-28 14:24

    卡爾濾波器原理

    離散卡爾濾波器1960年,卡爾發表了他著名的用遞歸方法解決離散數據線性濾波問題的論文[Kal
    發表于 07-14 13:03 ?0次下載

    卡爾濾波器原理簡介

    這是關于卡爾濾波的一份相當不錯的資料,詳細的剖析了卡爾濾波原理
    發表于 12-15 14:19 ?60次下載

    卡爾濾波學習及應用

    卡爾濾波的學習與應用。
    發表于 04-13 15:15 ?7次下載

    卡爾濾波算法

    卡爾濾波算法
    發表于 12-17 17:22 ?52次下載

    一文看懂mpu6050卡爾濾波程序

    本文開始闡述了卡爾濾波的概念,其次闡述了卡爾濾波的性質與
    發表于 03-09 08:57 ?7.4w次閱讀
    一文看懂mpu6050<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>程序

    幾種最優估計和卡爾濾波原理的學習課件免費下載

    本文檔的主要內容詳細介紹的是幾種最優估計和卡爾濾波原理的學習課件免費下載包括了:1 卡爾濾波
    發表于 05-09 08:00 ?22次下載
    幾種最優估計和<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>原理的學習課件免費下載

    卡爾濾波原理及應用

    卡爾濾波原理及應用-黃小平
    發表于 06-09 14:37 ?0次下載

    擴展卡爾濾波的原理

    在很多實際工程問題當中,非線性系統占大多數,而卡爾提出來的卡爾濾波器是一種針對線性系統的估計算法[1]。 為了解決這一問題,Schmid
    的頭像 發表于 08-12 10:06 ?5805次閱讀
    擴展<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>的原理

    卡爾濾波(KF)與擴展卡爾(EKF)

    卡爾濾波是一種高效率的遞歸濾波器(自回歸濾波器), 它能夠從一系列的不完全包含噪聲的測量(英文:measurement)中,估計動態系統的
    發表于 05-10 17:51 ?3次下載

    淺析卡爾濾波

    在 飛行器姿態計算 中,卡爾濾波是最常用的姿態計算方法之一。今天就以目前的理解講以下卡爾濾波
    的頭像 發表于 06-14 10:44 ?2127次閱讀

    卡爾濾波家族

    本文對于擴展卡爾濾波、無跡卡爾濾波僅僅做了一些簡要介紹,不再想上次的文章那樣做詳細地推導了。
    的頭像 發表于 01-14 14:29 ?979次閱讀
    <b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>家族

    卡爾濾波在圖像處理中的應用實例 如何調優卡爾濾波參數

    卡爾濾波在圖像處理中的應用實例 卡爾濾波在圖像處理中主要應用于目標跟蹤、噪聲消除和圖像恢復等
    的頭像 發表于 12-16 09:11 ?557次閱讀
    主站蜘蛛池模板: 1000部又爽又黄的做黄禁片 | 高h道具触手play肉男男 | 呦交小u女国产秘密入口 | 免费看美女毛片 | 成年全黄大色大黄 | 国产做爰一区二区 | 亚洲精品视频在线看 | 亚洲一区二区电影 | 日本一区二区在线不卡 | 一级美女视频 | 亚洲小视频在线播放 | 色老头一区二区三区在线观看 | 五月天婷婷伊人 | 国产午夜精品久久久久九九 | 三级在线观看网站 | 高清一区二区三区视频 | 亚洲日本视频在线观看 | 看免费视频| 欧美一区二区三区免费高 | 天天综合久久久网 | 久久天天躁夜夜躁狠狠85麻豆 | 欧美猛交喷潮在线播放 | 毛片爱做的片 | 欧美黑人xxxx猛牲大交 | 色噜噜狠狠狠狠色综合久 | 中文字幕亚洲综合久久2 | 网站在线观看视频 | 欧美乱论视频 | 91大神在线精品视频一区 | 黑人黑粗硬视频 | 日韩激情淫片免费看 | 亚洲欧美婷婷 | 午夜高清视频 | 日本一区二区三区在线 视频观看免费 | 97超频国产在线公开免费视频 | 午夜资源| 不卡视频一区 | 黄色午夜影院 | 在线播放国产不卡免费视频 | 国产成人久视频免费 | 伊人yinren6综合网色狠狠 |