Memahami Filter Kalman lewat Contoh Radar Sederhana
(kalmanfilter.net)- Filter Kalman adalah algoritma estimasi keadaan optimal yang memperkirakan keadaan sistem dan memprediksi masa depan di lingkungan dengan banyak noise
- Dengan contoh radar pelacak pesawat, dijelaskan proses meningkatkan akurasi dengan mengulangi tahap prediksi dan pembaruan menggunakan nilai pengukuran jarak dan kecepatan
- Pada tiap tahap, dihitung vektor keadaan, matriks kovarians, dan Kalman Gain untuk menggabungkan nilai pengukuran dan prediksi secara berbobot
- Dengan mempertimbangkan sekaligus ketidakpastian pengukuran dan ketidakpastian model, ditunjukkan secara numerik bahwa galat estimasi (ketidakpastian) berkurang seiring waktu
- Melalui contoh numerik yang intuitif dan perhitungan langkah demi langkah, materi ini memberikan landasan pemahaman untuk merancang dan mengimplementasikan filter secara langsung
Pengantar Filter Kalman
-
Kalman Filter** adalah algoritma estimasi keadaan yang memperkirakan dan memprediksi keadaan sistem di lingkungan yang memiliki ketidakpastian, seperti noise pengukuran atau faktor eksternal
- Digunakan sebagai alat inti di berbagai bidang seperti pelacakan objek, navigasi, robotika, dan kontrol
- Misalnya, dipakai untuk mengurangi noise pada jejak mouse agar gerakannya lebih halus, mendeteksi tren pada data finansial, atau untuk prediksi cuaca
- Materi ini menyoroti bahwa banyak bahan pembelajaran terlalu berfokus pada penurunan matematis sehingga kurang contoh nyata, dan karena itu menyediakan penjelasan intuitif berbasis contoh numerik
- Juga membahas kasus ketika filter yang dirancang dengan buruk gagal melacak target, beserta cara mengoreksinya
- Tujuannya adalah membangun pemahaman agar pembaca dapat merancang dan mengimplementasikan Filter Kalman sendiri
Jalur belajar
- Ringkasan satu halaman: memperkenalkan konsep inti dan rumus utama secara singkat, hanya memerlukan pengetahuan dasar statistik dan aljabar linear
- Tutorial web gratis: tutorial online dengan contoh numerik langkah demi langkah untuk membangun intuisi, tanpa prasyarat pengetahuan
- Kalman Filter from the Ground Up (buku): 14 contoh numerik lengkap, filter nonlinier (Extended/Unscented) dan fusi sensor, termasuk kode Python·MATLAB
Mengapa prediksi diperlukan
- Menjelaskan perlunya estimasi keadaan dan prediksi melalui contoh radar pelacak pesawat
- Keadaan sistem adalah posisi pesawat (jarak (r)), dan radar menghitung jarak dengan mengukur waktu pantulan pulsa
- Kecepatan (v) dapat diukur melalui efek Doppler
- Prediksi posisi setelah selang waktu tertentu (\Delta t) dilakukan melalui model dinamis
- Contoh: (r_{t_1} = r_{t_0} + v \cdot \Delta t)
- (\Delta t = 5s), (r_{t_0}=10,000m), (v=200m/s) → (r_{t_1}=11,000m)
- Di lingkungan nyata terdapat noise pengukuran (Measurement Noise) dan ketidakpastian model (Process Noise)
- Bahkan jika beberapa radar mengukur secara bersamaan, hasilnya bisa sedikit berbeda
- Asumsi kecepatan konstan bisa rusak akibat faktor eksternal seperti angin
- Filter Kalman melakukan estimasi keadaan saat ini dan prediksi keadaan masa depan secara bersamaan, sambil menyediakan ketidakpastian (varians) dari tiap estimasi
- Ini adalah algoritma optimal yang meminimalkan ketidakpastian estimasi keadaan
Contoh Filter Kalman
-
Radar 1 dimensi mengukur jarak (r) dan kecepatan (v) pesawat
- Vektor keadaan (\boldsymbol{x} = [r, v]^T)
- Sistem direpresentasikan dengan vektor dan matriks
-
Iteration 0 — inisialisasi dan prediksi
-
Inisialisasi
- Filter diinisialisasi dengan nilai pengukuran pertama (\boldsymbol{z}_0 = [10{,}000, 200]^T)
- Ketidakpastian pengukuran (simpangan baku): jarak 4m, kecepatan 0.5m/s (\boldsymbol{R}_0 = \begin{bmatrix}16 & 0 \ 0 & 0.25\end{bmatrix})
- Estimasi keadaan awal (\hat{\boldsymbol{x}}_{0,0} = \boldsymbol{z}_0)
- Kovarians awal (\boldsymbol{P}_{0,0} = \boldsymbol{R}_0)
-
Tahap prediksi
- Selang waktu (\Delta t = 5s)
- Matriks transisi keadaan (\boldsymbol{F} = \begin{bmatrix}1 & 5 \ 0 & 1\end{bmatrix})
- Keadaan prediksi (\hat{\boldsymbol{x}}{1,0} = \boldsymbol{F}\hat{\boldsymbol{x}}{0,0} = [11{,}000, 200]^T)
- Prediksi kovarians (tanpa noise proses): (\boldsymbol{P}{1,0} = \boldsymbol{F}\boldsymbol{P}{0,0}\boldsymbol{F}^T = \begin{bmatrix}22.25 & 1.25 \ 1.25 & 0.25\end{bmatrix})
- Menambahkan noise proses ((\sigma_a = 0.2m/s^2)): (\boldsymbol{Q} = \begin{bmatrix}6.25 & 2.5 \ 2.5 & 1\end{bmatrix})
- Kovarians prediksi akhir: (\boldsymbol{P}_{1,0} = \begin{bmatrix}28.5 & 3.75 \ 3.75 & 1.25\end{bmatrix})
-
Ringkasan Iteration 0
- Menginisialisasi keadaan dan kovarians dengan pengukuran pertama
- Menggunakan model transisi keadaan untuk memprediksi keadaan berikutnya dan ketidakpastiannya
- Rumus prediksi
- Prediksi keadaan: (\hat{\boldsymbol{x}}{n+1,n} = \boldsymbol{F}\hat{\boldsymbol{x}}{n,n} + \boldsymbol{G}\boldsymbol{u}_n)
- Prediksi kovarians: (\boldsymbol{P}{n+1,n} = \boldsymbol{F}\boldsymbol{P}{n,n}\boldsymbol{F}^T + \boldsymbol{Q})
-
Iteration 1 — pembaruan dan prediksi
-
Pembaruan filter
- Pengukuran kedua: (\boldsymbol{z}_1 = [11{,}020, 202]^T)
- Ketidakpastian pengukuran meningkat (simpangan baku: jarak 6m, kecepatan 1.5m/s) (\boldsymbol{R}_1 = \begin{bmatrix}36 & 0 \ 0 & 2.25\end{bmatrix})
- Saat dibandingkan dengan kovarians prediksi (\boldsymbol{P}_{1,0}), ketidakpastian prediksi lebih kecil
- Filter Kalman menggabungkan pengukuran dan prediksi sebagai rata-rata berbobot
- Bobot (K_1): Kalman Gain
- Rumus pembaruan keadaan: (\hat{\boldsymbol{x}}{1,1} = \hat{\boldsymbol{x}}{1,0} + \boldsymbol{K}_1(\boldsymbol{z}1 - \boldsymbol{H}\hat{\boldsymbol{x}}{1,0}))
- Matriks observasi (\boldsymbol{H} = \boldsymbol{I})
- Perhitungan Kalman Gain: (\boldsymbol{K}1 = \boldsymbol{P}{1,0}\boldsymbol{H}^T(\boldsymbol{H}\boldsymbol{P}_{1,0}\boldsymbol{H}^T + \boldsymbol{R}_1)^{-1}) Hasil: (\boldsymbol{K}_1 = \begin{bmatrix}0.4048 & 0.6377 \ 0.0399 & 0.3144\end{bmatrix})
- Inovasi (innovation): (\boldsymbol{z}1 - \hat{\boldsymbol{x}}{1,0} = [20, 2]^T)
- Nilai koreksi: (\boldsymbol{K}_1[20, 2]^T = [9.37, 1.43]^T)
- Keadaan hasil pembaruan: (\hat{\boldsymbol{x}}_{1,1} = [11{,}009.37, 201.43]^T)
-
Pembaruan kovarians
- Menggunakan bentuk yang disederhanakan: (\boldsymbol{P}_{1,1} = (\boldsymbol{I} - \boldsymbol{K}1)\boldsymbol{P}{1,0})
- Hasil: (\boldsymbol{P}_{1,1} = \begin{bmatrix}14.57 & 1.43 \ 1.43 & 0.71\end{bmatrix})
- Setelah pembaruan, ketidakpastian lebih kecil daripada ketidakpastian prediksi maupun pengukuran → menggabungkan pengukuran dan prediksi selalu mengurangi ketidakpastian
-
Tahap prediksi
- Prediksi untuk waktu berikutnya (t_2)
- Prediksi keadaan: (\hat{\boldsymbol{x}}{2,1} = \boldsymbol{F}\hat{\boldsymbol{x}}{1,1} = [12{,}016.5, 201.43]^T)
- Prediksi kovarians: (\boldsymbol{P}{2,1} = \boldsymbol{F}\boldsymbol{P}{1,1}\boldsymbol{F}^T + \boldsymbol{Q} = \begin{bmatrix}52.86 & 7.47 \ 7.47 & 1.71\end{bmatrix})
- Seiring waktu, jika tidak ada pengukuran, ketidakpastian akan meningkat lagi
- Prediksi untuk waktu berikutnya (t_2)
-
Ringkasan Iteration 1
- Tahap pembaruan: menggabungkan prediksi dan pengukuran dengan Kalman Gain
- Tahap prediksi: meneruskan keadaan yang telah diperbarui ke waktu berikutnya
- Rumus utama
- Pembaruan keadaan: (\hat{\boldsymbol{x}}{n,n} = \hat{\boldsymbol{x}}{n,n-1} + \boldsymbol{K}_n(\boldsymbol{z}n - \boldsymbol{H}\hat{\boldsymbol{x}}{n,n-1}))
- Pembaruan kovarians (Joseph form): (\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)
- Kalman Gain: (\boldsymbol{K}n = \boldsymbol{P}{n,n-1}\boldsymbol{H}^T(\boldsymbol{H}\boldsymbol{P}_{n,n-1}\boldsymbol{H}^T + \boldsymbol{R}_n)^{-1})
Ringkasan contoh
- Tiga tahap Filter Kalman: inisialisasi → prediksi → pembaruan
- Setelah itu, loop prediksi-pembaruan diulang terus
- Setiap kali pengukuran baru ditambahkan, ketidakpastian berkurang dan estimasi keadaan sistem menjadi semakin presisi
- Materi pembelajaran tambahan
- Tutorial online gratis: menyediakan contoh numerik langkah demi langkah
- Buku Kalman Filter from the Ground Up: mencakup filter linear·nonlinear, panduan implementasi, serta kode Python/MATLAB
1 komentar
Komentar Hacker News
Saya penulisnya. Baru-baru ini saya memperbarui halaman utama tutorial Kalman Filter saya. Saya menambahkan contoh pelacakan radar yang sederhana, agar orang yang hanya memahami dasar statistik dan aljabar linear pun bisa memahaminya
Saya berusaha meminimalkan penurunan rumus, sambil tetap menunjukkan secara intuitif proses penggabungan noise pengukuran, model prediksi, dan filter. Saya ingin mendengar masukan tentang tingkat matematikanya maupun kejelasan penjelasannya
Panduan intuitif menurut saya adalah sebagai berikut
Pada akhirnya inti utamanya adalah metode kuadrat terkecil, dan di bawah asumsi tertentu dapat dibuktikan bahwa ini optimal
Tulisan “How a Kalman Filter Works in Pictures” sangat bagus
Misalnya, low-pass filter juga merupakan semacam estimator, tetapi Kalman filter menambahkan model proses dan perhitungan kovarians sehingga dapat menyesuaikan diri secara dinamis.
Ia merefleksikan hubungan antarvariabel yang saling berkorelasi seperti posisi dan kecepatan, sehingga satu nilai pengukuran dapat memengaruhi estimasi variabel lain juga.
Namun karena berbasis aljabar linear, ia mengasumsikan noise Gaussian, dan untuk masalah nonlinier dibutuhkan varian seperti EKF atau UKF
Untuk memahami Kalman filter, Anda perlu mengetahui empat hal berikut
Filter ini adalah solusi matematis untuk mengestimasi secara optimal keadaan internal sistem dan kovariansnya berdasarkan nilai pengukuran.
Menurut saya buku Alex Becker adalah pengantar yang sangat bagus untuk topik ini. Contohnya banyak dan sangat membantu membangun intuisi
Saat mempelajari Kalman filter, konsepnya jauh lebih mudah dipahami secara intuitif ketika ada dua atau lebih input dengan karakteristik noise yang berbeda. Namun sebagian besar tutorial hanya membahas satu input
Kalman filter memang banyak dipakai di dunia nyata. Misalnya, Sendspin menggunakannya untuk sinkronisasi speaker
Anda bisa melihat demo langsung dan dokumentasi implementasi
Saya penasaran apakah konsep Kalman filter juga bisa diterapkan pada kesaksian manusia
Penjelasan sederhana juga bisa dilihat di thekalmanfilter.com
Tulisan ini terlihat seperti iklan buku mahal. Padahal sudah ada banyak materi gratis, misalnya Kalman and Bayesian Filters in Python dan semacamnya. Saya penasaran apa keunggulan khusus buku ini