903 lines
37 KiB
TeX
903 lines
37 KiB
TeX
\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}
|
|
\]
|
|
\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<n$}
|
|
|
|
\begin{align*}
|
|
z_1 &= y\\
|
|
z_2 &= \dot{z_1} \\
|
|
& \vdots \\
|
|
\dot{z_r} &= L_g^rh+L_gL_f^{r-1}h u = v
|
|
\end{align*}
|
|
Alors on complete les variables d'état avec le vecteur$ \eta\in\R^{n-r}$ tel que:
|
|
\[
|
|
\dot{\eta}=q(\eta,z,v,\dot{v},...)
|
|
\]
|
|
\begin{rem}
|
|
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
|
|
\end{rem}
|
|
|
|
\begin{rem}\emph{ À clarifier }
|
|
Ainsi on défini la dynamique des zéros. Le système commandé est en régime stationnaire :
|
|
\[
|
|
\dot{v}=0 y=0 ..
|
|
\]
|
|
La dynamique des zéro est celle $\dot{\eta} =q(\eta,0,v)$. Puisque la commande est linéaire on aussi prendre $v=0$
|
|
\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. 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.
|
|
\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{thm}
|
|
Le système $\dot{x} = f(x) + g(x)u$ (1) est \emph{linéarisable entrée-états} si
|
|
\begin{itemize}
|
|
\item il existe une région $\Omega \in \R^n$, un difféomorphisme $\phi:\Omega\rightarrow\R^n$
|
|
\item et un retour d'état $u=\alpha(x) + \beta(x)v$ tels que le nouveau vecteur
|
|
d'état est $z=\phi(x)$
|
|
\item et la nouvelle entrée est $v$ avec $\dot{z} = Az+Bv$,
|
|
où $A$ est la matrice d'évolution $\in \R^{m \times n}$.
|
|
\end{itemize}
|
|
\end{thm}
|
|
|
|
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}
|
|
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.
|
|
\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{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}
|
|
|
|
\subsubsection{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:
|
|
|
|
|
|
|
|
% 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}
|