Showing posts with label Kalman. Show all posts
Showing posts with label Kalman. Show all posts

Saturday, October 24, 2020

Script MATLAB: Kalman filter diskrit

% MATLAB SCRIPT FOR DISCRETE KALMAN FILTER IN NOISY MEASUREMENT SIGNAL


clc


%% INPUT

y = signal(:,2);    % Signal

t = signal(:,1);    % Time vector

n = length(y);


%% ESTIMASI PARAMETER MODEL AUTO-REGRESSIVE ORDE 2

% y[k] = fi0 + fi1.y[k-1] + fi2.y[k-1]


x1 = 0;

x2 = 0;


x1(1) = 0;

x1(2) = y(1);

x2(1) = 0;

x2(2) = 0;

X(1,:) = [1 x1(1) x2(1)];

X(2,:) = [1 x1(2) x2(2)];


for k = 3:n

    x1(k)  = y(k-1);

    x2(k)  = y(k-2);

    X(k,:) = [1 x1(k) x2(k)];

end


fi = inv(X'*X)*X'*y; % fi0, fi1, fi2


%% DISCRETE KALMAN FILTER

% Define:

% x1[k] = y[k-1]

% x2[k] = y[k-2]


Q = eye(2)*0.001;

R = eye(1)*0.01;

A = [fi(2) fi(3);1 0];    % [fi(2) fi(3);1 0]

F = [fi(1) 0]';           % fi(1)

H = [fi(2) fi(3)];


xmin = [0 0]';

Pmin = 0.01*speye(2);


for i = 1:n

    x = A*xmin+F;

    P = A*Pmin*A'+Q;


    K = P*H'*inv(H*P*H'+R);

    x = x+K*(y(i)-H*x);

    P = (speye(2)-K*H)*P;

    zest(i) = H*x+fi(1);

    

    xmin = x;

    Pmin = P;

end


%% PLOT

figure

plot(t,zest,'LineWidth',1);

set(gca,'FontSize',12)

xlabel('Time (s)','FontSize',12);

ylabel('Voltage','FontSize',12);

axis([0 5 0 0.01])


Friday, February 2, 2018

Kalman Filter untuk Pengukuran Kecepatan Kapal


Bismillah. Rekan saya punya data pengukuran kecepatan kapal dari hasil uji lab terhadap miniatur kapalnya. Sayangnya, data pengukuran ini bercampur noise dan filter di sensornya tidak bekerja padahal dia perlu data yang bersih untuk memastikan kecepatan kapal sebenarnya. Lalu, saya mulai mengkaji dan merancang filternya. Prosedur utamanya ada dua:
  1. Memodelkan data pengukuran dengan Auto-Regressive orde 2
  2. Merancang Kalman filter dengan melibatkan model tersebut
Masing2 butir sudah saya jelaskan lebih detil di [1] dan [2].

Thursday, December 21, 2017

Kalman Filter untuk Model Auto-Regressive (AR)

Bismillah ar-Rahmaan ar-Rohiim. Saya bertemu kalman filter lagi, kali ini dengan tantangan yang baru. Ini perjumpaan saya dengan kalman filter untuk yang ke sekian kalinya dengan rekan dan objek riset yang berbeda pula. Dari beberapa kali perjumpaan itu, saya merenung2 bahwa kalman filter ini adalah sesuatu yang revolusioner. Algoritmanya sederhana tapi efeknya signifikan dan bisa dipakai di banyak persoalan seputar olah sinyal. Saya baru tahu juga Presiden Obama juga sempat memberikan Medals of Science kepada penemunya R.E. Kalman di tahun 2008 [1].


Namun demikian, selama ini saya masih sekedar tahu tentang kalman filter standar. Padahal variannya banyak sekali, diantaranya Extended Kalman Filter yang dirancang untuk nonlinier.

Sunday, October 29, 2017

Membuat Kalman Filter Diskrit dengan Simulink

Bismillah. Pertama kali saya mencoba kalman filter di Matlab, dulu saat kuliah, menggunakan Simulink dan M-File, cukup ribet sebenarnya [1]. Lalu, muncul request untuk membuat simulasi seluruhnya dengan M-File [2]. Kali ini pertanyaan yang ditujukan kepada saya adalah bagaimana membuat kalman filter diskrit dengan user-defined/embedded Matlab function dengan Simulink.
 
Sebagaimana dua tulisan sebelumnya, plant yang saya gunakan adalah pengukuran (diskrit) kecepatan motor dc dalam sinyal tegangan. Ulasan tentang plant dapat dilihat di sini [1]. Kalman filter diskrit di sini digunakan untuk estimasi, yaitu upaya pencarian nilai sejati dari nilai ukur yang bercampur noise.

Monday, February 27, 2017

Memahami Kalman Filter, MathWorks Video

Mengapa menggunakan Kalman Filter?
Discover common uses of Kalman filters by walking through some examples. A Kalman filter is an optimal estimation algorithm used to estimate states of a system from indirect and uncertain measurements.
https://www.mathworks.com/videos/understanding-kalman-filters-part-1-why-use-kalman-filters--1485813028675.html

State-Observer
Learn the working principles of state observers, and discover the math behind them. State observers are used to estimate the internal states of a system when you can’t directly measure them.
https://www.mathworks.com/videos/understanding-kalman-filters-part-2-state-observers-1487694734527.html

Merancang dan menggunakan Kalman Filter di MATLAB dan Simulink
Examples and How To
https://www.mathworks.com/discovery/kalman-filter.html

Monday, June 27, 2016

Kode MATLAB Kalman Filter untuk Filter Sinyal

Bismillah. Seorang rekan yang sedang S3 di Australia berbagi persoalan tentang kalman filter diskrit. Dia sedang riset tentang estimasi profil jalan (road profile) dari hasil pengukuran akselerometer suspensi mobil dengan kalman filter diskrit. Dia juga memberi link berikut untuk kode kalman filter diskrit:

Tuesday, March 4, 2014

Contoh Kalman Filter Diskrit: Estimasi Nilai Konstan

Tulisan ini adalah bagian dari “Introduction to Kalman Filter” oleh Greg Welch & Gary Bishop, 2012
dokumen selengkapnya dalam bahasa Indonesia dapat dibaca / didownload di sini
Kita akan coba untuk mengestimasi satu nilai konstan acak skalar, misalnya nilai tegangan. Anggaplah kita mampu mengukur nilai konstan tersebut, tetapi pengukuran yang dilakukan terganggu dengan noise pengukuran sebesar 0,1 volt RMS dengan tipe white noise (misal, konverter analog ke digital yang digunakan tidak cukup akurat). Dalam contoh ini, proses dinyatakan dengan persamaan beda linier

image
 
dengan persamaan pengukuran zk, yaitu

image
 
State x tidak berubah dari step ke step, jadi A=1. Tidak ada input kontrol, jadi u=0. Pengukuran yang bercampur noise langsung didapatkan dari state x, jadi H=1.

Parameter Filter dan Penyesuaiannya

Tulisan ini adalah bagian dari “Introduction to Kalman Filter” oleh Greg Welch & Gary Bishop, 2012
dokumen selengkapnya dalam bahasa Indonesia dapat dibaca / didownload di sini
Dalam implementasi filter, kovarian noise pengukuran R biasanya diukur sebelum filter dioperasikan. Pengukuran koverian error pengukuran R umumnya dapat dilakukan karena kita dapat mengambil sampel pengukuran secara offline untuk menentukan varian dari noise pengukuran. Penentuan kovarian noise proses Q umumnya lebih sulit, karena kita tidak dapat mengamati proses secara langsung. Terkadang satu model proses yang sederhana dapat menghasilkan estimasi yang baik dengan pemilihan Q yang tepat, bila pengukuran terhadap proses dapat diandalkan. Pada keadaan yang lain, seringkali penyesuaian (tuning) parameter filter Q dan R dapat menghasilkan performansi filter yang “superior” (secara statistik). Mekanisme penyesuaian ini biasanya dijalankan secara offline, terkadang dengan bantuan Kalman filter tipe yang lain. Proses penyesuaian ini disebut identifikasi sistem.

Algoritma Kalman Filter Diskrit

Tulisan ini adalah bagian dari “Introduction to Kalman Filter” oleh Greg Welch & Gary Bishop, 2012

dokumen selengkapnya dalam bahasa Indonesia dapat dibaca / didownload di sini

Kita awali bagian ini dengan pengantar ringkas, memuat konsep operasional umum dari salah satu tipe Kalman filter diskrit. Selanjutnya, kita akan fokus pada persamaan-persamaan spesifik dan kegunaannya untuk tipe ini.

Kalman filter mengestimasi satu proses melalui mekanisme kontrol umpan-balik: Filter mengestimasi state dari proses kemudian mendapat umpan balik berupa nilai hasil pengukuran yang bercampur noise. Persamaan untuk Kalman filter dikelompokkan dalam dua bagian: persamaan update waktu dan persamaan update pengukuran. Persamaan update waktu bertugas untuk mendapatkan nilai pra-estimasi untuk waktu step selanjutnya. Persamaan update pengukuran bertugas untuk keperluan umpan balik, seperti memadukan hasil pengukuran terbaru dengan nilai pra-estimasi untuk mendapatkan nilai pasca-estimasi yang lebih baik.

PDF: Pengenalan Kalman Filter

by: Nur Q | alfiyahibnumalik@gmail.com | 085733483101 | Surabaya | Indonesia
 
Saya awali tulisan ini dengan Nama Alloh Sang Maha Pengasih Sang Maha Penyayang. Segala Puji bagi-Nya yang telah mengajarkan ilmu kepada siapa saja yang dikehendaki-Nya.
 
Sungguh, saya merasa terbantu dengan dokumen “Introduction to Kalman Filter” oleh Greg Welch & Gary Bishop, 2012, dalam memahami esensi kalman filter diskrit. Saya coba terjemahkan, mungkin dapat membantu pembaca yang enggan berlama-lama dengan bahasa Inggris namun tertarik memahami konsep kalman filter diskrit. Bagian tentang Extended Kalman Filter belum sempat saya terjemahkan, semoga bisa dilanjutkan di lain waktu. Semoga bermanfaat.
 
Daftar Isi

Sunday, September 1, 2013

Model Proses untuk Kalman Filter Diskrit

Bismillahirrohmanirrohim 
Kalman filter diskrit (Discrete Kalman Filter) dirancang (secara umum) untuk mengestimasi state x ϵ Rn dari proses waktu diskrit yang dinyatakan dengan persamaan beda berikut  Persamaan 1
x[k] = Ax[k-1] + Bu[k-1] + w[k-1], dengan pengukuran z ϵ Rm yang dinyatakan  Persamaan 2  
z[k] = Hx[k] + v[k],
 
w[k] dan v[k] adalah variabel acak yang mewakili noise proses dan noise pengukuran, keduanya independen, jenis white noise[1], dengan probabilitas berdistribusi normal  
p(w) ~ N(0, Q)
p(v) ~ N(0, R)
 
Dalam praktik, varian noise proses (Q) dan varian noise pengukuran (R) bisa berubah dalam tiap waktu atau pengukuran, namun di sini keduanya diasumsikan konstan. (Varian adalah besaran statistik yang menyatakan kuadrat dari standar deviasi).

Sunday, April 21, 2013

Kalman Filter Diskrit untuk Motor DC

“Orang yang suka menampakkan Jasa
Setengah daripada Syirik mengaku Kuasa” – Raja Ali Haji -

Abstrak

Saya awali dengan Nama Tuhan Semesta Alam, Sang Maha Pengasih dan Maha Penyayang.

Saya coba merancang Kalman Filter diskrit untuk mengestimasi keluaran model hasil identifikasi parametrik pada plant motor dc[1].

Baca Selengkapnya (pdf), Download pdf+code Matlab (zip)

Luaran

(Program) Kalman Filter diskrit untuk model plant motor dc

Perangkat Lunak Pendukung

Matlab versi 5.3

Model State Space Diskrit Motor DC

Plant motor dc diidentifikasi hingga didapatkan sebuah model matematik ARMA (Auto Regressive Moving Average) yang merepresentasikan hubungan input dan output berikut.

y(k) = 0.7844y(k-1)+0.0558y(k-2)+0.279x(k-1)+0.1468x(k-2)

Untuk merancang Kalman filter diskrit, diperlukan representasi state space diskrit dari plant motor dc. Dengan menggunakan Matlab, didapatkan representasi state space diskrit dari plant motor dc sebagai berikut.

image

Noise Pengukuran

Hasil pengukuran terhadap keluaran model plant dirancang sedemikian rupa sehingga tercampur dengan noise. Noise yang digunakan adalah white noise dengan mean nol dan varian 0.01. Hasil pengukuran yang mengandung noise dinotasikan dengan sedangkan noise pengukuran dinotasikan dengan . Keduanya terhubung dengan persamaan berikut.

z(k) = y(k)+v(k)

Program Kalman Filter

Terdapat tiga file terpisah yang diperlukan untuk mengeksekusi Kalman filter dalam dokumen ini. File tersebut adalah:

  • bloksim.mdl, memuat diagram blok simulink untuk men-generate white noise
  • code2.m, memuat kode program untuk menjalankan algoritma Kalman filter pada plant motor DC
  • ploter.m, untuk membuat plot hasil estimasi Kalman filter

image

Gambar 1 Hasil eksekusi Kalman Filter diskrit

Hasil Eksekusi

Setelah menjalankan prosedur di atas, maka akan tampil hasil eksekusi Kalman filter seperti pada Gambar 1. “Output Model” adalah sinyal keluaran model plant motor dc sebenarnya, “Output Pengukuran” adalah sinyal pengukuran dari keluaran model plant motor dc yang disertai dengan noise pengukuran, dan “Output Kalman” adalah sinyal keluaran dari Kalman Filter untuk mengestimasi nilai “Output Model” dari “Output Pengukuran”. Berdasarkan hasil dalam gambar tersebut dapat disimpulkan bahwa Kalman filter mampu melakukan estimasi nilai output model plant dengan data hasil pengukuran yang telah bercampur dengan noise.

Daftar Istilah

Kalman Filter adalah satu himpunan persamaan matematika yang menawarkan teknik komputasi efisien untuk mengestimasi state dalam suatu proses, dengan meminimumkan Mean Squared Error.

Estimasi adalah teknik untuk menemukan nilai sebenarnya dari variabel yang telah bercampur dengan noise.

Daftar Pustaka

Welch, G., & Bishop, G. (2011, May 18). Introduction to The Kalman Filter. Retrieved May 29, 2011, from The Kalman Filter: http://www.cs.unc.edu/~welch/kalman/


[1] identifikasi parametrik ini dijelaskan dalam dokumen terpisah berjudul ‘Identifikasi Parametrik – Studi Simulasi terhadap Motor DC’, dapat diakses di blog

Baca Selengkapnya (pdf)

Download pdf+code Matlab (zip)

Thursday, March 29, 2012

Pengertian Kalman Filter

Dengan Nama Alloh, Sang Maha Pengasih Sang Maha Penyayang.

 

Apa itu Kalman Filter?

Pada dasarnya, Kalman Filter merupakan salah satu produk matematika terapan yang telah berusia 30 tahun. Kalman Filter telah menjadi estimator optimal terbaik untuk persoalan skala besar.

Kalman Filter mengolah data yang mengandung noise menjadi data yang lebih sedikit mengandung noise. Sebagai tebusannya, pengolahan data oleh Kalman Filter menimbulkan waktu tunda (delay).

Beberapa manfaat Kalman Filter antara lain pelacakan misil, ekstraksi gerak bibir dari video, beragam aplikasi visual dalam komputer, ekonomi, navigasi dan lain sebagainya.

 

Referensi

Greg Welch, Gary Bishop, 2001, An Introduction to The Kalman Filter, Course 8.

 

Sekian

Segala Puji Milik Alloh, Tuhan Semesta Alam.