Kalman Filtre

Başlatan z, 18 Mayıs 2022, 20:37:45

z

Bir baska basliktaki Kalman filtre konusunda uyelerden bu konuda kucuk capli da olsa bir ders sozu aldik.
Ben sabirsiz adamim bir an once ders baslasin bekliyorum.

IIR (Infinite impulse response)'e sahip filtreler en genel anlamda

m. dereceden bir filtrede,

n. sampleda hesaplanan cikis degerimiz y[n],
n. sampleda okunan giris degerimiz e[n],
An ve Bn de katsayilarimiz olmak uzere

y[n] = e[n]An + e[n-1]An-1 + e[n-2]An-1 + ... + e[m]Am +
       y[n-1]Bn-1 + y[n-1]Bn-2 + y[n-2]Bn-2 + ... + y[m]Bm

seklindedir.

Ornegin 2. dereceden bir filtrede

y[n] = Ae[n] + A1e[n-1] + Be[n] + B1[n-1] seklindedir.

 
A ve B katsayilari bir sekilde hesaplanir ve sabit carpanlar olarak formulde kullanilir.

Bu kisa hatirlatmadan sonra;

Gurultu nedir?
Ortalama nedir?
Gaussian dagilimi nedir?
Neden Kalman filtre anlatimlarinda bu terimlerlerle karsilasiriz?
Kalman filtreye neden ihtiyac duyuyoruz?

Benim baslangic sorularim bunlar.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Firzen

Gürültü nedir:

Var olan hiçbir sensör linear ve stabil kararlılık göstermez çevre şartlarından ve üretiminin kalitesinden olsun etkilenir. Örneğin elinizde 2 tane LM35 sensör olsun okuduğunuz sıcaklık değerleri birebir aynı olmaz. Bu aradaki farklılığın nedeni gürültüdür. Peki gürültü ne işimize yarayacak? Ortalama ile.

Ortalama (Mean), variance, covariance?

Filtrelerde ortalama (mean) yerine expected value kullanılır.
Örneğin; sıcaklık seviyesi 5 derece ÇEVRESİNDE seyretsin. Bunun anlamı sıcaklık 4.7 ile 5.3 arasında oynuyor olabilir. Expected Value = 5, variance 0.3 olur. Peki bu sıcaklık hep aynı noktalarda seyredecek variance hiç değişmeyecek veya sensörler birbirleri ile ilişkili olmayacak mı? Eğer sensörün birden varsa state'i varsa covariance hesabına girer (n-dimensional).
Bu variance dağılımı ile gaussian formule dökülür. Sebebi biz genelde gürültü dağılımlarını gassian distribution (Normal- uniform dağılım) olarak söyleriz (Bazı gürültüler normal dağılıma girmez Örneğin Türbülans - Non Gaussian, Stock verileri - Weibull Sinyal kesilme verileri - Erlang). Peki ne alaka nereden geldik Normal-Gaussian dağılım olayına. Sistemde toplanınlan gürültü bir grafik haline gelse görüntü neredeyse gaussian grafiğine benzerde ondan.

Kalman filtresi ise bir nevi band geçiren Notch Filtre gibidir. Ama gelen değerler stokastik ve bir kontrol sistemi gibi katsayı ile "Kalman Gain" ile çarpılır.

Neden ihtiyaç duyarız:
Normal şartlarda sensör verilerini isterseniz Complementary filter da kullabilirsiniz ama problem şu katsayıları neye göre belirleyeceksiniz.
Tam bu noktada Kalman filtresi devreye girer. Şöyleki: IMU sensörünüz var fakat sensör verileriniz çok değişiyor sabit kalmıyor. Sebebi çok görülütülü olması. Sizin bir ortalama (Expected value) belirleyip küçük değişkenler yerine anlamlı değişkinleri almanız gerek. Bu noktada gaussian dağılımı derki: Gaussian eğrisine sok sağ, sol kanatdaki yüksek değişimler önemli ortadaki ise zaten beklenilen der. Bu sayede siz 30 derece açıyı çok küçük hata payı ile okuyabilirsiniz.
Aynı durum sıcaklık sensörü örneği içinde geçerli. 5 derece mi okumak istiyorsunuz. Sistem dağılıma bakar ve hep 5 derece okur. yüksek bir ısı değişimi olunca gausss dağılımı o bölgeye kayar ve o sıcaklık çevresinde tahmin yürütür.

Şimdilik bu kadar.
The University of Sheffield                                  (PhD) Automatic Control and Systems Engineering

Epsilon

Bu Kalman Filtresi konusunu  ve hesaplamaların doğruluğunu anlamak için bir tür similatör/calculator web sitesi varmıdır?
Allah (C.C) Cahili dost edinmez.Dost edindiğini'de cahil bırakmaz

Firzen

#3
" Python - Matlab - Scilab ..."

Hepsinde yapılıyor.

Simülasyon yapması da zor değil.

Örneğin elinizde sensör var ve sizde sensör modelini doğru çıkardınız. Ardından sadece Model + Wn yapıyorsunuz. Wn => Noise yani gürültü. Gürültü aralığını vs belirleyip sistemi simüle etmiş oluyorsunuz.
The University of Sheffield                                  (PhD) Automatic Control and Systems Engineering

z

#4
@Firzen

ADC uygulamalarimizda Sabit DC bir gerilimi ornekledigimizi varsayalim. DC gerilimimiz olabildigince sabit olsun.

Digitalize edilmis veriler haliyle gurultu icerecektir.

Verilerimizdeki gurultu bileseni Gaussian formundamidir?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Firzen

Alıntı yapılan: z - 20 Mayıs 2022, 11:31:29@Firzen

ADC uygulamalarimizda Sabit DC bir gerilimi ornekledigimizi varsayalim. DC gerilimimiz olabildigince sabit olsun.

Digitalize edilmis veriler haliyle gurultu icerecektir.

Verilerimizdeki gurultu bileseni Gaussian formundamidir?


Buradaki asıl soru bence şu olmalıdır. ADC verisini nerden topladığınız. Mesela Motor Hızı, Sıcaklık EVET Gaussian,
Ama DC gerilim derseniz ve bu gerilim de UWB gibi haberleşme datasından geliyorsa Non-Gaussian -> Gamma veya Erlang,
Sabit Elektriksel sensör üzerindeki DC gerilimse evet Gaussian'a benzetilebilir.
The University of Sheffield                                  (PhD) Automatic Control and Systems Engineering

berat23

#6
çok girmek istemedim ama lisans, iş hayatı, yüksek lisans ve tekrar iş hayatı sırasıyla navigasyon, kontrol ve tracking konularında kalman çalışmış biri olarak şunu söylemeliyim ki bu süreç boyunca her aşamada aa ben birşey bilmiyormuşum dedim ve geldiğim noktada kalmanın çok sınırlı bir alanda kullanılabilir ve nazlı bir metod olduğunu düşünüyorum. forumda mesajlarımı ararsanız bu sürecimin bir kısımını da görebilirsiniz, muhtelif zamanlarda kalman aslında şudur budur demişimdir. artık kalman bilmediğimi düşündüğüm için sanırım birşeyler yazabilirim.

önce en temel hata, kalman bir gürültü azaltıcı ya da smoothing metodu "asla" değildir, kalman filter bir linear estimator'dur (non linear için extended ya da unscented vb.). şunlar olmadan kalman olmaz;
- ölçüm modeli: estimate ettiğimiz şey neyse onu linear bir model ve "bir şekilde" (gaussian noise ile) belki bir hata(asıl estimation buna yapılır) ile ölçeceğiz
- process modeli: sistemin linear olarak davranışını observe edeceğimiz model olmalı. bu çok önemli, olmazsa kalman olmaz! yani doğrudan ölçümün yanı sıra dışardan birşeyleri excite edeceğiz ve ölçtüğümüz şey(state) bildiğimiz modele bağlı değişecek. bu çok önemli, eğer observable değilse kalman çalışmaz, örn. bilinen modelle manevra yapmazsa hedefi track edemezsiniz. sebebi basit, her gelen yeni veri aynı, information yok gelen data'da. bunu bakkal hesabı anlatıyorum, yoksa matematiğe de boğarım
- istatistik: ölçüm hatamız ve observation hatamızın istatistiğini bilmeliyiz (meşur copy paste yapılan covariance matrisleri)
- ilk değer: ilk değer yakınsayabilir olmalı, olmazsa kalman dağa taşa gider. bu gerçek hayatta inanılmaz bir bilgidir, matlab'da çalışırken hayat mükemmeldir ancak gerçek sistemlerde mükemmel ilk değer verecek zamanınız olmaz. gerçekte kalman kullanacaksanız bu kısımda harikalar yaratmanız lazım.

şimdi diyelim tek ölçüm var, burda bir model de yok doğrudan state neyse onu ölçüyoruz, hatta gittik dinamik model de kullanmadık (observation yok) ki bu durum genelde insanların kalman dan beklediği gürültü azaltma fonksiyonu oluyor. itiraf ediyorum ki bu senaryoda kalman çalışmaz, elle deneyin bildiğiniz ortalama alır. ki gaussian noise için en basit gürütü azaltma metodu ortalama almaktır. özetle bu kalman olmaz, observe etmek şart, dinamik modeller şart. mesela ADC den gerilim okurken bir dinamik model yok, doğrudan ölçüyorsun. klasik INS örneğini düşünelim, GPS'den gasussian noise ile mutlak konum ölçüyorum(basitleştirdim), diğer yandan da ivme dönüş de ölçüyorum ve bunlarla sistemin bir sonraki state'ini (pozisyon) observe edebilirim. ancak bunda bazı hatarlar var ve bunu da GPS konumu ile update ediyorum. özet, eğer dinamik modelde bu ilişkiyi kuramıyorsanız kalman olmaz olamaz. çok daha fazla örnek vermeyeyim, hassas konulara giderim ve bedava da bundan fazla anlatılmaz:)

bir not daha, gerçek hayattaki her ölçüme her fenomene gaussian ya da bunun türevleri derseniz çok birşey kaybetmezsiniz. gerçekten gaussian mükemmel bir random variable, doğanın kanunu adeta.

not: burada kalman nedir diye anlatmadım aslında, bilmediklerimi anlattım. yoksa 2022 yılında kalman nedir diye anlatmaya gerek yok zira anlatan tonla yazılı görsel kaynak var.

Firzen

Alıntı yapılan: berat23 - 21 Mayıs 2022, 01:46:43bir not daha, gerçek hayattaki her ölçüme her fenomene gaussian ya da bunun türevleri derseniz çok birşey kaybetmezsiniz. gerçekten gaussian mükemmel bir random variable, doğanın kanunu adeta.


Yayını gönderdim 3-4 aya DOI numarası alır. Alır almaz sana atacağım Gaussian ve Non-Gaussian olunca ölçümlerde estimationdaki farklılıkları :D
The University of Sheffield                                  (PhD) Automatic Control and Systems Engineering

Erhan YILMAZ

Merhabalar!

Kalmandan ziyade hepsi Bayes filtreleme adı altında toplanıyor konu. Onun dışında temel olarak durum-uzay gösterimi konusunun anlaşılması ve pekiştirilmesi gerekir. Benim önerebileceğim en güzel kaynak https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python budur. Bütün mevzuyu baştan sona anlatıyor. g-h filtrelerden parçacık filtrelere kadar. Teknik bilgi gerekmiyor. Herkese hitap ediyor.


saygılar.
Waiting for humanity to compile the AI code that will kill humanity!

apsis

@Erhan YILMAZ Çok güzel bir kaynak.
"Makineye Beyin" MEKATRONİK