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 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 :
B P Q y H K R
: control matrix : state variance matrix : process variance matrix : measurement variables : measurement matrix : kalman gain : 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
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
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
a.
dengan
Ketinggian
Air
Konstan
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.
Pada q = 0,01
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,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
Persamaan ini dapat diterjemahkan menjadi bentuk diskrit .
[ ] ⁄⁄ ⁄
Untuk kemudahan sehingga :
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 lagi.
b.
Proses pengukuran juga masih mendapatkan noise yaitu . Karena proses telah dirubah maka model noise juga diubah menjadi :
dengan
d.
Pengujian Filter
proses
̂ ̂ ̂ ̂ ̂ ( )
Fasa prediksi
Pada kali diasumsikan bahwa noise , dan akurasi noise proses . Saat inisiasi diberikan dengan variansi mula – mula :
adalah noise pada pengisian. Proses kontinu
dapaat didekati menggunakan :
Proses kovarian (p) juga berubah menjadi matriks :
Fasa pembaruan
Model Noise
dengan
,
– data sebelumnya maka didapatkan persaman Dari data – data sebagai berikut
Model Proses Pengukuran
sampling
. Dan kita akan mengabaikan nilai
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.
digunakan
time-discrete
Didapatkan hasil
Dengan menggunakan Kalman Filter maka didapatkan :
dari grafik ini terlihat walaupun diberikan inisiasi yang jelek, namun akan dihasilkan hasil yang smooth
Kalman filter juga dapat mengikuti pola nilai pengukuran, sehingga dalam grafik terlihat adanya pola sinusoida yang cukup smooth yang dihasilkan dari Kalman Filter.
Pada ketinggian yang konstan
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. a.
3.3. Model Pengadukan b. Pada kasus ini adalah contoh ekstrim ketika sistem konstan tapi teraduk sehingga permukaan air berglombang – gelombang. Sehingga dapat dimodelkan menjadi :
dengan :
c.
KESIMPULAN 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. Inisiasi yang baik akan mempercepat konvergensi hasil filter, namun dengan pemberian nilai sembarang, Kalman Filter ini sangat handal untuk melakukan konvergensi nilai. 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(" # | for t=1:tmax if (t==1) x1 = x0; p1 = p0 + q; else x1 = x2; p1 = p2 + q; end
x1
|
p2
|
y
|
K
|
x2
|
p2
");
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(" # | for t=1:tmax if (t==1) L = L0; x1 = x0; p1 = p0 + q; else L = L + c; x1 = x2; p1 = p2 + q; end
x1
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;
|
p2
|
y
|
K
|
x2
|
p2
");
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 mprintf(" # | for t=1:tmax if (t==1) L = L0; x1 = Ft*x0; P1 = Ft*P0*Ft' else L = L + c; x1 = Ft*x2; P1 = Ft*P2*Ft' end
1; 0 1]; Q = qf*[1/3 1/2; 1/2 1]; P0 = [1000 0; 0 1000]; L | x1 | y | x2 ");
+ Q;
+ Q;
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(" # | for t=1:tmax if (t==1) x1 = x0; p1 = p0 + q; else x1 = x2; p1 = p2 + q; end
x1
|
p2
|
y
|
K
|
x2
|
p2
");
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');