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
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.
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).
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.
\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)&\neq0\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$.
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 alors de réaliser une inversion dynamique, à la manière de l'observateur dans le cas linéaire.
\item si $D(x)$ n'edst pas inversible alors on introduit une dynamique pour la rendre inversible. Une méthode simple pour trouver cette dynamique est de continuer à dériver après apparition de la commande ($u_j,\dot{u}_j$).
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)}}\neq0$ 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.
Un système est dit \emph{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$ :
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}))$\\
\[ C_0(p)= K >>1, \quad H_0(p)=\frac{H_1(p)}{1+KH_1(p)}\approx\frac{1}{K}\]
\end{exemple}
\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\neq0$, 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)\neq0\}\]
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)$.
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\neq0$ et suffisamment petit si $\dot{u}=\epsilon v$, $v$ bornée.
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}$
\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\neq0$, $\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.
sur $\mathcal{D}=\{x_1,\dots,x_n \text{ tq } g_1\neq0,\dots,g_n\neq0\}$
\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)\neq0$\\
Si $L_gh(x)\neq0$ 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)\neq0$ 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)\leq0\]
$\sigma(x)$ est la logique qui impose $S\dot{S}\leq0$
\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) \\
\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$.
% 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.