【电赛】一阶卡尔曼滤波器 滤波效果良好
目录
- 代码
- kalman.c
- kalman.h
- 滤波效果
很久以前抄的,忘了是从哪弄的了
我把它改成了这种结构体指针传参的形式,方便在比赛中应用。应用举例见MSP432 PID 电机调角度、调速。
它曾助力笔者获2020年电赛省一等奖。
代码
Q:过程噪声协方差 Q参数调滤波后的曲线平滑程度,Q越小越平滑;
R:观测噪声协方差 R参数调整滤波后的曲线与实测曲线的相近程度,R越小越接近(收敛越快)
kalman.c
/*
卡尔曼滤波器
整理By 乙酸氧铍
*/
#include "kalman.h"double KalmanFilter(Kalman_Typedef *klm, double input)
{//预测协方差方程:k时刻系统估算协方差 = k-1时刻的系统协方差 + 过程噪声协方差klm->Now_P = klm->LastP + klm->Q;//卡尔曼增益方程:卡尔曼增益 = k时刻系统估算协方差 / (k时刻系统估算协方差 + 观测噪声协方差)klm->Kg = klm->Now_P / (klm->Now_P + klm->R);//更新最优值方程:k时刻状态变量的最优值 = 状态变量的预测值 + 卡尔曼增益 * (测量值 - 状态变量的预测值)klm->out = klm->out + klm->Kg * (input -klm->out);//因为这一次的预测值就是上一次的输出值//更新协方差方程: 本次的系统协方差赋给 klm->LastP 为下一次运算准备。klm->LastP = (1-klm->Kg) * klm->Now_P;return (klm->out);
}void Kalman_Init(Kalman_Typedef *klm, const double klm_Q, const double klm_R)//温度klm_Q=0.01 klm_R=0.25
{klm->LastP=0.02; //上次估算协方差klm->Now_P=0; //当前估算协方差klm->out=0; //卡尔曼滤波器输出klm->Kg=0; //卡尔曼增益klm->Q=klm_Q; //Q:过程噪声协方差 Q参数调滤波后的曲线平滑程度,Q越小越平滑;klm->R=klm_R; //R:观测噪声协方差 R参数调整滤波后的曲线与实测曲线的相近程度,R越小越接近(收敛越快)
}
kalman.h
#ifndef __KALMAN_H__
#define __KALMAN_H__typedef struct
{/*不用动*/double LastP;//上次估算协方差double Now_P;//当前估算协方差double out;//卡尔曼滤波器输出double Kg;//卡尔曼增益double Q;double R;
}Kalman_Typedef;void Kalman_Init(Kalman_Typedef *klm, const double klm_Q, const double klm_R);
double KalmanFilter(Kalman_Typedef *klm, double input);#endif
滤波效果
【电赛】一阶卡尔曼滤波器 滤波效果良好相关推荐
- 【滤波】设计卡尔曼滤波器
%matplotlib inline #format the book import book_format book_format.set_style() 简介 在上一章节中,我们讨论了教科书式的问 ...
- 【理解】Kalman卡尔曼滤波器 附pythonmatlab代码
一般我是把参考链接放在最后的,但这一次,我放最前排,以表示我对这两位博主的极大感谢,写得真的是太好了! 可能我即将写的这篇是最详细明白的一篇关于卡尔曼滤波器的理解,如果还有疑问,我会补充修正 文章目录 ...
- 【滤波】多元卡尔曼滤波器
%matplotlib inline #format the book import book_format book_format.set_style() 简介 我们现在准备研究和实现完整的.多元形 ...
- 滤波融合(二)基于C++完成一个简单的 扩展卡尔曼滤波器的非线性系统模型
之前已经简单的实现过线性卡尔曼滤波:滤波融合(一)基于C++完成一个简单的 卡尔曼滤波器 线性的系统和测量模型 那么对于非线性的系统,区别就是多了线性化的过程,因为高斯映射到非线性函数,其结果不再是一 ...
- 【滤波】扩展卡尔曼滤波器(EKF)
%matplotlib inline #format the book import book_format book_format.set_style() 我们发展了线性卡尔曼滤波器的理论.然后在上 ...
- 卡尔曼滤波滤波方程_了解卡尔曼滤波器及其方程
卡尔曼滤波滤波方程 Before getting into what a Kalman filter is or what it does, let's first do an exercise. O ...
- android 陀螺仪滤波_android – 卡尔曼滤波器 – 指南针和陀螺仪
我正在尝试用陀螺仪,加速度计和万用表构建罗盘. 我正在将acc值与测量值融合以获得方向(使用旋转矩阵)并且它工作得非常好. 但现在我想添加陀螺仪,以便在磁传感器不准确时进行补偿.因此,我想使用卡尔曼滤 ...
- android程序如何滤波,android – 卡尔曼滤波器:如何使用它没有“状态转换模型”?...
我正在从Android手机上研究加速度计.我希望过滤加速度计正在返回的可怕噪音,记录手机的动作. 我正在读卡尔曼滤波器,因为低通是不够的. 但我没有从ACCELERATION(k-1)到ACCELER ...
- 我和电赛的成长故事与总结#2019年全国大学生电子设计竞赛#
依稀记得知晓<全国大学生电子设计竞赛>的名字是在大一新生营参观电控科协的时候.近两年的时光,从手持烙铁练焊接至今手持烙铁调电路,从C语言里转了个圈回到了零点,从单片机里转了半圈又回到零点, ...
最新文章
- CVPR2019 日程安排
- java加密解密与数字证书的操作
- 【noi 2.5_8465】马走日(dfs)
- ETSI GS MEC 011,Edge Platform Application Enablement API
- 新一代垃圾回收器ZGC的探索与实践
- 信息安全工程师考试大纲-科目2:信息安全应用技术
- java 常用 函数_java在线报表中有哪些常用函数
- 科技爱好者周刊(第 199 期):俄罗斯的 HTTPS 证书问题
- Excel学习日记:L9-图表制作-柱状图
- Mysql创建锁芯_A级锁规格释疑
- ajax data=text,jQuery ajax dataType值为text json探索分享
- java实现输入信用卡号码
- 深入理解机器学习中的:目标函数,损失函数和代价函数
- 使用live-server踩过的坑
- MinGW 环境变量的配置
- 【生活】外包到阿里工作是一种什么样到体验
- 同事逆袭面进阿里P7 年薪60W+,临别留下一张Android开发重点技术路线图
- 浅谈安科瑞电能预付费系统在大电力客户中的设计及应用分析
- Python基础–详细记录Sixth_Chapter
- 下一代广播电视音频解决方案:MPEG-H