Gençlere değer katacak içeriklere Google Haberler'den abone olmak ister misiniz?.Google Haberlere Abone Ol. Gençliğe değer katma arzusuyla..

Macar asıllı sistem teorisyeni Rudolf Kalman tarafından bulunan Kalman Filtresi, ismini de buradan almıştır. Günlük hayatta çok önemli bir yere sahip olan Kalman Filtresi, uzaydaki roket yapılarında, yeryüzündeki araçların hareketinde ve haberleşme uyduları gibi pek çok alanda kullanılmaktadır. Kalman Filtresi, en basit tanımıyla ele alınan sistem hakkında var olan verileri kullanarak en olası tahminleri sağlayan bir algoritmadır.

Elbette birçok ölçüm aletleri bulunuyor fakat bazı durumlarda (gürültülü durumlar) klasik hesaplamalar elverişli olmaz ve dolaylı yoldan hesaplamalar yaparak sonuca ulaşmak gerebilir. Buna güzel bir örnek olarak roketlerdeki yakıt sıcaklığı hesabı verilebilir. Hatta  Amerikan Apollo Uzay Programında da bundan yararlanılmıştır. Örnekte roket tüm yakıt ve diğer hesaplamaları yapılarak herhangi bir gezegene yollanacak olsun. Genellikle NASA görevlerinde  sıvı Hidrojen itici gücü sağlayan yakıtımız olsun.

Burada çok yüksek sıcaklıklar söz konusudur ve bu yüksek sıcaklıklar roketteki bazı mekanik veya fiziksel özellikleri olumsuz etkileyerek uzay görevini tehlikeye düşürebilir. Bu durumun önüne geçmek için yanma odasının iç kısmına  hassas bir sensör yerleştirilebilir. Bu seferde başka bir sorun ile karşılaşılacaktır. Çünkü sensör, yüksek sıcaklığa dayanamayarak eriyecek ve görevini yerine getiremeyecektir. Onun yerine yanma odasına yakın dış kısmın sıcaklığının ölçümü yapılarak dolaylı yoldan sonuca ulaşılabilir. İşte burada Kalman Filtresi devreye girerek sorunu ortadan kaldırıyor.

Kalman Filtresi Nedir?| Aşamaları Nelerdir?
Kalman Filtresi Nedir?| Aşamaları Nelerdir?

Nasıl Çalışır?

Aslında Kalman Filtresinin matrisli formüllerle ifade edilen çok karışık bir yapısı vardır. Yine de kısaca açıklamak istersek model, varsayılan veri ile gözlem sonucu ortaya çıkan veriyi karşılaştırır ve aralarındaki farka bakar. Buna Kalman kazancı adı verilir. Sonrasında elde edilen verilerde iyileştirme uygulanır. Kazanç değeri ne kadar küçükse filtre model tahminlerine o kadar yaklaşır. Bu sayede gerçek hayatta sabit olmayan koşullar yüzünden ölçmede çıkan sorunlar ve az veri ile tahmin etmeye çalışılan durumlar ortadan kaldırılabilir.

State Observes(Durum Gözlemi)

Kalman Filtresi için çok çeşitli durumlar vardır. Daha yakından tanımak için durum gözlemini ele alalım ve yukarıda bahsettiğimiz roket örneğini formüle etmeye çalışalım. T internal ölçemediğimiz iç kısmın, T external ölçüm yapabildiğimiz dış kısmın sıcaklığı olsun. Yakıt ağırlığını da bildiğimizi varsayarak tahmini iç ve dış sıcaklık değerleriyle gerçek iç ve dış sıcaklık değerleri kendi aralarında orantılıdır diyebiliriz fakat bu durum gerçek hayatta böyle değildir. Bu duruma çözüm olarak da bir durum tahmincisi kullanmak gerekmektedir.

Eğer tahmini dış sıcaklık ile ölçülen dış sıcaklık değeri eşleşiyorsa modelleme başarılı kabul edilmektedir. Doğal olarak ölçülen T internal değeri ile de tahmin edilen iç sıcaklık değeri eşleşecektir ve böylece model, gerçeğe daha uygun hale gelecektir. Aradaki fark ya da hata payı : error=e=T external-tahmini T external ile ifade edilir. Amaç bu denklemi sıfıra eşitlemektir. Modelleme olarak aşağıdaki şema gibi ifade edilebilir.

Kalman Filtresi Aşamaları
Kalman Filtresi Aşamaları

Nerelerde Kullanılır?

Aslında yukarıda da bahsettiğimiz gibi Kalman Filtresi, çok geniş ve önemli bir kullanım alanına sahip. Çünkü her ne kadar bir filtre olarak adlandırılsa da aslında girdi ve çıktıları olan bir tahmin algoritması. Python, Arduino, Matlab gibi pek çok uygulamada kullanımı ve kodları bulunuyor. Kalman Filtresi, çoğunlukla sabit olmayan, gerçekte var olan bazı özelliklerin sistemde dikkate alınmaması, bazı parametrelerin yanlış seçilmiş olması ve vermiş olduğumuz örnekteki gibi belirsizlik içeren durumlar için tercih edilmektedir.

Örnek bir kalman filtresi kodu.

//Kalman Filtresi global tanımlar
double X_k_KalmanTahminEski = 0; //Prior Estimate
double Pk_HataKovaryansiEski = 1; //Error
Covariance
//*************************************
//Kalman Hesabı için tıklanan butonun kodları
private void btnKalmanFiltresi_Click(object
sender, EventArgs e)
{
//Tanımlamalar
double[] Zk_OlcumDegerleri = new
double[10]{0.39,0.5,0.48,0.29,0.25,0.32,0.34,0.48
,0.41,0.45};
double[] Xk_HesaplananDegerler = new double[10];
double R_HataMiktari = 0.1;
//Ölçüm değerlerini tek tek Kalman Filtresine
gönderiyor.
for (int i = 0; i < 10; i++)
{
Xk_HesaplananDegerler[i] =
KalmanFiltresiHesapla(Zk_OlcumDegerleri[i],
R_HataMiktari);
}
//Grafiği Çiziyor
double X_OlculenOncekiDeger = 0;
double Y_OlculenOncekiDeger = 0;
double X_HesaplananOncekiDeger = 0;
double Y_HesaplananOncekiDeger = 0;
for (int j = 0; j < 10; j++)
{
//Ölçülen değerleri gösteriyor.
GrafikAlani.DrawLine(KalemRengiMavi,(int)
X_OlculenOncekiDeger,(int)
Y_OlculenOncekiDeger, (j * 50),
(int)(Zk_OlcumDegerleri[j] * 250));
//Hesaplanan değerleri gösteriyor.
GrafikAlani.DrawLine(KalemRengiKirmizi, (int)
X_HesaplananOncekiDeger,
(int)Y_HesaplananOncekiDeger, (j * 50),
(int)(Xk_HesaplananDegerler[j] * 250));
X_OlculenOncekiDeger = (j * 50);
Y_OlculenOncekiDeger = (Zk_OlcumDegerleri[j] *
250);
X_HesaplananOncekiDeger = (j * 50);
Y_HesaplananOncekiDeger =
(Xk_HesaplananDegerler[j] * 250);
}
}
//*************************************
public double KalmanFiltresiHesapla(double
Zk_OlculenDeger, double R_HataMiktari)
{
//Güncelleme--Eski değerleri yeni değerler içine
atıyor.
double X_k_KalmanTahminYeni =
X_k_KalmanTahminEski;
double Pk_HataKovaryansiYeni =
Pk_HataKovaryansiEski;
//Ölçümleri Düzeltme--
double Kk_KalmanKazanci = Pk_HataKovaryansiYeni /
(Pk_HataKovaryansiYeni + R_HataMiktari);
double Xk_KalmanHesaplanan = X_k_KalmanTahminYeni
+ Kk_KalmanKazanci * (Zk_OlculenDeger -
X_k_KalmanTahminYeni);
Pk_HataKovaryansiYeni = (1 - Kk_KalmanKazanci) *
Pk_HataKovaryansiEski;
//Eski Değerleri Atama--bu değişkenler

Global tanımlandı. bu procedure her
geldiğinde bunları kaybetmemelidir.
Pk_HataKovaryansiEski =
Pk_HataKovaryansiYeni;
X_k_KalmanTahminEski = Xk_KalmanHesaplanan;
//bulunan sonuç bir sonraki adım için eski
tahmin olacak.
return Xk_KalmanHesaplanan;

Bir Örnek: GPS

Bir başka örnek olarak da GPS tahmin modeli verilebilir. Şimdi de konumunu hassas veriler ile ölçmek zorunda olduğumuz bir kamyon hayal edelim. Konum belirlemede akla ilk gelen GPS sistemi hassas bir ölçüm istediğimiz için işe yaramayacaktır. Bunun yerine kamyon hakkında sahip olduğumuz diğer bilgilerden (pozisyon, direksiyon dönüşleri, direksiyon açısı, hız, yön) yola çıkarak bir tahmin modellemesi yapabiliriz. Kalman Filtresi bu durumda verileri önce tahmin eder sonra da optimize eder. Tahmin etme kısmında Newton’un hareket yasalarına dayanarak bazı tahminler ve hesaplamalar yapılabilir. Sonra yeni koveryans değeri ortaya çıkacak. Güncelleme kısmında ise pozisyon ölçümü GPS aracılığıyla yapılacak ve elde edilen yeni koveryans değeri ile daha önce hesaplanan tahmin koveryansının oranı güncel tahmini değerin değişimini verecek.

İlginizi Çekebilir: Endüstri Aşamalarında Kısa Bir Yolculuk

zehrasenasenturk makalelerini beğendiniz mi? Sosyal medyada takip edin!
Başkalarına Fayda Sağla
Yorum Yok
Yorum İptal
Yorumlar: 1 Örnekle Kalman Filtresi Nedir?

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Resim ekle - Yalnızca PNG, JPG, JPEG ve GIF desteklenir.

Sosyal Medya Hesaplarımız

Copyright © 2020 Öğrenci Blogları. Tüm Hakları Saklıdır.

Giriş Yap

Öğrenci Blogları'na Hoş Geldin

Gençlere değer katan içerikler üretiyoruz. Aramıza katılacağın için mutluyuz.
Giriş Yap

Gelişim için ilk adım. Boş vakitleri iyi değerlendirmek gerek.