diff options
author | Nao Pross <np@0hm.ch> | 2024-05-31 14:25:54 +0200 |
---|---|---|
committer | Nao Pross <np@0hm.ch> | 2024-05-31 14:25:54 +0200 |
commit | 5b84855ceca34d280337ab009f7e7ef676b59c1d (patch) | |
tree | 7fb509bd19796659dbf62e8d2a27860b00f28b00 /uav_performance_hinf.m | |
parent | Update DK iteration and model structure (diff) | |
download | uav-5b84855ceca34d280337ab009f7e7ef676b59c1d.tar.gz uav-5b84855ceca34d280337ab009f7e7ef676b59c1d.zip |
Update weights
Diffstat (limited to '')
-rw-r--r-- | uav_performance_hinf.m | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/uav_performance_hinf.m b/uav_performance_hinf.m index 4a6de8a..c8df42a 100644 --- a/uav_performance_hinf.m +++ b/uav_performance_hinf.m @@ -23,26 +23,29 @@ T_alpha = params.actuators.ServoSecondsTo60Deg; T_omega = 0.1; T_xy = 5; -T_z = 10; +T_z = 4; % Inverse performance functions -W_Palpha = make_weight(1/T_alpha, 10, 2); -W_Pomega = make_weight(1/T_omega, 10, 2); +W_Palpha = tf(.8); +W_Pomega = tf(.5); + +W_Ralpha = 1 / ((s * T_alpha)^2 + 2 * T_alpha * s + 1); +W_Romega = 1 / ((s * T_omega)^2 + 2 * T_omega * 1.2 * s + 1); W_Rxy = 1 / ((s * T_xy)^2 + 2 * T_xy * .8 * s + 1); -W_Rz = 1 / (s * T_z + 1); +W_Rz = 1 / ((s * T_z)^2 + 2 * T_z * s + 1); -W_Pxy = tf(5); +W_Pxy = tf(12); W_Pz = tf(1); W_Pxydot = tf(.01); W_Pzdot = tf(.01); -W_Pphitheta = .001 / (s * T_xy + 1); -W_Ppsi = tf(.1); +W_Pphitheta = tf(.005); +W_Ppsi = tf(.3); % Construct performance vector by combining xy and z -W_ref = blkdiag(W_Rxy * eye(2), W_Rz); +W_Rref = blkdiag(W_Rxy * eye(2), W_Rz); W_PP = blkdiag(W_Pxy * eye(2), W_Pz); W_PPdot = blkdiag(W_Pxydot * eye(2), W_Pzdot); @@ -51,7 +54,9 @@ W_PTheta = blkdiag(W_Pphitheta * eye(2), W_Ppsi); perf = struct(... 'FlapAngle', W_Palpha * eye(4), ... 'Thrust', W_Pomega, ... - 'ReferenceFilter', W_ref, ... + 'ReferenceFilter', W_Rref, ... + 'FlapAngleFilter', W_Ralpha * eye(4), ... + 'ThrusterFilter', W_Romega, ... 'Position', W_PP, ... 'Velocity', W_PPdot, ... 'Angles', W_PTheta ... |