From 8338693ac4aed8e5bc9113fa44abd0b9ce8ed343 Mon Sep 17 00:00:00 2001 From: TSoli Date: Sun, 29 Oct 2023 10:06:14 +1000 Subject: [PATCH] Finished writing article on state-space modelling --- _posts/2023-10-29-state-space.md | 59 +++++++++++++++++++++++++++++-- images/control_system_memory.jpg | Bin 0 -> 25220 bytes 2 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 images/control_system_memory.jpg diff --git a/_posts/2023-10-29-state-space.md b/_posts/2023-10-29-state-space.md index b907b59..2261465 100644 --- a/_posts/2023-10-29-state-space.md +++ b/_posts/2023-10-29-state-space.md @@ -1,6 +1,6 @@ --- title: State Space System Modelling -date: 2024-10-29 +date: 2023-10-29 categories: [Mechanics, Dynamics] tags: [ @@ -74,19 +74,72 @@ $$ $$ For some matrix $\mathbf{A} \in \mathbb{R}^{k \times k}$ where $k$ is the total number of states. +The same can be said for discrete systems if we know the state at the next time step as a linear +function of the current time step. These are known as difference equations as opposed to +differential equations. -## Adding Inputs +## Inputs Often, we would like to manipulate or control our system using some external inputs that affect some of the states. For example, we might be able to push the accelerator in a car to apply some force causing it to accelerate. The chosen force will clearly affect how the car moves and will instantaneously affect the car's velocity. For an effective autonomous car we might like to control -the car's position via this force. +the car's position via this force. The affect of the input, $\mathbf{u}$ on the state derivative can +be added in the matrix state space equation. $$ +\mathbf{\dot{x}} = \mathbf{Ax + Bu} +$$ + +For $k$ states and $i$ inputs $\mathbf{B} \in \mathbb{R}^{k \times i}$. + +## Outputs + +For the system we may have some desired outputs $\mathbf{Y}$ that are a function of the state and +perhaps the current inputs. Therefore, we have + +$$ +\mathbf{Y} = \mathbf{Cx + Du} +$$ + +For $p$ outputs and $k$ states we have $\mathbf{C} \in \mathbb{R}^{p \times k}$ and for $i$ inputs +$\mathbf{D} \in \mathbb{R}^{p \times i}$. +## State and Memory +Our overall system can now be described using two sets of matrix equations. + +$$ +\mathbf{\dot{x}} = \mathbf{Ax + Bu} \\ +\mathbf{Y} = \mathbf{Cx + Du} $$ +We can think of the system as having some components with memory that inform the current state and +some components that are memoryless and cause an instantaneous output. The second equation +demonstrates this well where $\mathbf{x}$ acts as the memory of the system which may cause changes +in the output over time based on the memoryless functions parameterised by $\mathbf{A}$ and +$\mathbf{B}$. + + +![](/images/control_system_memory.jpg) _Systems modelled as a combination of memory elements and +memoryless components taken from The Essentials of Linear State-Space Systems by Aplevich_ + +## Stability + +Assuming that the inputs are bounded and $\mathbf{B}$ has finite entries, the stability of the +system will depend on if the state converges to a particular state over time for any initial state. +This can be determined by solving the set of ODEs which we know results in a linear combination of +exponential functions multiplied by eigenvectors $v_k$ which are themselves a linear combination of +the originally defined states. Since there were $k$ states, there will need to be $k$ independent +eigenvectors for the general solution. + $$ +\mathbf{x}(t) = C_1 e^{\lambda_1 t} v_1 + ... + C_k e^{\lambda_k t} v_k $$ + +Where $\lambda_k$ are the eigenvalues of $\mathbf{A}$ and . These eigenvectors correspond to motions +that are independent of each other in the system and are known as the modes of system. Clearly from +this equation the system will converge if and only if all of the real parts of the eigenvalues +$\lambda_k$ are negative. Incidentally, these eigenvalues are also the poles of the system in the +[Laplace domain](https://en.wikipedia.org/wiki/Laplace_transform) which we know must be negative for +stability. diff --git a/images/control_system_memory.jpg b/images/control_system_memory.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed5321838344cd90965b943751b4e4359d2ceae2 GIT binary patch literal 25220 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 L(f{Rx+UWf+&Mih7 literal 0 HcmV?d00001