打印

ADC的卡尔曼滤波怎么做,可以做吗?

[复制链接]
3114|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
123ycli|  楼主 | 2017-9-16 17:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
HKingS| | 2017-9-20 21:01 | 只看该作者
肯定是可以的,但是卡尔曼的速度应该慢。

使用特权

评论回复
板凳
Puremr| | 2017-9-22 19:48 | 只看该作者
只要你的mcu的速度跟上去,就是可以卡尔曼滤波的

使用特权

评论回复
地板
静听风易| | 2017-9-22 21:37 | 只看该作者
卡尔曼滤波只是让ADC采样值更稳定,仅仅是更稳定而已,让目标更突出,并不代表着经过这个滤波我就能得到真实值了

使用特权

评论回复
5
jerow| | 2017-9-23 21:00 | 只看该作者
网上有篇**叫做卡尔曼滤波器在嵌入式控制系统中的应用,可以参考看看

使用特权

评论回复
6
萧洛毫| | 2017-9-23 21:02 | 只看该作者
看过网上的adc卡尔曼滤波效果,还是很不错的

使用特权

评论回复
7
jerow| | 2017-9-24 15:00 | 只看该作者
不要什么都卡尔曼滤波

使用特权

评论回复
8
余三水| | 2017-9-24 15:02 | 只看该作者
这个卡尔曼滤波,在四轴和飞控上用的比较多

使用特权

评论回复
9
16号哨兵| | 2017-9-24 21:54 | 只看该作者
首先你要明白卡尔曼是什么,任何滤波都有他适用的范围

使用特权

评论回复
10
yyj8902| | 2017-9-24 21:56 | 只看该作者
假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。假设你对你的经验不是100%的相信,可能会有上下偏差几度。我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。

使用特权

评论回复
11
ylslib| | 2017-9-26 21:25 | 只看该作者
yyj8902 发表于 2017-9-24 21:56
假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度 ...

这个好像没完,是一个很经典的表述的。

使用特权

评论回复
12
余三水| | 2017-9-26 21:29 | 只看该作者
给你个卡尔曼滤波的代码看看
#include <math.h>

#define Forecast_Noise 4//预测不确定度,根据实际调节,一般很小
#define Measure_Noise 4//可以通过传感器技术手册查找到测量噪声

void Kalman_v1(double Now_Measure_Value, double Last_Best_Value)
{
    double Forecast_Value, Measure_Value, Best_Value;//预测值、测量值和最优值
    static double Forecast_Error, Measure_Error, Best_Error = 0;//预测值、测量值和最优值偏差
    static double Kalman_Gain;//卡尔曼滤波器增益

    Forecast_Value = Last_Best_Value;
    //更新预测值---------①
    Measure_Value = Now_Measure_Value;//测量值

    Forecast_Error = sqrt(Forecast_Noise ^ 2 + Best_Error ^ 2);
    //更新预测值偏差---------②
    Measure_Error = Measure_Noise;//测量偏差=测量噪声

    Kalman_Gain = sqrt(Forecast_Error ^ 2 / (Forecast_Error ^ 2 + Measure_Error ^ 2));
    //求滤波器增益---------③
    Best_Value = Forecast_Value + Kalman_Gain * (Measure_Error - Forecast_Error);
    //当前最优值=预测值+增益*(测量值-预测值)---------④
    Best_Error = sqrt((1 - Kalman_Gain) * Forecast_Error ^ 2);
    //更新最优值偏差---------⑤
}

使用特权

评论回复
13
Boooooosh| | 2017-9-27 21:23 | 只看该作者
卡尔曼滤波是状态观测器,不是用来做平滑的。对ADC这种单位增益固定噪声的一维系统用的话,算出来就是一阶低通 y(n)=a*x(n)+(1-a)*y(n-1)。

使用特权

评论回复
14
LM莫| | 2017-9-27 21:38 | 只看该作者
网上有10种滤波方法,可以看看,一般用滑动平均滤波就好了。

使用特权

评论回复
15
麦克塔维什| | 2017-9-28 15:48 | 只看该作者
32位机或者16位卡尔曼还好,8位机的话,有点够呛,速度上不去

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

324

帖子

0

粉丝