女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解卡爾曼濾波原理

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 2023-07-13 16:20 ? 次閱讀

我不得不說說卡爾曼濾波,因為它能做到的事情簡直讓人驚嘆!意外的是很少有軟件工程師和科學(xué)家對對它有所了解,這讓我感到沮喪,因為卡爾曼濾波是一個如此強(qiáng)大的工具,能夠在不確定性中融合信息,與此同時,它提取精確信息的能力看起來不可思議。

1、什么是卡爾曼濾波?

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

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

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

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

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

我們可以說機(jī)器人有一個狀態(tài)eed066b6-2153-11ee-962d-dac502259ad0.png,表示位置和速度: eeebc2f8-2153-11ee-962d-dac502259ad0.png ???

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

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

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

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

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

下面我們繼續(xù)以只有位置和速度這兩個狀態(tài)的簡單例子做解釋。 ef33f226-2153-11ee-962d-dac502259ad0.png ????

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

ef487bce-2153-11ee-962d-dac502259ad0.png ????
卡爾曼濾波假設(shè)兩個變量(位置和速度,在這個例子中)都是隨機(jī)的,并且服從高斯分布。每個變量都有一個均值 μ,表示隨機(jī)分布的中心(最可能的狀態(tài)),以及方差ef6f0532-2153-11ee-962d-dac502259ad0.png,表示不確定性。

ef8538ac-2153-11ee-962d-dac502259ad0.png ???

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

efae2ff0-2153-11ee-962d-dac502259ad0.png ???

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

這種相關(guān)性用協(xié)方差矩陣來表示,簡而言之,矩陣中的每個元素efcdfad8-2153-11ee-962d-dac502259ad0.png表示第 i 個和第 j 個狀態(tài)變量之間的相關(guān)度。(你可能已經(jīng)猜到協(xié)方差矩陣是一個對稱矩陣,這意味著可以任意交換 i 和 j)。協(xié)方差矩陣通常用“efec2224-2153-11ee-962d-dac502259ad0.png”來表示,其中的元素則表示為“f0039184-2153-11ee-962d-dac502259ad0.png”。

f01b4c8e-2153-11ee-962d-dac502259ad0.png

4、使用矩陣來描述問題

我們基于高斯分布來建立狀態(tài)變量,所以在時刻 k 需要兩個信息:最佳估計f049ff5c-2153-11ee-962d-dac502259ad0.png(即均值,其它地方常用 μ 表示),以及協(xié)方差矩陣f05e5f56-2153-11ee-962d-dac502259ad0.png

f06fda10-2153-11ee-962d-dac502259ad0.png ???

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

f0931700-2153-11ee-962d-dac502259ad0.png ???

我們可以用矩陣f0bd68de-2153-11ee-962d-dac502259ad0.png來表示這個預(yù)測過程:

f0dca9b0-2153-11ee-962d-dac502259ad0.png ????

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

f104f514-2153-11ee-962d-dac502259ad0.png ????

現(xiàn)在,我們有了一個預(yù)測矩陣來表示下一時刻的狀態(tài),但是,我們?nèi)匀徊恢涝趺锤聟f(xié)方差矩陣。此時,我們需要引入另一個公式,如果我們將分布中的每個點都乘以矩陣 A,那么它的協(xié)方差矩陣f1285bda-2153-11ee-962d-dac502259ad0.png會怎樣變化呢?很簡單,下面給出公式:

f13ef34a-2153-11ee-962d-dac502259ad0.png ????

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

f1570c82-2153-11ee-962d-dac502259ad0.png

5、外部控制量

我們并沒有捕捉到一切信息,可能存在外部因素會對系統(tǒng)進(jìn)行控制,帶來一些與系統(tǒng)自身狀態(tài)沒有相關(guān)性的改變。

以火車的運(yùn)動狀態(tài)模型為例,火車司機(jī)可能會操縱油門,讓火車加速。相同地,在我們機(jī)器人這個例子中,導(dǎo)航軟件可能會發(fā)出一個指令讓輪子轉(zhuǎn)向或者停止。如果知道這些額外的信息,我們可以用一個向量f1721eb4-2153-11ee-962d-dac502259ad0.png來表示,將它加到我們的預(yù)測方程中做修正。 ???

假設(shè)由于油門的設(shè)置或控制命令,我們知道了期望的加速度f1895f16-2153-11ee-962d-dac502259ad0.jpg,根據(jù)基本的運(yùn)動學(xué)方程可以得到:

f1ab12a0-2153-11ee-962d-dac502259ad0.png ????

以矩陣的形式表示就是:

f1c07a3c-2153-11ee-962d-dac502259ad0.png ????f1dc534c-2153-11ee-962d-dac502259ad0.png稱為控制矩陣,f1721eb4-2153-11ee-962d-dac502259ad0.png稱為控制向量(對于沒有外部控制的簡單系統(tǒng)來說,這部分可以忽略)。讓我們再思考一下,如果我們的預(yù)測并不是100%準(zhǔn)確的,該怎么辦呢?

6、外部干擾

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

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

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

f201454e-2153-11ee-962d-dac502259ad0.png ????

原始估計中的每個狀態(tài)變量更新到新的狀態(tài)后,仍然服從高斯分布。我們可以說f23af852-2153-11ee-962d-dac502259ad0.png的每個狀態(tài)變量移動到了一個新的服從高斯分布的區(qū)域,協(xié)方差為f24c3f68-2153-11ee-962d-dac502259ad0.png。換句話說就是,我們將這些沒有被跟蹤的干擾當(dāng)作協(xié)方差為f24c3f68-2153-11ee-962d-dac502259ad0.png的噪聲來處理。

f2773128-2153-11ee-962d-dac502259ad0.png ???

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

f29a01ee-2153-11ee-962d-dac502259ad0.png ????

我們通過簡單地添加f24c3f68-2153-11ee-962d-dac502259ad0.png得到擴(kuò)展的協(xié)方差,下面給出預(yù)測步驟的完整表達(dá)式:

f2d5eb32-2153-11ee-962d-dac502259ad0.png ????

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

而新的不確定性由上一不確定性預(yù)測得到,并加上外部環(huán)境的干擾。

好了,我們對系統(tǒng)可能的動向有了一個模糊的估計,用f2f0e0b8-2153-11ee-962d-dac502259ad0.pngf30abe2a-2153-11ee-962d-dac502259ad0.png來表示。如果再結(jié)合傳感器的數(shù)據(jù)會怎樣呢?

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

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

f32590f6-2153-11ee-962d-dac502259ad0.jpg ???

注意,傳感器讀取的數(shù)據(jù)的單位和尺度有可能與我們要跟蹤的狀態(tài)的單位和尺度不一樣,我們用矩陣f342ed2c-2153-11ee-962d-dac502259ad0.png來表示傳感器的數(shù)據(jù)。

f353889e-2153-11ee-962d-dac502259ad0.jpg ????

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

f36f3918-2153-11ee-962d-dac502259ad0.png ????

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


f38b3f1e-2153-11ee-962d-dac502259ad0.jpg ????

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

f3acad5c-2153-11ee-962d-dac502259ad0.png ????

我們將這種不確定性(例如:傳感器噪聲)用協(xié)方差f3d312c6-2153-11ee-962d-dac502259ad0.png表示,該分布的均值就是我們讀取到的傳感器數(shù)據(jù),稱之為f3ec60be-2153-11ee-962d-dac502259ad0.png。 ????現(xiàn)在我們有了兩個高斯分布,一個是在預(yù)測值附近,一個是在傳感器讀數(shù)附近。

f405adb2-2153-11ee-962d-dac502259ad0.jpg ????

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

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

f4320fec-2153-11ee-962d-dac502259ad0.png ????

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

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

f45c89ca-2153-11ee-962d-dac502259ad0.png ????

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

8、融合高斯分布

先以一維高斯分布來分析比較簡單點,具有方差f46f3c96-2153-11ee-962d-dac502259ad0.png和 μ 的高斯曲線可以用下式表示:

f494f558-2153-11ee-962d-dac502259ad0.png ????

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

f4b112c4-2153-11ee-962d-dac502259ad0.png ???

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

f4d5cf2e-2153-11ee-962d-dac502259ad0.png ????

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

f4eb989a-2153-11ee-962d-dac502259ad0.png ????

下面進(jìn)一步將式(12)和(13)寫成矩陣的形式,如果 Σ 表示高斯分布的協(xié)方差,f502d38e-2153-11ee-962d-dac502259ad0.png表示每個維度的均值,則:

f52455ea-2153-11ee-962d-dac502259ad0.png ????

矩陣f53e74ca-2153-11ee-962d-dac502259ad0.jpg稱為卡爾曼增益,下面將會用到。放松!我們快要完成了! ????

將所有公式整合起來

我們有兩個高斯分布,預(yù)測部分f5545286-2153-11ee-962d-dac502259ad0.png,和測量部分f5756a34-2153-11ee-962d-dac502259ad0.png,將它們放到式(15)中算出它們之間的重疊部分:

f5926f12-2153-11ee-962d-dac502259ad0.png ????
由式(14)可得卡爾曼增益為:

f5a72fb0-2153-11ee-962d-dac502259ad0.png ????

將式(16)和式(17)的兩邊同時左乘矩陣的逆(注意f53e74ca-2153-11ee-962d-dac502259ad0.jpg里面包含了f5da0570-2153-11ee-962d-dac502259ad0.png)將其約掉,再將式(16)的第二個等式兩邊同時右乘矩陣f5f07044-2153-11ee-962d-dac502259ad0.png的逆得到以下等式:

f6057c6e-2153-11ee-962d-dac502259ad0.png ????

上式給出了完整的更新步驟方程。f62300ea-2153-11ee-962d-dac502259ad0.png就是新的最優(yōu)估計,我們可以將它和f63c1d1e-2153-11ee-962d-dac502259ad0.png放到下一個預(yù)測和更新方程中不斷迭代。

f6522f50-2153-11ee-962d-dac502259ad0.jpg

9、總結(jié)

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

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





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2562

    文章

    52548

    瀏覽量

    763636
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    16960

    瀏覽量

    182885
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    213

    文章

    29475

    瀏覽量

    211532
  • 卡爾曼濾波
    +關(guān)注

    關(guān)注

    3

    文章

    166

    瀏覽量

    24977

原文標(biāo)題:把卡爾曼濾波原理給講清楚了

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    卡爾濾波

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

    一個應(yīng)用實例詳解卡爾濾波及其算法實現(xiàn)

    為了可以更加容易的理解卡爾濾波器,這里會應(yīng)用形象的描述方法來講解,而不是像大多數(shù)參考書那樣羅列一大堆的數(shù)學(xué)公式和數(shù)學(xué)符號。但是,他的5條公式是其核心內(nèi)容。結(jié)合現(xiàn)代的計算機(jī),其實卡爾
    發(fā)表于 09-12 22:16

    卡爾濾波有哪些應(yīng)用

    卡爾濾波風(fēng)力發(fā)電機(jī)中的風(fēng)速估計,轉(zhuǎn)速估計甚至扭矩估計都設(shè)計到卡爾濾波,如果只是單一傳感變量的
    發(fā)表于 07-12 06:00

    卡爾濾波簡介

    在這里我就不介紹卡爾的數(shù)學(xué)推算了,網(wǎng)上的數(shù)學(xué)推導(dǎo)一抓一大把,如果想了解推導(dǎo)過程的小伙伴可以去大佬的博客。如果你是想直接簡單運(yùn)用卡爾濾波
    發(fā)表于 02-28 14:24

    卡爾濾波器原理簡介

    這是關(guān)于卡爾濾波的一份相當(dāng)不錯的資料,詳細(xì)的剖析了卡爾濾波原理
    發(fā)表于 12-15 14:19 ?60次下載

    卡爾濾波學(xué)習(xí)及應(yīng)用

    卡爾濾波的學(xué)習(xí)與應(yīng)用。
    發(fā)表于 04-13 15:15 ?7次下載

    卡爾濾波算法

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

    一文看懂mpu6050卡爾濾波程序

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

    卡爾濾波原理及應(yīng)用

    卡爾濾波原理及應(yīng)用-黃小平
    發(fā)表于 06-09 14:37 ?0次下載

    擴(kuò)展卡爾濾波的原理

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

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

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

    淺析卡爾濾波

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

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

    一、什么是卡爾濾波? 你可以在任何含有不確定信息的動態(tài)系統(tǒng)中使用卡爾濾波,對系統(tǒng)下一步的走向
    的頭像 發(fā)表于 08-08 09:39 ?7836次閱讀
    什么是<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>?<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>的作用是什么

    一文詳解卡爾濾波

    卡爾濾波(Kalman Filter),以下簡稱KF,是由Swerling(1958)和Kalman(1960)作為線性高斯系統(tǒng)(linear Gaussian system)中的預(yù)測和濾波
    的頭像 發(fā)表于 08-10 09:58 ?1.1w次閱讀
    一文<b class='flag-5'>詳解</b><b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>

    卡爾濾波家族

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