Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lectures/week10 #11

Merged
merged 6 commits into from
May 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions src/BSB/freq_weights_example.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
\begin{tikzpicture}[auto, node distance=1.5cm,>=latex']
\node [input, name=uinput] (uinput) {};
\node [tmp, right of=uinput] (ut) {};
\node [block, right of=ut] (P) {$P(s)$};
\node [block, above of=P] (W) {$W(s)$};
\node [output, right of=P] (y) {};
\node [output, right of=W] (z) {};

\draw [->] (rinput) -- node[pos=0.2]{$u$} (P);
\draw [->] (ut) |- node{} (W);
\draw [->] (P) -- node{$y$} (y);
\draw [->] (W) -- node{$z$} (z);
\end{tikzpicture}
3 changes: 3 additions & 0 deletions src/images/controller_synthesis_paradigm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/images/frequency_weights.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/images/youlas_Q_parameterization.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

% load the template headers
\input{\templatePath/summary_headers.tex} % ChkTex 27
\usepackage{cancel}

\begin{document}
\begin{multicols*}{3}
Expand All @@ -23,6 +22,7 @@
\input{sections/LQG.tex}
\input{sections/MIMO_intro.tex}
\input{sections/stab_and_perf_robustness.tex}
\input{sections/modern_controller_synthesis.tex}
\newpage
\input{sections/Appendix.tex}

Expand Down
327 changes: 327 additions & 0 deletions src/sections/modern_controller_synthesis.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,327 @@
\section{Modern Controller Synthesis}
To unify the controller synthesis the following standard form has been established.


\setlength{\oldtabcolsep}{\tabcolsep}\setlength\tabcolsep{2pt}

\begin{tabularx}{\linewidth}{@{}ll@{}}
\includegraphics[width=0.5\linewidth, align=c]{controller_synthesis_paradigm.png}
&
{\begin{tabularx}{\linewidth}{@{}ll@{}}
$u$: & control input \\
$y$: & measured output \\
$r$: & reference signal \\
$w$: & disturbance \\
$z$: & performance output \\
$q$: & uncertainty block input \\
$v$: & uncertainty block output
\end{tabularx}
}
\end{tabularx}

\setlength{\tabcolsep}{\oldtabcolsep}


\newpar{}
The objective is to stabilize the system and minimize the performance outputs $z$.

\subsection{Frequency Weights}

To guide the optimization process the performance outputs $z_i$ are weighted with frequency dependent weighting functions $W_i$.

The most common performance outputs are
\begin{center}
\includegraphics[width=0.9\linewidth]{frequency_weights.png}
\end{center}

\ptitle{Tracking Error}

Is given by
\begin{equation*}
z_1=W_1 G_{er} = W_1 S(s)
\end{equation*}
with the sensitivity function $S(s)$ and the loop transfer function $L(s)$:
\begin{gather*}
S(s)=G_{er}(s) = {(I+L(s))}^{-1} \\
L(s)=P(s)C(s)
\end{gather*}
\begin{itemize}
\item If $W_1(s)$ is chosen large at low frequencies $S(s)$ must be small in order to minimize $z_1$. In other words, the tracking error must be small at low frequencies.
\item This is the same as requiring $\sigma_{\min}[L(s)] \gg |W_1(s)|$, which corresponds to the low-frequency ``Bode obstacle'' in the SISO case.
\end{itemize}

\newpar{}

\ptitle{Control Effort}

Is given by
\begin{equation*}
z_2=W_2 G_{ur}(s) = W_2 C(s) S(s)
\end{equation*}
\begin{itemize}
\item Useful to limit the maximum control effort
\end{itemize}

\newpar{}

\ptitle{Noise Rejection}

Is given by
\begin{equation*}
z_3= W_3 G_{yn} =-W_3 T(s)
\end{equation*}
with the complementary sensitivity function
\begin{equation*}
T(s) = G_{yr}(s)={(I+L(s))}^{-1}L(s) = I-S(s)
\end{equation*}
\begin{itemize}
\item If $W_3$ is chosen very large for high frequencies, the complementary sensitivity must be very small at high frequencies.
\item This is the same as requiring $\sigma_{\max}[L(s)] \ll |W_3(s)|$, which corresponds to the high-frequency ``Bode obstacle'' in the SISO case.
\end{itemize}

\newpar{}

\ptitle{Stability Robustness}

For stability robustness in the presence of uncertainty $\Delta$ the same weighting method can be applied.
\begin{equation*}
z_\Delta = \Delta(s)W_\Delta(s)
\end{equation*}
with
\begin{gather*}
\|\Delta(s)\|_{\mathcal{H}_\infty} < 1 \\
\|M(s)\|_{\mathcal{H}_\infty} < 1
\end{gather*}
where $M(s)$ is the TF from the output of $\delta$ ti its input.

\subsubsection{First Order Weights}
\ptitle{Lowpass}
\begin{equation*}
W(s) = \frac{M}{\frac{Ms}{\omega}+1}
\end{equation*}

\ptitle{Highpass}
\begin{equation*}
W(s) = \frac{Ms}{s+M\omega}
\end{equation*}

\subsection{State-Space Representation}
To synthesize a controller an assembled state space model of the generalized system ($G$) can be constructed.

\ptitle{Plant}
\begin{gather*}
P : \left[
\begin{array}{c|c} % ChkTex -2
A_p & B_p \\
\hline % ChkTex -2
C_p & D_p \\
\end{array}
\right] \\
P(s) = {C_p(sI-A_p)}^{-1}B_p+D_p
\end{gather*}

\ptitle{Frequency Weights}

For each weight we get
\begin{gather*}
W : \left[
\begin{array}{c|c} % ChkTex -2
-p & 1 \\
\hline % ChkTex -2
r-qp & q
\end{array}
\right] \\
W(s) = \frac{qs+r}{s+p}
\end{gather*}

\ptitle{Generalized System}

The generalized system is obtained by stacking all the state-space models:
\begin{gather*}
G : \left[
\begin{array}{c|c c} % ChkTex -2
A & B_w & B_u \\
\hline % ChkTex -2
C_z & D_{zw} & D_{zu} \\
C_y & D_{yw} & D_{yu}
\end{array}
\right] \\
G(s) = \begin{bmatrix}
G_{zw}(s) & G_{zu}(s) \\
G_{yw}(s) & G_{yu}(s) \\
\end{bmatrix}
\end{gather*}
The matrix $A$ contains both the dynamics of the plant and the frequency weights.

\ptitle{Controller}
\begin{gather*}
K : \left[
\begin{array}{c|c} % ChkTex -2
A_c & B_c \\
\hline % ChkTex -2
C_c & D_c \\
\end{array}
\right] \\
K(s) = {C_c(sI-A_c)}^{-1}B_c+D_c
\end{gather*}

The closed loop TF from the exogenous inputs $w$ to the performance outputs $z$ is given by the \textit{Linear Fractional Transformation}:
\begin{equation*}
F(s) = G_{zw}(s) + G_{zu}(s)K(s){(I-G_{yu}(s))}^{-1}G_{yw}(s)
\end{equation*}

\begin{examplesection}[Example Assembly]
For the system
\begin{center}
\input{BSB/freq_weights_example.tex}
\end{center}
the generalized system $G(s)$ has to be calculated
\begin{equation*}
\begin{bmatrix}
y \\
z
\end{bmatrix}
= \underbrace{\begin{bmatrix}
G_{yu}(s) \\
G_{zu}(s)
\end{bmatrix}}_{G(s)} u
\end{equation*}
The combined states evolve with
\begin{equation*}
\begin{bmatrix}
\dot{x}_p \\
\dot{x}_w
\end{bmatrix}
= \underbrace{\begin{bmatrix}
A_p & 0 \\
0 & A_w
\end{bmatrix}}_{A_G}
\begin{bmatrix}
x_p \\
x_w
\end{bmatrix}
+ \underbrace{\begin{bmatrix}
B_p \\
B_w
\end{bmatrix}}_{B_G} \: u
\end{equation*}

and the combined output is given by

\begin{equation*}
\begin{bmatrix}
y \\
z
\end{bmatrix}
= \underbrace{\begin{bmatrix}
C_p & 0 \\
0 & C_w
\end{bmatrix}}_{C_G}
\begin{bmatrix}
x_p \\
x_w
\end{bmatrix}
+
\underbrace{\begin{bmatrix}
D_p \\
D_w
\end{bmatrix}}_{D_G}
\: u
\end{equation*}
The generalized system representation is then given by
\begin{equation*}
G = \left[
\begin{array}{c|c} % ChkTex -2
A_G & B_G \\
\hline % ChkTex -2
C_G & D_G
\end{array}
\right]
=
\left[
\begin{array}{cc|c} % ChkTex -2
A_p & 0 & B_p \\
0 & A_w & B_w \\
\hline % ChkTex -2
C_p & 0 & D_p \\
0 & C_w & D_w
\end{array}
\right]
\end{equation*}

\end{examplesection}

\subsection{Youla's Q Parameterization}
One can get all stabilizing controllers for a given plant as a function of a single stable transfer function Q(s). This is called the Youla parameterization (Q-parameterization). It's the extension of a full state feedback controller (including observer) with a system \textcolor{purple}{$Q$} that takes the innovation as an input.
\begin{center}
\includegraphics[width=0.8\linewidth]{youlas_Q_parameterization.png}
\end{center}
$Q$ needs to be \textbf{stable} and has to consist of a \textbf{proper rational} transfer function.
\newpar{}
The closed-loop dynamics are given by
\begin{equation*}
\begin{bmatrix}
\dot{x} \\
\dot{x}_Q \\
\dot{\eta}
\end{bmatrix}
=
\begin{bmatrix}
A+BK & BC_Q & -BK \\
0 & A_Q & B_Q C \\
0 & 0 & A+LC
\end{bmatrix}
\begin{bmatrix}
x \\
x_Q \\
\eta
\end{bmatrix}
+
\begin{bmatrix}
I & 0 \\
0 & C \\
0 & C
\end{bmatrix}
\begin{bmatrix}
r \\
d
\end{bmatrix}
\end{equation*}
The closed-loop poles are the union of the full-state feedback poles $A+BK$, the observer poles $A+LC$ and the poles of $Q(s)$.
\newpar{}
The TF from $y$ to $u$ hence the TF of the controller $C(s)$ can be written as
\begin{equation*}
C(s) = -{(X_0(s)+Q(s)N(s))}^{-1}(Y_0(s)-Q(s)D(s))
\end{equation*}
where
\begin{equation*}
C_0(s)=-{X_0(s)}^{-1}Y_0(s)
\end{equation*}
is the TF when $Q(s)=0$ with controller gain $K_0$ and observer gail $L_0$
\noindent\begin{align*}
X_0(s) & = -K_0{(sI-A-L_0C)}^{-1}B \\
Y_0(s) & = -K_0{(sI-A-L_0C)}^{-1}L_0
\end{align*}
and $N$, $D$ are the nominator and denominator of the plant
\begin{align*}
N(s) & =C{(sI-A-L_0C)}^{-1}B \\
D(s) & = -C(sI-A-L_0-C^{-1}L_0)
\end{align*}
where $L_0$ is an observer gain that would stabilize the error dynamics.
\newpar{}
It can be show that the interconnection of the system is stable if the \textbf{Bezout identity} is fulfilled
\begin{equation*}
D(s)X(s)-N(s)Y(s)=1
\end{equation*}
and that all feedback stabilizing controllers for $P$ are given by
\begin{equation*}
C(s) = \frac{Y_0(s) -D(s)Q(s)}{X_0(s)-N(s)Q(s)}
\end{equation*}
The sensitivity function is given by
\begin{equation*}
S(s) = D(s)(X_0(s)-N(S)Q(s))
\end{equation*}
and the complementary sensitivity function by
\begin{equation*}
T(s) = -N(s)(Y_0(s)+D(s)Q(s))
\end{equation*}
Loading
Loading