icare function doesn't return the value for X_lqr, K_lqr.
12 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I using icare function for the lqr controller.
Alift is 9x9 matrix, Blift is 9x1 matrix, Q is 9x9 identity matrix, and R is 1.
Alift, Blift matrix is work well.
But it only return the L_lqr(9x1) matrix.
What is the problem?
Below is my code.
x_ref = [5 5]';
x_ref_lift = liftFtn(x_ref);
[X_lqr, K_lqr, L_lqr] = icare(Alift, Blift, Q, R);
for m = 1 : Nsim - 1
u = -K_lqr * (xlift2(:, end) - x_ref_lift);
xlift2 = [xlift2, Alift * xlift2(:, end) + Blift * u]; % Lifted dynamics
end
Réponse acceptée
Sam Chak
le 28 Mar 2024
The description in icare() documentation says that the syntax "[X,K,L] = icare(A,B,Q,R,S,E,G)" computes the unique stabilizing solution X, state-feedback gain K, and the closed-loop eigenvalues L of the following continuous-time algebraic Riccati equation.
2 commentaires
Sam Chak
le 28 Mar 2024
%% Double Integrator system, x" = u
A = [0 1;
0 0];
B = [0;
1];
%% Settings to force the Controller for a critically-damped response, u = – 2·x' – x
Q = diag([1 2]);
R = 1;
%% Tuning by LQR method
[K, X, L] = lqr(A, B, Q, R)
%% Tuning by solving Continuous-time Algebraic Riccati Equations
[X, K, L] = icare(A, B, Q, R)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Computations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!