卡爾曼濾波

把卡爾曼濾波寫一下吧,思想很簡單匾鸥,不詳細寫了蜡塌,就是根據(jù)方差實現(xiàn)的一種最優(yōu)估計方法。


卡爾曼濾波五個基本的公式


1. 預測階段

1. 1 X(k|k-1)=AX(k-1|k-1)+BU(k)..........先驗估計
A,B為矩陣系數(shù)勿负,X(k|k-1)是根據(jù)上一狀態(tài)預測的結(jié)果馏艾,X(k-1|k-1)是上一次的最優(yōu)結(jié)果,U(k)為現(xiàn)在狀態(tài)的控制量奴愉。
1. 2 P(k|k-1)=A P(k-1| k-1) AT+Q..........誤差協(xié)方差
P(k|k-1)X(k|k-1)的協(xié)方差琅摩,P(k-1| k-1) X(k-1|k-1)的協(xié)方差,Q是估計過程的誤差協(xié)方差锭硼。


2. 校正階段

2. 1 Kg(k)= P(k|k-1) HT / (H P(k|k-1) HT + R)..........計算卡爾曼增益
H也為系數(shù)矩陣房资,R為測量值的噪聲協(xié)方差。
2. 2 X(k|k)= X(k|k-1) + Kg(k)(Z(k) - H X(k|k-1))..........修正估計
Z(K)是測量值檀头。
2. 3 P(k|k)=( I-Kg(k) H) P(k|k-1)..........更新誤差協(xié)方差
*I 是為1的矩陣轰异,對于單模型單測量I *為1.


代碼詳解


直接上代碼,看代碼的實現(xiàn)過程要更清晰有邏輯些
先放一個網(wǎng)址鳖擒,解釋的很詳細溉浙。
另外一個卡爾曼濾波九軸融合算法stm32嘗試
以下是一個平衡車的卡爾曼濾波代碼:

float  Q_angle=0.001;    //陀螺儀噪聲的協(xié)方差
float  Q_gyro=0.003;    //陀螺儀漂移噪聲的協(xié)方差
float  R_angle=0.5;      // 加速度計的協(xié)方差
float  dt=0.005;      
char   C_0 = 1;
float  Q_bias=0, Angle_err=0;  //Q_bias為陀螺儀漂移
float  PCt_0=0, PCt_1=0, E=0;
float  K_0=0, K_1=0, t_0=0, t_1=0;
float  Pdot[4] ={0,0,0,0};
float  PP[2][2] = { { 1, 0 },{ 0, 1 } };
void Kalman_Filter(float Gyro,float Accel)  
{    //Gyro陀螺儀的測量值,Accel加速度計的角度計算值
    
     Angle+=(Gyro - Q_bias) * dt;  
    //角度測量模型方程
    //就漂移來說認為每次都是相同的Q_bias=Q_bias蒋荚;
    //由此得到矩陣
狀態(tài)估計矩陣

以上代碼對應第一個公式X(k|k-1)=AX(k-1|k-1)+BU(k)


    Pdot[0]=Q_angle - PP[0][1] - PP[1][0]; 
    Pdot[1] = -PP[1][1];
    Pdot[2] = -PP[1][1];
    Pdot[3] = Q_gyro;

    PP[0][0] += Pdot[0] * dt;   
    PP[0][1] += Pdot[1] * dt;   
    PP[1][0] += Pdot[2] * dt;
    PP[1][1] += Pdot[3] * dt;

以上代碼對應第二個公式P(k|k-1)=A P(k-1| k-1) AT+Q
公式中Q為向量A的協(xié)方差矩陣

協(xié)方差矩陣

因為漂移噪聲和角度噪聲是相互獨立的戳稽,所以cov(x,y)=0,又因為cov(x,x)=D(x),方差值Q_angle,Q_bias程序開頭定義已給出
卡爾曼濾波的目標就是使P(k-1| k-1)值最小期升,設(shè)為[a,b; c,d] 代入公式計算得

dt方值太小忽略掉

代碼中的Pdot為矩陣計算得中間變量惊奇,PP對應a,b,c,d


    PCt_0 = C_0 * PP[0][0];//矩陣乘法的中間變量
    PCt_1 = C_0 * PP[1][0];//C_0=1
     //分母
    E = R_angle + C_0 * PCt_0;
          //增益值
    K_0 = PCt_0 / E;
    K_1 = PCt_1 / E;

以上代碼對應第三個公式Kg(k)= P(k|k-1) HT / (H P(k|k-1)
這里卡爾曼增益是一個二維向量|k0, k1|T,H=|1, 0|,R即為加速度計測量出角度值的噪聲


    Angle_err = Accel - Angle;   

    Angle   += K_0 * Angle_err; 
    Q_bias  += K_1 * Angle_err; 
    Gyro_x   = Gyro - Q_bias;    //計算得角速度值

以上對應第四個公式X(k|k)= X(k|k-1) + Kg(k)(Z(k) - H X(k|k-1))播赁,代入相應值即可


    t_0 = PCt_0; //矩陣計算中間變量
    t_1 = C_0 * PP[0][1];

    PP[0][0] -= K_0 * t_0;      
    PP[0][1] -= K_0 * t_1;
    PP[1][0] -= K_1 * t_0;
    PP[1][1] -= K_1 * t_1;
}

第五個公式P(k|k)=( I-Kg(k) H) P(k|k-1)


寫這么多怪有成就感的颂郎,不過排版還是略累啊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市容为,隨后出現(xiàn)的幾起案子乓序,更是在濱河造成了極大的恐慌寺酪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件替劈,死亡現(xiàn)場離奇詭異寄雀,居然都是意外死亡,警方通過查閱死者的電腦和手機陨献,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門盒犹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人眨业,你說我怎么就攤上這事急膀。” “怎么了龄捡?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵卓嫂,是天一觀的道長。 經(jīng)常有香客問我墅茉,道長命黔,這世上最難降的妖魔是什么呜呐? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任就斤,我火速辦了婚禮,結(jié)果婚禮上蘑辑,老公的妹妹穿的比我還像新娘洋机。我一直安慰自己,他們只是感情好洋魂,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布绷旗。 她就那樣靜靜地躺著,像睡著了一般副砍。 火紅的嫁衣襯著肌膚如雪衔肢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天豁翎,我揣著相機與錄音角骤,去河邊找鬼。 笑死心剥,一個胖子當著我的面吹牛邦尊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝉仇,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼俺叭,長吁一口氣:“原來是場噩夢啊……” “哼啃炸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起又沾,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤弊仪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后杖刷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撼短,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年挺勿,在試婚紗的時候發(fā)現(xiàn)自己被綠了曲横。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡不瓶,死狀恐怖禾嫉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚊丐,我是刑警寧澤熙参,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站麦备,受9級特大地震影響孽椰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凛篙,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一黍匾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧呛梆,春花似錦锐涯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至滞磺,卻和暖如春升薯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背击困。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工涎劈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沛励。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓责语,卻偏偏與公主長得像,于是被迫代替她去往敵國和親目派。 傳聞我的和親對象是個殘疾皇子坤候,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 卡爾曼濾波在我當學生的時候就用過,但是當年我似乎就是套公式企蹭,沒有理解其精髓白筹,加之時間久了有點模糊智末,突然需要指導學生...
    Roger_羅杰閱讀 83,864評論 41 159
  • 本文將不解釋卡爾曼濾波具體的數(shù)學原理,不作為小白晉升高端玩家的臺階徒河,只說卡爾曼濾波在簡單場景下(處理溫度系馆、加速度計...
    倫啊倫閱讀 68,266評論 13 61
  • kalman的學習策略 對于基礎(chǔ)公式,能夠理解就行了顽照,基礎(chǔ)的數(shù)學概念要清楚不需要自己推導由蘑,多做一些例子去看這個濾波...
    scott_yu779閱讀 2,956評論 0 2
  • 所謂濾波,實際上是要去掉自己不想要的信號代兵,保留想要的部分尼酿。一般來說,是把過程中的噪聲去掉植影∩亚妫卡爾曼濾波的默認假定是,...
    點滴回憶閱讀 1,055評論 0 2
  • 網(wǎng)上很多關(guān)于卡爾曼的講解思币,自從看到Y(jié)outube上的這個視頻鹿响,才煥然大悟!這才是真正的深入淺出呀谷饿! 以下內(nèi)容摘錄于...
    vedon_fu閱讀 2,695評論 4 8