
Ada banyak artikel berbeda tentang filter Kalman, tetapi sulit untuk menemukan artikel yang berisi penjelasan, dari mana semua formula filter berasal. Saya pikir bahwa tanpa pemahaman bahwa ilmu ini menjadi sepenuhnya tidak dapat dimengerti. Pada artikel ini saya akan mencoba menjelaskan semuanya dengan cara yang sederhana.
Filter Kalman adalah alat yang sangat kuat untuk menyaring berbagai jenis data. Gagasan utama di balik ini bahwa seseorang harus menggunakan informasi tentang proses fisik. Misalnya, jika Anda memfilter data dari speedometer mobil maka inersianya memberi Anda hak untuk memperlakukan penyimpangan kecepatan besar sebagai kesalahan pengukuran. Filter Kalman juga menarik dengan fakta bahwa dalam beberapa hal itu adalah filter terbaik. Kami akan membahas secara tepat apa artinya. Di akhir artikel saya akan menunjukkan bagaimana mungkin untuk menyederhanakan formula.
Pendahuluan
Pada awalnya, mari kita menghafal beberapa definisi dan fakta dari teori probabilitas.
Variabel acak
Ketika seseorang mengatakan bahwa itu diberikan variabel acak
xi , itu berarti dapat mengambil nilai acak. Nilai berbeda datang dengan probabilitas berbeda. Misalnya, jika seseorang menjatuhkan dadu maka himpunan nilai diskrit
\ {1,2,3,4,5,6 \}\ {1,2,3,4,5,6 \} . Ketika Anda berurusan dengan kecepatan partikel yang bergerak maka jelas Anda harus bekerja dengan seperangkat nilai yang berkelanjutan. Nilai yang keluar setelah setiap percobaan (pengukuran) akan ditunjukkan oleh
x1,x2,... , tapi terkadang kita akan menggunakan huruf yang sama seperti yang kita gunakan untuk variabel acak
xi . Dalam kasus set nilai kontinu, variabel acak ditandai oleh fungsi kerapatan probabilitasnya
rho(x) . Fungsi ini menunjukkan probabilitas bahwa variabel acak jatuh ke lingkungan kecil
dx intinya
x . Seperti yang bisa kita lihat pada gambar, probabilitas ini sama dengan luas persegi panjang yang ditetaskan di bawah grafik
rho(x)dx .

Cukup sering dalam hidup kita, variabel acak memiliki Distribusi Gauss, ketika kepadatan probabilitasnya
rho(x) sime− frac(x− mu)22 sigma2 .

Kita bisa melihat fungsinya yang berbentuk lonceng
rho(x) berpusat pada titik
mu dan lebar karakteristiknya adalah sekitar
sigma .
Karena kita berbicara tentang Distribusi Gaussian, maka akan menjadi dosa untuk tidak menyebutkan dari mana asalnya. Serta nomornya
e dan
pi secara kuat ditembus dalam matematika dan dapat ditemukan di tempat-tempat yang paling tidak terduga, sehingga Distribusi Gaussian memiliki akar yang kuat dalam teori probabilitas. Pernyataan luar biasa berikut sebagian menjelaskan kehadiran Distribusi Gauss dalam banyak proses:
Biarkan variabel acak
xi memiliki distribusi sewenang-wenang (sebenarnya ada beberapa pembatasan kesewenang-wenangan, tetapi mereka tidak membatasi sama sekali). Ayo tampil
n percobaan dan hitung jumlah
xi1+...+ xin , dari nilai yang jatuh. Mari kita lakukan banyak percobaan. Jelas bahwa setiap kali kita akan mendapatkan nilai penjumlahan yang berbeda. Dengan kata lain, jumlah ini adalah variabel acak dengan hukum distribusinya sendiri. Ternyata itu cukup besar
n , hukum distribusi jumlah ini cenderung ke Distribusi Gaussian (omong-omong, lebar karakteristik bel tumbuh seperti
sqrtn . Baca lebih lanjut di Wikipedia:
teorema limit pusat . Dalam kehidupan nyata ada banyak nilai yang merupakan jumlah dari sejumlah besar variabel acak independen dan terdistribusi secara identik. Jadi nilai-nilai ini memiliki Distribusi Gauss.
Nilai yang berarti
Menurut definisi, nilai rata-rata dari variabel acak adalah nilai yang kita dapatkan dalam batas jika kita melakukan lebih banyak eksperimen dan menghitung rata-rata nilai yang jatuh. Nilai rata-rata dilambangkan dengan berbagai cara: matematikawan dilambangkan dengan
E xi (Ekspektasi), fisikawan menyatakannya oleh
overline xi atau
< xi> . Kami akan menyatakannya seperti yang dilakukan para ahli matematika.
Misalnya, nilai rata-rata Distribusi Gaussian
rho(x) sime− frac(x− mu)22 sigma2 sama dengan
mu .
Varians
Untuk distribusi Gaussian, kita melihat dengan jelas bahwa variabel acak cenderung jatuh dalam wilayah tertentu dari nilai rata-rata
mu . Mari kita nikmati distribusi Gaussian sekali lagi:

Pada gambar, orang dapat melihat bahwa lebar karakteristik suatu wilayah di mana nilai sebagian besar jatuh adalah
sigma . Bagaimana kita bisa memperkirakan lebar ini untuk variabel acak acak? Kita dapat menggambar grafik fungsi kerapatan probabilitasnya dan hanya mengevaluasi rentang karakteristik secara visual. Namun akan lebih baik untuk memilih cara aljabar yang tepat untuk evaluasi ini. Kami mungkin menemukan panjang penyimpangan rata-rata dari nilai rata-rata:
E| xi−E xi| . Nilai ini merupakan estimasi yang baik dari penyimpangan karakteristik
xi . Namun kami tahu betul, betapa problematisnya untuk menggunakan nilai absolut dalam rumus, sehingga rumus ini jarang digunakan dalam praktik.
Pendekatan yang lebih sederhana (sederhana dari sudut pandang perhitungan) adalah menghitung
E( xi−E xi)2 .
Nilai ini disebut varians dan dilambangkan dengan
sigma xi2 . Akar kuadrat dari varian adalah estimasi yang baik dari penyimpangan karakteristik variabel acak. Ini disebut standar deviasi.
Sebagai contoh, seseorang dapat menghitungnya untuk distribusi Gaussian
rho(x) sime− frac(x− mu)22 sigma2 varians sama dengan
sigma2 dengan demikian simpangan baku adalah
sigma . Hasil ini benar-benar sesuai dengan intuisi geometris kami. Sebenarnya kecurangan kecil disembunyikan di sini. Sebenarnya dalam definisi distribusi Gauss Anda melihat nomornya
2 dalam penyebut ekspresi
− frac(x− mu)22 sigma2 . Ini
2 berdiri di sana dengan sengaja, untuk deviasi standar
sigma xi sama persis dengan
sigma . Jadi rumus distribusi Gauss ditulis dengan cara, yang perlu diingat bahwa seseorang akan menghitung deviasi standarnya.
Variabel acak independen
Variabel acak dapat saling bergantung atau tidak. Bayangkan Anda melempar jarum ke lantai dan mengukur koordinat kedua ujungnya. Dua koordinat ini adalah variabel acak, tetapi mereka bergantung satu sama lain, karena jarak di antara mereka harus selalu sama dengan panjang jarum. Variabel acak independen satu sama lain jika hasil jatuh yang pertama tidak tergantung pada hasil yang kedua. Untuk dua variabel independen
xi1 dan
xi2 rata-rata produk mereka sama dengan produk rata-rata mereka:
E( xi1 cdot xi2)=E xi1 cdot xi2BuktiMisalnya memiliki mata biru dan menyelesaikan sekolah dengan pujian yang lebih tinggi adalah variabel acak independen. Katakanlah ada
20%=0,2 orang dengan mata biru dan
5%=0,05 orang dengan penghargaan tinggi. Jadi ada
0,2 cdot0,5=0,01=1% orang dengan mata biru dan penghargaan yang lebih tinggi. Contoh ini membantu kita untuk memahami hal-hal berikut. Untuk dua variabel acak independen
xi1 dan
xi2 yang diberikan oleh kepadatan probabilitas mereka
rho1(x) dan
rho2(y) , kepadatan probabilitas
rho(x,y) (variabel pertama jatuh pada
x dan yang kedua di
y ) dapat dengan menemukan dengan rumus
rho(x,y)= rho1(x) cdot rho2(y)
Itu artinya
beginarrayl displaystyleE( xi1 cdot xi2)= intxy rho(x,y)dxdy= intxy rho1(x) rho2(y)dxdy= displaystyle intx rho1(x)dx inty rho2(y)dy=E xi1 cdotE xi2 endarray
Seperti yang Anda lihat, buktinya dilakukan untuk variabel acak yang memiliki spektrum nilai kontinu dan diberikan oleh kepadatan fungsi probabilitasnya. Buktinya mirip untuk kasus umum.
Filter kalman
Pernyataan problemm
Biarkan dilambangkan dengan
xk nilai yang ingin kami ukur dan kemudian filter. Dapat berupa koordinat, kecepatan, akselerasi, kelembaban, suhu, tekanan, dll
Mari kita mulai dengan contoh sederhana, yang akan membawa kita pada perumusan masalah umum. Bayangkan Anda memiliki mobil mainan radio control yang hanya bisa berjalan maju dan mundur. Mengetahui massa, bentuk, dan parameter lain dari sistem kami telah menghitung bagaimana cara joystick pengontrol bekerja pada kecepatan mobil
vk .

Koordinat mobil akan dengan rumus berikut
xk+1=xk+vkdt
Dalam kehidupan nyata kita tidak bisa, kita tidak dapat memiliki formula yang tepat untuk koordinat karena beberapa gangguan kecil yang bekerja pada mobil seperti angin, benjolan, batu di jalan, sehingga kecepatan sebenarnya dari mobil akan berbeda dari yang dihitung . Jadi kami menambahkan variabel acak
xik di sebelah kanan persamaan terakhir:
xk+1=xk+vkdt+ xik
Kami juga memiliki sensor GPS pada mobil yang mencoba mengukur koordinat mobil
xk . Tentu saja ada kesalahan dalam pengukuran ini, yang merupakan variabel acak
etak . Jadi dari sensor kita akan mendapatkan data yang salah:
zk=xk+ etak
Tujuan kami adalah menemukan estimasi yang baik untuk koordinat yang benar
xk , mengetahui data sensor yang salah
zk . Estimasi bagus ini akan kami tunjukkan dengan
xopt .
Secara umum koordinat
xk dapat mewakili nilai apa pun (suhu, kelembaban, ...) dan bagian pengontrol yang akan kami tunjukkan
uk (dalam contoh dengan mobil
uk=vk cdotdt ) Persamaan untuk koordinat dan pengukuran sensor adalah sebagai berikut:

(1)
Mari kita bahas, apa yang kita ketahui dalam persamaan ini.
- uk adalah nilai yang diketahui yang mengendalikan evolusi sistem. Kami tahu dari model sistem.
- Variabel acak xi mewakili kesalahan dalam model sistem dan variabel acak eta adalah kesalahan sensor. Hukum distribusinya tidak tergantung pada waktu (pada indeks iterasi k )
- Sarana kesalahan sama dengan nol: E etak=E xik=0 .
- Kita mungkin tidak tahu hukum distribusi dari variabel acak, tetapi kita tahu variansnya sigma xi dan sigma eta . Perhatikan bahwa varians tidak bergantung pada waktu (pada k ) karena hukum distribusi yang sesuai tidak.
- Kami menganggap bahwa semua kesalahan acak tidak saling bergantung: kesalahan pada saat itu k tidak tergantung pada kesalahan pada saat itu k$ .
Perhatikan bahwa masalah penyaringan bukan masalah perataan. Tujuan kami bukan untuk memuluskan data sensor, kami hanya ingin mendapatkan nilai yang sedekat mungkin dengan koordinat nyata
xk .
Algoritma Kalman
Kami akan menggunakan induksi. Bayangkan itu pada langkah
k kami telah menemukan nilai sensor yang difilter
xopt , yang merupakan estimasi yang baik dari koordinat sebenarnya
xk . Ingatlah bahwa kita tahu persamaan yang mengontrol koordinat nyata:
xk+1=xk+uk+ xik
Oleh karena itu sebelum mendapatkan nilai sensor kita mungkin menyatakan bahwa itu akan menunjukkan nilai yang dekat
xopt+uk . Sayangnya sejauh ini kami tidak bisa mengatakan sesuatu yang lebih tepat. Tetapi pada langkah
k+1 kami akan memiliki pembacaan yang tidak tepat dari sensor
zk+1 .
Gagasan Kalman adalah sebagai berikut. Untuk mendapatkan estimasi terbaik dari koordinat nyata
xk+1 kita harus mendapatkan pertengahan emas antara pembacaan sensor yang tidak tepat
zk+1 dan
xopt+uk - prediksi kami, apa yang kami harapkan untuk dilihat pada sensor. Kami akan memberi bobot
K ke nilai sensor dan
(1−K) ke nilai prediksi:
xoptk+1=K cdotzk+1+(1−K) cdot(xoptk+uk)
Koefisien
K disebut koefisien Kalman. Itu tergantung pada indeks iterasi, dan sebenarnya kita harus menulis
Kk+1 . Tetapi untuk menjaga formula dalam bentuk yang bagus kami akan menghilangkan indeks
K .
Kita harus memilih koefisien Kalman dengan cara yang diperkirakan berkoordinasi
xoptk+1 akan sedekat mungkin dengan koordinat nyata
xk+1 .
Sebagai contoh, jika kita tahu bahwa sensor kita sangat sangat presisi maka kita akan mempercayai pembacaannya dan memberinya bobot yang besar (
K dekat dengan satu). Jika sensor sebaliknya tidak tepat sama sekali, maka kita akan mengandalkan nilai prediksi teoritis kita
xoptk+uk .
Secara umum, kami harus meminimalkan kesalahan estimasi kami:
ek+1=xk+1−xoptk+1
Kami menggunakan persamaan (1) (yang ada di bingkai biru), untuk menulis ulang persamaan untuk kesalahan:
ek+1=(1−K)(ek+ xik)−K etak+1
Bukti beginarraylek+1=xk+1−xoptk+1=xk+1−Kzk+1−(1−K)(xoptk+uk)==xk+uk+ xik−K(xk+uk+ xik+ etak+1)−(1−K)(xoptk+uk)==(1−K)(xk−xoptk+ xik)−K etak+1=(1−K)(ek+ xik)−K etak+1 endarray
Sekarang tiba saatnya untuk berdiskusi, apa artinya ungkapan “untuk meminimalkan kesalahan”? Kita tahu bahwa kesalahan adalah variabel acak sehingga setiap kali mengambil nilai yang berbeda. Sebenarnya tidak ada jawaban unik untuk pertanyaan itu. Demikian pula halnya dengan varians dari variabel acak, ketika kami mencoba memperkirakan lebar karakteristik dari fungsi kerapatan probabilitasnya. Jadi kami akan memilih kriteria sederhana. Kami akan meminimalkan rata-rata alun-alun:
E(e2k+1) rightarrowmin
Mari kita tulis ulang ungkapan terakhir:
E(e2k+1)=(1−K)2(E2k+ sigma2 xi)+K2 sigma2 eta
Kunci pembuktianDari fakta bahwa semua variabel acak dalam persamaan untuk
ek+1 tidak bergantung satu sama lain dan nilai rata-rata
E etak+1=E xik=0 , mengikuti bahwa semua persyaratan lintas dalam
E(e2k+1) menjadi nol:
E( xik etak+1)=E(ek xik)=E(ek etak+1)=0.
Memang misalnya
E(ek xik)=E(ek)E( xik)=0.Perhatikan juga bahwa rumus untuk varian tampak lebih sederhana:
sigma2 eta=E eta2k dan
sigma2 eta=E eta2k+1 (sejak
E etak+1=E xik=0 )
Ekspresi terakhir mengambil nilai minimalnya, ketika turunannya nol. Jadi kapan:
displaystyleKk+1= fracEe2k+ sigma2 xiEe2k+ sigma2 xi+ sigma2 eta
Di sini kita menulis koefisien Kalman dengan subskripnya, jadi kami menekankan fakta bahwa itu tergantung pada langkah iterasi. Kami mengganti dengan persamaan untuk mean square error
E(e2k+1) koefisien Kalman
Kk+1 yang meminimalkan nilainya:
displaystyleE(e2k+1)= frac sigma2 eta(Ee2k+ sigma2 xi)Ee2k+ sigma2 xi+ sigma2 eta
Jadi kami telah memecahkan masalah kami. Kami mendapat formula berulang untuk menghitung koefisien Kalman.
Semua rumus di satu tempat Contoh
Pada plot dari awal artikel ini ada datum yang disaring dari sensor GPS fiksi, menetap di mobil fiksi, yang bergerak dengan akselerasi konstan
a .
xt+1=xt+di cdotdt+ xit
Lihatlah hasil yang difilter sekali lagi: Analisis
Jika dilihat bagaimana koefisien Kalman
Kk perubahan dari iterasi
k , adalah mungkin untuk melihat bahwa itu stabil ke nilai tertentu
Kstab . Misalnya jika kuadrat berarti kesalahan sensor dan model saling menghormati satu sama lain sebagai sepuluh banding satu, maka plot ketergantungan koefisien Kalman dari langkah iterasi adalah sebagai berikut:

Dalam contoh berikut kita akan membahas bagaimana hal itu dapat menyederhanakan hidup kita.
Contoh kedua
Dalam praktiknya, kita hampir tidak tahu apa-apa dari model fisik apa yang kita filter. Bayangkan Anda telah memutuskan untuk memfilter pengukuran itu dari accelerometer favorit Anda. Sebenarnya Anda tidak tahu ke depan bagaimana accelerometer akan dipindahkan. Satu-satunya hal yang mungkin Anda ketahui adalah varians kesalahan sensor
sigma2 eta . Dalam masalah yang sulit ini kita mungkin meletakkan semua informasi yang tidak diketahui dari model fisik ke variabel acak
xik :
xk+1=xk+ xik
Sebenarnya sistem semacam ini tidak memuaskan kondisi yang telah kami berikan pada variabel acak
xik . Karena ia menyimpan informasi yang tidak diketahui bagi kita fisika gerakan. Kita tidak dapat mengatakan bahwa itu adalah momen yang berbeda saat kesalahan independen satu sama lain dan artinya sama dengan nol. Dengan kata lain, ini berarti bahwa untuk situasi seperti ini teori Kalman tidak diterapkan. Tetapi bagaimanapun kita dapat mencoba menggunakan mesin teori Kalman hanya dengan memilih beberapa nilai yang masuk akal
sigma xi2 dan
sigma eta2 untuk mendapatkan grafik yang bagus dari datum yang difilter.
Tetapi ada cara yang lebih sederhana. Kami melihat itu dengan meningkatnya langkah
k Koefisien Kalman selalu stabil ke nilai tertentu
Kstab . Jadi alih-alih menebak nilai koefisien
sigma2 xi dan
sigma2 eta dan menghitung koefisien Kalman
Kk dengan rumus-rumus yang sulit, kita dapat mengasumsikan bahwa koefisien ini konstan dan hanya memilih konstanta ini. Asumsi ini tidak akan banyak berpengaruh pada hasil penyaringan. Pada mulanya kita toh mesin-mesin Kalman tidak bisa diterapkan pada masalah kita dan kedua, koefisien Kalman dengan cepat stabil ke konstan. Pada akhirnya semuanya menjadi sangat sederhana. Kita tidak memerlukan hampir semua formula dari teori Kalman, kita hanya perlu memilih nilai yang masuk akal
Kstab dan masukkan ke formula berulang
xoptk+1=Kstab cdotzk+1+(1−Kstab) cdotxoptk
Pada grafik berikutnya Anda dapat melihat filter dengan dua cara pengukuran yang berbeda dari sensor imajiner. Metode pertama adalah yang jujur, dengan semua formula dari teori Kalman. Metode kedua adalah yang disederhanakan.

Kami melihat bahwa tidak ada perbedaan besar antara dua metode ini. Ada variasi kecil di awal, ketika koefisien Kalman masih belum stabil.
Diskusi
Kita telah melihat bahwa ide utama filter Kalman adalah memilih koefisien
K dengan cara nilai yang disaring
xoptk+1=Kzk+1+(1−K)(xoptk+uk)
rata-rata sedekat mungkin dengan koordinat sebenarnya
xk+1 . Kami melihat bahwa nilai yang difilter
xoptk+1 adalah fungsi linear dari pengukuran sensor
zk+1 dan nilai yang difilter sebelumnya
xoptk . Namun nilai yang disaring sebelumnya
xoptk itu sendiri adalah fungsi linear dari pengukuran sensor
zk dan nilai filter sebelumnya
xoptk−1 . Demikian seterusnya hingga akhir rantai. Jadi nilai yang difilter secara linear tergantung pada semua bacaan sensor sebelumnya:
xoptk+1= lambda+ lambda0z0+ ldots+ lambdak+1zk+1
Itulah alasan mengapa filter Kalman disebut filter linear. Dimungkinkan untuk membuktikan bahwa filter Kalman adalah yang terbaik dari semua filter linier. Yang terbaik dalam arti meminimalkan rata-rata kuadrat dari kesalahan.
Kasus multidimensi
Dimungkinkan untuk menggeneralisasi semua teori Kalman ke kasus multidimensi. Rumus di sana terlihat sedikit lebih rumit tetapi gagasan untuk menurunkannya masih tetap sama seperti dalam satu dimensi. Misalnya, Dalam
video yang bagus ini Anda dapat melihat contohnya.
Sastra
Artikel asli yang ditulis oleh Kalman dapat Anda unduh di sini:
http://www.cs.unc.edu/~welch/kalman/media/pdf/Kalman1960.pdf