Bir Kalman filtresi, yakalama cihazının Euler açıları göz önüne alındığında, yansıtılan nokta konumlarını filtrelemek için uygun mu?


17

Benim sistemim şu. Bir nesneyi izlemek için mobil cihazın kamerasını kullanıyorum. Bu izlemeden, ekranda iki adet 3D nokta almak için yansıttığım dört tane 3D nokta alıyorum. Bu 8 değer algılama nedeniyle biraz gürültülü, bu yüzden hareketi daha pürüzsüz ve daha gerçekçi hale getirmek için filtrelemek istiyorum. İkinci bir ölçüm olarak, cihazın üç Euler açısı (yani cihaz tutumu) sağlayan jiroskop çıkışını kullanıyorum. Bunlar 2D konumlardan (20 Hz civarında) daha hassas ve daha yüksek frekansta (100 Hz'e kadar).

İlk denemem basit bir alçak geçiren filtre ile oldu, ancak gecikme önemliydi, bu yüzden pozisyonları biraz gecikmeyle yumuşatabileceğini umarak bir Kalman filtresi kullanmaya çalışıyorum. Önceki bir soruda görüldüğü gibi , Kalman filtresindeki kilit noktalardan biri ölçümler ile iç durum değişkenleri arasındaki ilişkidir. Burada ölçümler hem 8 2D nokta koordinatlarım hem de 3 Euler açısıdır, ancak dahili durum değişkenleri olarak ne kullanmam gerektiğinden ve Euler açılarını 2D noktalarına nasıl bağlamam gerektiğinden emin değilim. Dolayısıyla birincil soru, bir Kalman filtresi bu sorun için bile uygun mu? Ve eğer evetse, nasıl?


Amacın tamamı değerleri minimum gecikmeyle düzeltmekse, henüz denemediyseniz minimum faz filtresi kullanmayı deneyebilirsiniz. Kalman filtrelemenin size 'minimum faz gecikmesinden' daha iyi verebilmesi beni şaşırttı. Doğrusal filtreler için, minimum fazlı bir filtrenin mümkün olan en küçük gecikmeyi vermesini beklerim.
niaren

@niaren: Yorum için teşekkürler, ben de çalışacağım.
Stéphane Péchard

1
Ölçümlerinizin ne olduğu belli değil. Kalman filtre çerçevesinde "ölçümler", gerçekte gözlemlediğiniz miktarları ifade eder. Dört 3D noktasını ölçüyorsanız (örneğin, birden fazla kamera görüntüsünü birleştirerek), bunlar sizin ölçümlerinizdir. Ayrıca hangi durum değişkenlerini tahmin etmeye çalıştığınıza karar vermeniz gerekir. 3B nesne konumlarını zaman içinde izlemeye mi çalışıyorsunuz? Eğer öyleyse, bunlar sizin durum değişkenlerinizdir. 2B gösterimin yalnızca görüntüleme için kullanılabilmesi ve modelinizin bir parçası olarak dahil edilmemesi uygun olabilir. Ek ayrıntılar bir yaklaşım önermeye yardımcı olacaktır.
Jason R

Jsaon'un dediği gibi, ölçümlerinizin ne olduğu net değil. Diyorsun: From this tracking, I get four 3D points that I project on a mobile device screen, to get four 2D points. These 8 values are kinda noisyve sonra diyorsun What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).. Hangisi? Dört 2D nokta mı yoksa üç Euler açısı mı? Veya işleme treni Euler açıları -> 3D noktalar -> 2D noktalar mı gidiyor?
Peter K.

Aslında iki ölçüm setim var: tespit edilen noktalar kameradan gelen konumlar ve Euler açıları, ancak bunlar arasındaki ilişki önemsiz değil. Ayrıca, yalnızca filtrelenmiş konumlarla çıktı olarak ilgileniyorum. Açıklığa kavuşturmak için soruyu düzenleyeceğim.
Stéphane Péchard

Yanıtlar:


4

Düşük Geçişli Filtreleme

"Basit düşük geçiş filtresi" ile ne demek istediğinizi bilmek iyi olur.

Örneğin, zaman adresinden ölçümleri ise olank

pk=[xkyk]

ve düşük geçiş filtreli tahminleriniz:

pkLPF=αpk1LPF+(1α)pk

filtrede yaklaşık 1 / ( 1 - α ) oldukça büyük bir grup gecikmesi yaşarsınız1/(1α) yakın alfa için).

Sinyalin Modellenmesi: Basit Yaklaşım

Kalman filtresini (veya benzer bir yaklaşımı) kullanmak için, ölçümlerinizin nasıl alındığı ve güncellendiği konusunda bir modeliniz olması gerekir.

Genellikle bu şöyle görünür:

burada ϵ k süreç (sürüş) gürültüsü, A durum geçiş matrisi ve B

pk+1TRUE=ApkTRUE+Bϵk
ϵkAB giriş matrisinizdir.

Ve sonra ölçtüğünüz şunlardır: p k = C p T R U E k + D ν k burada ν k çıkış (ölçüm) gürültüsü, C çıkış matrisi ve D ölçüm gürültü matrisinizdir.pk

pk=CpkTRUE+Dνk
νkCD

Burada, modelin "durumu" gerçek konumlar olarak seçilir ve ölçtüğünüz şeyler çıktıdır.

Daha sonra devlet tahminleri almak için bu kadar Kalman filtresi denklemleri uygulayabilir gerçek pozisyonunun.pkTRUE^

Bununla birlikte, bu yaklaşım basittir çünkü noktaların nasıl hareket edebileceği hakkında herhangi bir bilgi kullanmaz (ne de 4 noktanızı ve birlikte nasıl hareket ettikleri hakkında sahip olabileceğiniz herhangi bir bilgiyi kullanmaz).

Sinyalin Modellenmesi: Daha İyi Bir Yaklaşım Başlatma

Bu sayfa, pozisyonları ve euler açılarını içeren sorunun nasıl ayarlanacağını gösterir. İhtiyacınız olandan farklı bir şey yapıyor, ancak devlet:

pkTRUE=[xk yk zk x˙k y˙k z˙k x¨k y¨k z¨k ϕ ψ θ ϕ˙ ψ˙ θ˙ ϕ¨ ψ¨ θ¨ ]T

and the measurements (output) is

pk=[xk yk zk ϕ ψ θ ]T

All the model on that page is really doing is saying:

xkTRUE=n=0kx˙nTRUEnΔt+12n=0kx¨nTRUE(nΔt)2
(but for each of x,y, and z).

This is just the classic "equations of motion". See equation (3) here.


My low pass filtered estimates were:
pk=αpk1+(α1)pk
Stéphane Péchard

@StéphanePéchard: Oops! Yes, I missed that you usually want a unit-gain-at-dc. Even so, the group delay will still be very large for α close to one, which is probably what was not satisfactory with that approach.
Peter K.

I try to apply the article you linked me to. When a At matrix contains derivative time values like
Δt;12(Δ2)
, do I need to compute them myself at each time I update the Kalman measurements?
Stéphane Péchard

@StéphanePéchard: These are not "derivative time values". The Δt is just 1/fs, the time between sample instants.
Peter K.

1
You need to know what your sampling rate (fs) is, and then the Δt will just be the inverse of that. Unless your sampling rate changes you only need to "compute" Δt nd 12Δt2 once as they are constant (provided the sampling rate is constant).
Peter K.

0

Your low pass filter may be like;

pk=αpk1+(1α)zk

where zk is kth observed data. pk is kth estimated value.

The LPF can be deformed to next:

pk=pk1+K(zkpk1)
where K=(1α).

This is quite similar to Kalman filter. In Kalman filter, K is Kalman gain and generally variable.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.