MATLAB: LQR design: state space feedback

Control System Toolboxlqrstate estimatorstate-spacestatespace

Hi everyone,
I'm trying to design an lqr controller for a linear state space model. I have found my feedback gain matrix k: my problem is how to get the states 'x' from the state space model output for the equation:
u=-kx
I have read the matlab help on State Estimator Design but could not apply this to my problem. I found 'L' and created a second state-space model like in the help file with equations:
[x.] = [A-BK BK][x] [e.] = [0 A_LC][e]
e=x-estimatedX
Does this output not show the difference between the actual state 'x' and the estimated state?
When entering this into simulink, an error occurred saying invalid parameter for C… When B was changed, C would be accepted as 0.
I also read about the function augstate but do not understand how to retrieve the 'x' states from this new system either.
Any help on how to obtain the states 'x' from the state space model output would be greatly appreciated!
Thanks, Declan

Best Answer

If I understand correctly, you are trying to simulate your LQR controller in Simulink. LQR controller uses full state vector x for feedback, so to get x, use state-space block, and set C to be a unity matrx and D to be zero.
If you already have your A matrix defined in a variable a, you can do this like that:
>>c=eye(size(a));
>>d=zeros(size(a))
Now if you use State-Space block in Simulink and specify a,b,c,d (where c and d are created as shown above), the output of this block is your state x.
In real-life implementation LQR assumes that you are actually measuring x and using it in feedback control. If you cannot measure x, but can only measure some outputs (y), then you need to design an estimator and use LQG control.
This doc page might help:
HTH.
Arkadiy