Re-export everything
Deploy / deploy (push) Successful in 5s

This commit is contained in:
tdehaeze committed 2026-10-12 14:10:30 +02:00
1 parent 665774dd08
commit 432702d1a4
40 files changed
+397 -646

No files matched your search

@@ -51,7 +51,7 @@ It consists of three steps:
<a id="figure--fig:control-procedure"></a>
{{< figure src="figs/control-procedure.png" caption="<span class=\"figure-number\">Figure 1: </span>Typical Methodoly for Model Based Control" >}}
{{< figure src="figs/control-procedure.png" caption="<span class='figure-number'>Figure 1: </span>Typical Methodoly for Model Based Control" >}}
In this document, we will suppose a model of the plant is available (step 1 already performed), and we will focus on steps 2 and 3.
@@ -121,7 +121,7 @@ The notations used on [Figure 2](#figure--fig:mech-sys-1dof-inertial-contr) are
<a id="figure--fig:mech-sys-1dof-inertial-contr"></a>
{{< figure src="figs/mech_sys_1dof_inertial_contr.png" caption="<span class=\"figure-number\">Figure 2: </span>Test System consisting of a payload with a mass \\(m\\) on top of an active system with a stiffness \\(k\\), damping \\(c\\) and an actuator. A feedback controller \\(K(s)\\) is added to position / isolate the payload." >}}
{{< figure src="figs/mech_sys_1dof_inertial_contr.png" caption="<span class='figure-number'>Figure 2: </span>Test System consisting of a payload with a mass \\(m\\) on top of an active system with a stiffness \\(k\\), damping \\(c\\) and an actuator. A feedback controller \\(K(s)\\) is added to position / isolate the payload." >}}
<a id="table--tab:example-notations"></a>
<div class="table-caption">
@@ -178,7 +178,7 @@ Having obtained \\(G(s)\\) and \\(G\_d(s)\\), we can transform the system shown
<a id="figure--fig:classical-feedback-test-system"></a>
{{< figure src="figs/classical_feedback_test_system.png" caption="<span class=\"figure-number\">Figure 3: </span>Block diagram corresponding to the example system of [Figure 2](#figure--fig:mech-sys-1dof-inertial-contr)" >}}
{{< figure src="figs/classical_feedback_test_system.png" caption="<span class='figure-number'>Figure 3: </span>Block diagram corresponding to the example system of [Figure 2](#figure--fig:mech-sys-1dof-inertial-contr)" >}}
Let's define the system parameters on Matlab.
@@ -199,11 +199,11 @@ The Bode plots of \\(G(s)\\) and \\(G\_d(s)\\) are shown in Figures [Figure 4](#
<a id="figure--fig:bode-plot-example-afm"></a>
{{< figure src="figs/bode_plot_example_afm.png" caption="<span class=\"figure-number\">Figure 4: </span>Bode plot of the plant \\(G(s)\\)" >}}
{{< figure src="figs/bode_plot_example_afm.png" caption="<span class='figure-number'>Figure 4: </span>Bode plot of the plant \\(G(s)\\)" >}}
<a id="figure--fig:bode-plot-example-Gd"></a>
{{< figure src="figs/bode_plot_example_Gd.png" caption="<span class=\"figure-number\">Figure 5: </span>Magnitude of the disturbance transfer function \\(G\_d(s)\\)" >}}
{{< figure src="figs/bode_plot_example_Gd.png" caption="<span class='figure-number'>Figure 5: </span>Magnitude of the disturbance transfer function \\(G\_d(s)\\)" >}}
## Classical Open Loop Shaping {#sec:open_loop_shaping}
@@ -235,7 +235,7 @@ Its name comes from the fact that this is actually the "gain around the loop".
<a id="figure--fig:open-loop-shaping"></a>
{{< figure src="figs/open_loop_shaping.png" caption="<span class=\"figure-number\">Figure 6: </span>Classical Feedback Architecture" >}}
{{< figure src="figs/open_loop_shaping.png" caption="<span class='figure-number'>Figure 6: </span>Classical Feedback Architecture" >}}
</div>
@@ -256,7 +256,7 @@ Another interesting Loop shape called "Bode Step" is described in (<a href="#cit
<a id="figure--fig:open-loop-shaping-shape"></a>
{{< figure src="figs/open_loop_shaping_shape.png" caption="<span class=\"figure-number\">Figure 7: </span>Typical Wanted Shape for the Loop Gain \\(L(s)\\)" >}}
{{< figure src="figs/open_loop_shaping_shape.png" caption="<span class='figure-number'>Figure 7: </span>Typical Wanted Shape for the Loop Gain \\(L(s)\\)" >}}
The shaping of **closed-loop** transfer functions is obviously not as simple as they don't depend linearly on \\(K(s)\\).
But this is were the \\(\mathcal{H}\_\infty\\) Synthesis will be useful!
@@ -324,7 +324,7 @@ The bode plot of the Loop Gain is shown in [Figure 8](#figure--fig:loop-gain-man
<a id="figure--fig:loop-gain-manual-afm"></a>
{{< figure src="figs/loop_gain_manual_afm.png" caption="<span class=\"figure-number\">Figure 8: </span>Bode Plot of the obtained Loop Gain \\(L(s) = G(s) K(s)\\)" >}}
{{< figure src="figs/loop_gain_manual_afm.png" caption="<span class='figure-number'>Figure 8: </span>Bode Plot of the obtained Loop Gain \\(L(s) = G(s) K(s)\\)" >}}
### \\(\mathcal{H}\_\infty\\) Loop Shaping Synthesis {#sec:h_infinity_open_loop_shaping}
@@ -396,7 +396,7 @@ The obtained Loop Gain is shown in [Figure 9](#figure--fig:open-loop-shaping-hin
<a id="figure--fig:open-loop-shaping-hinf-L"></a>
{{< figure src="figs/open_loop_shaping_hinf_L.png" caption="<span class=\"figure-number\">Figure 9: </span>Obtained Open Loop Gain \\(L(s) = G(s) K(s)\\) and comparison with the wanted Loop gain \\(L\_w\\)" >}}
{{< figure src="figs/open_loop_shaping_hinf_L.png" caption="<span class='figure-number'>Figure 9: </span>Obtained Open Loop Gain \\(L(s) = G(s) K(s)\\) and comparison with the wanted Loop gain \\(L\_w\\)" >}}
<div class="important">
@@ -414,7 +414,7 @@ Let's briefly analyze the obtained controller which bode plot is shown in [Figur
<a id="figure--fig:open-loop-shaping-hinf-K"></a>
{{< figure src="figs/open_loop_shaping_hinf_K.png" caption="<span class=\"figure-number\">Figure 10: </span>Obtained controller \\(K\\) using the open-loop \\(\mathcal{H}\_\infty\\) shaping" >}}
{{< figure src="figs/open_loop_shaping_hinf_K.png" caption="<span class='figure-number'>Figure 10: </span>Obtained controller \\(K\\) using the open-loop \\(\mathcal{H}\_\infty\\) shaping" >}}
Let's finally compare the obtained stability margins of the \\(\mathcal{H}\_\infty\\) controller and of the manually developed controller in [Table 4](#table--tab:open-loop-shaping-compare).
@@ -477,7 +477,7 @@ We can see in [Figure 11](#figure--fig:hinfinity-norm-siso-bode) that indeed, th
<a id="figure--fig:hinfinity-norm-siso-bode"></a>
{{< figure src="figs/hinfinity_norm_siso_bode.png" caption="<span class=\"figure-number\">Figure 11: </span>Example of the \\(\mathcal{H}\_\infty\\) norm of a SISO system" >}}
{{< figure src="figs/hinfinity_norm_siso_bode.png" caption="<span class='figure-number'>Figure 11: </span>Example of the \\(\mathcal{H}\_\infty\\) norm of a SISO system" >}}
</div>
@@ -533,7 +533,7 @@ A practical example about how to derive the generalized plant for a classical co
<a id="figure--fig:general-plant"></a>
{{< figure src="figs/general_plant.png" caption="<span class=\"figure-number\">Figure 12: </span>Inputs and Outputs of the generalized Plant" >}}
{{< figure src="figs/general_plant.png" caption="<span class='figure-number'>Figure 12: </span>Inputs and Outputs of the generalized Plant" >}}
<a id="table--tab:notation-general"></a>
<div class="table-caption">
@@ -569,7 +569,7 @@ The obtained controller \\(K\\) and the generalized plant are connected as shown
<a id="figure--fig:general-control-names"></a>
{{< figure src="figs/general_control_names.png" caption="<span class=\"figure-number\">Figure 13: </span>General Control Configuration" >}}
{{< figure src="figs/general_control_names.png" caption="<span class='figure-number'>Figure 13: </span>General Control Configuration" >}}
</div>
@@ -606,7 +606,7 @@ Suppose we want to design \\(K\\) using the general \\(\mathcal{H}\_\infty\\) sy
<a id="figure--fig:classical-feedback-tracking"></a>
{{< figure src="figs/classical_feedback_tracking.png" caption="<span class=\"figure-number\">Figure 14: </span>Classical Feedback Control Architecture (Tracking)" >}}
{{< figure src="figs/classical_feedback_tracking.png" caption="<span class='figure-number'>Figure 14: </span>Classical Feedback Control Architecture (Tracking)" >}}
<details><summary>Hint</summary>
@@ -628,7 +628,7 @@ The obtained generalized plant shown in [Figure 15](#figure--fig:mixed-sensitivi
<a id="figure--fig:mixed-sensitivity-ref-tracking"></a>
{{< figure src="figs/mixed_sensitivity_ref_tracking.png" caption="<span class=\"figure-number\">Figure 15: </span>Generalized plant of the Classical Feedback Control Architecture (Tracking)" >}}
{{< figure src="figs/mixed_sensitivity_ref_tracking.png" caption="<span class='figure-number'>Figure 15: </span>Generalized plant of the Classical Feedback Control Architecture (Tracking)" >}}
Using Matlab, the generalized plant can be defined as follows:
@@ -678,7 +678,7 @@ These are summarized in [Table 6](#table--tab:spec-closed-loop-tf).
<a id="figure--fig:gang-of-four-feedback"></a>
{{< figure src="figs/gang_of_four_feedback.png" caption="<span class=\"figure-number\">Figure 16: </span>Simple Feedback Architecture with \\(r\\) the reference signal, \\(\epsilon\\) the tracking error, \\(d\\) a disturbance acting at the plant input \\(u\\), \\(y\\) is the output signal and \\(n\\) the measurement noise" >}}
{{< figure src="figs/gang_of_four_feedback.png" caption="<span class='figure-number'>Figure 16: </span>Simple Feedback Architecture with \\(r\\) the reference signal, \\(\epsilon\\) the tracking error, \\(d\\) a disturbance acting at the plant input \\(u\\), \\(y\\) is the output signal and \\(n\\) the measurement noise" >}}
<a id="table--tab:spec-closed-loop-tf"></a>
<div class="table-caption">
@@ -788,11 +788,11 @@ The comparison of the sensitivity functions shapes and their effect on the step
<a id="figure--fig:sensitivity-shape-effect"></a>
{{< figure src="figs/sensitivity_shape_effect.png" caption="<span class=\"figure-number\">Figure 17: </span>Sensitivity function magnitude \\(|S(j\omega)|\\) corresponding to the reference controller \\(K\_r(s)\\) and the three modified controllers \\(K\_i(s)\\)" >}}
{{< figure src="figs/sensitivity_shape_effect.png" caption="<span class='figure-number'>Figure 17: </span>Sensitivity function magnitude \\(|S(j\omega)|\\) corresponding to the reference controller \\(K\_r(s)\\) and the three modified controllers \\(K\_i(s)\\)" >}}
<a id="figure--fig:sensitivity-shape-effect-step"></a>
{{< figure src="figs/sensitivity_shape_effect_step.png" caption="<span class=\"figure-number\">Figure 18: </span>Step response (response from \\(r\\) to \\(y\\)) for the different controllers" >}}
{{< figure src="figs/sensitivity_shape_effect_step.png" caption="<span class='figure-number'>Figure 18: </span>Step response (response from \\(r\\) to \\(y\\)) for the different controllers" >}}
<div class="definition">
@@ -815,7 +815,7 @@ From the simple analysis above, we can draw a first estimation of the wanted sha
<a id="figure--fig:h-infinity-spec-S"></a>
{{< figure src="figs/h-infinity-spec-S.png" caption="<span class=\"figure-number\">Figure 19: </span>Typical wanted shape of the Sensitivity transfer function" >}}
{{< figure src="figs/h-infinity-spec-S.png" caption="<span class='figure-number'>Figure 19: </span>Typical wanted shape of the Sensitivity transfer function" >}}
</div>
@@ -854,7 +854,7 @@ Or does it? Let's find out.
<a id="figure--fig:phase-gain-margin-model-plant"></a>
{{< figure src="figs/phase_gain_margin_model_plant.png" caption="<span class=\"figure-number\">Figure 20: </span>Bode plot of the obtained Loop Gain \\(L(s)\\)" >}}
{{< figure src="figs/phase_gain_margin_model_plant.png" caption="<span class='figure-number'>Figure 20: </span>Bode plot of the obtained Loop Gain \\(L(s)\\)" >}}
Now let's suppose the controller is implemented in practice, and the "real" plant \\(G\_r(s)\\) as a slightly lower damping factor than the one estimated for the model:
@@ -877,7 +877,7 @@ isstable(feedback(Gr,Kt))
<a id="figure--fig:phase-gain-margin-real-plant"></a>
{{< figure src="figs/phase_gain_margin_real_plant.png" caption="<span class=\"figure-number\">Figure 21: </span>Bode plots of \\(L(s)\\) (loop gain corresponding the nominal plant) and \\(L\_r(s)\\) (loop gain corresponding to the real plant)" >}}
{{< figure src="figs/phase_gain_margin_real_plant.png" caption="<span class='figure-number'>Figure 21: </span>Bode plots of \\(L(s)\\) (loop gain corresponding the nominal plant) and \\(L\_r(s)\\) (loop gain corresponding to the real plant)" >}}
Therefore, even a small change of the plant parameter renders the system unstable even though both the gain margin and the phase margin for the nominal plant are excellent.
@@ -921,7 +921,7 @@ The gain, phase and module margins are graphically shown to have an idea of what
<a id="figure--fig:module-margin-example"></a>
{{< figure src="figs/module_margin_example.png" caption="<span class=\"figure-number\">Figure 22: </span>Nyquist plot with visual indication of the Gain margin \\(\Delta G\\), Phase margin \\(\Delta \phi\\) and Module margin \\(\Delta M\\)" >}}
{{< figure src="figs/module_margin_example.png" caption="<span class='figure-number'>Figure 22: </span>Nyquist plot with visual indication of the Gain margin \\(\Delta G\\), Phase margin \\(\Delta \phi\\) and Module margin \\(\Delta M\\)" >}}
</div>
@@ -1024,7 +1024,7 @@ Clearly this does not allow to **shape** the norm of \\(S(j\omega)\\) over all f
<a id="figure--fig:loop-shaping-S-without-W"></a>
{{< figure src="figs/loop_shaping_S_without_W.png" caption="<span class=\"figure-number\">Figure 23: </span>Generalized Plant" >}}
{{< figure src="figs/loop_shaping_S_without_W.png" caption="<span class='figure-number'>Figure 23: </span>Generalized Plant" >}}
<div class="important">
@@ -1052,7 +1052,7 @@ Therefore, the choice of the weighting function \\(W\_s(s)\\) is very important:
<a id="figure--fig:loop-shaping-S-with-W"></a>
{{< figure src="figs/loop_shaping_S_with_W.png" caption="<span class=\"figure-number\">Figure 24: </span>Weighted Generalized Plant" >}}
{{< figure src="figs/loop_shaping_S_with_W.png" caption="<span class='figure-number'>Figure 24: </span>Weighted Generalized Plant" >}}
<div class="exercice">
@@ -1136,7 +1136,7 @@ Ws = makeweight(1e2, [2*pi*10, 1], 1/2);
<a id="figure--fig:first-order-weight"></a>
{{< figure src="figs/first_order_weight.png" caption="<span class=\"figure-number\">Figure 25: </span>Obtained Magnitude of the Weighting Function" >}}
{{< figure src="figs/first_order_weight.png" caption="<span class='figure-number'>Figure 25: </span>Obtained Magnitude of the Weighting Function" >}}
</div>
@@ -1198,7 +1198,7 @@ The obtained shapes are shown in [Figure 26](#figure--fig:high-order-weight).
<a id="figure--fig:high-order-weight"></a>
{{< figure src="figs/high_order_weight.png" caption="<span class=\"figure-number\">Figure 26: </span>Higher order weights using Equation " >}}
{{< figure src="figs/high_order_weight.png" caption="<span class='figure-number'>Figure 26: </span>Higher order weights using Equation " >}}
</div>
@@ -1232,7 +1232,7 @@ Remember that the wanted upper bound of the sensitivity function is defined by t
<a id="figure--fig:h-infinity-spec-S-bis"></a>
{{< figure src="figs/h-infinity-spec-S.png" caption="<span class=\"figure-number\">Figure 27: </span>Typical wanted shape of the Sensitivity transfer function" >}}
{{< figure src="figs/h-infinity-spec-S.png" caption="<span class='figure-number'>Figure 27: </span>Typical wanted shape of the Sensitivity transfer function" >}}
</details>
@@ -1287,15 +1287,15 @@ K = hinfsyn(Pw, 1, 1, 'Display', 'on');
```
```text
Test bounds: 0.5 <= gamma <= 0.51
Test bounds: 0.5 <= gamma <= 0.51
gamma X>=0 Y>=0 rho(XY)<1 p/f
5.05e-01 0.0e+00 0.0e+00 3.000e-16 p
Limiting gains...
5.05e-01 0.0e+00 0.0e+00 3.461e-16 p
5.05e-01 -3.5e+01 # -4.9e-14 1.732e-26 f
gamma X>=0 Y>=0 rho(XY)<1 p/f
5.05e-01 0.0e+00 0.0e+00 3.000e-16 p
Limiting gains...
5.05e-01 0.0e+00 0.0e+00 3.461e-16 p
5.05e-01 -3.5e+01 # -4.9e-14 1.732e-26 f
Best performance (actual): 0.503
Best performance (actual): 0.503
```
\\(\gamma \approx 0.5\\) means that the \\(\mathcal{H}\_\infty\\) synthesis generated a controller \\(K(s)\\) that stabilizes the closed-loop system, and such that the \\(\mathcal{H}\_\infty\\) norm of the closed-loop transfer function from \\(w\\) to \\(z\\) is less than \\(\gamma\\):
@@ -1318,7 +1318,7 @@ It just means that at some frequency, one of the closed-loop transfer functions
<a id="figure--fig:results-sensitivity-hinf"></a>
{{< figure src="figs/results_sensitivity_hinf.png" caption="<span class=\"figure-number\">Figure 28: </span>Weighting function and obtained closed-loop sensitivity" >}}
{{< figure src="figs/results_sensitivity_hinf.png" caption="<span class='figure-number'>Figure 28: </span>Weighting function and obtained closed-loop sensitivity" >}}
### Shaping multiple closed-loop transfer functions - Limitations {#sec:shaping_multiple_tf}
@@ -1359,7 +1359,7 @@ Some of them are described below for reference, it is a good exercise to try to
<a id="figure--fig:general-conf-shaping-S-KS"></a>
{{< figure src="figs/general_conf_shaping_S_KS.png" caption="<span class=\"figure-number\">Figure 29: </span>Generalized Plant to shape \\(S\\) and \\(KS\\)" >}}
{{< figure src="figs/general_conf_shaping_S_KS.png" caption="<span class='figure-number'>Figure 29: </span>Generalized Plant to shape \\(S\\) and \\(KS\\)" >}}
Weighting functions:
@@ -1381,7 +1381,7 @@ Pw = blkdiag(W1, W2, 1)*P;
<a id="figure--fig:general-conf-shaping-S-T"></a>
{{< figure src="figs/general_conf_shaping_S_T.png" caption="<span class=\"figure-number\">Figure 30: </span>Generalized Plant to shape \\(S\\) and \\(T\\)" >}}
{{< figure src="figs/general_conf_shaping_S_T.png" caption="<span class='figure-number'>Figure 30: </span>Generalized Plant to shape \\(S\\) and \\(T\\)" >}}
Weighting functions:
@@ -1403,7 +1403,7 @@ Pw = blkdiag(W1, W2, 1)*P;
<a id="figure--fig:general-conf-shaping-S-GS"></a>
{{< figure src="figs/general_conf_shaping_S_GS.png" caption="<span class=\"figure-number\">Figure 31: </span>Generalized Plant to shape \\(S\\) and \\(GS\\)" >}}
{{< figure src="figs/general_conf_shaping_S_GS.png" caption="<span class='figure-number'>Figure 31: </span>Generalized Plant to shape \\(S\\) and \\(GS\\)" >}}
Weighting functions:
@@ -1425,7 +1425,7 @@ Pw = blkdiag(W1, W2, 1)*P;
<a id="figure--fig:general-conf-shaping-S-T-KS"></a>
{{< figure src="figs/general_conf_shaping_S_T_KS.png" caption="<span class=\"figure-number\">Figure 32: </span>Generalized Plant to shape \\(S\\), \\(T\\) and \\(KS\\)" >}}
{{< figure src="figs/general_conf_shaping_S_T_KS.png" caption="<span class='figure-number'>Figure 32: </span>Generalized Plant to shape \\(S\\), \\(T\\) and \\(KS\\)" >}}
Weighting functions:
@@ -1449,7 +1449,7 @@ Pw = blkdiag(W1, W2, W3, 1)*P;
<a id="figure--fig:general-conf-shaping-S-T-GS"></a>
{{< figure src="figs/general_conf_shaping_S_T_GS.png" caption="<span class=\"figure-number\">Figure 33: </span>Generalized Plant to shape \\(S\\), \\(T\\) and \\(GS\\)" >}}
{{< figure src="figs/general_conf_shaping_S_T_GS.png" caption="<span class='figure-number'>Figure 33: </span>Generalized Plant to shape \\(S\\), \\(T\\) and \\(GS\\)" >}}
Weighting functions:
@@ -1473,7 +1473,7 @@ Pw = blkdiag(W1, W2, W3, 1)*P;
<a id="figure--fig:general-conf-shaping-S-T-KS-GS"></a>
{{< figure src="figs/general_conf_shaping_S_T_KS_GS.png" caption="<span class=\"figure-number\">Figure 34: </span>Generalized Plant to shape \\(S\\), \\(T\\), \\(KS\\) and \\(GS\\)" >}}
{{< figure src="figs/general_conf_shaping_S_T_KS_GS.png" caption="<span class='figure-number'>Figure 34: </span>Generalized Plant to shape \\(S\\), \\(T\\), \\(KS\\) and \\(GS\\)" >}}
Weighting functions:
@@ -1563,7 +1563,7 @@ These regions are summarized in [Figure 35](#figure--fig:h-infinity-4-blocs-cons
<a id="figure--fig:h-infinity-4-blocs-constrains"></a>
{{< figure src="figs/h-infinity-4-blocs-constrains.png" caption="<span class=\"figure-number\">Figure 35: </span>Shaping the Gang of Four. Blue regions indicate that the transfer function can be shaped using \\(K\\). Red regions indicate this is not the case" >}}
{{< figure src="figs/h-infinity-4-blocs-constrains.png" caption="<span class='figure-number'>Figure 35: </span>Shaping the Gang of Four. Blue regions indicate that the transfer function can be shaped using \\(K\\). Red regions indicate this is not the case" >}}
<div class="warning">
@@ -1597,7 +1597,7 @@ Let's consider our usual _test system_ shown in [Figure 36](#figure--fig:ex-test
<a id="figure--fig:ex-test-system"></a>
{{< figure src="figs/ex_test_system.png" caption="<span class=\"figure-number\">Figure 36: </span>Test System consisting of a payload with a mass \\(m\\) on top of an active system with a stiffness \\(k\\), damping \\(c\\) and an actuator. A feedback controller \\(K(s)\\) is added to position / isolate the payload." >}}
{{< figure src="figs/ex_test_system.png" caption="<span class='figure-number'>Figure 36: </span>Test System consisting of a payload with a mass \\(m\\) on top of an active system with a stiffness \\(k\\), damping \\(c\\) and an actuator. A feedback controller \\(K(s)\\) is added to position / isolate the payload." >}}
<div class="important">
@@ -1631,7 +1631,7 @@ Let's first convert the system of [Figure 36](#figure--fig:ex-test-system) into
<a id="figure--fig:classical-feedback-test-system-bis"></a>
{{< figure src="figs/ex_test_system_feedback.png" caption="<span class=\"figure-number\">Figure 37: </span>Block diagram corresponding to the example system" >}}
{{< figure src="figs/ex_test_system_feedback.png" caption="<span class='figure-number'>Figure 37: </span>Block diagram corresponding to the example system" >}}
The two transfer functions present in the system are derived and defined below:
@@ -1671,13 +1671,13 @@ d(t>0.3) = 5e-6;
<a id="figure--fig:ex-inputs-signals"></a>
{{< figure src="figs/ex_inputs_signals.png" caption="<span class=\"figure-number\">Figure 38: </span>Time domain inputs signals" >}}
{{< figure src="figs/ex_inputs_signals.png" caption="<span class='figure-number'>Figure 38: </span>Time domain inputs signals" >}}
We also define the generalized plant corresponding to the system and that will be used for time domain simulations ([Figure 39](#figure--fig:ex-general-plant-sim)).
<a id="figure--fig:ex-general-plant-sim"></a>
{{< figure src="figs/ex_general_plant_sim.png" caption="<span class=\"figure-number\">Figure 39: </span>Generalized plant that will be used for simulations" >}}
{{< figure src="figs/ex_general_plant_sim.png" caption="<span class='figure-number'>Figure 39: </span>Generalized plant that will be used for simulations" >}}
The Generalized plant of [Figure 39](#figure--fig:ex-general-plant-sim) is defined on Matlab as follows:
@@ -1754,7 +1754,7 @@ P = [1 -1
<a id="figure--fig:ex-general-plant"></a>
{{< figure src="figs/ex_general_plant.png" caption="<span class=\"figure-number\">Figure 40: </span>Generalized plant chosen for the shaping of \\(S\\), \\(GS\\) \\(T\\)" >}}
{{< figure src="figs/ex_general_plant.png" caption="<span class='figure-number'>Figure 40: </span>Generalized plant chosen for the shaping of \\(S\\), \\(GS\\) \\(T\\)" >}}
However, to performed the \\(\mathcal{H}\_\infty\\) loop shaping, we have to include **weighting function** to the Generalized plant.
We obtain the **weighted generalized plant** in [Figure 41](#figure--fig:ex-general-weighted-plant), and that is computed using Matlab as follows:
@@ -1765,7 +1765,7 @@ Pw = blkdiag(W1, W2, W3, 1)*P;
<a id="figure--fig:ex-general-weighted-plant"></a>
{{< figure src="figs/ex_general_weighted_plant.png" caption="<span class=\"figure-number\">Figure 41: </span>Generalized weighted plant used for the \\(\mathcal{H}\_\infty\\) Synthesis" >}}
{{< figure src="figs/ex_general_weighted_plant.png" caption="<span class='figure-number'>Figure 41: </span>Generalized weighted plant used for the \\(\mathcal{H}\_\infty\\) Synthesis" >}}
Finlay, performing the \\(\mathcal{H}\_\infty\\) Shaping of \\(S\\), \\(GS\\) and \\(T\\) is as simple as ruining the `hinfsyn` command:
@@ -1813,19 +1813,19 @@ K1 = hinfsyn(Pw, 1, 1, 'Display', 'on');
```
```text
Test bounds: 0.5 <= gamma <= 0.51
Test bounds: 0.5 <= gamma <= 0.51
gamma X>=0 Y>=0 rho(XY)<1 p/f
5.05e-01 0.0e+00 0.0e+00 5.511e-14 p
Limiting gains...
5.05e-01 0.0e+00 0.0e+00 1.867e-14 p
gamma X>=0 Y>=0 rho(XY)<1 p/f
5.05e-01 0.0e+00 0.0e+00 5.511e-14 p
Limiting gains...
5.05e-01 0.0e+00 0.0e+00 1.867e-14 p
Best performance (actual): 0.502
Best performance (actual): 0.502
```
<a id="figure--fig:ex-results-1"></a>
{{< figure src="figs/ex_results_1.png" caption="<span class=\"figure-number\">Figure 42: </span>Obtained Shape Closed-Loop transfer functions (dashed black lines indicate inverse magnitude of the weighting functions)" >}}
{{< figure src="figs/ex_results_1.png" caption="<span class='figure-number'>Figure 42: </span>Obtained Shape Closed-Loop transfer functions (dashed black lines indicate inverse magnitude of the weighting functions)" >}}
Time domain simulation is then performed and the obtained output displacement and control inputs are shown in [Figure 43](#figure--fig:ex-time-domain-1).
@@ -1837,7 +1837,7 @@ We can see:
<a id="figure--fig:ex-time-domain-1"></a>
{{< figure src="figs/ex_time_domain_1.png" caption="<span class=\"figure-number\">Figure 43: </span>Time domain simulation results" >}}
{{< figure src="figs/ex_time_domain_1.png" caption="<span class='figure-number'>Figure 43: </span>Time domain simulation results" >}}
Remember that in order to follow ramp inputs, the sensitivity function should have a slope of +40dB/dec at low frequency ([Table 9](#table--tab:usual-shaping-gang-four)).
@@ -1857,11 +1857,11 @@ The time domain signals are shown in [Figure 45](#figure--fig:ex-time-domain-1b)
<a id="figure--fig:ex-results-1b"></a>
{{< figure src="figs/ex_results_1b.png" caption="<span class=\"figure-number\">Figure 44: </span>Obtained Shape Closed-Loop transfer functions" >}}
{{< figure src="figs/ex_results_1b.png" caption="<span class='figure-number'>Figure 44: </span>Obtained Shape Closed-Loop transfer functions" >}}
<a id="figure--fig:ex-time-domain-1b"></a>
{{< figure src="figs/ex_time_domain_1b.png" caption="<span class=\"figure-number\">Figure 45: </span>Time domain simulation results" >}}
{{< figure src="figs/ex_time_domain_1b.png" caption="<span class='figure-number'>Figure 45: </span>Time domain simulation results" >}}
### Step 2 - Shaping of \\(GS\\) {#sec:ex_shaping_GS}
@@ -1882,14 +1882,14 @@ The \\(\mathcal{H}\_\infty\\) Synthesis is performed and the obtained closed-loo
<a id="figure--fig:ex-results-2"></a>
{{< figure src="figs/ex_results_2.png" caption="<span class=\"figure-number\">Figure 46: </span>Obtained Shape Closed-Loop transfer functions" >}}
{{< figure src="figs/ex_results_2.png" caption="<span class='figure-number'>Figure 46: </span>Obtained Shape Closed-Loop transfer functions" >}}
Time domain simulation results are shown in [Figure 47](#figure--fig:ex-time-domain-2).
If is shown that indeed, the disturbance rejection performance are much better and only very small oscillation is obtained.
<a id="figure--fig:ex-time-domain-2"></a>
{{< figure src="figs/ex_time_domain_2.png" caption="<span class=\"figure-number\">Figure 47: </span>Time domain simulation results" >}}
{{< figure src="figs/ex_time_domain_2.png" caption="<span class='figure-number'>Figure 47: </span>Time domain simulation results" >}}
### Step 3 - Shaping of \\(T\\) {#sec:ex_shaping_T}
@@ -1918,7 +1918,7 @@ The obtained closed-loop transfer functions are shown in [Figure 48](#figure--fi
<a id="figure--fig:ex-results-3"></a>
{{< figure src="figs/ex_results_3.png" caption="<span class=\"figure-number\">Figure 48: </span>Obtained Shape Closed-Loop transfer functions" >}}
{{< figure src="figs/ex_results_3.png" caption="<span class='figure-number'>Figure 48: </span>Obtained Shape Closed-Loop transfer functions" >}}
The time domain simulation signals are shown in [Figure 49](#figure--fig:ex-time-domain-3).
We can indeed see a slightly less good disturbance rejection.
@@ -1927,11 +1927,11 @@ This can be seen when zooming on the output signal in [Figure 50](#figure--fig:e
<a id="figure--fig:ex-time-domain-3"></a>
{{< figure src="figs/ex_time_domain_3.png" caption="<span class=\"figure-number\">Figure 49: </span>Time domain simulation results" >}}
{{< figure src="figs/ex_time_domain_3.png" caption="<span class='figure-number'>Figure 49: </span>Time domain simulation results" >}}
<a id="figure--fig:ex-time-domaim-3-zoom"></a>
{{< figure src="figs/ex_time_domaim_3_zoom.png" caption="<span class=\"figure-number\">Figure 50: </span>Zoom on the output signal" >}}
{{< figure src="figs/ex_time_domaim_3_zoom.png" caption="<span class='figure-number'>Figure 50: </span>Zoom on the output signal" >}}
### Conclusion and Discussion {#conclusion-and-discussion}