You are on page 1of 6

Apa itu Kalman Filter?

Posted on November 21, 2010by Junot D. Ojong

2 Votes
Kalian pasti pernah dengar kan istilah Kalman Filter? Filter ini sepertinya cukup
terkenal (entah kenapa), dipakai di segala bidang, termasuk teknik kendali. Mau tahu
kalman filter itu apa? Jawabannya adalah
Jreng2 Estimator!
Ya, kalman filter ini tak lain adalah hanya sebuah estimator. Istimewanya adalah
kalman filter mengestimasi state dari output/sensor plant yang kotor oleh noise. Entah
mengapa disebut sebagai filter, mungkin karena bisa dibilang dia memfilter noise dari
sensor ya. Secara singkat (tanpa babibu penurunan rumus), kalman filter itu seperti ini:
Misalkan ada sebuah plant:

u adalah control input plant, w adalah gangguan pada plant, v adalah noise pada
sensor, dan m adalah hasil bacaan sensor. w dan v diasumsikan sebagai white
noise dengan spectral density Sw dan Sv. w dan v juga diasumsikan berasal dari
sumber yang berbeda (independen).
Objektif kalman filter adalah mengestimasi state x dari hasil pengukuran m dengan
meminimisasi error estimasi kuadrat:

Dari objektif itu, kita peroleh kalman filter yang adalah seperti ini:

dengan L adalah kalman gain:


dan Q adalah solusi persamaan Ricatti:

Jadi deh! Kalau diperhatikan, kalman filter bisa dibilang kasus khusus dari
estimasi H. Bagi yang sudah baca post saya tentang estimasi H, di situ ada
parameter . Kalau , estimator H berubah menjadi kalman filter. Kalman filter
juga bisa disebut sebagai estimator H2 karena meminimisasi 2-norm error
estimasi. Sekarang mari kita lihat contohnya.

Contoh

Mari kita terapkan kalman filter untuk estimasi jarak dan kecepatan pesawat oleh radar
(seperti pada contoh estimasi H).

r(t) adalah jarak pesawat, m(t) adalah hasil pengukuran radar yang dikotori noise v(t).
Kita akan mengestimasi y(t) yang tak lain adalah states dari plant.
Asumsi w(t) dan v(t)adalah white noise dan spectral density-nya Sw = 4 (m/sec)/Hz
dan Sv = 1010m/Hz.
Kalman gainnya adalah (dengan MatLab):
>> A = [0 1; 0 0]; Cm = [1 0]; Bw = [0; 1];

>> Sv = 4; Sw = 10000;

>> Q = are(A, Cm*1/Sv*Cm, Bw*Sw*Bw);

>> L = Q*Cm/Sv

L=

10.0000

50.0000

Disimulasikan dengan |w(t)| < 2 dan |v(t)| < 100, hasilnya seperti ini:

Referensi:
Burl, Jeffrey B. 1999. Linear Optimal Control: H2 and H Methods. Menlo Park CA:
Addison Wesley Longman.

Saya coba mengerjakan soal di atas. Tapi hasilnya belum sesuai contoh.
mohon masukan.

clc;clear;
A=[0 1;0 0];
Bw=[0;1];
Cm=[1 0];
Sw=4;
Sv=10^4;
sigma0=[10^6 0;0 400000];
tf=25;
dt=0.1;
t=0:dt:tf;
% white noise
n = length(t);
w = sqrt(Sw)*randn(1,n);
v = sqrt(Sv)*randn(1,n);
% matriks transisi
F=[-(A) (Cm)*Sv^-1*Cm;Bw*Sw*(Bw) A];
% nilai awal actual
r1(1)=10^4;
r2(1)=-150;
% menghitung kalman gain
p=1;
for t=0:dt:tf
expF=expm(F*(t));
psi11=[expF(1,1) expF(1,2);expF(2,1) expF(2,2)];
psi12=[expF(1,3) expF(1,4);expF(2,3) expF(2,4)];
psi21=[expF(3,1) expF(3,2);expF(4,1) expF(4,2)];
psi22=[expF(3,3) expF(3,4);expF(4,3) expF(4,4)];
st=(psi21+psi22*sigma0)*(psi11+psi12*sigma0)^-1;
G=st*Cm*Sv^-1;
G1(p)=G(1);
G2(p)=G(2);

p=p+1;
end
% %memplot r1 dan r2
f1=inline(r2);
f2=inline(w);
for i=1:n-1
r1(i+1)=r1(i)+dt*f1(r2(i));
r2(i+1)=r2(i)+dt*f2(w(i));
end
figure(1)
t=0:dt:tf;
plot(t,r1)
axis([0 25 0 15000])
figure(2)
plot(t,r2)
t=0:dt:tf;
axis([0 25 -500 200])
r=[r1;r2];
m = Cm*r+v;
re1(1)=9000;
re2(1)=0;
% memplot actual dengan estimate
f1a=inline(re2+G1*(m-re1));
f2a=inline(G2*(m-re1));
for i=1:n-1
re1(i+1)=re1(i)+dt*f1a(G1(i),m(i),re1(i),re2(i));
re2(i+1)=re2(i)+dt*f2a(G2(i),m(i),re1(i));
end

figure(3)
t=0:dt:tf;
plot(t,re1,t,r1)
axis([0 25 0 15000])
figure(4)
t=0:dt:tf;
plot(t,re2,t,r2)
axis([0 25 -500 200])
% memplot kalman gain
figure(5)
plot(t,G1,t,G2)
axis([0 25 0 10])

You might also like