Estoy un poco confundido acerca de elegir la señal de referencia para controlar los modelos de espacio de estados.
He leído (sin embargo, sin una explicación matemática profunda) que uno tiene que escalar su señal de referencia para que el sistema pueda rastrear la señal de entrada. También hay una función que proporciona un coeficiente de escala Nbar
, por lo que tengo que multiplicar mi señal de referencia por ella:
s = size(A,1);
Z = [zeros([1,s]) 1];
N = inv([A,B;C,D])*Z';
Nx = N(1:s);
Nu = N(1+s);
Nbar=Nu + K*Nx;
En mi caso particular, existe el modelo de un péndulo en un carro unidimensional con polos arbitrarios elegidos. Mis variables de estado son .
A continuación se muestra el código matlab:
clear all;
M = 1;
m = 1;
l = 1.5;
g = 9.8;
I = m*l^2;
b = 0.05;
denom = M*(m*l^2) + I*(m + m);
a22 = -(b*I + b*m*l^2)/denom;
a23 = (g*(l^2)*(m^2))/denom;
a42 = -(b*l*m)/denom;
a43 = (g*(M+m)*l*m)/denom;
b21 = (I + m*l^2) / denom;
b41 = l*m / denom;
A = [0 1 0 0; 0 a22 a23 0; 0 0 0 1; 0 a42 a43 0];
B = [0; b21; 0; b41];
C = [1 0 0 0];
D = 0;
% Check for controllability
co = ctrb(A, B);
fprintf("%f\r\n", rank(co));
% POLES
P = [-1.5 -0.9 -2.5 -3.5];
% Placing poles
K = place(A, B, P);
% Reference signal rescaling
sys = ss(A, B, C, D);
N = rscale(sys, K);
Todo funciona como un encanto. Sin embargo, extraño totalmente la intuición detrás de eso.
Imagine el control PID estándar, en este caso, si quisiera controlar la posición, establecería el error en 'posición_corriente - posición_deseable' y aplicaría la fórmula PID estándar a ese error. De lo anterior está intuitivamente claro por qué se controla la posición y si quiero controlar, por ejemplo, la velocidad, simplemente estableceré el error en la divergencia de velocidad.
Sin embargo, en un espacio de estado tengo algún coeficiente que surge después de calcular el producto de punto entre mi estado y la matriz de ganancia. Y por alguna razón, después de restarlo de una versión escalada de u, obtengo una posición controlada. ¿Por qué es un gran secreto para mí? ¿Y cómo se controlaría cualquier otra variable de estado en este caso, como la velocidad, por ejemplo?