diff options
author | Nao Pross <np@0hm.ch> | 2024-05-16 14:59:06 +0200 |
---|---|---|
committer | Nao Pross <np@0hm.ch> | 2024-05-16 14:59:06 +0200 |
commit | 6440d952b7a3332423481f27175c2fd876b7e3ae (patch) | |
tree | 0a691efaf7e459e49e1f1ed86bd8de812a6d9ac0 /uav_ctrl_lqr.m | |
parent | Delete LQR option from main script, start tuning D-scales (diff) | |
download | uav-6440d952b7a3332423481f27175c2fd876b7e3ae.tar.gz uav-6440d952b7a3332423481f27175c2fd876b7e3ae.zip |
Delete old LQR code
Diffstat (limited to 'uav_ctrl_lqr.m')
-rw-r--r-- | uav_ctrl_lqr.m | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/uav_ctrl_lqr.m b/uav_ctrl_lqr.m deleted file mode 100644 index 8063c64..0000000 --- a/uav_ctrl_lqr.m +++ /dev/null @@ -1,39 +0,0 @@ -% Copyright (C) 2024, Naoki Sean Pross, ETH Zürich -% -% Design a nominal controller for UAV. - -function [ctrl_lqr] = uav_ctrl_lqr(params, model) - -% ------------------------------------------------------------------------ -% Design a Kalman filter for state estimation - -G = model.linear.StateSpace -[L, P, E] = lqe(G.A, G. - -% ------------------------------------------------------------------------ -% Design a nominal LQR controller - -% Define penalties according to following priorities - -q_pos = 1; % penalty on position -q_vel = 10; % penalty on linear velocity -q_ang = 10; % high penalty on angles -q_rate = 10; % very high penalty on angular velocities - -r_ang = 1; % flap movement is cheap -r_thrust = 10; % thrust is more expensive on the battery - -% LQR design matrices -Q = kron(diag([q_pos, q_vel, q_ang, q_rate]), eye(3)); -R = diag([r_ang, r_ang, r_ang, r_ang, r_thrust]); - -% Compute controller using output lqr -[K, S, poles] = lqry(model.linear.StateSpace, Q, R); - -% ------------------------------------------------------------------------ -% Save controller - -ctrl_lqr = struct('Name', 'LQR', 'K', K); - -end -% vim: ts=2 sw=2 et: |