LQR for nonlinear system is running but not tracking
4 views (last 30 days)
Show older comments
Hello, please I need advice on what could be the possible solution to this LQR control system attached below. I have designed the LQR to be tracking reference by adding an extra state as shown in the simulink attached. However, i noticed that my system blows up even with small duration of like 10 seconds, the system output runs into more than 500,000x1 double. Also it does not track, no matter how i change the paramters including the weight on the error, or Q the weight on the states or R the weight on the control. I have tried all i could but it does not change. all i kep seeing is figure with input refernec of 1 and output 2 attached and it does not change no matter what I do. An opinoin on how to reoslve this would be appreciated. I have attached the matlab script as well to be run before running the simulink.
thank you
0 Comments
Accepted Answer
Sam Chak
on 17 Feb 2024
Hi @Kamal
I wanted to bring to your attention that the controllability matrix does not meet the requirement of full row rank. It is crucial to ensure that the controllability matrix has full rank, as this indicates that the system is controllable. It is important to address this issue before proceeding with any controller design.
run ss_LQR.m
%% Size of Matrix A
szA = size(A)
%% Size of Matrix B
szB = size(B)
%% Rank of the Controllability Matrix
rk = rank(ctrb(A, B))
3 Comments
Sam Chak
on 18 Feb 2024
Hi @Kamal
Applying LQR is a possible approach, but it's worth noting that out of the 14 states, only 2 states are controllable. To achieve controllability, you may need to consider augmenting the system dynamics or introducing additional control inputs, or perhaps a combination of both.
run ss_LQR.m
%% full rank
frk = length(A)
%% rank of Co
Co = ctrb(A, B);
rk = rank(Co)
%% number of uncontrollable states
unco = frk - rank(Co)
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!