• No se han encontrado resultados

Observadores LQO y Filtro de Kalman

N/A
N/A
Protected

Academic year: 2021

Share "Observadores LQO y Filtro de Kalman"

Copied!
18
0
0

Texto completo

(1)

ESCUELA DE POSGRADO ESCUELA DE POSGRADO Curso: Curso: CONTROL ÓPTIMO CONTROL ÓPTIMO Tema: Tema:

Observadores: LQO y Filtro de Kalman

Observadores: LQO y Filtro de Kalman

Presentado por: Presentado por:

CONTRERAS MARTINEZ, DIMEL ARTURO CONTRERAS MARTINEZ, DIMEL ARTURO

Docente: Docente: DR. ANTONIO MORÁN DR. ANTONIO MORÁN 2016 2016

(2)

1. Para la planta

1. Para la planta “Motor “Motor  con tornillo sinfín con tornillo sinfín”, se diseñar ”, se diseñar á 2 tipos de observadoresá 2 tipos de observadores Optimal y Filtro

Optimal y Filtro de Kalman. Luego se compararán las 2 respuestas obtenidas.de Kalman. Luego se compararán las 2 respuestas obtenidas. Modelo de la planta Motor + tornillo sinfín:

Modelo de la planta Motor + tornillo sinfín:

[[ ̇̇̈̈/

/]] = = [ [

0 0 1 1 00

0 0 

0 0 













]]̇̇++ [ [



0000



]]

    == [[0 0 1 1 00

0 0 

0 0 













]]

  == [ [0000



]]

Considerando la siguiente función de costo: Considerando la siguiente función de costo:

    == ∫ ∫ 



∞∞







+ 

+ 



̇̇



 + 

 + 







 + 

 + 







 = = [[

0 0 

0 0 0 0 



0 0 00



00



]]

>>Script en Matlab >>Script en Matlab 

 Parametros Parametros del del Sistema:Sistema:

  El El sistema:sistema: R = 1.1; R = 1.1; L = 0.001; L = 0.001; Kt = 0.0573; Kt = 0.0573; Kb = 0.05665; Kb = 0.05665; I = 4.326e-5; I = 4.326e-5; p = 0.004; p = 0.004; m = 1.00; m = 1.00; c = 40; c = 40; r = 0.015; r = 0.015; alfa = 45*pi/180; alfa = 45*pi/180; voltmax = 60; voltmax = 60; d = m + 2*pi*I*tan(alfa)/(p*r); d = m + 2*pi*I*tan(alfa)/(p*r); a22 = -c/d; a22 = -c/d; a23 = Kt*tan(alfa)/(r*d); a23 = Kt*tan(alfa)/(r*d); a32 = -2*pi*Kb/(p*L); a32 = -2*pi*Kb/(p*L); a33 = -R/L; a33 = -R/L; b31 = 1/L; b31 = 1/L; w21 = -1/d; w21 = -1/d; A A = = [ [ 0 0 1 1 00 0

0 a22 a22 a23a23 0

0 a32 a32 a33 a33 ];]; B = [ 0 B = [ 0 0 0 b31 ]; b31 ]; Wf = [ 0 Wf = [ 0 w21 w21 0 ]; 0 ]; r = 1*0.5;

r = 1*0.5; % Posición deseada% Posición deseada

voltmax = 1*24;

(3)

El Controlador El Controlador La solución de Riccati: La solución de Riccati:

 = (

 = (A,A,

−−

BB



,,))

La ganancia del controlador K: La ganancia del controlador K:

 = 

 = 

−−







La acción de control u:

La acción de control u: Para una referencia “r”Para una referencia “r”

 =  + 

 =  + ((1,11,1))∗ ∗ 

Para la implementación se discretizan las matrices. Para la implementación se discretizan las matrices.

>>Script en Matlab >>Script en Matlab

Se consideran pesos fijos, porque el interés está

Se consideran pesos fijos, porque el interés está en los observadores.en los observadores.

Modelo de los ruidos Modelo de los ruidos

En la planta: En la planta: wmean = 0.1 wmean = 0.1 wstd = 0.1 wstd = 0.1 w = randn(nt,1) w = randn(nt,1) w = (w-mean(w))*wstd/std(w) + wmean w = (w-mean(w))*wstd/std(w) + wmean q1 = 1e5; q1 = 1e5; q2 = 0; q2 = 0; q3 = 0; q3 = 0; Q = diag([ q1 q2 q3 ]); Q = diag([ q1 q2 q3 ]); R = 1; R = 1; P P = = are(A,B*inare(A,B*inv(R)*B',Q);v(R)*B',Q); K = inv(R)*B'*P; K = inv(R)*B'*P; k1 k1 = = K(1,1); K(1,1); k2 k2 = = K(1,2); K(1,2); k3 k3 = = K(1,3);K(1,3); [ [ Ak Ak Bk Bk ] ] = = c2d(A,B,dt);c2d(A,B,dt); [ Ak Wfk ] = c2d(A,Wf,dt); [ Ak Wfk ] = c2d(A,Wf,dt); [ Ak Wk] = c2d(A,W,dt); [ Ak Wk] = c2d(A,W,dt);

(4)

En el sensor: En el sensor:

Observadores Observadores

Verificamos la observabilidad del

Verificamos la observabilidad del sistemsistema:a:

OBOBS =

S = C CA CA

C CA CA





detdet((

))     0

     0



 = =

[[11  0 0 00

0  2  0

0  2  0

0 0 0 0 33]]

 = 

 = 





Xo -> Estimación de

Xo -> Estimación de los estados:los estados:

Controlador y observador: Controlador y observador:

  = = 



 = 

 = 

nmean = 0 nmean = 0 nstd = 0.1 nstd = 0.1 n = randn(nt,1) n = randn(nt,1) n =

(n-n = ((n-n-mea(n-n((n-n))*(n-nstd/std((n-nmean(n))*nstd/std(n) + nmean) + nmean R = sum((n-nmean).*(n-nmean))/(nt-1) R = sum((n-nmean).*(n-nmean))/(nt-1)

(5)

El observador Optimal: El observador Optimal:

 = (

 = (,,

−−

,)

,)

Ganancia del observador: Ganancia del observador:

 = 

 = 

−−

 

 



(

(



))

−−

Discretizando las matrices para el observador Discretizando las matrices para el observador Con tiempo de muestreo dt.

Con tiempo de muestreo dt.

  ,

  ,

 = 2

 = 2(( 

 ,,

,,))

  ,

  ,

 = 2

 = 2(( 

 ,,,,))

Como se conoce la fricción seca, se

Como se conoce la fricción seca, se puede agregar al observador.puede agregar al observador.

  ,

  ,

 = 2( ,,)

 = 2( ,,)

Se considera que la salida del sistema es x, osea solo se puede medir (hay Se considera que la salida del sistema es x, osea solo se puede medir (hay sensor) la posición, sin embargo ésta salida también posee ruido:

sensor) la posición, sin embargo ésta salida también posee ruido:

 =  +

 =  +

El observador que se obtiene: El observador que se obtiene:

 

  = =  ∗

 ∗ + 

 +  ∗∗

+  ∗

+  ∗  +  ∗ 

+  ∗ 

Condición inicial: Condición inicial:

 

  = = 0;0;0;0;00

>>Script en Matlab >>Script en Matlab q1o = input(

q1o = input('Peso q1o : ''Peso q1o : ');); q2o = input(

q2o = input('Peso q2o : ''Peso q2o : ');); q3o = input(

q3o = input('Peso q3o : ''Peso q3o : ');); Qo = diag([ q1o q2o q3o ]); Qo = diag([ q1o q2o q3o ]); Ro = eye(3);

Ro = eye(3); So =

So = are(A,inv(Rare(A,inv(Ro),Qo);o),Qo);

L = inv(Ro)*So*C'*inv(C*C'); L = inv(Ro)*So*C'*inv(C*C'); [Aok Bok] =

[Aok Bok] = c2d(A-L*C,B,c2d(A-L*C,B,dt);dt); [Aok Lok] =

[Aok Lok] = c2d(A-L*C,L,c2d(A-L*C,L,dt);dt); [Aok Wfok] = c2d(A-L*C,Wf,dt); [Aok Wfok] = c2d(A-L*C,Wf,dt);

xo

(6)

Simulación del observador Optimal: Simulación del observador Optimal:

Ploteo gráficas: Es l

Ploteo gráficas: Es la misma en ambos casos de observadores.a misma en ambos casos de observadores.

Pruebas: Pruebas: Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 0.1varianza = 0.1

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 0.1varianza = 0.1

Fricción

Fricción seca seca = = 1.5*151.5*15 Referencia :

Referencia : x = 0.5 x = 0.5

Variando pesos del observador Variando pesos del observador

k = 1; k = 1; x

x = = [ [ 0.1; 0.1; -0.1; -0.1; 0.5 0.5 ];]; % Vector de estado inicial% Vector de estado inicial

r

r = = 1*0.5; 1*0.5; %referencia%referencia for

for tt = ti:dt:tf tt = ti:dt:tf

y = C*x + 0.1*randn(1,1); y = C*x + 0.1*randn(1,1); xxo1(k,1)

xxo1(k,1) = = xo(1,1); xo(1,1); xxo2(k,1) xxo2(k,1) = = xo(2,1); xo(2,1); xxo3(k,1) xxo3(k,1) = = xo(3,1);xo(3,1); xx1(k,1) xx1(k,1) = x(1,1); = x(1,1); xx2(k,1) xx2(k,1) = x(2,1); = x(2,1); xx3(k,1) xx3(k,1) = x(3,1);= x(3,1); u = -K*xo + k1*r; u = -K*xo + k1*r; if if( u > voltmax)( u > voltmax) u = voltmax; u = voltmax; elseif

elseif(u < -voltmax)(u < -voltmax) u = -voltmax; u = -voltmax; end end if if(x(2,1) >= 0)(x(2,1) >= 0) Fs = Fseca; Fs = Fseca; elseif elseif(x(2,1) < 0)(x(2,1) < 0) Fs = -Fseca; Fs = -Fseca; end end x = Ak*x + Bk*u + Wfk*Fs + Wk*w(k,1); x = Ak*x + Bk*u + Wfk*Fs + Wk*w(k,1); xo =

xo = Aok*xo + Aok*xo + Bok*u + Bok*u + Lok*y + Lok*y + Wfok*Fs;Wfok*Fs; k = k+1; k = k+1; end end figure(1); figure(1); subplot(3,1,1); subplot(3,1,1); plot(t,xx1,

plot(t,xx1,'r''r',t,xxo1,,t,xxo1,'-b''-b');grid;title();grid;title('Posición m''Posición m');); subplot(3,1,2);

subplot(3,1,2); plot(t,xx2,

plot(t,xx2,'r''r',t,xxo2,,t,xxo2,'-b''-b');grid;title();grid;title('Velocidad''Velocidad');); subplot(3,1,3);

subplot(3,1,3); plot(t,xx3,

(7)

 Peso Peso q1o = q1o = 1 , 1 , q2o = q2o = 0 , 0 , q3o = q3o = 00

 Peso Peso q1o = q1o = 10 , 10 , q2o q2o = 0 = 0 , q3o , q3o = 0= 0

(8)

Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 0.1varianza = 0.1

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 0.3varianza = 0.3

Fricción

Fricción seca seca = = 1.5*151.5*15 Referencia :

Referencia : x = 0.5 x = 0.5

(9)

 Peso Peso q1o = q1o = 10 , 10 , q2o = q2o = 1 1 , q3o , q3o = 1= 1

(10)

Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 0.3varianza = 0.3

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 0.3varianza = 0.3

Fricción

Fricción seca seca = = 1.5*151.5*15 Referencia :

Referencia : x = 0.5 x = 0.5

 Peso Peso q1o = q1o = 1 , 1 , q2o = q2o = 1 , 1 , q3o q3o = 1= 1

(11)

 Peso Peso q1o = q1o = 100 100 , q2o , q2o = = 1 , 1 , q3o q3o = 1= 1

Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 0.3varianza = 0.3

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 0.3varianza = 0.3

Fricción s

Fricción seca eca = = 5.5*155.5*15

(12)

Observador Filtro de Kalman Observador Filtro de Kalman

 = (′,

 = (′,





−−

,′)

,′)

Ganancia del observador: Ganancia del observador:

  = = 



  





−−

Discretizando las matrices para el observador Discretizando las matrices para el observador Con tiempo de muestreo dt.

Con tiempo de muestreo dt.

  ,

  ,

 = 2

 = 2(( 

 ,,

,,))

  ,

  ,

 = 2

 = 2(( 

 ,,,,))

  ,

  ,

 = 2

 = 2(( 

 ,,

,,))

Como se conoce la fricción seca, se

Como se conoce la fricción seca, se puede agregar al observador.puede agregar al observador.

  ,

  ,

 = 2( ,,)

 = 2( ,,)

Se considera que la salida del

Se considera que la salida del sistema es x, osea solo se puede medir (haysistema es x, osea solo se puede medir (hay sensor) la posición, sin embargo ésta

sensor) la posición, sin embargo ésta salida tambsalida también posee ruido:ién posee ruido:

 =  +

 =  +





El observador que se obtiene: El observador que se obtiene:

 

  = 

=  ∗

 ∗ +

 + ∗

 ∗ +

 + ∗ 

 ∗  ++ ∗ 

 ∗ 





 + +  ∗∗

 

  = = 0;0;0;0;00

>>Script en Matlab >>Script en Matlab %% Observador %% Observador So = are(A',C'*inv(R)*C,W*Q*W'); So = are(A',C'*inv(R)*C,W*Q*W'); L = So*C'*inv(R); L = So*C'*inv(R); [Aok Bok] =

[Aok Bok] = c2d(A-L*C,B,c2d(A-L*C,B,dt);dt); [Aok Lok] =

[Aok Lok] = c2d(A-L*C,L,c2d(A-L*C,L,dt);dt); [Aok Wok] =

[Aok Wok] = c2d(A-L*C,W,c2d(A-L*C,W,dt);dt); [Aok Wfok] = c2d(A-L*C,Wf,dt); [Aok Wfok] = c2d(A-L*C,Wf,dt); xo

(13)

Simulación del observador Optimal: Simulación del observador Optimal:

for

for tt = ti:dt:tf tt = ti:dt:tf y = C*x + n(k,1); y = C*x + n(k,1); yy(k,1) = y; yy(k,1) = y; xxo1(k,1)

xxo1(k,1) = = xo(1,1); xo(1,1); xxo2(k,1) xxo2(k,1) = = xo(2,1); xo(2,1); xxo3(k,1) xxo3(k,1) = = xo(3,1);xo(3,1); xx1(k,1) xx1(k,1) = x(1,1); = x(1,1); xx2(k,1) xx2(k,1) = x(2,1); = x(2,1); xx3(k,1) xx3(k,1) = x(3,1);= x(3,1); u = -K*xo + k1*r; u = -K*xo + k1*r; if if( u > voltmax)( u > voltmax) u = voltmax; u = voltmax; elseif

elseif(u < -voltmax)(u < -voltmax) u = -voltmax; u = -voltmax; end end if if(x(2,1) >= 0)(x(2,1) >= 0) Fs = Fseca; Fs = Fseca; elseif elseif(x(2,1) < 0)(x(2,1) < 0) Fs = -Fseca; Fs = -Fseca; end end x = Ak*x + Bk*u + Wk*w(k,1) + Wfk*Fs; x = Ak*x + Bk*u + Wk*w(k,1) + Wfk*Fs;

xo = Aok*xo + Bok*u + Lok*y + Wok*wmean + Wfok*Fs; xo = Aok*xo + Bok*u + Lok*y + Wok*wmean + Wfok*Fs; k = k+1;

k = k+1; end

(14)

Pruebas: Pruebas: Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 0.1varianza = 0.1

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 0.1varianza = 0.1

Fricción

Fricción seca seca = = 1.5*151.5*15 Referencia :

(15)

Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 0.1varianza = 0.1

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 0.3varianza = 0.3

Fricción

Fricción seca seca = = 1.5*151.5*15

Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 0.3varianza = 0.3

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 0.3varianza = 0.3

Fricción

(16)

Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 1varianza = 1

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 0.3varianza = 0.3

Fricción

Fricción seca seca = 1.= 1.5*155*15

Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 1varianza = 1

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 1varianza = 1

Fricción

(17)

Condiciones Condiciones::

Ruido_planta-> media = 0.1 ,

Ruido_planta-> media = 0.1 , varianza = 0.3varianza = 0.3

Ruido_sensor -> media = 0 ,

Ruido_sensor -> media = 0 , varianza = 0.3varianza = 0.3

Fricción

(18)

CONCLUSIONES: CONCLUSIONES:

Referencias

Documento similar

Problema: Relatividad especial s ´olo valida para observadores en M.U.R..!. Problema: Relatividad especial s ´olo valida para observadores

No hay que olvidar que lo que los distintos aceptantes aceptan no son reglas puramente subjetivas que sólo valen para ellos, sino reglas sociales, es decir, reglas que el aceptante

Semejante imagen estimula en gran cantidad de observadores un alto discurso emocional: la escena de la defunción de un hijo y la reacción de su madre es fácil de leer (percibir) 2 y

De esta manera, el calor generado por el compre- sor no afecta al secador refrigerativo, que puede emplear toda su potencia para suministrar aire comprimido perfec- tamente

Muchas de las rocas que vemos en los edificios de Burgos son de las canteras cercanas a la ciudad como la piedra caliza de Hon- toria de la Cantera que sirvió para construir

La reacción de los menores observadores ante la conducta violenta de otros contribuirá a legitimar o a deslegitimar el uso de la violencia en situaciones de conflicto. La forma

Durante el transcurso de la aplicación de grupos interactivos, han sido muchas las personas que han entrado al aula como voluntarios o simplemente como observadores de la

desarrollo del país y cumplir con la misión que se ha propuesto, tiene la intención de impulsar un Plan de Formación en Educación Financiera y Económica para mujeres cabeza de