icare function doesn't return the value for X_lqr, K_lqr.
10 次查看(过去 30 天)
显示 更早的评论
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
采纳的回答
Sam Chak
2024-3-28
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 个评论
Sam Chak
2024-3-28
%% 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)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Computations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!