分享

Arduino下进行简单的卡尔曼滤波

 新用户5228KeDY 2021-10-10

用过SR04超声波测距的人,都有感触,这个传感器(因为低端便宜)经常会莫名其妙突然跳出一个尖峰。有人可能说了,我们就限幅滤掉了它呗!但很多时候不可能,因为无法预知幅值。

Arduino有可以进行卡尔曼滤波的库和代码,高手写就,拿来即用。实际我们自己去写,就要搞懂卡尔曼滤波原理,搞懂了还不一定能写出来,写出来还不一定能用,能用还不一定能有别人代码稳定。其实卡尔曼滤波就是给定测量不确定度、估计不确定度和过程噪声下的动态计算。

效果。蓝色曲线为滤波后的曲线,红色线为直接测量的带有众多毛刺的曲线。

……

SimpleKalmanFilter simpleKalmanFilter(2,2, 5);

……

float measured_value =12.12 + random(-100, 100)/100.0;

float estimated_value= simpleKalmanFilter.updateEstimate(measured_value);

……

Serial.print(measured_value,4);

Serial.print(",");

Serial.println(estimated_value,4);

delay(100);

使劲增大噪声本身的值,观察效果。

……

SimpleKalmanFiltersimpleKalmanFilter(2, 2, 0.01);

……

float measured_value =12.12 + random(-100, 100);

------心存DREAM喜欢琢磨实验并自娱自乐的MIRACLE------

实验教学值得学习的去处:

  1.中学物理实验教学研讨

  2.学生自主创新实验

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多