全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
由于做平衡小车,然后对那段滤波算法很疑惑,然后网上讲的又比较少,我看了一段时间的书。这是小弟的对这段卡尔曼滤波程序的一点理解,因为基础薄弱(大二),有错的请多多包涵。先上程序,这是抄的不知道谁的代码。抱歉了。不过这程序好像都写的差不多void Kalman_Filter(float Gyro,float Accel)Angle+=(Gyro - Q_bias) * dt; Pdot0=Q_angle - PP01 - PP10; /Pdot1= - PP11;Pdot2= - PP11;/Pdot3=Q_gyro;PP00 += Pdot0 * dt; PP01 += Pdot1 * dt; PP10 += Pdot2 * dt;PP11 += Pdot3 * dt; Angle_err = Accel - Angle;PCt_0 = C_0 * PP00;PCt_1 = C_0 * PP10;E = R_angle + C_0 * PCt_0;K_0 = PCt_0 / E;K_1 = PCt_1 / E;t_0 = PCt_0;t_1 = C_0 * PP01;PP00 -= K_0 * t_0;PP01 -= K_0 * t_1;PP10 -= K_1 * t_0;PP11 -= K_1 * t_1;Angle+= K_0 * Angle_err;Q_bias+= K_1 * Angle_err;Gyro_x = Gyro - Q_bias;首先是卡尔曼滤波的5个方程X(k|k-1)=A X(k-1|k-1)+B U(k) . (1)/先验估计P(k|k-1)=A P(k-1|k-1) A+Q (2)/协方差矩阵的预测Kg(k)= P(k|k-1) H / (H P(k|k-1) H + R) (3)/计算卡尔曼增益X(k|k)= X(k|k-1)+Kg(k) (Z(k) - H X(k|k-1) (4)通过卡尔曼增益进行修正P(k|k)=(I-Kg(k) H)P(k|k-1) (5)/跟新协方差阵5个式子比较抽象,现在直接用实例来说,对于角度来说,我们认为此时的角度可以近似认为是上一时刻的角度值加上上一时刻陀螺仪测得的角加速度值乘以时间,因为,角度微分等于时间的微分乘以角速度。但是陀螺仪有个静态漂移(而且还是变化的),静态漂移就是静止了没有角速度然后陀螺仪也会输出一个值,这个值肯定是没有意义的,计算时要把它减去。由此我们得到了当前角度的预测值 AngleAngle=Angle+(Gyro - Q_bias) * dt; 其中等号左边Angle为此时的角度,等号右边Angle为上一时刻的角度,Gyro 为陀螺仪测的角速度的值,dt是两次滤波之间的时间间隔。float dt=0.005; 这是程序中的定义同时 Q_bias也是一个变化的量。但是就预测来说认为现在的漂移跟上一时刻是相同的即Q_bias=Q_bias将两个式子写成矩阵的形式得到上式,这个式子对应于卡尔曼滤波的第一个式子X(k|k-1)=A X(k-1|k-1)+B U(k) . (1)/先验估计X(k|k-1)为2维列向量,A为2维方阵,X(k-1|k-1)为2维列向量,B 为2维列向量,U(k) 为Gyro二,这里是卡尔曼滤波的第二个式子接着是预测方差阵的预测值,这里首先要给出两个值,一个是漂移的噪声,一个是角度值的噪声,(所谓噪声就是数据的方差值)P(k|k-1)=A P(k-1|k-1) A+Q 这里的Q为向量 的协方差矩阵,即因为漂移噪声还有角度噪声是相互独立的,则=0;=0又由性质可知cov(x,x)=D(x)即方差,所以得到的矩阵如下,这里的两个方差值是开始就给出的常数程序中的定义如下float Q_angle=0.001; float Q_gyro=0.003;接着是这一部分A P(k-1|k-1) A,其中的(P(k-1)|P(k-1))为上一时刻的预测方差阵卡尔曼滤波的目标就是要让这个预测方差阵最小。其中P(k-1|k-1)设为,第一式已知A为则计算A P(k-1|k-1) A+Q(就是个矩阵乘法和加法,算算吧)结果如下很小为了计算简便忽略不计。于是得到a,b,c,d分别和矩阵的P00,P01,P10,P11计算过程转化为如下程序,代换即可 Pdot0=Q_angle - PP01 - PP10; Pdot1= - PP11;Pdot2= - PP11;/Pdot3=Q_gyro;PP00 += Pdot0 * dt; PP01 += Pdot1 * dt; PP10 += Pdot2 * dt;PP11 += Pdot3 * dt; 三,这里是卡尔曼滤波的第三个式子 Kg(k)= P(k|k-1) H / (H P(k|k-1) H + R) (3)/计算卡尔曼增益即计算卡尔曼增益,这是个二维向量设为,这里的 = 为由此kg=P(K|K-1)+R,这里又有一个常数R,程序中的定义如下float R_angle=0.5;这个指的是角度测量噪声值,则式子的分母=P00+R_angle即程序中的PCt_0 = C_0 * PP00;PCt_1 = C_0 * PP10;E = R_angle + C_0 * PCt_0;分子于是求出K_0 = PCt_0 / E;K_1 = PCt_1 / E;四,用误差还有卡尔曼增益来修正X(k|k)= X(k|k-1)+Kg(k) (Z(k) - H X(k|k-1) (4)通过卡尔曼增益进行修正这个矩阵带进去就行了Z(k)=Accel.注意这个是加速度计算出来的角度Angle_err = Accel - Angle;对应程序如下Angle+= K_0 * Angle_err;Q_bias+= K_1 * Angle_err;同时为了PID控制还有下次的使用把角速度算出来了Gyro_x = Gyro - Q_bias;五,最后一步对矩阵P进行更新,因为下一次滤波时要用到PP00 -= K_0 * t_0;PP01 -= K_0 * t_1;PP10 -= K_1 * t_0;PP11 -= K_1 * t_1;P(k|k)=(I-Kg(k) H)P(k|k-1) (5)/跟预测方差阵这个很简单,矩阵带进去算就行了六,总结卡尔曼滤波一共只需要给很少的初始值量,float Q_angle=0.001; float
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026工业互联网平台标准化建设与生态合作战略研究
- 2026年供应链数字化高级专家招聘笔试试卷 招录14人内部题库
- 福建晋江 2026 民营经济岗公务员招录考试试卷 招聘 11 人
- 2026 年外资锂电池设备企业广东深圳国内现场工程师笔试试卷 招录 40 人
- 2026装备制造业智能化升级策略研究及供应链整合方案与提高效率规划指南
- 机场管理团队绩效评估表
- 营销经理家电销售业绩推广绩效评估表
- 2026免税行业市场发展分析及前景趋势与投资机会研究报告
- 部编版八年级生物下册生物多样性知识点巩固习题及答案
- 天津市河西区第八中学九年级化学第5课化学方程式的计算练习题及答案
- 2026年高邮市消防系统事业单位公开招聘工作人员3人笔试备考题库及答案解析
- 2026年高校辅导员经典面试题(含答案)
- 《勤洗生活衣物》教学设计-2026-2027学年滇教版初中劳动技术七年级上册
- 2026年江苏省徐州市中考英语真题(含答案)
- AQ3035-2010危险化学品重大危险源安全监控技术规范关键条款解读
- T∕CHCIA 013-2023 液体香氛规范
- 2025版《广东省护理病历书写管理规范(试行)》
- 银行对公营销培训课件
- 冬季安全生产综合注意事项(防冻、防滑、防火、防爆、防中毒)课件
- 中小学教学质量考核奖励办法(2026年修订)
- ISO14644-5-2025洁净室及相关受控环境-第5部分运行中文版
评论
0/150
提交评论