用过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------ 实验教学值得学习的去处: 2.学生自主创新实验 |
|
来自: 新用户5228KeDY > 《待分类》