Memperkirakan kecepatan dari posisi yang diketahui dan akselerasi

8

Saya terjebak pada pemodelan model sistem, yaitu mendapatkan vektor keadaan saya dan vektor input. Dugaan saya adalah bahwa posisi dan kecepatan adalah vektor keadaan dan akselerasi adalah vektor masukan. Dugaan saya yang kedua adalah bahwa ketiga kuantitas berada dalam vektor keadaan dan tidak ada dalam vektor input.

Jadi ... apa itu vektor negara dan apa vektor input dalam kasus saya?

-

Informasi tambahan:

Saya mendapatkan pengukuran dari sensor posisi dan sensor percepatan. Semuanya terjadi dalam 1D, misalnya pada garis lurus. Saya ingin menggabungkan bacaan ini (dan menghilangkan noise) untuk mendapatkan estimasi kecepatan untuk setiap catatan waktu.

Persamaan ini menggambarkan sistem; Saya tidak yakin apakah mereka dimodelkan dengan benar. Jika saya mengerti dengan benar, aman untuk memprediksi bahwa akselerasi adalah konstan (walaupun dalam kenyataannya ia berubah) - karena matriks kovarians proses memperbaiki asumsi ini (benar?). masukkan deskripsi gambar di sini

Saya juga memiliki beberapa data sampel untuk dikerjakan (nilai input tidak disuarakan di sini untuk kesederhanaan):

 time    pos     acc      what I should get as output (velocity)
[0.0s]  0.000, -0.000  | 18.850
[0.1s]  1.885, -0.113  | 18.850
[0.2s]  3.768, -0.227  | 18.839
[0.3s]  5.650, -0.340  | 18.816
[0.4s]  7.528, -0.452  | 18.782
[0.5s]  9.401, -0.565  | 18.737

TAMBAHAN 2:

Untuk komunikasi yang lebih baik saya membuat jawaban baru tetapi harus diperlakukan sebagai komentar untuk jawaban pertama. Jason Anda sudah banyak membantu saya dan saya benar-benar berterima kasih atas waktu Anda. Saya masih memiliki masalah dengan ini - hasil dari Kalman Filter tidak seperti yang diharapkan. Semoga Anda menemukan waktu, silakan tinjau yang berikut, terima kasih. Saya sudah berhutang bir atau dua (atau kopi jika Anda suka) - jika Anda memiliki paypal hubungi saya di primoz [at] codehunter.eu :)


Saya telah menerapkan model yang diusulkan Jason dalam jawaban pertama. Saya menambahkan brengsek sebagai variabel 4 negara. Setelah berjam-jam meninjau saya memutuskan untuk kembali ke sini untuk meminta bantuan. Nilai yang saya dapatkan dari KF tidak seperti yang diharapkan. Tabel di bawah ini merupakan data dari 10 iterasi pertama algoritma. Perhatikan bagaimana brengsek meningkat setiap langkah waktu sehingga membuat perkiraan lain salah. Setelah satu detik perbedaan antara akselerasi nyata dan perkiraan lebih dari 1m / s² (lihat tabel, baris terakhir)!

           real           measured                   estimated                    real 
time   pos     acc       pos    acc        pos      acc    jerk    vel[!]       velocity 
0.0   0.000  -0.000    -0.040  0.030  |  -0.300   -0.060   0.000   18.850  <-->  18.850
0.1   1.885  -0.113     1.965 -0.153  |   1.585   -0.061  -0.006   18.844  <-->  18.844
0.2   3.768  -0.227     3.778 -0.247  |   3.469   -0.066  -0.035   18.835  <-->  18.827
0.3   5.650  -0.340     5.750 -0.370  |   5.351   -0.090  -0.122   18.815  <-->  18.799
0.4   7.528  -0.452     7.358 -0.452  |   7.228   -0.152  -0.291   18.769  <-->  18.759
0.5   9.401  -0.565     9.251 -0.555  |   9.094   -0.282  -0.574   18.673  <-->  18.708
0.6   11.269 -0.677    11.309 -0.717  |   10.938  -0.518  -1.006   18.494  <-->  18.646
0.7   13.130 -0.788    13.260 -0.758  |   12.752  -0.840  -1.490   18.233  <-->  18.573
0.8   14.983 -0.899    15.043 -0.949  |   14.520  -1.286  -2.096   17.854  <-->  18.488
0.9   16.827 -1.009    16.977 -1.089  |   16.235  -1.838  -2.770   17.362  <-->  18.393
1.0   18.661 -1.118    18.831 -1.168  |   17.890  -2.477  -3.476   16.762  <-->  18.287

Matriks saya ada di sini:

Apa yang menyebabkan penambahan ini di setiap catatan waktu untuk brengsek ? Apakah ada matrik saya yang salah?

Hal yang sama berlaku dengan solusi pertama (hanya model 3 negara) - akselerasi tidak berubah sebagaimana mestinya.

EDIT TERAKHIR:

Saya akhirnya berhasil membuatnya bekerja. Saya tidak yakin apakah ada kesalahan implementasi atau matriks P&Q yang salah.

Primož Kralj
sumber
1
Untuk mendapatkan jawaban yang bermanfaat, Anda perlu memberikan informasi lebih lanjut. Jelaskan sistemnya. Tunjukkan kepada kami persamaan apa yang telah Anda kumpulkan.
Jim Clay
Terima kasih atas tanggapan Anda. Saya telah memberikan informasi tambahan.
Primož Kralj
Tolong seseorang bantu saya dengan ini - saya merasa seperti kehilangan akal.
Primož Kralj
Saya tidak melihat masalah yang jelas. Kemungkinan Anda memiliki kesalahan implementasi.
Jason R
1
@Phonon, tidak ada perasaan keras. Saya merasa seperti berada di rollercoaster :)
Primož Kralj

Jawaban:

10

Anda tidak akan membuat asumsi percepatan konstan dalam kasus ini. Anda biasanya akan melakukan itu jika Anda tidak memiliki alat untuk mengukur percepatan sistem, tetapi Anda mengatakan bahwa itu dapat diamati untuk kasus Anda. Cara paling jelas untuk memodelkan sistem ini adalah menggunakan vektor keadaan

xk=[xkx˙kx¨k]=[xkvkak]

di mana adalah posisi, adalah kecepatan, dan adalah percepatan sistem pada saat instan . Karena Anda mengatakan bahwa Anda dapat mengukur posisi dan percepatan sistem, vektor pengukuran adalah:xkvkakkzk

zk=Hxk+vk

dengan

H=[100001]

menghasilkan model pengukuran:

zk=[xkak]+vk

di mana adalah noise (Gaussian) yang melekat pada pengukuran. Sekarang, kecuali jika Anda menambahkan kekuatan yang diketahui ke sistem yang akan mempengaruhi dinamikanya, maka vektor input . Lihat pertanyaan terbaru ini untuk diskusi lebih rinci tentang berbagai istilah dalam model Kalman, yang perlu Anda ketahui, dan yang tidak Anda ketahui .vkuk=0

Sunting: Mengenai komentar di bawah ini tentang cara menangani matriks transisi keadaan untuk istilah akselerasi: ada beberapa cara berbeda untuk mengatasinya. Anda dapat mengasumsikan model zero-brengsek (brengsek adalah turunan waktu dari percepatan); ini sama dengan mengasumsikan bahwa . Atau, Anda bisa menambahkan elemen keempat ke vektor negara Anda:ak+1=ak

xk=[xkx˙kx¨kxk]=[xkvkakjk]

di mana adalah brengsek sistem, atau laju perubahan waktu percepatan, pada saat instan . Karena Anda tidak mengukur brengsek secara langsung, Anda akan memiliki matriks pengukuran:jkk

H=[10000010]

Dan matriks transisi negara akan menjadi:

F=[1dt12dt216dt301dt12dt2001dt0001]

Ini adalah model "konstan-brengsek" (mirip dengan model kecepatan-konstan atau percepatan konstan yang mungkin Anda lihat dalam contoh sederhana); matriks transisi keadaan Anda membuat asumsi implisit bahwa brengsek itu konstan untuk semua nilai k. Ini tidak mungkin benar. Untuk menangani aspek masalah itu, Anda akan memperkenalkan istilah gangguan proses dalam komponen brengsek dari persamaan transisi keadaan.

Secara kualitatif, ini memungkinkan Anda untuk menyatakan bahwa Anda tidak yakin bagaimana istilah brengsek akan berubah dari langkah waktu ke langkah waktu, tetapi Anda mengharapkan perubahan itu acak dengan beberapa distribusi Gaussian. Ini adalah alat yang sering digunakan untuk "menyetel" model filter adaptif seperti ini hingga Anda menemukan serangkaian parameter yang berfungsi dengan baik untuk aplikasi Anda.

Jason R
sumber
Terima kasih, kamu benar-benar menyalakan lampu di kepalaku. Tetapi saya masih belum memahami apa yang diharapkan oleh akselerasi saya pada langkah berikutnya (jika tidak konstan) - ini penting untuk membangun matriks transisi A, baris terakhir yang lebih tepat. Apa yang kamu sarankan?
Primož Kralj
Ada banyak masalah dengan pertanyaan migrasi. Sebagian dari jawaban Anda hilang. Saya harap mod memperbaiki ini. Juga, lihat Penambahan 2 di pertanyaan awal saya.
Primož Kralj
2
Saya dapat memulihkan teks yang diedit dan menerapkannya kembali ke jawaban saya.
Jason R
Bisakah Anda menjelaskan cara mendapatkan proses kovarians untuk solusi pertama (3 variabel keadaan)? Saya tidak dapat menemukan tautan online yang layak yang akan menjelaskannya secara menyeluruh dalam praktiknya.
Primož Kralj
4

Saya berasumsi bahwa variabel keadaan Anda sesuai jawaban Jason. Jika itu yang terjadi, maka saya percaya masalah Anda mungkin adalah matriks (proses noise): karena nol di mana-mana kecuali untuk pembaruan brengsek, satu-satunya istilah yang memperbarui nilai posisi, kecepatan, dan percepatan adalah bagian deterministik dari perbarui persamaan (kecuali di mana sifat stokastik brengsek melalui).Q

Coba gunakan matriks seperti:Q

Q=[0.0000100000.0000100000.0000100000.001]

Jika elemen diagonal itu nol, model mengatakan "Saya tidak berharap posisi, kecepatan atau percepatan berubah (selain oleh persamaan pembaruan)" --- yang jelas bukan itu masalahnya.

Peter K.
sumber
Penjelasan yang bagus - tetapi mengapa memilih 0,001, mengapa tidak 2,84 misalnya?
Primož Kralj
Terima kasih! Alasan untuk memilih 0,00001 lebih dari 2,84: Ya, 2,84 SANGAT besar untuk varian. Saya berasumsi bahwa Anda memiliki alasan yang valid di balik angka brengsek (0,001), dan bahwa angka-angka lainnya harus secara signifikan lebih kecil dari ini. Jika tidak ada alasan nyata untuk memilih nomor brengsek, coba nilai yang sama di semua elemen diagonal.
Peter K.
Tetapi apa artinya ini dalam praktik? Jika saya katakan sensor posisi saya memiliki varian 0,00001 (elemen diag pertama dalam matriks Q) apakah itu berarti kesalahannya adalah + - 0,00001 meter misalnya (saya rasa tidak)? Saya kira Anda memilih varians yang lebih kecil untuk sensor yang lebih presisi (posisi) dan varians yang lebih besar untuk sensor dengan kurang presisi (akselerasi).
Primož Kralj
3
Jika Anda mengatakan bahwa varian pengukuran adalah , maka dalam kerangka filter Kalman, Anda mengatakan bahwa itu adalah Gaussian yang didistribusikan dengan standar deviasi . Jadi, ~ 68% dari waktu, besarnya kesalahan pengukuran akan kurang dari , ~ 95% dari waktu, itu akan kurang dari , dan seterusnya. 0.000010.000010.0000120.00001
Jason R
Terima kasih keduanya, saya harap utas ini akan membantu pengunjung di masa mendatang juga.
Primož Kralj
1

Saya pikir masalahnya ada di Q. Q sedang mengisi daya K dengan nilainya. Saya mencapai hasil yang baik ketika Q dimuat dengan kekuatan delta_t.

Lihat artikel tentang model wiener. Ini memiliki matriks Q yang baik.

A00 harus kelipatan dari kekuatan delta_t dari 5 A11 kekuatan delta_t dari 3 kekuatan delta_t A22 dari 1 A01 kelipatan dari kekuatan delta_t dari 4

Dan seterusnya

Melihat

https://www.google.com/url?sa=t&source=web&rct=j&url=https://pdfs.semanticscholar.org/9c1b/db6b5a25c1231e775c654f731e1ca1fef31a.pdf&ved=2ahbel_AkekUdArAAAAAAAAAAA

Jm Rams
sumber