Kalman filter nedir?

Kalman Filtresi, optimal tahmin algoritmasıdır.
Filtre olarak isimlendirilmiş olsa da; sistemin önceki durumlarına göre, bir sonraki durumlarını tahmin eden bir algoritma.

Sistemin önceki durumlarına göre, yeni durumlarını tahmin etmek aslında kolay bir iş. Nedir bu Kalmanın asıl olayı dediğinizi duyar gibiyim. Kalman Filtresi, gürültülü (noise) veriler üzerinde uygulanır. Gürültülü ve kesin olmayan bir veriden, gerçeğe olabildiğince yakın bir tahminleme de bulunmanızı sağlar.

Kalman Filtresi Tarihçe

Kalman Filtresi, Matematiksel Sistem Teoristi Rudolf Kalman tarafından bulunmuştur. 20. yy’ın en önemli buluşlarındandır. Amerikan Apollo Uzay programının da temel taşlarındandır.

Amerikan Apollo Uzay programında, Proje çalışanları Apollo uzay gemisi ana motorunun iç ısısını ölçmek istemişlerdir. Ancak motorun iç ısısı 5500 Fahrenheit derecelere kadar ulaşmaktadır. Ve siz bu ısıya dayanabilecek ve ölçebilecek bir duyargaya sahip değilsiniz. Kalman Filtresi burada devreye giriyor. Motorun iç ısısını ölçmek yerine, motorun dış ısısını ölçmüşlerdir. Ve dış ısı verisine göre, motorun iç ısısını tahmin etmeye çalışmışlardır.
İyi de, iç ısı ile dış ısı arasındaki değişim farkını (dF) biliyorsak kalmana neden ihtiyaç duyalım dediğinizi duyar gibiyim. Motorun iç ısısını değiştiren çok fazla etken var ki bunlardan birisi, motora sağlanan birim zamandaki yakıt akışı. Yakıt akışı az ise, tribünler üzerinde ki gaz basıncınız az oluyor ve motorun deviri de buna bağlı olarak düşük oluyor. Motor iç ısısı da gaz basıncı ile doğru orantıda oluyor. Ayrıca sizin ölçtüğünüz dış ısı gürültü içermektedir. Nedir burada ki gürültü diyecek olursanız, atmosfere çıktıkça oksijen azalmaktadır. Ve ısı azalıyor. Duyarganın ölçümlerinde bu tip bir gürültü var. Aslında 4000 Fahrenheit ölçmesi gerekirken, 3960 Fahrenheit ölçmesi gibi.

Kalman Filtresi Nasıl Çalışır?

Kalman Filtresi, dinamik bir sistemin önceki durumlarına göre, bir sonraki durumlarını tahmin etmeye çalışır. Bunu yapabilmek için, sistemin matematiksel modeli oluşturulur.

— Matematiksel Model Nedir?

Matematiksel modeli, bir fonksiyon olarak düşünebiliriz. Fonksiyonların, parametreleri (input) ve geri dönüş değerleri (output) vardır. Matematiksel modeli oluşturmak kimi zaman çok zor olabilir. Linear bir sistem için, kimi zaman kolay olsa da, Non-linear bir sistemi modellemek çok zordur.
Gerçek sistemi matematiksel bir model olarak tam anlamıyla/birebir yansıtamazsınız. Gerçek sisteme en yakın, matematiksel modeli oluşturmaya çalışmalısınız. Çünkü, elde ettiğimiz veriler gürültülü ve kesin olmayan veriler olacaktır. Gerçek hayatta sistemimize etki eden ve bizim farkında olamayacağımız etkenler olabilir. Ve tüm bu etkenlerin hepsini modellemek zor ve karışıklığı da yanında getirecektir.

— Nasıl Çalışır?

Mümkün olan en yakın modeli kullanarak sistem durumunu tahmin etmeye çalışır. Bu modelin input ve output verileri ile sistemin durumunu tahmin etmeye çalışır.

Kalman Filtresi Nerede Kullanılır ve Hangi Amaçlara Hizmet Eder?

Kalman filtresini, dinamik sistemlerde belirsiz ve kesin olmayan bilgilere sahip olduğunuz zaman kullanabilirsiniz. Hatta sistemin ne yapacağını tahminlemek için eğitimli bir tahmin sistemi oluşturabilirsiniz. Kalman filtresi sisteminizin girdi ve çıktılarını değerlendirerek, gerçekte sistemde ne olduğunu anlamanıza yardımcı olur.
Direkt olarak ölçemediğiniz veya doğruluğu kesin olmayan veriyi elde edip, sistemin gerçek durumuna yakın bir tahminde bulunmaya çalışıyoruz. Elde ettiğiniz veri çeşitli duyargalar’dan geliyorsa ve noise içeriyorsa kalman filter sizin için gerçeğe en yakın değeri tahmin etmeniz de yardımcı olacaktır.

Kalman Filter State Observation

State Observation; Direkt olarak göremeyeceğin, ölçümünü yapamayacağın verileri tahmin etmede yardımcı olur.

Matematiksel Model ve State Observation

Sisteminize en yakın matematiksel modeli kurmalısınız. Matematiksel model ile sisteminizin davranışları benzer olacaktır.
Örnek olarak; uzaya gönderilecek olan bir roketin motor ısısını ölçmek istiyoruz. Bu motorun ısısını, ısı duyargası ile ölçemeyiz. Çünkü motorun ısısı çok yüksek ve duyarga eriyip yok oluyor. Bu yüzden duyarganın konumunu değiştirip, motorun dış yüzeyine koyuyoruz. Duyarga bize veri sağlayacak ama bu veriler motorun gerçek ısısı değil. Ve biz motorun ısısını öğrenmek istiyoruz. Neden motorun ısısını istiyoruz? sorusunun cevabı; motora ne kadar yakıt akışına izin vermeliyiz? ve hızımızı nasıl ayarlamalıyız? sorularına yanıt bulabilmek için motor ısısı bizim için önemli.

Matematiksel model ve Gerçek sistem

Yakıt akışı sistemimizin girdisi. Duyarga’dan elde ettiğimiz ısı, gözlemsel verimiz. Yani gerçek ısı değeri değil.
Oluşturduğumuz matematiksel model ile gerçek sistemin girdilerini aynı verirsek; duyarga sonuçları ile model’in çıktısı arasındaki fark ne kadar az olursa, model gerçek sisteme daha da yakın ve benzerdir.
Sistem’de iç ısı ölçemiyoruz ama model ile aynı çıktıları veriyorsa, biz modele ekleme yaparak, modelden iç ısıyı bize vermesini isteyebiliriz. Bu sayede, iç ısı hakkında bir tahminde bulunabiliriz. İşte tam bu tahminin yapılmasında kalman filter bizim yardımımıza koşuyor.

Kalman Filter Python Kütüphanesi — Filterpy

Filterpy; Kalman filter ve Bayesian filter’larını Python dilinde gerçekleştirmiştir.kalman modülü ile, filter sınıfını kullanabilirsiniz. Detaylarına girmiyorum.

pip install filterpy
filterpy.__version__        # Test ve versiyon bilgisi.