\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{ où } 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$ où $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^*)\]
où $\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{x_2^*}
\end{align*}
La démarche est la même à l'étape $n$ :
\[ u  = \dot{x_n^*} - f_n(x_1,\dots,x_n) + \alpha_n(x_n-x_n^*) \]
avec $\alpha_n < \alpha_{n-1} < \dots < \alpha_2 < \alpha_1$

\begin{rem}
Cette méthode est généralisable à des systèmes sans forme :
\begin{align*}
\dot{x_1} & = f_1(x_1) + g_1(x_1)x_2 \\
\dot{x_2} & = f_2(x_1,x_2) + g_2(x_1,x_2)x_3 \\
& \vdots \\
\dot{x_n} & = f_n(x_1,\dots,x_n) + g_n(x_1,\dots,x_n)u
\end{align*}
sur $\mathcal{D} = \{x_1,\dots,x_n \text{ tq } g_1 \neq 0,\dots,g_n\neq 0 \}$
\end{rem}


\newpage
\section{Rejet de perturbation}

\subsection{Cas SISO}
\[ (1) \begin{cases} \dot{x} & = f(x) + g(x)u + p(x) w  \\  y & = h(x)  \end{cases}  \]

Même principe que pour la linéarisation par bouclage, on dérive la sortie par rapport au temps :
\[ \dot{y} = \derivp[h(x)]{x} \dot{x} = L_fh(x) + L_gh(x) u + L_ph(x) w \]

\paragraph{Cas 1} $L_ph(x) \neq 0$\\
Si $L_gh(x) \neq 0$ et la perturbation $w$ est mesurable (rarement), alors le rejet de la perturbation est obtenu par 
\[ u = (L_gh(x))^{-1}(v-L_fh(x) - L_ph(x)w) \quad \text{avec trivialement } v = \dot{y}\]
Si la perturbation n'est pas mesurable, on réalise une linéarisation dynamique avec $x_{n+1} = u$ et $x_{n+2} = w$ mais dans ce cas la perturbation $w$ doit être canonique, i.e. $\exists \alpha \in \N \text{ tq } w^{(\alpha)} = 0$.

Ainsi, on dérive la sortie jusqu'à disparition de la perturbation puis on linéarise.\\

\noindent Si $L_gh(x) = 0$, on calcule les dérivées d'ordres supérieurs de la sortie jusqu'à apparition de la commande (linéarisation dynamique).

\paragraph{Cas 2} $L_ph(x) = 0$.\\
Si $L_gh(x)\neq0$, la perturbation est rejetée pour 
\[ u = (L_gh(x))^{-1}(v-L_fh(x)) \]
Su $L_gh(x) = 0$, on dérive une deuxième fois la sortie.

\begin{prop}
Soient $r$ le degré relatif correspondant à $L_gL_f^{r-1}h(x) \neq 0$ et $\sigma$ le plus petit entier pour lequel $L_pL_f^{\sigma-1}h(x) \neq0$, alors :
\begin{itemize}
\item si $r<\sigma$ la perturbation $w$ est rejetée par la commande linéarisante
\item si $r=\sigma$ la perturbation $w$ est rejetée si elle est mesurable
\item si $r>\sigma$ le rejet de $w$ ne peut se faire que par une linéarisation dynamique : observateur NL si $w$ n'est pas canonique
\end{itemize}
\end{prop}


\subsection{Cas MIMO}
\[ \begin{cases} \dot{x} & = f(x) + \sum_{i=1}^m g_i(x)u_i + p(x) w  \\  y & = h(x)  \end{cases}, \quad x \in \R^n, u \in \R^m, y \in \R^d \]
Même principe que le cas SISO mais une linérisation MIMO où chaque nouvelle entrée $v_i$, permet de rejeter les perturbations sur $y_i$.

\begin{rem}
L'incertitude sur le modèle peut être interprétée comme une perturbation. En effet, le modèle (1) s'écrit 
\[ \begin{cases} f(x) & = f(x) + \Delta f(x) + g(x) u + \Delta g(x) u  \\  y & = h(x)  \end{cases} \]

Suivant l'analyse sur le bouclage linéarisant, le rejet d'incertitude est obtenu si 
\begin{align*}
L_{\Delta f} L_f^i h = 0 & 0 \leq i \leq r-2 \\
L_{\Delta g} L_f^i h = 0 & 0 \leq i \leq r-1
\end{align*}

Ce résultat ne peut être vérifié qu'a posteriori car $\Delta f$ et $\Delta g$ sont inconnues.
\end{rem}

\newpage
\section{Robustesse en NL - Commande par mode glissant}

%%\imgt{8/1}

Un terme $u_r$ est ajouté à la commande de départ $u_{eq}$ ...

\begin{exemple}[Onduleur de tension commandé en courant]
Sans avoir à modéliser la charge, on veut imposer la forme de courant :
%%\imgt{8/2}
\end{exemple}

\subsection{Éléments de synthèse de la commande}

\begin{enumerate}
\item Synthétiser une commande sans prise en compte de l'incertitude ni de la perturbation : surface de glissement (poursuite asymptotique)
\item Commande gardant les états sur la surface de glissement ayant pour hypothèse l'incertitude ou la perturbation bornées : variation de la structure du système par commutation
\end{enumerate}

\begin{defin}[Surface de glissement ou commutation]
$S(x,t)$ est la surface autour (dans un voisinage) de laquelle le système évolue avec une dynamique imposée par $S$.
\end{defin}

\begin{defin}[Système à structure variable]
Un système est à structure variable si son entrée commute entre deux valeurs suivant une logique bien spécifique $\sigma(x)$ 
%%\img{0.5}{8/3}
\end{defin}

\begin{defin}[Commande par mode glissant]
Commande discontinue ayant pour objectif de faire converger le système en $S$. On utilise la fonction de Lyapunov \[ V(x,t) = \frac{1}{2}S^2(x,t) \]

Pour avoir convergence vers la surface de glissement, il faut avoir 
\[ \dot{V}(x,t) = S(x,t) \dot{X}(x,t) \leq 0 \]

$\sigma(x)$ est la logique qui impose $S\dot{S} \leq 0$
\end{defin}

\begin{rem}
$S\dot{S}$ est la condition d'existence d'un régime glissant sur la surface $S$.
\end{rem}

\subsection{Application de la commande par mode glissant}

La poursuite asymptotique est une méthode de détermination de $S$.

Soit $\epsilon(t) = y_c(t) - y(t)$ où $y_c$ est la consigne et $y$ la sortie.

On pose $S = \epsilon^{(m)}(t) + \beta_{m-1}\epsilon^{(m-1)} + \dots + \beta_1 \dot{\epsilon} + \beta_0 \epsilon$ où $\beta_i, i =0,\dots,m-1$ sont choisis pour imposer la dynamique de convergence.

\begin{rem}
Par exemple, on peut choisir $S = (\frac{d}{dt} + \lambda)^m \epsilon, \lambda >0$

Choix de la commande (bouclage linéarisant)
\end{rem}

On pose $m=r-1$ où $r$ est le degré relatif et on a 
\begin{align*}
u & = \frac{1}{L_gL_f^{r-1}h(x)} (-L_f^rh(x) + y_c^{(r)} + \sum_{i=1}^r \beta_{i-2} \epsilon^{(i-1)} + \alpha K sgn(S) ) \\
u & = \frac{1}{L_gL_f^{r-1}h(x)} (-L_f^rh(x) + y_c^{(r)} + \dot{S} + \alpha K sgn(S) ) 
\end{align*}


Ainsi en utilisant le changement de variable $z_i = L_f^{i-1}h(x) = \phi_i(x), i = 1,\dots,r$, la commande linéarisante avec poursuite asymptotique et robuste s'écrit :
\[ u = \frac{1}{b(z,\eta)} (-a(z,\eta) + y_c^{(r)} + \dot{S} + \alpha K sgn(S)) \]
avec pour modèle normal :
\begin{align*}
\dot{z_1} & = z_2 \\
& \vdots \\
\dot{z_{r-1}} & = z_r \\
\dot{z_r} & = y_c^{(r)} + \dot{S} + \alpha K sgn(S) + \Delta a (z,\eta) \\ 
\dot{\eta} & = q(z,\eta) + \Delta q(z,\eta) + \Delta p(z,\eta)u \\
\text{ avec } & \Delta a (z,\eta) = L_{\Delta f} L_f^{r-1} h(x), \Delta q(z,\eta) = L_{\Delta f} \eta, \Delta p(z,\eta) = L_{\Delta f} \eta
\end{align*}

On suppose que $|\Delta a (z,\eta)| < K < \infty$ donc pour avoir $\dot{z_r} = y_c^{(r)}$, on doit poser $\dot{S} = - \alpha K sgn(S) - \Delta a(z,\eta)$.

Cas $S>0 \Rightarrow \dot{S} < -K(\alpha-1) < 0 \si \alpha > 1$

Cas $S<0 \Rightarrow \dot{S} > K(\alpha-1) > 0 \si \alpha < 1$

Ainsi on vérifie la condition d'existence du régime glissant, alors quand la trajectoire atteint $S$, alors $y \to y_c$ suivant la dynamique imposée par $S$.
\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"
%%% End:
