aplikasi kalman filter dalam estimasi ketinggian tangki air
Post on 19-Jun-2015
1.414 Views
Preview:
DESCRIPTION
TRANSCRIPT
APLIKASI KALMAN FILTER DALAM ESTIMASI
KETINGGIAN TANGKI AIR
Yuniar Gitta Pratama (13307124)
Program Studi Teknik Fisika
Institut Teknologi Bandung, 40132
1. ABSTRAKS
Dalam proses pengukuran (akusisi), noise merupakan bagian penting yang harus diperhatikan. Noise yang cukup besar
nilainya dapat mengganggu jalannya sistem kontrol. Oleh karena itu untuk mendapatkan sinyal sebenarnya terpisah dari
kumpulan noise dibutuhkan teknik pemfilteran. Persoalan pemfilteran adalah ekstraksi sinyal yang diinginkan dari noisenya.
Apabila spektrum sinyal dan noisenya tidak saling tumpang tindih, maka jenis filter High Pass dan Low Pass masih dapat
dilakukan bergantung terhadap frekuensi relatif sinyal terhadap noise. Pada tahun 1960 R.E Kalman memperkenalkan solusi
rekursif untuk masalah pemfilteran data linear diskrit. Teknik ini sangat handal dalam melakukan konvergensi data.
Kontrol ketinggian (level) fluida adalah kontrol dasar dalam semua industri. Ketidakakuratan data pengukuran dan noise
dalam pengukuran dapat berakibat fatal dalam suatu proses yang kompleks. Teknik Filter Kalman merupakan jenis filter
yang handal untuk mengatasi noise hasil pengukuran. Dengan penerapan Kalman Filter dalam kontrol ketinggian air
diharapkan dapat mengurangi resiko kesalahan akusisi data.
2. KALMAN FILTER
Kalman Filter adalah metoda matematik yang
dikenalkan oleh Rudolf E. Kalman. Filter ini bertujuan
untuk mengamati noise yang terdapat dalam sinyal
(biasanya Gaussian Noise). Kalman Filter sangat handal
dalam menghilangkan noise, khususnya noise yang
tumpang tindih (baca : frekuensi dekat) dengan sinyal
utamanya.
2.1. Aplikasi Kalman Filter
Kalman Filter merupakan perangkat yang powerfull
dalam mengontroll sistem ber-noise. Dengan
menggunakan Kalman filter maka noise pada input data
akan berkurang pada data keluaran. Kalman Filter
biasanya digunakan dalam bidang kedirgantaraan yang
membutuhkan sistem kontrol yang canggih. Berikut
contoh aplikasi Kalman filter :
a. Tracking objek
b. Sistem navigasi
c. Filtrasi noise hasil pengukuran sensor
d. Perbaikan cacat gelombang saat transmisi
2.2. Prinsip Estimasi Kalman Filter
Estimasi keadaan adalah metoda untuk memprediksi
kelakuan sistem dan membandingkannya dengan
kelakuan sistem secara aktual untuk menentukan
keadaan mana yang paling meyerupai keadaan
sebenarnya (Simon, 2006).
State Observer adalah sebuaha alat atau program yang
digunakan untuk mengestimasi variabel keadaan.
Metode perancangan state observer dapat dilakukan
dengan metode pole placement maupun dengan estimasi
optimal yang dikenal dengan nama metode Kalman
Filter.
Gambar 1. Letak Kalman Filter sebagai Observer
2.3. Algoritma Kalman Filter
Kalman Filter mempunyai dua fasa, yaitu fasa prediksi
(predict) dan fasa pembaruan (update). Prediksi
memakai estimasi keadaan dari waktu sebelumnya
untuk mendapatkan nilai estimasi pada saat ini. Di
dalam fasa pembaruan, informasi mengenai pengukuran
pada saat ini digunakan untuk memperbaiki prediksi
sehingga diharapkan estimasi keadaan akan lebih akurat.
Persamaan waktu diskrit Kalman filter :
Fasa prediksi
Prediksi dari state
Prediksi dari kovarian
Fasa pembaruan
Perbaruan dari estimasi state
Inovasi atau Residual
Residual merepresentasikan perbedaan prediksi
dari pengukuran dan pengukuran yang sebenarnya.
Residual yang bernilai nol menunjukkan bahwa
antara nilai pengukuran dan estimasi nilainya
sudah sama.
Pembaruan gain kalman
(
)
adalah sebuah gain inovasi yang digunakan
untuk meminimumkan nilai kovarian dari estimasi
kesalahan jika diberikan pengukuran yang
mengandung banyak noise.
Perbaruan estimasi kovarian
( )
Keterangan :
: estimated state
F : state transition matrix
u : control variables
B : control matrix
P : state variance matrix
Q : process variance matrix
y : measurement variables
H : measurement matrix
K : kalman gain
R : measurement variance matrix
Subskirp t|t untuk waktu sekarang, t-1|t-1 untuk periode
sebelumnya, dan t|t-1 untuk step menengah.
3. PEMODELAN PROSES
Gambar 2. Contoh Pengukuran Ketinggian Air
Proses yang akan diamati adalah proses yang cukup
sederhana, yaitu pengukuran ketinggan air dalam tangki
dengan menggunakan bola apung. Pada proses ini
terdapat beberapa kemungkinan :
a. Proses pengisian, pengosongan atau statis,
yaitu ketika ketinggian tangki meningkat,
menurun atau tidak berubah
b. Proses pengadukan atau stagnan, yaitu
ketinggian relatif dari pelampung pada
ketinggian rata-rata tangki berubah terhadap
waktu atau statis.
3.1. Model Statik
3.1.1. Tangki dengan Ketinggian Air Konstan
( )
a. Model State Proses
Pada kondisi ini ketinggian air pada tangki konstan,
maka : . Dari persamaan sebelumnya makan
variabel keadaan (state variable) dapat direduksi
menjadi skalar, yaitu , dengan adalah perkiraan
ketinggian air . Dengan menggunakan asumsi model
konstan oleh karena itu , maka dan
, untuk semua nilai . Kontrol variabel dan
tidak digunakan karena keduanya bernilai nol.
b. Model Proses Pengukuran
Dalam model ini terdapat ketinggian pelampung yang
direpresentasikan dengan . Dalam beberapa
kasus biasanya dgunakan pengukuran yang berskala
contohnya dalam pengukuran mekanis 1cm sebenarnya
merepresentasikan 10cm dalam ketinggian cairan di
tangki. Untuk mempermudah maka dapat diasumsikan
pengukurang menggunakan skala yang sama seperi
dalam perkiraan state , yaitu .
c. Model Noise
Untuk pemodelan noise kita mengasumsikan noise
berasal dari pengukuran, yaitu . Proses dalam
model ini adalah skalar, oleh karena itu . Proses
tidak cukup bagus karena terdapat noise, maka akan
disetel noise .
d. Pengujian Filter
Dari persamaan dari halaman sebelumnya :
Fasa prediksi
Fasa pembaruan
( )
( )
( )
Filter sekarang sudah terdefinisi. Maka untuk pengukian
pertama kita set ketinggian tangki . Lalu
inisiasi state dengan angka yang sembarangan, artinya
variansi yang tinggi karena benar-benar saat kasus tidak
diketahui : dan . Penginisiasian
dengan variabel yang berarti (tidak sembarangan) akan
diperoleh konvergensi yang lebih cepat. Noise pada
sistem adalah .
Maka didapatkan hasil perhitungan
Prediksi Pembaruan
t xt|t-1 pt|t-1 yt Kt xt|t pt|t
1 0.0000 1000.0001 0.9349 0.9999 0.9348 0.1000
2 0.9348 0.1001 1.0847 0.5002 1.0098 0.0500
3 1.0098 0.0501 1.0521 0.3339 1.0239 0.0334
4 1.0239 0.0335 1.0128 0.2509 1.0211 0.0251
5 1.0211 0.0252 0.9759 0.2012 1.0120 0.0201
6 1.0120 0.0202 1.0755 0.1682 1.0227 0.0168
7 1.0227 0.0169 1.0643 0.1447 1.0287 0.0145
8 1.0287 0.0146 1.0357 0.1272 1.0296 0.0127
9 1.0296 0.0128 0.9164 0.1136 1.0168 0.0114
10 1.0168 0.0115 0.9511 0.1028 1.0100 0.0103
11 1.0100 0.0104 1.0489 0.0941 1.0137 0.0094
12 1.0137 0.0095 0.9454 0.0868 1.0077 0.0087
13 1.0077 0.0088 1.0367 0.0807 1.0101 0.0081
14 1.0101 0.0082 1.0873 0.0755 1.0159 0.0076
15 1.0159 0.0077 1.0011 0.0711 1.0149 0.0071
... ... ... ... ... ... ...
Walaupun terdapat banyak noise yang terlibat dalam
pengukuran, namun Kalman Filter dapat membuat hasil
lebih smooth.
3.1.2. Tangki dengan Penambahan Ketinggian Air
Konstan ( )
Pada kondisi ini tangki diisi dengan debit yang konstan
sehingga menyebabkan perubahan ketinggian air yang
konstan, maka :
sehingga .
Dengan asumsi dan pada saat mula-mula
kosong ( ). Kondisi ini sama seperti kondisi pada
subbab 3.1.1. Dengan asumsi dan variasi
untuk melihat responnya.
Pada q=0,001
Pada q = 0,01
Pada q = 0,1
dari ketiga grafik ini terlihat bahwa pemodelan yang
jelek dapat menghasilkan prediksi yang jelek pula.
Kalman Filter adalah suatu desain filter untuk
menghilangkan noise yang terdapat salam pengukuran.
3.2. Model Pengisian
a. Model State Proses
Untuk mendapatkan hasil yang lebih bagus maka model
Kalman Filter dari model akan di ubah
menjadi continuous process transition.
( )
[
]
Dengan adalah ketinggian air L, dan
adalah
perkiraan kecepatan kenaikan ketinggian air saat
pengisian dan merepresentasikan pengisian tangki
kontinu pada kecepatan (kenaikan ketinggian) .
Untuk membuat proses diskrit maka matriks akan
dibuat sebagai time-discrete. Dan memberlakukan
adalah kosong dalam semua komponen untuk .
[
]
untuk semua . Dan kita akan mengabaikan nilai
dan lagi.
b. Model Proses Pengukuran
Dalam kasus ini tidak bisa mengukur kecepatan
pengisian secara langsung. Di sini juga masih
digunakan asumsi bahwa terdapat noise dalam
pengukuran L. Maka dari itu :
( )
( )
c. Model Noise
Proses pengukuran juga masih mendapatkan noise
yaitu . Karena proses telah dirubah maka model
noise juga diubah menjadi :
[
]
dengan adalah noise pada pengisian. Proses kontinu
dapaat didekati dengan proses time-discrete
menggunakan :
( ) ∫
Persamaan ini dapat diterjemahkan menjadi bentuk
diskrit .
[
]
Untuk kemudahan digunakan sampling ,
sehingga :
[
]
[
⁄
⁄
⁄
]
Proses kovarian (p) juga berubah menjadi matriks :
[
]
d. Pengujian Filter
Dari data – data sebelumnya maka didapatkan persaman
sebagai berikut
Fasa prediksi
Fasa pembaruan
( )
(
)
( )
Pada kali diasumsikan bahwa noise , dan akurasi
noise proses . Saat inisiasi diberikan
[ ] dengan variansi mula – mula :
[
]
Didapatkan hasil
dari grafik ini terlihat walaupun diberikan inisiasi yang
jelek, namun akan dihasilkan hasil yang smooth
Pada ketinggian yang konstan
3.3. Model Pengadukan
Pada kasus ini adalah contoh ekstrim ketika sistem
konstan tapi teraduk sehingga permukaan air
berglombang – gelombang. Sehingga dapat dimodelkan
menjadi :
( )
dengan :
Dengan menggunakan Kalman Filter maka didapatkan :
Kalman filter juga dapat mengikuti pola nilai
pengukuran, sehingga dalam grafik terlihat adanya pola
sinusoida yang cukup smooth yang dihasilkan dari
Kalman Filter.
Namun amplitudo dari sinusoida ini akan semakin
mengecil, hal ini dikarenakan sifat Kalman Filter yang
berusaha untuk konvergen menjadi satu nilai. Fluktuasi
sinusoida disini dianggap sebagai noise sehingga perlu
diredam.
4. KESIMPULAN
a. Kalman filter barusaha untuk menghilangkan noise
hasil pengukuran dan membuat nilai konvergem.
Pada kasus pengadukan, nilai sinusoida yang
merupakan nilai sebenarnya pun dianggap sebagai
noise sehingga amplitudo semakin mengecil dan
semakin konvergen.
b. Inisiasi yang baik akan mempercepat konvergensi
hasil filter, namun dengan pemberian nilai
sembarang, Kalman Filter ini sangat handal untuk
melakukan konvergensi nilai.
c. Untuk sistem yang dianggap linear dan step waktu
yang kecil, pemodelan linear sangatlah cukup.
Namun untuk pemodelan yang memiliki step
waktu besar bisa mengakibatkan hasil yang
‘tertingal’ seperti yang tejadi pada input sinusoida
saat pengadukan.
Daftar Pustaka
Firmansyah, Studi tentang Penerapan Filter Kalman
untuk Detektor Kerusakan Instrumen Pengukur
dalam Sistem Kontrol Boiler, Program Studi
Teknik Fisika, 1989.
Friedland, Bernard, Control System Design : An
Introduction to State-Space Methods, New York,
McGraw-Hill, 2005.
Kalman, R. E, A New Approach to Linear Filtering
and Prediction Problems. ASME, 1960.
Ogata, Katsuhiko, Modern Control Engineering, 2nd
ed. Prentice-Hall inc, 1990.
Wiratnaningtyas, Kusumatuti, Penggunaan Kalman
FIlter untuk Estimasi Ketinggian dan Bukaan
Valve Tangki Level pada Mini Plant, Program
Studi Teknik Fisika, 2009.
Source Code Komputasi dengan Scilab 1.5.2
Pada Kasus 3.1.1
clc; clear;
L = 1; x0 = 0; p0 = 1000; q = 0.0001, r = 0.1;
tmax = 50;
mprintf(" # | x1 | p2 | y | K | x2 | p2 ");
for t=1:tmax
if (t==1)
x1 = x0;
p1 = p0 + q;
else
x1 = x2;
p1 = p2 + q;
end
y = L - r + 2*r*rand();
if (y<0) y=0; end
K = p1*((p1+r)^-1);
x2 = x1+K*(y-x1);
p2 = (1-K)*p1;
mprintf(" %2d | %9.4f | %9.4f | %9.4f | %9.4f | %9.4f | %9.4f\n", t, x1, p1, y, K, x2, p2);
measure(t) = y; predict(t) = x1; realvalue(t) = L;
end
t = [1:tmax]';
plot2d(t, [measure predict realvalue]);
hl=legend(['Pengukuran';'Prediksi';'Nilai Sebenarnya'], 4);
xtitle('Prediksi Kalman Filter', 'waktu', 'ketinggian air');
Pada Kasus 3.1.2
clc; clear;
L0 = 0; c = 0.1; x0 = 0; p0 = 1000; q = 0.1; r = 0.1;
tmax = 50;
mprintf(" # | x1 | p2 | y | K | x2 | p2 ");
for t=1:tmax
if (t==1)
L = L0;
x1 = x0;
p1 = p0 + q;
else
L = L + c;
x1 = x2;
p1 = p2 + q;
end
y = L - r + 2*r*rand();
if (y<0) y=0; end
K = p1*((p1+r)^-1);
x2 = x1+K*(y-x1);
p2 = (1-K)*p1;
mprintf(" %2d | %9.4f | %9.4f | %9.4f | %9.4f | %9.4f | %9.4f | %9.4f\n", t, L, x1, p1, y, K, x2,
p2);
measure(t) = y; predict(t) = x1; realvalue(t) = L;
end
t = [1:tmax]';
plot2d(t, [measure predict realvalue]);
hl=legend(['Pengukuran';'Prediksi';'Nilai Sebenarnya'], 4);
xtitle('Prediksi Kalman Filter (q=0,1)', 'waktu', 'ketinggian air');
Pada Kasus 3.2 (ramp)
clc; clear;
L0 = 0; c = 0.1; x0 = [0; 0]; r = 0.1; qf = 0.00001;
tmax = 50;
H = [1 0]; Ft = [1 1; 0 1]; Q = qf*[1/3 1/2; 1/2 1]; P0 = [1000 0; 0 1000];
mprintf(" # | L | x1 | y | x2 ");
for t=1:tmax
if (t==1)
L = L0;
x1 = Ft*x0;
P1 = Ft*P0*Ft' + Q;
else
L = L + c;
x1 = Ft*x2;
P1 = Ft*P2*Ft' + Q;
end
y = (L - r + 2*r*rand());
if (y<0) y=0; end
K = P1*H'*((H*P1*H'+r)^-1);
x2 = x1+K*(y-H*x1);
P2 = (1-K*H)*P1;
mprintf(" %2d | %9.4f | %9.4f | %9.4f | %9.4f\n", t, L, x1(1), y, x2(1));
measure(t) = y; predict(t) = x1(1); realvalue(t) = L;
end
t = [1:tmax]';
plot2d(t, [measure predict realvalue]);
hl=legend(['Pengukuran';'Prediksi';'Nilai Sebenarnya'], 4);
xtitle('Prediksi Kalman Filter', 'waktu', 'ketinggian air');
Pada Kasus 3.2 (konstan)
clc; clear;
L0 = 1; c = 0; x0 = [0; 0]; r = 0.1; qf = 0.00001;
tmax = 50;
H = [1 0]; Ft = [1 1; 0 1]; Q = qf*[1/3 1/2; 1/2 1]; P0 = [1000 0; 0 1000];
mprintf(" # | L | x1 | y | x2 ");
for t=1:tmax
if (t==1)
L = L0;
x1 = Ft*x0;
P1 = Ft*P0*Ft' + Q;
else
L = L + c;
x1 = Ft*x2;
P1 = Ft*P2*Ft' + Q;
end
y = (L - r + 2*r*rand());
if (y<0) y=0; end
K = P1*H'*((H*P1*H'+r)^-1);
x2 = x1+K*(y-H*x1);
P2 = (1-K*H)*P1;
mprintf(" %2d | %9.4f | %9.4f | %9.4f | %9.4f\n", t, L, x1(1), y, x2(1));
measure(t) = y; predict(t) = x1(1); realvalue(t) = L;
end
t = [1:tmax]';
plot2d(t, [measure predict realvalue]);
hl=legend(['Pengukuran';'Prediksi';'Nilai Sebenarnya'], 4);
xtitle('Prediksi Kalman Filter', 'waktu', 'ketinggian air');
Pada Kasus 3.3
clc; clear;
L = 1; x0 = 0; p0 = 1000; q = 0.1, r = 0.3;
c = 0.5; f = 0.05; l = 1
tmax = 50;
mprintf(" # | x1 | p2 | y | K | x2 | p2 ");
for t=1:tmax
if (t==1)
x1 = x0;
p1 = p0 + q;
else
x1 = x2;
p1 = p2 + q;
end
L = c*sin(2*%pi*f*t)+l;
y = L - r + 2*r*rand();
if (y<0) y=0; end
K = p1*((p1+r)^-1);
x2 = x1+K*(y-x1);
p2 = (1-K)*p1;
mprintf(" %2d | %9.4f | %9.4f | %9.4f | %9.4f | %9.4f | %9.4f\n", t, x1, p1, y, K, x2, p2);
measure(t) = y; predict(t) = x1(1); realvalue(t) = L;
end
t = [1:tmax]';
plot2d(t, [measure predict realvalue]);
hl=legend(['Pengukuran';'Prediksi';'Nilai Sebenarnya'], 4);
xtitle('Prediksi Kalman Filter', 'waktu', 'ketinggian air');
top related