Tutorial

As a tutorial, it is assumed that in the figure,
,
,
, where
.
Setup
The following code returns a structure variable sysEnv that contains the information about the system environment that will be used later in designing the DOB.
C = tf(2, [1, 4]);
P_n = tf(5, [1, -2]);
N = {[4, 10]};
D = {1, [-10, 10]};
sysEnv = setup_sys(N, D, P_n, C)
The field nominalStab is 1 since the nominal closed-loop system is stable and the field minPhase is also 1 since a given set of uncertain plants does not contain any non-minimum phase systems (In fact, there is no zero dynamics.).
Design of Q-filter
The following code returns a transfer function model
Qcanon with a constant numerator and the relative degree 3 that robustly stabilizes the fast dynamics of the closed-loop system.
Qcanon = gen_Qcanon(sysEnv, 3)
If you want to try to use your own , the following code informs you if the fast dynamics of the closed-loop system is robustly stable or not.
isFastDynamicsStable(sysEnv, tf(1, [1, 1]))
Finally, the following code returns the supremum ,
supTau such that for all , the closed-loop system with the DOB designed under
Qcanon is robustly stable. Here, Symbolic Math Toolbox is required for the option 'exact' and 10 means the resolution of the 'approximate' search method.
supTau = get_supTau(sysEnv, Qcanon, 'exact')
supTau = get_supTau(sysEnv, Qcanon, 'approx', 10)
In conclusion, DO-DAT suggests you to use the Q-filter for the robust stability of the closed-loop system as follows.
, for any
.