用過SR04超聲波測距的人,都有感觸,這個傳感器(因為低端便宜)經(jīng)常會莫名其妙突然跳出一個尖峰。有人可能說了,我們就限幅濾掉了它唄!但很多時候不可能,因為無法預(yù)知幅值。 Arduino有可以進行卡爾曼濾波的庫和代碼,高手寫就,拿來即用。實際我們自己去寫,就要搞懂卡爾曼濾波原理,搞懂了還不一定能寫出來,寫出來還不一定能用,能用還不一定能有別人代碼穩(wěn)定。其實卡爾曼濾波就是給定測量不確定度、估計不確定度和過程噪聲下的動態(tài)計算。 效果。藍色曲線為濾波后的曲線,紅色線為直接測量的帶有眾多毛刺的曲線。 …… 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------ 實驗教學(xué)值得學(xué)習(xí)的去處: |
|
來自: 新用戶5228KeDY > 《待分類》