Apa itu Kalman Filter?


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 = 10×10³m²/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.

 

About Junot D. Ojong

Author is a control systems engineer at a private company in Jakarta.
This entry was posted in Ah, teori! and tagged , , , , , , , . Bookmark the permalink.

19 Responses to Apa itu Kalman Filter?

  1. Pingback: Kalman Filter: Ketika Noise tak lagi Putih | Akirajunto's Blog

  2. Pingback: Kalman Filter + LQR = Linear Quadratic Gaussian (LQG) | Akirajunto's Blog

  3. mulyadi says:

    Maaf mas….
    mohon bantuannya….
    saya justru bermasalah dalam menghitung errornya, baik error dari observasi maupun error modelnya yaitu Sw dan Sv.

    Dari artikel mas:
    Sw = 4 (m/sec²)²/Hz dan Sv = 10×10³m²/Hz.

    Saya mohon penjelasan dengan variabel ini, darimana kita dapatkan?

  4. mulyadi says:

    Memang banyak penjelasannya dari text-text yang saya baca… cuman berakhir dengan rumus yang membuat saya ngambang, nggak bisa saya pahami. kalau ada aplikasi sederhana dalam menghitung Sw dan Sv saya sangat berterima kasih mas, misalnya kasus sederhana free fall body…. langsung dengan angka-angkanya…

    anyway… terima kasih banyak mas atas respon nya….

  5. Riyadi says:

    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])

    • Terima kasih Mas Riyadi atas pertanyaannya. Sori banget nih saya baru format komputer saya, jadi matlabnya belum diinstall. Akan saya jawab secepat mungkin. Mohon bersabar ya.

      • Riyadi says:

        Gimana Mas…? Apa yang salah di code-nya?

      • Tidak ada yang salah dengan kode punya mas riyadi. Hanya berbeda sedikit saja dengan simulasi saya.

        1. Kalman Gain saya adalah steady state kalman gain. Jadi nilainya konstan sepanjang simulasi. Sedangkan punya mas itu kalman gainnya time-variant.

        2. Simulasi saya menggunakan simulink, sedangkan mas punya pakai m-file. Jadi ada perbedaan metode numerik di sini sehingga hasilnya tidak akan sama persis.

  6. bakti says:

    Maaf mas saya kurang paham dengan metode kalman ini. Saya baru belajar, tapi isinya matriks semua, saya jadi bingung. Gini aja mas, bagaimana memprediksikan data berikut? Misalnya datanya adalah 0,1,3,2,2,4,3,5,6,7,7,6,8,8,9. Dia mempunyai data yang naik, tetapi tidak stabil (ada noise). Supaya datanya bagus, itu gimana? Mohon bantuannya mas🙂

    • Untuk menerapkan kalman filter, kita harus tahu model dari sistem yang kita pakai, Mas Bakti. Kalau hanya data saja, kita tidak bisa menggunakan metode ini.
      Kalau kasus yang Mas berikan, saya pikir bisa dengan mengextrapolasi datanya, jadi data-data berikutnya bisa diestimasi berdasarkan trending data yang ada.

  7. nagas says:

    Mas salam kenal, saya berencana tugas akhir di bidang ini juga, pengen bertanya
    1. mas Karman filter, apakah disebut model stokastik jga mas?
    2, mas saya punya data pengukuran seismik di TA saya, saya ingin menggunakan Algoritma ini untuk membuat model inversinya, mohon pencerahan mas, apalagi yang harus sya lakukan mengingat ratusan paper yang saya baca terbilang berat untuk dipahami filosofinya…
    3. model apa yang harus saya terapkan seblum memakai “extend karman filter”ini mas..

  8. Salam kenal juga, Mas.

    1. Maaf nih saya benar-benar hanya belajar sedikit tentang Kalman Filter (jadi pertanyaan nomor 3 saya terus terang ga bisa menjawabnya). Menurutku, kalman filter bisa dibilang sebagai stochastic model karena pemodelan kalman filter biasa memasukkan random variable ke dalamnya.

    2. Mmm, kalau untuk pemodelannya terus terang saya belum tahu caranya dengan Kalman Filter. Dulu saya pernah melakukan pemodelan tetapi dengan metode lain, yakni dengan metode LMS (Least Mean Square).

    Semoga sedikit terbantu.

  9. R says:

    mas maaf salam kenal, saya ada tugas kuliah mengenai kalman filter untuk object tracking. mulai dari pengertian, teori, rumus dan contoh perhitungannya. bisa tolong dibantu mas? saya cari referensi lain agak susah dimengerti. makash mas sebelumnya🙂

  10. sus darminasari says:

    mas, mau nanya, kalo kalman filter ini penerapannya apakah harus pada sistem yang nonlinear atau linear??
    makasih. btw, nice artikel, sgt membantu.

    • cartenz says:

      sedikit membantu : berdasarkan kedudukan ruang Kalman Filter (KF) dibagi menjadi dua metode yaitu metode linear KF dan non linear KF. Metode non linear KF dibagi lagi menjadi dua yaitu extended kalman filter dan unscented filter.

      referensi : http://eprints.uny.ac.id/2362/1/FILTER_KALMAN_DAN_APLIKASINYA.pdf

      saya juga baru belajar😀

      • Darminasari Sus says:

        mas, boleh minta alamat email nya? saya ada tugas matlab LQR, tapi pake m-file. setiap kali running, mesti error mulu. pengen kirimin listing programnya, supaya dikoreksi bersama kira2 bagian mana yg keliru. terimakasih mas.

  11. ari says:

    mas,,,salam knal,,,nama saya ari,,,
    kalman filter,,,untuk penerapan robotik gmana ya?kalo pake sensor min imu9?dengan arduino

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s