Kalman filtresi belirli matematiksel hesaplar sonrasında sistemdeki paraziti alınan sensör hatası veya hesaplama hatasına göre 2 değerin değiştirilmesi ile filtreleme işlemi yapılmaktadır. Genellikle NTC, basınç sensörü (bmp180-gy63), accelometre, gyroscope gibi sensörlerin filtrelemesinde sıklıkla kullanılmaktadır.
Kodumuz;
int kalman_old,cov_old;
int kalman_filter_su_sic (float input)
{
float kalman_new = kalman_old; // eski değer alınır
float cov_new = cov_old + 0.50; //yeni kovaryans değeri belirlenir. Q=0.50 alınmıştır
float kalman_gain = cov_new / (cov_new + 2); //kalman kazancı hesaplanır. R=0.9 alınmıştır
float kalman_calculated = kalman_new + (kalman_gain * (input - kalman_new)); //kalman değeri hesaplanır
cov_new = (1 - kalman_gain) * cov_old; //yeni kovaryans değeri hesaplanır
cov_old = cov_new; //yeni değerler bir sonraki döngüde kullanılmak üzere kaydedilir
kalman_old = kalman_calculated;
return kalman_calculated; //hesaplanan kalman değeri çıktı olarak verilir
}