\documentclass[main.tex]{subfiles} \begin{document} Dans la suite du chapitre on étudiera le modèle suivant : Affine en la commande \[(\Sigma) \begin{cases} \dot{x} & = f(x) + g(x) u\\ y & = h(x) \end{cases} \]\nopagebreak \section{Commande par bouclage linéarisant} \begin{figure}[H] \centering \begin{tikzpicture} \node[draw, minimum height=1cm] (C) at (0,0) { \begin{tabular}{c} Commande\\ Linéarisée \end{tabular}}; \node[draw, minimum height=1cm] (S) at (5,0) { \begin{tabular}{c} Système\\ NL \end{tabular}}; \draw[-latex] (-2,0) -- (C.west) node[near start,above]{$v$}; \draw[-latex] (C.east) -- (S.west) node[near start, above]{$u$}; \draw[-latex] (S.east) -- ++(2,0) node[above left]{$y$}; \draw[-latex] (S.south) |- ++(-2,-1) node[near start,right]{$x$} -| (C.south); \end{tikzpicture} \caption{Principe du bouclage linéarisant} \end{figure} \subsection{Linéarisation entrées-sorties} On se place dans le cas SISO: $u\in \R$ et $y\in\R$ \begin{defin} Le\emph{ degré relatif} $r$ du système $(\Sigma)$ est défini par $r \in \N$ tel que \[ \begin{cases} L_gL_f^{r-1}h(x) &\neq 0\\ L_gL_f^{k}h(x) &= 0 \quad \forall k < r-1 \end{cases} \] \end{defin} \subsubsection{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 \end{align*} \begin{rem} On a $1 \leq r \leq n$ car la procédure utilise la base canonique ($x_1=y,x_2=\dot{y}$) : la commande doit apparaître au maximum à la $n$-ième dérivée. \end{rem} On pose $v=y^{(r)} = L_f^rh(x) + L_gL_f^{r-1}h(x)u \ne 0$ Alors: \[ u = (L_gL_f^{r-1}h(x))^{-1}(v-L_f^rh(x)) \] \[ u = \alpha(x) + \beta(x)v , \text{ avec } \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.\\ \subsubsection{Cas $r=n$} \begin{minipage}[t]{0.5\linewidth} 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*} \end{minipage} \begin{minipage}[t]{0.5\linewidth} Nouveau modèle : \begin{align*} \dot{z_1} & = z_2 \\ &\vdots \\ &\vdots\\ \dot{z_{n-1}} & = z_n \\ \dot{z_n} & = a(z) + b(z)u = v \end{align*} \end{minipage} On a donc la commande suivante :\[ u = \frac{v-a(z)}{b(z)} \text{ avec } b(z) \neq 0 \] Qui nécessite le changement de base des variables d'états : \[ z = \phi(x) = \vect{\phi_1(x) \\ \vdots \\ \phi_n(x)} = \vect{ h(x) \\ L_fh(x) \\ \vdots \\ L_f^{n-1}h(x)} \] \[ 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)} \] \begin{figure}[H] \centering \begin{tikzpicture} \begin{scope}[at={(0,0)}] \node[draw, minimum height=1cm] (C) at (0,0) {$\frac{v-a(z)}{b(z)}$}; \node[draw, minimum height=1cm] (S) at (3.5,0) {$\dot{x}=f(x)+g(x)u$}; \node[draw, minimum height=1cm] (N) at (7,0) {$z=\Phi(x)$}; \draw[-latex] (-2,0) -- (C.west) node[near start,above]{$v$}; \draw[-latex] (C.east) -- (S.west) node[near start, above]{$u$}; \draw[-latex] (S.east) -- (N.west); \draw[-latex] (N.east) -- ++(1,0) node[above left]{$y$}; \draw[-latex] (N.south) |- ++(-2,-1) node[near start,right]{$x$} -| (C.south); \end{scope} \node at (3,-2.5){\Large$\Updownarrow$}; \begin{scope}[shift={(0,-4)}] \node[draw, minimum height=1cm] (I1) at (0,0) {$\int$}; \node[draw, minimum height=1cm] (I2) at (2,0) {$\int$}; \node[draw, minimum height=1cm] (I3) at (5,0) {$\int$}; \draw[-latex] (-2,0) -- (I1.west) node[near start, above]{$v$}; \draw[-latex] (I1.east) -- (I2.west) node[near start, above]{$z_n$}; \draw[-latex] (I2.east) -- ++(1,0) node[midway,above]{$z_{n-1}$}; \draw[-latex,dashed] (I2.east)++(1,0) -- (I3.west) node[near end, above]{$z_{2}$}; \draw[-latex] (I3.east) -- ++(2,0) node[near end, above]{$z_1=y$}; \end{scope} \end{tikzpicture} \caption{Forme normale} \end{figure} \subsubsection{Cas $r>1, \quad H_0(p) = \frac{H_1(p)}{1+KH_1(p)} \approx \frac{1}{K} \] \end{exemple} \end{document} %%% Local Variables: %%% 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}