4.1 ADRC as a State-Space Controller
-
State feedback: Feeding back the estimated states \(\hat {\boldsymbol {x}}(t)\) with the gain vector \(\boldsymbol {k}_{\mathrm {c}}^{\mathrm {T}}\) moves the poles of the plant as desired for the closed-loop dynamics, which are determined by the eigenvalues of \(\left (\boldsymbol {A} - \boldsymbol {b} \boldsymbol {k}_{\mathrm {c}}^{\mathrm {T}} \right )\).×
-
Static gain compensation: To ensure r = y in steady state, the gain ks must be set to the inverse of the loop gain using (4.6):$$\displaystyle \begin{aligned} k_{\mathrm{s}} = -\left[ \boldsymbol{c}^{\mathrm{T}} \cdot \left( \boldsymbol{A} - \boldsymbol{b} \boldsymbol{k}_{\mathrm{c}}^{\mathrm{T}} \right)^{-1} \cdot \boldsymbol{b} \right]^{-1} . {} \end{aligned} $$(4.6)
-
Disturbance compensation: Feedback of \(\hat {\boldsymbol {x}}_{\mathrm {d}}(t)\) via \(\boldsymbol {k}_{\mathrm {d}}^{\mathrm {T}}\) to compensate the influence of the disturbance d(t) on the plant. Inserting (4.5) in (4.1) reveals that the disturbance may be fully rejected if accurately estimated and if \(\boldsymbol {b} \cdot \boldsymbol {k}_{\mathrm {d}}^{\mathrm {T}} = \boldsymbol {e} \cdot \boldsymbol {c}^{\mathrm {T}}_{\mathrm {d}}\) can be achieved.
-
Disturbance generator model: The disturbance model of ADRC in (3.9) is an unknown constant value for the total disturbance f(t); therefore \(\hat {\boldsymbol {x}}_{\mathrm {d}}(t)\) only consists of one scalar value. If we consequently set d(t) = f(t) and \(\hat {\boldsymbol {x}}_{\mathrm {d}}(t) = \hat {x}_{\mathrm {d}}(t) = \hat {f}(t)\), we obtain for the disturbance generator model (4.2)$$\displaystyle \begin{gathered} \boldsymbol{A}_{\mathrm{d}} = \begin{pmatrix} \,0\, \end{pmatrix} ,\quad \boldsymbol{c}^{\mathrm{T}}_{\mathrm{d}} = \begin{pmatrix} \,1\, \end{pmatrix} . {} \end{gathered} $$(4.7)
-
Plant model: Comparing (4.4) with the corresponding elements in (3.9) gives the values for A, b, cT of the plant (4.1):$$\displaystyle \begin{gathered} \boldsymbol{A} = \begin{pmatrix} \boldsymbol{0}^{(N-1) \times 1} & \boldsymbol{I}^{(N-1) \times (N-1)} \\ 0 & \boldsymbol{0}^{1 \times (N-1)} \end{pmatrix} ,\quad \boldsymbol{b} = \begin{pmatrix} \boldsymbol{0}^{(N-1) \times 1} \\ b_0 \end{pmatrix} ,\quad \boldsymbol{c}^{\mathrm{T}} = \begin{pmatrix} 1 & \boldsymbol{0}^{1 \times (N-1)} \end{pmatrix} . {} \end{gathered} $$(4.8)
-
Control law: Comparing the control law of ADRC from (3.15) with (4.5) gives$$\displaystyle \begin{gathered} k_{\mathrm{s}} = \frac{k_1}{b_0} ,\quad \boldsymbol{k}_{\mathrm{c}}^{\mathrm{T}} = \frac{1}{b_0} \cdot \boldsymbol{k}^{\mathrm{T}} = \frac{1}{b_0} \cdot \begin{pmatrix} k_1 & \cdots & k_N \end{pmatrix}^{\mathrm{T}} ,\quad \boldsymbol{k}_{\mathrm{d}}^{\mathrm{T}} = k_{\mathrm{d}} = \frac{1}{b_0} . {} \end{gathered} $$(4.10)
-
State-feedback gain: The controller gains \(\boldsymbol {k}_{\mathrm {c}}^{\mathrm {T}}\) must be chosen to achieve the desired eigenvalues of \(\left (\boldsymbol {A} - \boldsymbol {b} \boldsymbol {k}_{\mathrm {c}}^{\mathrm {T}} \right )\). Equation (4.8) is identical to (3.17), apart from the input gain b0. Ignoring b0, tuning \(\boldsymbol {k}_{\mathrm {c}}^{\mathrm {T}}\) exactly corresponds to the procedure described in Sect. 3.2.1. Aiming at the same eigenvalues (e.g., using bandwidth parameterization) will hence deliver the same gains. Now compensating the neglected input gain b0 has the same effect as ADRC’s plant gain inversion factor \(\frac {1}{b_0}\). We can therefore confirm the result:$$\displaystyle \begin{aligned} \boldsymbol{k}_{\mathrm{c}}^{\mathrm{T}} = \frac{1}{b_0} \cdot \boldsymbol{k}^{\mathrm{T}} = \frac{1}{b_0} \cdot \begin{pmatrix} k_1 & \cdots & k_N \end{pmatrix} . {} \end{aligned} $$(4.11)
-
Static gain compensation: Putting (4.8) and (4.11) into (4.6) gives the necessary gain ks to compensate the inner loop gain:$$\displaystyle \begin{aligned} \begin{array}{rl} k_{\mathrm{s}} = -\Bigg[ \begin{pmatrix} 1 & \boldsymbol{0}^{1 \times (N-1)} \end{pmatrix} \cdot \Bigg( &\begin{pmatrix} \boldsymbol{0}^{(N-1) \times 1} & \boldsymbol{I}^{(N-1) \times (N-1)} \\ 0 & \boldsymbol{0}^{1 \times (N-1)} \end{pmatrix} \\ &- \begin{pmatrix} \boldsymbol{0}^{(N-1) \times 1} \\ b_0 \end{pmatrix} \cdot \frac{1}{b_0} \cdot \begin{pmatrix} k_1 & \cdots & k_N \end{pmatrix}^{\mathrm{T}} \Bigg)^{-1} \!\!\cdot \begin{pmatrix} \boldsymbol{0}^{(N-1) \times 1} \\ b_0 \end{pmatrix} \Bigg]^{-1} . \end{array} \end{aligned}$$Simplifying this equation leads to the confirmation of the result from (4.10):$$\displaystyle \begin{aligned} k_{\mathrm{s}} = \frac{k_1}{b_0} . {} \end{aligned} $$(4.12)
-
Disturbance compensation gain: As mentioned above, if an accurate estimation of the states \(\hat {\boldsymbol {x}}_{\mathrm {d}}(t)\) is provided by the observer, the disturbance d(t) can be fully compensated if the following condition is satisfied:$$\displaystyle \begin{aligned} \boldsymbol{b} \cdot \boldsymbol{k}_{\mathrm{d}}^{\mathrm{T}} &= \boldsymbol{e} \cdot \boldsymbol{c}^{\mathrm{T}}_{\mathrm{d}} ,\\ \text{i.e.,} \quad \begin{pmatrix} \boldsymbol{0}^{(N-1) \times 1} \\ b_0 \end{pmatrix} \cdot k_{\mathrm{d}} &= \begin{pmatrix} \boldsymbol{0}^{(N-1) \times 1} \\ 1 \end{pmatrix} \cdot 1 . \end{aligned} $$We can therefore confirm the value obtained by comparison in (4.10):$$\displaystyle \begin{aligned} k_{\mathrm{d}} = \frac{1}{b_0} . {} \end{aligned} $$(4.13)