Apakah filter Kalman cocok untuk menyaring posisi titik yang diproyeksikan, mengingat sudut Euler dari perangkat penangkap?

17

Sistem saya adalah sebagai berikut. Saya menggunakan kamera perangkat seluler untuk melacak objek. Dari pelacakan ini, saya mendapatkan empat poin 3D yang saya proyeksikan di layar, untuk mendapatkan empat poin 2D. 8 nilai ini agak berisik, karena deteksi, jadi saya ingin menyaringnya untuk membuat gerakan lebih halus dan lebih realistis. Sebagai pengukuran kedua, saya menggunakan output giroskop perangkat, yang memberikan tiga sudut Euler (yaitu sikap perangkat). Itu lebih tepat dan pada frekuensi yang lebih besar (hingga 100 Hz) daripada posisi 2D (sekitar 20 Hz).

Upaya pertama saya adalah dengan filter low-pass sederhana, tetapi lag itu penting, jadi saya sekarang mencoba menggunakan filter Kalman, berharap itu akan dapat menghaluskan posisi dengan sedikit penundaan. Seperti yang terlihat dalam pertanyaan sebelumnya , satu titik kunci dalam filter Kalman adalah hubungan antara pengukuran dan variabel status internal. Di sini pengukurannya adalah 8 titik koordinat titik 2D dan 3 sudut Euler saya, tetapi saya tidak yakin tentang apa yang harus saya gunakan sebagai variabel keadaan internal dan bagaimana saya harus menghubungkan sudut Euler ke titik 2D. Karenanya pertanyaan utama, apakah filter Kalman bahkan cocok untuk masalah ini? Dan jika ya, bagaimana?

Stéphane Péchard
sumber
Jika seluruh tujuannya adalah untuk menghaluskan nilai dengan penundaan minimum, Anda dapat mencoba menggunakan filter fase minimum jika Anda belum mencoba. Saya akan terkejut jika pemfilteran kalman dapat memberi Anda lebih baik daripada 'fase minimum penundaan'. Untuk filter linier, saya berharap filter fase-minimum memberikan penundaan sekecil mungkin.
niaren
@niaren: Terima kasih atas komentarnya, saya akan mempelajari ini juga.
Stéphane Péchard
1
Tidak jelas apa pengukuran Anda. Dalam kerangka filter Kalman, "pengukuran" merujuk pada jumlah yang benar-benar Anda amati. Jika Anda mengukur empat titik 3D (misalnya dengan menggabungkan beberapa gambar kamera bersamaan), maka itu adalah pengukuran Anda. Anda juga perlu memutuskan variabel keadaan apa yang ingin Anda perkirakan. Apakah Anda mencoba melacak lokasi objek 3D dari waktu ke waktu? Jika demikian, itu adalah variabel keadaan Anda. Mungkin pantas bahwa representasi 2D dapat digunakan hanya untuk tampilan dan tidak dimasukkan sebagai bagian dari model Anda. Rincian tambahan akan membantu menyarankan suatu pendekatan.
Jason R
Seperti yang dikatakan Jsaon, pengukuran Anda tidak jelas. Anda mengatakan: 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 noisydan kemudian Anda berkata What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).. Yang mana itu? Empat poin 2D, atau tiga sudut Euler? Atau apakah kereta pemrosesan menuju sudut Euler -> titik 3D -> titik 2D?
Peter K.
Saya memiliki dua set pengukuran sebenarnya: posisi titik yang terdeteksi dari kamera, dan sudut Euler, tetapi tidak sepele untuk dihubungkan. Ditambah lagi, saya hanya tertarik pada posisi yang difilter sebagai output. Saya akan mengedit pertanyaan untuk menjelaskan.
Stéphane Péchard

Jawaban:

4

Penyaringan Low Pass

Akan lebih baik untuk mengetahui apa yang Anda maksud dengan "filter low pass sederhana".

Misalnya, jika pengukuran Anda tepat waktu adalahk

pk=[xkyk]

dan perkiraan filter low pass Anda adalah:

pkLPF=αpk1LPF+(1α)pk

maka Anda akan memiliki penundaan grup yang cukup besar di filter sekitar (untuk alpha mendekati 1). 1/(1α)

Memodelkan Sinyal: Pendekatan Sederhana

Untuk menggunakan filter Kalman (atau pendekatan serupa lainnya), Anda perlu memiliki model untuk bagaimana pengukuran Anda diperoleh dan diperbarui.

Biasanya ini terlihat seperti:

mana ϵ k adalah noise proses (mengemudi), A adalah matriks transisi keadaan, dan B adalah matriks input Anda.

pk+1TRUE=ApkTRUE+Bϵk
ϵkAB

Dan kemudian yang diukur adalah: p k = C p T R U E k + D ν k di mana ν k adalah keluaran (pengukuran) kebisingan, C adalah matriks keluaran, dan Dpk

pk=CpkTRUE+Dνk
νkCD adalah matriks noise pengukuran Anda.

Di sini, "keadaan" model dipilih sebagai posisi sebenarnya, dan hal-hal yang Anda ukur adalah output.

Anda kemudian dapat menerapkan persamaan filter Kalman untuk mendapatkan estimasi keadaan dari posisi sebenarnya.pkTRUE^

Namun, pendekatan ini sederhana karena tidak menggunakan pengetahuan tentang bagaimana poin mungkin bergerak (juga tidak menggunakan 4 poin Anda dan pengetahuan apa pun yang Anda miliki tentang bagaimana mereka bergerak bersama).

Memodelkan Sinyal: Memulai Pendekatan yang Lebih Baik

Halaman ini menunjukkan cara mengatur masalah yang melibatkan posisi dan sudut euler. Ini melakukan sesuatu yang berbeda dari yang Anda butuhkan, tetapi negara bagiannya adalah:

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

dan pengukuran (output) adalah

halk=[xk yk zk ϕ ψ θ ]T

xkTRUE=n=0kx˙nTRUEnΔt+12n=0kx¨nTRUE(nΔt)2
x,y,z

Ini hanya "persamaan gerak" klasik. Lihat persamaan (3) di sini.

Peter K.
sumber
halk=αhalk-1+(α-1)halk
α
Δt;12(Δ2)
Δt1/fs
1
fsΔtΔt12Δt2
0

Filter low pass Anda mungkin seperti;

halk=αhalk-1+(1-α)zk

zkkhalkk nilai estimasi th.

LPF dapat dideformasi menjadi berikut:

halk=halk-1+K(zk-halk-1)
K=(1-α) .

K

fumio ueda
sumber