首先聲明:本文的兩個主旨是①“如果將卡爾曼濾波看做一個系統,那么Q,R先驗地決定了這個系統對來自狀態預測和來自觀測預測的置信度(通過K矩陣體現,K矩陣像一個系數一樣對兩個預測進行加權得到最優估計(見下面圖4的公式四))” ②在做仿真任務時,注意對效果的評估是受相對誤差影響的,即同樣大小的誤差用在不同的模型上表現的效果不同。例如同樣的精度的傳感器,在工程道路測量上的表現令人可以接受,但是在精細的測繪中就令人不滿意了。
本文的參考資料我大力推薦,真的很棒! 文章中對參考資料的引用可能可以通過ctrl+f在網頁中搜索一些關鍵詞搜索到,閱讀本文時建議同步閱讀參考資料。
1 前言,故事背景:
故事背景是我為了學習卡爾曼濾波預測器,而做”卡爾曼濾波算法的仿真練習”(下稱練習或作業),如下:
1.1 題目
(作業要求做直線軌跡和圓弧軌跡,以下敘述均只敘述與直線軌跡有關內容)
1.2 初步解題
我是在沒有理論基礎的前提下寫這個練習的,以至於對一些矩陣的意義不明白(例如K,P等),更別說卡爾曼的五個公式的推導了;另外我一些方面基礎較差,在剛開始寫這個練習的時候我不清楚協方差(包括單隨機變量和隨機向量)的定義和計算方法,一些矩陣乘法的技巧也不熟悉。
我初步清晰地自定義了一個如下運動模型,然后直接用精准觀測值(即真實值)作為五個公式公式四的y(k),套用五個公式,得到了與題目中參考仿真結果相近的可喜結果(圖1)
物體擺在世界坐標系下(30,0,0)處,手眼相機坐標系三軸指向始終保持與世界坐標系相同,
% 一、物體擺在世界坐標系下(30,0,0)處,手眼相機坐標系三軸指向始終保持與世界坐標系相同,
% 二、手眼相機從(0,0,0)開始以2m/s勻速沿着x軸靠近物體
% 三、注:迭代過程中的觀測量y采用了精准觀測值(即真實值),
% 例如在k=4時,是第3拍,當前時刻為0.75s,相機已前進1.5m,那么觀測值y即為(28.5,0,0,0,0,0)'
圖1
1.3 問題出現
然后,有同學抱着“不加噪聲,卡爾曼濾波的優化如何體現?”的疑問問我如何在這個仿真作業中加入噪聲。我思考了一下,首先認為確實需要加入噪聲,因為①這位同學的質疑很有道理; ② 畢竟我們聲明了“觀測方程噪聲V的協方差是單位矩陣”,雖然不清楚協方差的定義,但是還是知道噪聲不會全為0,否則協方差矩陣就是0矩陣了; ③觀測量是通過傳感器得到的,傳感器的測量量存在誤差人盡皆知,在做仿真作業不應該忽略傳感器的測量量這么明顯的要素。
然而,在給y的第一維(即x方向位移的觀測量)添加了rand產生的高斯分布噪聲后,整個擬合結果非常辣眼睛(見圖2,位移預測還能接受,速度預測偏差太大,甚至可以描述為“天女散花”,速度預測的偏差在預測值畫散點圖時更加明顯),於是產生了“到底要不要加噪聲”和“為什么加了噪聲效果后卡爾曼似乎沒有正確預測”的疑問
圖2(左:位移,右:速度)
這時,為了解決第一個疑問,我去網上找了卡爾曼濾波的示例代碼,請轉到參考1:https://zhuanlan.zhihu.com/p/29191795進行查看。這個鏈接里的代碼寫得非常清楚,是非常典型的卡爾曼濾波仿真代碼。請讀者注意看他的三段實測的代碼(實際上只是改變了Q的值而已)及結果:①“% 【1】預測誤差比較大的時候,Q = 200;”
②“
% 【2】預測誤差適中的時候,
Q = 10^-1;
”,③“% 【3】預測誤差很小的時候,
Q = 10^-6;
”。 可見參考1的卡爾曼濾波示例不僅加了噪聲,而且得到了同樣“差勁”的預測結果。所以,我更加相信要加噪聲。
但是,第二個疑問還沒有解決,尤其是看着來自老師的優秀參考仿真結果,不禁想:為什么加了噪聲效果后卡爾曼似乎沒有正確預測?是我哪里寫錯了嗎?
2 對卡爾曼濾波原理的學習:
前面提到我一些方面基礎較差,我不清楚協方差(包括單隨機變量和隨機向量)的定義和計算方法,不熟悉一些矩陣乘法的技巧,也不理解卡爾曼濾波中K,P這些關鍵矩陣的意義。實際上,為了弄懂原理,我必須得清楚知道計算流程和每一步計算的含義。另外,我還需要弄明白,卡爾曼濾波是用來做什么的,他是怎么得到最優估計的。這里插上一句,協方差相關的知識缺少的話還是建議補習的,因為用處挺大的。
2.1 基本原理
Thank to 一些優秀的網上資源,參考2:https://zhuanlan.zhihu.com/p/137235479(在閱讀這段時,請同步打開這個鏈接進行參考) 清晰地講解了卡爾曼濾波是怎么得到最優估計的:卡爾曼濾波做估計的兩個依據來源是“理論預測”和“實際測量"。
“理論預測”是通過對系統進行運動建模得到的,這個運動模型的信息提供給卡爾曼濾波系統(可以想象這個信息存儲在系統的"理論預測"模塊中),例如參考2中的運動模型就是勻加速直線運動,即通過x(t-1)估計x(t)時,由於系統的"理論預測"模塊認為汽車完全是在進行勻加速直線運動,所以x(t)=x(t-1)+v(t-1)*Δt+½*a*(Δt)²。而在上述練習中,系統的理論預測對應A矩陣,系統的"理論預測"模塊認為手眼相機完全是在進行勻速直線運動,所以展開計算卡爾曼濾波的公式一就會發現:x(t)=x(t-1)+dx(t-1)*T。
“實際測量"就比較簡單了,只需要直接讀取測量量,經過一個矩陣將測量空間映射到真實狀態空間就可以告知卡爾曼濾波系統:"總部!根據測量,當前狀態為xx,請參考!"(注:卡爾曼的公式中沒有直接將測量空間映射到真實狀態空間的測量矩陣,做這種映射的是K矩陣,相反倒是有“將真實狀態空間映射到測量空間”的矩陣H(參考2中)/C(練習中),關於這一點的思考見本節的第6段“附注一點”)。
於是得到了這兩個依據來源后,就可以進行“2.3 理論預測與實際測量融合”了,融合的依據是所謂的求出卡爾曼增益K “使得每時刻的估計誤差方差最小”然后對這兩個依據來源線性加權,其實更新P,K才是卡爾曼濾波的精髓靈魂,涉及較多數學推導,想具體了解請參考參考2和其他資料。
參考2的這篇文章非常清晰地進行了公式推導,解釋了P,K矩陣的來源和意義,完全解釋了卡爾曼五個公式每個公式的作用和意義,非常贊!尤其是我能把參考2中的公式符號與練習中的對應起來,對我理解卡爾曼濾波的公式原理非常有幫助!
附注一點,關於測量量的映射矩陣,在練習中對應C矩陣(這里沒有怎么映射,因為是直接測得xyz三軸位置等,所以用6*12的C矩陣進行直接提取(參見C矩陣的定義))。這樣做似乎不太直觀,為什么不是直接提取測量信息的到“測量對狀態的估計”呢?可以按下面兩點理解:①用這樣的H/C矩陣可以在測量空間中導出“理論估計值與測量值之間的誤差的協方差矩陣”,雖然與”理論估計值與真實狀態之間的誤差”不在同一個空間。但是我們的最終目的是“估計值與系統的真實值之間的誤差最小”(見參考2式(11)),既然是“估計值與系統的真實值之間的誤差”,那我們有哪些與“理論預測”和“實際測量"相關的真實值呢?最直接的就是真實狀態量(真實狀態空間)和真實測量量(測量空間)“理論預測”——狀態估計和“實際測量"——測量估計對應。通過參考2的推導,我們發現空間不同並不影響推導的正確性,從某種程度上說,這樣推導可能更簡潔。② 據我猜測,先將真實測量量映射到狀態空間再計算誤差也是可以的,有待對其他資料考察和來自它們的支持。
另外的補充說明:上述只是講解了一次估計的原理,雖然參考2和練習給出的公式涉及了迭代,但是下述資料可能可以幫助你理解得更好:參考3:https://www.jianshu.com/p/d3b1c3d307e0 (推薦關注其中的“3.卡爾曼濾波的通俗理解”),以具體的數值例子,通俗地從置信度角度切入,說明卡爾曼濾波的線性加權本質。另外,他對於置信度(通過均方差描述(因為參考3中的例子是一維的,所以是均方差,他文章里也說了“如果狀態向量是多維,那么方差就該變為協方差”)的數值更新直觀地體現了卡爾曼濾波對"所有歷史值均有考察的特點"(見“於是我們可以把綠色分布當做第一張圖中的紅色分布對t=k+1時刻進行預測”所在段落)。
更為重要的是參考3說明卡爾曼原理的時候回到了本質上的“概率”問題,在本博客下文,你將看到我對卡爾曼中概率(協方差,置信度)的解釋。
2.2 一個錯誤想法
因為圖1中的初始狀態(坐標(0,0,0))與真實狀態(坐標(30,0,0))差別很大而卡爾曼濾波能修正回來,我曾經高估了卡爾曼濾波的智能度,甚至極端地,我曾想象卡爾曼濾波在面對偏差較大的測量值時,會根據歷史條件非常智能地對測量值的采納進行調整。具體地舉例說:例如系統平穩運行一段時間,在第k時刻突然測量到狀態突變,我想象系統會自動對這個異常值進行修正,以使狀態整體波動不大。
以上想法過於空想,理想主義,一方面沒有依據,另一方面:我們不能假想狀態突變就是測量異常而且系統運行平穩,假設是系統真的狀態突變(即測量量是准確度)而系統錯誤地修正了,那么狀態估計就是錯誤的了。以上想法給卡爾曼系統過多的預知知識了,實際上,在第k時刻前,卡爾曼系統根本不知道第k時刻測到的狀態突變是測量失誤還是系統真實狀態突變。如果不糾正上述對卡爾曼系統的錯誤崇拜,就可能不會去從原理解釋為什么加了噪聲后卡爾曼似乎沒有正確預測,而無法理解出錯的本質原因。
2.3 一個重要發現
之前偶然對卡爾曼濾波五個公式里的變量做了拓撲排序(用這個術語我很得意啊,對不懂拓撲排序的同學:拓撲排序的意思就是圖里"只有箭頭源頭被求出后才能求箭頭指向的對象"),見下圖。
圖3(符號參考練習文檔)
圖4.對預處理K的實驗驗證(綠線是預處理K后得到的X估計,整體上移了一個單位以作對比(重合可能不易看))
發現了什么? X與y是不影響P,K的值的! 這從計算原理上否定了2.2節中說的“卡爾曼系統的智能估計”,更進一步說,對於作業中的定常系統(A,G,C恆定,實際上很多系統都是定常系統),只要Q,R確定,我們完全可以預處理得到P(k),K(k)(實際是只需要每時刻保存的只有K,見卡爾曼公式四),然后再逐時刻求得X的最優估計! 並且預處理K的正確性也被實驗驗證.(見圖4),可見預處理K后得到的X最優估計與原本直接套5個公式得到的結果 完 全 一 致 !
2.4 對Q,R本質的研究
好了,基於2.2節和2.3節提出的“卡爾曼系統沒有那么智能”和“對於定常系統可以預處理K”,我們完全撇清了y對於卡爾曼增益K亦即加權系數的影響。從一個角度說明:你y任取,我系統都不為所動(指“笑死,P,K矩陣根本不變”),那么在這里我們已經初步得到了要不要加噪聲的結論了,結論是加不加都行!這個結論可能比較抽象突兀,下面將進一步介紹。(最終回答見3.1節)
由圖3的拓撲排序知:對於定常系統,影響P,K的只有Q,R矩陣。參考2中“那么如何度量理論估計值... 與真實狀態...之間的差距呢?也就是說理論估計值的估計誤差有多少?這可以用協方差矩陣來表示”和參考3中的“究竟相信誰多一點,我們可以用kalman的方法來加權,即利用他們的方差σ^2來判斷”的敘述表明:卡爾曼中是用協方差來描述誤差和置信度的,進一步說:協方差影響權重K(這點在K矩陣的定義中已經說明了:求出卡爾曼增益K “加權后的估計值與系統的真實值之間的誤差最小”(參考2))。這一點不難理解:協方差大,說明波動大,說明你狀態預測(“理論預測”)或測量預測(“實際測量”)不准、誤差大,那我系統自然就對你的信任低,你置信度就低嘛。
而Q,R正好就是噪聲的協方差矩陣,描述了通過狀態預測和通過測量預測的不准確度,於是我斷言:我們在使用卡爾曼濾波系統進行最優估計的時候,傳給系統的先驗知識除了初始狀態外,就只有Q,R這個兩個矩陣,這兩個矩陣向系統聲明:“在面對狀態預測和通過測量預測時,你對他們的相信程度請參考我們這兩個矩陣描述的噪聲的方差!”
結合2.3節的敘述,我們發現,無論你傳入什么y,我卡爾曼系統照單全收,是一個無情的計算機器(這一點在預處理K時更加明顯),根本不會去動態考慮“誒,這個y偏那么多會不會是假的呀”。但是值得一提的是:不同的y會導致X(k)序列的改變,導致不同的預測結果(參見卡爾曼公式四,不同的y序列會連鎖地影響X的歷史值(最好在預處理K的前提下思考))。結合2.2節,以上容易理解:因為系統對未來完全未知,他能做的只有按照預設好的數學規律進行“它所認為的最優估計”,而“不同的y會導致X(k)序列的改變”則體現了卡爾曼系統對歷史值的考量。從始至終,系統對狀態預測和通過測量預測的相信程度(采納度)都是相對於實際觀測值和狀態值靜態的,它們只受實際觀測值和狀態值(提供狀態預測和通過測量預測)的波動情況(協方差)影響。
了解Q,R的來源對理解上述描述有幫助。參考4:https://blog.csdn.net/u011362822/article/details/95905113 講解了在實際中應用卡爾曼濾波如何確定Q,R矩陣:根據人們對系統的考察,對狀態方程(考察運動時為運動方程)的協方差估計確定Q, 傳感器的精度確定R。選取不同的Q,R就是對卡爾曼系統進行超參數設置,會深刻影響預測結果,對狀態值的波動和觀測值的波動的正確評估與否(是否接近波動的真實情況)決定了卡爾曼系統的表現,因為現實中狀態值和觀測值就是按照真實的波動情況波動的(因為噪聲)(廢話),這里說的波動情況等價於噪聲的分布情況。
回首參考1中的三個測試效果,他保持R不變,設置Q越來越小,表示狀態值的波動越來越小,狀態值的置信度越來越高,系統由Q的不同經過主要相信觀測->較綜合考察->主要相信狀態三個模式,得到不同的預測結果。 值得提醒的是:並不能從參考1的三個測試的預測結果直接得到第三種Q,R配置最接近真實值的結論,關於R可以說是最優的因為代碼傳入的R矩陣是噪聲n的真實協方差。但對於Q,Q的配置是否接近真實值是比較難考察的,這里Q取得極小而系統表現良好的另一個關鍵原因是在這個仿真代碼中X的初值的准確的,如果X的初值不准確(例如練習中的),那么去很小的Q使卡爾曼系統非常相信狀態預測,那么會得出不好的結果(壞笑)。另外,背離采用真實的R的原則而去人為增大R傳給卡爾曼系統效果可能也會變好,但顯然人為增大的R不可能比真實的R要優。(因為根本上是不符合實際的),所以直接從預測結果斷言Q,R配置的好壞是不科學的,僅能做一定的參考。 最后對參考1的三個測試的總結:通過Q,R的設置,調整了卡爾曼系統對狀態預測和測量預測分別的相信程度。
我們人為地告訴了卡爾曼系統Q,R以決定系統對狀態預測和測量預測的采納比,卡爾曼系統“笨笨地,不會'聰明'地去畫蛇添足地"揣摩例如"突變的觀測值要不要忽視"這類本質上不可揣摩的問題,因為未來完全是未知的。正因為這個“不可揣摩”,卡爾曼濾波的"最優的估計預測算法"的頭銜才不會被摘掉。
3 對兩個疑問的最終解答:
3.1 到底要不要加噪聲
加亦可,不加亦可。
首先,加上噪聲是一種完美的仿真:我知道測量量的真實值,而且又定義了噪聲的協方差矩陣R非0,給他加一個協方差符合R的噪聲,理所應當。其次,加了噪聲更有助於看出卡爾曼濾波的優化效果,這不顯得你槍法准嗎?(開玩笑,無惡意,意思就是確實要評估一下卡爾曼的效果)
而不加噪聲的原因呢? 首先,不加噪聲也能看出卡爾曼槍法准,圖1中X的初始狀態偏差真實狀態很大,但是這個卡爾曼系統實現了糾正。 其次,不加噪聲並不會導致卡爾曼系統運作失常,根據2.4節,卡爾曼對輸入的觀測值y照單全收,他也不知道這是不是真實值,反正他就心驚膽戰地抱着“哇,這群y測量值的協方差是單位陣誒,拿到這些y的時候要小心謹慎!”(笑死了哈哈)的心態無情地埋頭算着他的數學公式,卡爾曼濾波系統並沒有知道這些是測量的真實值,也不會取巧地發現“預測密碼”而實現完美預測。第三:加噪聲后畫出來的預測圖給人的直觀感受會受到運動尺度的影響(將在第四節講解)。最后,協方差是無限時空下的統計特性,在每次運行卡爾曼系統時並不能保證測量量噪聲的協方差一定就是R(雖然都接近R),但是完全取符合R分布的噪聲比較脫離實際(尤其是在這里樣本量較少的時候,練習中只有61個時刻需要加誤差),在實際應用中我們也只是拿着觀測量直接傳入而不管觀測量是多少,從某種程度上說,作為仿真設計者,也要設身處地地為卡爾曼系統着想,拋開一些上帝視角,無論傳入什么y,QR已定,都體現了系統的特性。
啊這,不加噪聲的第四點理由強詞奪理到我自己都受不了了,太詭辯了,至少無論如何都不能證明完全不加噪聲比加准確的噪聲要優。其實最終結論是:應該加噪聲,而且在仿真這種可以加准確的噪聲的理想環境下可以加准確的噪聲。同時,加一些不那么准確的,例如協方差不嚴格為單位陣,而是對角線元素是0.9左右,剩下元素是0.1左右的噪聲也是可以接受的。見下一段。
下面插入一個加准確噪聲和加近似噪聲(即上一段說的不那么准確的噪聲)的對比實驗(噪聲為matlab同種子下rand產生,准確噪聲直接計算噪聲的協方差(近似於單位陣)傳給卡爾曼系統,而近似噪聲直接傳入單位陣,注意與上一段的“准確-近似”定義有區別),可見差別不大。同時站在統計概率的局部抽樣有一定偏差性的角度,總體上說,對噪聲的要求不必很嚴格,近似噪聲也可以接受。完全不加噪聲在"簡單地完成練習"層面也可以接受,取決於老師想通過作業考察學生們什么。經過第四節的講述,最終對於這個練習還是不加噪聲的好。(汗)
圖5 准確噪聲分布(藍線)與近似噪聲分布(綠線)的對比
3.2 為什么加了噪聲效果后卡爾曼似乎沒有正確預測
根據2.2-2.4節的論述,卡爾曼系統是“笨笨的”,沒有人們幻想得那么精明。 具體地說:Q,R定了(作業的要求),卡爾曼系統也就定了,卡爾曼系統被設定成“比較相信觀測”,那么預測結果當然就更加地跟隨觀測值,所以粗略地說:觀測值是什么樣的,預測值大概就是是什么樣的。抽象地直觀地說:這套Q,R參數不適合(雖然作業的這個系統中Q難以確定,R已經對應觀測噪聲真實分布了,我也不知道適合的Q,R參數是什么樣的,所以這個結論只是泛泛的直觀感受)。 從另一個角度:在保證Q不變的情況下(我們假設系統的狀態量的方差就是這么大),這個系統的效果不好,可以解釋的原因之一是傳感器太差了!(你的速度絕對值就只有2,你測量絕對誤差尺度竟然有1!(其實是協方差為單位陣,就先直觀地叫誤差尺度為1吧,我目前不清楚協方差為單位陣的噪聲一般偏差多少))如果傳感器質量高一些,絕對誤差尺度降到0.1,那么看起來效果不就好起來了嗎? 同樣的道理,具體應用中,相對誤差比絕對誤差有效得多,直觀地看圖片中偏移的大小有時會導致錯覺,因為我們可能忽略坐標軸的尺度單位。接下來的實驗可以清晰地展示尺度對於誤差對人的感受的直觀影響的干擾!(其實基於圖5能說明坐標尺度的影響:假設擴大縱軸的范圍,那么誤差就會“被壓縮”,直觀地看過去可能會感覺預測效果蠻好的)
4 運動尺度的干擾:
3.2節講到卡爾曼濾波效果不好可能是因為傳感器太差了,可以換更好的傳感器以降低相對誤差來讓效果看起來好。降低相對誤差的另一個方法是加大運動尺度,我運動速度是10m/s而誤差上下波動不變,那么matlab的plot畫出來的圖看起來不就好看些了嗎,那卡爾曼濾波的效果不就“好起來了”嗎?
圖6 運動尺度放大后“卡爾曼表現更優了”
如圖6,將原本2m/s共運動30m的運動更改為10m/s運動150m(其余不變)后整體看起來卡爾曼槍法又准起來了,我的聰明的卡爾曼回來了!但是真實情況是:卡爾曼還是那個笨笨的卡爾曼,他只是在無情地繼續算着它的數學。效果看起來更優了一方面是因為相對誤差變小了,更直接的是plot畫出來的圖的縱坐標范圍更大了,同樣大小的絕對誤差被“放小”了。(實際上,將圖放大,有時人也會直觀地認為誤差還是很大......)這也說明,對於150m這么大的運動尺度,這個誤差尺度為1的傳感器又夠用了!所以卡爾曼效果,傳感器好壞都是相對量。
那么關於要不要加噪聲的問題,由於這個作業規定了Q,R矩陣都是單位陣,R矩陣對應的傳感器又不一定夠用,所以要加噪聲要么使用加大運動尺度的trick,要么明白卡爾曼的原理然后向老師報告:”老師,不是我和卡爾曼的錯,都是這個傳感器的錯!” 在運動尺度小的時候加了噪聲,人又不懂卡爾曼的原理的時候反而會非常疑惑(《論本文是怎么誕生的》),所以不加噪聲也不是壞事。(誤)
5 關於Q:
在1.3節中提到參考1中修改不同的Q值使得預測結果不同,我在2.4節中指出“並不能從參考1的三個測試的預測結果直接得到第三種Q,R配置最接近真實值的結論”,其中的原因之一就是Q采用了准確的初始值,在關於本次練習的實驗中,我也做了相關內容:將Q縮小1000倍,其余參量不變,同時讓X的初始值設為真實的(30,0,0,0,...,0),得到了可喜的結果。因為系統的狀態初值是准確的,保證了以后的估計與真實偏差不大(因為期望的運動通過矩陣A已經預設好了,現實的運動和狀態預測所基於的運動都以A為藍本,只是現實的運動可能與理想有一定偏差而已),同時系統被設置為“比較相信狀態估計,不要太考慮觀測估計”,所以系統的預測受觀測估計的噪聲影響就不大。 這充分體現了Q,R參數對卡爾曼表現的影響。在現實應用中能否正確估計Q,R參數是很重要的!
圖7 讓卡爾曼系統更相信狀態預測
6 總結:
卡爾曼濾波的最優估計來源於對狀態預測和觀測預測的加權考量。
卡爾曼濾波是一個數學工具,並不會玄學地過於智能地進行“思考”從而完美預測任何狀態估計,是具有一定的適用范圍的。但同時他背后有科學的強大的數學原理支撐。
卡爾曼系統中狀態&觀測量對於卡爾曼對狀態預測和觀測預測采納權重的單方面解耦的,即前兩者不影響后兩者。算法調用者向卡爾曼系統傳入狀態量的協方差Q和觀測量的協方差R,以此來告知系統應該對兩個參考進行怎樣的加權采納,優化目標是使估計量與真實量誤差方差最小。系統接受Q,R后,整個系統實際上已經固定,P,K矩陣均可預處理求出,然后再逐時刻求出X(k)(依據當前時刻的K(k)對狀態預測(from X(k,k-1))和觀測預測(from y(k))進行線性加權)。由於系統的這種固定性,在實際應用中傳入Q,R時應力求傳入准確的協方差矩陣(至少你要告訴卡爾曼濾波小寶寶比較准確的情報吧),以使卡爾曼濾波正常、科學、優質地表現出應有水平。
關於本次作業要不要加噪聲:因為本次作業並沒有准備考察噪聲方面的知識,在誤差的相對尺度規定上有疏忽(沒有規定運動尺度而固定了R為單位陣),所以不加噪聲可以接受。但是一般來說,做仿真,當然要加噪聲,並且要向系統傳入正確的R矩陣(准確值和近似值均可接受),以此觀測卡爾曼系統的效果,理解其數學原理(包括Q,R矩陣的意義,和設置不Q,R表示設置置信度)。
在做仿真時,更應關注相對誤差,小心地考慮誤差到底有多大,不要僅直觀觀測忽視坐標尺度而被畫出來的圖所誤導。
7 致謝與參考資料:
當然要感謝問題的提出者(那位同學)和這個練習的作者啦! 最后,還要感謝我自己!
參考資料:
1.卡爾曼濾波示例:https://zhuanlan.zhihu.com/p/29191795
2.卡爾曼濾波器預測原理:https://zhuanlan.zhihu.com/p/137235479
3.卡爾曼濾波的概率置信度角度講解:https://www.jianshu.com/p/d3b1c3d307e0
4. kalman中協方差矩陣的計算:https://blog.csdn.net/u011362822/article/details/95905113
5.知乎一個答主的回答,通俗地講了卡爾曼濾波是干什么的 https://www.zhihu.com/question/23971601/answer/26254459