From 5ffa6590713cc163a22750f06413f488511ee4de Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Wed, 24 Jul 2024 08:41:42 +0200 Subject: [PATCH 01/25] fixes (bold matrices) --- src/sections/discrete_time_systems.tex | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/sections/discrete_time_systems.tex b/src/sections/discrete_time_systems.tex index 5086d94..7c86b64 100644 --- a/src/sections/discrete_time_systems.tex +++ b/src/sections/discrete_time_systems.tex @@ -213,18 +213,20 @@ \subsubsection{Discretization: Hold and Sample}\label{disc::hold_and_sample} \newpar{} \ptitle{Calculations} + +Assuming sampling time $T$ \begin{itemize} \item Check invertibility by looking at the determinant. - \item For diagonal matrices $\Lambda$, one can apply exponentiation elementwise on the main diagonal. + \item For diagonal matrices $\boldsymbol{\Lambda}$, one can apply exponentiation elementwise on the main diagonal. \item For non-diagonal matrices use \begin{itemize} - \item either diagonalization via eigenvectors ($A=V^{-1}\cdot \Lambda \cdot V$) and + \item either diagonalization via eigenvectors ($\mathbf{A}=\mathbf{V}^{-1}\cdot \boldsymbol{\Lambda} \cdot \mathbf{V}$) and \begin{equation*} - e^{AT} = V^{-1}\cdot e^{\Lambda T} \cdot V + e^{\mathbf{A}T} = \mathbf{V}^{-1}\cdot e^{\boldsymbol{\Lambda} T} \cdot \mathbf{V} \end{equation*} \item or power series expansion \begin{equation*} - e^{AT}=\sum_{k=0}^{\infty}\frac{1}{k!}{\left(AT\right)}^k + e^{\mathbf{A}T}=\sum_{k=0}^{\infty}\frac{1}{k!}{\left(\mathbf{A}T\right)}^k \end{equation*} \end{itemize} \end{itemize} From d4d159f3c214e7a523e1028b99417b61243e0615 Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Wed, 24 Jul 2024 08:59:34 +0200 Subject: [PATCH 02/25] TODO --- src/sections/reachability_observability.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index ac6a647..c1cb401 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -46,7 +46,7 @@ \subsubsection{DT Systems: Controllability} \begin{itemize} \item A DT LTI system is controllable if, for any initial condition $\mathbf{x}_0$, there exists a control input that brings the state $x$ to $0$ in finite time (Note: For Reachability one has the ``opposite'' condition). \item Reachability always implies controllability and uncontrollable systems are never reachable - \item Controllability only implies reachability if $\mathbf{A}_d$ is invertible + \item Controllability only implies reachability if $\mathbf{A}_d$ is invertible % TODO: I think we could also make it "if and only if" \item An unreachable DT system with non-invertible $\mathbf{A}_d$ could be controllable (Eigenvalues at 0). E.g.: \begin{itemize} \item $\mathbf{x}[k+1] = 0\mathbf{x}[k] + 0\mathbf{u}[k]$ is controllable (state goes to $0$) but unreachable as $\det(\mathbf{R})=0$. From 2d896769e970fe44fde80282bc0226dd90e895d2 Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Wed, 24 Jul 2024 10:33:17 +0200 Subject: [PATCH 03/25] typos and small change in modal_decomposition --- src/sections/modal_decomposition.tex | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/sections/modal_decomposition.tex b/src/sections/modal_decomposition.tex index efdf9f2..cf4cf08 100644 --- a/src/sections/modal_decomposition.tex +++ b/src/sections/modal_decomposition.tex @@ -77,13 +77,25 @@ \subsubsection{Homogeneous Response} For a given initial condition $x(0)=x_0$ the homogeneous response can be computed as follows:\\ \ptitle{In Modal Coordinates} \begin{align*} - \tilde{\mathbf{x}}(t) & =e^{\tilde{\mathbf{A}}t}\tilde{\mathbf{x}}(0) \\ - \tilde{x}_i(t) & =e^{\lambda_{i}t}\tilde{x}_i(0) + \tilde{\mathbf{x}}(t) & = e^{\tilde{\mathbf{A}}t}\tilde{\mathbf{x}}(0) \\ + \tilde{x}_i(t) & = e^{\lambda_{i}t}\tilde{x}_i(0) \end{align*} -which means that each mode evolves independently (of other modes) over time.\\ +which means that +\begin{itemize} + \item each mode evolves independently (of other modes) over time. + \item $\tilde{\mathbf{x}}(t)$ is obtained elementwise from $\tilde{x}_i(t)$. +\end{itemize} + +\newpar{} \ptitle{In Standard Coordinates} + +The modes in standard coordinates are given by +\begin{equation*} + \mathbf{m}_i(t) = e^{\lambda_{i}t}\tilde{x}_i(0)\mathbf{v}_i +\end{equation*} +so that \begin{equation*} - \mathbf{x}(t)=\sum_{i=1}^{n}e^{\lambda_{i}t}\tilde{x}_i(0)\mathbf{v}_i + \mathbf{x}(t)=\sum_{i=1}^{n} \mathbf{m}_i(t) = \sum_{i=1}^{n}e^{\lambda_{i}t}\tilde{x}_i(0)\mathbf{v}_i \end{equation*} because for an initial condition $x_0 = v_i$ the time response is given by \begin{equation*} @@ -150,5 +162,5 @@ \subsubsection{Homogeneous Response} \cos(\omega t) \\ \textcolor{red}{-\omega\sin(\omega t)} \end{bmatrix} - \end{align*} + \end{align*} \end{examplesection} From 286ba0b1ffb1840c00508c600c91264d78f1f5fb Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Wed, 24 Jul 2024 11:14:31 +0200 Subject: [PATCH 04/25] remark stabilizability/detectability --- src/sections/reachability_observability.tex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index c1cb401..90efac3 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -96,6 +96,7 @@ \subsection{Modal View: Stabilizability and Detectability} \begin{itemize} \item I.e.\ it must be possible to bring all unstable modal components from $\mathbf{0}$ to any desired state in finite time. \end{itemize} + \item Transform system into modal coordinates and compare $\tilde{b}_i$ with $\lambda_i$ to access stabilizability of corresponding mode. \item Reachability always implies stabilizability \begin{itemize} \item A stabilizable system can be unreachable: E.g.\ if stable modes can't be influenced from the input. @@ -109,6 +110,7 @@ \subsection{Modal View: Stabilizability and Detectability} \begin{itemize} \item I.e.\ unstable modal behavior must be visible at the output \end{itemize} + \item Transform system into modal coordinates and compare $\tilde{c}_i$ with $\lambda_i$ to access detectability of corresponding mode. \item Observability always implies detectability \begin{itemize} \item A detectable system can be unobservable: E.g.\ if stable modes don't influence the output. From 562aef72e165657836bdd6a8cf6dc3626e245cc3 Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Wed, 24 Jul 2024 11:30:37 +0200 Subject: [PATCH 05/25] remark unstabilizable/undetectable --- src/sections/reachability_observability.tex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index 90efac3..de2f17b 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -100,6 +100,7 @@ \subsection{Modal View: Stabilizability and Detectability} \item Reachability always implies stabilizability \begin{itemize} \item A stabilizable system can be unreachable: E.g.\ if stable modes can't be influenced from the input. + \item An unstabilizable system can never be reachable. \end{itemize} \end{itemize} @@ -114,6 +115,7 @@ \subsection{Modal View: Stabilizability and Detectability} \item Observability always implies detectability \begin{itemize} \item A detectable system can be unobservable: E.g.\ if stable modes don't influence the output. + \item An undetectable system can never be observable. \end{itemize} \end{itemize} From c6881b1afca1d0d4ff93f9e0021534705172bf37 Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Wed, 24 Jul 2024 16:48:58 +0200 Subject: [PATCH 06/25] remarks LQR, PP --- src/sections/LQR.tex | 8 ++++++ src/sections/pole_placement.tex | 46 ++++++++++++++++++++++++++++----- 2 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/sections/LQR.tex b/src/sections/LQR.tex index 0365d86..67ca433 100644 --- a/src/sections/LQR.tex +++ b/src/sections/LQR.tex @@ -168,12 +168,20 @@ \subsection{Symmetric Root Locus} \begin{itemize} \item $2n$ branches, where $n$ is the size of $\mathbf{A}$ + \begin{itemize} + \item like in standard RL, every branch starts in an OL pole + \item but asymptotic behaviour different from standard RL + \end{itemize} \item symmetric to the real and imaginary axis \item LQR closed-loop poles are all in the LHP \item $\rho \rightarrow \infty$ (expensive control):\newline CL poles approach stable OL poles and the mirror-images of the unstable OL poles (all on LHP) \item $\rho \rightarrow 0$ (cheap control):\newline CL poles approach MP OL zeros and the mirror-images of the NMP OL zeros or go to infinity along the LHP asymptotes (all on LHP) + \item note that for $\rho \rightarrow \infty$ there are no asymptotes to $\infty$ but only convergence towards (mirror) OL poles + \begin{itemize} + \item for $\rho \rightarrow 0$ there is also convergence to $\infty$ + \end{itemize} \end{itemize} \begin{examplesection}[Example: Symmetric Root Locus] diff --git a/src/sections/pole_placement.tex b/src/sections/pole_placement.tex index 763d0ec..3349609 100644 --- a/src/sections/pole_placement.tex +++ b/src/sections/pole_placement.tex @@ -50,7 +50,8 @@ \subsubsection{Reachable Canonical Form} \subsubsection{General Case} If the system is \textbf{controllable} but not in reachable canonical form, the following steps have to be applied \begin{enumerate} - \item Similarity transform of $\mathbf{A,B,C,D}$ into reachable canonical form $\mathbf{A',B',C',D'}$ with transformation matrix $\mathbf{T}$: + \item Calculate $\mathbf{A}'$ by comparing the characteristic polynomial of $\mathbf{A}$ with the one of the parametric $\mathbf{A}'$ from~\ref{RCF}. + \item Find transformation matrix $\mathbf{T}$ (using $\mathbf{A}'$ from 1.\ and the known form for $\mathbf{B}'$ to calculate $\mathbf{R}'$): \noindent\begin{align*} \mathbf{R}' & =\begin{bmatrix} \mathbf{B}' & \mathbf{A}'\mathbf{B}' & \ldots & {(\mathbf{A}')}^{n-1}\mathbf{B}' @@ -63,13 +64,20 @@ \subsubsection{General Case} \end{bmatrix} \\ \mathbf{T} & = \mathbf{R'R}^{-1} \end{align*} - with $\mathbf{R}'$ the reachability matrix of the transformed system. Note that there are 2 different ways to calculate $\mathbf{R}'$ + with $\mathbf{R}'$ the reachability matrix of the transformed system. + \begin{itemize} + \item $a_i$ are the coefficients of $\mathbf{A}'$ + \item Note that there are 2 different ways to calculate $\mathbf{R}'$ of which we use the first one as $\mathbf{T}$ is unknown in the beginning. + \end{itemize} + \item Similarity transform of $\mathbf{A,B,C,D}$ into reachable canonical form $\mathbf{A',B',C',D'}$ \item Apply method for reachable canonical form + \begin{equation*} + \mathbf{K}^{\prime} =\left[\alpha_{0}-a_{0},\quad\alpha_{1}-a_{1},\quad\ldots,\quad\alpha_{n-1}-a_{n-1}\right] + \end{equation*} \item Transform $\mathbf{K}'$ back to the original system: - \noindent\begin{align*} - \mathbf{K}^{\prime} & =\left[\alpha_{0}-a_{0},\quad\alpha_{1}-a_{1},\quad\ldots,\quad\alpha_{n-1}-a_{n-1}\right] \\ - \mathbf{K} & = \mathbf{K'RR}^{-1} - \end{align*} + \noindent\begin{equation*} + \mathbf{K} = \mathbf{K'RR}^{-1} + \end{equation*} which is possible if $\mathbf{R}$ is invertible (corresponds to controllability). \end{enumerate} @@ -78,6 +86,31 @@ \subsubsection{General Case} \item $\mathbf{A'},\mathbf{A}$ share their eigenvalues, therefore a comparison of coefficients can be used. \end{itemize} +\newpar{} +\ptitle{Reminder}\label{RCF} + +The reachable canonical form is given by + +\begin{equation*} + G(s)=\frac{b_{n-1}s^{n-1}+b_{n-2}s^{n-2}+\cdots+b_0}{s^n+a_{n-1}s^{n-1}+\cdots+a_0}+d\\ +\end{equation*} +and +\begin{align*} + \mathbf{A}' & =\begin{bmatrix} + 0 & 1 & 0 & 0 & \cdots & 0 \\ + 0 & 0 & 1 & 0 & \cdots & 0 \\ + \vdots & & & \ddots & & 1 \\ + -a_0 & -a_1 & & \cdots & & -a_{n-1} + \end{bmatrix}, & \mathbf{B}' =\begin{bmatrix} + 0 \\ + 0 \\ + \vdots \\ + 1\end{bmatrix} \\ + \mathbf{C}' & =\begin{bmatrix} + b_0 & b_1 & \cdots & b_{n-1} + \end{bmatrix}, & \mathbf{D}' =[d]; +\end{align*} + \paragraph{Unreachable/Uncontrollable Modes} Controllability (or reachability) is a \textbf{necessary and sufficient condition} for \textbf{arbitrary} pole placement. Conversely, in an uncontrollable system in modal coordinates there will be at least one state @@ -115,6 +148,7 @@ \subsubsection{Ackermann's Formula} \end{itemize} \subsubsection{Reference Scaling} +% TODO: This assumes D = 0, right? To ensure that the closed-loop systems follows unit steps with zero steady state error, the scaling vector $\mathbf{S}$ has to be chosen accordingly \noindent\begin{align*} G_{yr}^{cl}(s) & = G_{y\leftarrow r}^{cl}(s) =\mathbf{C}{(s\mathbf{I}-\mathbf{A}+\mathbf{BK})}^{-1}\mathbf{B}\bar{N}r, & \bar{N}=\mathbf{KS} \\ From 8e9fd61d83ce01d868adbde93165328de81121fd Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Wed, 24 Jul 2024 19:41:55 +0200 Subject: [PATCH 07/25] detail pole placement, remarks LQR/E --- src/sections/LQR.tex | 1 + src/sections/observers.tex | 13 +++++++------ src/sections/pole_placement.tex | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/sections/LQR.tex b/src/sections/LQR.tex index 67ca433..4ab0a5b 100644 --- a/src/sections/LQR.tex +++ b/src/sections/LQR.tex @@ -13,6 +13,7 @@ \subsection{Cost Functional} \begin{itemize} \item is symmetric i.e. $\mathbf{Q}=\mathbf{Q}^{\mathsf{T}}$ \item is positive semidefinite i.e. $\mathbf{x}^{\mathsf{T}} \mathbf{Qx} \geq 0$ or $\mathrm{eig}(\mathbf{Q}) \geq 0$ + % TODO: Why must it be sqrt (below)? Compare with LQE technical conditions \item must give positive weights to unstable modes to penalize them in the cost function (the pair $\mathbf{A}, \sqrt{\mathbf{Q}}$ is detectable) \end{itemize} \item $\mathbf{R}$ diff --git a/src/sections/observers.tex b/src/sections/observers.tex index 43face6..c9da976 100644 --- a/src/sections/observers.tex +++ b/src/sections/observers.tex @@ -81,8 +81,8 @@ \subsubsection{Observer Pole Placement} \mathbf{L} & =\varphi_{\mathrm{cl}}(\mathbf{A})\mathbf{O}^{-1}\begin{bmatrix} 0, & \ldots, & 0, & 1 \end{bmatrix}^{\mathsf{T}} \\ - \varphi_{\mathrm{cl}}(s) & =s^n+\alpha_{n-1}s^{n-1}+\ldots+\alpha_0=(s-\lambda_1)\ldots(s-\lambda_n) \\ - \varphi_{\mathrm{cl}}(\mathbf{A}) & =\mathbf{A}^n+\alpha_{n-1}\mathbf{A}^{n-1}+\ldots+\alpha_0 \mathbf{I} \\ + \varphi_{\mathrm{cl,des}}(s) & =s^n+\alpha_{n-1}s^{n-1}+\ldots+\alpha_0=(s-\lambda_1)\ldots(s-\lambda_n) \\ + \varphi_{\mathrm{cl,des}}(\mathbf{A}) & =\mathbf{A}^n+\alpha_{n-1}\mathbf{A}^{n-1}+\ldots+\alpha_0 \mathbf{I} \\ & = (\mathbf{A}-\lambda_1 \mathbf{I})\ldots(\mathbf{A}-\lambda_n \mathbf{I}) \end{align*} @@ -183,25 +183,26 @@ \subsubsection{Optimal LQE Design} \end{equation*} is minimized by solving the Riccati equation (\textit{ARE}) \begin{equation*} - \mathbf{AY}+\mathbf{YA}^{\mathsf{T}}-\mathbf{YC}^{\mathsf{T}} \mathbf{R}^{-1}\mathbf{CY}+\mathbf{Q}=0 + \mathbf{AY}+\mathbf{YA}^{\mathsf{T}}-\mathbf{YC}^{\mathsf{T}} \mathbf{R}^{-1}\mathbf{CY}+\mathbf{Q}=\mathbf{0} \end{equation*} for the \textbf{positive definite} matrix $\mathbf{Y}$ and choosing the \textit{optimal estimation gain} $\mathbf{L}$ as \begin{equation*} - \mathbf{L}=\mathbf{R}^{-1}\mathbf{CY} + \mathbf{L}^{\mathsf{T}}=\mathbf{R}^{-1}\mathbf{CY} \end{equation*} \ptitle{Remarks}: \begin{itemize} - \item the system has to be detectable (check for observability) and ($\mathbf{A,Q}$) stabilizable (check for reachability)\newline + \item the system has to be detectable (check for observability) and ($\mathbf{A,Q}$) stabilizable (check for reachability, treat $\mathbf{Q}$ like $\mathbf{B}$)\newline (e.g. $n=2: \mathbf{\mathcal{R}}= \left[\mathbf{Q}\quad \mathbf{AQ}\right]$) - \item $\mathbf{Y}$ is \textit{symmetric}, \textit{positive definite} ($\mathrm{Re}(\lambda_i) > 0, \mathrm{Im}(\lambda_i) = 0$) and has to fulfil the \textit{Sylvester criterion} e.g.\ for $n=2$: + \item $\mathbf{Y}$ is \textit{real}, \textit{symmetric}, \textit{positive definite} ($\mathrm{Re}(\lambda_i) > 0, \mathrm{Im}(\lambda_i) = 0$) and has to fulfil the \textit{Sylvester criterion} e.g.\ for $n=2$: \noindent\begin{equation*} \mathbf{Y}=\begin{bmatrix} a & b \\ b & d \end{bmatrix}; \quad a>0, \quad ad-b^2>0 \end{equation*} + \item for symmetric $\mathbf{Y}$ one has that $\mathbf{Y}\mathbf{A}^{\mathsf{T}}={(\mathbf{AY})}^{\mathsf{T}}$ \item as expected from duality, $\mathbf{L}$ is the transpose of $\mathbf{K}$, obtained for the pair $(\mathbf{A}^{\mathsf{T}}, \mathbf{C}^{\mathsf{T}})$, and for weight matrices $\mathbf{Q}$ and $\mathbf{R}$. \item in practice, we can measure the noise to get a first estimate of $\mathbf{Q}$, $\mathbf{R}$ \item as a guideline, one should make the innovations $\mathbf{C}\boldsymbol{\eta}$ as white as possible diff --git a/src/sections/pole_placement.tex b/src/sections/pole_placement.tex index 3349609..0cd2772 100644 --- a/src/sections/pole_placement.tex +++ b/src/sections/pole_placement.tex @@ -134,8 +134,8 @@ \subsubsection{Ackermann's Formula} 0, & \ldots, & 0, & 1 \end{bmatrix} \mathbf{R}^{-1}\varphi_{cl}(\mathbf{A}) \\ - \varphi_{cl}(s) & =s^n+\alpha_{n-1}s^{n-1}+\ldots+\alpha_0=(s-\lambda_1)\ldots(s-\lambda_n) \\ - \varphi_{cl}(\mathbf{A}) & =\mathbf{A}^n+\alpha_{n-1}\mathbf{A}^{n-1}+\ldots+\alpha_0 \mathbf{I} \\ + \varphi_{cl,des}(s) & =s^n+\alpha_{n-1}s^{n-1}+\ldots+\alpha_0=(s-\lambda_1)\ldots(s-\lambda_n) \\ + \varphi_{cl,des}(\mathbf{A}) & =\mathbf{A}^n+\alpha_{n-1}\mathbf{A}^{n-1}+\ldots+\alpha_0 \mathbf{I} \\ & = (\mathbf{A}-\lambda_1 \mathbf{I})\ldots(\mathbf{A}-\lambda_n \mathbf{I}) \end{align*} From a36c77ca66d8df4fff003726ce090f3fe50b5d60 Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:23:26 +0200 Subject: [PATCH 08/25] remarks LQG, mimo, observers --- src/sections/LQG.tex | 2 +- src/sections/MIMO_intro.tex | 20 +++++++++++++++++--- src/sections/observers.tex | 4 ++-- src/sections/reachability_observability.tex | 8 +++++++- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/sections/LQG.tex b/src/sections/LQG.tex index 686bc97..b3eb8c1 100644 --- a/src/sections/LQG.tex +++ b/src/sections/LQG.tex @@ -151,7 +151,7 @@ \subsection{Transfer Function} \textbf{Remarks} \begin{itemize} - \item In $G_{yr}^{cl}$, only the closed-loop poles of the controller are retained (observer and system are cancelled) and open-loop zeros are retained. + \item In $G_{yr}^{cl}$, only the closed-loop poles of the controller (observer and system are cancelled) and open-loop zeros are retained. \item $G_{uy}$, has the same order as the plant and the number of closed-loop poles is doubled (all stable) \end{itemize} diff --git a/src/sections/MIMO_intro.tex b/src/sections/MIMO_intro.tex index 35d56d4..1e5bbab 100644 --- a/src/sections/MIMO_intro.tex +++ b/src/sections/MIMO_intro.tex @@ -81,6 +81,7 @@ \subsubsection{State-Space Representation} \subsubsection{Transfer Function Representation} \begin{itemize} \item The poles are given by the \textbf{roots} of the \textbf{characteristic polynomial} of $\mathbf{G}(s)$. + % TODO: What about poles of nonminimal realizations? \item The \textbf{characteristic polynomial} $d(s)$ of a minimal realization of $\mathbf{G}(s)$ is the least common multiple (LCM) of the denominators of all possible minors $G_{ij}$. \item The \textbf{minors} are the determinants of all single entries of the $\mathbf{G}(s)$ matrix as well as the determinants of all possible square submatrices (of all sizes!) in $\mathbf{G}(s)$. \end{itemize} @@ -119,7 +120,16 @@ \subsubsection{Stability} Same condition as in SISO systems: \begin{itemize} - \item \textbf{Stable} if $\mathrm{Re}(p_i \le 0)$ and the algebraic multiplicity of poles with zero real part is equal to their geometric multiplicity. + \item \textbf{Stable} if $\mathrm{Re}(p_i \le 0)$ and the algebraic multiplicity of poles with zero real part is equal to their geometric multiplicity. Reminder: + \begin{itemize} + \item Algebraic multiplicity: multiplicity of eigenvalue $\lambda_i$ ($\lambda_i=0$ for in case) + \item Geometric multiplicity: + \begin{itemize} + \item Number of independent eigenvectors to eigenvalue $\lambda_i$ + \item Dimension of eigenspace $\ker(\lambda \mathbb{1}-\mathbf{A})$ (number of free parameters). + \item E.g.\ if $\lambda_i$ has algebraic multiplicity 2, then $\ker(\lambda \mathbb{1}-\mathbf{A})$ must be a plane. + \end{itemize} + \end{itemize} \item \textbf{Asymptotically stable}\ if $\mathrm{Re}(p_i<0)$ \end{itemize} @@ -286,8 +296,11 @@ \subsubsection{Gilbert's Realization} \newpar{} \begin{enumerate} - \item Calculate the \textbf{poles} $p_i$ of the system by determine the roots of $d(s)$. - \item If $d(s)$ has \textbf{no repeated roots}, one can use Gilbert's method (otherwise the generalized Gilbert's method has to be used). + \item Calculate $\mathbf{D}=\lim_{s\to\infty}\mathbf{G}(s)$ + \item Calculate the \textbf{poles} $p_i$ of the system by determining the roots of $d(s)$. + \begin{itemize} + \item If $d(s)$ has \textbf{no repeated roots}, one can use Gilbert's method (otherwise the generalized Gilbert's method has to be used). + \end{itemize} \item Perform a (matrix) partial fraction expansion of $\mathbf{G}(s)$ \begin{equation*} \mathbf{G}(s)=\frac{\mathbf{R_1}}{s-p_1}+\frac{\mathbf{R_2}}{s-p_2}+\ldots+\frac{\mathbf{R_{n_d}}}{s-p_{n_d}}+\mathbf{D} @@ -298,6 +311,7 @@ \subsubsection{Gilbert's Realization} \item Calculate the ranks $r_i = \text{rank}(\mathbf{R_i})$ which indicate the number of poles at location $p_i$ that are needed. \begin{itemize} \item The order of the resulting state space model will be $n=\sum_{i=1}^{n_d}r_i\geq n_d$ + \item Reminder: The row rank and column rank of a matrix are \textbf{always equal}! \end{itemize} \item Now the $\mathbf{A}$ matrix can be assembled \begin{equation*} diff --git a/src/sections/observers.tex b/src/sections/observers.tex index c9da976..f47addf 100644 --- a/src/sections/observers.tex +++ b/src/sections/observers.tex @@ -71,14 +71,14 @@ \subsubsection{Observer Pole Placement} $\mathbf{L}={\left[\ell_0,\cdots,\ell_{n-1}\right]}^{\mathsf{T}}$ can be obtained by comparing the eigenvalues of the observer with the desired ones: \noindent\begin{equation*} - \det\bigl(\lambda \mathbf{I} -(\mathbf{A}-\mathbf{LC})\bigr) \overset{!}{=} \varphi_{\mathrm{cl}}(\lambda) + \det\bigl(\lambda \mathbf{I} -(\mathbf{A}-\mathbf{LC})\bigr) \overset{!}{=} \varphi_{\mathrm{cl,des}}(\lambda) \end{equation*} \ptitle{Ackermann Observer Design} Similarly to state feedback we get \begin{align*} - \mathbf{L} & =\varphi_{\mathrm{cl}}(\mathbf{A})\mathbf{O}^{-1}\begin{bmatrix} + \mathbf{L} & =\varphi_{\mathrm{cl,des}}(\mathbf{A})\mathbf{O}^{-1}\begin{bmatrix} 0, & \ldots, & 0, & 1 \end{bmatrix}^{\mathsf{T}} \\ \varphi_{\mathrm{cl,des}}(s) & =s^n+\alpha_{n-1}s^{n-1}+\ldots+\alpha_0=(s-\lambda_1)\ldots(s-\lambda_n) \\ diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index de2f17b..72ece66 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -181,4 +181,10 @@ \subsection{Kalman Decomposition} \begin{itemize} \item In the transfer function $u \rightarrow y$ only the modes corresponding to the reachable and observable modes will appear (others will be cancelled by a zero). \item A minimal realization of a transfer function is a state-space model that is both reachable and observable. -\end{itemize} \ No newline at end of file + \begin{itemize} + % TODO: Does a non-minimal realization always cause pole-zero cancellations in the TF? + \item Even more, it holds that a realization is minimal \textbf{if and only if} it is reachable and observable. + \item Reminder: For non-minimal realizations invariant zeros can give additional zeros (correspond to uncontrollable/unobservable modes). + \end{itemize} +\end{itemize} + From e507c94dc38321707d3f10b4b32d6362a74670ae Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Thu, 25 Jul 2024 11:24:44 +0200 Subject: [PATCH 09/25] remarks MIMO --- src/sections/MIMO_intro.tex | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/sections/MIMO_intro.tex b/src/sections/MIMO_intro.tex index 1e5bbab..879e107 100644 --- a/src/sections/MIMO_intro.tex +++ b/src/sections/MIMO_intro.tex @@ -83,6 +83,9 @@ \subsubsection{Transfer Function Representation} \item The poles are given by the \textbf{roots} of the \textbf{characteristic polynomial} of $\mathbf{G}(s)$. % TODO: What about poles of nonminimal realizations? \item The \textbf{characteristic polynomial} $d(s)$ of a minimal realization of $\mathbf{G}(s)$ is the least common multiple (LCM) of the denominators of all possible minors $G_{ij}$. + \begin{itemize} + \item Polynomial of order $n_d$ + \end{itemize} \item The \textbf{minors} are the determinants of all single entries of the $\mathbf{G}(s)$ matrix as well as the determinants of all possible square submatrices (of all sizes!) in $\mathbf{G}(s)$. \end{itemize} @@ -224,6 +227,7 @@ \subsubsection{Invariant Zeros} \mathbf{u}_i \end{bmatrix}=\mathbf{0} \end{equation*} +and then either solving the linear system. \ptitle{Remarks} @@ -286,7 +290,7 @@ \subsubsection{Gilbert's Realization} Given \begin{equation*} - \mathbf{G}(s)=\frac{\mathbf{H}(s)}{d(s)}+\mathbf{D} + \mathbf{G}(s)=\frac{\mathbf{H}(s)}{d(s)}+\mathbf{D},\quad \mathbf{G}\in \mathbb{C}^{l\times m} \end{equation*} where \begin{itemize} @@ -352,6 +356,7 @@ \subsubsection{Gilbert's Realization} \begin{itemize} \item Figures out the minimum number of ``copies'' of each pole that we need to construct a realization of a MIMO transfer function. \item $\mathbf{A}$ simply contains diagonal matrices of dimension $r_i \times r_i$ with $p_i$ on their diagonals. + \item Transmission zeros and invariant zeros are equal in this (minimal) realization. \end{itemize} % TODO: Add an example? From ae4ea7303da2dba561f971eda42aa69132de9d9d Mon Sep 17 00:00:00 2001 From: TobiasMeier Date: Thu, 25 Jul 2024 15:58:53 +0200 Subject: [PATCH 10/25] typos in section 1-3 fixed --- src/BSB/reach_observability.tex | 4 +-- src/images/Kalman_decomp.png | 4 +-- src/images/digit_controller_design.drawio | 28 ++++++++++---------- src/images/digit_controller_design.pdf | Bin 130 -> 130 bytes src/sections/discrete_time_systems.tex | 2 +- src/sections/reachability_observability.tex | 6 ++--- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/BSB/reach_observability.tex b/src/BSB/reach_observability.tex index 8d24c81..b87d7f4 100644 --- a/src/BSB/reach_observability.tex +++ b/src/BSB/reach_observability.tex @@ -1,7 +1,7 @@ % Please ignore the mess I've created here, I don't feel comfortable either. \begin{center} \begin{tikzcd}[ampersand replacement=\&] - \substack{\text{unstable} \\ \text{modes}} \&[2em] \substack{\text{all} \\ \text{modes}} \&[-3em] \\[-2em] + \substack{\text{unstable} \\ \text{modes} \\ \in{} \mathcal{R} \\ \in{} \mathcal{O}} \&[2em] \substack{\text{all} \\ \text{modes}} \&[-3em] \\[-2em] \& \mathcal{C} \arrow[d, teal, xshift=-0.5ex, "{\color{teal}\begin{matrix} %chktex 18 \mathsf{CT}: & \text{always} \\ @@ -10,7 +10,7 @@ "' %chktex 18 ] \& {\footnotesize\begin{cases} \mathsf{CT:} & \mathbf{x}_0 = 0 \to~\mathbf{x_f} \\ - \mathsf{DT:} & \mathbf{x_f} \to~0 + \mathsf{DT:} & \mathbf{x}_0 = \mathbf{x_f} \to~0 \end{cases}} \\[2em] \mathcal{S} \& \mathcal{R} \arrow[l]\arrow[u, xshift=0.5ex] \& diff --git a/src/images/Kalman_decomp.png b/src/images/Kalman_decomp.png index 0844b51..1102a78 100644 --- a/src/images/Kalman_decomp.png +++ b/src/images/Kalman_decomp.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1932d7d4add44a03b02e8fdf7c3d28da5c7ae41598c86759a9848ddc8561e4ff -size 24376 +oid sha256:3f14823ca673d292bf99fb9dfbc15f7851f492720a154897b98d520512fae54c +size 25405 diff --git a/src/images/digit_controller_design.drawio b/src/images/digit_controller_design.drawio index e2c1b8a..7432a45 100644 --- a/src/images/digit_controller_design.drawio +++ b/src/images/digit_controller_design.drawio @@ -1,6 +1,6 @@ - + - + @@ -48,17 +48,6 @@ - - - - - - - - - - - @@ -81,9 +70,20 @@ - + + + + + + + + + + + + diff --git a/src/images/digit_controller_design.pdf b/src/images/digit_controller_design.pdf index 809328356c7148da4e40f4528265eacd40396a07..d9a9bcb0efcab08127f8b0b91be1ed6d0d6989b1 100644 GIT binary patch delta 83 zcmV~$yA6Oa3$4#AN%;)g+ObvPr!&AIjrTtN>L>g e4UAdbTw7P1s=gFNWsn3lGGHyw{pN|l+{+KmKo$i6 diff --git a/src/sections/discrete_time_systems.tex b/src/sections/discrete_time_systems.tex index 5086d94..945f7b0 100644 --- a/src/sections/discrete_time_systems.tex +++ b/src/sections/discrete_time_systems.tex @@ -53,7 +53,7 @@ \subsubsection{Difference Equations} & Time-Invariant & Time-Variant ($t = kT$) \\ \cmidrule{2-3} \multirow{3}{*}{\begin{sideways}Nonlinear\end{sideways}} & $\mathbf{x}[k+1] = f(\mathbf{x}[k],\mathbf{u}[k])$ & $\mathbf{x}[k+1] = f(t,\mathbf{x}[k],\mathbf{u}[k])$ \\ - & $\mathbf{y}[t] = h(\mathbf{x}[k],\mathbf{u}[k])$ & $\mathbf{y}[t] = h(t,\mathbf{x}[k],\mathbf{u}[k])$ \\ + & $\mathbf{y}[k] = h(\mathbf{x}[k],\mathbf{u}[k])$ & $\mathbf{y}[k] = h(t,\mathbf{x}[k],\mathbf{u}[k])$ \\ & $\mathbf{x}[0]=\mathbf{x}_0$ & $\mathbf{x}[0]=\mathbf{x}_0$ \\ \cmidrule{2-3} \multirow{3}{*}{\begin{sideways}Linear\end{sideways}} & $\mathbf{x}[k+1] = \mathbf{Ax}[k]+\mathbf{Bu}[k]$ & $\mathbf{x}[k+1] = \mathbf{A}[k]\mathbf{x}[k]+\mathbf{B}[k]\mathbf{u}[k]$ \\ diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index ac6a647..5b75f4f 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -22,7 +22,7 @@ \subsection{Reachability/Controllability} Mathematically expressed, a system is reachable if and only if the reachability matrix $\mathbf{R}$ has \textbf{full row rank} $n$. \begin{align*} \text{rank}(\mathbf{R}) & = n \\ - \mathbf{x} & \in \mathrm{Range}(\mathbf{R}) + \mathbf{x} & \in \mathrm{Range}(\mathbf{R}) \end{align*} \newpar{} @@ -140,7 +140,7 @@ \subsection{Kalman Decomposition} \mathbf{y} & = \begin{bmatrix} 0 & \mathbf{C}_{ro} & 0 & \mathbf{C}_{r\bar{o}} \end{bmatrix} - + \mathbf{Du} + \mathbf{x} + \mathbf{Du} \end{align*} \ptitle{General case} @@ -161,7 +161,7 @@ \subsection{Kalman Decomposition} \mathbf{y} & = \begin{bmatrix} 0 & \mathbf{C}_{ro} & 0 & \mathbf{C}_{r\bar{o}} \end{bmatrix} - + \mathbf{Du} + \mathbf{x} + \mathbf{Du} \end{align*} \newpar{} From 0b1c72c2fefd2a0401d26d1763ceb727a1ca7f2a Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:13:02 +0200 Subject: [PATCH 11/25] addition SVD --- src/sections/MIMO_intro.tex | 59 +++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/src/sections/MIMO_intro.tex b/src/sections/MIMO_intro.tex index 879e107..e690d30 100644 --- a/src/sections/MIMO_intro.tex +++ b/src/sections/MIMO_intro.tex @@ -81,11 +81,11 @@ \subsubsection{State-Space Representation} \subsubsection{Transfer Function Representation} \begin{itemize} \item The poles are given by the \textbf{roots} of the \textbf{characteristic polynomial} of $\mathbf{G}(s)$. - % TODO: What about poles of nonminimal realizations? + % TODO: What about poles of nonminimal realizations? \item The \textbf{characteristic polynomial} $d(s)$ of a minimal realization of $\mathbf{G}(s)$ is the least common multiple (LCM) of the denominators of all possible minors $G_{ij}$. - \begin{itemize} - \item Polynomial of order $n_d$ - \end{itemize} + \begin{itemize} + \item Polynomial of order $n_d$ + \end{itemize} \item The \textbf{minors} are the determinants of all single entries of the $\mathbf{G}(s)$ matrix as well as the determinants of all possible square submatrices (of all sizes!) in $\mathbf{G}(s)$. \end{itemize} @@ -123,16 +123,16 @@ \subsubsection{Stability} Same condition as in SISO systems: \begin{itemize} - \item \textbf{Stable} if $\mathrm{Re}(p_i \le 0)$ and the algebraic multiplicity of poles with zero real part is equal to their geometric multiplicity. Reminder: - \begin{itemize} - \item Algebraic multiplicity: multiplicity of eigenvalue $\lambda_i$ ($\lambda_i=0$ for in case) - \item Geometric multiplicity: - \begin{itemize} - \item Number of independent eigenvectors to eigenvalue $\lambda_i$ - \item Dimension of eigenspace $\ker(\lambda \mathbb{1}-\mathbf{A})$ (number of free parameters). - \item E.g.\ if $\lambda_i$ has algebraic multiplicity 2, then $\ker(\lambda \mathbb{1}-\mathbf{A})$ must be a plane. - \end{itemize} - \end{itemize} + \item \textbf{Stable} if $\mathrm{Re}(p_i \le 0)$ and the algebraic multiplicity of poles with zero real part is equal to their geometric multiplicity. Reminder: + \begin{itemize} + \item Algebraic multiplicity: multiplicity of eigenvalue $\lambda_i$ ($\lambda_i=0$ for in case) + \item Geometric multiplicity: + \begin{itemize} + \item Number of independent eigenvectors to eigenvalue $\lambda_i$ + \item Dimension of eigenspace $\ker(\lambda \mathbb{1}-\mathbf{A})$ (number of free parameters). + \item E.g.\ if $\lambda_i$ has algebraic multiplicity 2, then $\ker(\lambda \mathbb{1}-\mathbf{A})$ must be a plane. + \end{itemize} + \end{itemize} \item \textbf{Asymptotically stable}\ if $\mathrm{Re}(p_i<0)$ \end{itemize} @@ -302,9 +302,9 @@ \subsubsection{Gilbert's Realization} \begin{enumerate} \item Calculate $\mathbf{D}=\lim_{s\to\infty}\mathbf{G}(s)$ \item Calculate the \textbf{poles} $p_i$ of the system by determining the roots of $d(s)$. - \begin{itemize} - \item If $d(s)$ has \textbf{no repeated roots}, one can use Gilbert's method (otherwise the generalized Gilbert's method has to be used). - \end{itemize} + \begin{itemize} + \item If $d(s)$ has \textbf{no repeated roots}, one can use Gilbert's method (otherwise the generalized Gilbert's method has to be used). + \end{itemize} \item Perform a (matrix) partial fraction expansion of $\mathbf{G}(s)$ \begin{equation*} \mathbf{G}(s)=\frac{\mathbf{R_1}}{s-p_1}+\frac{\mathbf{R_2}}{s-p_2}+\ldots+\frac{\mathbf{R_{n_d}}}{s-p_{n_d}}+\mathbf{D} @@ -407,9 +407,9 @@ \subsection{Singular Value Decomposition (SVD)} 0 & \sigma_2 & 0 \end{bmatrix}}_{\textsf{Scaling \& Dimensions}} \underbrace{\begin{bmatrix} - \text{---} & \mathbf{v_1} & \text{---} \\ - \text{---} & \mathbf{v_2} & \text{---} \\ - \text{---} & \mathbf{v_3} & \text{---} + \text{---} & \mathbf{v_1}^H & \text{---} \\ + \text{---} & \mathbf{v_2}^H & \text{---} \\ + \text{---} & \mathbf{v_3}^H & \text{---} \end{bmatrix}}_{\textsf{Rotation}} \end{equation*} with eigenvalues @@ -423,7 +423,8 @@ \subsection{Singular Value Decomposition (SVD)} \begin{itemize} \item See Appendix:~\ref{app:mat_prop} for detailed understanding. - \item $\mathbf{U},\:\mathbf{V}$ are unitary i.e. $\mathbf{U}^H \mathbf{U}=\mathbf{U}\mathbf{U}^H=\mathbf{I}$ + \item $\mathbf{U},\:\mathbf{V}$ are unitary i.e. $\mathbf{U}^H \mathbf{U}=\mathbf{U}\mathbf{U}^H=\mathbf{I}$. + \item For real $\mathbf{A}$, $\mathbf{A}^H \mathbf{A}$ and $\mathbf{A} \mathbf{A}^H$ are \textbf{symmetric}. \item Unitary implies positive semi-definite and real, non-negative eigenvalues. \item (Upper- and lower-) diagonal matrices have their singular values (or eigenvalues) on the main diagonal. \end{itemize} @@ -452,11 +453,15 @@ \subsubsection{Procedure} \mathbf{0} & \cdots & \mathbf{0} \end{bmatrix} \end{align*} - \item calculate the eigenvectors of $\mathbf{A}^{\mathsf{H}}\mathbf{A}$. Use the same order as before and normalize the vectors if necessary. + \item calculate the eigenvectors of $\mathbf{A}^{\mathsf{H}}\mathbf{A}$ (or start with 4.\ if $m Date: Thu, 25 Jul 2024 16:33:01 +0200 Subject: [PATCH 12/25] typo --- src/sections/MIMO_intro.tex | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/sections/MIMO_intro.tex b/src/sections/MIMO_intro.tex index e690d30..07cdfb6 100644 --- a/src/sections/MIMO_intro.tex +++ b/src/sections/MIMO_intro.tex @@ -460,7 +460,7 @@ \subsubsection{Procedure} \end{gather*} or if $m Date: Sun, 28 Jul 2024 11:29:14 +0200 Subject: [PATCH 13/25] remarks, fixed typo --- src/images/SGT_interconn.png | 3 +++ src/sections/MIMO_intro.tex | 2 +- src/sections/reachability_observability.tex | 2 +- src/sections/stab_and_perf_robustness.tex | 3 +++ 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 src/images/SGT_interconn.png diff --git a/src/images/SGT_interconn.png b/src/images/SGT_interconn.png new file mode 100644 index 0000000..e0dba67 --- /dev/null +++ b/src/images/SGT_interconn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b81c9ed049181a265d874845dddab940c67091eb054933ba4fc3ea56256a8b9a +size 26015 diff --git a/src/sections/MIMO_intro.tex b/src/sections/MIMO_intro.tex index 07cdfb6..f310d47 100644 --- a/src/sections/MIMO_intro.tex +++ b/src/sections/MIMO_intro.tex @@ -801,6 +801,7 @@ \subsubsection{System Norms} Again one wants to compute the norm in state space (instead of frequency domain), now by using \textbf{bisection}: \begin{enumerate} + \item Check technical conditions: The system must be \textbf{stable} and \textbf{strictly causal} to use this criterium. \item Define a lower and an upper bound for $\|\mathbf{G}\|_{\mathcal{H}_{\infty}}$ (0 is a good lower bound as it is the minimum for any norm) \item Compute the \textbf{Hamiltonian matrix} \begin{equation*} @@ -820,6 +821,5 @@ \subsubsection{System Norms} \ptitle{Remarks to Computation} \begin{itemize} - \item The system must be \textbf{stable} and \textbf{strictly causal} to use this criterium. \item There is no easy analytical way to compute $\|\mathbf{G}\|_{\mathcal{H}_{\infty}}$ \end{itemize} \ No newline at end of file diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index 72ece66..4aa7a3e 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -163,7 +163,7 @@ \subsection{Kalman Decomposition} \end{bmatrix} \mathbf{u} \\ \mathbf{y} & = \begin{bmatrix} - 0 & \mathbf{C}_{ro} & 0 & \mathbf{C}_{r\bar{o}} + 0 & \mathbf{C}_{ro} & 0 & \mathbf{C}_{\bar{r}0} \end{bmatrix} + \mathbf{Du} \end{align*} diff --git a/src/sections/stab_and_perf_robustness.tex b/src/sections/stab_and_perf_robustness.tex index c2e55c5..7ef9b5b 100644 --- a/src/sections/stab_and_perf_robustness.tex +++ b/src/sections/stab_and_perf_robustness.tex @@ -9,6 +9,9 @@ \subsubsection{Sufficient Condition} \begin{equation*} \left\|\mathbf{G_1}\right\|_{\mathcal{H}_\infty}\cdot\left\|\mathbf{G_2}\right\|_{\mathcal{H}_\infty}<1 \end{equation*} +\begin{center} + \includegraphics[width = 0.5\linewidth]{SGT_interconn.png} +\end{center} \ptitle{Remarks} \begin{itemize} From 4b35354ae2feb7267888870037e6e8c3cd18520a Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Sun, 28 Jul 2024 11:33:06 +0200 Subject: [PATCH 14/25] mistake in kalman decomp. --- src/sections/reachability_observability.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index 4aa7a3e..6bb64fa 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -142,7 +142,7 @@ \subsection{Kalman Decomposition} \end{bmatrix} \mathbf{u} \\ \mathbf{y} & = \begin{bmatrix} - 0 & \mathbf{C}_{ro} & 0 & \mathbf{C}_{r\bar{o}} + 0 & \mathbf{C}_{ro} & 0 & \mathbf{C}_{\bar{r}o} \end{bmatrix} + \mathbf{Du} \end{align*} From d41880644cb70bc11da77eca38c4e4061cc29d7f Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Sun, 28 Jul 2024 11:38:21 +0200 Subject: [PATCH 15/25] another mistake in kalman decomp. --- src/sections/reachability_observability.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index 6bb64fa..167b921 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -143,7 +143,7 @@ \subsection{Kalman Decomposition} \mathbf{u} \\ \mathbf{y} & = \begin{bmatrix} 0 & \mathbf{C}_{ro} & 0 & \mathbf{C}_{\bar{r}o} - \end{bmatrix} + \end{bmatrix}\mathbf{x} + \mathbf{Du} \end{align*} @@ -164,7 +164,7 @@ \subsection{Kalman Decomposition} \mathbf{u} \\ \mathbf{y} & = \begin{bmatrix} 0 & \mathbf{C}_{ro} & 0 & \mathbf{C}_{\bar{r}0} - \end{bmatrix} + \end{bmatrix}\mathbf{x} + \mathbf{Du} \end{align*} From 34ec20a2a854b834b9888c1b215c4199bb9250c7 Mon Sep 17 00:00:00 2001 From: Tobias Meier <30720836+MeierTobias@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:03:05 +0200 Subject: [PATCH 16/25] Readme updated --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 445b66f..13681b8 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Make sure to compile with xelatex (required by fontspec). 2. After you launched the docker daemon (started Docker Desktop) you can simply run execute the `./build_latex_local.sh` file to generate the pdf files. They are located in a newly created subfolder called `build`. (Most probably you have to change the execution permissions with `chmod +x build_latex_local.sh` before you are able to run the script for the first time.) -### Native LaTeX compiler +### Native LaTeX Compiler If you want to use your own native installed LaTeX compiler we recommend to use [TeXLive](https://www.tug.org/texlive/) which integrates well within visual studio code. From 9cd5e9b17a45cc902a72e3780871c88e775eb937 Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:20:40 +0200 Subject: [PATCH 17/25] =?UTF-8?q?Typo=20in=20LFT.=20Please=20=C3=B6pdate?= =?UTF-8?q?=20on=20handwritten=20summary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sections/modern_controller_synthesis.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sections/modern_controller_synthesis.tex b/src/sections/modern_controller_synthesis.tex index 4be53c7..7972441 100644 --- a/src/sections/modern_controller_synthesis.tex +++ b/src/sections/modern_controller_synthesis.tex @@ -170,7 +170,7 @@ \subsection{State Space Representation} As $u(s)=K(s)y(s)$ 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) + F(s) = G_{zw}(s) + G_{zu}(s)K(s){(I-G_{yu}(s) K(s))}^{-1}G_{yw}(s) \end{equation*} \textbf{MATLAB}: \texttt{F = lft(G, K)} From cbec532c2ff1e2ac7a0f34c2c35258cd3d76e822 Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Wed, 7 Aug 2024 08:03:11 +0200 Subject: [PATCH 18/25] Update nonlinear_systems.tex --- src/sections/nonlinear_systems.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sections/nonlinear_systems.tex b/src/sections/nonlinear_systems.tex index 5464222..729d425 100644 --- a/src/sections/nonlinear_systems.tex +++ b/src/sections/nonlinear_systems.tex @@ -80,7 +80,7 @@ \subsubsection{Lyapunov Functions} \newpar{} Futhermore, $\mathbf{x}_e$ is \textbf{asymptotically stable} if \noindent\begin{equation*} - \dot{V}(\mathbf{x}(t)) = 0 \Leftarrow \mathbf{x}(t) = \mathbf{x}_e \quad \text{(only if)} + \dot{V}(\mathbf{x}(t)) = 0 \text{ only if } \mathbf{x}(t) = \mathbf{x}_e \end{equation*} Finally, $\mathbf{x}_e$ is \textbf{exponentially stable} if \noindent\begin{equation*} From 7b4af184b8812f5c3efe12b226ffdf6315ba3f65 Mon Sep 17 00:00:00 2001 From: juripfammatter Date: Thu, 15 Aug 2024 15:37:47 +0200 Subject: [PATCH 19/25] fixed typo, added clarification on LQR conditions --- src/sections/h2_hinf_synthesis.tex | 2 +- src/sections/modern_controller_synthesis.tex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sections/h2_hinf_synthesis.tex b/src/sections/h2_hinf_synthesis.tex index e8f0c00..334c9ed 100644 --- a/src/sections/h2_hinf_synthesis.tex +++ b/src/sections/h2_hinf_synthesis.tex @@ -15,7 +15,7 @@ \subsubsection{LQR} \begin{itemize} \item Full state feedback: $\mathbf{C_y}=\mathbf{\mathbb{I}}$ \item No disturbance input: $w=0$ ($\mathbf{B}_w=\mathbf{D}_{zw}=\mathbf{D}_{yw}=\mathbf{0}$) - \item $\mathbf{C}_z^{\mathsf{T}}\mathbf{D}_{zu}=0$ % TODO: Intuition. Means what? + \item no cross-coupling term $N$: ($\mathbf{C}_z^{\mathsf{T}}\mathbf{D}_{zu}=0$) \end{itemize} and try to find a control signal $u(t,x)$ that minimizes \begin{equation*} diff --git a/src/sections/modern_controller_synthesis.tex b/src/sections/modern_controller_synthesis.tex index 4be53c7..58db1c5 100644 --- a/src/sections/modern_controller_synthesis.tex +++ b/src/sections/modern_controller_synthesis.tex @@ -170,7 +170,7 @@ \subsection{State Space Representation} As $u(s)=K(s)y(s)$ 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) + F(s) = G_{zw}(s) + G_{zu}(s)K(s){(I-G_{yu}(s)K(s))}^{-1}G_{yw}(s) \end{equation*} \textbf{MATLAB}: \texttt{F = lft(G, K)} From 69408b25da5b168f9db2fa23151e45f31f0297c8 Mon Sep 17 00:00:00 2001 From: juripfammatter Date: Thu, 15 Aug 2024 15:54:05 +0200 Subject: [PATCH 20/25] added matrix notation to LQR/LQE problem statement --- src/sections/h2_hinf_synthesis.tex | 49 ++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/src/sections/h2_hinf_synthesis.tex b/src/sections/h2_hinf_synthesis.tex index 334c9ed..8bd76a5 100644 --- a/src/sections/h2_hinf_synthesis.tex +++ b/src/sections/h2_hinf_synthesis.tex @@ -16,7 +16,16 @@ \subsubsection{LQR} \item Full state feedback: $\mathbf{C_y}=\mathbf{\mathbb{I}}$ \item No disturbance input: $w=0$ ($\mathbf{B}_w=\mathbf{D}_{zw}=\mathbf{D}_{yw}=\mathbf{0}$) \item no cross-coupling term $N$: ($\mathbf{C}_z^{\mathsf{T}}\mathbf{D}_{zu}=0$) + \item i.e. + \noindent\begin{equation*} + \begin{bmatrix} + \mathbf{A} & \mathbf{0} & \mathbf{B}_u \\ + \begin{bmatrix}\sqrt{\mathbf{Q}} & \mathbf{0} \end{bmatrix}^{\mathsf{T}} & \mathbf{0} & \begin{bmatrix}\mathbf{0} & \sqrt{\mathbf{R}}\end{bmatrix}^{\mathsf{T}} \\ + \mathbb{I} & \mathbf{0} & \mathbf{D}_{yu} + \end{bmatrix} + \end{equation*} \end{itemize} + and try to find a control signal $u(t,x)$ that minimizes \begin{equation*} \|\mathbf{z}\|_2^2=\int_0^{+\infty}\|\mathbf{C}_z \mathbf{x}+\mathbf{D}_{zu}\mathbf{u}\|_2^2 dt @@ -81,6 +90,14 @@ \subsubsection{LQE / Kalman Filter} \item Full state updates: $\mathbf{B}_u=\mathbf{\mathbb{I}}$ ($u$ updates the states) \item Zero initial conditions: $\tilde{\mathbf{x}}(0)=\mathbf{x}(0)-\hat{\mathbf{x}}(0)=0$ \item $\mathbf{B}_w \mathbf{D}_{yw}^{\mathsf{T}}=0$ i.e., process noise and sensor noise are uncorrelated. + \item i.e. + \noindent\begin{equation*} + \begin{bmatrix} + \mathbf{A} & \begin{bmatrix} \sqrt{\mathbf{Q}} & \mathbf{0} \end{bmatrix}^{\mathsf{T}} & \mathbb{I} \\ + \mathbf{C}_z & \mathbf{D}_{zw} & \mathbf{D}_{zu} \\ + \mathbf{C}_y & \begin{bmatrix}\mathbf{0} & \sqrt{\mathbf{R}}\end{bmatrix}^{\mathsf{T}} & \mathbf{D}_{yu} + \end{bmatrix} + \end{equation*} \end{itemize} and try to find an update signal $\mathbf{u}(t,\tilde{x})\in \mathcal{L}_2$ that minimizes power in the error signal due to white noise disturbance $w$. @@ -112,7 +129,7 @@ \subsubsection{LQE / Kalman Filter} \end{equation*} The optimal observer matrix is then given by \begin{equation*} - \mathbf{L} = -\mathbf{Y}_L\mathbf{C}_y^{\mathsf{T}}{(\underbrace{\mathbf{D}_{yw}\mathbf{D}_{yw}^{\mathsf{T}}}_{=\mathbf{R}})}^{-1} + \mathbf{L} = -\mathbf{Y}_L\mathbf{C}_y^{\mathsf{T}}{(\underbrace{\mathbf{D}_{yw}\mathbf{D}_{yw}^{\mathsf{T}}}_{=\mathbf{R}})}^{-1} \end{equation*} where $\mathbf{Y}_L$ is symmetric and positive semidefinite. @@ -222,16 +239,16 @@ \subsubsection{LQG} \item $\begin{bmatrix}\mathbf{A}-j\omega \mathbf{I}&\mathbf{B}_w\end{bmatrix},\begin{bmatrix}\mathbf{A}^{\mathsf{H}}-j\omega \mathbf{I}&\mathbf{C}_z^{\mathsf{H}}\end{bmatrix}$ must have full row rank \end{enumerate} \newpar{} -A controller $\mathbf{K}$ fulfilling the cost inequality exists, only if +A controller $\mathbf{K}$ fulfilling the cost inequality exists, only if \begin{enumerate} \item The following ARE has a solution for $\mathbf{X}_{\infty}$ - \begin{equation*} - \mathbf{A}^{\mathsf{H}}\mathbf{X}_{\infty}+\mathbf{X}_{\infty}\mathbf{A}+\mathbf{C}_{z}^{\mathsf{H}}\mathbf{C}_{z}=\mathbf{X}_{\infty}(\mathbf{B}_{u}\mathbf{B}_{u}^{\mathsf{H}}-\gamma^{-2}\mathbf{B}_{w}\mathbf{B}_{w}^{\mathsf{H}})\mathbf{X}_{\infty} - \end{equation*} + \begin{equation*} + \mathbf{A}^{\mathsf{H}}\mathbf{X}_{\infty}+\mathbf{X}_{\infty}\mathbf{A}+\mathbf{C}_{z}^{\mathsf{H}}\mathbf{C}_{z}=\mathbf{X}_{\infty}(\mathbf{B}_{u}\mathbf{B}_{u}^{\mathsf{H}}-\gamma^{-2}\mathbf{B}_{w}\mathbf{B}_{w}^{\mathsf{H}})\mathbf{X}_{\infty} + \end{equation*} \item The following ARE has a solution for $\mathbf{Y}_{\infty}$ - \begin{equation*} - \mathbf{A}\mathbf{Y}_\infty + \mathbf{Y}_\infty \mathbf{A}^{\mathsf{H}} + \mathbf{B}_w^{\mathsf{H}} \mathbf{B}_w = \mathbf{Y}_\infty (\mathbf{C}_y \mathbf{C}_y^{\mathsf{H}} - \gamma^{-2} \mathbf{C}_z \mathbf{C}_z^{\mathsf{H}}) \mathbf{Y}_\infty - \end{equation*} + \begin{equation*} + \mathbf{A}\mathbf{Y}_\infty + \mathbf{Y}_\infty \mathbf{A}^{\mathsf{H}} + \mathbf{B}_w^{\mathsf{H}} \mathbf{B}_w = \mathbf{Y}_\infty (\mathbf{C}_y \mathbf{C}_y^{\mathsf{H}} - \gamma^{-2} \mathbf{C}_z \mathbf{C}_z^{\mathsf{H}}) \mathbf{Y}_\infty + \end{equation*} \item The matrix $\gamma^2 \mathbf{I} - \mathbf{Y}_{\infty} \mathbf{X}_{\infty}$ is positive definite \end{enumerate} @@ -250,14 +267,14 @@ \subsubsection{LQG} \begin{itemize} \item The conditions are only fulfilled if $\gamma\le 1$ \item For $\gamma>1$ use relaxed weights - \item The final controller gains are - \begin{equation*} - \mathbf{F}_u=-\mathbf{B}_u^{\mathsf{H}}\mathbf{X}_\infty,\quad \mathbf{F}_w=\frac1{\gamma^2}\mathbf{B}_w^{\mathsf{H}}\mathbf{X}_\infty - \end{equation*} - \item The final observer gain is - \begin{equation*} - \mathbf{L}=-{(\mathbf{I}-\gamma^{-2}\mathbf{Y}_\infty \mathbf{X}_\infty)}^{-1}\mathbf{Y}_\infty \mathbf{C}_y^{\mathsf{H}} - \end{equation*} + \item The final controller gains are + \begin{equation*} + \mathbf{F}_u=-\mathbf{B}_u^{\mathsf{H}}\mathbf{X}_\infty,\quad \mathbf{F}_w=\frac1{\gamma^2}\mathbf{B}_w^{\mathsf{H}}\mathbf{X}_\infty + \end{equation*} + \item The final observer gain is + \begin{equation*} + \mathbf{L}=-{(\mathbf{I}-\gamma^{-2}\mathbf{Y}_\infty \mathbf{X}_\infty)}^{-1}\mathbf{Y}_\infty \mathbf{C}_y^{\mathsf{H}} + \end{equation*} \end{itemize} \newpar{} From 0ab57cf016f6f10f69ebf919ae10b80f51d16350 Mon Sep 17 00:00:00 2001 From: DanielSchweizer1999 <126180829+DanielSchweizer1999@users.noreply.github.com> Date: Wed, 28 Aug 2024 13:47:16 +0200 Subject: [PATCH 21/25] Update stab_and_perf_robustness.tex done --- src/sections/stab_and_perf_robustness.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sections/stab_and_perf_robustness.tex b/src/sections/stab_and_perf_robustness.tex index 7ef9b5b..da7d11a 100644 --- a/src/sections/stab_and_perf_robustness.tex +++ b/src/sections/stab_and_perf_robustness.tex @@ -170,7 +170,7 @@ \subsection{Robust Disturbance Rejection} \item A \textbf{transfer function matrix} describing all uncertainty input-output relations \end{itemize} We model an uncertainty block by -\begin{equation*} +\begin{equation*}\label{diag_unc_block} \begin{bmatrix} w_1 \\ w_2 @@ -209,18 +209,18 @@ \subsubsection{Robustness Assessment} \newpar{} \ptitle{Remarks} \begin{itemize} - \item Note that we ignored the diagonal structure of $\boldsymbol{\Delta}$ which makes our assumptions too conservative (see SSV for less conservatively). + \item Note that we ignored the diagonal structure of $\boldsymbol{\Delta}$ which makes our assumptions too conservative (see SSV for less conservatism). \item Also note that $\mathbf{M}$ has rank 1. In this case one can calculate the SSV exactly (see below). \end{itemize} \subsection{Structured Singular Value (SSV)} The condition from the \textit{unstructured SGT} is a conservative assumption as the SGT could be applied to an arbitrary $\boldsymbol{\Delta}$. -If $\boldsymbol{\Delta}$ has \textbf{block-diagonal structure}, less conservative robustness conditions can be applied. +For example, as the $\boldsymbol{\Delta}$ from \ref{diag_unc_block} has block-diagonal structure, less conservative robustness conditions could be applied. \newpar{} \ptitle{Definition of SSV} -The SSV is defined with respect to a \textbf{class of perturbations} $\mathbb{D}$ as the smallest $\sigma_{\max}$ making $\mathbf{M}$ singular: +The SSV is defined with respect to a \textbf{class of perturbations} $\mathbb{D}$ as the inverse value of the smallest $\sigma_{\max}$ making $\mathbf{M}$ singular: \begin{equation*} \mu(\mathbf{M}):=\frac1{\inf\{\sigma_{\max}(\boldsymbol{\Delta}):\det(1-M\boldsymbol{\Delta})=0\}},\quad\boldsymbol{\Delta}\in\mathbb{D} \end{equation*} From 2d7e392adc53e898acb9184b6c33cf949ac76beb Mon Sep 17 00:00:00 2001 From: Tobias Meier Date: Tue, 10 Sep 2024 11:59:29 +0200 Subject: [PATCH 22/25] cleanup from merge --- src/sections/MIMO_intro.tex | 4 -- src/sections/nonlinear_systems.tex | 14 +++--- src/sections/pole_placement.tex | 53 +++++++++------------ src/sections/reachability_observability.tex | 24 +--------- 4 files changed, 30 insertions(+), 65 deletions(-) diff --git a/src/sections/MIMO_intro.tex b/src/sections/MIMO_intro.tex index f310d47..b13199a 100644 --- a/src/sections/MIMO_intro.tex +++ b/src/sections/MIMO_intro.tex @@ -81,11 +81,7 @@ \subsubsection{State-Space Representation} \subsubsection{Transfer Function Representation} \begin{itemize} \item The poles are given by the \textbf{roots} of the \textbf{characteristic polynomial} of $\mathbf{G}(s)$. - % TODO: What about poles of nonminimal realizations? \item The \textbf{characteristic polynomial} $d(s)$ of a minimal realization of $\mathbf{G}(s)$ is the least common multiple (LCM) of the denominators of all possible minors $G_{ij}$. - \begin{itemize} - \item Polynomial of order $n_d$ - \end{itemize} \item The \textbf{minors} are the determinants of all single entries of the $\mathbf{G}(s)$ matrix as well as the determinants of all possible square submatrices (of all sizes!) in $\mathbf{G}(s)$. \end{itemize} diff --git a/src/sections/nonlinear_systems.tex b/src/sections/nonlinear_systems.tex index 729d425..2da23ca 100644 --- a/src/sections/nonlinear_systems.tex +++ b/src/sections/nonlinear_systems.tex @@ -80,7 +80,7 @@ \subsubsection{Lyapunov Functions} \newpar{} Futhermore, $\mathbf{x}_e$ is \textbf{asymptotically stable} if \noindent\begin{equation*} - \dot{V}(\mathbf{x}(t)) = 0 \text{ only if } \mathbf{x}(t) = \mathbf{x}_e + \dot{V}(\mathbf{x}(t)) = 0 \Leftarrow \mathbf{x}(t) = \mathbf{x}_e \quad \text{(only if)} \end{equation*} Finally, $\mathbf{x}_e$ is \textbf{exponentially stable} if \noindent\begin{equation*} @@ -183,8 +183,8 @@ \subsection{Control Lyapunov Functions} \newpar{} A CLF satisfies \noindent\begin{align*} - V(\mathbf{x}) & \geq 0 & & \text{positive definite} \\ - V(\mathbf{x}) & = 0 \Leftrightarrow \mathbf{x} = 0 & & \text{radially unbounded} \\ + V(\mathbf{x}) & \geq 0 & & \text{positive definite} \\ + V(\mathbf{x}) & = 0 \Leftrightarrow \mathbf{x} = 0 & & \text{radially unbounded} \\ \frac{d}{dt} V(\mathbf{x}, \tilde{\mathbf{u}}(\mathbf{x})) & = \frac{\partial V(\mathbf{x})}{\partial \mathbf{x}} f(\mathbf{x}, \tilde{\mathbf{u}}(\mathbf{x})) \leq 0 & & \forall \mathbf{x}\neq 0 \end{align*} @@ -304,7 +304,7 @@ \subsubsection{Backstepping Control} Using $\dot{\mathbf{u}}_0=\dot{\mathbf{z}}-\dot{\mathbf{e}}$ one finally finds the stabilizing control law as \begin{align*} u_1(\mathbf{x},\mathbf{z}) = \frac{1}{g_1(\mathbf{x},\mathbf{z})} & \left(\frac{\partial \mathbf{u}_0(\mathbf{x})}{\partial \mathbf{x}}\left(f_0(\mathbf{x})+g_0(\mathbf{x})\mathbf{z}\right)-f_1(\mathbf{x},\mathbf{z}) \right. \\ - & \left. -\frac{\partial V_0(\mathbf{x})}{\partial \mathbf{x}}g_0(\mathbf{x})-k_1(\mathbf{z}-\mathbf{u}_0(\mathbf{x}))\right) + & \left. -\frac{\partial V_0(\mathbf{x})}{\partial \mathbf{x}}g_0(\mathbf{x})-k_1(\mathbf{z}-\mathbf{u}_0(\mathbf{x}))\right) \end{align*} \newpar{} @@ -323,9 +323,9 @@ \subsubsection{Backstepping Control} \paragraph{Recursive Backstepping} The same approach can be used recursively as \begin{align*} - \dot{\mathbf{x}} & =\quad f_{0}(\mathbf{x})+g_{0}(\mathbf{x})\mathbf{z}_{1}, \\ - \dot{\mathbf{z}}_{1} & =\quad f_{1}(\mathbf{x},\mathbf{z}_{1})+g_{1}(\mathbf{x},\mathbf{z}_{1})\mathbf{z}_{2}, \\ - & \vdots \\ + \dot{\mathbf{x}} & =\quad f_{0}(\mathbf{x})+g_{0}(\mathbf{x})\mathbf{z}_{1}, \\ + \dot{\mathbf{z}}_{1} & =\quad f_{1}(\mathbf{x},\mathbf{z}_{1})+g_{1}(\mathbf{x},\mathbf{z}_{1})\mathbf{z}_{2}, \\ + & \vdots \\ \dot{\mathbf{z}}_{m} & =\quad f_{m}(\mathbf{x},\mathbf{z}_{1},\ldots,\mathbf{z}_{m})+g_{1}(\mathbf{x},\mathbf{z}_{m})\mathbf{u} \end{align*} diff --git a/src/sections/pole_placement.tex b/src/sections/pole_placement.tex index 0cd2772..4ef4c97 100644 --- a/src/sections/pole_placement.tex +++ b/src/sections/pole_placement.tex @@ -48,44 +48,35 @@ \subsubsection{Reachable Canonical Form} \end{align*} \subsubsection{General Case} -If the system is \textbf{controllable} but not in reachable canonical form, the following steps have to be applied +If the system is \textbf{controllable} but not in reachable canonical form, the following steps have to be applied to transform the system into reachable canonical form $\tilde{\mathbf{A}},\tilde{\mathbf{B}},\tilde{\mathbf{C}},\tilde{\mathbf{D}}$. \begin{enumerate} - \item Calculate $\mathbf{A}'$ by comparing the characteristic polynomial of $\mathbf{A}$ with the one of the parametric $\mathbf{A}'$ from~\ref{RCF}. - \item Find transformation matrix $\mathbf{T}$ (using $\mathbf{A}'$ from 1.\ and the known form for $\mathbf{B}'$ to calculate $\mathbf{R}'$): + \item Calculate $\tilde{\mathbf{A}}$ by comparing the characteristic polynomial of $\mathbf{A}$ with the one of the parametric reachable canonical form $\tilde{\mathbf{A}}$. + \item Find transformation matrix $\mathbf{T}$ (using $\tilde{\mathbf{A}}$ from 1.\ and the known form for $\tilde{\mathbf{B}}$ to calculate $\tilde{\mathbf{R}}$): \noindent\begin{align*} - \mathbf{R}' & =\begin{bmatrix} - \mathbf{B}' & \mathbf{A}'\mathbf{B}' & \ldots & {(\mathbf{A}')}^{n-1}\mathbf{B}' - \end{bmatrix} \\ - & =\mathbf{TR} =\begin{bmatrix} - 0 & 0 & \dots & 1 \\ - \vdots & & \ddots & \\ - 0 & 1 & -a_{n-1} & \dots \\ - 1 & -a_{n-1} & a_{n-1}^2 - a_{n-2} & \dots \\ - \end{bmatrix} \\ - \mathbf{T} & = \mathbf{R'R}^{-1} + \tilde{\mathbf{R}} & =\begin{bmatrix} + \tilde{\mathbf{B}} & \tilde{\mathbf{A}}\tilde{\mathbf{B}} & \ldots & {(\tilde{\mathbf{A}})}^{n-1}\tilde{\mathbf{B}} + \end{bmatrix} \\ + & =\mathbf{TR} =\begin{bmatrix} + 0 & 0 & \dots & 1 \\ + \vdots & & \ddots & \\ + 0 & 1 & -a_{n-1} & \dots \\ + 1 & -a_{n-1} & a_{n-1}^2 - a_{n-2} & \dots \\ + \end{bmatrix} \\ + \mathbf{T} & = \tilde{\mathbf{R}}\mathbf{R}^{-1} \end{align*} - with $\mathbf{R}'$ the reachability matrix of the transformed system. - \begin{itemize} - \item $a_i$ are the coefficients of $\mathbf{A}'$ - \item Note that there are 2 different ways to calculate $\mathbf{R}'$ of which we use the first one as $\mathbf{T}$ is unknown in the beginning. - \end{itemize} - \item Similarity transform of $\mathbf{A,B,C,D}$ into reachable canonical form $\mathbf{A',B',C',D'}$ + with $\tilde{\mathbf{R}}$ the reachability matrix of the transformed system and $a_i$ are the coefficients of $\tilde{\mathbf{A}}$ + \item Calculate the $\tilde{\mathbf{C}}$ matrix. \item Apply method for reachable canonical form \begin{equation*} \mathbf{K}^{\prime} =\left[\alpha_{0}-a_{0},\quad\alpha_{1}-a_{1},\quad\ldots,\quad\alpha_{n-1}-a_{n-1}\right] \end{equation*} - \item Transform $\mathbf{K}'$ back to the original system: + \item Transform $\tilde{\mathbf{K}}$ back to the original system: \noindent\begin{equation*} - \mathbf{K} = \mathbf{K'RR}^{-1} + \mathbf{K} = \tilde{\mathbf{K}}\mathbf{RR}^{-1} \end{equation*} which is possible if $\mathbf{R}$ is invertible (corresponds to controllability). \end{enumerate} -\textbf{Remarks}: -\begin{itemize} - \item $\mathbf{A'},\mathbf{A}$ share their eigenvalues, therefore a comparison of coefficients can be used. -\end{itemize} - \newpar{} \ptitle{Reminder}\label{RCF} @@ -130,13 +121,13 @@ \subsubsection{General Case} \subsubsection{Ackermann's Formula} Assuming that the system is \textbf{controllable}, Ackermann's formula can be used to calculate $\mathbf{K}$ for \textbf{both} CT and DT systems: \noindent\begin{align*} - \mathbf{K} & =\begin{bmatrix} - 0, & \ldots, & 0, & 1 - \end{bmatrix} - \mathbf{R}^{-1}\varphi_{cl}(\mathbf{A}) \\ + \mathbf{K} & =\begin{bmatrix} + 0, & \ldots, & 0, & 1 + \end{bmatrix} + \mathbf{R}^{-1}\varphi_{cl}(\mathbf{A}) \\ \varphi_{cl,des}(s) & =s^n+\alpha_{n-1}s^{n-1}+\ldots+\alpha_0=(s-\lambda_1)\ldots(s-\lambda_n) \\ \varphi_{cl,des}(\mathbf{A}) & =\mathbf{A}^n+\alpha_{n-1}\mathbf{A}^{n-1}+\ldots+\alpha_0 \mathbf{I} \\ - & = (\mathbf{A}-\lambda_1 \mathbf{I})\ldots(\mathbf{A}-\lambda_n \mathbf{I}) + & = (\mathbf{A}-\lambda_1 \mathbf{I})\ldots(\mathbf{A}-\lambda_n \mathbf{I}) \end{align*} \newpar{} diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index c566add..92f3975 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -93,30 +93,14 @@ \subsection{Modal View: Stabilizability and Detectability} \ptitle{Stabilizability} \begin{itemize} \item A system is stabilizable if all \textbf{unstable modes are reachable}. - \begin{itemize} - \item I.e.\ it must be possible to bring all unstable modal components from $\mathbf{0}$ to any desired state in finite time. - \end{itemize} - \item Transform system into modal coordinates and compare $\tilde{b}_i$ with $\lambda_i$ to access stabilizability of corresponding mode. \item Reachability always implies stabilizability - \begin{itemize} - \item A stabilizable system can be unreachable: E.g.\ if stable modes can't be influenced from the input. - \item An unstabilizable system can never be reachable. - \end{itemize} \end{itemize} \newpar{} \ptitle{Detectability} \begin{itemize} \item A system is detectable if all \textbf{unstable modes are observable}. - \begin{itemize} - \item I.e.\ unstable modal behavior must be visible at the output - \end{itemize} - \item Transform system into modal coordinates and compare $\tilde{c}_i$ with $\lambda_i$ to access detectability of corresponding mode. \item Observability always implies detectability - \begin{itemize} - \item A detectable system can be unobservable: E.g.\ if stable modes don't influence the output. - \item An undetectable system can never be observable. - \end{itemize} \end{itemize} \subsection{Kalman Decomposition} @@ -180,11 +164,5 @@ \subsection{Kalman Decomposition} \ptitle{Remarks} \begin{itemize} \item In the transfer function $u \rightarrow y$ only the modes corresponding to the reachable and observable modes will appear (others will be cancelled by a zero). - \item A minimal realization of a transfer function is a state-space model that is both reachable and observable. - \begin{itemize} - % TODO: Does a non-minimal realization always cause pole-zero cancellations in the TF? - \item Even more, it holds that a realization is minimal \textbf{if and only if} it is reachable and observable. - \item Reminder: For non-minimal realizations invariant zeros can give additional zeros (correspond to uncontrollable/unobservable modes). - \end{itemize} + \item A realization is minimal \textbf{iff} it is reachable and observable. \end{itemize} - From 91294fe862436da29650cc1756a5da9dbf2f9337 Mon Sep 17 00:00:00 2001 From: Tobias Meier Date: Tue, 10 Sep 2024 12:16:03 +0200 Subject: [PATCH 23/25] answered TODOs removed --- src/sections/LQR.tex | 5 ++--- src/sections/MIMO_intro.tex | 23 -------------------- src/sections/discrete_time_systems.tex | 2 -- src/sections/h2_hinf_synthesis.tex | 7 ++---- src/sections/modern_controller_synthesis.tex | 4 +--- src/sections/mpc.tex | 4 +--- src/sections/nonlinear_systems.tex | 1 - src/sections/observers.tex | 12 +++++----- src/sections/reachability_observability.tex | 2 +- src/sections/references.tex | 3 --- src/sections/stab_and_perf_robustness.tex | 2 +- 11 files changed, 14 insertions(+), 51 deletions(-) delete mode 100644 src/sections/references.tex diff --git a/src/sections/LQR.tex b/src/sections/LQR.tex index 4ab0a5b..83e7a67 100644 --- a/src/sections/LQR.tex +++ b/src/sections/LQR.tex @@ -19,9 +19,8 @@ \subsection{Cost Functional} \item $\mathbf{R}$ \begin{itemize} \item must be positive definite i.e. $\mathbf{u}^{\mathsf{T}} \mathbf{Ru} >0\; \forall \mathbf{u}\neq \mathbf{0}$ or $\mathrm{eig}(\mathbf{R}) > 0$ (otherwise not every control effort is penalized). - \item is symmetric (see derivation in H2-Sythesis Section~\ref{h2_synth}) + \item is symmetric (see derivation in H2-Synthesis Section~\ref{h2_synth}) \end{itemize} - % TODO: Why must Q but not R be symmetric? -> I think this should be true. -> From H2 Synthesis: R = D^TD which yields a symmetric matrix \item The pair $\mathbf{A,B}$ must be stabilizable \item In general, there is an additional cross-coupling term $\mathbf{x}^{\mathsf{T}}\mathbf{Nu}$ in $J$ which is often neglected i.e.\ equal to $0$ \end{itemize} @@ -171,7 +170,7 @@ \subsection{Symmetric Root Locus} \item $2n$ branches, where $n$ is the size of $\mathbf{A}$ \begin{itemize} \item like in standard RL, every branch starts in an OL pole - \item but asymptotic behaviour different from standard RL + \item but asymptotic behavior different from standard RL \end{itemize} \item symmetric to the real and imaginary axis \item LQR closed-loop poles are all in the LHP diff --git a/src/sections/MIMO_intro.tex b/src/sections/MIMO_intro.tex index b13199a..07d9292 100644 --- a/src/sections/MIMO_intro.tex +++ b/src/sections/MIMO_intro.tex @@ -200,7 +200,6 @@ \subsubsection{Transmission Zeros} n_{\max}(s)=(s+3)(s+2) \end{equation*} 5. Identify zeros: $z_1=-3,\;z_2=-2$ - % TODO: We could add the calculation of the zero directions here \end{examplesection} \subsubsection{Invariant Zeros} @@ -355,28 +354,6 @@ \subsubsection{Gilbert's Realization} \item Transmission zeros and invariant zeros are equal in this (minimal) realization. \end{itemize} -% TODO: Add an example? -% \begin{examplesection}[Example of Gilbert's Realization] -% Given the TF -% \begin{equation*} -% \mathbf{G}(s) = \begin{bmatrix} -% 1 & \frac{1}{s+1} \\ -% 0 & 1 -% \end{bmatrix} -% \end{equation*} -% The LCM denominator $d(s)$ is -% \begin{equation*} -% d(s) = s+1 -% \end{equation*} -% and the feed-through term is -% \begin{equation*} -% \mathbf{D} = \mathbf{I} -% \end{equation*} -% -% \end{examplesection} - -% \subsection{Signal Amplification} - \subsection{Singular Value Decomposition (SVD)} Any(!) matrix $\mathbf{A}\in \mathbb{C}^{m\times n}$ can be decomposed as diff --git a/src/sections/discrete_time_systems.tex b/src/sections/discrete_time_systems.tex index 5fd1973..5e5c6fd 100644 --- a/src/sections/discrete_time_systems.tex +++ b/src/sections/discrete_time_systems.tex @@ -208,8 +208,6 @@ \subsubsection{Discretization: Hold and Sample}\label{disc::hold_and_sample} \mathbf{A}_d & :=e^{\mathbf{A}T} & \mathbf{B}_d & :=\left(\int_0^{\mathsf{T}} {e^{\mathbf{A}\theta}}d\theta\right)\mathbf{B} \overset{\mathbf{A} \text{ inv.}}{=} \mathbf{A}^{-1}\left(\mathbf{A}_d-\mathbf{I}\right)\mathbf{B} \\ \mathbf{C}_d & :=\mathbf{C} & \mathbf{D}_d & :=\mathbf{D} \end{align*} -%Alternatively the DT state space matrices $\mathbf{A}_d, \mathbf{B}_d, \mathbf{C}_d, \mathbf{D}_d$ can be used to compute the DT transfer function $G_{d}(z)$ and the corresponding difference equation can be derived using the z transform. -%TODO: This belongs to the section "Transfer Functions (TF) of DT LTI Systems" I would suggest we add the subscript _d to the formulas there (which probably caused the confusion) and remove this comment. We discussed it and Dani wil have a look at it and will decide if we delete it or move it \newpar{} \ptitle{Calculations} diff --git a/src/sections/h2_hinf_synthesis.tex b/src/sections/h2_hinf_synthesis.tex index 8bd76a5..2435f67 100644 --- a/src/sections/h2_hinf_synthesis.tex +++ b/src/sections/h2_hinf_synthesis.tex @@ -174,9 +174,6 @@ \subsubsection{LQG} \end{equation*} where $\mathbf{Y}$ is the stabilizing solution to the corresponding ARE. -% TODO: Why do the partial solutions F and L contain the terms that were = 0 per definition in the LQR and LQE case? -% -> not assumed for this example: If you remove them (=0), you're getting the the same F,K/L as in the LQR/LQE chapters (both original ones and h2 synthesis) - \subsection[H-infinity Synthesis]{$\mathcal{H}_\infty$ Synthesis} $\mathcal{H}_\infty$ minimizes the worst-case input-output gain (singular values). @@ -188,7 +185,7 @@ \subsubsection{LQG} \item The expected covariances of the disturbance and sensor noise \end{enumerate} i.e.\ \textbf{optimal} w.r.t.\ time-domain specifications. \item $\mathcal{H}_2$ specifications are given in \textbf{time domain}: difficult to handle frequency-domain specifications. - \item For $\mathcal{H}_2$ design one could use a ``mixed sensitivity'' approach, and further augment the plant $P$ with frequency-dependent weigthing functions. + \item For $\mathcal{H}_2$ design one could use a ``mixed sensitivity'' approach, and further augment the plant $P$ with frequency-dependent weighting functions. \item $\mathcal{H}_\infty$ provides a more direct way to handle \textbf{frequency-domain specifications.} i.e.\ it allows to achieve a desired level of robustness to disturbances and noise (``Bode obstacles''). \end{itemize} @@ -221,7 +218,7 @@ \subsubsection{LQG} \begin{equation*} \|\mathbf{z}\|_{\mathcal{L}_2}^2-\gamma^2\|\mathbf{w}\|_{\mathcal{L}_2}^2 < 0 \end{equation*} -where we search for the smallest $\gamma$ such that the controller can achieve negative cost. We \textbf{need} $\boldsymbol{\gamma}\mathbf{\le1}$ for a stabilizing controller as otherways for larger gamma one could easily achieve negative cost even though the energy of the disturbance gets not damped at all! The formula can be understood as +where we search for the smallest $\gamma$ such that the controller can achieve negative cost. We \textbf{need} $\boldsymbol{\gamma}\mathbf{\le1}$ for a stabilizing controller as otherwise for larger gamma one could easily achieve negative cost even though the energy of the disturbance gets not damped at all! The formula can be understood as \begin{itemize} \item $\mathbf{z}$ is the performance output given some disturbance $\mathbf{w}$ \item We want to damp $\mathbf{z}$ given $\mathbf{w}$ (remember the definition of the induced $\mathcal{L}_2$ norm above) diff --git a/src/sections/modern_controller_synthesis.tex b/src/sections/modern_controller_synthesis.tex index 7972441..1fe1fbf 100644 --- a/src/sections/modern_controller_synthesis.tex +++ b/src/sections/modern_controller_synthesis.tex @@ -284,9 +284,7 @@ \subsubsection{Controller Synthesis} \end{examplesection} \subsection{Youla's Q Parameterization} -% TODO: -%-Structure of this section could be optimized -%-Remark on SISO/MIMO + 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). \begin{itemize} \item Extension of a full state feedback controller (including observer) with a system \textcolor{purple}{$Q$} that takes the innovation as an input. diff --git a/src/sections/mpc.tex b/src/sections/mpc.tex index 0652411..3186d51 100644 --- a/src/sections/mpc.tex +++ b/src/sections/mpc.tex @@ -58,7 +58,7 @@ \subsection{Terminal Cost}\label{mpc_terminal_cost} \end{equation*} If we ensure that the terminal cost of the next step $V(f(\mathbf{x,u}))$ is less or equal to the current terminal cost $V(\mathbf{x})$ we get a stabilizing control law. -However, the MPC control law will have better performance -- if not optimal, i.e. % TODO: Maybe explain this in more detail +However, the MPC control law will have better performance -- if not optimal, i.e. \begin{equation*} J^*_\infty(\mathbf{x}) \leq J^*_H(\mathbf{x}) \leq J^*_{CLF}(\mathbf{x}) \end{equation*} @@ -104,8 +104,6 @@ \subsubsection{Barrier Interior-Point Method} \newpar{} The problem is then solved iteratively using gradient descent or Newton method for $t=\mu^k t_0$ with $t_0>0, \mu > 1$ where $k$ is the iteration variable. The solution of the pervious step is used as a starting point for the next step. -% TODO: Add graphical example like the one drawn on the blackboard. - \newpar{} \ptitle{Remarks:} \begin{itemize} diff --git a/src/sections/nonlinear_systems.tex b/src/sections/nonlinear_systems.tex index 2da23ca..c45b4f4 100644 --- a/src/sections/nonlinear_systems.tex +++ b/src/sections/nonlinear_systems.tex @@ -100,7 +100,6 @@ \subsubsection{Lyapunov Functions} \begin{itemize} \item If there could be multiple equilibrium points one needs to use LaSalle. \item $V(\mathbf{x})=0$ must hold in any equilibrium point, even if there are more then one. - %TODO:: must the "only equilibrium point" from above be (0,...0)? -> I think not -> if multiple equilibria are possible, they can't all be 0 -> doesn't have to be 0 \item If one has more than one state vector, then \begin{equation*} \dot{V}=\sum_{i} \frac{\partial V(\mathbf{x}_i)}{\partial \mathbf{x}_i} \frac{\partial \mathbf{x}_i(t)}{\partial t} diff --git a/src/sections/observers.tex b/src/sections/observers.tex index f47addf..c8ccc6e 100644 --- a/src/sections/observers.tex +++ b/src/sections/observers.tex @@ -78,12 +78,12 @@ \subsubsection{Observer Pole Placement} Similarly to state feedback we get \begin{align*} - \mathbf{L} & =\varphi_{\mathrm{cl,des}}(\mathbf{A})\mathbf{O}^{-1}\begin{bmatrix} - 0, & \ldots, & 0, & 1 - \end{bmatrix}^{\mathsf{T}} \\ - \varphi_{\mathrm{cl,des}}(s) & =s^n+\alpha_{n-1}s^{n-1}+\ldots+\alpha_0=(s-\lambda_1)\ldots(s-\lambda_n) \\ - \varphi_{\mathrm{cl,des}}(\mathbf{A}) & =\mathbf{A}^n+\alpha_{n-1}\mathbf{A}^{n-1}+\ldots+\alpha_0 \mathbf{I} \\ - & = (\mathbf{A}-\lambda_1 \mathbf{I})\ldots(\mathbf{A}-\lambda_n \mathbf{I}) + \mathbf{L} & =\varphi_{\mathrm{cl,des}}(\mathbf{A})\mathbf{O}^{-1}\begin{bmatrix} + 0, & \ldots, & 0, & 1 + \end{bmatrix}^{\mathsf{T}} \\ + \varphi_{\mathrm{cl,des}}(s) & =s^n+\alpha_{n-1}s^{n-1}+\ldots+\alpha_0=(s-\lambda_1)\ldots(s-\lambda_n) \\ + \varphi_{\mathrm{cl,des}}(\mathbf{A}) & =\mathbf{A}^n+\alpha_{n-1}\mathbf{A}^{n-1}+\ldots+\alpha_0 \mathbf{I} \\ + & = (\mathbf{A}-\lambda_1 \mathbf{I})\ldots(\mathbf{A}-\lambda_n \mathbf{I}) \end{align*} \textbf{Remarks:} diff --git a/src/sections/reachability_observability.tex b/src/sections/reachability_observability.tex index 92f3975..054308e 100644 --- a/src/sections/reachability_observability.tex +++ b/src/sections/reachability_observability.tex @@ -46,7 +46,7 @@ \subsubsection{DT Systems: Controllability} \begin{itemize} \item A DT LTI system is controllable if, for any initial condition $\mathbf{x}_0$, there exists a control input that brings the state $x$ to $0$ in finite time (Note: For Reachability one has the ``opposite'' condition). \item Reachability always implies controllability and uncontrollable systems are never reachable - \item Controllability only implies reachability if $\mathbf{A}_d$ is invertible % TODO: I think we could also make it "if and only if" + \item Controllability only implies reachability iff $\mathbf{A}_d$ is invertible \item An unreachable DT system with non-invertible $\mathbf{A}_d$ could be controllable (Eigenvalues at 0). E.g.: \begin{itemize} \item $\mathbf{x}[k+1] = 0\mathbf{x}[k] + 0\mathbf{u}[k]$ is controllable (state goes to $0$) but unreachable as $\det(\mathbf{R})=0$. diff --git a/src/sections/references.tex b/src/sections/references.tex deleted file mode 100644 index e74827c..0000000 --- a/src/sections/references.tex +++ /dev/null @@ -1,3 +0,0 @@ -\section{References} - -\printbibliography[heading=none]{} diff --git a/src/sections/stab_and_perf_robustness.tex b/src/sections/stab_and_perf_robustness.tex index da7d11a..5e85cfa 100644 --- a/src/sections/stab_and_perf_robustness.tex +++ b/src/sections/stab_and_perf_robustness.tex @@ -215,7 +215,7 @@ \subsubsection{Robustness Assessment} \subsection{Structured Singular Value (SSV)} The condition from the \textit{unstructured SGT} is a conservative assumption as the SGT could be applied to an arbitrary $\boldsymbol{\Delta}$. -For example, as the $\boldsymbol{\Delta}$ from \ref{diag_unc_block} has block-diagonal structure, less conservative robustness conditions could be applied. +For example, as the $\boldsymbol{\Delta}$ from~\ref{diag_unc_block} has block-diagonal structure, less conservative robustness conditions could be applied. \newpar{} \ptitle{Definition of SSV} From c1738a0feaefe48f29967caa38285cf36896d467 Mon Sep 17 00:00:00 2001 From: Tobias Meier Date: Tue, 10 Sep 2024 12:34:15 +0200 Subject: [PATCH 24/25] Disclaimer added --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 13681b8..23db932 100644 --- a/README.md +++ b/README.md @@ -80,3 +80,7 @@ The LaTeX template of this summary can be found [here](https://github.com/MeierT ## License Distributed under the MIT License. See [LICENSE](LICENSE) for more information. + +## Disclaimer + +All information, images, and materials presented here are sourced from the official lecture slides of the course "Control Systems II" taught by Emilio Frazzoli (Spring Semester 2024) and the textbook authored by Gioele Zardini. From 252bb4a30cba8b010db2ddae57c8663d26efd5f8 Mon Sep 17 00:00:00 2001 From: Tobias Meier Date: Tue, 10 Sep 2024 12:45:49 +0200 Subject: [PATCH 25/25] Disclaimer extended --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 23db932..d9920d4 100644 --- a/README.md +++ b/README.md @@ -83,4 +83,4 @@ Distributed under the MIT License. See [LICENSE](LICENSE) for more information. ## Disclaimer -All information, images, and materials presented here are sourced from the official lecture slides of the course "Control Systems II" taught by Emilio Frazzoli (Spring Semester 2024) and the textbook authored by Gioele Zardini. +All information, images, and materials presented here are sourced from the official lecture slides of the course "Control Systems II" taught by Prof. Dr. Emilio Frazzoli (Spring Semester 2024) and the textbook authored by Gioele Zardini. This course summary is intended solely for educational and academic purposes. Any other use or distribution is strictly prohibited.