This is going to be a long question. To answer this question, you need to undestand the following:
- Sensitivity transfer function matrix $S(s)$
- Complementary sensitivity function matrix $T(s)$
- Disturbance transfer function matrix $G_{\omega u}(s)$
- Separation principle for LQG controllers
So here we go!
Let's say that we got a multivariable system $G(s)$ from the state space model:
$$G(s) = C(sI-A)^{-1}B + D$$
The sensitivity transfer function matrix is know as:
$$S(s) = \frac{1}{I + G(s)F_y}$$
Where $F_y$ is our matrix which will give a good sensitivity transfer function.
The complementary sensitivity function matrix is know as:
$$T(s) = \frac{G(s)F_y}{I + G(s)F_y}$$
The disturbance transfer function matrix is known as:
$$G_{\omega u}(s) = -F_yS(s) = -\frac{F_y}{I + G(s)F_y}$$
I need to choose the matrix $F_y$ so $S(s)$, $T(s)$ and $G_{\omega u}$ gets good properties.
Our goal with $H_\infty$ controll is to choosing the transfer function weighting matrices $W_S(s)$, $W_T(s)$ and $W_u(s)$ so this will be true:
$$\left | W_S(s)S(s) \right | < \gamma \hspace{0.2cm} \forall s$$ $$\left | W_T(s)T(s) \right | < \gamma \hspace{0.2cm} \forall s$$ $$\left | W_u(s)G_{\omega u}(s) \right | < \gamma \hspace{0.2cm} \forall s$$
Where $\gamma$ is a real number which needs to be choosen as a small number. If all this meet the conditions then move next to this riccati equation:
$$A^TS + SA + M^TM + S(\gamma^{-2} NN^T -BB^T)S = 0$$
Where $N$ is our disturbance matrix for the system. If the disturbances affects input $u$ then the distrurbance matrix $N$ will be $N = B$. The whole open loop system for the controller will look like this:
$$ \begin{matrix} \dot{x} = Ax + Bu + N\omega \\ z = Mx + Du\\ y = Cx + I\omega \end{matrix} $$
It's a state space model and we are going to buld a control law:
$$ u = -L_\infty \hat{x}$$
Yes! $H_\infty$ control has an observer too. The observer is the matrix $N$.
Anyway! Back to the riccati equation!
We need to solve the positive semidefenit matrix $S$ from the riccati equation. The matrix $S$ is not the sensitivity transfer function matrix $S(s)$. Remember that.
Now the are two choises:
- If we didin't found any positive semidefenit $S$ for the riccati equation. I need to go back and increese $\gamma$.
- If we found a positive semidefenit $S$ for the riccati equation. Accept that, or decreese $\gamma$ and test if the riccati equation will give a positive semidefenit $S$ too.
There is one thing more! Make sure that this is stable too:
$$det(sI - (A-BB^TS_\gamma)) = 0$$
Where $S = S_\gamma$
If $A-BB^TS_\gamma$ is stable, then we can find our control law:
$$ L_\infty = B^TS_\gamma$$
Our $H_\infty$ observer is:
$$\boxed{ \dot{\hat{x}} = A\hat{x} + Bu + N(y - C\hat{x})}$$
And our $H_\infty$ controller is: $$\boxed{ u = -L_\infty \hat{x}}$$
Our transfer fucntion matrix $F_y(s)$ will be then:
$$F_y(s) = L_\infty(sI - A + BB^TS_\gamma + NC)^{-1}N$$
Notice that $F_y(s)$ is not the same as matrix $F_y$.
If you want an integral action to this. You should create this controller:
$$\boxed{ u = -L_\infty \hat{x} + L_i x_i}$$
You can set $L_i$ to an identity matrix $I$ to begin with.
And one extra state more:
$$\boxed{\dot{x_i} = r - y = r - Cx}$$
Because: $$ x_i = \int_{0}^{t} (r- y)dt = \int_{0}^{t} (r - Cx)dt = \int_{0}^{t} = \dot{x_i} dt$$
Highly recommended if you can to have a good tracking of the reference input $r$.
So to summarize this:
- Given $G(s) = C(sI-A)^{-1}B + D$
- Choose $F_y$ which will give you good properties for $S(s)$, $T(s)$ and $G_{\omega u}(s)$
- Then choose the weighting transfer function matrices $W_u(s)$, $W_S(s)$ and $W_u(s)$ so this meets its conditions. Notice that $\gamma$ needs to be a small number.
$$\left | W_S(s)S(s) \right | < \gamma \hspace{0.2cm} \forall s$$ $$\left | W_T(s)T(s) \right | < \gamma \hspace{0.2cm} \forall s$$ $$\left | W_u(s)G_{\omega u}(s) \right | < \gamma \hspace{0.2cm} \forall s$$
- Find the positive semidefinite matix $S$ from the riccati equation
$$A^TS + SA + M^TM + S(\gamma^{-2} NN^T -BB^T)S = 0$$
Check the if this is stable: $$det(sI - (A-BB^TS_\gamma)) = 0$$
Create the control law
$$ L_\infty = B^TS_\gamma$$
Now create the observer and the controller
$$\boxed{ \dot{\hat{x}} = A\hat{x} + Bu + N(y - C\hat{x})}$$ $$\boxed{ u = -L_\infty \hat{x}}$$
If you want integral action to this controller. You need to add one extra state to the model and change the controller.
$$\boxed{ u = -L_\infty \hat{x} + L_i x_i}$$ $$\boxed{\dot{x_i} = r - y = r - Cx}$$
Done! Questions:
- Have I done it right?
- Are they diffrent ways to creating a $H_\infty$ controller?
- How do I know if the system is observable, stable and detectable?
- Other?
I have read the book: "Control Theory - Multivariable and Nonlinear Methods" by Lennart Ljung and Torkel Glad