Commit 521d8ab9 authored by Pierre-antoine Comby's avatar Pierre-antoine Comby

424 , mise en forme du dernier cours

parent faead4e3
\documentclass[main.tex]{subfiles}
\begin{document}
\section{Commande par bouclage linéarisant}
Principe : se ramener à un comportement linéaire
%\img{0.5}{5/1}
\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}
\dot{x} & = f(x) + g(x) u\\
y & = h(x)
\end{cases}
\]
\begin{defin}[degré relatif]
Le degré relatif $r$ du système (1) est défini par :
\[ 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\]
\end{defin}
\subsection{Procédure de linéarisation}
On cherche $r$ par le calcul des dérivées successives de $y=h(x)$ :
\begin{align*}
\dot{y} & = \derivp[h(x)]{x} \dot{x}\\
& = \derivp[h(x)]{x}(f(x)+g(x)u) \\
& = L_fh(x) + L_gh(x)u
\intertext{Si $L_gh(x)\neq0$, alors $r=1$. Sinon on continue la procédure :}
y^{(2)} & = \derivp[L_fh(x)]{x}\dot{x} \\
& = \derivp[L_fh(x)]{x}f(x) + \derivp[L_fh(x)]{x}g(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...}
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*}
\[
u = \alpha(x) + \beta(x)v , \text{ avec }
\begin{cases}
\alpha(x) & = -(L_gL_f^{r-1}h(x))^{-1}L_f^rh(x) \\
\beta(x) & = (L_gL_f^{r-1}h(x))^{-1}
\end{cases}
\]
La nouvelle entrée de commande est $v$ telle que
\[ \begin{cases} \dot{x} & = f(x) + g(x)\alpha(x) + g(x)\beta(x)v \\ y & = h(x) \end{cases} \]
$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$}
\begin{multicols}{2}
Choix de la base :
\begin{align*}
z_1 & = y = h(x) \\
z_2 & = \dot{y} = L_fh(x) \Rightarrow \dot{z_1} = z_2 \\
z_3 & = \ddot{y} = L_g^2h(x) \Rightarrow \dot{z_2} = z_3 \\
\vdots \\
y^{(n)} & = \dot{z_n} = L_f^nh(x) + L_gL_f^{n-1}h(x)u = v
\end{align*}
Nouveau modèle :
\begin{align*}
\dot{z_1} & = z_2 \\
\vdots \\
\dot{z_{n-1}} & = z_n \\
\dot{z_n} & = a(z) + b(z)u = v
\end{align*}
donc \[ u = \frac{v-a(z)}{b(z)} \text{ avec } b(z) \neq 0 \]
\end{multicols}
\[ 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)} \]
Schéma blocs :
%\img{0.5}{5/2}
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 \\
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}
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}
\subsection*{Linéarisation entrée-états}
On ne dispose pas d'une sortie $y=h(x)$ donc on essaye de trouver une sortie "fictive".\\
Problème : trouver le bon changement de base $z_1 = \phi_1(x)$ qui remplace $z_1=y=h(x)$ :
\[ z = \vect{z_1 \\ \vdots \\ z_n} = \vect{\phi_1(x) \\ \vdots \\ \phi_n(x)} = \phi(x) \]
$\phi$ est un difféomorphisme, i.e. bijectif et différentiable, de même pour la réciproque.\\
\begin{defin}
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}$.
\end{defin}
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).
\begin{align*}
z_2 & = \phi_2(x) \\
& = \dot{z_1} = \dot{\phi_1}(x) \\
& = \derivp[\phi_1(x)]{x}f(x) + \derivp[\phi_1(x)]{x}g(x)u \\
& = L_f\phi_1(x) + L_g\phi_1(x)u \text{ avec } L_g\phi_1(x) = 0 \\
z_3 & = L_f^2 \phi_1(x) \text{ avec } L_gL_f\phi_1(x) = 0 \\
\phi(x) & = \vect{\phi_1(x) \\ L_f\phi_1(x) \\ \vdots \\ L_f^{n-1} \phi_1(x)} \text{ avec } L_gL_f^j \phi_1(x) = 0, j = 0,\dots n-2
\end{align*}
Or, $ L_gL_f^j \phi_1(x) = 0, j = 0,\dots n-2 \Leftrightarrow L_{ad_f^j g} \phi_1(x) = 0 $ car
\begin{align*}
L_g(L_g\phi_1) - L_g(L_f\phi_1)) & = L_f(\derivp[\phi_1]{x}g)-L_g(\derivp[\phi_1]{x}f) \\
& = \derivp[^2\phi_1]{x^2}g.f + \derivp[\phi_1]{x}J_g.f - \derivp[^2 \phi_1]{x^2}g.f - \derivp[\phi_1]{x}J_f.g \\
0 & = L_{[f,g]}\phi_1 = L_{ad_f g} \phi_1 = 0
\end{align*}
Existe-t-il $\phi_1(x)$ tel que
$\begin{cases}
L_g L_f^j \phi_1(x) & = 0, \quad j = 0, \dots, n-2\\
L_g L_f^{n-1} \phi_1(x) & \neq 0 \\
\end{cases} $ ?
\begin{defin}[Distribution de champs de vecteurs]
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.
\end{defin}
\begin{exemple}
\[\Delta(x) = vect \left\lbrace \vect{x_1 \\ x_2 \\2}, \vect{x_1x_3 \\ x_2x_3 \\ 2x_3},\vect{x_2 \\ x_2 \\ 0} \right\rbrace \]
\begin{align*}
x_2 = 0 & \Rightarrow \Delta(x) = vect \left\lbrace \vect{x_2 \\ 0 \\ 2} \right\rbrace \\
& \Rightarrow \Delta(x) \text{ est e.v. de dim = 1} \\
x_2 \neq 0
& \Rightarrow \Delta(x) = vect \left\lbrace \vect{x_1 \\ x_2 \\ 2},\vect{1 \\ 1 \\ 0} \right\rbrace \\
& \Rightarrow \Delta(x) \text{ est un e.v. de dim = 2}
\end{align*}
$\Delta(x)$ est une distribution de champs de vecteurs.
\end{exemple}
\begin{defin}[Involution]
La distribution $\Delta$ est involutive ssi
\[\forall f,g \in \Delta, \quad [f,g] \in \Delta, \quad \text{Homogénéité est mère de vertu} \]
\end{defin}
\begin{rem}
$\Delta(x) = vect \{ f_1, \dots, f_p \}$ est une distribution involutive ssi
\[ \exists \alpha_{ij_k} : \R^n \mapsto \R \text{ tq } [f_i,f_j] = \sum_{k=1}^p \alpha_{ij_k}(x) f_k, \quad i = 1,\dots p, j = 1,\dots p\]
\end{rem}
\begin{exemple}
\[ x_2 \neq 0 \Rightarrow \Delta(x) = vect\left\lbrace \vect{x_1 \\ x_2 \\ 2}, \vect{1 \\ 1 \\ 0} \right\rbrace\]
\begin{align*}
[f_1,f_2] & = J_{f_2}f_1 - J_{f_1} f_2 \\
& =
\begin{bmatrix}
0 & 0 & 0 \\
0 & 0 & 0 \\
0 & 0 & 0
\end{bmatrix}
\vect{x_1 \\ x_2 \\ 2} -
\begin{bmatrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 0
\end{bmatrix}
\vect{ 1 \\ 1 \\ 0} \\
& = \vect{ -1 \\ -1 \\ 0} = -f_2 \in \Delta
\end{align*}
$\Delta$ est une distribution involutive pour $x_2 \neq 0$
\end{exemple}
\newcommand{\lesys}{$\dot{x}=f(x)+g(x)u, x\in\R^n, u\in\R$}
\begin{thm}[Théorème d'existence de $\phi_1$]
Soit le système \lesys.
Il existe un changement de base $z=\phi(x)$ linéarisant sur $\Omega$ tel que $\phi^T(x) = [\phi_1(x), L_f\phi_1(x) \dots L_f^{n-1} \phi_1(x) ]$ ssi :
\begin{itemize}
\item $dim(g,ad_f g, \dots ad_f^{n-1} g) = n$ (Commandabilité Kalman)
\item la distribution engendrée par $\{g, ad_f g, \dots ad_f^{n-1}g\}$ est involutive, $\forall x \in \Omega$ \footnote{Homogénéité est mère de vertu}
\end{itemize}
\end{thm}
Ainsi, la procédure de linéarisation entrée-états est réalisée via les étapes suivantes :
\begin{enumerate}
\item Construction de $E = \{ g, ad_f g, \dots, ad_f^{n-1} g \}$
\item Vérifier la commandabilité, i.e. $dim(E) = n$ (Kalman !)
\item Montrer que $\Delta(x) = vect\{E\}$ est involutif, i.e. $\exists \alpha_{ij_k}(x) : \Omega \mapsto \R$ tel que :
\[ [ad_f^i g, ad_f^j g] = \sum_{k=0}^{n-1} \alpha_{ij_k}(x).ad_f^k g, \quad i,j = 0,\dots,n-1 \]
\item Trouver $\phi_1(x)$ avec $\begin{cases}L_{ad_f^j g} \phi_1(x) & = 0, j=0,\dots n-2 \\ L_gL_f^{n-1} \phi_1(x) & \neq 0 \end{cases}$
\item Construction du nouveau vecteur d'état $z^T = \phi^T(x) = [\phi_1(x), L_f\phi_1(x) \dots L_f^{n-1} \phi_1(x) ]$
\item Linéarisation par retour d'état statique $u = \alpha(x)+\beta(x)v$, $v$ nouvelle commande du modèle linéaire, avec
\[ \alpha(x) = -\frac{L_f^n \phi_1(x)}{L_gL_f^{n-1}\phi_1(x)} \text{ et } \beta(x) = \frac{1}{L_gL_f^{n-1}\phi_1(x)} \]
\end{enumerate}
Si le degré relatif $r<n$ dimension du modèle (entrée-sortie), alors le modèle N.L est partiellement linéarisable, mais le comportement entrée-sortie est linéaire : suffisant pour la commande du système à condition que la dynamique N.L (non linéarisée par le bouclage) est stable, i.e. $||x||$ est bornée.
Ainsi en imposant :$z_1 = y = \phi_1(x)$ le modèle est sous forme normale :
\begin{align*}
& \left\lbrace
\begin{array}{cc}
\dot{z_1} & = z_2 \\
\vdots \\
\dot{z_r} & = v
\end{array}
\right. \text{ Partie linéaire, de dimension $r$, entrée-sortie }\\
& \left\lbrace
\begin{array}{cc}
\dot{z_{r+1}} & = q_{r+1}(z) \\
\vdots \\
\dot{z_n} & = q_n(z)
\end{array}
\right.
\text{ Partie N.L., de dimension $n-r$ n'influe sur la sortie}
\end{align*}
\begin{rem}
En linéaire, le degré relatif correspond à la différence entre le degré du dénominateur et du numérateur $r=n-m$.
En effet, $y^{(n)} + a_{n-1}y^{(n-1)} + \dots + a_1y ^{(1)} + a_0y = b_mu^{(m)} + \dots + b_1u^{(1)} + b_0u$ :
\[ \dd{}{t}\vect{x_1 \\ \vdots \\ x_n} = \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] \vect{x_1 \\ \vdots \\ x_n} + \vect{0 \\ \vdots \\ 0 \\ 1} u, y = (b_0, \dots b_m, 0 \dots 0) u\]
\begin{align*}
z_1 & = y = Cx \\
z_2 & = \dot{z_1} = C\dot{x} = C(Ax+Bu) \\
& = CAx + CBu
\intertext{ Si $r=0$, alors $CB = (b_0 \dots b_M, 0 \dots 0) ( 0 \dots 1)^T = b_m$ ($r=n-m$ zéros dans $C$)}
\intertext{ Si $CB = 0 = L_g\phi_1$,}
z_2 & = L_f \phi_1 = CAx \\
\dot{z_2} & = CA(Ax+Bu) = CA^2x + CAB u \Rightarrow r=1 (??)
\end{align*}
\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}
\begin{defin}[Cas linéaire]
Si les zéros sont à partie $Re<0$
\end{defin}
\begin{defin}[Cas non linéaire]
dynamique des zéros stables, i.e. à l'origine on a :
\[\left\lbrace
\begin{array}{cc}
\dot{\eta_1} & = q(0,\eta) \\
\vdots \\
\dot{\eta_{n-r}} & = q(0,\eta)
\end{array} \right. \text{ est stable} \]
Ainsi, le le système est à déphasage non minimal, on applique la linéarisation $e-s$.
\end{defin}
\subsection{Cas MIMO du bouclage linéarisant}
Le linéarisation revient à trouver la commande qui réalise la réciproque de la non-linéarité : problème inverse. Dans le cas où le problème est non inversible d'une manière statique (i.e. algébrique), la solution est de réaliser une inversion dynamique (ex : l'observateur dans le cas linéaire).\\
Soit le système non-linéaire :
\begin{align*}
\dot{x} & = f(x) + \sum_{i=1}^m g_i(x)u_i \\
y & = \vect{k_1(x) \\ \vdots \\ k_p(x)} \text{ avec } x\in\R^n,y \in \R^p \text{ et } u=\vect{u_1 \\ \vdots \\ u_m} \in \R^m
\end{align*}
\begin{defin}[Degré relatif en MIMO]
Le degré relatif $r$ dans le cas MIMO est défini comme $r=r_1+\dots+r_p$ si $r_i$ est le degré relatif associé à la sortie $y_i$ tel que :
\[ \forall j=1\dots m, L_{g_j}L_f^k h_i(x) = 0, \forall k < r_i-1\]
\[ \exists j =1\dots m, L_{g_j}L_f^{r_i-1} h_i(x) \neq 0\]
\end{defin}
\subsection{Procédure de linéarisation}
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{ L_f^{r_1} h_1(x) \\ \vdots \\ L_f^{r_p}h_p(x) } +
\begin{bmatrix}
L_{g_1}L_f^{r_1-1}h_1 & \dots & L_{g_m}L_f^{r_1 - 1} h_1 \\
\vdots & \ddots & \vdots \\
L_{g_1}L_f^{r_p-1} & \dots & L_{g_m}L_f^{r_p-1} h_p
\end{bmatrix}
\vect{u_1 \\ \vdots \\ u_m}
\]
On remarquera l'intérêt de poser $m=p$.
On note $D(x)$ la matrice $\R^{p\times m}$ (dite de découplage).
Si $D(x)$ est inversible, alors la commande linéarisante est :
\[ u(x) = D(x)^{-1}( \vect{v_1 \\ \vdots \\ v_m} - \vect{L_f^{r-1} h_1(x) \\ \vdots \\ L_f^{r_p}h_p(x)}) \]
\begin{prop}
Le système MIMO est linéarisable si $r=\sum_{i=1}^p r_i = n$ avec $D(x)$ inversible.
\end{prop}
Dans le cas où $r<n$, alors le système MIMO est partiellement linéarisable. Ainsi, $\eta$ est le vecteur d'état des $n-r$ équations non linéaires restantes.
\[ \dot{\eta} = P(z,\eta) + Q(z,\eta) u, \text{ avec } P_k(z,\eta) = L_f \eta_k \text{ et } Q_{k,j}(z,\eta) = L_{g_j}\eta_k, k = 1 \dots n-r, j = 1 \dots m \]
Ainsi la dynamique interne, i.e. dynamique des zéros
\[ \dot{\eta} = P(\underline{0},\eta)+Q(\underline{0},\eta)u(\underline{0},\eta) \text{ avec } u(\underline{0},\eta) = -D^{-1}(\underline{0},\eta)\vect{L_f^{r_1}h_1(\underline{0},\eta) \\ \vdots \\ L_f^{r_p}H_p(\underline{0},\eta)} \]
doit être stable.
Si $D(x)$ n'est pas inversible alors le bouclage linéarisant est dynamique :
\begin{align*}
u & = \alpha(x,q) + \beta(x,q) v \\
\dot{q} & = \gamma(x,q) + \delta(x,q) v
\end{align*}
tel que $z=\phi(x,q)$ est un difféomorphisme.\\
La procédure générique est de dériver $y_j$ au delà de $r_j$ pour obtenir $D(x,q)$ inversible.
Les dynamiques auxiliaires $q$ sont obtenues à partir des dérivées successives des commandes. Cette procédure est la linéarisation par bouclage dynamique.
\section{Poursuite de trajectoire asymptotique}
\subsection{Cas SISO}
Soit le système non-linéaire SISO (1) :
\[ \begin{cases} \dot{x} & = f(x,y) \\ y & = h(x) \end{cases} \]
Il existe une trajectoire (non unique) remplaçant le vecteur d'état $x$ par $z$ les dérivées successives de la sortie $y$.
Ainsi, on peut réécrire (1) sous forme polynomiale :
\[ P(y, \dots, y^{(n)}, u , \dots u^{(k)}) = 0 \] avec $n < \infty$ et $k< \infty$:
\[ z = \vect{ z_1 \\ \dots \\ z_n} = \vect{ y \\ \vdots \\ y^{(n-1)}} \]
Sous la condition $ \derivp[P]{y^{(n)}} \neq 0$ le modèle (1) est remplacé par la forme canonique
\begin{align*}
\dot{z_1} & = z_2\\
\vdots \\
\dot{z_n} & = C(z_1 \dots z_n, u \dots u^{(k)})
\end{align*}
On suppose la consigne $y_c$ $n$ fois dérivable par rapport au temps.
Objectif : trouver $u$ tel que $y \to y_c$ suivant une dynamique imposée.
\subsection{Procédure}
\begin{itemize}
\item On pose $\epsilon(t) = y_c(t) - y(t)$ : erreur de poursuite
\item Imposer la dynamique de poursuite : \[\epsilon^{(m)} + \beta_{m-1} \epsilon^{(m-1)} + \dots + \beta_1 \epsilon^{[1)} + \beta_0 \epsilon = 0 \] tels que $\beta_i,i=0\dots m$ sont choisis pour que le polynôme
\[ \lambda^n + \beta_{n-1} \lambda^{n-1} + \dots + \beta_1 \lambda + \beta_0 = 0 \] est Hurwitz, i.e. racines sont à parties réelles strictement négatives.
Pour $n=m$ on a
\[ y^{(m)} (t) = y_c^{(m)}(t) + \sum
_{i=1}^m \beta_{i-1}(y_c^{(i-1)}(t) - y^{(i-1)}(t)) \]
On peut aussi réécrire le modèle sous forme d'état $(\epsilon_1 = \epsilon)$ :
\begin{align*}
\dot{\epsilon_1} & = \epsilon_2 \\
\vdots \\
\dot{\epsilon_n} & = \hat{C}(y_c^{(n)}, Y_c, E , u , \dots
u^{(k)}) \text{ avec } Y_c = \vect{y_c \\ \vdots \\ y_c^{(m-1)}} \text{ et } E = \vect{\epsilon_1 \\ \vdots \\ \epsilon_n}
\end{align*}
La poursuite asymptotique revient à trouver $u$ tel que
\[\hat{C}(y_c^{(n)},Y_c,E,u,\dots u^{(k)}) = -\sum_{i=1}^n \beta_{i-1}\epsilon^{(i-1)} \Leftrightarrow C(z_1,\dots z_n,u,u^{(i)},\dots u^{(k)} = y_c^{(n)} + \sum_{i=1}^n \beta_{i-1} (y_c^{(i-1)} -z_i) \]
Dans le cas où le modèle est sous forme normale (forme obtenue pour le bouclage linéarisant) :
\begin{align*}
\dot{z_1} & = z_2, z_1 = y \\
\vdots \\
\dot{z_{r-1}} & = z_r \\
\dot{z_r} & = b(z) + a(z)u \text{ avec } a(z) \neq 0 \\
\dot{z_{r+1}} & = q_{r+1} (z) \\
\vdots \\
\dot{z_n} & = q_n(z)
\end{align*}
Si $m=r$ alors \[ u = \frac{1}{a(z)} (-b(z)+y_c^{(r)} + \sum_{i=1}^r \beta_{i-1} \epsilon^{(i-1)} \]
$y_c^{(r)}$ bouclage linéarisant statique
Si$m=r+1$ alors
\[ \dot{u} = \frac{1}{a(z)} (-\dot{b}(z) - \dot{a}(z)u + y_c^{(m)} + \sum_{i=1}^m \beta_{i-1} \epsilon^{(i-1)}) \]
$\dot{a}(z)u$ bouclage linéarisant dynamique
Même démarche pour les degrés supérieurs de la poursuite asymptotique.
\end{itemize}
%\img{0.5}{6/1}
La difficulté de la poursuite asymptotique est la résolution de l'équation dynamique NL
\[c(z_1 \dots z_n , u \dots u^{(k)} ) y_c^{(n)} - \sum_{i=1}^m \beta_{i-1} (y_c^{(i-1)} - z_i) \]
Dans le cas des systèmes plats, la solution est obtenue via les sorties plates.
\begin{defin}[Platitude]
Un système est dit plat s'il a des sorties plates. Tous les états et entrées de commande du système sont exprimés en fonction des sorties plates et d'un nombre fini de leurs dérivées.\\
\noindent Cas SISO : $\dot{x} = f(x,u)$ est plat si \[\exists y \in \R \text{ tq } x = \phi(y,y^{(1)},\dots,y^{(\beta)}) \text{ et } u=\psi(y,y^{(1)},\dots,y^{(\delta)}), \beta,\delta \in \N\]
\noindent Cas MIMO : $\dot{x} = f(x,u)$ est plat si \[\exists y \in \R^p \text{ tq } x = \phi(y_1,\dots,y_1^{(\beta_1)},\dots,y_p^{(\beta_p)}) \text{ et } u=\psi(y_1,y_1^{(\delta_1)},\dots,y_p^{(\delta_p)}), \beta_i,\delta_i \in \N\]
\end{defin}
\begin{exemple}
Montrer que le système suivant est plat avec pour sorties plates $y_1=x_1$ et $y_2=x_2$ :
\begin{align*}
\dot{x_1} & = u_2 \\
\dot{x_2} & = x_2 + x_3u_2 \\
\dot{x_3} & = x_1u_1
\intertext{ On peut donc écrire : }
x_1 & = y_1 \\
x_2 & = y_2 \\
x_3 & = \frac{\dot{y_2-y_2}}{\dot{y_1}} \\
u_2 & = \dot{y_1}\\
u_1 & = \frac{\dot{x_3}}{y_1} = \frac{(\ddot{y_2}-\dot{y_2})\dot{y_2}-\ddot{y_1}(\dot{y_2}-y_2)}{y_3(\dot{y_1})^2}
\end{align*}
\end{exemple}
Un autre intérêt de la platitude est la planification simple de trajectoire.
\begin{thm}
[Principe de la planification de trajectoire]
La planification peut comporter des contraintes sur la commande (énergie, saturation, ...) et sur les états (obstacles, limitation de vitesse, d'accélération...)
Pour les systèmes plats, la planification est réalisée sur les sorties plates $y\in\R^p$ et la commande est déduite par $u=\psi(y_1,\dots,y_p^{(\delta_p)})$
\end{thm}
\begin{exemple}
[Bras de robot avec $n$ degrés de libertés et $n$ actionneurs]
\[ M(q) \dot{q} + B(q,\dot{q}) = K(q,\dot{q}) u\]
$q$ : coordonnées généralisées $q\in\R^n$
$B(q,\dot{q})$ : vecteur des forces centrifuges et de Coriolis
$K(q,\dot{q})$ : matrice d'influence avec $rang(K)=n$
Le système est plat où $q\in\R^n$ sont les sorties plates.\\
La planification de trajectoire est réalisée sur les $q$, puis $u=K^{-1}(q,\dot{q})(M(q)\dot{q} + B(q,\dot{q}))$\\
\newpage
Commande en cassecade \footnote{Momo m'a tuer} :
%\imgt{7/1}
\[ C_0(p) = K >>1, \quad H_0(p) = \frac{H_1(p)}{1+KH_1(p)} \approx \frac{1}{K} \]
\end{exemple}
\newpage
\section{Commandes hiérarchisées}
\subsection{Échelles de temps}
Soit le système (1) $\begin{cases}\dot{x_1} & = \epsilon f_1(x_1,x_2,u) \\ \dot{x_2} & = f_2(x_1,x_2,u)\end{cases}$ avec $f_1$ et $f_2$ lisses (de classe $C^{\infty}$), avec $x_1\in\R^{n_1}$ et $x_2\in\R^{n_2}$.
On suppose que $0 < \epsilon << 1$.
On suppose $\tau = \epsilon t$ nouveau temps: $\tau$ est plus lent que $t$.
Ainsi, le système (1) dans la nouvelle échelle temporelle est donnée par
\begin{align*}
\dd{x_1}{\tau} & = f_1(x_1,x_2,u) \text{ Dynamique lente est d'ordre 0 en } 1/\epsilon \\
\dd{x_2}{\tau} & = \frac{1}{\epsilon} f_2(x_1,x_2,u) \text{ Dynamique rapide est d'ordre 1 en }1/\epsilon
\end{align*}
Ainsi, dans le cas d'un point d'équilibre stable, $x_2$ converge rapidement vers le voisinage dépendant de $\epsilon$, d'un point d'équilibre de $f_2=0$.
\subsection{Détermination du voisinage}
Pour $\epsilon = 0$, les points d'équilibre du système (1) forment la variété :
\[ \Sigma_0 = \{ (x_1,x_2,u)/ f_2(x_1,x_2,u) = 0 \} \]
alors que pour $\epsilon \neq 0$, les points d'équilibre forment la variété
\[ \Sigma_{\epsilon} = \{ (x_1,x_2,y) / f_1(x_1,x_2,u) = 0 \text{ et } f_2(x_1,x_2,y) \neq 0 \} \]
On a $\Sigma_{\epsilon} \subset \Sigma_0$ donc $\Sigma_{\epsilon}$ dégénère en $\Sigma_0$ pour $\epsilon=0$.
%\img{0.5}{7/2}
L'objectif est d'avoir seulement à faire converger $x_1 \to x_1^*$.\\
À partir du théorème des fonctions implicites, nous avons l'existence de $X_2 \text{ tq } x_2 = X_2(x_1,u)$.
\begin{defin}
On définit la variété
\[ \Sigma_{0,\epsilon} = \{ (x_1,x_2) / f_2(x_1,x_2,u,\epsilon) = 0 \} \]
avec $\dot{u} = \epsilon v$$v$ est une fonction bornée.
\end{defin}
La variété $\Sigma_{0,\epsilon}$ est obtenue à partir de $\Sigma_0$ avec une faible variation de la commande.
\begin{prop}
Soit le système (1) avec $rang(\derivp[f_2]{x_2}) = n_2$, alors $\exists X_2(x_1,u,\epsilon)$ tel que $\forall u$ vérifiant $\dot{u} = \epsilon v$, $v$ bornée, $(x_1,x_2 \in \Sigma_{0,\epsilon}$ avec $x_2 = X_2(x_1,u,\epsilon)$.
\end{prop}
Interprétation :
La variété $\Sigma_0 \Leftrightarrow x_2=X_2(x_1,u)$, obtenue pour $\epsilon=0$, continue d'exister pour $\epsilon \neq 0$ et suffisamment petit si $\dot{u}=\epsilon v$, $v$ bornée.
\begin{exemple}
[MMC]
\[
\begin{cases}
L\dd{i}{t} & = u-Ri - k\omega \text{ Dynamique électrique}\\
J\dd{\omega}{t} & = Ki - \alpha\omega -C_r \text{ Dynamique mécanique temps lent}
\end{cases}
\]
On pose $\epsilon = L << 1$, donc le temps rapide $\tau = \frac{t}{\epsilon}$\\
Identification avec le système (1) : $x_1=\omega$ et $x_2 =i$.
Pour $\epsilon=0$, $\Sigma_0$ est donnée
\[ i = \frac{u-k\omega}{R} = X_2(x_1,u) \]
Ainsi, la dynamique lente est donnée par
\[ J \dd{\omega}{\tau} = \epsilon(k(\frac{u-k\omega}{R}) - \alpha \omega - C_r) \]
En temps lent, la nouvelle expression est
\[ J \dd{\omega}{t} = -(\frac{k^2}{R}+\alpha) \omega - C_r + \frac{k}{R}u \]
On peut améliorer l'approximation de la variété $\Sigma_{0,\epsilon}$ via un DL du 1er ordre.
\[ i = \frac{u-k\omega}{R} + \frac{L}{R}(\dot{u}-\frac{k}{J}(k(\frac{u-k\omega}{R})-\alpha\omega-C_r)) + \mathcal{O}(L^2) \]
Par exemple, si on veut avoir $i_0=0$, alors $\Sigma_0 = k\omega$. Pour garder $i_0=0$ pour $\Sigma_{0,\epsilon}$, on doit imposer une variation lente de $u$ (lente par rapport à $L\dd{}{t}$
\[ \dot{u} = -\frac{k}{J}(\alpha\omega+C_r) - \mathcal{O}(L^2) \]
\end{exemple}
\begin{rem}
$C_r = -\frac{\dot{u}J}{k}$ est utilisée pour estimer $C_r$ en modulant $\dot{u}$ afin que $i_0$ reste aussi plat que possible et $\omega=0$.
\end{rem}
\subsection{Hiérarchisation par commande à grand gain}
Soit le système (1), où la commande n'intervient que sur $x_2$ linéairement :
\[
\begin{cases}
\dot{x_1} & = f_3(x_1,x_2) \\
\dot{x_2} & = f_2(x_1,x_2) + u \end{cases} , \quad x_1 \in \R^{n_1}, x_2 \in \R^{n_2}, u \in\R^{n_2}
\]
Soit $x_2^*$ la trajectoire consigne à imposer à $x_2$. Avec comme hypothèse $f_2(x_1,x_2)$ bornée, nous appliquons la commande à grand gain
\[ u = -\frac{k}{\epsilon}(x_2-x_2^*)\]
$\epsilon<< 1$ et $k$ matrice diagonale définie positive.
Ainsi, suivant la nouvelle échelle de temps $\tau = \frac{t}{\epsilon}$
\[
\begin{cases}
\dd{x_1}{\tau} & = \epsilon f_1(x_1,x_2) \quad \text{dynaique lente}\\
\dd{x_2}{\tau} & = \epsilon f_2(x_1,x_2) - k(x_2-x_2^*) \quad \text{perturbation et dynamique de convergence rapide}
\end{cases}
\]
$\Sigma_0$ est la variété $x_2 = x_2^*$.
Pour $\epsilon\neq 0$, $\Sigma_{0,\epsilon}$ est la variété $x_2=x_2^*+k\epsilon f_2(x_2,x_2^*)$
La dynamique lente est $\dd{x_1}{\tau} = \epsilon f_1(x_1,x_2^*)$. Par conséquent la consigne $x_2^*$ (commande fictive) peut servir à commander la dynamique lente.
\newpage
\section{Commande par backstepping}
Soit un système sous forme triangulaire (apparition successive des différentes commandes) :
\begin{align*}
\dot{x_1} & = f_1(x_1) + x_2 \\
\dot{x_2} & = f_2(x_1,x_2) + x_3 \\
& \vdots \\
\dot{x_n} & = f_n(x_1,\dots x_n) + u
\end{align*}
\subsection{Procédure de synthèse}
\paragraph{Étape 1} Afin d'imposer la consigne $x_1^*$, on utilise la fonction de Lyapunov
\[ V_1(x_1) = \frac{1}{2}(x_1 - x_1^*)^2 \]
Pour assurer la stabilité, il faut que $\dot{V_1}(x_1)$ soit définie négative.
\begin{align*}
\dot{V_1}(x_1) & = (x_1-x_1^*)(\dot{x_1} - \dot{x_1^*}) \\
& = (x_1 - x_1^*)(f_1(x_1) + x_2 - \dot{x_1^*})
\intertext{On cherche donc $x_2$ pour que}
\dot{V_1}(x_1) & = \alpha_1(x_1-x_1^*)^2 \quad \text{ avec } \alpha_1 < 0 \\
x_2^* & = \alpha_1(x_1-x_2^*) - f_1(x_1) + \dot{x_1^*}
\end{align*}
Cela assure la convergence asymptotique de $x_1$ vers $x_1^*$.
\paragraph{Étape 2} Faire converger $x_2$ vers $x_2^*$. On utilise la nouvelle fonction de Lyapunov
\[ V_2(x_1,x_2) = \frac{1}{2}(x_1-x_1^*)^2 + \frac{1}{2}(x_2-x_2^*)^2 \]
On veut $\dot{V_2}(x_1,x_2)$ définie négative :
\begin{align*}
\dot{V_2}(x_1,x_2) & = (x_1-x_1^*)(\dot{x_1} - \dot{x_1^*}) + (x_2-x_2^*)(\dot{x_2} - \dot{x_2^*}) \\
& = \alpha_1(x_1-x_1^*)^2 + \alpha_2(x_2-x_2^*)^2
\intertext{Pour avoir une hiérarchisation dynamique, on pose $\alpha_2 < \alpha_1 < 0$ (la dynamique 2 est plus rapide que la 1)}
(x_2-x_2^*)(\dot{x_2} - \dot{x_2^*}) & = \alpha_2(x_2-x_2^*)^2 \\
(x_2-x_2^*)(f_2(x_1,x_2) + x_3 - \dot{x_2^*}) & = \alpha_2(x_2-x_2^*)^2 \\
x_3^* & = \alpha_2(x_2-x_2^*) - f_2(x_1,x_2) + \dot