Re-worked first section

This commit is contained in:
Thomas Dehaeze 2020-12-02 17:01:03 +01:00
parent 71a0c7ee41
commit 0d13665c50
2 changed files with 413 additions and 332 deletions

File diff suppressed because it is too large Load Diff

View File

@ -78,22 +78,21 @@ The general structure of this document is as follows:
** Introduction :ignore: ** Introduction :ignore:
- Section [[sec:model_based_control_methodology]] # - Section [[sec:model_based_control_methodology]]
- Section [[sec:comp_classical_modern_robust_control]] # - Section [[sec:comp_classical_modern_robust_control]]
- Section [[sec:example_system]] # - Section [[sec:example_system]]
** Model Based Control - Methodology ** Model Based Control - Methodology
<<sec:model_based_control_methodology>> <<sec:model_based_control_methodology>>
The typical methodology when applying Model Based Control to a plant is schematically shown in Figure [[fig:control-procedure]]. The typical methodology for *Model Based Control* techniques is schematically shown in Figure [[fig:control-procedure]].
It consists of three steps: It consists of three steps:
1. *Identification or modeling*: $\Longrightarrow$ mathematical model 1. *Identification or modeling*: a mathematical model $G(s)$ representing the plant dynamics is obtained
2. *Translate the specifications into mathematical criteria*: 2. *Translate the specifications into mathematical criteria*:
- _Specifications_: Response Time, Noise Rejection, Maximum input amplitude, Robustness, ... - _Specifications_: Response Time, Noise Rejection, Maximum input amplitude, Robustness, ...
- _Mathematical Criteria_: Cost Function, Shape of TF - _Mathematical Criteria_: Cost Function, Shape of transfer function, Phase/Gain margin, Roll-Off, ...
# - Cost Function, Needed Bandwidth, Roll-off, ... 3. *Synthesis*: research of a controller $K(s)$ that satisfies the specifications for the model of the system
# - $\Longrightarrow$ We will use the $\mathcal{H}_\infty$ Norm
3. *Synthesis*: research of $K$ that satisfies the specifications for the model of the system
#+begin_src latex :file control-procedure.pdf #+begin_src latex :file control-procedure.pdf
\begin{tikzpicture} \begin{tikzpicture}
@ -125,20 +124,44 @@ It consists of three steps:
#+RESULTS: #+RESULTS:
[[file:figs/control-procedure.png]] [[file:figs/control-procedure.png]]
In this document, we will mainly focus on steps 2 and 3. In this document, we will suppose a model of the plant is available (step 1 already performed), and we will focus on steps 2 and 3.
Step 2 will be discussed in Section [[sec:modern_interpretation_specification]].
There are two main methods for the controller synthesis (step 3): In Section [[sec:open_loop_shaping]], steps 2 and 3 will be described for a control techniques called *classical (open-)loop shaping*.
- /open/ loop shaping discussed in Section [[sec:open_loop_shaping]]
- /closed/ loop shaping discussed in Sections [[sec:modern_interpretation_specification]] and [[sec:h_infinity_mixed_sensitivity]] Then, steps 2 and 3 for the *$\mathcal{H}_\infty$ Loop Shaping* of closed-loop transfer functions will be discussed in Sections [[sec:modern_interpretation_specification]], [[sec:closed-loop-shaping]] and [[sec:h_infinity_mixed_sensitivity]].
** From Classical Control to Robust Control ** From Classical Control to Robust Control
<<sec:comp_classical_modern_robust_control>> <<sec:comp_classical_modern_robust_control>>
Many different model based control techniques have been developed since the birth of /classical control theory/ in the '30s.
*Classical control* methods were developed starting from 1930 based on tools such as the Laplace and Fourier transforms.
It was then natural to study systems in the frequency domain using tools such as the Bode and Nyquist plots.
Controllers were manually tuned to optimize criteria such as control bandwidth, gain and phase margins.
The '60s saw the development of control techniques based on a state-space.
Linear algebra and matrices were used instead of the frequency domain tool of the class control theory.
This allows multi-inputs multi-outputs systems to be easily treated.
Kalman introduced the well known /Kalman estimator/ as well the notion of optimality by minimizing quadratic cost functions.
This set of developments is loosely termed *Modern Control* theory.
By the 1980's, modern control theory was shown to have some robustness issues and to lack the intuitive tools that the classical control methods were offering.
This led to a new control theory called *Robust control* that blends the best features of classical and modern techniques.
This robust control theory is the subject of this document.
The three presented control methods are compared in Table [[tab:comparison_control_methods]].
Note that in parallel, there have been numerous other developments, including non-linear control, adaptive control, machine-learning control just to name a few.
#+name: tab:comparison_control_methods #+name: tab:comparison_control_methods
#+caption: Table summurazing the main differences between classical, modern and robust control #+caption: Table summurazing the main differences between classical, modern and robust control
| | *Classical Control* | *Modern Control* | *Robust Control* |
| <l> | <c> | <c> | <c> | | <l> | <c> | <c> | <c> |
| | *Classical Control* | *Modern Control* | *Robust Control* |
|-------------------------+------------------------------------+--------------------------------------+-------------------------------------------------------------------------| |-------------------------+------------------------------------+--------------------------------------+-------------------------------------------------------------------------|
| *Date* | 1930- | 1960- | 1980- | | *Date* | 1930- | 1960- | 1980- |
|-------------------------+------------------------------------+--------------------------------------+-------------------------------------------------------------------------| |-------------------------+------------------------------------+--------------------------------------+-------------------------------------------------------------------------|
@ -147,6 +170,7 @@ There are two main methods for the controller synthesis (step 3):
| | Bode Plots | | Open/Closed Loop Shaping | | | Bode Plots | | Open/Closed Loop Shaping |
| | Phase and Gain margins | | Weighting Functions | | | Phase and Gain margins | | Weighting Functions |
| | | | Disk margin | | | | | Disk margin |
| | | | Singular Value Decomposition |
|-------------------------+------------------------------------+--------------------------------------+-------------------------------------------------------------------------| |-------------------------+------------------------------------+--------------------------------------+-------------------------------------------------------------------------|
| *Control Architectures* | Proportional, Integral, Derivative | Full State Feedback, LQR | General Control Configuration | | *Control Architectures* | Proportional, Integral, Derivative | Full State Feedback, LQR | General Control Configuration |
| | Leads, Lags | Kalman Filters, LQG | Generalized Plant | | | Leads, Lags | Kalman Filters, LQG | Generalized Plant |
@ -159,6 +183,7 @@ There are two main methods for the controller synthesis (step 3):
|-------------------------+------------------------------------+--------------------------------------+-------------------------------------------------------------------------| |-------------------------+------------------------------------+--------------------------------------+-------------------------------------------------------------------------|
| *Disadvantages* | Manual Method | No Guaranteed Robustness | Required knowledge of specific tools | | *Disadvantages* | Manual Method | No Guaranteed Robustness | Required knowledge of specific tools |
| | Only SISO | Difficult Rejection of Perturbations | Need a reasonably good model of the system | | | Only SISO | Difficult Rejection of Perturbations | Need a reasonably good model of the system |
| | No clear way to limit input usage | | |
#+begin_src latex :file robustness_performance.pdf #+begin_src latex :file robustness_performance.pdf
\begin{tikzpicture} \begin{tikzpicture}
@ -229,17 +254,23 @@ There are two main methods for the controller synthesis (step 3):
\end{tikzpicture} \end{tikzpicture}
#+end_src #+end_src
#+name: fig:robustness_performance # #+name: fig:robustness_performance
#+caption: Comparison of the performance and robustness of classical control methods, modern control methods and robust control methods. The required information on the plant to succesfuly apply each of the control methods are indicated by the colors. # #+caption: Comparison of the performance and robustness of classical control methods, modern control methods and robust control methods. The required information on the plant to succesfuly apply each of the control methods are indicated by the colors.
#+RESULTS: # #+RESULTS:
[[file:figs/robustness_performance.png]] # [[file:figs/robustness_performance.png]]
** Example System ** Example System
<<sec:example_system>> <<sec:example_system>>
Let's consider the model shown in Figure [[fig:mech_sys_1dof_inertial_contr]]. Throughout this document, multiple examples and practical application of presented control strategies will be provided.
It could represent a suspension system with a payload to position or isolate using an force actuator and an inertial sensor. Most of them will be applied on a physical system presented in this section.
The notations used are listed in Table [[tab:example_notations]].
This system is shown in Figure [[fig:mech_sys_1dof_inertial_contr]].
It could represent an active suspension stage supporting a payload.
The /inertial/ motion of the payload is measured using an inertial sensor and this is feedback to a force actuator.
Such system could be used to actively isolate the payload (disturbance rejection problem) or to make it follow a trajectory (tracking problem).
The notations used on Figure [[fig:mech_sys_1dof_inertial_contr]] are listed and described in Table [[tab:example_notations]].
#+begin_src latex :file mech_sys_1dof_inertial_contr.pdf #+begin_src latex :file mech_sys_1dof_inertial_contr.pdf
\begin{tikzpicture} \begin{tikzpicture}
@ -319,7 +350,7 @@ You can follow this generic procedure:
#+HTML: </details> #+HTML: </details>
#+end_exercice #+end_exercice
Having obtained $G(s)$ and $G_d(s)$, we can transform the system shown in Figure [[fig:mech_sys_1dof_inertial_contr]] into a classical feedback form as shown in Figure [[fig:open_loop_shaping]]. Having obtained $G(s)$ and $G_d(s)$, we can transform the system shown in Figure [[fig:mech_sys_1dof_inertial_contr]] into a classical feedback architecture as shown in Figure [[fig:open_loop_shaping]].
#+begin_src latex :file classical_feedback_test_system.pdf #+begin_src latex :file classical_feedback_test_system.pdf
\begin{tikzpicture} \begin{tikzpicture}
@ -341,7 +372,7 @@ Having obtained $G(s)$ and $G_d(s)$, we can transform the system shown in Figure
#+end_src #+end_src
#+name: fig:classical_feedback_test_system #+name: fig:classical_feedback_test_system
#+caption: Block diagram corresponding to the example system #+caption: Block diagram corresponding to the example system of Figure [[fig:mech_sys_1dof_inertial_contr]]
#+RESULTS: #+RESULTS:
[[file:figs/classical_feedback_test_system.png]] [[file:figs/classical_feedback_test_system.png]]
@ -353,12 +384,14 @@ Let's define the system parameters on Matlab.
m = 10; % Mass [kg] m = 10; % Mass [kg]
#+end_src #+end_src
And now the system dynamics $G(s)$ and $G_d(s)$ (their bode plots are shown in Figures [[fig:bode_plot_example_afm]] and [[fig:bode_plot_example_Gd]]). And now the system dynamics $G(s)$ and $G_d(s)$.
#+begin_src matlab +n -r #+begin_src matlab +n -r
G = 1/(m*s^2 + c*s + k); % Plant G = 1/(m*s^2 + c*s + k); % Plant
Gd = (c*s + k)/(m*s^2 + c*s + k); % Disturbance Gd = (c*s + k)/(m*s^2 + c*s + k); % Disturbance
#+end_src #+end_src
The Bode plots of $G(s)$ and $G_d(s)$ are shown in Figures [[fig:bode_plot_example_afm]] and [[fig:bode_plot_example_Gd]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(0, 3, 1000); freqs = logspace(0, 3, 1000);