LQR for nonlinear system is running but not tracking
조회 수: 4 (최근 30일)
이전 댓글 표시
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
채택된 답변
Sam Chak
2024년 2월 17일
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
Sam Chak
2024년 2월 18일
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)
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!