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:
- Memodelkan data pengukuran dengan Auto-Regressive orde 2
- Merancang Kalman filter dengan melibatkan model tersebut
- Mengapa perlu memodelkan data? karena Kalman filter memerlukan model sistem/data untuk membuat koreksi.
- Mengapa model AR yang digunakan? karena hanya data nilai ukur terhadap waktu yang diketahui, tidak ada variabel input.
- Mengapa Kalman filter? karena Kalman filter sangat ampuh untuk white noise, dan umumnya noise pengukuran memuat white noise.
Kode untuk import data
load('data.mat');
y=data(:,2); % data kecepatan
t=data(:,1); % waktu
n=length(y);
File data terdiri dari dua kolom, kolom 1 memuat waktu, dan kolom 2 memuat data kecepatan.
Kode untuk model Auto-Regressive [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
pi=inv(X'*X)*X'*y;
Variabel pi memuat parameter-parameter model AR.
Kode untuk Kalman Filter [2]
Q=eye(2)*0.0001;
R=eye(1)*0.01;
A=[pi(2) pi(3);1 0];
F=[pi(1) 0]';
H=[1 0];
xmin=[0 0]';
Pmin=0.01*eye(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=(eye(2)-K*H)*P;
zest(i)=H*x;
xmin=x;
Pmin=P;
end
Variable zest mewakili data pengukuran yang telah difilter.
Apabila kode tersebut saya jalankan, maka perbandingan datanya nampak seperti ini
Sinyal biru adalah data asli pengukuran sedangkan sinyal merah adalah data setelah difilter dengan Kalman. Bila nilai R nya saya perbesar lagi, maka efek filter akan lebih signifikan. Tentang bagaimana pertimbangan menentukan nilai Q dan R pada Kalman filter sudah pernah saya cerita di sini [3][4]. Alhamdulillah.
REFERENSI
[1] http://mnurq.blogspot.co.id/2017/12/memodelkan-data-pengukuran-dengan-auto.html
[2] http://mnurq.blogspot.co.id/2017/12/kalman-filter-untuk-model-auto.html
[3] http://mnurq.blogspot.co.id/2014/03/aplikasi-kalman-filter-diskrit-estimasi.html
[4] http://mnurq.blogspot.co.id/2016/06/meninjau-kembali-kalman-filter-untuk.html
No comments:
Post a Comment