Diseñar un servocontrolador LQG
Este ejemplo muestra cómo diseñar un servocontrolador para el siguiente sistema.
La planta tiene tres estados (x), dos entradas de control (u), dos entradas aleatorias (w), una salida (y), ruido de medición para la salida (v) y las ecuaciones de estado y medición siguientes:
donde
El sistema tiene los siguientes datos de covarianza de ruido:
Utilice la siguiente función de coste para definir el tradeoff entre rendimiento del seguidor y esfuerzo de control:
Para diseñar un servocontrolador LQG para este sistema:
Cree el sistema de espacio de estados escribiendo la siguiente instrucción en la ventana de comandos de MATLAB®:
A = [0 1 0;0 0 1;1 0 0]; B = [0.3 1;0 1;-0.3 0.9]; G = [-0.7 1.12; -1.17 1; .14 1.5]; C = [1.9 1.3 1]; D = [0.53 -0.61]; H = [-1.2 -0.89]; sys = ss(A,[B G],C,[D H]);
Genere la ganancia de retroalimentación de estados óptima utilizando la función de coste dada escribiendo los comandos siguientes:
nx = 3; %Number of states ny = 1; %Number of outputs Q = blkdiag(0.1*eye(nx),eye(ny)); R = [1 0;0 2]; K = lqi(ss(A,B,C,D),Q,R);
Genere el estimador de estado de Kalman utilizando los datos de covarianza de ruido dados escribiendo los comandos siguientes:
Qn = [4 2;2 1]; Rn = 0.7; kest = kalman(sys,Qn,Rn);
Conecte el estimador de estado de Kalman y la ganancia de retroalimentación de estados óptima para formar el servocontrolador LQG escribiendo el comando siguiente:
Este comando devuelve el siguiente servocontrolador LQG:trksys = lqgtrack(kest,K)
>> trksys = lqgtrack(kest,K) a = x1_e x2_e x3_e xi1 x1_e -2.373 -1.062 -1.649 0.772 x2_e -3.443 -2.876 -1.335 0.6351 x3_e -1.963 -2.483 -2.043 0.4049 xi1 0 0 0 0 b = r1 y1 x1_e 0 0.2849 x2_e 0 0.7727 x3_e 0 0.7058 xi1 1 -1 c = x1_e x2_e x3_e xi1 u1 -0.5388 -0.4173 -0.2481 0.5578 u2 -1.492 -1.388 -1.131 0.5869 d = r1 y1 u1 0 0 u2 0 0 Input groups: Name Channels Setpoint 1 Measurement 2 Output groups: Name Channels Controls 1,2 Continuous-time model.