424 cours 21/03

This commit is contained in:
Pierre-antoine Comby 2019-03-22 09:47:33 +01:00
parent 5aeb2021b4
commit 1e42bf08bd
2 changed files with 178 additions and 99 deletions

View file

@ -95,7 +95,7 @@ Si $x_2 \neq 0$, alors $\Delta(x) = vect\{(\vect{x_1 \\ x_2 \\ 2},\vect{1 \\ 1 \
Soit le système non-linéaire (1) (affine en la commande) Soit le système non-linéaire (1) (affine en la commande)
\[ \dot{x} = f(x) + g(x)u = f(x) + \sum_{i=1}^m g_i(x) u_i, \quad x \in \R^n \text{ et }u \in \R^m \] \[ \dot{x} = f(x) + g(x)u = f(x) + \sum_{i=1}^m g_i(x) u_i, \quad x \in \R^n \text{ et }u \in \R^m \]
\begin{defin}[Commandabilité] \begin{defin}
Un système est\emph{ commandable} ssi $\forall x \in \R^n, \exists u$ tel que $x$ est atteignable dans un temps fini. Un système est\emph{ commandable} ssi $\forall x \in \R^n, \exists u$ tel que $x$ est atteignable dans un temps fini.
\end{defin} \end{defin}
@ -137,25 +137,32 @@ Soit $\nabla \mathcal{V}$ l'ensemble des différentielles (gradient) des éléme
\end{defin} \end{defin}
\begin{thm}[Théorème d'observabilité] \begin{thm}[Théorème d'observabilité]
Le système (2) est localement observable en $x_0$ si $dim \nabla \mathcal{V}(x_0) = n$ et il est observable si $\forall x \in \R^n, dim \nabla \mathcal{V}(c) = n$ Le système (2) est localement observable en $x_0$ si $\dim \nabla \mathcal{V}(x_0) = n$ et il est observable si $\forall x \in \R^n, \dim \nabla \mathcal{V}(c) = n$
\end{thm} \end{thm}
\begin{example}[linéaire] \begin{exemple}[Cas linéaire]
\begin{align*} \begin{align*}
\dot{x} & = Ax + Bu = f(x) + g(x)u\\ \dot{x} & = Ax + Bu = f(x) + g(x)u\\
y & = Cx = h(x) y & = Cx = h(x)
\end{align*} \end{align*}
\begin{align*} \begin{align*}
\mathcal{V} & = \{ h(x), L_fh(x), L_gh, L^2_fh ,L_g^2h , L_fL_gh , L_gL_fh \dots \} \\ \mathcal{O} = &\{ h(x), L_fh(x), L_gh,
\mathcal{V} & = \{ Cx, C.Ax (=L_fh(x)), C.B (=L_gh), CA^2x (=L^2_fh) ,0 (=L_g^2h) , 0 (=L_fL_gh) , CAB (=L_gL_fh) \dots \} \\ L^2_fh ,L_g^2h , L_fL_gh ,
\nabla \mathcal{V} & = \{ C , CA , 0 CA^2 , 0 , 0 , 0 \dots \} \\ L_gL_fh \dots \} \\
dim \nabla \mathcal{V} & = rang \vect{ C \\ CA \\ CA^2 \\ \vdots \\ CA^{n-1}} \quad \text{Critère de Kalman} \mathcal{O} = &\{ Cx, C.Ax (=L_fh(x)), \\
& C.B (=L_gh), CA^2x (=L^2_fh), \\
& 0 (=L_g^2h) , 0 (=L_fL_gh) , \\
& CAB (=L_gL_fh) \dots \} \\
\nabla \mathcal{O} = &\{ C , CA , 0 ,CA^2 , 0 , 0 , 0 \dots \} \\
\end{align*} \end{align*}
\end{example} \[
\dim \nabla \mathcal{O} = {\rm rg} \vect{ C \\ CA \\ CA^2 \\ \vdots \\ CA^{n-1}} \quad \text{Critère de Kalman}
\]
\end{exemple}
\begin{rem} \begin{rem}
l'action de la commande intervient dans l'observabilité. Cette contrainte est écartée dnas le cas linéaire. l'action de la commande intervient dans l'observabilité. Cette contrainte est écartée dans le cas linéaire.
\end{rem} \end{rem}
\end{document} \end{document}

View file

@ -1,28 +1,36 @@
\documentclass[main.tex]{subfiles} \documentclass[main.tex]{subfiles}
\begin{document} \begin{document}
\section{Commande par bouclage linéarisant}
Principe : se ramener à un comportement linéaire Dans la suite du chapitre on étudiera le modèle suivant : Affine en la commande
%\img{0.5}{5/1} \[(\Sigma)
\subsection{Linéarisation entrées-sorties}
Cas SISO : $u\in \R$ et $y\in\R$
Soit le système NL (1) (affine en la commande) :
\[
\begin{cases} \begin{cases}
\dot{x} & = f(x) + g(x) u\\ \dot{x} & = f(x) + g(x) u\\
y & = h(x) y & = h(x)
\end{cases} \end{cases}
\] \]
\section{Commande par bouclage linéarisant}
\begin{figure}[H]
\centering
\includegraphics[width=0.7\textwidth]{5/1.png}
\caption{Principe du bouclage linéarisant}
\end{figure}
% \img{0.5}{5/1} A rajouter !
Figure a rajouter
\subsection{Linéarisation entrées-sorties}
On se place dans le cas SISO: $u\in \R$ et $y\in\R$
\begin{defin}[degré relatif] \begin{defin}
Le degré relatif $r$ du système (1) est défini par : Le\emph{ degré relatif} $r$ du système $(\Sigma)$ est défini par $r \in \N$ tel que
\[ r \in \N \text{ tq } L_gL_f^{r-1}h(x) \neq 0 \text{ et } \forall k < r-1, L_gL_f^{k}h(x) = 0\] \[
\begin{cases}
L_gL_f^{r-1}h(x) &\neq 0\\
L_gL_f^{k}h(x) &= 0 \quad \forall k < r-1
\end{cases}
\]
\end{defin} \end{defin}
\subsection{Procédure de linéarisation} \subsubsection{Procédure de linéarisation}
On cherche $r$ par le calcul des dérivées successives de $y=h(x)$ : On cherche $r$ par le calcul des dérivées successives de $y=h(x)$ :
\begin{align*} \begin{align*}
\dot{y} & = \derivp[h(x)]{x} \dot{x}\\ \dot{y} & = \derivp[h(x)]{x} \dot{x}\\
@ -33,11 +41,17 @@ On cherche $r$ par le calcul des dérivées successives de $y=h(x)$ :
& = \derivp[L_fh(x)]{x}f(x) + \derivp[L_fh(x)]{x}g(x)u \\ & = \derivp[L_fh(x)]{x}f(x) + \derivp[L_fh(x)]{x}g(x)u \\
& = L^2_fh(x) + L_gL_fh(x)u & = L^2_fh(x) + L_gL_fh(x)u
\intertext{Si $L_gL_fh(x) \neq 0$, alors $r=2$. Sinon on continue...} \intertext{Si $L_gL_fh(x) \neq 0$, alors $r=2$. Sinon on continue...}
y^{(r)} & = L_f^rh(x) + L_gL_f^{r-1}h(x)u y^{(r)} & = L_f^rh(x) + L_gL_f^{r-1}h(x)u
\intertext{On a $1 \leq r \leq n$ car la procédure utilise la base canonique ($x_1=y,x_2=\dot{y}$) : la commande doit apparaître au maximum à la $n$-ième dérivée.}
\intertext{On pose $v=y^{(r)} = L_f^rh(x) + L_gL_f^{r-1}h(x)u$}
u & = (L_gL_f^{r-1}h(x))^{-1}(v-L_f^rh(x))
\end{align*} \end{align*}
\begin{rem}
On a $1 \leq r \leq n$ car la procédure utilise la base canonique ($x_1=y,x_2=\dot{y}$) : la commande doit apparaître au maximum à la $n$-ième dérivée.
\end{rem}
On pose $v=y^{(r)} = L_f^rh(x) + L_gL_f^{r-1}h(x)u \ne 0$ Alors:
\[
u = (L_gL_f^{r-1}h(x))^{-1}(v-L_f^rh(x))
\]
\[ \[
u = \alpha(x) + \beta(x)v , \text{ avec } u = \alpha(x) + \beta(x)v , \text{ avec }
\begin{cases} \begin{cases}
@ -51,9 +65,9 @@ La nouvelle entrée de commande est $v$ telle que
$u = \alpha(x) + \beta(x)v$ est le bouclage linéarisant statique car à un instant fixé, la linéarisation ne dépend que de $x$ à cet instant.\\ $u = \alpha(x) + \beta(x)v$ est le bouclage linéarisant statique car à un instant fixé, la linéarisation ne dépend que de $x$ à cet instant.\\
\underline{Cas $r=n$} \subsubsection{Cas $r=n$}
\begin{multicols}{2} \begin{minipage}[t]{0.5\linewidth}
Choix de la base : Choix de la base :
\begin{align*} \begin{align*}
z_1 & = y = h(x) \\ z_1 & = y = h(x) \\
@ -62,58 +76,82 @@ z_3 & = \ddot{y} = L_g^2h(x) \Rightarrow \dot{z_2} = z_3 \\
\vdots \\ \vdots \\
y^{(n)} & = \dot{z_n} = L_f^nh(x) + L_gL_f^{n-1}h(x)u = v y^{(n)} & = \dot{z_n} = L_f^nh(x) + L_gL_f^{n-1}h(x)u = v
\end{align*} \end{align*}
\end{minipage}
\begin{minipage}[t]{0.5\linewidth}
Nouveau modèle : Nouveau modèle :
\begin{align*} \begin{align*}
\dot{z_1} & = z_2 \\ \dot{z_1} & = z_2 \\
\vdots \\ &\vdots \\
&\vdots\\
\dot{z_{n-1}} & = z_n \\ \dot{z_{n-1}} & = z_n \\
\dot{z_n} & = a(z) + b(z)u = v \dot{z_n} & = a(z) + b(z)u = v
\end{align*} \end{align*}
donc \[ u = \frac{v-a(z)}{b(z)} \text{ avec } b(z) \neq 0 \] \end{minipage}
\end{multicols}
On a donc la commande suivante :\[ u = \frac{v-a(z)}{b(z)} \text{ avec } b(z) \neq 0 \]
Qui nécessite le changement de base des variables d'états :
\[ z = \phi(x) = \vect{\phi_1(x) \\ \vdots \\ \phi_n(x)} = \vect{ h(x) \\ L_fh(x) \\ \vdots \\ L_f^{n-1}h(x)} \] \[ z = \phi(x) = \vect{\phi_1(x) \\ \vdots \\ \phi_n(x)} = \vect{ h(x) \\ L_fh(x) \\ \vdots \\ L_f^{n-1}h(x)} \]
\[ u = \alpha(x)+\beta(x)v \text{ avec } \alpha(x) = -\frac{a(z)}{b(z)}|_{z=\phi(x)} \text{ et } \beta(x) = \frac{1}{b(z)}|_{z=\phi(x)} \] \[ u = \alpha(x)+\beta(x)v \text{ avec } \alpha(x) = -\frac{a(z)}{b(z)}|_{z=\phi(x)} \text{ et } \beta(x) = \frac{1}{b(z)}|_{z=\phi(x)} \]
Schéma blocs : \begin{figure}[H]
%\img{0.5}{5/2} \centering
\includegraphics[width=0.7\textwidth]{5/2.png}
\caption{Forme normale}
\end{figure}
Modèle linéaire : \subsubsection{Cas $r<n$}
\begin{align*}
z_1 &= y\\
z_2 &= \dot{z_1} \\
& \vdots \\
\dot{z_r} &= L_g^rh+L_gL_f^{r-1}h u = v
\end{align*}
Alors on complete les variables d'état avec le vecteur$ \eta\in\R^{n-r}$ tel que:
\[ \[
\begin{cases}\dot{z} & = Az + Bv \\ y & = Cz \end{cases} \text{ avec } A = \left[ \begin{array}{ccccc} \dot{\eta}=q(\eta,z,v,\dot{v},...)
0 & 1 & 0 & \dots & 0 \\
\vdots & \ddots & \ddots & \ddots & \vdots \\
\vdots & & \ddots & \ddots & 0 \\
0 & \dots & \dots & 0 & 1 \\
0 & \dots & \dots & \dots & 0
\end{array} \right], \quad B = \vect{ 0 \\ \vdots \\ 0 \\ 1 } \text{ et } C = [1 \quad 0 \dots 0 ]
\] \]
Synthèse du correcteur linéaire :
%\img{0.5}{5/3}
Planification de trajectoire :
\[ y^{(n)} = v = y_c^{(n)} + a_1 (y_v^{n-1)} - y^{(n-1)})+ \dots + a_{n-1}(\dot{y_c} - \dot{y}) + a_n(y_c-y) \]
Les $a_i$ sont choisis en imposant la dynamique de $\epsilon=y-y_c$ :
\[ \epsilon^{(n)} + a_1 \epsilon^{(n-1)} + \dots + a_{n-1}\dot{\epsilon} + a_n\epsilon = 0 \]
Matrice d'évolution de la boucle fermée :
\[ A_{BF} = \left[ \begin{array}{ccccc}
0 & 1 & 0 & \dots & 0 \\
\vdots & \ddots & \ddots & \ddots & \vdots \\
\vdots & & \ddots & \ddots & 0 \\
0 & \dots & \dots & 0 & 1 \\
-a_n & -a_{n-1} & \dots & \dots & -a_1
\end{array} \right] \quad \text{Forme canonique}
\]
\begin{rem} \begin{rem}
Cette méthode est assez simple. Cependant, il faut accéder aux dérivées successives de la sortie. Si on a des capteurs, alors OK, mais calculer une dérivée numérique n'est pas génial. La dynamique de $\eta$ n'est pas linéaire (contrairement à $z$), pour appliquer la commande désirée il faut s'assurer que la dynamique de $\eta$ est stable car elle sera non observable par $y$.
On peux faire une analogie avec la compensation de pôles, qui n'est possible que si le pôle compensé est stable. En cachant la dynamique associée à ses poles ils ne sont plus observables
\end{rem} \end{rem}
\subsection*{Linéarisation entrée-états} \begin{rem}\emph{ À clarifier }
Ainsi on défini la dynamique des zéros. Le système commandé est en régime stationnaire :
\[
\dot{v}=0 y=0 ..
\]
La dynamique des zéro est celle $\dot{\eta} =q(\eta,0,v)$. Puisque la commande est linéaire on aussi prendre $v=0$
\subsection{Dynamique des zéros}
\begin{defin}
C'est la dynamique interne pour une sortie identiquement nulle.
Ainsi, $y = 0 = z_1 \Rightarrow \dot{z_1} = \dot{z_2} = \dot{z_r} = v = 0$ et $u = -\frac{a(z)}{b(z)}$
La dynamique restante
\begin{align*}
&\left\lbrace
\begin{array}{cc}
\dot{z_{r+1}} & = q_{r+1}(z) \\
\vdots \\
\dot{z_n} = q_n(z)
\end{array}\right. \text{} z = (0,z_{r+1},\dots z_n)^T = (0,\text{ et }a)^T\\
& \left\lbrace
\begin{array}{cc}
\dot{\eta_1} & = q_{r+1}(0,\eta) \\
\vdots \\
\dot{\eta_{n-r}} & = q_n(0,\eta)
\end{array} \right. \text{ avec } u = \frac{-a(0,\eta)}{b(0,\eta)}
\end{align*}
\end{defin}
\begin{rem}
Si $r<n$, le système comporte une dynamique des zéros. Dans le cas ou la dynamique des zéros est instable, on peux chercher à trouver une transformation pour linéariser le modèle entrée-états.
\end{rem}
\subsection{Linéarisation entrée-états}
On ne dispose pas d'une sortie $y=h(x)$ donc on essaye de trouver une sortie "fictive".\\ On ne dispose pas d'une sortie $y=h(x)$ donc on essaye de trouver une sortie "fictive".\\
@ -122,9 +160,16 @@ Problème : trouver le bon changement de base $z_1 = \phi_1(x)$ qui remplace $z_
$\phi$ est un difféomorphisme, i.e. bijectif et différentiable, de même pour la réciproque.\\ $\phi$ est un difféomorphisme, i.e. bijectif et différentiable, de même pour la réciproque.\\
\begin{defin} \begin{thm}
Le système $\dot{x} = f(x) + g(x)u$ (1) est linéarisable entrée-états si il existe une région $\Omega \in \R^n$, un difféomorphisme $\phi:\Omega\rightarrow\R^n$ et un retour d'état $u=\alpha(x) + \beta(x)v$ tels que le nouveau vecteur d'état est $z=\phi(x)$ et la nouvelle entrée est $v$ avec $\dot{z} = Az+Bv$, $A$ matrice d'évolution $\in \R^{m \times n}$. Le système $\dot{x} = f(x) + g(x)u$ (1) est \emph{linéarisable entrée-états} si
\end{defin} \begin{itemize}
\item il existe une région $\Omega \in \R^n$, un difféomorphisme $\phi:\Omega\rightarrow\R^n$
\item et un retour d'état $u=\alpha(x) + \beta(x)v$ tels que le nouveau vecteur
d'état est $z=\phi(x)$
\item et la nouvelle entrée est $v$ avec $\dot{z} = Az+Bv$,
$A$ est la matrice d'évolution $\in \R^{m \times n}$.
\end{itemize}
\end{thm}
En s'inspirant de la linéarisation entrée-sortie, on simplifie la recherche de $\phi(x)$ par celle de $\phi_1(x)=z_1$ et le reste des transformations est obtenu par la forme canonique (forme normale). En s'inspirant de la linéarisation entrée-sortie, on simplifie la recherche de $\phi(x)$ par celle de $\phi_1(x)=z_1$ et le reste des transformations est obtenu par la forme canonique (forme normale).
@ -150,8 +195,8 @@ $\begin{cases}
L_g L_f^{n-1} \phi_1(x) & \neq 0 \\ L_g L_f^{n-1} \phi_1(x) & \neq 0 \\
\end{cases} $ ? \end{cases} $ ?
\begin{defin}[Distribution de champs de vecteurs] \begin{defin}
L'application $\Delta(x)$ est une distribution de champs de vecteurs sur $\Omega$ si $\forall x \in \Omega, \Delta(x)$ est un sous-espace vectoriel. L'application $\Delta(x)$ est une\emph{ distribution de champs de vecteurs} sur $\Omega$ si $\forall x \in \Omega, \Delta(x)$ est un sous-espace vectoriel.
\end{defin} \end{defin}
\begin{exemple} \begin{exemple}
@ -268,32 +313,6 @@ z_2 & = L_f \phi_1 = CAx \\
\end{align*} \end{align*}
\end{rem} \end{rem}
\subsection{Dynamique des zéros}
\begin{defin}
C'est la dynamique interne pour une sortie identiquement nulle.
Ainsi, $y = 0 = z_1 \Rightarrow \dot{z_1} = \dot{z_2} = \dot{z_r} = v = 0$ et $u = -\frac{a(z)}{b(z)}$
La dynamique restante
\begin{align*}
&\left\lbrace
\begin{array}{cc}
\dot{z_{r+1}} & = q_{r+1}(z) \\
\vdots \\
\dot{z_n} = q_n(z)
\end{array}\right. \text{} z = (0,z_{r+1},\dots z_n)^T = (0,\text{ et }a)^T\\
& \left\lbrace
\begin{array}{cc}
\dot{\eta_1} & = q_{r+1}(0,\eta) \\
\vdots \\
\dot{\eta_{n-r}} & = q_n(0,\eta)
\end{array} \right. \text{ avec } u = \frac{-a(0,\eta)}{b(0,\eta)}
\end{align*}
\end{defin}
\begin{rem}
Si $r<n$, le système comporte une dynamique des zéros.
\end{rem}
\subsection{Système à déphasage minimal} \subsection{Système à déphasage minimal}
\begin{defin}[Cas linéaire] \begin{defin}[Cas linéaire]
@ -327,7 +346,7 @@ Le degré relatif $r$ dans le cas MIMO est défini comme $r=r_1+\dots+r_p$ si $r
\[ \exists j =1\dots m, L_{g_j}L_f^{r_i-1} h_i(x) \neq 0\] \[ \exists j =1\dots m, L_{g_j}L_f^{r_i-1} h_i(x) \neq 0\]
\end{defin} \end{defin}
\subsection{Procédure de linéarisation} \subsubsection{Procédure de linéarisation}
Sans perte de généralité, on pose $m=p$. Calculons les dérivées successives des sorties : Sans perte de généralité, on pose $m=p$. Calculons les dérivées successives des sorties :
\[ \[
\vect{ y_1^{(r_1)} \\ \vdots \\ y_p^{(r_p)}} = \vect{ y_1^{(r_1)} \\ \vdots \\ y_p^{(r_p)}} =
@ -795,3 +814,56 @@ Ainsi on vérifie la condition d'existence du régime glissant, alors quand la t
%%% mode: latex %%% mode: latex
%%% TeX-master: "main" %%% TeX-master: "main"
%%% End: %%% End:
% A refaire complètement avant entree-état
% \subsubsection{Modèle linéaire :}
% \[
% \begin{cases}
% \dot{z} & = Az + Bv \\
% y & = Cz
% \end{cases}
% \text{ avec }
% A = \left[
% \begin{array}{ccccc}
% 0 & 1 & 0 & \dots & 0 \\
% \vdots & \ddots & \ddots & \ddots & \vdots \\
% \vdots & & \ddots & \ddots & 0 \\
% 0 & \dots & \dots & 0 & 1 \\
% -a_0 & \dots & \dots & \dots & -a_{n-1}
% \end{array} \right],
% \quad B = \vect{ 0 \\ \vdots \\ 0 \\ 1 }
% \text{ et } C = [1 \quad 0 \dots 0 ]
% \]
% Synthèse du correcteur linéaire :
% % \img{0.5}{5/3}
% \begin{figure}[H]
% \centering
% \includegraphics[width=0.7\textwidth]{5/3.png}
% \caption{}
% \end{figure}
% Planification de trajectoire :
% \[ y^{(n)} = v = y_c^{(n)} + a_1 (y_v^{n-1)} - y^{(n-1)})+ \dots + a_{n-1}(\dot{y_c} - \dot{y}) + a_n(y_c-y) \]
% Les $a_i$ sont choisis en imposant la dynamique de $\epsilon=y-y_c$ :
% \[ \epsilon^{(n)} + a_1 \epsilon^{(n-1)} + \dots + a_{n-1}\dot{\epsilon} + a_n\epsilon = 0 \]
% Matrice d'évolution de la boucle fermée :
% \[ A_{BF} = \left[ \begin{array}{ccccc}
% 0 & 1 & 0 & \dots & 0 \\
% \vdots & \ddots & \ddots & \ddots & \vdots \\
% \vdots & & \ddots & \ddots & 0 \\
% 0 & \dots & \dots & 0 & 1 \\
% -a_n & -a_{n-1} & \dots & \dots & -a_1
% \end{array} \right] \quad \text{Forme canonique}
% \]
% \begin{rem}
% Cette méthode est assez simple. Cependant, il faut accéder aux dérivées successives de la sortie. Si on a des capteurs, alors OK, mais calculer une dérivée numérique n'est pas génial.
% \end{rem}