色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

平衡小車卡爾曼濾波算法使用心得

j4AI_wujianying ? 來源:未知 ? 作者:李倩 ? 2018-03-31 10:46 ? 次閱讀

這次的平衡車,使用到了卡爾曼濾波,下面談談使用心得

我們是利用角速度傳感器和加速度傳感器測量得到角度和角速度,但是由于車子是運動的,我們利用加速度得到的角度并不完全正確,由于噪聲干擾,我們對角速度傳感器的測量值也存在懷疑。于是我們就要進行濾波,通過兩個傳感器數值上的相互關系來得到我們想要的結果。我們使用卡爾曼濾波器連接這兩個測量值。

首先開感性的理解一下卡爾曼,引用網上(百度百科)的經典解釋:

在介紹他的5條公式之前,先讓我們來根據下面的例子一步一步的探索。

假 設我們要研究的對象是一個房間的溫度。根據你的經驗判斷,這個房間的溫度是恒定的,也就是下一分鐘的溫度等于現在這一分鐘的溫度(假設我們用一分鐘來做時 間單位)。假設你對你的經驗不是100%的相信,可能會有上下偏差幾度。我們把這些偏差看成是高斯白噪聲(White Gaussian Noise),也就是這些偏差跟前后時間是沒有關系的而且符合高斯分配(Gaussian Distribution)。另外,我們在房間里放一個溫度計,但是這個溫度計也不準確的,測量值會比實際值偏差。我們也把這些偏差看成是高斯白噪聲。

好了,現在對于某一分鐘我們有兩個有關于該房間的溫度值:你根據經驗的預測值(系統的預測值)和溫度計的值(測量值)。下面我們要用這兩個值結合他們各自的噪聲來估算出房間的實際溫度值。

假 如我們要估算k時刻的是實際溫度值。首先你要根據k-1時刻的溫度值,來預測k時刻的溫度。因為你相信溫度是恒定的,所以你會得到k時刻的溫度預測值是跟 k-1時刻一樣的,假設是23度,同時該值的高斯噪聲的偏差是5度(5是這樣得到的:如果k-1時刻估算出的最優溫度值的偏差是3,你對自己預測的不確定 度是4度,他們平方相加再開方,就是5)。然后,你從溫度計那里得到了k時刻的溫度值,假設是25度,同時該值的偏差是4度。

由于我們用 于估算k時刻的實際溫度有兩個溫度值,分別是23度和25度。究竟實際溫度是多少呢?相信自己還是相信溫度計呢?究竟相信誰多一點,我們可以用他們的 covariance來判斷。因為Kg^2=5^2/(5^2+4^2),所以Kg=0.78,我們可以估算出k時刻的實際溫度值是:23+0.78* (25-23)=24.56度。可以看出,因為溫度計的covariance比較小(比較相信溫度計),所以估算出的最優溫度值偏向溫度計的值。

現 在我們已經得到k時刻的最優溫度值了,下一步就是要進入k+1時刻,進行新的最優估算。到現在為止,好像還沒看到什么自回歸的東西出現。對了,在進入 k+1時刻之前,我們還要算出k時刻那個最優值(24.56度)的偏差。算法如下:((1-Kg)*5^2)^0.5=2.35。這里的5就是上面的k時 刻你預測的那個23度溫度值的偏差,得出的2.35就是進入k+1時刻以后k時刻估算出的最優溫度值的偏差(對應于上面的3)。

就是這樣,卡爾曼濾波器就不斷的把covariance遞歸,從而估算出最優的溫度值。他運行的很快,而且它只保留了上一時刻的covariance。上面的Kg,就是卡爾曼增益(Kalman Gain)。他可以隨不同的時刻而改變他自己的值,是不是很神奇!

然后看看我們的代碼,代碼來自網絡,使用的是ouravr某大牛的代碼

#include "Kalman.h"

float Q_angle=0.001, Q_gyro=0.003, R_angle=0.5, dt=0.005;

//注意:dt的取值為kalman濾波器采樣時間;

float P[2][2] = {

{ 1, 0 },

{ 0, 1 }

};

float Pdot[4] ={0,0,0,0};

const char C_0 = 1;

float q_bias, angle_err, PCt_0, PCt_1, E, K_0, K_1, t_0, t_1;

//-------------------------------------------------------

void Kalman_Filter(float angle_m,float gyro_m) //gyro_m:gyro_measure

{

angle+=(gyro_m-q_bias) * dt;//先驗估計

Pdot[0]=Q_angle - P[0][1] - P[1][0];// Pk-' 先驗估計誤差協方差的微分

Pdot[1]=- P[1][1];

Pdot[2]=- P[1][1];

Pdot[3]=Q_gyro;

P[0][0] += Pdot[0] * dt;// Pk- 先驗估計誤差協方差微分的積分 = 先驗估計誤差協方差

P[0][1] += Pdot[1] * dt;

P[1][0] += Pdot[2] * dt;

P[1][1] += Pdot[3] * dt;

angle_err = angle_m - angle;//zk-先驗估計

PCt_0 = C_0 * P[0][0];

PCt_1 = C_0 * P[1][0];

E = R_angle + C_0 * PCt_0;

K_0 = PCt_0 / E;//Kk

K_1 = PCt_1 / E;

t_0 = PCt_0;

t_1 = C_0 * P[0][1];

P[0][0] -= K_0 * t_0;//后驗估計誤差協方差

P[0][1] -= K_0 * t_1;

P[1][0] -= K_1 * t_0;

P[1][1] -= K_1 * t_1;

angle += K_0 * angle_err;//后驗估計

q_bias += K_1 * angle_err;//后驗估計

angle_dot = gyro_m-q_bias;//輸出值(后驗估計)的微分 = 角速度

}

我們一個個語句進行解釋

angle+=(gyro_m-q_bias) * dt

首先我們要利用系統的過程模型,來預測下一狀態的系統。假設現在的系統狀態是k,根據系統的模型,可以基于系統的上一狀態而預測出現在狀態:

X(k|k-1)=A X(k-1|k-1)+B U(k) ……….. (1)

我們的矩陣X為:

(angle

gyro)

我們的矩陣A為:

( 1 1

0 1)

要注意的是我們得到的是X(k|k-1)!!這可不是我們要的結果

然后是

Pdot[0]=Q_angle - P[0][1] - P[1][0];// Pk-' 先驗估計誤差協方差的微分

Pdot[1]=- P[1][1];

Pdot[2]=- P[1][1];

Pdot[3]=Q_gyro;

P[0][0] += Pdot[0] * dt;// Pk- 先驗估計誤差協方差微分的積分 = 先驗估計誤差協方差

P[0][1] += Pdot[1] * dt;

P[1][0] += Pdot[2] * dt;

P[1][1] += Pdot[3] * dt;

這8句一起進行解釋

到現在為止,我們的系統結果已經更新了,可是,對應于X(k|k-1)的covariance還沒更新。我們用P表示covariance:

P(k|k-1)=A P(k-1|k-1) A’+Q ……… (2)

Pdot是P的微分。

我們的Q是

(Q_angle 0

0 Q_gyro)

積分后協方差就算出來了,同樣注意也是P(k|k-1)。具體怎么算~~~好吧我承認我線代沒有學好~~~算了好久。。。。

angle_err = angle_m - angle;//這句好像沒有必要說~~

接下來算卡爾曼增益:

PCt_0 = C_0 * P[0][0];

PCt_1 = C_0 * P[1][0];

E = R_angle + C_0 * PCt_0;

K_0 = PCt_0 / E;

K_1 = PCt_1 / E;

Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R)

H是測量系統的矩陣,為(1

1)

t_0 = PCt_0;

t_1 = C_0 * P[0][1];

P[0][0] -= K_0 * t_0;//后驗估計誤差協方差

P[0][1] -= K_0 * t_1;

P[1][0] -= K_1 * t_0;

P[1][1] -= K_1 * t_1;

到現在為止,我們已經得到了k狀態下最優的估算值X(k|k)。但是為了要另卡爾曼濾波器不斷的運行下去直到系統過程結束,我們還要更新k狀態下X(k|k)的covariance:

P(k|k)=(I-Kg(k) H)P(k|k-1) ……… (5)

這個很好理解了~~I是單位矩陣不多說鳥~~

angle += K_0 * angle_err;//后驗估計

q_bias += K_1 * angle_err;//后驗估計

angle_dot = gyro_m-q_bias;//輸出值(后驗估計)的微分 = 角速度

現在我們有了現在狀態的預測結果,然后我們再收集現在狀態的測量值。結合預測值和測量值,我們可以得到現在狀態(k)的最優化估算值X(k|k):

X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ……… (3)

觀察一下K_1計算過程,再聯系到協方差矩陣的性質就可以知道為什么角速度偏差量用P[1][0]算了~~

至于STM32上跑的速度,72M下這段代碼執行時間在0.5毫秒內,速度不是問題~~

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

    關注

    2550

    文章

    51035

    瀏覽量

    753077
  • 卡爾曼濾波
    +關注

    關注

    3

    文章

    165

    瀏覽量

    24648
  • 平衡小車
    +關注

    關注

    1

    文章

    39

    瀏覽量

    12500

原文標題:平衡小車卡爾曼濾波算法

文章出處:【微信號:wujianying_danpianji,微信公眾號:單片機精講吳鑒鷹】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    卡爾濾波

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

    圖書分享:卡爾濾波算法的幾何解釋

    網上搜到一篇關于卡爾濾波算法的論文,對低維卡爾濾波
    發表于 06-11 15:28

    卡爾濾波算法

    已知測量值和原始值,但測量噪聲和觀測噪聲未知,如何進行卡爾濾波。之前看了好像可以用自適應卡爾,但不是很懂,求例子,最好有注釋的
    發表于 03-23 19:12

    LabVIEW一維卡爾濾波算法

    最近正在學習卡爾濾波算法,用LabVIEW仿照C語言寫了個一維的卡爾
    發表于 10-21 21:15

    如何去實現一種基于MPU6050及卡爾濾波平衡小車

    如何去實現一種基于MPU6050及卡爾濾波平衡小車呢?有哪些資料呢?
    發表于 11-19 06:48

    基于STM32的雙輪平衡小車設計

    預告:代碼及文檔下載方案分析1、基于STM32F103C8T6 單片機的雙輪自平衡小車系統;2、以 MPU6050 三軸陀螺儀加速計為傳感器的姿態感知系統;3、通過卡爾
    發表于 11-30 08:03

    卡爾濾波簡介

    希望這篇筆記可以幫助到你。卡爾濾波(Kalman filtering)是一種利用線性系統狀態方程,通過系統輸入輸出觀測數據,對系統狀態進行最優估計的算法
    發表于 02-28 14:24

    卡爾濾波算法對比其他的濾波算法有什么優點?

    卡爾濾波算法對比其他的濾波算法有什么優點
    發表于 10-11 06:42

    卡爾濾波算法的改進方案

    卡爾濾波 算法具有收斂平穩、速度快、精度高的優點,在信號處理中受到廣泛應用。但由于卡爾
    發表于 06-14 16:36 ?0次下載
    <b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b><b class='flag-5'>算法</b>的改進方案

    新手平衡小車卡爾濾波算法總結

    電子、電子信息專業電路單片機學習教程資料——新手平衡小車卡爾濾波算法總結
    發表于 05-11 17:20 ?0次下載

    卡爾濾波算法

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

    STM32運用之自平衡小車卡爾算法封裝

    最近研究STM32的自平衡小車,發現有兩座必過的大山,一為卡爾濾波,二為PID算法。 網上看了
    發表于 12-05 15:00 ?8次下載

    基于卡爾濾波的兩輪平衡檢測系統

    基于卡爾濾波的兩輪平衡檢測系統
    發表于 07-01 15:58 ?16次下載

    畢業論文 | 基于MPU6050及卡爾濾波平衡小車設計(源代碼與設計文檔)

    畢業論文 | 基于MPU6050及卡爾濾波平衡小車設計(源代碼與設計文檔)
    發表于 11-21 20:06 ?21次下載
    畢業論文 | 基于MPU6050及<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>設計(源代碼與設計文檔)

    擴展卡爾濾波的原理

    理論應用到非線性系統的擴展卡爾算法 Extended Kalman Filter(EKF)[2]。相比于線性卡爾
    的頭像 發表于 08-12 10:06 ?5638次閱讀
    擴展<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>的原理
    主站蜘蛛池模板: 国产亚洲精品久久久久久国 | 美女强奷到抽搐在线播放| 91麻豆久久| 无码任你躁久久久久久老妇双奶 | 狠狠色欧美亚洲狠狠色www| 97在线视频网站| 亚洲色 图| 色噜噜噜亚洲男人的天堂| 久久性综合亚洲精品电影网| 沟沟人体一区二区| 最近中文字幕免费高清MV视频 | 95国产精品人妻无码久| 亚洲 中文 自拍 无码| 人妻插B视频一区二区三区| 久久热免费视频| 国产视频成人| 高h肉辣文黄蓉| asian4you裸模| 又爽又黄又粗又大免费视频| 偷尝禁果H1V1幸运的山熊| 嗯呐啊唔高H兽交| 久久精品亚洲AV中文2区金莲 | 十分钟免费视频大全在线| 末成年美女黄网站色大片连接| 黄色a级免费网站| 国产午夜精品久久理论片| 成年女人免费影院播放| A级毛片高清免费网站不卡| 伊人色综合久久天天| 亚洲免费无l码中文在线视频| 91久久偷偷做嫩草影院免费看| 午夜神器18以下不能进免费| 日日a.v拍夜夜添久久免费| 欧美高清18| 欧美zzo交| 欧美成人中文字幕在线看| 伦理片飘花手机在线| 狼与美女谐音歌词| 老熟风间由美AV在线一区二区| 久久精品伊人| 久青草国产在线视频|