drone-rigide/doc/compte_rendu/chap_modelisation.tex
2019-06-07 15:29:39 +02:00

115 lines
5.5 KiB
TeX

\chapter{Modélisation du problème}
\section{Modélisation mécanique}
\begin{figure}[h!]
\centering
\includegraphics[width=\linewidth]{images/modelisation/drone_axes.png}
\caption{Axes du drone parrot \cite{photo_drone}}
\label{fig:drone_axes}
\end{figure}
Le contrôle du drone selon les différents axes (figure \ref{fig:drone_axes}) n'est pas identique. Ainsi on contrôle le drone en vitesse pour la translation et la rotation sur l'axe z, alors que le contrôle sur les axes x et y s'effectue par l'inclinaison de la machine.
\subsection{Axe z}
Les drones BeBop nous permettent de spécifier directement une vitesse en rotation et en translation sur l'axe $z$. L'asservissement interne du drone se chargeant de faire respecter la consigne. On a donc une une réponse fréquencielle de la forme de celle de la figure \ref{fig:bode_z}. On peut alors assimiler la fonction de transfert sur cet axe à un simple intégrateur dans notre domaine fréquentiel de travail. Pour la correction, on pourra utiliser un simple PID.
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{images/modelisation/bode_z.eps}
\caption{Diagramme de Bode simplifié de la réponse sur l'axe $z$}
\label{fig:bode_z}
\end{figure}
\subsection{Axes x et y}
Les axes x et y ayant des comportements similaires, nous pouvons les assimiler à un axe $u$ pour les calculs. On suppose que les moteurs du drone fournissent une force de portance constante $\vec{F}_m$ et que le drone doit faire face à une force de frottements fluides $\vec{F}_f=-\alpha \dot{u}$.
\begin{figure}[h!]
\centering
\includegraphics[width=\linewidth]{images/modelisation/forces.eps}
\caption{Modélisation des forces appliquées au drone dans le cas d'une translation dans le sens positif de $\vec{u}$}
\label{fig:forces}
\end{figure}
En appliquant le principe fondamental de la dynamique dans le cadre des forces appliquées dans le schéma de la figure \ref{fig:forces}, on a :
\begin{eqnarray}
m \ddot{u} &=& \sin{(\theta)} F_{m} - \alpha \dot{u}
\end{eqnarray}
Dans le domaine de Laplace, et en se plaçant dans le domaine des faibles inclinaisons, on a donc :
\begin{eqnarray}
m p^2 u &=& \theta F_{m} - \alpha p u \\
u &=& \frac{F_{m}}{\alpha p(\frac{m}{\alpha}p + 1)} \theta
\end{eqnarray}
Ce qui donne un diagramme de Bode similaire à celui de la figure \ref{fig:bode_u}.
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{images/modelisation/bode_u.eps}
\caption{Diagramme de Bode simplifié de la réponse sur l'axe $u$}
\label{fig:bode_u}
\end{figure}
Malheureusement, nous ne connaissons pas le paramètre $\alpha$. Cependant, d'après M. Frezza, à pleine vitesse, le drone met plusieurs seconde à atteindre sa vitesse limite (correspondant à la fréquence à laquelle la fonction de transfert peut être assimilée à un simple intégrateur). On peut donc supposer que pour les fréquences de travail du cadre de ce projet, les axes $x$ et $y$ se comportent comme des doubles intégrateurs. C'est pourquoi le correcteur qui semble adapté pour ces deux axes est un correcteur Proportionnel Dérivé.
\section{Modélisation primaire de l'asservissement}
On peut dans un premier temps modéliser l'asservissement de la manière de la figure \ref{fig:model_simple}.
\begin{figure}[h!]
\centering
\begin{tikzpicture}[auto, node distance=2cm,>=latex']
% We start by placing the blocks
\node [input, name=input] {};
\node [sum, right of=input, node distance=3cm] (sum) {};
\node [block, right of=sum] (controller) {Correcteur};
\node [block, right of=controller,
node distance=3cm] (system) {Drone};
% We draw an edge between the controller and system block to
% calculate the coordinate u. We need it to place the measurement block.
\draw [->] (controller) -- node[name=u] {$u$} (system);
\node [output, right of=system, node distance=5cm] (output) {};
\node [block, below of=u] (measurements) {Mesure};
% Once the nodes are placed, connecting them is easy.
\draw [draw,->] (input) -- node {position attendue} (sum);
\draw [->] (sum) -- node {$\epsilon$} (controller);
\draw [->] (system) -- node [name=y] {position réelle du drone}(output);
\draw [->] (y) |- (measurements);
\draw [->] (measurements) -| node[pos=0.99] {$-$}
node [near end] {mesure de la position} (sum);
\end{tikzpicture}
\caption{Modélisation simple de l'asservissement}
\label{fig:model_simple}
\end{figure}
Le drone diffuse un flux optique, qui permet de calculer sa position vis-à-vis d'une cible. La mesure peut se décomposer en trois éléments, comme le montre la figure \ref{fig:decomp_mesure}.
\begin{figure}[h!]
\centering
\begin{tikzpicture}[auto, node distance=3cm,>=latex']
% We start by placing the blocks
\node [input, name=input] {};
\node [block, right of=input] (cam) {Caméra};
\node [block, right of=cam] (transm) {Transmission};
\node [block, right of=transm] (trait) {Traitement};
\node [output, right of=system] (output) {};
% We draw an edge between the controller and system block to
% calculate the coordinate u. We need it to place the measurement block.
\draw [->] (input) -- (cam);
\draw [->] (cam) -- (transm);
\draw [->] (transm) -- (trait);
\draw [->] (trait) -- (output);
\end{tikzpicture}
\caption{Décomposition de la mesure}
\label{fig:decomp_mesure}
\end{figure}
Comme le traitement ne se fait pas directement sur le drone, il existe des retards aléatoires dûs au temps de transit sur le réseau, ainsi qu'au temps de calcul sur le poste de contrôle. Ces retards limitent la fréquence des mesures à environ 20Hz\cite{freq_ech}.