curs_12_filtrul kalman

Upload: alin-iosif

Post on 09-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    1/11

    Curs 12FILTRUL KALMAN

    NecesitateEste cunoscut c un observer de stare are ecuaia

    r

    ! &% % % x Ax Bu K y Cx (1)

    unde termenul r %K y

    x , conine diferena dintre ieirea sistemului (msurat) y i

    ieirea observerului, %y = %

    x, dedus pe baza estimrii %x. Aceast diferen este

    amplificat cu Kr, care reprezint parametrul specific al observerului. El se calculeaz

    astfel nct eroarea de estimare, ! %e x x, care satisface ecuaia

    ee A K C e&! ; (2)s conduc la o dinamic impus de anulare a erorii. Dinamica de anulare a erorii depinde

    de valorile proprii ale matricii eA K C . Deci, prin alocarea polilor sistemului (2) se

    impune viteza cu care starea estimat %xconvergespre starea real x. Dac polii alocai

    sunt apropiai de axa imaginar, amplificrile incluse n vectorul Ke sunt mici, iar

    dinamica de anulare a erorii este lent. Firete, este de dorit ca aceast dinamic s fierapid, ceea ce conduce la impunerea unor poli deprtai de axa imaginar. In acest caz,amplificrile incluse n vectorul Ke vor fi mari. Deoarece amplificarea (vectorial) Keamplific direrena y Cx %, iar ieirea y este conine o component de zgomot, este clarc amplificarea zgomotului poate produce efecte majore n funcionarea observerului.Variabilele de stare estimate pot conine componente de zgomot cu att mai mari, cu ctamplificarea Ke este mai mare. In aceste condiii apare o dilem, privind alocarea polilorobserverului:

    - dac polii sunt prea apropiai de axa imaginar, amplificarea Ke este redus inivelul zgomotului ca afecteaz starea estimat este mic. In schimb, dinamicade anulare a erorii de estimare este lent;

    -dac polii sunt prea departai de axa imaginar, dinamica de anulare a erorii deestimare este rapid, ns amplificarea Ke rezult mare i nivelul zgomotuluica afecteaz starea estimat este excesiv.

    Evident, trebuie cutat un compromis, ceea ce implic rezolvarea iterativ a

    problemei de alocare, pn se obine o soluie convenabil.Filtrul Kalman consider un model al sistemului n care este evideniat n mod

    explicit zgomotul, iarestimarea striinu se face printr-o procedur de alocare, ciprinminimizarea unui criteriu de performan definit n abordare statistic (printr-o

    problem de optimizare).Filtrul Kalman poate fi formulat in dou abordri:pentru timp continuu ipentru

    timp discret.

    In consecin, trebuie prezentate dou probleme preliminare:- definirea unui sistem n abordare statistic;- definirea i rezolvarea unei probleme de optimizare n abordare statistic (ca

    etap preliminar pentru rezolvarea problemei de estimare optimal a strii, n

    abordare statistic).

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    2/11

    Filtrul Kalman pentru timp continuu1. Sistemul dinamic n abordare statisticEcuaiile sistemului sunt:

    ( ) ( ) ( ) ( )t t t t ! x

    x

    u w& (3)

    ( ) ( ) ( )t t t! y x v (4)

    unde ( ) nt w este vectorul zgomotului de sistem, iar ( ) rt v este vectorul

    zgomotului de msur (de ieire). Componentele celor doi vectori reprezint zgomotealbe necorelate, cu distribuie normal (gaussian),avnd mediinule:

    _ a( )E t !w 0; _ a( )E t !v 0 (5)

    iar matricele de autocorelatie i intercorelaie sunt:

    _ a( ). ( ) ( )T wE t t tX H !w w R ; _ a( ). ( ) ( )T vE t t tX H !v v R (6)

    _ a( ). ( ) 0TE t t X !w v (7)unde matricele wR i vR sunt diagonale i conin dispersiile

    2 , 1,iw

    i nW ! i

    2, 1,

    jvj rW ! , presupuse cunoscute (se presupune c se cunosc intensitile

    componentelor de zgomot incluse n ( )tw i ( )tv ).

    Observaie. Zgomotul total care se simte la ieire conine 2 componente:- componenta produs de zgomotul de sistem. Aceasta provine din w(t) , fiind

    un zgomot colorat, deoarece zgomotul alb w(t) acioneaz ca o variabil deintrare n ecuaia de stare a sistemului i are ca efect la ieire un zgomot

    colorat (filtrul de formare a zgomotului colorat este chiar sistemul);- componenta v(t), care este un zgomot alb (de msurare).

    De regul, prima component are o pondere sensibil mai mare.

    2. Problema optimizrii n abordare statistic (problema LQG).O ptimizarea sistemului n abordare statistic implic utilizarea criteriului de

    performan

    _ a( ) ( ) ( ) ( )T TJ E t t t t ! x Qx u Ru (8)unde E{.} este simbolul mediei statistice, iar Q i R sunt matrice pozitiv definite, princare se pondereaz calitatea reglrii, respectiv efortul de comand. Menionm c ncazul optimizrii deterministe pe un orizont infinit (problema LQ), n locul medieistatistice se utilizeaz integrala celor doi termeni, care conin variabilele de stare i de

    comand.Se poate demonstra c soluia problemei LQG este aceeai ca n cazul problemei

    LQ, adic se obine comanda optimal:

    ( ) ( )t t! u Lx (9)unde

    1 T!L R B P (10)n care matricea Peste soluia ecuaiei Riccati

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    3/11

    1 0T T !P BR B P PA A P Q (11)Pentru a putea rezolva problema LQG, este necesar s existe un observer

    conceput pentru sistemul (3) i (4). Acesta este filtrul Kalman.

    Filtrul KalmanSunt date: sistemul (3) i (4), precum i matricele wR i vR .

    Ecuaia filtrului Kalman pentru timp continuu este:

    ! x Ax Bu L y C x &% % % (12)Se observ c ecuaia coincide cu cea a unui observer determinist , ns matricea deamplificare, notat aici cu L, se calculeaz n alt mod. In loc s se apeleze la o problem

    de alocare pentru ecuaia erorii (2), se impune minimizarea criteriului de performan :

    _ a _ a( ( ) ( )) ( ( ) ( )) ( ) ( )T TJ E t t t t E t t! ! x x x x e e (13)Dac se dezvolt procedura de minimizare, se obine matricea de amplificare

    1T

    v

    !L PC R (14)unde Peste soluia ecuaiei Riccati1

    0T T

    v w

    ! PC R CP PA AP R (15)

    Dac se compar ecuaiile (10), (11) cu ecuaiile (14), (15), se constat c matriceaamplificrii L din problemele LQG i cea a filtrului Kalman se poate rezolva prin acelaialgoritm, utiliznd corespondenele din tabelul urmtor:

    Problema LQG A Q B R

    Filtrul Kalman AT Rw CT Rv

    ObservaieFuncia Matlab care calculeaz filtrul Kalman este kalman. Aici, ecuaia

    sistemului se consider de forma

    ( ) ( ) ( ) ( )t t t t ! x Ax Bu Gw& (16)

    ( ) ( ) ( )+ ( ) ( )t t t t t ! y Cx Du Hw v (17)

    ceea ce implic o definire corespunztoare a modelului sistemului fizic.Apelarea funciei kalman se face astfel:

    [KEST,L,P] = KALMAN(SYS,QN,RN,NN)

    unde KEST este estimatorul Kalman definit ca sistem in spaiul starilor, L este vectorul

    amplificrii, P este soluia ecuaiei Riccati, iar QN, RN, NN sunt:

    E{wwT}= QN, E{vvT}= RN, E{wvT}= NN,

    Estimatorul KEST are intrarea [u;y] i genereaz estimrile y_e i x_e ale lui y ixdin ecuaiile: .

    x_e =Ax_e + Bu + L(y - Cx_e - Du)

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    4/11

    y_e=C x_e +Du

    Prin, SYS este definit sistemul n spaiul starilorSS(A,[B G],C,[DH]) unde

    NN=0 este omis.

    Exemplu

    S se construiasc n Matlab-Simulinkobserverul de stare pentru un motor de curentcontinuu, pentru care ecuaiile sistemului sunt:

    1

    2f

    dIL U rI K w

    dt

    dJ K .I k w

    dt

    [

    [[

    !

    !

    n care: r= 1.9 ohm; L = 30 mH; J = 0.1 Kg.m2;

    K= 0.6 Nm/A; kf= 0.03. Presupunem c

    1

    2 10w

    W ! ;2

    2 1w

    W !

    Modelul sistemului, conform procedurii de aplicare n funcia Matlab kalman, este

    ? A

    1

    2

    11 0

    10 0

    1 0

    f

    r

    wL L Lu ;L

    k wK

    JJ J

    y x v

    ! ! -

    - - -

    !

    x x w w&

    Programulclear all;close all;

    global r LK J ks BC p

    r=1.9;L=0.03;K=0.6;J=0.1;ks=0.03;

    A=[-r/L-K/L;K/J -ks/J]; B=[1/L;0];C=[1 0];D=0;

    Q=[10 0;0 1];R=0.01;

    G=[1/L 0;0 1/J];

    SYS=SS(A,[B G],C,[D]);

    [KEST,L,P] = KALMAN(SYS,Q,R,0)

    genereaz urmtoarele rezultate: 1)Filtrul Kalmana = x1_e x2_e

    x1_e -1058 -20x2_e 85.62 -0.3

    b = u1 y1

    x1_e 33.33 994.2x2_e 0 -79.62c = x1_e x2_e

    y1_e 1 0x1_e 1 0x2_e 0 1

    d = u1 y1

    y1_e 0 0

    sM [

    ;

    U

    Fig 1 Motor de c.c.

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    5/11

    x1_e 0 0x2_e 0 0

    2) Vectorul amplificrii: LT= [ 994.1670 -79.6180]

    3) Matricea P din ecuaia Riccati P = 9.9417 -0.7962

    -0.7962 45.0925

    Aplicatii1) Se consider sistemul din exemplul prezentat. S se analizeze performanele

    sistemului utiliznd un observer clasic (determinist).clear all;close all;global r LK J ks BC p Ke

    r=0.9;L=0.03;K=0.6;J=0.1;ks=0.0

    03;

    h=0.0005;

    p=[-20+i*20 -20-i*20];

    x=[80; 100];

    xe=[0;0];

    u0=150;

    tf=1.5;n=tf/h;

    t=[0:h:tf];

    U=u0*ones(1,n);

    X=[x];

    Xe=[xe];

    C=[1 0];

    B=[1/L;0];

    for i=2:n

    u(i)=U(i)+50*sign(sin(8*t(i)));

    x=x+h*fp(t(i),x,u(i));

    y=x(1);

    X=[X x];

    xe=xe+h*fpe(t(i),xe,y,u(i));

    Xe=[Xe xe];

    end;figure(1);

    plot(t(1:n),X(1,:),t(1:n),Xe(1,:),

    'r');grid;

    figure(2);

    plot(t(1:n),X(2,:),t(1:n),Xe(2,:),

    'r');

    grid;axis([0 2 0 300]);

    Funcia fp servete la simularea procesului i are formafunction fp=fp(t,x,u)

    global r LK J ks BC p

    w1=50*randn;

    w2=randn;fp=[(u-r*x(1)-K*x(2)+w1)/L ;(K*x(1)-ks*x(2)+w2)/J];

    Funcia fpe servete la simularea observerului i are formafunction fpe=fpe(t,xe,y,u)

    global r LK J ks BC p Ke

    A=[-r/L-K/L;K/J -ks/J];

    C=[1 0];D=0;

    B=[1/L;0];

    Ke=place(A',C',p);Ke=Ke';

    fpe=A*xe+B*u+Ke*(y-C*xe);

    Dac n programul principal se alocp=[-50+i*50 -50-i*50],

    atunci se obin rezultatele prezentate n Fig. 2.a i b. Dac se alocp=[-20+i*20 -20-i*20],

    atunci se obin rezultatele din Fig. 3.a i b.Se observ c pe msur ce scade distana polilor alocai n raport cu axa imaginar,

    scade viteza de convergen a observerului, dar n acelai timp scade i nivelulzgomotului suprapus peste variabila estimat.

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    6/11

    0 0.5 1 1.5 -100

    -50

    0

    50

    100

    150

    200

    0 0 .2 0 .4 0 .6 0 .8 1 1 .2 1 .4 1 .6 1 .8 2 0

    50

    10 0

    15 0

    20 0

    25 0

    30 0

    a b

    Fig. 2

    0 0.5 1 1.5 -100

    -50

    0

    50

    100

    150

    200

    0 0 .2 0 .4 0.6 0.8 1 1 .2 1 .4 1.6 1 .8 2 0

    50

    10 0

    15 0

    20 0

    25 0

    30 0

    a b

    Fig. 3

    In cazul filtrului Kalman nu este necesar s se utilizeze diverse variante de alocare

    a polilor. In acest caz, funcia fpe careservete la simularea filtrului (observerului

    statistic) estefunction fpe=fpe(t,xe,y,u)

    global r LK J ks BC p Ke

    A=[-r/L-K/L;K/J -ks/J];B=[1/L;0];

    C=[1 0];D=0;

    Q=[1 0;0 100]*0.1;R=0.001;

    G=[1/L;1/J];

    SYS=SS(A,[B G],C,[0 0]);

    [KEST,Ke,P] = KALMAN(SYS,Q,R,0);

    fpe=A*xe+B*u+Ke*(y-C*xe);

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    7/11

    Rezultatele care se obin sunt prezentate n Fig. 4.a i b.

    0 0. 5 1 1.5 -100

    -50

    0

    50

    100

    150

    0 0 . 2 0 . 4 0 . 6 0 . 8 1 1 .2 1 . 4 1 . 6 1 .8 2 0

    50

    10 0

    15 0

    20 0

    25 0

    30 0

    a b

    Fig. 4

    Se constat c filtrul Kalman realizeaz o estimare mai lent, ns cu o bun filtrare azgomotului.

    ObservaieProiectarea filtrului Kalman poate fi legat de anumite incertitudini, ns ntr-o

    msur mai mic dect observerele deterministe (aici, trebuie testate mai multe variantede alocare). Inceritudinile filtrului Kalman sunt legate de iniializarea matricelor

    diagonale wR i vR , care conin dispersiile2 , 1,

    iwi nW ! i 2 , 1,

    jvj rW ! , presupuse

    cunoscute (acestea sunt notate prin Q i R n aplicaia Matlab). Totui, sensibilitateafiltrului Kalman n raport cu aceste variabile este redus. Astfel, punnd

    Q=[1 0;0 1];R=0.001;

    n funcia fpe, ceea ce nseamn modificarea dispersiilor cu un ordin de mrime,

    rezultatele obinute sunt cele din fig. 5.a i b.

    0 0.5 1 1.5 -100

    -50

    0

    50

    100

    150

    0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0

    50

    100

    150

    200

    250

    300

    a b

    Fig. 5

    Q=[0.1 0;0 10];R=1; Q=[0.1 0;0 10];R=10;

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    8/11

    Filtre Kalman pentru timp discret

    Fie sistemul pentru timp discret

    ( 1) ( ) ( ) ( )k k k k ! x Ax Bu w (14)( ) ( ) ( )k k k! y Cx v (15)

    Ca i n cazul timpului continuu, filtrul Kalman minimizeaz un criteriu care

    exprim media statistic a ptratului erorii ( ) ( ) ( )k k k! e x x .

    In varianta discret a filtrului Kalman, funcionarea estimatorului de stare sedescompune n dou etape, ilustrate n fig. 3.

    y Inprima etap se face evaluarea strii sistemului ntre dou momente de

    eantionare,k-1 i k. Aceast etap este numit TU (Time Update). Variabila % 1x k

    se noteaz prin % 1 1x k k , care nseamn estimarea strii la momentul k-1, pe baza

    msurtorilor din proces efectuate la momentul k-1. In etapa TU se face estimarea

    variabilei % 1x k k , adic a strii la momentul k, pe baza ultimei msurtori din proces,

    efectuat la momentul anterior,k-1. Aceast estimare se face pe baza ecuaiei de stare a

    sistemului (excluznd zgomotul w): 1 ( 1) ( 1)k k k k ! x A x Bu (16)

    Fie ( 1)kP matricea de covarian a erorii de estimare la momentul k-1. Prin

    determinarea mrimii 1k kx , eroarea de estimare crete i matricea de covarian a

    erorii, 1k kP , este

    _ a1 ( ) 1 . ( ) 1 Tk k E k k k k k k ! - - P x x x x (17)Inlocuind ( )kx din ecuaia de stare (14) i 1k kx din ecuaia (16),

    1k k

    P devine: 1 ( 1) ( 1) ( 1) ( 1) ( 1) . ( 1) ( 1) ( 1) ( 1) ( 1)

    Tk k E k k k k k k k k k k

    ! - - P Ax Bu w Ax Bu Ax Bu w Ax Bu

    = ( ( 1) ( 1)) ( 1) . ( ( 1) ( 1)) ( 1)T

    E k k k k k k ! - -

    A x x w A x x w

    = _ a. ( 1) ( 1) . ( 1) ( 1) . ( 1) ( 1)T T TE k k k k E k k ! - -

    A x x x x A w w

    Etapa TU

    % %1 1 1x k x k k | % 1x k k 1 4 2 43

    %x k k

    1 2 3

    Etapa

    U

    k-1k

    Fig. 3

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    9/11

    ( 1) Tk! AP A Q (18)y Cea de a doua etap - numit etapa MU (Measurement Update) -

    face ajustarea estimrii sistemului la pasul k, pe baza achiziiei mrimii de ieire y(k). Eaeste descris prin ecuaia filtrului:

    1 ( ) ( ) 1k k k k k k k k ! -

    x x L yC

    x(19)

    n care matricea amplificrii are expresia1

    ( ) 1 1T Tk k k k k

    ! -

    L P C R CP C (20)

    Dup aceast etap, variana erorii se micoreaz, ca urmare a informaiei adusede msurarea y(k) a mrimii de ieire. Prin urmare, este necesar s se ajusteze matricea decovarian a erorii, conform relaiei:

    1( ) 1 1 1 1T Tk k k k k k k k k k k

    | ! -

    P P P P C R CP C CP (21)

    Prin prelucrarea acestei ecuaii i prin cuplarea celorlalte relaii, se obine modelul

    final al filtrului Kalman pentru timp discret:

    ? A

    1

    1 ( 1) ( 1)

    1 ( 1)

    ( ) 1 1

    1 ( ) ( ) 1

    ( ) 1

    T

    T T

    n

    k k k k

    k k k

    k k k k k

    k k k k k k k k

    k k k k k

    ! ! ! -

    ! - !

    x A x Bu

    P AP A Q

    L P C R CP C

    x x L y C x

    P I L C P

    (22)

    Dac cele 2 etape sunt aplicate n ordinea prezentat, se obine un filtru Kalman.Dac se inverseaz cele 2 etape (mai nti MU, apoi TU), se obine unpredictor

    Kalman. In etapa MU se calculeaz

    1 ( ) ( ) 1k k k k k k k k ! - x x L y C x (23)

    i apoi urmeaz etapa TU, care furnizeaz predicia 1 ( ) ( )k k k k ! x A x Bu (24)

    sau, nlocuind ( )k k k|x x prin expresia (23),

    1 1 ( ) ( ) 1 ( )k k k k k k k k k ! - x A AL y Cx Bu (25)

    n care1

    ( ) 1 1T Tk k k k k

    ! -

    L P C R CP C (26)

    Dup predicie, matricea de covarian are expresia

    1 1 ( ) 1T

    k k k k k k k ! - P A P L CP A Q (27)

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    10/11

    AplicatiePredictor Kalman pentru motorul de cc

    % Predictor Kalman

    clear all;close all;

    % Caracteristicile motorului

    de cc

    r=1.9;L=0.03;K=0.6;J=0.1;ks=0

    .003;

    A=[-r/L-K/L;K/J -ks/J];

    C=[1 0];D=0;

    B=[1/L;0];

    % Discretizarea modelului de

    stare

    Te=0.001;

    [Ad,Bd]=c2d(A,B,Te)

    sys=ss(Ad,Bd,C,D,Te);

    % zgomotul

    n=1000;w=3*randn(n,1);

    v=2*randn(n,1);

    Q=std(w).^2;

    R=std(v).^2;

    % Semnalul de intrare

    t=0:Te:(n-1)*Te;

    u=100*sin(2*pi*t);

    for i=1:n,

    if i

  • 8/8/2019 Curs_12_FILTRUL KALMAN

    11/11

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-100

    -50

    0

    50

    100

    150

    200Semnalul de intrare

    Timp

    u(t)

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-60

    -40

    -20

    0

    20

    40

    60

    80

    100Variabla de stare prezisa xe1(t)

    Timp

    xe

    1(t)

    0 0 .1 0.2 0 .3 0 .4 0 .5 0 .6 0 .7 0 .8 0 .9 1-100

    -5 0

    0

    50

    10 0

    15 0Variabla de s tare prezisa xe2(t )

    Timp

    xe2(t)

    0 0 .002 0 .004 0 .006 0 .008 0 .01 0 .012 0 .014 0 .016 0 .018 0 .02 9.4

    9.6

    9.8

    10

    10.2

    10.4

    10.6

    10.8

    11

    11.2

    11.4Varianta erorii de predictie

    Timp

    P11(t)