190 lines
4.3 KiB
Markdown
Raw Permalink Normal View History

2025-01-08 15:08:32 +01:00
# State Feedback
## State Feedback
When you have your $G(s)$, just put poles where you want them to be and compute the right $k_i$.
What we are doing is to put $u(t) = -Kx(t)$, feeding back the `state` to the
`system`.
> [!WARNING]
> While $K$ matrix is controllable, the A matrix is equivalent to our plant, so
> it's impossible to change $a_i$ without changing the `system`
> [!CAUTION]
> We are doing some oversimplifications here, but this can't be used as formal
> proof for whatever we are saying. To see more, look at
> [Ackerman's formula](https://en.wikipedia.org/wiki/Ackermann%27s_formula).
>
> However is it possible to put a fictional reference input to make everything
> go back to a similar proof for the
> characteristic equation[^reference-input-pole-allocation]
While it is possible to allocate poles in each form, the Canonical Control
one makes it very easy to accomplish this task:
$$
A = \begin{bmatrix}
- a_1 \textcolor{#ff8382}{-k_1}& -a_2 \textcolor{#ff8382}{-k_2}
& -a_3 \textcolor{#ff8382}{-k_3}& \dots
& -a_{n-1}\textcolor{#ff8382}{-k_{n-1}}
&-a_n \textcolor{#ff8382}{-k_n}\\
1 & 0 & 0 & \dots & 0 & 0\\
0 & 1 & 0 & \dots & 0 & 0\\
\dots & \dots & \dots & \dots & \dots \\
0 & 0 & 0 & \dots & 1 & 0
\end{bmatrix}
$$
This changes our initial considerations, however. The new Characteristi Equation
becomes:
$$
det\left(sI - (A - BK)\right)
$$
## State Observer
What happens if we have not enough sensors to get the state in
`realtime`?
> [!NOTE]
> Measuring the state involves a sensor, which most of the times is
> either inconvenient to place because of space, or inconvenient
> economically speaking
In this case we `observe` our output to `estimate` our state
($\hat{x}$). THis new state will be used in our $G_c$ block:
$$
\dot{\hat{x}} = A\hat{x} + Bu + L(\hat{y} - y) = A\hat{x} + Bu +
LC(\hat{x} - x)
$$
Since we are estimating our state, we need the estimator to be fast,
**at least 6 times fater** than our `plant`, and $u = -K\hat{x}$.
Let's compute the error we introduce in our system:
<!--TODO: See error formula-->
$$
\begin{align*}
e &= x - \hat{x} \rightarrow \\
\rightarrow \dot{e} &= \dot{x} - \dot{\hat{x}} \rightarrow\\
&\rightarrow Ax - BK\hat{x} - A\hat{x} + BK\hat{x} - LCe \rightarrow\\
&\rightarrow -Ae - LCe \rightarrow\\
&\rightarrow eig(-A-LC)
\end{align*}
$$
## Making a Controller
So, this is how we will put all of these blocks saw until now.
2025-01-08 15:09:56 +01:00
![block diagram](../Images/State-Feedback/block-diagram.png)
2025-01-08 15:08:32 +01:00
From this diagram we can deduce immediately that to us our input is $y$
and our output is $u$. By treating the blue part as a `black box`, we can
say that:
$$
\begin{cases}
\dot{\hat{x}} = A\hat{x} - BK\hat{x} + LC\hat{x} - Ly \\
u = -K\hat{x}
\end{cases}
$$
So our $S(A_c, B_c, C_c, D_c)$ is:
$$
\begin{align*}
&A_c = A_p - B_pK + LC_p \\
&B_c = -L \\
&C_c = -K \\
&D_c = 0 \\
\end{align*}
$$
and so, you just need to substitute these matrices to the equation of the
2025-01-17 19:04:40 +01:00
$G_p(s)$ and you get you controller
## Inserting the reeference
Until now we've worked without taking the reference into consideration, so
let's add it like we normally do:
![reference input unitary feedback](../Images/State-Feedback/reference-input-1.png)
Here we can compute the error and our $G(s)$ we have in our system:
$$
e = r(t) - y(t) \\
G(s) = \frac{G_c(s)G_p(s)}{1 + G_c(s)G_p(s)}
$$
Another way to deal with the reference is to put it between our blocks:
![reference input unitary feedback](../Images/State-Feedback/reference-input-2.png)
$$
e = r(t) - \mathcal{L}^{-1}\left\{Y(s)G_c(s)\right\} \\
G(s) = \frac{G_p(s)}{1 + G_c(s)G_p(s)}
$$
Now, let's see the difference in both $G_1(s)$ and $G_2(s)$:
$$
\begin{align*}
G_1(s) &= \frac{G_c(s)G_p(s)}{1 + G_c(s)G_p(s)}
\\
&= \frac{
\frac{N_c}{D_c}\frac{N_p}{D_p}
}{
1 + \frac{N_c}{D_c} \frac{N_p}{D_p}
} \\
&= \frac{
\frac{N_c N_p}{D_c D_p}
}{
\frac{D_cD_p +N_cN_p}{D_cD_p}
} \\
&= \frac{
N_c N_p
}{
D_cD_p +N_cN_p
} \\
\end{align*}
\;\;\;\;
\begin{align*}
G_2(s) &= \frac{G_p(s)}{1 + G_c(s)G_p(s)}
\\
&= \frac{
\frac{N_p}{D_p}
}{
1 + \frac{N_c}{D_c} \frac{N_p}{D_p}
} \\
&= \frac{
\frac{N_p}{D_p}
}{
\frac{D_cD_p +N_cN_p}{D_cD_p}
} \\
&= \frac{
N_c D_c
}{
D_cD_p +N_cN_p
} \\
\end{align*}
$$
While both have the same `poles`, they differ in their `zeroes`