Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: sedronjames - 16 Mayıs 2022, 13:32:35

Başlık: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: sedronjames - 16 Mayıs 2022, 13:32:35
Merhabalar

DC bara gerilimi okumak için mikro denetleyicinin adc'sini kullanıyorum.

Hem öğrenmek adına hem de ilerleyen zamanlarda da kullanmam gerektiğini düşündüğüm için Kalman filtresini öğrenmeye çalışıyorum son bir haftadır. adc'den gelen veriyi süzmek için kalman filtresi kullanmak istedim.

kalmanfilter.net sitesinde çok detaylı ve muazzam şekilde anlatılmış. Genel olarak bu siteyi referans aldım.

Öğrendiğim kadarıyla kalman filtresi için bir  fonksiyon da yazdım.

Uygulama üzerinde denemeye çalıştığımda ise başarılı olmadığını gözlemledim.

Mantık olarak DC bara gerilimim sabit bir değer. Ben de bunun için birinci derece kalman filtresi kullandım.

Program ilk başlatıldığında initial olarak verilen DC bara gerilimini okuyor. burada bir sorun yok.
Ancak DC bara gerilimini değiştirdiğimde, örneğin 24 volttan 36 volta çektiğimde, kalman filtre çıkışı çok yavaş olarak 36 volta çıkmaya başlıyor.

Tam olarak 36 volta oturması dakikalar sürecek gibi gözüküyor. Bir yandan adcye gelen veriyi takip ettiğimde 36.01 35.99 gibi değerler okuyorum . yani ölçümlerim doğuya yakın geliyor.

acaba bu step şeklindeki artışlarda birinci derece kalman filtresi işe yaramıyor mu? ikinci derece veya üçüncü derece mi kullanmak lazım?

Tecrübelerini aktarmak isteyenlere teşekkür ederim.

iyi forumlar dilerim.
float KF_FirstOrderKalmanFilter(struct KalmanFilterParameters *PointerKalmanFilter, float MeasuredValue)
{
PointerKalmanFilter->KalmanGain =
PointerKalmanFilter->PreviousPrediction /
(PointerKalmanFilter->PreviousPrediction + PointerKalmanFilter->Variance);


PointerKalmanFilter->ActualEstimation = PointerKalmanFilter->PreviousEstimation +
PointerKalmanFilter->KalmanGain * (MeasuredValue - PointerKalmanFilter->PreviousEstimation);


PointerKalmanFilter->ActualPrediction = (1 - PointerKalmanFilter->KalmanGain) *
PointerKalmanFilter->PreviousPrediction;


PointerKalmanFilter->PreviousPrediction = PointerKalmanFilter->ActualPrediction;

PointerKalmanFilter->PreviousEstimation = PointerKalmanFilter->ActualEstimation;

return PointerKalmanFilter->ActualEstimation;
}


Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: z - 16 Mayıs 2022, 18:59:23
Kalman filtresi hakkinda bilgim yok fakat bu filitre sensor sinyalinin gurultuye boguldugu durumlarda kullaniliyor diye hatirliyorum.

Senin uygulamanda temiz bir geri besleme zaten var.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: Emre_Tuncay_ - 16 Mayıs 2022, 23:39:12
Sadece tek kaynaktan gelen ölçümler ile kalman filtresini çalıştıramazsınız. Hata kaynağı birbirinden bağımsız 2 farklı sensör kullanırsanız ve bu sensörlerin ölçtüğü veriler birbiri ile koşullu bağımlı ise kalman filtresini modelleyebilirsiniz.

Örnek vermek gerekirse bir aracın gnss'den hız verisini ölçtünüz ama gnss'in gürültüsünden kurtulmak için kalman filtresine başvurmak istediniz. Kalman filtresini modellemek için gnss ölçümlerinin hata kaynağından bağımsız hata kaynağı olan başka bir ölçüme ihtiyaç duyarsınız. Bu ölçümü de ivme sensöründen alabilirsiniz. Bakınız gnss ile ivme sensörünün hata kaynakları farklıdır ama birbirlerine koşullu bağımlı verilerdir. Yani araç ivmelenince hızı artar.

Sizin uygulamanızda da 2.bir veriye ihtiyaç var. Mesela DC baranın üzerine düşen gerilimden kaynaklanan manyetik alanı ölçen bir sensör olduğunu düşünelim. Bu sensörü kullanarak kalman filtresini modelleyebilirsiniz.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: sedronjames - 17 Mayıs 2022, 15:31:49
Merhaba

Aslına bakarsanız ölçeceğim sinyal sabit bir değer. Devre DC motor süreceği için PWM dalgalarından bile iç gürültü oluşabiliyor. Benim amacım bu gürültüleri temizlemekti.

Bahsettiğiniz sensörlerde işaret sürekli değişken olabilir. Aracın hızına göre konum eksponansiyel veya parabolik bir grafik çizebilir. Bu tür işaretler için birinci derece kalman filtresi kullanmak uygun olmaz tabikide.

İkinci bir sensör kullanmam da pek mümkün değil. En basit yöntemle, gerilim bölücü kullanarak, DC gerilim okuma işlemi yapıyoruz.

Sisteme uygun en mükemmel kalmanı tasarlamak için kesinlikle ölçülecek sinyalin modellenmesi gerekiyor. Buna ben de kefilim. Ancak PID tuningdeki gibi katsayılar ile oynayarak da başarılı sayılabilecek bir sonuca ulaşmak mümkün sanırsam.

Dün bu başlığı açarken kullandığım kalman filtresinde yaşadığım sorun gerilimin seviyesi değiştiğinde bu gerilime çok yavaş oturmasıydı. Bunun nedeni de Kalman Gain'in sıfıra yaklaşmasıydı. Kalman gain sıfıra yaklaştığı için her bir estimationdaki artış çok az oluyordu. Githubdan da bakındığın pek çok algoritmada Prediction hesabı yapılırken bir katsayı eklenmişti.

Ben de aynı şekilde denediğimde Kalman katsayıları ile oynama da yaparak Başarılı bir filtreleme gerçekleştirdim diyebilirim.

Ortalama filtre, kayan ortalama ya da medyan filtre gibi belirli sayıda örnek alıp işlem yapmaya da gerek kalmıyor.

Kalman filtresinin en basit ADC okumalarında bile kesinlikle kullanılmasını öneririm.



17 Mayıs 2022, 15:34:09
Alıntı yapılan: z - 16 Mayıs 2022, 18:59:23Kalman filtresi hakkinda bilgim yok fakat bu filitre sensor sinyalinin gurultuye boguldugu durumlarda kullaniliyor diye hatirliyorum.

Senin uygulamanda temiz bir geri besleme zaten var.

@z Hocam, bu Kalman Filtresinin dayandığı matematik tam sizlik. İçine daldığınızda uğraşmaktan keyif alacağınıza eminim.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: muuzoo - 17 Mayıs 2022, 16:21:37
Alıntı yapılan: Emre_Tuncay_ - 16 Mayıs 2022, 23:39:12Sadece tek kaynaktan gelen ölçümler ile kalman filtresini çalıştıramazsınız. Hata kaynağı birbirinden bağımsız 2 farklı sensör kullanırsanız ve bu sensörlerin ölçtüğü veriler birbiri ile koşullu bağımlı ise kalman filtresini modelleyebilirsiniz.

Örnek vermek gerekirse bir aracın gnss'den hız verisini ölçtünüz ama gnss'in gürültüsünden kurtulmak için kalman filtresine başvurmak istediniz. Kalman filtresini modellemek için gnss ölçümlerinin hata kaynağından bağımsız hata kaynağı olan başka bir ölçüme ihtiyaç duyarsınız. Bu ölçümü de ivme sensöründen alabilirsiniz. Bakınız gnss ile ivme sensörünün hata kaynakları farklıdır ama birbirlerine koşullu bağımlı verilerdir. Yani araç ivmelenince hızı artar.

Sizin uygulamanızda da 2.bir veriye ihtiyaç var. Mesela DC baranın üzerine düşen gerilimden kaynaklanan manyetik alanı ölçen bir sensör olduğunu düşünelim. Bu sensörü kullanarak kalman filtresini modelleyebilirsiniz.

Emin misiniz? Geçmiş zaman ama pekala tek kaynaktan gelen ardışıl verilere kalman filtresi uygulanabilir. İlla iki kaynak olmak zorunda değil.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: muuzoo - 17 Mayıs 2022, 16:32:00
Alıntı yapılan: sadogaffari - 17 Mayıs 2022, 15:31:49Merhaba

Aslına bakarsanız ölçeceğim sinyal sabit bir değer. Devre DC motor süreceği için PWM dalgalarından bile iç gürültü oluşabiliyor. Benim amacım bu gürültüleri temizlemekti.

Bahsettiğiniz sensörlerde işaret sürekli değişken olabilir. Aracın hızına göre konum eksponansiyel veya parabolik bir grafik çizebilir. Bu tür işaretler için birinci derece kalman filtresi kullanmak uygun olmaz tabikide.

İkinci bir sensör kullanmam da pek mümkün değil. En basit yöntemle, gerilim bölücü kullanarak, DC gerilim okuma işlemi yapıyoruz.

Sisteme uygun en mükemmel kalmanı tasarlamak için kesinlikle ölçülecek sinyalin modellenmesi gerekiyor. Buna ben de kefilim. Ancak PID tuningdeki gibi katsayılar ile oynayarak da başarılı sayılabilecek bir sonuca ulaşmak mümkün sanırsam.

Dün bu başlığı açarken kullandığım kalman filtresinde yaşadığım sorun gerilimin seviyesi değiştiğinde bu gerilime çok yavaş oturmasıydı. Bunun nedeni de Kalman Gain'in sıfıra yaklaşmasıydı. Kalman gain sıfıra yaklaştığı için her bir estimationdaki artış çok az oluyordu. Githubdan da bakındığın pek çok algoritmada Prediction hesabı yapılırken bir katsayı eklenmişti.

Ben de aynı şekilde denediğimde Kalman katsayıları ile oynama da yaparak Başarılı bir filtreleme gerçekleştirdim diyebilirim.

Ortalama filtre, kayan ortalama ya da medyan filtre gibi belirli sayıda örnek alıp işlem yapmaya da gerek kalmıyor.

Kalman filtresinin en basit ADC okumalarında bile kesinlikle kullanılmasını öneririm.



18 Mayıs 2022, 01:34:09
@z Hocam, bu Kalman Filtresinin dayandığı matematik tam sizlik. İçine daldığınızda uğraşmaktan keyif alacağınıza eminim.


Çözmenize sevindim. Aslında zevkli konudur, geçmişte uğraşmıştım. Lineer olmayan sistemler için de çeşitli versiyonları mevcuttur.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: sedronjames - 17 Mayıs 2022, 16:41:30
@muuzoo paylaştığınız kaynağı incelemiştim. Hatta formüllerimi de ona bakarak çıkarmıştım. Bahsettiğiniz kaynaktaki örneği @muhittin_kaplan  koda dökmüştü. Kod çalışıyor. Verilen örnektekiyle de aynı sonucu veriyor. Ancak giriş sinyalinin (ya da donanım yoksa giriş olarak bir dizi tanımlayın) genliğini step şeklinde artırdığınızda, doğru ifadeye oturması için oldukça fazla sayıda iterasyon gerektiğini göreceksiniz. Bunun nedenini de yukarıda anlattım.
 
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: muuzoo - 17 Mayıs 2022, 17:01:13
Alıntı yapılan: sadogaffari - 17 Mayıs 2022, 16:41:30@muuzoo paylaştığınız kaynağı incelemiştim. Hatta formüllerimi de ona bakarak çıkarmıştım. Bahsettiğiniz kaynaktaki örneği @muhittin_kaplan  koda dökmüştü. Kod çalışıyor. Verilen örnektekiyle de aynı sonucu veriyor. Ancak giriş sinyalinin (ya da donanım yoksa giriş olarak bir dizi tanımlayın) genliğini step şeklinde artırdığınızda, doğru ifadeye oturması için oldukça fazla sayıda iterasyon gerektiğini göreceksiniz. Bunun nedenini de yukarıda anlattım.
 

O yüzden mesajımı değiştirip kaynağı silmiştim çzödüğünüzü görünce. Bu durumlar için o katsayı dediğiniz aslında formülde verilen gürültü matrisi (sizin durum için process noise). Bir de measurement noise mevcut. Zaten kalman uygulamadaki zorluklardan biri uygun gürültü matrisini bulmaktır. Sezgisel ve algoritmik çeşitli metodlar mevcut.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: z - 17 Mayıs 2022, 17:54:53
@muuzoo

Bu Kalman olayini forumda bize biraz anlatirmisin?
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: muhittin_kaplan - 17 Mayıs 2022, 19:11:25
Geçmişte yararlandığım bir yazı.
http://www.ibrahimcayiroglu.com/Dokumanlar/Makale_BilgiPaylasim/(1-2012)-Kalman_Filtresi_Ve_Bir_Programlama_Ornegi-Ibrahim_CAYIROGLU.pdf

17 Mayıs 2022, 19:12:52
bir diğeri :)
Acaba hangisi önce yazdı.
http://bilgin.esme.org/BitsAndBytes/KalmanFilterforDummies
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: Emre_Tuncay_ - 17 Mayıs 2022, 20:27:22
Alıntı yapılan: muuzoo - 17 Mayıs 2022, 16:21:37Emin misiniz? Geçmiş zaman ama pekala tek kaynaktan gelen ardışıl verilere kalman filtresi uygulanabilir. İlla iki kaynak olmak zorunda değil.

Kalman filtresi üzerine biraz kafa yordum ama işin uzmanı değilim yanılıyor da olabilirim. Kalman filtresinin tek bir ölçüm ile yapıldığını belirten bir kaynak varsa paylaşırsanız faydalı olur benim için.

Kalman filtresinde 2 adım vardır. Bunlar tahmin ve ölçümlerin düzeltilmesi. Bir veriyi tahmin edersiniz ve ölçüm alırsınız sonrada ölçümünüzünmü yoksa tahminizinmi doğru olduğuna karar verirsiniz buna göre de ölçümünüzü düzeltirsiniz.

Tek bir ölçüm ile nasıl bir tahmin modeli geliştiriliyor. Gnss verilerini filtrelemek üzerine uğraştığım için yine örneği gnss'den vereceğim. Elimizde sadece pozisyon ölçebildiğimiz bir gnss olsun. Bu gnss'i düz bir çizgi üzerine hareket ettirdiğimizde ölçümler o çizgi üzerinde hep salınır. Biz bu gürültüyü filtrelemek için kalman filtresi kullanmaya kalktığımızda. İlk olarak pozisyon örneklemesi yaparız ardından tahmin etme adımını gerçekleştiririz. Tahmin adımında pozisyon değişimi modelleyebilmek için hız ve delta zamana ihtiyacımız olacaktır. Örnekleme frekenasımızdan delta zamanı elde edebiliriz ama hız bilgisine ulaşmamız mümkün olmaz çünkü hız verisini başka bir kaynaktan ölçmedik bu nedenle tahmin modelini çalıştıramayız.

Aşağıdaki kaynak faydalı bulduğum bir kaynaktır.
https://www.bzarg.com/p/how-a-kalman-filter-works-in-pict

@sadogaffari
Okuduğum bir kaç kaynakta kalman filtresinin tune edilmesinde bahsediyordu. Dediğiniz gibi pratikte ince ayarlamalar yapılıyor.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: muhittin_kaplan - 17 Mayıs 2022, 21:48:45
Yukarıda verdiğim linklerde tekbir ölçüm, ve birkaç katsayı ile yapılan örnek verilmiş.
Bu katsayıları başka bir ölçüm sonucu oluşturursanız daha doğru bir filtre oluşturursunuz.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: Firzen - 17 Mayıs 2022, 23:52:06
Alıntı yapılan: sadogaffari - 16 Mayıs 2022, 13:32:35Merhabalar

DC bara gerilimi okumak için mikro denetleyicinin adc'sini kullanıyorum.

Hem öğrenmek adına hem de ilerleyen zamanlarda da kullanmam gerektiğini düşündüğüm için Kalman filtresini öğrenmeye çalışıyorum son bir haftadır. adc'den gelen veriyi süzmek için kalman filtresi kullanmak istedim.

kalmanfilter.net sitesinde çok detaylı ve muazzam şekilde anlatılmış. Genel olarak bu siteyi referans aldım.

Öğrendiğim kadarıyla kalman filtresi için bir  fonksiyon da yazdım.

Uygulama üzerinde denemeye çalıştığımda ise başarılı olmadığını gözlemledim.

Mantık olarak DC bara gerilimim sabit bir değer. Ben de bunun için birinci derece kalman filtresi kullandım.

Program ilk başlatıldığında initial olarak verilen DC bara gerilimini okuyor. burada bir sorun yok.
Ancak DC bara gerilimini değiştirdiğimde, örneğin 24 volttan 36 volta çektiğimde, kalman filtre çıkışı çok yavaş olarak 36 volta çıkmaya başlıyor.

Tam olarak 36 volta oturması dakikalar sürecek gibi gözüküyor. Bir yandan adcye gelen veriyi takip ettiğimde 36.01 35.99 gibi değerler okuyorum . yani ölçümlerim doğuya yakın geliyor.

acaba bu step şeklindeki artışlarda birinci derece kalman filtresi işe yaramıyor mu? ikinci derece veya üçüncü derece mi kullanmak lazım?

Tecrübelerini aktarmak isteyenlere teşekkür ederim.

iyi forumlar dilerim.
float KF_FirstOrderKalmanFilter(struct KalmanFilterParameters *PointerKalmanFilter, float MeasuredValue)
{
PointerKalmanFilter->KalmanGain =
PointerKalmanFilter->PreviousPrediction /
(PointerKalmanFilter->PreviousPrediction + PointerKalmanFilter->Variance);


PointerKalmanFilter->ActualEstimation = PointerKalmanFilter->PreviousEstimation +
PointerKalmanFilter->KalmanGain * (MeasuredValue - PointerKalmanFilter->PreviousEstimation);


PointerKalmanFilter->ActualPrediction = (1 - PointerKalmanFilter->KalmanGain) *
PointerKalmanFilter->PreviousPrediction;


PointerKalmanFilter->PreviousPrediction = PointerKalmanFilter->ActualPrediction;

PointerKalmanFilter->PreviousEstimation = PointerKalmanFilter->ActualEstimation;

return PointerKalmanFilter->ActualEstimation;
}



Covariance Matrix'i ve Process Modeli nasıl belirlediniz?
Doğru çalışmama nedeni şunlar olabilir:
Bunlar için çözüm:

17 Mayıs 2022, 23:54:29
Alıntı yapılan: Emre_Tuncay_ - 16 Mayıs 2022, 23:39:12Sadece tek kaynaktan gelen ölçümler ile kalman filtresini çalıştıramazsınız. Hata kaynağı birbirinden bağımsız 2 farklı sensör kullanırsanız ve bu sensörlerin ölçtüğü veriler birbiri ile koşullu bağımlı ise kalman filtresini modelleyebilirsiniz.

Örnek vermek gerekirse bir aracın gnss'den hız verisini ölçtünüz ama gnss'in gürültüsünden kurtulmak için kalman filtresine başvurmak istediniz. Kalman filtresini modellemek için gnss ölçümlerinin hata kaynağından bağımsız hata kaynağı olan başka bir ölçüme ihtiyaç duyarsınız. Bu ölçümü de ivme sensöründen alabilirsiniz. Bakınız gnss ile ivme sensörünün hata kaynakları farklıdır ama birbirlerine koşullu bağımlı verilerdir. Yani araç ivmelenince hızı artar.

Sizin uygulamanızda da 2.bir veriye ihtiyaç var. Mesela DC baranın üzerine düşen gerilimden kaynaklanan manyetik alanı ölçen bir sensör olduğunu düşünelim. Bu sensörü kullanarak kalman filtresini modelleyebilirsiniz.

Açıkcası yanlış bilgi hocam. Tek sensör üzerine de kalman uygulanabilir. Önemli olan sistem üzerindeki gürültüyü bulabilmek. Örneğin DC gerilim sensörünüz var Bunu bildiğiniz bir güç kaynağına takın sabit ve EMİN OLDUĞUNUZ bir gerilim verin ardından variance'ı belirleyin. Sizin bahsettiğiniz Kalman Filter değil Complementary Filter.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: sedronjames - 18 Mayıs 2022, 07:52:17
Alıntı yapılan: muuzoo - 17 Mayıs 2022, 17:01:13O yüzden mesajımı değiştirip kaynağı silmiştim çzödüğünüzü görünce. Bu durumlar için o katsayı dediğiniz aslında formülde verilen gürültü matrisi (sizin durum için process noise). Bir de measurement noise mevcut. Zaten kalman uygulamadaki zorluklardan biri uygun gürültü matrisini bulmaktır. Sezgisel ve algoritmik çeşitli metodlar mevcut.

Tam olarak dediğiniz gibi evet. İlginiz için teşekkür ederim.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: sedronjames - 18 Mayıs 2022, 08:02:31
Alıntı yapılan: Emre_Tuncay_ - 17 Mayıs 2022, 20:27:22Kalman filtresi üzerine biraz kafa yordum ama işin uzmanı değilim yanılıyor da olabilirim. Kalman filtresinin tek bir ölçüm ile yapıldığını belirten bir kaynak varsa paylaşırsanız faydalı olur benim için.

Kalman filtresinde 2 adım vardır. Bunlar tahmin ve ölçümlerin düzeltilmesi. Bir veriyi tahmin edersiniz ve ölçüm alırsınız sonrada ölçümünüzünmü yoksa tahminizinmi doğru olduğuna karar verirsiniz buna göre de ölçümünüzü düzeltirsiniz.

Tek bir ölçüm ile nasıl bir tahmin modeli geliştiriliyor. Gnss verilerini filtrelemek üzerine uğraştığım için yine örneği gnss'den vereceğim. Elimizde sadece pozisyon ölçebildiğimiz bir gnss olsun. Bu gnss'i düz bir çizgi üzerine hareket ettirdiğimizde ölçümler o çizgi üzerinde hep salınır. Biz bu gürültüyü filtrelemek için kalman filtresi kullanmaya kalktığımızda. İlk olarak pozisyon örneklemesi yaparız ardından tahmin etme adımını gerçekleştiririz. Tahmin adımında pozisyon değişimi modelleyebilmek için hız ve delta zamana ihtiyacımız olacaktır. Örnekleme frekenasımızdan delta zamanı elde edebiliriz ama hız bilgisine ulaşmamız mümkün olmaz çünkü hız verisini başka bir kaynaktan ölçmedik bu nedenle tahmin modelini çalıştıramayız.

Aşağıdaki kaynak faydalı bulduğum bir kaynaktır.
https://www.bzarg.com/p/how-a-kalman-filter-works-in-pict

@sadogaffari
Okuduğum bir kaç kaynakta kalman filtresinin tune edilmesinde bahsediyordu. Dediğiniz gibi pratikte ince ayarlamalar yapılıyor.

Sinyalimin karakteristiğini bildiğim için modelleme konusunda bir kabul yaptım. Sizin projenizde de konum bilgisi hıza ve dolayısıyla ivmeye göre değişebilir. İvmenin sabit olacağı kabulü ile üçüncü derece kalman filtresi tasarlayabilirsiniz. Kalman konusunda çok yeniyim. Yüksek lisansta Kontrol okuyacağım. Bol bol haşır neşir oluşuruz ve burada da öğrendiklerimi paylaşırım diye düşünüyorum.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: Emre_Tuncay_ - 18 Mayıs 2022, 11:33:23
Alıntı yapılan: Firzen - 17 Mayıs 2022, 23:52:06Covariance Matrix'i ve Process Modeli nasıl belirlediniz?
Doğru çalışmama nedeni şunlar olabilir:
  • Process Model ile Covariance matrix'e aynı oranı vermiş olabilirsin.
  • Measurement Noise için topladığın gürültü variance'ı doğru değildir.
  • Sistemin Process modeli ile gerçek modeli arasındaki fark 0.99'u geçmiş olabilir.
  • Sistem Nonlinear Dynamics olmasına rağmen basit bir linear function ile tanımlandırılmış olabilir.
Bunlar için çözüm:
  • Linear modelini simülasyon ile test edebilirsin bu sayede Process Modelini test etmiş olursun
  • Bara üzerine giriş çıkış gerilimleri uygulayarak gürültünün dağılımını çıkar, sonrasında da gürültü dağılımını covariance matrix'e çevir
  • Oluşturduğun modelin örnekleme zamanı ile sistemin örnekleme zamanını eşle ve çıktıların transient response'una bak
  • Sistemin linear modelini tasarlamış ve belirli kararlılık aralığında vermiş olabilirsin. Bu da gerçek hayattaki sistemininin herhangi bir belirsizlik altında beklenmedik cevap vermesine neden olmuş olabilir. Bu durum coupled dynamics'lerden kaynaklı da olabilir. Bu durumda sistemin Nonlinear Dynamics'lerini çıkarıp ardından Extended Kalman Filter Kullanabilirsin. Ama burada Farklı olarak Sistem modelinin Jacobian Matrix'ini alman gerekecektir.

17 Mayıs 2022, 23:54:29
Açıkcası yanlış bilgi hocam. Tek sensör üzerine de kalman uygulanabilir. Önemli olan sistem üzerindeki gürültüyü bulabilmek. Örneğin DC gerilim sensörünüz var Bunu bildiğiniz bir güç kaynağına takın sabit ve EMİN OLDUĞUNUZ bir gerilim verin ardından variance'ı belirleyin. Sizin bahsettiğiniz Kalman Filter değil Complementary Filter.

Tabi yanılıyor olabilirim o zaman kafama takılan bir soruyu soruyum.

Sadece tek bir sensör verimiz var ise ve bu sensörün üzerinde bir gaussyen dağılım gösteren bir hata varsa. Bu gürültüyü engellemek için kalman filtresi kullanmaya karar verirsek. Kalman filtresindeki tahmin adımını nasıl gerçekleştireceğiz. Kalman filtremiz nasıl sistemi gözlemleyecek.Örnek vermek gerekirse elimizde dikey mesafe ölçen bir lidar sensörü olsun.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: Firzen - 18 Mayıs 2022, 14:43:30
Dağılımın Gauss olduğunu buldun. Ardından yapman gereken dağılımın var, cov değerlerini çıkarmak. Daha sonrasında Lidar transition matrice'inden sonra belirlemen gereken covariance matrice'ni belirlemek. Covariance matrice'i belirlersen K matrice'i otomatik olarak. kendini 2-3. iterasyonda tune edecektir. Ben de PhD projemde drone üzerinde Non-Gaussian distribution yapıyorum.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: muuzoo - 18 Mayıs 2022, 15:03:28
Alıntı yapılan: z - 17 Mayıs 2022, 17:54:53@muuzoo

Bu Kalman olayini forumda bize biraz anlatirmisin?

Hocam uzun zaman oldu, notlarımı bulup elimden geldiğince yazarım. Forumda konuya daha hakim arkadaşlar vardır muhakkak onların da katkısı ile güzel bir başlık çıkar.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: z - 18 Mayıs 2022, 15:21:49
Tamam bir baslik acip baslatalim. Bu konuda ben hic ders almadim, matrislerden de nefret ediyorum.
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: Emre_Tuncay_ - 18 Mayıs 2022, 21:03:17
Kalman filtresi için farklı bir konu açıldı ama benim sorularım bu konu özelinde olduğu için buraya sormaya devam ediyorum. Konuyu şişiriyorsam lütfen belirtin kalman filtresi başlığı altında devam edeyim.

Alıntı yapılan: Firzen - 18 Mayıs 2022, 14:43:30Dağılımın Gauss olduğunu buldun. Ardından yapman gereken dağılımın var, cov değerlerini çıkarmak. Daha sonrasında Lidar transition matrice'inden sonra belirlemen gereken covariance matrice'ni belirlemek. Covariance matrice'i belirlersen K matrice'i otomatik olarak. kendini 2-3. iterasyonda tune edecektir. Ben de PhD projemde drone üzerinde Non-Gaussian distribution yapıyorum.

Benimde kafamı karıştıran konu lidar transition matrisinin oluşturulması ve tahmin modelinin oluşturulması. (Lidar özellikle karşılaştığım bir problem değil. Anlaşılması adına uygulamaya yönelik bir örnek vermek istedim.) Lidar dikey mesafe ölçtüğü için dikey mesafenin hareket modelini oluşturarak state transition matrisini oluşturabiliriz. Dikey mesafenin değişimi ise dikey hız ve zaman farkının çarpımına eşit diyebiliriz. Bu şekilde state transition matrisini oluşturabiliriz.

Sonrada kalman filtresinin state estimation adımında state transition matrisini güncellerken dikey hız verisine ihtiyaç duyuyoruz çünkü state transition matrisini dikey hız X dt temelinde oluşturduk. Bu nedenle bağımlı değişken ikinci bir veriye ihtiyaç duyduğumuzu söyledim.

@Firzen Lidar uygulamasında state transition matrisini bu şekilde modellememiz doğrumudur? İkinci bağımlı değişken kullanmadan state transition matrisini nasıl oluştururuz?
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: Firzen - 19 Mayıs 2022, 02:23:03
Durumu anlatmak için resim koydum.
Olay şu siz aslında hız verisi içinde sensör lazım diyorsunuz ama lazım değil bir anlamda. KF de önemli olan modele mi sensöre mi çok güveniyorsunuz.

Örneğin modelime güveniyorum: x'in deltaT anındaki sonucuna bakar Vx'i çıkarırım. Ölçüm sonucu ile dağılımına bakarım

Yok ölçümüm doğrudur daha az error katsayısı verir bu sefer process model ile karşılaştırırım yine dağılına bakarım.

(https://i.ibb.co/ZVPnx51/A11-BB76-B-37-A7-421-C-B229-F82-FFE9-DD378.jpg) (https://ibb.co/ZVPnx51)
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: Emre_Tuncay_ - 19 Mayıs 2022, 14:28:35
Alıntı yapılan: Firzen - 19 Mayıs 2022, 02:23:03Durumu anlatmak için resim koydum.
Olay şu siz aslında hız verisi içinde sensör lazım diyorsunuz ama lazım değil bir anlamda. KF de önemli olan modele mi sensöre mi çok güveniyorsunuz.

Örneğin modelime güveniyorum: x'in deltaT anındaki sonucuna bakar Vx'i çıkarırım. Ölçüm sonucu ile dağılımına bakarım

Yok ölçümüm doğrudur daha az error katsayısı verir bu sefer process model ile karşılaştırırım yine dağılına bakarım.

(https://i.ibb.co/ZVPnx51/A11-BB76-B-37-A7-421-C-B229-F82-FFE9-DD378.jpg) (https://ibb.co/ZVPnx51)


Yani state transition matrisi için ihtiyacımız olan hız verisini lidarin ölçtüğü dikey mesafe verisinde mi kestiririz?

Bu şekilde kalman filtremizin tahmin adımı ölçümlerimizi taklit eder hale gelmezmi? Yani kalman katsayı matrisini guncellerken ölçümlere güvenecek şekilde güncellemez mi?
Başlık: Ynt: Birinci Derece Kalman Filtresi DC Bara Gerilimi Okumak İçin Yeterli Midir?
Gönderen: Firzen - 19 Mayıs 2022, 15:18:22
Alıntı yapılan: Emre_Tuncay_ - 19 Mayıs 2022, 14:28:35Yani state transition matrisi için ihtiyacımız olan hız verisini lidarin ölçtüğü dikey mesafe verisinde mi kestiririz?

Bu şekilde kalman filtremizin tahmin adımı ölçümlerimizi taklit eder hale gelmezmi? Yani kalman katsayı matrisini guncellerken ölçümlere güvenecek şekilde güncellemez mi?

O yüzden dedim ya Modele güvenmek yada sensör verisine güvenmek lazım diye. Her ikisine de güveniyorum yada Güvenmiyorum gibi bir durumu yok. Öyle bir durumda kalman sapıtıyor zaten.