From 9bcac9973284374ff1488c3978d0a1547aa3ace5 Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Tue, 16 Apr 2019 11:14:40 +0200 Subject: [PATCH] Finalisation du cours de 424 --- 424-Systeme_Non_Lineaires/Cours/chap7.tex | 84 +++------- 424-Systeme_Non_Lineaires/Cours/chap8.tex | 40 +++-- 424-Systeme_Non_Lineaires/Cours/chap9.tex | 190 ++++++++++++++++++++++ 424-Systeme_Non_Lineaires/Cours/main.tex | 3 + 4 files changed, 242 insertions(+), 75 deletions(-) create mode 100644 424-Systeme_Non_Lineaires/Cours/chap9.tex diff --git a/424-Systeme_Non_Lineaires/Cours/chap7.tex b/424-Systeme_Non_Lineaires/Cours/chap7.tex index 4a08b7f..5ed9b95 100644 --- a/424-Systeme_Non_Lineaires/Cours/chap7.tex +++ b/424-Systeme_Non_Lineaires/Cours/chap7.tex @@ -511,8 +511,30 @@ Même démarche pour les degrés supérieurs de la poursuite asymptotique. \end{itemize} \begin{figure}[ht] \centering - \includegraphics[width=0.9\textwidth]{6/1.png} - \caption{ } + \begin{tikzpicture} + \sbEntree{Yc} + \sbComp{C}{Yc} + \sbRelier[$y_c$]{Yc}{C} + \sbBlocL{P}{ + \begin{tabular}{c} + Commande \\ pour la \\ poursuite + \end{tabular} + }{C} + \sbBlocL[4]{I1}{$\displaystyle\int$}{P} + \sbBlocL{I2}{$\displaystyle\int$}{I1} + \node[above] at (P-I1) {$u^{(m-r)}$}; + \node[above] at (I1-I2) {...}; + \sbBlocL{NL}{ + \begin{tabular}{c} + Système \\ N.L + \end{tabular} + }{I2} + \sbSortie{Y}{NL} + \sbRelier[$y$]{NL}{Y} + \sbRenvoi{NL}{P}{} + \sbRenvoi[6]{NL-Y}{C}{} + \end{tikzpicture} + \caption{Commande par bouclage linéarisant} \label{fig:label} \end{figure} La difficulté de la poursuite asymptotique est la résolution de l'équation dynamique NL @@ -572,10 +594,7 @@ 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}))$\\ - -Commande en cassecade \footnote{Momo m'a tuer} : -%\imgt{7/1} - +On a la commande en cascade: \[ C_0(p) = K >>1, \quad H_0(p) = \frac{H_1(p)}{1+KH_1(p)} \approx \frac{1}{K} \] \end{exemple} \end{document} @@ -584,56 +603,3 @@ Commande en cassecade \footnote{Momo m'a tuer} : %%% mode: latex %%% TeX-master: "main" %%% 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} diff --git a/424-Systeme_Non_Lineaires/Cours/chap8.tex b/424-Systeme_Non_Lineaires/Cours/chap8.tex index 70a39b8..aabb57c 100644 --- a/424-Systeme_Non_Lineaires/Cours/chap8.tex +++ b/424-Systeme_Non_Lineaires/Cours/chap8.tex @@ -17,7 +17,7 @@ On suppose que $0 < \epsilon \ll 1$. et on pose $\tau = \epsilon t$, alors $\ta \dd{x_1}{\tau} & = f_1(x_1,x_2,u) ~~\text{ Dynamique lente et d'ordre 0 en } 1/\epsilon \\ \dd{x_2}{\tau} & = \frac{1}{\epsilon} f_2(x_1,x_2,u) \text{ Dynamique rapide et d'ordre 1 en }1/\epsilon \end{align*} - +\begin{prop} Ainsi, dans le cas d'un point d'équilibre stable, $x_2$ converge plus rapidement vers $\Sigma_0$ que $x_1$ vers $\Sigma_\epsilon$ avec : \[ \begin{cases} @@ -25,8 +25,9 @@ Ainsi, dans le cas d'un point d'équilibre stable, $x_2$ converge plus rapidemen \Sigma_\epsilon = \{(x_1,x_2,u) ~~|~~ f_1(x_1,x_2,u)=0 \text{ et }f_2(x_1,x_2,u)=0 \} \subset \Sigma_0 \end{cases} \] +\end{prop} \begin{rem} - La variété $\Sigma_\epsilon$ dégènre en $\Sigma_0$ pour $\epsilon \to 0$. + La variété\footnote{Une variété est un objet mathématique, courbes :variété de dimension 1, surface :variété de dimension 3} $\Sigma_\epsilon$ dégènre en $\Sigma_0$ pour $\epsilon \to 0$. \end{rem} \section{Détermination du voisinage} @@ -89,24 +90,25 @@ $C_r = -\frac{\dot{u}J}{k}$ est utilisée pour estimer $C_r$ en modulant $\dot{u \section{Synthèse de commande hiérarchisante} \subsection{Hiérarchisation par commande à grand gain} - +\begin{defin} 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} - \] - +\] +Ce système est de \emph{forme triangulaire}. +\end{defin} 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{dynamique 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} +\left\{ \begin{array}{rll} +\dd{x_1}{\tau} & = \epsilon f_1(x_1,x_2) &\quad \text{dynamique 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{array}\right. \] $\Sigma_0$ est la variété $x_2 = x_2^*$. @@ -133,7 +135,6 @@ La dynamique lente est $\dd{x_1}{\tau} = \epsilon f_1(x_1,x_2^*)$. Par conséque \end{itemize} \end{rem} \subsection{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 \\ @@ -142,6 +143,9 @@ Soit un système sous forme triangulaire (apparition successive des différentes \dot{x_n} & = f_n(x_1,\dots x_n) + u \end{align*} + +On veut triuver $u$ pour imposer une poursuite asymptotique de $x_1$ vers $x_1^*$, pour cela on utilise une commande réalisée via la condition de Lyapunov. La méthode du backstepping synthétise la commande $u$ en plusieurs étapes avec une séparation dynamique pour simplifier le choix de $V(x)$. + \paragraph{Procédure de synthèse} \paragraph{Étape 1} Afin d'imposer la consigne $x_1^*$, on utilise la fonction de Lyapunov @@ -150,12 +154,11 @@ 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} +\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^*$. +$x_2^*$ est une ``consigne fictive''. On doit faire tendre $x_2$ vers $x_2^*$ asymptotiquement et plus rapidement que $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 \] @@ -168,10 +171,16 @@ On veut $\dot{V_2}(x_1,x_2)$ définie négative : (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$ : + +\paragraph{Étape n} +Meme démarche: \[ 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$ +si $\alpha_n \ll \alpha_{n-1} \ll ... \ll \alpha_1$ alors: +$\dot{V}$ est obtneu par $f_n(x_1,...,x_n)+u-x_n^* = \alpha_n(x_n-x_n^*)$ + + \begin{rem} Cette méthode est généralisable à des systèmes sans forme : \begin{align*} @@ -182,7 +191,7 @@ Cette méthode est généralisable à des systèmes sans forme : \end{align*} sur $\mathcal{D} = \{x_1,\dots,x_n \text{ tq } g_1 \neq 0,\dots,g_n\neq 0 \}$ \end{rem} - +Mais les méthodes sont alors peu robuste. \section{Rejet de perturbation} On suppose que le modèle st soumis à des perturbations. @@ -195,7 +204,6 @@ Même principe que pour la linéarisation par bouclage, on dérive la sortie par On réalise le rejet de perturbations sur la relation entre le degré relatif associé à $u$ et $\sigma$ degré relatif associé à $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}\] diff --git a/424-Systeme_Non_Lineaires/Cours/chap9.tex b/424-Systeme_Non_Lineaires/Cours/chap9.tex new file mode 100644 index 0000000..c67a76f --- /dev/null +++ b/424-Systeme_Non_Lineaires/Cours/chap9.tex @@ -0,0 +1,190 @@ +\documentclass[main.tex]{subfiles} +\begin{document} + +On suppose que le modèle est soumis à des pertubations: +\[ + \begin{cases} + \dot{x} = f(x) +g(x)u+p(x)w\\ + y = h(x) + \end{cases} +\] +\begin{rem} + Si $w$ modélise des incertitudes de modèle, alors on suppose que les erreurs de modélisation n'implique pas d'instabilité, $w$ ne dépend pas de $x$. +\end{rem} + +On applique au modèle le principe du bouclage linéarisant: + +\[ + y=h(x)=z_1\implies z_2\dot{z_1} = \dot{y} =h(x) +\] +Ainsi l'analyse sur le rejet de pertubation et réalisé sur la relation entre $r$ le degré relatif associé à $u$ et $\sigma$ le degré relatif associé à $w$. + +\begin{itemize} +\item $r < \sigma$ : \\ + Alors le bouclage linéraisant a rendu la pertubation non commandable +\item $r \ge \sigma$:\\ + \begin{itemize} + \item Soit on peux mesurer $w$ pour atténuer son effet + \item Soit on modélise la pertubation, généralement sous forme canonique (ie $w^{(\alpha)}= 0$ , ou $\alpha$ est l'ordre). Pour avoir le cas $r<\sigma$ on réalise une observateur de pertubation et atténuer son effet. +\end{itemize} +\end{itemize} + + +\section{Rejet de pertubation via la commande par mode glissant} +\subsection{Exemple et Définitions} + +Dans la commande par mode glissant on a $U = u_{eq}+u_y$ avec: +\begin{itemize} +\item $u_{eq}$ commande sans pertubation pour une poursuite asymptotique +\item $u_y$ commande à structure variable pour faire converger $x$ vers $x^*$. +\end{itemize} + +\begin{exemple} + Onduleur de tension commandé en courant + + +\newsavebox{\genericfilt} +\savebox{\genericfilt}{% + \begin{tikzpicture}[font=\small,>=stealth,scale=0.5] + \draw[->] (-1,0)-- (1,0); + \draw[->] (0,-1)--(0,1); + \draw[thick] (-1,-0.7) -- (0.5,-0.7); + \draw[thick] (1,0.7) -- (-0.5,0.7); + \draw[thick] (0.5,-0.7) -- (0.5,0.7); + \draw[thick] (-0.5,-0.7) --(-0.5,0.7); + \end{tikzpicture}% +} + \begin{figure}[H]\centering + \begin{tikzpicture} + \begin{scope} + \begin{axis} + [axis lines= middle, + xmin= 0,xmax= 8, + ymin =-2,ymax=2,domain=0:8, + ] + \addplot[no marks,blue,samples=200]{sin(deg(x))+0.1*sin(100*deg(x+1))}; + \addplot[no marks,red]{sin(deg(x))}; + \end{axis} + \end{scope} + \begin{scope}[shift={(7,3)}] + \sbEntree{I} + \sbComp{Comp}{I} + \sbRelier[$i_{ref}$]{I}{Comp} + \sbBlocL{N}{\usebox{\genericfilt}}{Comp} + \sbSortie{Y}{N} + \sbRelier[$y$]{N}{Y} + \sbDecaleNoeudy[4]{Comp}{i} + \sbRelier[$i$]{i}{Comp} + \end{scope} + \end{tikzpicture} + \caption{Exemple de l'onduleur de tension} +\end{figure} + +Si la fréquence est infinie on a un mode glissant +\end{exemple} + + +\begin{defin} + Un système est à structure variable si la commande commute entre 2 valeurs suivant une logique $\sigma(x)$. +\end{defin} +\begin{prop} + $\sigma(x)$ permet de glisser sur $S(x,t)$ surface de glissement si la fréquence de commutation est infinie. On a : + \[ + V(x) = \frac{1}{2}S(x,t)^2 + \] + Soit : + \[ + \dot{V}(x)= S(x,t)\dot{S}(x,t) <0 : \sigma(x) + \] +\end{prop} +Dans un régime glissant on est dans un voisinage de $S(x,t)=0$ et pour maintenir le glissement la logique de commutation $\sigma(x)$ vérifie : +\[ + \lim_{S\to0^-} \dot{S} >0 \text{ et }\lim_{S\to0^+} \dot{S}>0 +\] +\subsection{Application à la commande par mode glissant} + +On utilise la méthode suivante +\begin{enumerate} +\item Choisir $S(x,t)$: + Généralement $S(x,t)$ est obtneu par la porusuite asymptotique de $y$ (sortie du système) vers $y_c$, en choisissant une dynamique de poursuite linéaire. Alors on pose :$\epsilon(t)= y_c(t) -y(t)$ erreur de poursuite. et on a: + \[ + S(x,t) = \epsilon^{(m)}(t)+\beta_{m-1}\epsilon^{(m-1)}(t)+ ... +\beta_1 \epsilon^{(1)}(t)+\beta_0 \epsilon(t) + \] + Avec $\beta_i$ tel que $p^m+\beta_{m_1}p^{m-1}+ ... \beta_0$ est un polynome d'hurwitz\footnote{Racine à partie Réelle négatives}. + Généralement on prend : + \[ + \left( + \deriv[]{t}+\lambda + \right)^m \epsilon(t)= 0 ,\lambda > 0 + \] +\item Trouver $u_g$ qui réalise la logique $\sigma(x)$ tel que $u_g = W signe(S)$, avec $W> 0$. Ainsi on a : + + \[ + u = u_{eq}+u_g \text{ avec } \dot{S} = 0 \text{ pour } u_{eq} + \] +\end{enumerate} + +\subsection{Application au bouclage linéarisant} +On pose $m= r-1$ (où $r$ est le degré relatif) Alors on a : + +\begin{align*} + z_1 &= y = h(x) \\ + \dot{z_1} &= z_2 \\ + \dot{z_2} &= z_3 \\ + & \vdots \\ + \dot{z_r} &= v \\ +\end{align*} +Avec +\[ + u \frac{1}{L_gL_f^{r-1}}\left( +-L_f^r h(x)+\underbrace{y_c^{(r)}+\dot{S}+W.sgn(S)}_{v} +\right) +\] +Soit +\[ + v = y^{(r)}+\dot{S} + W sgn(S) +\] + +À cette forme on rajoute une perturbation ( du au erreur du modèle): + +\begin{align*} + z_1 &= y = h(x) \\ + \dot{z_1} &= z_2 \\ + \dot{z_2} &= z_3 \\ + & \vdots \\ + \dot{z_r} &= y^{(r)} = v + \Delta \\ +\end{align*} +Avec $|\Delta| < K $. Pour assurer la poursuite de trajectoire on veux $ y^{(r)}=y_c^{(r)}$ Ainsi: $\dot{S} = - W sgn(S) -\Delta$. On pose $W = K \alpha$. +\begin{itemize} +\item Si $S > 0 \implies \dot{S} < -K (\alpha-1) < 0 \implies S\dot{S} <0 $ avec $\alpha >1$. +\item Si $S<0 \implies \dot{S} = W - \Delta > K(\alpha-1) >0 \implies S\dot{S} > 0 $ +\end{itemize} + + +On a le mode de glissement avec $u_g = W sgn(S) $. C'est pour cette raison qu'on prend $W_{sat} = +\begin{cases} + +U_{max}\\ + -U_{max} +\end{cases} +$ +\subsection{Commande par mode glissant - Récapitulatif} + +On fabrique la commande suivante pour rejeter les pertubations: +\[ + u = u_{eq} + u_g +\] +où : +\begin{itemize} +\item $u_{eq}$ est la commande sans pertubation ni incertitude sur le modèle. +\item $u_g = W sgn(S)$ la fréquence de variation de $u_g$ doit être très grande devant la dynamique de la poursuite. +\end{itemize} + +Le problème de la discontinuité de $u$ dans les excitation des dynamiques du système. La solution est de réalisée la loi de commande sur $w= \dot{u}$, $u$ devient une variable d'état d'un\emph{ modèle augmenté}. + +Sur le nouveau modèle on applique le mode glissant sur $w = w_{eq}+ w_g$ + +\end{document} +%%%Local Variables: +%%% mode: latex +%%% TeX-master: "main" +%%% End: diff --git a/424-Systeme_Non_Lineaires/Cours/main.tex b/424-Systeme_Non_Lineaires/Cours/main.tex index 5562e7b..3820d12 100644 --- a/424-Systeme_Non_Lineaires/Cours/main.tex +++ b/424-Systeme_Non_Lineaires/Cours/main.tex @@ -40,6 +40,9 @@ \subfile{chap7.tex} \chapter{Commande hiérarchisée} \subfile{chap8.tex} +\chapter{Rejet de pertubation et commande Robuste} +\subfile{chap9.tex} + \end{document} %%% Local Variables: