Nghiên Cu B Lc Kalman Áp Dng Cho Bài Toán Cm Bin Nguyn Quc Đính
[email protected]
Tp. H Chí Minh, Tháng 8 năm 2008 Tóm tt ni dung Trong mt s ng dng thc t, giá tr cm bin đưa v cha rt nhiu nhiu, có th bao gm nhiu nhiu ca môi trưng, trưng, ca ngun, ngun, ca quá trình trình x lý . . . , vn đ đt ra là làm sao loi loi b đưc các nhiu này đ có đưc giá tr gn đúng vi giá tr tht ca bin cn đo nht. B lc Kalman đưc gii thiu đây như là mt b lc thích nghi thông thp đ ưc lưng giá tr trung bình ca giá tr, đng thi s tha hip gia tc đ hi t và s giao đng ca giá tr ưc lưng cũng đưc xem xét.
Mc lc 1 Gii Gii Thiu Thiu Chung Chung V V B Lc Kalma Kalman n Cho H Tuy Tuyn n Tính Tính Ri Rc Mô hình ca đi tưng tuyn tính ri rc đưc biu din thông qua h phương trình trng thái sau: xk = Axk−1 + Bu k−1 + wk−1 zk = H xk + vk
(1) (2)
Trong đó: - x: bin trng thái. - u: bin đu vào. - z: trng thái đu ra (đo lưng đưc). - w, v: nhiu quá trình và nhiu đo lưng tương ng. Gi s các nhiu quá trình w(t) và nhiu đo lưng v(t) là nhiu trng, có phương sai tương ng là Q và R. p(w) ∼ N (0, Q) p(v ) ∼ N (0, R)
(3) (4)
Vi h thng như vy, b lc Kalman tuyn tính cho phép ta ưc lưng mt cách tt nht giá tr bin trng thái xk , kí hiu là xˆk , sao cho hip phương sai ca chúng Pk đt giá tr nh nht. P k = E [ek ek T ] ek ≡ xk − x ˆk
1
(5) (6)
Thut toán Kalman cho h ri rc như sau:
Như vy ta có th nhn thy rng thut toán này gm hai bưc: bưc ưc lưng d đoán (time update) và bưc làm chính xác d đoán này (measurement update) da trên thông tin đu vào đo đưc zk . đoán đưc cp nht t giá tr ưc lưng lưng xˆk−1 Thut toán này Chú ý rng xˆ− là giá tr d đoán k đưc trình bày trên sơ đôi khi như sau:
Hình 1: Mô hình b lc Kalman cho h tuyn tính
2 Bài Bài Toá oán n Cm Cm Bin Bin Cho bài toán như sau: có mt thông s đưc đưa v t cm bin, tuy nhiên thông s này chu tác đng ca nhiu (ngun có th là t nhiu ca quá trình, nhiu đo lưng, nhiu do ngun đin cung cp, cp, do ADC . . . ). Ta Ta s thit k b lc Kalman Kalman đ ưc lưng lưng đưc gía tr tt nht giá tr tr cn đo này. Mô hình ca bài toán này: xk = Axk−1 + Bu k−1 + wk
= xk−1 + wk
(7)
Vi giá tr thu đưc z ∈ zk = H xk + vk
= xk + vk
Vi: - giá tr cn đo là x(t) 2
(8)
- tín hiu thu đưc t cm bin là z(t) - nhiu ca quá trình là w(t). - nhiu đo lưng là v(t). Các phương trình cho b lc Kalman: •
Phương trình cho quá trình "Time Update": x ˆ− =x ˆk−1 k P k− = P k−1 + Q
•
(9)
Phương trình cho quá trình "Measurement Update": K k =
P k− P k− + R
ˆk = x ˆ− + K k (zk − x ˆ− ) x k k P k = (1 − K k )P k−
(10)
Mt s gi thit đưa ra: Tín hiu cn đo là x(t) ∼ (0, 50). Vi bài toán này thì nhiu h thng là bng không, tuy nhiên đ h thng đáp ng đưc vi s thay đi nhy hơn, ta có th cho nó có mt phương sai nh. Gi s w (t) ∼ (0, 1e − 3) ↔ Q = 1e − 3. Vi nhiu ca đo lưng, trong bài toán mô phng dưi đây khi ly giá tr t cm bin ta đã cho nó mt nhiu khong 10% giá tr tht. Vic chn giá tr phương sai R(ca giá tr nhiu v(t)) nh hưng đn tc đ ưc lưng ca h thng. T phương trình tính h s Kalman K k , ta thy K k t l nghch vi R, giá tr R ln thì tc đ ưc lưng chm hơn, giá tr ưc lưng có v như ít tin tưng hơn vào giá tr đo đưc, và đương nhiên kt qu ưc lưng s phng . Còn vi giá tr R nh thì ngưc li, tc đ ưc lưng nhanh hơn, b lc tin tưng hơn vào giá tr đo đưc, đương nhiên kt qu ưc lưng ít phng hơn. Như vy vic chn thông s R khá quan trng, có th chn R cng bng mt giá tr c đnh, hoc là giá tr mm có th thay đi, ví d như thay đi theo tc đ thay đi thông s cn đo chng hn. Chn thông s ưc lưng ban đu: x(0) = 0, P 0− = 5. Ta s nhn thy giá tr ban đu x(0) là không quan trng, vì nó s t thích nghi tng bưc đ đt đn giá tr cn xác đnh như trong các mô phng bên dưi. Còn P 0− thì ch cn khác không là đưc (nu không thì giá tr ưc lưng x(t) s không t thích nghi đưc!), và ta s nhn thy giá tr này nh dn, tương ng vi giá tr ưc lưng xp x vi tr kì vng. Chương trình mô phng đưc vit bng Matlab đưc trình bày phn ph lc A. Phân tích các kt qu thu đươc t mô phng vi nhng giá tr khác nhau ca R
Kt qu mong mun là đưng lin màu đen, giá tr t cm bin là các đim màu xanh, xanh, Kt qu ưc lưng là nét lin màu đ. đ. Vi R = 1:
3
Hình Hình 2: Kt qu qu vi vi R = 1 Nhn thy tuy có tn ti nhiu khá ln nhưng kt qu thu đưc t b lc gn bng giá tr mong mun không có nhiu. Giá tr ban đu x(0) tuy chn khá xa so vi giá tr thc, nhưng quá trình là thích nghi cho thy nó t bin đi đ đt đn giá tr tt nht. Hip phương sai P gim dn theo thi gian cho thy kt qu ưc lưng gn ging vi giá tr thc ca thông s cn đo. Sau khong 50 bưc thì bt đu hi t,bng 0.031, so vi giá tr gán ban đu là 1.
Hình 3: R = 1, đ th ca Covaria Covariance nce P k P k gim dn t giá tr ban đu là 1 v 0.031.
Vi R = 10: Bây gi tăng giá tr R lên 10 ln, K = 10, thy rng b lc chm đáp ng hơn. Tuy nhiên đưng ưc lưng phng hơn. Điu này cho thy la chn R ln vi nhng thông s có tc đ thay đi chm. Giá tr P hi t bng 0.095.
4
Hình Hình 4: R = 10 Vi R = 0.1: Bây gi gim R xung 100 ln, K = 0.1, t kt qu ta thy kt qu ưc lưng không đưc phng cho lm, nhưng tc đ ’hc’ khá nhanh. R nh thích hp cho thông s có tc đ thay đi nhanh. Giá tr P hi t bng 0.0095.
Hình Hình 5: 5: R = 0.01 0.01 Giá tr đu vào thay đi: Bây gi ta không cho đu vào là mt hng s c đnh na, mà có s thay đi. Ví d dưi đây cho nó bin đi theo hàm bc nht. Ta vn gi nguyên mô hình như trên (mô hình trên mô t cho h thng mà đu vào là hng s). Ta thy vi các giá tr R nh thì kt qu ưc lưng vn bám theo đưc giá tr mong mun. Ví d vi R = 0.1:
5
Hình Hình 6: Vi giá tr tr nh R. Vi R = 10: thì kt qu không tt như vy:
Hình Hình 7: Vi giá tr tr ln R. S dĩ đây tôi không chn li mt mô hình cho bài toán vì trong bài toán mà chúng ta cn gii quyt mc nhiên liu thay đi không theo mt quy lut tuyn tính c đnh nào c. Nhn xét: •
B lc Kalman cho thy nó có kh năng gii quyt tt vi nhiu cho mô hình ca bài toán đã bit trưc đưc mô hình.
•
Vic chn thông s R là quan trng, đòi hi chúng ta phi dung hòa gia tc đô hi t và đ phng ca kt qu ưc lưng.
6
Tài liu [1] Leslie Lamport, An Introduction to the Kalman filter . Department of Computer Science, University of North Carolina at Chapel Hill, 2006 [2] http://en.wikipedia.org/wiki/Kalman_filter
7
Ph Lc A Chương trình Matlab mô phng b lc Kalman function function kalman( kalman( number) number) %input for i=1:numb i=1:number er input( input(i) i) = 10; end %process %process noise noise and measurem measurement ent noise noise w = 1e-5; %process noise, may it equal to Zero v = 1e0; %mesurement noise %equivelent %equivelent covariance covariance Q = 1e-3; R = 1; %initial %initial value value xpre = 0; Ppre =1;
%chosing this value is not importance. %must different from Zero
%to plot plot the result result time = []; % timing pos = []; % measurement result, from sensor pose poses st = []; % meas easure urement ment esti estim mate ate, aft after Kalm Kalma an fil filter ter Pest = []; %loop for i=1:numb i=1:number er %making %making input input and output output x = input input(i (i) ) + w*ra w*rand ndn; n; z = x + v*randn; %measurement %measurement update (correct) K = Ppre* inv(Ppre + R); xpre = xpre + K*(z - xpre); P = (1 - K)*Ppre; %update %update for ploting ploting time = [time i]; pos = [pos z]; posest posest = [posest [posest xpre]; Pest = [Pest P]; %time %time update update (predi (predict ct for next next step) step) xpre xpre = xpre; xpre; Ppre = P + Q; end clf plot(tim plot(time, e, pos, ’*’) hold on
8
plot(time,posest,’LineWidth’,3,’MarkerEdgeColor’,’r’, ’MarkerFaceColor’,’g’,’MarkerSize’,20,’Color’,’r’); plot(time, input,’LineWidth’, input,’LineWidth’,2,’MarkerE 2,’MarkerEdgeColor’, dgeColor’,’r’, ’r’, ’MarkerFaceColor’,’g’,’MarkerSize’,20,’Color’,’k’); grid on
9