Belajar Kalman Filter dari Dasar
(kalmanfilter.net)- Kalman Filter adalah algoritma untuk memperkirakan keadaan saat ini dan memprediksi masa depan pada sistem yang memiliki noise pengukuran dan faktor eksternal yang tidak diketahui; digunakan di bidang seperti pelacakan, navigasi, robotika, dan kontrol
- Contoh radar 1 dimensi mengukur jarak (r) dan kecepatan (v) pesawat, serta menangani keadaan dan ketidakpastian bersama-sama dengan vektor keadaan (\boldsymbol{x}=[r, v]^T) dan matriks kovarians (\boldsymbol{P}, \boldsymbol{R}, \boldsymbol{Q})
- Nilai pengukuran awal adalah jarak 10.000m dan kecepatan 200m/s; dengan interval sampling 5 detik dan model kecepatan konstan, prediksi posisi berikutnya menjadi 11.000m
- Tahap prediksi mempropagasi keadaan dengan matriks transisi keadaan (\boldsymbol{F}), lalu menghitung kovarians dengan (\boldsymbol{F}\boldsymbol{P}\boldsymbol{F}^T+\boldsymbol{Q}) untuk mencerminkan efek ketidakpastian kecepatan dan process noise yang memperbesar ketidakpastian posisi
- Tahap update tidak begitu saja memercayai atau membuang pengukuran baru, tetapi menggabungkan prediksi dan pengukuran secara berbobot dengan Kalman Gain untuk menurunkan ketidakpastian estimasi; setelah itu filter mengulangi prediksi dan update
Masalah yang Ditangani Kalman Filter
- Kalman Filter adalah algoritma yang melakukan estimasi keadaan dan prediksi masa depan pada sistem yang memiliki ketidakpastian
- Menangani situasi ketika ada noise pengukuran atau faktor eksternal yang tidak diketahui memengaruhi sistem
- Digunakan sebagai alat inti di bidang pelacakan objek, navigasi, robotika, dan kontrol
- Dalam estimasi lintasan mouse komputer, ia dapat mengurangi getaran tangan dan noise untuk membuat jalur gerak yang lebih stabil
- Dalam analisis pasar keuangan, digunakan untuk mendeteksi tren harga saham dari data pasar yang bercampur noise; di bidang meteorologi, diterapkan untuk prakiraan cuaca
- Tutorial ini membangun intuisi melalui contoh numerik, alih-alih mendahulukan matematika yang rumit
- Juga mencakup contoh Kalman Filter yang dirancang dengan buruk sehingga tidak dapat melacak objek dengan benar
- Bertujuan agar pembaca memahami konsep dan matematika, lalu mampu merancang serta mengimplementasikannya sendiri
Jalur Pembelajaran
- Jalur pembelajaran yang disediakan dibagi menjadi tiga tahap
- Ikhtisar satu halaman: menjelaskan konsep inti dan persamaan penting tanpa derivasi, dengan asumsi pengetahuan dasar statistik dan aljabar linear
- Tutorial web gratis berbasis contoh: tutorial membangun intuisi dengan contoh numerik dan membahas derivasi persamaan Kalman Filter langkah demi langkah
- Buku: Kalman Filter from the Ground Up mencakup 14 contoh numerik dengan penyelesaian lengkap, grafik dan tabel performa, Extended Kalman Filter dan Unscented Kalman Filter, sensor fusion, serta panduan implementasi
Mengapa Prediksi Diperlukan dalam Pelacakan Radar
- Agar radar dapat melacak pesawat, ia harus berulang kali mengarahkan berkas sempit ke arah target, sehingga perlu memprediksi posisi masa depan saat berkas berikutnya dikirim
- Jika prediksi gagal, berkas dapat mengarah ke arah yang salah dan pelacakan bisa hilang
- Diperlukan model dinamis yang menggambarkan bagaimana pesawat bergerak seiring waktu
- Dalam contoh 1 dimensi yang disederhanakan, hanya gerak lurus pesawat yang mendekati atau menjauhi radar yang dipertimbangkan
- Keadaan didefinisikan sebagai jarak (r) dari radar
- Radar menghitung jarak (r) menggunakan waktu kirim-terima pulsa dan kecepatan cahaya
- Kecepatan (v) juga dapat diukur menggunakan efek Doppler
- Diasumsikan pada (t_0), jarak 10.000m dan kecepatan 200m/s diukur dengan akurasi dan presisi yang sangat tinggi
- Interval sampling adalah (\Delta t=5s)
- Dalam model kecepatan konstan, jarak perpindahan adalah (\Delta r=v\cdot\Delta t)
- Posisi prediksi adalah (10,000+200\cdot5=11,000m)
Noise Pengukuran dan Process Noise
- Pengukuran radar nyata tidak sempurna; beberapa radar yang mengukur pesawat yang sama pada saat yang sama pun menghasilkan nilai yang sedikit berbeda
- Variasi ini terjadi karena noise pengukuran
- Selain nilai estimasi, seberapa dapat dipercayanya estimasi tersebut juga harus dihitung bersama
- Model dinamis juga tidak dapat menjelaskan gerak nyata sepenuhnya
- Walaupun diasumsikan pesawat bergerak dengan kecepatan konstan, faktor eksternal seperti angin dapat mengubah gerak sebenarnya
- Pengaruh yang tidak dapat diprediksi seperti ini ditangani sebagai process noise
- Kalman Filter menyediakan estimasi keadaan saat ini, prediksi keadaan masa depan, dan ketidakpastian masing-masing secara bersamaan
- Diperkenalkan sebagai algoritma optimal yang meminimalkan ketidakpastian estimasi keadaan
Representasi Keadaan dan Inisialisasi pada Contoh Radar
- Keadaan sistem dalam contoh ini adalah vektor yang mencakup jarak (r) dan kecepatan (v) pesawat
[ \boldsymbol{x}=\left[\begin{matrix}r\v\\end{matrix}\right] ]
- Vektor ditulis dengan huruf kecil tebal, sedangkan matriks dengan huruf besar tebal
- Kalman Filter diinisialisasi dengan pengukuran pertama
- Pada (t_0), nilai pengukuran adalah jarak 10.000m dan kecepatan 200m/s
- Vektor pengukuran adalah sebagai berikut
[ \boldsymbol{z}_0=\left[\begin{matrix}10{,}000\200\\end{matrix}\right] ]
- Nilai pengukuran bukan keadaan sistem yang tepat, melainkan variabel acak yang bercampur noise
- Standar deviasi pengukuran jarak adalah (4m)
- Standar deviasi pengukuran kecepatan adalah (0.5m/s)
- Karena varians adalah kuadrat standar deviasi, matriks kovarians pengukuran (\boldsymbol{R}_0) adalah sebagai berikut
[ \boldsymbol{R}_0=\left[\begin{matrix}16&0\0&0.25\\end{matrix}\right] ]
- Dalam contoh ini, error pengukuran jarak dan kecepatan diasumsikan tidak saling berkaitan, sehingga elemen non-diagonal matriks kovarians dibuat 0
- Pada saat inisialisasi, karena hanya ada satu pengukuran, nilai pengukuran dapat digunakan sebagai estimasi keadaan awal
[ \boldsymbol{\hat{x}}_{0,0}=\boldsymbol{z}_0=\left[\begin{matrix}10{,}000\200\\end{matrix}\right] ]
- Cara ini hanya bisa dilakukan pada tahap inisialisasi
Tahap Prediksi: Propagasi Keadaan dan Kovarians
- Untuk memprediksi keadaan berikutnya, digunakan model dinamis kecepatan konstan
[ v_1=v_0=v ]
[ r_1=r_0+v_0\Delta t ]
- Prediksi keadaan dalam bentuk matriks adalah sebagai berikut
[ {\hat{\boldsymbol{x}}}{1,0}=\boldsymbol{F}{\hat{\boldsymbol{x}}}{0,0} ]
- (\boldsymbol{F}) adalah matriks transisi keadaan, dan ketika (\Delta t=5s), hasil prediksinya adalah sebagai berikut
[ {\hat{\boldsymbol{x}}}_{1,0}
\left[\begin{matrix}1&5\0&1\\end{matrix}\right] \left[\begin{matrix}10,000\200\\end{matrix}\right]
\left[\begin{matrix}11,000\200\\end{matrix}\right] ]
- Ekstrapolasi keadaan umum, yaitu persamaan prediksi, adalah sebagai berikut
[ {\hat{\boldsymbol{x}}}{n+1,n}=\boldsymbol{F}{\hat{\boldsymbol{x}}}{n,n}+\boldsymbol{G}\boldsymbol{u}_n ]
- (\boldsymbol{u}_n) adalah variabel input
- (\boldsymbol{G}) adalah matriks transisi input
- Karena tidak ada input dalam contoh ini, (\boldsymbol{u}_n=0)
- Kovarians tidak dihitung hanya dengan (\boldsymbol{F}\boldsymbol{P})
- Sebab kovarians mencakup suku kuadrat dari varians dan kovarians
- Ketika tidak ada process noise, persamaan ekstrapolasi kovarians adalah sebagai berikut
[ \boldsymbol{P}{n+1,n}=\boldsymbol{F}\boldsymbol{P}{n,n}\boldsymbol{F}^T ]
- Jika kovarians awal (\boldsymbol{P}_{0,0}) pada contoh dipropagasi, hasil berikut diperoleh
[ \boldsymbol{P}_{1,0}
\left[\begin{matrix}22.25&1.25\1.25&0.25\\end{matrix}\right] ]
- Varians kecepatan tetap (0.25m^2/s^2)
- Varians jarak meningkat dari (16m^2) menjadi (22.25m^2)
- Ketidakpastian kecepatan seiring waktu berubah menjadi ketidakpastian jarak
Memasukkan Process Noise
- Sulit menjelaskan gerak pesawat nyata sepenuhnya hanya dengan asumsi kecepatan konstan
- Faktor eksternal yang tidak diketahui seperti angin dapat memengaruhi kecepatan
- Pengaruh yang tidak dapat diprediksi seperti ini dinyatakan sebagai process noise (\boldsymbol{Q})
- Persamaan prediksi kovarians yang mencakup process noise adalah sebagai berikut
[ \boldsymbol{P}{n+1,n}=\boldsymbol{F}\boldsymbol{P}{n,n}\boldsymbol{F}^T+\boldsymbol{Q} ]
- Dalam contoh, standar deviasi percepatan acak diasumsikan (\sigma_a=0.2m/s^2)
- Variansnya adalah (\sigma_a^2=0.04m^2/s^4)
- Ketika (\Delta t=5s), matriks process noise adalah sebagai berikut
[ \boldsymbol{Q}
\left[\begin{matrix}6.25&2.5\2.5&1\\end{matrix}\right] ]
- Kovarians prediksi setelah menambahkan process noise adalah sebagai berikut
[ \boldsymbol{P}_{1,0}
\left[\begin{matrix}28.5&3.75\3.75&1.25\\end{matrix}\right] ]
Tahap Update: Menggabungkan Pengukuran dan Prediksi
- Pada (t_1), pengukuran kedua adalah sebagai berikut
[ \boldsymbol{z}_1= \left[\begin{matrix}11{,}020\202\\end{matrix}\right] ]
- Pengukuran ini memiliki rasio signal-to-noise yang lebih rendah dan ketidakpastian lebih besar dibanding pengukuran pertama karena spike noise yang kuat
- Standar deviasi pengukuran jarak adalah (6m)
- Standar deviasi pengukuran kecepatan adalah (1.5m/s)
- Matriks kovarians pengukuran adalah sebagai berikut
[ \boldsymbol{R}_1= \left[\begin{matrix}36&0\0&2.25\\end{matrix}\right] ]
- Pada (t_1), keadaan prediksi yang dihitung pada tahap sebelumnya dan nilai pengukuran baru sama-sama dapat digunakan
- Elemen diagonal kovarians prediksi (\boldsymbol{P}_{1,0}) adalah (28.5), (1.25)
- Elemen diagonal kovarians pengukuran (\boldsymbol{R}_1) adalah (36), (2.25)
- Dalam kasus ini, ketidakpastian prediksi lebih kecil daripada ketidakpastian pengukuran
- Kalman Filter tidak langsung menggunakan pengukuran baru begitu saja, dan juga tidak hanya mempertahankan prediksi
- Ia menggabungkan prediksi dan pengukuran sebagai rata-rata berbobot
- Bobot lebih besar diberikan pada sisi yang ketidakpastiannya lebih rendah
- Kombinasi dalam bentuk 1 dimensi adalah sebagai berikut
[ \hat{x}{1,1}=K_1z_1+(1-K_1)\hat{x}{1,0} ]
- (K_1) adalah Kalman Gain, yang menentukan seberapa besar bobot diberikan pada pengukuran dan prediksi
- Selama asumsi model benar, ia meminimalkan ketidakpastian estimasi update
Update Keadaan dan Innovation
- Persamaan update keadaan dalam bentuk matriks adalah sebagai berikut
[ \hat{\boldsymbol{x}}_{1,1}
\hat{\boldsymbol{x}}_{1,0} + \boldsymbol{K}_1(\boldsymbol{z}1-\hat{\boldsymbol{x}}{1,0}) ]
- Secara umum, nilai pengukuran dan keadaan sistem mungkin tidak merepresentasikan besaran fisik yang sama
- Termometer digital mengukur sinyal listrik, tetapi keadaan sistem bisa berupa suhu
- Dalam kasus ini, diperlukan matriks observasi (\boldsymbol{H}) yang mengubah keadaan prediksi ke domain pengukuran
- Persamaan update keadaan umum adalah sebagai berikut
[ \hat{\boldsymbol{x}}_{1,1}
\hat{\boldsymbol{x}}_{1,0} + \boldsymbol{K}_1(\boldsymbol{z}1-\boldsymbol{H}\hat{\boldsymbol{x}}{1,0}) ]
- (\boldsymbol{z}1-\boldsymbol{H}\hat{\boldsymbol{x}}{1,0}) adalah innovation atau residual, yang merepresentasikan informasi baru
- Dalam contoh, keadaan dan pengukuran sama-sama berupa jarak dan kecepatan, sehingga (\boldsymbol{H}) adalah matriks identitas
Menghitung Kalman Gain
- Kalman Gain 1 dimensi adalah sebagai berikut
[ K_n=\frac{p_{n,n-1}}{p_{n,n-1}+r_n} ]
- (p_{n,n-1}) adalah varians keadaan prediksi
- (r_n) adalah varians pengukuran
- Pada Kalman Filter multivariat, Kalman Gain menjadi matriks dan berbentuk sebagai berikut
[ \boldsymbol{K}n= \boldsymbol{P}{n,n-1}\boldsymbol{H}^T \left( \boldsymbol{H}\boldsymbol{P}_{n,n-1}\boldsymbol{H}^T+\boldsymbol{R}_n \right)^{-1} ]
- Kalman Gain pada (t_1) yang dihitung dalam contoh adalah sebagai berikut
[ \boldsymbol{K}_1= \left[\begin{matrix}0.4048&0.6377\0.0399&0.3144\\end{matrix}\right] ]
- Invers matriks dapat dihitung dengan
inv(A)di MATLAB ataunumpy.linalg.inv(A)di Python- Dalam implementasi nyata, biasanya lebih baik menyelesaikan sistem linear secara langsung, seperti
A\bdi MATLAB ataunumpy.linalg.solve(A, b)di Python, daripada menghitung invers eksplisit
- Dalam implementasi nyata, biasanya lebih baik menyelesaikan sistem linear secara langsung, seperti
Hasil Update dan Penurunan Kovarians
- Innovation dalam contoh adalah sebagai berikut
[ \boldsymbol{z}1-\hat{\boldsymbol{x}}{1,0}
\left[\begin{matrix}20\2\\end{matrix}\right] ]
- Koreksi setelah menerapkan Kalman Gain adalah sebagai berikut
[ \boldsymbol{K}_1 \left[\begin{matrix}20\2\\end{matrix}\right]
\left[\begin{matrix}9.37\1.43\\end{matrix}\right] ]
- Estimasi keadaan yang telah di-update adalah sebagai berikut
[ \hat{\boldsymbol{x}}_{1,1}
\left[\begin{matrix}11{,}009.37\201.43\\end{matrix}\right] ]
- Untuk update kovarians multivariat, Joseph form sering digunakan
[ \boldsymbol{P}_{n,n}
(\boldsymbol{I}-\boldsymbol{K}n\boldsymbol{H}) \boldsymbol{P}{n,n-1} (\boldsymbol{I}-\boldsymbol{K}_n\boldsymbol{H})^T + \boldsymbol{K}_n\boldsymbol{R}_n\boldsymbol{K}_n^T ]
- Dalam literatur, bentuk yang disederhanakan juga sering muncul
[ \boldsymbol{P}_{n,n}
(\boldsymbol{I}-\boldsymbol{K}n\boldsymbol{H}) \boldsymbol{P}{n,n-1} ]
- Dalam aritmetika tepat, kedua bentuk menghasilkan hasil yang sama
- Dalam implementasi komputer, Joseph form umumnya lebih stabil secara numerik
- Dalam contoh, update kovarians yang disederhanakan digunakan dan menghasilkan nilai berikut
[ \boldsymbol{P}_{1,1}
\left[\begin{matrix}14.57&1.43\1.43&0.71\\end{matrix}\right] ]
- Ketidakpastian estimasi yang telah di-update lebih rendah daripada ketidakpastian prediksi dan ketidakpastian pengukuran
- Elemen diagonal kovarians prediksi adalah (28.5), (1.25)
- Elemen diagonal kovarians pengukuran adalah (36), (2.25)
- Elemen diagonal kovarians update adalah (14.57), (0.71)
- Secara teori, informasi baru mengurangi ketidakpastian estimasi sekalipun ketidakpastiannya besar
- Dalam sistem nyata, ada kalanya pengukuran yang sulit dipercaya perlu ditolak
Prediksi Berikutnya dan Loop Berulang
- Tahap prediksi pada Iteration 1 dilakukan dengan cara yang sama seperti Iteration 0
- Namun, titik awalnya adalah (\hat{\boldsymbol{x}}{1,1}) dan (\boldsymbol{P}{1,1}) yang telah di-update
- Prediksi keadaan adalah sebagai berikut
[ \hat{\boldsymbol{x}}_{2,1}
\boldsymbol{F}\hat{\boldsymbol{x}}_{1,1}
\left[\begin{matrix}12,016.5\201.43\\end{matrix}\right] ]
- Prediksi kovarians adalah sebagai berikut
[ \boldsymbol{P}_{2,1}
\boldsymbol{F}\boldsymbol{P}_{1,1}\boldsymbol{F}^\top+\boldsymbol{Q}
\left[\begin{matrix}52.86&7.47\7.47&1.71\\end{matrix}\right] ]
- Jika waktu berlalu tanpa pengukuran baru, kedua varians kembali meningkat
- Ketidakpastian kecepatan semakin memperbesar ketidakpastian jarak, sehingga varians jarak meningkat lebih cepat
- Kalman Filter bekerja dengan struktur yang setelah inisialisasi satu kali di awal, terus mengulangi prediksi dan update
- Prediksi mempropagasi estimasi saat ini dan kovarians ke titik waktu berikutnya menggunakan model transisi keadaan
- Update menggabungkan pengukuran baru dan prediksi dengan Kalman Gain untuk memperbarui keadaan saat ini dan ketidakpastian
1 komentar
Pendapat Hacker News
Setiap kali melihat “tutorial untuk pemula”, saya selalu berharap banyak, tetapi biasanya kecewa, dan kali ini pun tidak berbeda
Awalnya bagus, tetapi selalu ada konsep atau istilah kunci tertentu yang dilewati tanpa penjelasan memadai. Di sini saya berhenti pada bagian: “variabel acak dijelaskan oleh fungsi kepadatan probabilitas, dan fungsi kepadatan probabilitas dicirikan oleh momen. Momen nilai probabilitas adalah nilai harapan dari pangkat variabel acak.”
Saya tidak tahu apakah yang dimaksud adalah nilai harapan dari eksponen nilai probabilitas, atau nilai harapan dari nilai probabilitas yang dipangkatkan, dan mengapa pangkat itu istimewa, bukan sekadar nilai probabilitas itu sendiri. Rasanya membuat frustrasi, seolah-olah para penulis tiba-tiba menyerah untuk menjelaskan dengan mudah di tengah alur pemikiran, atau sejak awal tidak benar-benar memahami konsep dasarnya sehingga tidak bisa menjelaskannya kepada orang lain. Akan bagus kalau seperti di Udemy kita bisa bertanya kepada instruktur, tetapi untuk penulis buku tidak ada cara untuk mendapatkan jawaban
Jika penulis gagal menjelaskan dengan cukup bahkan sekali saja, keseluruhannya runtuh, dan adanya loop umpan balik akan sangat membantu. Jika tidak ada, pada akhirnya kita harus bertanggung jawab sendiri untuk mencari kata dan frasa yang tidak diketahui. Cari ungkapan yang belum dipahami dengan cukup seperti “variabel acak” atau “fungsi kepadatan probabilitas”, lalu lengkapi dengan Wikipedia, ChatGPT, buku teks, video, dan sebagainya. Proses ini bersifat rekursif, sehingga akan muncul lagi konsep yang tidak diketahui, tetapi kita tinggal terus turun lebih dalam. Nilai seorang tutor juga terletak pada kemampuannya memandu pencarian depth-first semacam ini dengan baik. Dalam bidang baru, biasanya waktu untuk mengisi pengetahuan latar lebih lama daripada membaca teks utamanya, dan topik serupa berikutnya bisa menjadi lebih cepat
Hampir terasa aneh bahwa konsep sedasar ini tidak terinternalisasi selama melewati jenjang sarjana dan pascasarjana
Karena itu, kita melupakan hal-hal yang kita anggap sudah jelas. Saya merasakan masalah serupa di video 3blue1brown. Videonya indah, tetapi tidak menumbuhkan pemahaman; orang yang sudah tahu akan mengangguk melihat konsep yang familier disajikan dengan rapi, tetapi bagi orang seperti saya, prasyaratnya tampak terlalu banyak
Untuk memahami filter Kalman, pertama-tama kita harus mengetahui dasar-dasar probabilitas dan pentingnya distribusi Gaussian. Penurunan matematisnya mengasumsikan bahwa semua distribusi probabilitas terkait adalah distribusi Gaussian, dan distribusi Gaussian ditentukan secara unik jika kita mengetahui momen pertama dan kedua. Pada akhirnya, pengenalan momen tidak bisa dihindari, dan setelah itu menyusul matematika yang cukup berat. Filter Kalman bukan topik yang mudah, dan Rudolf Kalman pernah mengatakan dalam sebuah wawancara bahwa tanpa filternya, pendaratan Amerika di bulan tidak akan mungkin terjadi
Karena bisa dimulai dari kasus univariat sederhana, lalu dimodifikasi dan digeneralisasi, saya selalu menganggap ini sebagai cara yang baik untuk mengajarkan filter Kalman
Beberapa tahun lalu saya mengikuti rangkaian kuliah singkat Kalman, dan ia sangat menekankan keutamaan bekerja langsung dengan data observasi
Ia berpendapat bahwa jika kita lebih dulu mengasumsikan model lalu mencoba mencocokkannya dengan data, bias akan muncul, dan sebagai contoh bagus dari prinsip ini ia menyebut Principia karya Newton. Penjelasannya adalah bahwa Newton tidak mencari-cari model untuk menjelaskan hukum Kepler, melainkan menurunkan hukum gravitasi kuadrat terbalik dari hukum Kepler, terutama dengan menggunakan argumen geometris. Ia pembicara yang hebat dan pendiriannya kuat; tentu saja ia juga menjelaskan ide filter Kalman, tetapi karena saya tidak pernah menggunakannya langsung dalam pekerjaan, detailnya sudah lama saya lupakan
Saya pernah bekerja dengan ilmuwan dan insinyur yang menerapkan sistem nyata yang sangat kompleks dan terkenal, dan orang-orang seperti itu umumnya skeptis terhadap algoritma yang sedang tren serta biasanya memulai dari prinsip pertama. Dalam 90% kasus, filter Kalman linear biasa yang sederhana, atau bahkan tanpa model gerak, sudah cukup
Baru-baru ini seorang teman meminta saya membuat implementasi filter Kalman untuk proyek sampingan. Saya sudah membaca berbagai materi dan situs web ini, tetapi masih belum tahu bagaimana harus mengimplementasikannya.
Semuanya terasa seperti “gambarlah sisa burung hantunya”. Akan bagus kalau ada materi yang menjelaskannya seperti programmer menjelaskan, misalnya memakai iterasi array alih-alih notasi sigma. Sejauh yang saya pahami, filter Kalman terlihat seperti moving average untuk posisi, kecepatan, dan mungkin percepatan, dan sepertinya ketiga nilai ini dipakai untuk memperkirakan “nilai sebenarnya” alih-alih nilai yang dikatakan sensor.
Namun pertama-tama Anda harus menuliskan matematika yang menjelaskan dinamika. Filter Kalman kurang lebih adalah penerapan teorema Bayes pada dinamika sistem tertentu; ia menerapkan secara berulang bagaimana memperbarui estimasi keadaan saat ini ketika menerima pengukuran, dan bagaimana dinamika sistem memengaruhi ketidakpastian setelah pengukuran itu hingga sebelum pengukuran berikutnya. Anda lebih dulu membutuhkan model dinamika yang memberi tahu bagaimana objek yang dilacak berubah seiring waktu. Tanpa itu, implementasinya pasti membingungkan. Membaca filter Bayes atau particle filter terlebih dahulu bisa membantu memahami konsepnya tanpa matriks. Saya selalu merasa frustrasi dengan pernyataan bahwa orang bisa menjadi developer software tanpa tahu matematika; mungkin benar untuk membuat halaman web, tetapi semakin banyak matematika yang Anda ketahui, semakin luas pula rentang masalah yang bisa Anda modelkan dan selesaikan.
Yang penting adalah cara memperkirakan berdasarkan state tersebut, lalu setelah menerima pengukuran, memakai kedua informasi itu untuk menyesuaikan state berikutnya secara berulang. Kalau Anda memahami rumusnya, coding-nya sendiri cukup mudah. Materi ini mungkin membantu: http://bilgin.esme.org/BitsAndBytes/KalmanFilterforDummies
Kontrol eksternal dan noise proses dapat ditambahkan, dan state internal direpresentasikan sebagai vektor nilai. Anda juga membutuhkan model linear tentang bagaimana state internal diubah menjadi observasi, serta noise observasi.
x adalah state model, F adalah model transisi state linear
x(t+1) = F x(t), Q adalah matriks kovarians noise proses sehingga dalam praktiknyax(t+1) = F x(t) + N(0,Q), H adalah model observasi linear, R adalah matriks kovarians noise observasi, sedangkan u dan B adalah vektor kontrol eksternal opsional beserta cara kerjanya.N(0,Q)adalah distribusi normal dengan mean 0 dan kovarians Q.Misalnya untuk objek bergerak, state model bisa berupa posisi x dan kecepatan v. Dengan radar dan sejenisnya, biasanya hanya posisi yang dapat diamati dan kecepatan saat ini tidak dapat diamati, sehingga model observasinya berbentuk hanya mengambil posisi. Sebelum melakukan filter Kalman, “burung hantu” seperti ini harus sudah ada terlebih dahulu, dan Anda harus menentukannya sendiri sesuai prosesnya. Filter Kalman memberi tahu cara memperkirakan vektor state sebenarnya pada setiap titik waktu secara optimal ketika model transisi state maupun observasi sama-sama mengandung noise. Banyak tutorial mencampuradukkan bagian model proses yang dipilih dengan bagian filter Kalman sehingga membingungkan, dan pada contoh yang terlalu kecil seperti model konstan satu dimensi, model dinamika menghilang di dalam persamaan sehingga justru makin membingungkan.
Beberapa bab awalnya membahas filter Kalman dan filter informasi dengan baik.
Ketika Anda tahu bahwa pengukuran sensor mengandung noise, idenya adalah mengambil rata-rata beberapa sampel untuk mendapatkan estimasi yang lebih dekat ke nilai sebenarnya; jika Anda tahu seberapa besar noise sensornya, Anda juga bisa mendapat gambaran berapa banyak sampel yang perlu dirata-ratakan. Di sini, semua nilai sensor atau nilai inferensi dapat dianggap diperkirakan sebagai distribusi Gaussian yang diparameterisasi oleh mean dan varians.
Dalam sistem fisik yang memiliki percepatan, kecepatan, dan posisi, jika pada waktu t posisinya p dan kecepatannya v, maka posisi pada t+dt kira-kira menjadi
p+(v*dt). Kecepatan juga dapat diperbarui dengan estimasi percepatan, dan jika sistemnya sedang dikendalikan, model percepatan juga dapat diperbarui dengan gaya yang diperintahkan. Namun karena ada ketidakpastian pada estimasi awal, jika model proses ini terus digulirkan ke depan begitu saja, ketidakpastian akan terus membesar hingga akhirnya tidak berguna.Filter Kalman adalah teknik untuk menggabungkan informasi sensor dan model proses agar dapat memperkirakan besaran yang diminati dengan lebih baik daripada memakai salah satunya saja. Pada setiap langkah waktu, ia memprediksi state dengan model proses berdasarkan estimasi state sebelumnya, lalu memperbarui mean dan ketidakpastian dengan pengukuran sensor saat ini. Pada filter Kalman dasar, diasumsikan model proses bersifat linear dan semua estimasi adalah distribusi Gaussian sederhana, lalu seberapa besar kepercayaan kepada model atau sensor ditentukan oleh koefisien perkalian yang disebut Kalman gain.
Playlist tutorial video langkah demi langkah lain tentang filter Kalman: https://www.youtube.com/watch?v=CaCcOwJPytQ&list=PLX2gX-ftPV...
Setelah mendapatkan intuisi, filter Kalman benar-benar menarik, dan particle filter juga menyenangkan untuk dibahas dan divisualisasikan.
Saya punya buku ini dan pernah menggunakannya dengan cukup sukses untuk masalah nyata.
Meski ada beberapa bagian yang tetap terasa canggung untuk diikuti bahkan setelah dibaca ulang beberapa kali, secara keseluruhan buku ini cukup bagus.
Tulisan bagus lain yang terkait: Is the Kalman filter a low-pass filter? Sometimes!
https://jbconsulting.substack.com/p/is-the-kalman-filter-jus...
Saya pernah memakainya untuk mengurangi guncangan gerakan kamera virtual pada video yang memotong area di sekitar wajah secara real time. Caranya adalah mengirim stream posisi wajah yang terdeteksi ke worker filter Kalman, lalu menerima kembali stream posisi kamera yang stabil.
Saat sumber daya komputasi terbatas, filter Kalman memang bagus, tetapi secara pribadi saya lebih menyukai model yang lebih baru dan lebih canggih seperti particle filter
Kelebihan particle filter adalah kemampuannya menangani situasi kompleks dengan fisika nonlinier dan distribusi non-Gaussian. Misalnya, GPS kendaraan bisa menggunakan peta jalan berdasarkan riwayat belokan terbaru untuk menghapus posisi yang mustahil. Filter Gaussian tidak bisa melakukan pemrosesan seperti ini dan hanya akan menghasilkan gumpalan buram yang mencakup beberapa blok
Saya juga penasaran apakah ada model yang lebih baru atau lebih canggih selain particle filter yang layak direkomendasikan untuk pemrosesan offline
Pada 2007 saya bekerja di perusahaan teknologi iklan, dan CEO serta tim riset terobsesi dengan filter Kalman untuk mengoptimalkan kampanye iklan di jaringan Google dan MSN
Seingat saya hasilnya cukup efektif, tetapi sekarang saya tidak bisa menemukan pengajuan patennya, dan Zeta serta Walmart membeli teknologi itu
Tulisan penjelasan filter Kalman hampir selalu dimulai dengan gaya seperti, “Sebagai contoh intuitif, bayangkan termostat. Sudah paham? Bagus! Sekarang, agar lebih intuitif, mari kita lihat aljabar linear tingkat lanjut”
Saya penasaran apakah ada yang pernah melihat penjelasan filter Kalman yang tidak langsung melompat ke matematika
Jika Anda menutup mata dan berjalan menuju dinding, seiring waktu keyakinan Anda terhadap posisi sendiri makin berkurang, lalu saat jari Anda menyentuh dinding, keyakinan terhadap posisi tiba-tiba meningkat. Bagian awal adalah tahap prediksi dan bagian akhir adalah pembaruan pengukuran. Aljabar linear hanyalah cara menghitung bobot itu dalam sistem dinamika linear dengan derau Gaussian
Filter Kalman membuat asumsi statistik seperti distribusi normal, jadi setidaknya Anda perlu memahami statistik serta matriks rata-rata dan kovarians. Jika sudah sampai tingkat itu, Anda seharusnya bisa mengikuti hingga sebelum bagian 4 di https://sites.ualberta.ca/~dwiens/stat679/meinhold&singpurwa.... Setelah bagian 4, isinya mendorong perhitungan matematika yang diperlukan untuk implementasi nyata, jadi tidak banyak menambah pemahaman lebih lanjut
Cara membahas semuanya terlebih dahulu dalam satu dimensi lalu memperluasnya ke masalah multidimensi benar-benar membantu memahami konsepnya. Daftar putar kuliahnya tampaknya ada di sini: https://youtube.com/playlist?list=PLAwxTw4SYaPkCSYXw6-a_aAoX...
Bagian filter Kalman dimulai dari video “Tracking Intro - Artificial Intelligence for Robotics”. Kuliah gratisnya tampaknya juga ada di sini, tetapi perlu login untuk mengaksesnya: https://www.udacity.com/course/intro-to-artificial-intellige...
Karena tidak terlalu memahami Kalman, saya membaca tulisan-tulisan pengantar di situs web ini, tetapi tetap belum terasa masuk
Saat memikirkan grafik sampel, itu terlihat seperti exponential moving average yang jauh lebih mudah dipahami. Ketika mencari perbandingan di Google, Stats Stack Exchange mengatakan bahwa untuk “random walk + noise”, EMA sama baiknya dengan Kalman, dan makalah Joseph J. LaViola dari Brown University tahun 2003 menunjukkan bahwa algoritma double exponential smoothing memiliki kualitas yang sama dengan Kalman dan extended Kalman, tetapi 135 kali lebih cepat dan lebih sederhana.
Karena double exponential smoothing jauh lebih mudah dipahami daripada Kalman, dengan asumsi makalah LaViola benar, saya tidak berniat menghabiskan usaha lagi untuk memahami Kalman