Contents — find the section you need
Change parameters and verify
Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.
Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.
The experiment controls are in English.
Penyetelan Kalman mengekspresikan ketidakpastian dalam model gerak dan pengamatannya. Eksperimen ini memperkirakan posisi dan kecepatan, kemudian membandingkan prediksi selama data hilang, reaksi terhadap outlier, dan penolakan yang disebabkan oleh kepercayaan diri yang berlebihan. Semua input bersifat sintetis; angka-angka tersebut bukan klaim akurasi perangkat keras.
Model dan satuan
Keadaan berisi posisi [m] dan kecepatan [m/s]. Hanya posisi yang diamati, setiap 0,1 s:
Deviasi standar pengamatan adalah 0,7 m, memberikan R=0,49 m². Kovarian proses adalah q ggᵀ dengan g=(dt²/2, dt), yang mewakili gangguan percepatan independen per langkah. Di sini q=0,4 memiliki satuan (m/s²)²; ini bukan kerapatan spektral white-noise kontinu. Jangan mentransfer nilai ini ke diskretisasi lain tanpa memeriksa maknanya. Lihat Pengantar Filter Kalman untuk derivasi prediksi dan pembaruan.
Untuk teorinya, lihat Simo Särkkä (2013), Penyaringan dan Penghalusan Bayesian, bagian 4.3. Trajektori, gerbang, dan kondisi perbandingan di sini adalah desain eksperimen kami sendiri.
Empat konfigurasi, input identik
Simpan skrip eksperimen di direktori output kosong dan jalankan:
python3 engineering_labs.py
Eksekusi diperiksa dengan Python 3.12.3, NumPy 1.26.4, dan Matplotlib 3.6.3. File ini juga menghasilkan eksperimen rekayasa terkait lainnya. File ini menggunakan seed 42 dan 300 sampel. Kecepatan sebenarnya berubah dari 1 menjadi 1,4 m/s pada 12 detik. Tiga puluh pengamatan dari 7,0 hingga 9,9 detik hilang, dan 12 m ditambahkan ke pengamatan pada 16 detik. Posisi/kecepatan awal adalah 0 m dan 1 m/s; kovariansi awal memiliki entri diagonal 1 m² dan 1 (m/s)². Setiap konfigurasi menerima pengamatan yang persis sama.
Normalisasi residual
Misalkan e adalah residual pengamatan sebelum koreksi dan S adalah varians prediksinya. Gerbang menolak pengamatan ketika:
Ambang batas ini berlaku untuk residual skalar yang dinormalisasi ini, bukan secara sembarangan untuk pengamatan multidimensi. Pengukuran yang hilang atau ditolak memicu prediksi tanpa koreksi. Implementasi menggunakan pembaruan kovariansi Joseph dan memeriksa semidefinit positif. Ketidakpastian meningkat selama data hilang, sehingga ini berbeda dari jarak penolakan tetap dalam meter.
Hasil menunjukkan kepercayaan diri yang berlebihan
| Konfigurasi | Posisi RMSE [m] | Ditolak |
|---|---|---|
| q=0.4, R=0.49, tanpa gerbang | 0.262 | 0 |
| q=0.4, R=0.49, dengan gerbang | 0.178 | 2 |
| q=0.002, R=0.49, dengan gerbang | 0.393 | 4 |
| q=0.4, R=0.0049, dengan gerbang | 11.251 | 237 |
Rentang vertikal dibatasi hingga −3 hingga 4 m untuk perbandingan. Pencilan 12 m dan kesalahan besar dengan R kecil meluas di luarnya. Periksa CSV yang difilter, CSV R kecil, dan ringkasan lengkap untuk nilai yang tidak dipotong. Pengamatan yang hilang dalam CSV adalah NaN dan tidak dihitung sebagai penolakan.
Pemfilteran menolak dua pengamatan, meskipun hanya satu outlier buatan yang disuntikkan. Ambang batas tidak hanya mengidentifikasi sampel yang sengaja dirusak. Perkiraan varians pengamatan yang kurang tepat sebesar faktor 100 menyebabkan 237 penolakan: sebaran normal menjadi tidak sesuai dengan kepercayaan filter. Koreksi yang hilang kemudian mencegah pelacakan perubahan kecepatan, membuat residual menjadi lebih besar. Menambahkan pemfilteran saja tidak menciptakan ketahanan.
Beralih ke log Anda sendiri
Periksa stempel waktu, satuan, dan frame terlebih dahulu. Perkirakan varians pengamatan pada interval stasioner, kemudian periksa kesalahan model gerak dan residual selama gerakan. Terapkan pemfilteran terakhir, laporkan tingkat data yang hilang, tingkat penolakan, dan ketidakpastian bersama dengan RMSE. Perangkat keras sebenarnya membutuhkan referensi independen untuk menghitung kesalahan yang sebanding.
Nilai Q yang kecil dapat membuat kurva menjadi halus sekaligus meningkatkan lag. Meningkatkan nilai Q juga tidak selalu lebih baik. Peringkat ini hanya berlaku untuk lintasan, inisialisasi, noise, dan jendela evaluasi ini.
Pemeriksaan lanjutan
Kolom sigma_m adalah estimasi deviasi standar posisi. Plot estimasi plus/minus dua kali sigma dan bandingkan interval data yang hilang dengan perubahan kecepatan. Ini memisahkan kesalahan aktual dari penilaian mandiri estimator. Lanjutkan dengan debugging fusi sensor untuk mendiagnosis waktu dan TF sebelum mengubah kovariansi.
Jalankan perhitungan yang sama secara lokal
Ekstrak file ZIP sumber lengkap yang dapat dijalankan, atau simpan titik masuk eksperimen, kernel yang dihasilkan, dan sumber PID asli dalam satu folder. PID menggunakan pustaka standar Python; Kalman dan ICP membutuhkan NumPy. Perintah pembuatan gambar asli tetap tersedia.
python3 -m pip install numpy==1.26.4
python3 experiment.py kalman --parameters '{"q":0.4,"r":0.49,"gate":false}' > result.json
Aktifkan/nonaktifkan gerbang untuk membandingkan respons outlier, kemudian atur q ke 0,002 atau r ke 0,0049 dan bandingkan RMSE dan jumlah penolakan. Pengamatan ditetapkan dari CSV yang disimpan di seluruh proses.
Code, data and reproduction
The ZIP contains the same computation code as the browser, synthetic data and comparison cases. These are not physical measurements.
Download reproduction package · Instructions (EN/JA) · Files and experiment conditions (JSON)
Extract the ZIP into a new directory, then run:
python3 reproduce.py --experiment kalman
This Lab compares 4 cases. PID uses Python’s standard library; Kalman/ICP require NumPy. See the instructions for dependencies and tested versions.
Komentar
Silakan masuk terlebih dahulu.
Belum ada data.