diff --git a/docs/control_requirements.html b/docs/control_requirements.html index 6b0f946..40f906b 100644 --- a/docs/control_requirements.html +++ b/docs/control_requirements.html @@ -1,11 +1,10 @@ -
- +The goal here is to write clear specifications for the NASS.
@@ -305,16 +309,14 @@ This can then be used for the control synthesis and for the design of the nano-hIdeal, specifications on the norm of closed loop transfer function should be written.
-Let’s consider the simple mechanical system in Figure 1.
@@ -445,8 +447,8 @@ The nano-hexapod can thus be represented as in Figure 2What we measure is not the absolute motion \(x\), but the relative motion \(x - w\) where \(w\) is the motion of the granite.
@@ -454,19 +456,12 @@ What we measure is not the absolute motion \(x\), but the relative motion \(x -Also, \(w\) induces some motion \(x_\mu\) through the transmissibility of the micro-station.
- - --
-As explained, we consider \(x_\mu\) as an external input (\(F\) has no influence on \(x_\mu\)).
@@ -503,14 +498,14 @@ Also, here, we suppose that the granite is not moving.-If we now include the motion of the granite \(w\), we obtain the block diagram shown in Figure 4. +If we now include the motion of the granite \(w\), we obtain the block diagram shown in Figure 3.
-
Figure 4: Ground Motion \(w\) included
+Figure 3: Ground Motion \(w\) included
@@ -520,14 +515,15 @@ We can approximate this transfer function by a second order low pass filter:
Let’s define the mass and stiffness of the nano-hexapod.
@@ -585,31 +581,30 @@ Gpz = connect(Gn, S, Wsplit, Tw, Tmu, Sw, {'Fd',Let’s apply a direct velocity feedback by deriving \(d\): \[ F = F^\prime - g s d \] @@ -671,29 +666,29 @@ And \(\epsilon = r - x\):
Let’s apply integral force feedback by integration \(F_m\): \[ F = F^\prime - \frac{g}{s} F_m \] @@ -735,9 +730,9 @@ And \(\epsilon = r - x\):
Instead of a pure integrator, let’s use a low pass filter with a cut-off frequency above the bandwidth of the micro-station \(\omega_mu\)
@@ -753,14 +748,14 @@ Instead of a pure integrator, let’s use a low pass filter with a cut-off f-
Figure 7: Obtained transfer functions for DVF and IFF (png, pdf)
+Figure 6: Obtained transfer functions for DVF and IFF (png, pdf)
+ | Reference Tracking | +Vibration Filtering | +Compliance | +
---|---|---|---|
DVF | +Similar behavior | ++ | Better for \(\omega < \omega_\nu\) | +
IFF | +Similar behavior | +Better for \(\omega > \omega_\nu\) | ++ |
-Let’s try to implement the control architecture shown in Figure 11. -
- --The pre-filter \(K_r\) is added in order to improve the reference tracking performances. -
- - --
-Figure 11: Two degrees of freedom feedback control
--In order to design the pre-filter \(K_r\), the dynamics of the system should be known quite precisely (Dynamics of the nano-hexapod + \(T_\mu\)). -
-Krpz = inv(Gpz_fb('y', 'r')); - -Krpz.InputName = {'r2'}; -Krpz.OutputName = {'r3'}; --
Sfb = sumblk('e = r3 - y'); - -R = [tf(1); tf(1)]; -R.InputName = {'r'}; -R.OutputName = {'r1', 'r2'}; - -Gpz_2dof = connect(Gpz_dvf, Krpz, Kpz, R, Sfb, {'r', 'dmu', 'Fd', 'w'}, {'y', 'e', 'Fm', 'd'}); --
m = 50; % [kg] k = 1e3; % [N/m] @@ -1110,11 +1104,11 @@ H = 1/h*(1 /abs(freqresp(H*Gvc_dvf('y', 'F'), wb)); Kvc_dvf.InputName = {'e'}; -Kvc_dvf.OutputName = {'F'}; +Kvc_dvf.OutputName = {'Fi'}; Kvc_iff = H/abs(freqresp(H*Gvc_iff('y', 'F'), wb)); Kvc_iff.InputName = {'e'}; -Kvc_iff.OutputName = {'F'}; +Kvc_iff.OutputName = {'Fi'};
-
Figure 12: Obtained closed-loop transfer functions (png, pdf)
-Figure 10: Obtained closed-loop transfer functions (png, pdf)
+ | Reference Tracking | +Vibration Filtering | +Compliance | +
---|---|---|---|
DVF | +Similar behavior | ++ | Better for \(\omega < \omega_\nu\) | +
IFF | +Similar behavior | +Better for \(\omega > \omega_\nu\) | ++ |
-
Figure 13: Comparison of the closed-loop transfer functions for Soft and Stiff nano-hexapod (png, pdf)
+Figure 11: Comparison of the closed-loop transfer functions for Soft and Stiff nano-hexapod (png, pdf)
Ground Motion | += | += | +||||||||||||||
Vibration Isolation | + | @@ -1190,8 +1227,8 @@ Gvc_fb_iff = connect(Gvc_iff, Kvc_iff, R, Sfb, {'r'
+ | Symbol | +Meaning | +
---|---|---|
Exogenous Inputs | +\(x_\mu\) | +Motion of the $ν$-hexapod’s base | +
Exogenous Outputs | +\(y\) | +Motion error of the Payload | +
Sensed Outputs | +\(y\) | +Motion error of the Payload | +
Control Signals | +\(F\) | +Actuator Inputs | +
+Add \(F\) as output. +
+F = [tf(1); tf(1)]; +F.InputName = {'Fi'}; +F.OutputName = {'F', 'Fu'}; + +P_pz = connect(F, Gpz_dvf, {'dmu', 'Fi'}, {'y', 'Fu', 'y'}) +P_vc = connect(F, Gvc_dvf, {'dmu', 'Fi'}, {'y', 'Fu', 'y'}) ++
+Normalization. +
+ ++We multiply the plant input by \(G_{rz}\) and the plant output by \(G_y^{-1}\): +
+P_pz_norm = blkdiag(inv(G_y), inv(G_F), 1)*P_pz*blkdiag(G_rz, 1); +P_pz_norm.OutputName = {'z', 'F', 'y'}; +P_pz_norm.InputName = {'w', 'u'}; + +P_vc_norm = blkdiag(inv(G_y), inv(G_F), 1)*P_vc*blkdiag(G_rz, 1); +P_vc_norm.OutputName = {'z', 'F', 'y'}; +P_vc_norm.InputName = {'w', 'u'}; ++
[Kpz_dvf,CL_vc,~] = hinfsyn(minreal(P_pz_norm), 1, 1, 'TOLGAM', 0.001, 'METHOD', 'LMI', 'DISPLAY', 'on'); +Kpz_dvf.InputName = {'e'}; +Kpz_dvf.OutputName = {'Fi'}; + +[Kvc_dvf,CL_pz,~] = hinfsyn(minreal(P_vc_norm), 1, 1, 'TOLGAM', 0.001, 'METHOD', 'LMI', 'DISPLAY', 'on'); +Kvc_dvf.InputName = {'e'}; +Kvc_dvf.OutputName = {'Fi'}; ++
Sfb = sumblk('e = r2 - y'); + +R = [tf(1); tf(1)]; +R.InputName = {'r'}; +R.OutputName = {'r1', 'r2'}; + +F = [tf(1); tf(1)]; +F.InputName = {'Fi'}; +F.OutputName = {'F', 'Fu'}; + +Gpz_fb_dvf = connect(Gpz_dvf, -Kpz_dvf, R, Sfb, F, {'r', 'dmu', 'Fd', 'w'}, {'y', 'e', 'Fm', 'd', 'Fu'}); +Gvc_fb_dvf = connect(Gvc_dvf, -Kvc_dvf, R, Sfb, F, {'r', 'dmu', 'Fd', 'w'}, {'y', 'e', 'Fm', 'd', 'Fu'}); ++