diff --git a/chapters/Chapter2.tex b/chapters/Chapter2.tex index 749ea03..d0db839 100644 --- a/chapters/Chapter2.tex +++ b/chapters/Chapter2.tex @@ -1022,7 +1022,7 @@ \subsection{Dynamique linéarisée en présence de vent} \end{algorithm} \newpage -\section{Conclusion du Chapitre \ref{chap:model}} +\section{Conclusion} Le point important de ce chapitre est l'étude du modèle de drone convertible. La manipulation des équations, avec l'exposition des surfaces de contrôle virtuelles et l'obtention de la dynamique du drone, nous ont permis de clarifier le modèle, qui devient la base préliminaire pour toutes les lois de contrôle. diff --git a/chapters/Chapter3.tex b/chapters/Chapter3.tex index df0a133..bc3c66a 100644 --- a/chapters/Chapter3.tex +++ b/chapters/Chapter3.tex @@ -10,11 +10,9 @@ \chapter{Travail préliminaire : commande hybride de drone} \section{Motivation} En prenant en compte les capacités d'un \textit{tailsitter}, il est légitime de se poser la question du mode de vol devant être utilisé pour rejoindre un point. Effectivement, le drone a la possibilité de se déplacer en stationnaire ou bien en vol d'avancement. Lors d'un déplacement en stationnaire, le drone est vertical donc il se retrouve fortement sujet aux perturbations. Il est donc nécessaire d'avoir une grande région d'attraction autour de la position d'équilibre pour assurer un rejet des perturbations et une stabilisation. Lors d'un vol d'avancement, le drone se trouve dans une configuration proche d'une aile volante. Ainsi, il se trouve moins perturbé par les turbulences, dans la mesure où la surface projetée d'aile impactée par le flux d'air est plus faible. Toutefois, le drone doit voler à une vitesse assez importante pour être dans cette configuration donc il ne peut pas maintenir une position, mais seulement effectuer des cercles autour. -Nous nous concentrons dans ce chapitre uniquement au vol stationnaire. Il s'agit donc de proposer une stratégie de commande pour stabiliser le drone en position stationnaire. Cette stratégie repose sur une dynamique discrète définissant l'usage d'une première loi de commande non-linéaire présentée dans \cite{2020e-MicCenZacFra} et qui fournit une grande région d'attraction et d'une seconde loi basée sur la dynamique linéarisée et fournissant une agressivité supérieure pour réaliser l'approche finale. -\todo{agressivité} -Les deux contrôleurs sont réunis par un mécanisme hybride qui permet de conserver les performances en régime permanent de la conception linéarisée, avec la grande région d'attraction garantie par la conception non linéaire. +Nous nous concentrons dans ce chapitre uniquement au vol stationnaire. Il s'agit donc de proposer une stratégie de commande pour stabiliser le drone en position stationnaire. Cette stratégie repose sur une dynamique discrète définissant l'usage d'une première loi de commande non-linéaire présentée dans \cite{2020e-MicCenZacFra} et qui fournit une grande région d'attraction et d'une seconde loi basée sur la dynamique linéarisée et fournissant une convergence plus rapide vers la cible. Les deux contrôleurs sont réunis par un mécanisme hybride qui permet de conserver les performances en régime permanent de la conception linéarisée, avec la grande région d'attraction garantie par la conception non linéaire. { \color{blue} - + Nous qualifions le contrôleur d'hybride car il possède deux dynamiques. Une dynamique continue qui assure le bouclage, il s'agit précisément de deux lois de commande qui sont exécuté simultanément et d'une dynamique discrète laquelle sélectionner le contrôleur le plus adapté en fonction de la situation. } Notre solution est testée en simulant le modèle non linéaire complet. @@ -39,12 +37,12 @@ \section{Contrôleur par retour d'état non-linéaire} Nous déterminons $\boldsymbol{M}^r$ en paramétrant (de manière conservatrice) les pseudo-inverses à droite de $\boldsymbol{M}$ comme $\boldsymbol{M}^r := \boldsymbol{K}\boldsymbol{M}^\top ( \boldsymbol{M}\boldsymbol{K}\boldsymbol{M}^\top)^{-1}$, où la matrice $\boldsymbol{K} \in \real^{4\times 4}$ est symétrique et satisfait $\boldsymbol{M}\boldsymbol{K}\boldsymbol{M}^\top \geq \mathbb{I}_3$ (pour assurer l'inversibilité). Avec ce paramétrage, le but est de minimiser la norme de $\boldsymbol{F}\boldsymbol{M}^r = \boldsymbol{F} \boldsymbol{K}\boldsymbol{M}^\top ( \boldsymbol{M}\boldsymbol{K}\boldsymbol{M}^\top)^{-1}$, ce qui est bien obtenu en minimisant la norme de $\boldsymbol{F} \boldsymbol{K}\boldsymbol{M}^\top$, du fait que la contrainte sur $\boldsymbol{M}\boldsymbol{K}\boldsymbol{M}^\top \geq \mathbb{I}_3$ garantit que le facteur $( \boldsymbol{M}\boldsymbol{K}\boldsymbol{M}^\top)^{-1}$ ait une norme plus petite que 1. En effectuant un complément de Schur, cette minimisation est obtenue en résolvant le programme semi-défini suivant : \begin{align*} -& \min_{\boldsymbol{K}, \kappa} \kappa, \; \mbox{subject to:} +& \min_{\boldsymbol{K}, \kappa} \kappa, \; \mbox{sous condition:} \; \boldsymbol{M} \boldsymbol{K} \boldsymbol{M}^\top\! \geq \!\mathbb{I}_3, \; \begin{bmatrix} \kappa \mathbb{I}_3 &\! \boldsymbol{F} \boldsymbol{K} \boldsymbol{M}^\top \\ \boldsymbol{M} \boldsymbol{K}^\top \boldsymbol{F}^\top &\! \kappa \mathbb{I}_3 - \end{bmatrix}\! \geq\! 0, + \end{bmatrix}\! \geq\! 0, kappa > 0, \end{align*} lequel minimise $\kappa$ tout en assurant $\boldsymbol{F} \boldsymbol{K} \boldsymbol{M}^\top \boldsymbol{M} \boldsymbol{K}^\top \boldsymbol{F}^\top \leq \kappa^2 \mathbb{I}_3$. En résolvant cette optimisation, on obtient, pour les matrices spécifiques considérées, \begin{align*} @@ -73,7 +71,7 @@ \section{Contrôleur par retour d'état non-linéaire} Enfin, par rapport à la solution proposée dans \cite{2020e-MicCenZacFra}, pour prendre partiellement en compte les effets de saturation énoncés dans la section~\ref{sec:saturation}, le bouclage décrit dans \cite{2020e-MicCenZacFra} a été augmenté d'une stratégie de saturation d'erreur ne permettant jamais à l'erreur de position $\boldsymbol{\rm e}_p$ utilisée dans \cite[eqn. (22)]{2020e-MicCenZacFra} de dépasser la valeur maximale de 3 mètres. Les autres gains de réglage nécessaires à la solution de \cite{2020e-MicCenZacFra} ont été sélectionnés comme $k_{pp} = 0.5$, $k_{pd} = 1.2$, $k_{ap} = 0.08$, $k_{ad} = 0.1$ et $k_{\Delta} = 1$. La figure~\ref{fig_global_contol} montre la réponse du système en termes de positions, d'orientations (deux lignes du haut) et d'efforts des actionneurs (deux lignes du bas) lorsque le système part de la condition initiale $\boldsymbol{x(0)} = [\boldsymbol{p(0)}~ \boldsymbol{v(0)}~ \boldsymbol{q(0)}~ \boldsymbol{\omega_b(0)}]^\top = [0~0~0 ~ 0~0~0 ~0. 9140 ~0.1134~ -0.3728~ 0. 1134~ 0~ 0~ 0]^\top $ avec une position d'équilibre cible de $\boldsymbol{p_{\text{eq}}} = [4~5~6]^\top$ et $\boldsymbol{q_{\text{eq}}} = [\frac{\sqrt{2}}{2}~0~-\frac{\sqrt{2}}{2}~0]^\top$. -Une réponse adéquate peut être observée, laquelle reste assez éloignée des saturations des actionneurs (voir section~\ref{sec:saturation}). L'augmentation des gains peut accélérer la réponse, mais produit toutefois des oscillations d'attitude indésirables. Il est donc intéressant de combiner ce contrôleur non linéaire (qui fournit une grande région d'attraction) avec un contrôleur plus agressif, conçu sur la base de la dynamique linéarisée sans vent \eqref{eq:linearized}. +Une réponse adéquate peut être observée, laquelle reste assez éloignée des saturations des actionneurs (voir section~\ref{sec:saturation}). L'augmentation des gains peut accélérer la réponse, mais produit toutefois des oscillations d'attitude indésirables. Il est donc intéressant de combiner ce contrôleur non linéaire (qui fournit une grande région d'attraction) avec un contrôleur possédant une vitesse de convergence supérieure, conçu sur la base de la dynamique linéarisée sans vent \eqref{eq:linearized}. \begin{figure}[ht!] @@ -86,7 +84,7 @@ \section{Contrôleur par retour d'état non-linéaire} \section{Contrôleur par retour d'état linéaire} \label{sec:ctrlLin} -Sur la base des observations de la section précédente et étant donné une position cible correspondant à un équilibre $\boldsymbol{p_{\text{eq}}}, \boldsymbol{q_{\text{eq}}}$ tel que caractérisé dans l'équation~\ref{eq:equilibria}, nous concevons ici un contrôleur par retour d'état linéaire capable de produire une réponse plus agressive. Pour cela, nous nous concentrons sur la dynamique linéarisée \eqref{eq:linearized} et proposons une loi de commande de la forme : +Sur la base des observations de la section précédente et étant donné une position cible correspondant à un équilibre $\boldsymbol{p_{\text{eq}}}, \boldsymbol{q_{\text{eq}}}$ tel que caractérisé dans l'équation~\ref{eq:equilibria}, nous concevons ici un contrôleur par retour d'état linéaire capable de produire une réponse rapidement convergene. Pour cela, nous nous concentrons sur la dynamique linéarisée \eqref{eq:linearized} et proposons une loi de commande de la forme : \begin{align} \boldsymbol{u_{\text{lin}}} := \boldsymbol{u_{\text{eq}}} - \boldsymbol{K} \boldsymbol{\tilde x}, \label{eq:u_lin} @@ -112,7 +110,7 @@ \section{Contrôleur par retour d'état linéaire} \label{fig_linearize_conv} \end{figure} -La figure \ref{fig_linearize_conv} montre une simulation commençant à l'origine avec un drone vertical et des vitesses linéaires et angulaires initiales sont nulles. La position cible est $\boldsymbol{p_{\text{eq}}} = [4,~5,~6]$ avec une stabilisation en vol stationnaire (drone vertical) avec $\beta = 0$. La ligne en pointillé représente la position de la cible sur chaque axe. Le dernier graphique montre la décroissance exponentielle souhaitable de $V$. +La figure \ref{fig_linearize_conv} montre une simulation commençant à l'origine avec un drone vertical et des vitesses linéaires et angulaires initiales nulles. La position cible est $\boldsymbol{p_{\text{eq}}} = [4,~5,~6]$ avec une stabilisation en vol stationnaire (drone vertical) avec $\beta = 0$. La ligne en pointillé représente la position de la cible sur chaque axe. Le dernier graphique montre la décroissance exponentielle souhaitable de $V$. La figure \ref{fig_linearize_conv} montre, à la fois, la simulation du modèle complet (continue) \eqref{eq:dyna_orig} et du modèle non linéaire simplifié \eqref{eq:withouwind} (en pointillé), ce qui met en évidence des différences dans la phase transitoire. Lorsqu'on fournit une position cible plus importante $\boldsymbol{p_{\text{eq}}} =[8,~9,~10]$(avec la même orientation), la condition initiale se situe en dehors du bassin d'attraction et une divergence apparaît, comme le montre la figure~\ref{fig_linearize_div}. @@ -126,10 +124,10 @@ \section{Contrôleur par retour d'état linéaire} -\section{Conception d'une commande locale-globale } +\section{Conception d'une commande locale-globale} \label{sec:ctrl_hyste} -Considérant les stratégies locales-globales présentées dans \cite[Ex. 1. 7]{65}, similaires à la solution présentée dans \cite{AndreettoFZ16}, nous utilisons un mécanisme hybride sélectionnant le contrôleur local agressif \eqref{eq:u_lin} (tant que l'état se trouve dans le bassin d'attraction de l'équilibre) ou le contrôleur non linéaire moins agressif \eqref{eq:u_nonlin}, qui fournit une plus grande région d'attraction (et peut être appelé, par abus de langage, le "contrôleur global"). À cette fin, nous ajoutons à l'état du contrôleur une variable d'état logique $\ell \in \{0,1\}$, qui régit le choix de l'entrée de contrôle entre \eqref{eq:u_nonlin} et \eqref{eq:u_lin} tel que : +Considérant les stratégies locales-globales présentées dans \cite[Ex. 1. 7]{65}, similaires à la solution présentée dans \cite{AndreettoFZ16}, nous utilisons un mécanisme hybride sélectionnant le contrôleur local avec une grande vitesse de convergence \eqref{eq:u_lin} (tant que l'état se trouve dans le bassin d'attraction de l'équilibre) ou le contrôleur non linéaire plus lent \eqref{eq:u_nonlin}, qui fournit une plus grande région d'attraction (et peut être appelé, par abus de langage, le "contrôleur global"). À cette fin, nous ajoutons à l'état du contrôleur une variable d'état logique $\ell \in \{0,1\}$, qui régit le choix de l'entrée de contrôle entre \eqref{eq:u_nonlin} et \eqref{eq:u_lin} tel que : \begin{align} \label{eq:u_hybrid} \boldsymbol{u}=\boldsymbol{u}_{\text{hyb}} := \ell \boldsymbol{u}_{\text{nl}} + (1-\ell) \boldsymbol{u}_{\text{lin}}. @@ -190,12 +188,12 @@ \section{Conception d'une commande locale-globale } \end{figure} Nous observons que sur la période $t \in \left[0,38\right]$, le drone -présente une convergence élégante mais lente vers la position cible souhaitée, en utilisant le contrôleur global ($\ell=1$). Dès lors, l'état discret $\ell$ entre dans l'ensemble $\mathcal{D}_1$ et le contrôleur local plus agressif est activé jusqu'à la convergence vers l'équilibre souhaité. +présente une convergence élégante mais lente vers la position cible souhaitée, en utilisant le contrôleur global ($\ell=1$). Dès lors, l'état discret $\ell$ entre dans l'ensemble $\mathcal{D}_1$ et le contrôleur local est activé jusqu'à la convergence vers l'équilibre souhaité, avec une vitesse plus élevée. Pour obtenir des simulations réalistes, les mesures sont affectées par le bruit des capteurs. La robustesse intrinsèque de la rétroaction hybride, établie dans \cite[Chapitre 7]{65}, est confirmée par le maintien des performances, malgré le bruit de mesure. -\section{Conclusion du Chapitre \ref{chap:hybrid}} +\section{Conclusion} L'objectif principal de ce chapitre est de proposer un mécanisme hybride capable d'utiliser deux modes de contrôle d'un drone convertible, pour naviguer entre deux points. diff --git a/chapters/Chapter4.tex b/chapters/Chapter4.tex index 78f5d55..625bfb1 100644 --- a/chapters/Chapter4.tex +++ b/chapters/Chapter4.tex @@ -165,7 +165,7 @@ \section{Résultats} \label{fig_exp_centrage_arr} \end{figure} -\section{Conclusion du Chapitre \ref{chap:3DOF}} +\section{Conclusion} Nous avons décrit une maquette permettant de simuler le vol d'un drone convertible, DarkO, en soufflerie. L'objectif de cette maquette est de tester le système de contrôle sur une représentation fidèle de la dynamique longitudinale, tout en simulant la dynamique de translation. Nous avons également présenté un contrôleur linéaire du type retour dynamique de sortie basé sur une architecture proportionnelle-intégrale pour la stabilisation du vol stationnaire dans des conditions de vent constant. Les gains du contrôleur ont été obtenus à l'aide d'une optimisation non convexe. Les résultats des essais expérimentaux montrent qu'il est possible de stabiliser l'équilibre en vol stationnaire dans la plage de vitesse du vent testée. Toutefois, d'autres architectures de contrôle devraient être étudiées à l'avenir pour traiter les oscillations indésirables. Ces résultats indiquent qu'il est nécessaire de tester cette architecture de commande sur un modèle complet à six degrés de liberté. diff --git a/chapters/Chapter5.tex b/chapters/Chapter5.tex index 22e5e7a..c75bf08 100644 --- a/chapters/Chapter5.tex +++ b/chapters/Chapter5.tex @@ -467,7 +467,7 @@ \subsection{Résultats expérimentaux} -\section{Conclusion du Chapitre \ref{chap:LMI}} +\section{Conclusion} \todo{reprendre} Pour traiter de la synthèse d'un retour statique de sortie, nous peupouvons envisager deux approches étant donné le caractère non convexe et - difficile du problème. La première approche consiste à utiliser des outils d'optimisation non convexes pour directement optimiser les variables de décision du contrôleur, à savoir les matrices de gain. C'est ce qui est présenté dans le chapitre \ref{chap:3DOF} et \ref{chap:6DOF} en utilisant l’optimisation non-lisse et la fonction {\tt Systune} de Matlab. La seconde approche consiste à utiliser des outils d'optimisation non convexe, ici l'outil LMI, pour résoudre un problème qui ne l'est pas puisque BMI. Il s'agit alors de proposer un algorithme, ici itératif, de résolution du problème BMI en une succession de problèmes LMI. C'est donc par exemple l'approche développe dans \cite{Arzelier2018} qui a été implémentée et testée en simulation et expérimentalement sur le drone. diff --git a/chapters/Chapter6.tex b/chapters/Chapter6.tex index b22f830..571326d 100644 --- a/chapters/Chapter6.tex +++ b/chapters/Chapter6.tex @@ -407,7 +407,7 @@ \section{Vol expérimental en soufflerie ouverte} \todo{Explication du dernier graphique} -\section{Conclusion du Chapitre \ref{chap:6DOF}} +\section{Conclusion} Nous avons proposé un schéma de contrôle pour la stabilisation d'un \textit{tailsitter} lors d'un vol stationnaire en présence d'un vent constant inconnu. Notre bouclage contient une action intégrale et ne nécessite pas la mesure de la vitesse du vent. Les modèles paramétriques linéarisés se sont avérés être un instrument clé pour effectuer la synthèse d'un contrôleur robuste aux différents cas de vent. Après avoir étudié les résultats de la simulation, nous avons mené une campagne de vols expérimentaux dans un environnement contrôlé pour valider notre solution de contrôle. diff --git a/chapters/Chapter7.tex b/chapters/Chapter7.tex index 651ff1f..8122af4 100644 --- a/chapters/Chapter7.tex +++ b/chapters/Chapter7.tex @@ -150,7 +150,7 @@ \subsection{Description de l'architecture} \caption{Visualisation de l'encodeur rotatif sur le modèle 3D (gauche) et modèle réel (droite).} \label{fig:ColibriRotReel} \end{figure} - Le montage réel est proposé sur la figure \ref{fig:ColibriRotReel} de droite. On observe le montage du contrôleur moteur avec les fils qui vont jusqu'au moteur (3 par moteur soit un total de 12 fils) et le câbles de commande de l'ESC, les câbles de l'encodeur rotatif et les câbles de commandes des servomoteurs (3 fils, car les servomoteurs sont chainés) et enfin les câbles de l'IMU installé sur l'aile. + Le montage réel est proposé sur la figure \ref{fig:ColibriRotReel} de droite. Nous observons le montage du contrôleur moteur avec les fils qui vont jusqu'au moteur (3 par moteur soit un total de 12 fils) et le câbles de commande de l'ESC, les câbles de l'encodeur rotatif et les câbles de commandes des servomoteurs (3 fils, car les servomoteurs sont chainés) et enfin les câbles de l'IMU installé sur l'aile. } \subsection{Modélisation} @@ -212,7 +212,7 @@ \subsection{Modélisation} $\boldsymbol{L}_{\text{i}}^{\text{F}} \left( \boldsymbol{q}_{\text{F}} \right) = \frac{\partial \boldsymbol{R}_{i}}{\partial \boldsymbol{q}}(\boldsymbol{q}_{\text{F}}) \in \real^{3\times4}$ et $\boldsymbol{L}_{\boldsymbol{O}_{\text{F}}^{\text{W}}} = \sum_{i=1}^{3} \boldsymbol{d}_{\text{FW}}(i) \boldsymbol{L}_{\text{i}}^{\text{F}} (\boldsymbol{q}_{\text{F}})$, $i \in {1,2,3}$, où $\boldsymbol{d}_{\text{FW}}(i)$ désigne la i-ème composante du vecteur $\boldsymbol{d}_{\text{FW}} = \boldsymbol{p}_{\text{W}} - \boldsymbol{p}_{\text{F}}$. Comme le point $\boldsymbol{O}_{\text{W}}$ est situé au centre de rotation de l'aile, la distance $\boldsymbol{d}_{\text{FW}}$ est une constante, puisque $\boldsymbol{O}_{\text{W}}$ et $\boldsymbol{O}_{\text{F}}$ appartiennent au même solide (le fuselage). -On en déduit, avec l'homogénéité, $\dot{\boldsymbol{L}}_{\boldsymbol{O}_{\text{F}}^{\text{W}}} = \sum_{i=1}^{3} \boldsymbol{d}_{\text{FW}}(i) \boldsymbol{L}_{\text{i}}^{\text{F}} (\dot{\boldsymbol{q}}_{\text{F}})$. Avec ces définitions, les matrices de \eqref{eq:udwadia} sont : +Nous en déduisons, avec l'homogénéité, $\dot{\boldsymbol{L}}_{\boldsymbol{O}_{\text{F}}^{\text{W}}} = \sum_{i=1}^{3} \boldsymbol{d}_{\text{FW}}(i) \boldsymbol{L}_{\text{i}}^{\text{F}} (\dot{\boldsymbol{q}}_{\text{F}})$. Avec ces définitions, les matrices de \eqref{eq:udwadia} sont : \begin{align} \boldsymbol{M} = \begin{bmatrix} @@ -300,8 +300,12 @@ \subsection{Modélisation} -Enfin, $\boldsymbol{F}_{\text{F}} = \boldsymbol{F}_{m}$ et $\boldsymbol{M}_{\text{F}}$ représentent respectivement l'ensemble des forces et moments non gravitationnels agissant sur le fuselage exprimés dans le repère $O_{\text{W}}$. En particulier, $\boldsymbol{F}_{m} = - k_{\text{p}} {u_{\text{tail}}}^{2}$ est la force générée par le moteur situé à l'arrière du fuselage et $u_{\text{tail}}$ est la vitesse de rotation du moteur telle que : +Enfin, $\boldsymbol{F}_{\text{F}} = \boldsymbol{F}_{m}$ et $\boldsymbol{M}_{\text{F}}$ représentent respectivement l'ensemble des forces et moments non gravitationnels agissant sur le fuselage exprimés dans le repère $O_{\text{W}}$. En particulier, $\boldsymbol{F}_{m} = - k_{\text{p}} {u_{\text{tail}}}^{2}$ est la force générée par le moteur situé à l'arrière du fuselage et $u_{\text{tail}}$ est la vitesse de rotation du moteur. + +Nous utilisons le théorème fondamental de la statique et nous isolons le fuselage. Les deux moments qui agissent sur le fuselage sont le couple dû à la force de poussée du moteur (en rouge sur la figure \eqref{fig:colibri_frame_side}) et le couple dû à la position du centre de gravité du fuselage (en bleu sur la figure \eqref{fig:colibri_frame_side}). Il en resulte l'équation suivante : + \begin{align} + \label{eq:momentfuselage} \boldsymbol{M}_{\text{F}} = m_{\text{F}} g \boldsymbol{e}_3 \times \boldsymbol{d}_{\text{G}O_{\text{W}}} + \boldsymbol{F}_{m} \times \boldsymbol{d}_{\text{M}O_{\text{W}}}, \end{align} où $\boldsymbol{d}_{\text{M}O_{\text{W}}}$ est la distance entre l'emplacement du moteur et le centre de rotation et $\boldsymbol{d}_{\text{G}O_{\text{W}}}$ est la distance entre l'emplacement du centre de gravité du fuselage et le centre de rotation. @@ -417,7 +421,7 @@ \subsection{Estimation de la vitesse angulaire} où $\kappa$ est la mesure angulaire récupérée du capteur, $k_{p}$ et $k_{v}$ sont deux gains scalaires positifs tels que l'équation caractéristique $s^{2} + k_{v} s + k_{p} = 0$ ait des racines à partie réelle négative. Pour notre estimateur, nous avons choisi $k_{p} = 1$ et $k_{v} = 1,3$ de manière à obtenir un facteur d'amortissement $\zeta = 0,65$ conduisant à une réponse légèrement sous-amortie comme compromis approprié entre un temps de montée rapide et une réponse légèrement oscillatoire. Le gain $\epsilon_{\kappa}$ peut être ajusté de manière pratique afin d'obtenir un compromis entre l'action de lissage (obtenue en augmentant $\epsilon_{\kappa}$) et la réduction du retard temporel de l'estimateur (obtenue en réduisant $\epsilon_{\kappa}$). En outre, l'action de lissage de l'approche proposée atténue l'effet de la quantification de la mesure angulaire. Nous avons choisi $\epsilon_{\kappa} = 0,05$ pour nos expériences. La Figure~\ref{fig:high_gain} montre les résultats expérimentaux obtenus après la mise en œuvre du filtre grand gain \eqref{eq:high_dyn} dans le cas d'un vol générant des oscillations angulaires de grande amplitude. -Nous avons effectué une dérivation par différence finie (en vert) en post-traitement pour comparer les résultats. En raison de la nature quantifiée de l'encodeur rotatif, nous observons que la vitesse angulaire obtenue par différence finie est très bruitée. On constate que le filtre grand gain permet d'estimer la vitesse angulaire avec plus de précision (en rouge), bien qu'avec un léger retard. Grâce à l'ajout d'une IMU supplémentaire sur l'aile lors d'un essai en vol, il est possible de comparer l'estimation de la vitesse avec les mesures du gyroscope de l'aile (MPU9250), visibles sur le graphique du bas de la Figure~\ref{fig:high_gain} (trace bleue). On constate que les mesures du gyroscope sont quelque peu bruitées, notamment en raison des vibrations générées par les moteurs. +Nous avons effectué une dérivation par différence finie (en vert) en post-traitement pour comparer les résultats. En raison de la nature quantifiée de l'encodeur rotatif, nous observons que la vitesse angulaire obtenue par différence finie est très bruitée. Nous constatons que le filtre grand gain permet d'estimer la vitesse angulaire avec plus de précision (en rouge), bien qu'avec un léger retard. Grâce à l'ajout d'une IMU supplémentaire sur l'aile lors d'un essai en vol, il est possible de comparer l'estimation de la vitesse avec les mesures du gyroscope de l'aile (MPU9250), visibles sur le graphique du bas de la Figure~\ref{fig:high_gain} (trace bleue). Nous constations que les mesures du gyroscope sont quelque peu bruitées, notamment en raison des vibrations générées par les moteurs. \begin{figure}[ht!] \centering @@ -514,30 +518,36 @@ \section{Inversion non linéaire incrémentale de la dynamique du drone} \end{align*} Cette sélection de la matrice d'efficacité a été déterminée pour les vols stationnaires, mais il est nécessaire d'effectuer une étude différente pour le vol vers l'avant. +\section{Stabilisation du fuselage} +\label{sec:stabfus} Pour stabiliser le fuselage, nous utilisons un bouclage proportionnel-dérivé de l'angle $\theta_{\text{F}}$ formé entre le fuselage et l'horizontale, que nous voulons maintenir à zéro. Cet angle est obtenu en convertissant le quaternion $q_{\text{F}}$ de l'équation \eqref{eq:quat_fuselage} en un angle d'Euler en suivant la convention d'Euler 'ZYX'. Le bouclage fournit la commande $u_{\text{tail}}$ pour la vitesse angulaire du moteur générant la force $F_{m}$ (voir Figure~\ref{fig:colibri_frame_side}), suivant l'expression : -\begin{align*} - u_{\text{tail}} = u_{eq} + k_{p} \theta_{\text{F}} + k_{d} \dot{\theta_{\text{F}}}, -\end{align*} -où $u_{eq}$ est la commande, à l'équilibre, du moteur pour maintenir le fuselage horizontal en l'absence de perturbation et $k_{p}$, $k_{d}$ sont des gains scalaires ajustables. La valeur $u_{eq}$ a été obtenue en appliquant le théorème des moments au fuselage au point $O_{\text{W}}$. En effet, les deux moments qui agissent sur le fuselage sont le couple dû à la force de poussée du moteur et le couple dû à la position du centre de gravité du fuselage. Ces deux forces sont représentées sur la figure \ref{fig:colibri_fus_force}. -\begin{figure}[ht!] - \centering - \includegraphics[trim={0 15cm 0 25cm},clip, width=0.6\columnwidth]{figures/colibriMoment.png} - \caption{Force agissant sur le fuselage de Colibri.} - \label{fig:colibri_fus_force} -\end{figure} -Nous utilisons le théorème des moments $\sum M = 0$ pour obtenir la commande à l'équilibre du moteur $u_{eq}$ -\todo{Expliquer les moments} +\begin{align} + \label{eq:pidfus} + u_{\text{tail}} = u_{\text{tail},eq} + k_{p} \theta_{\text{F}} + k_{d} \dot{\theta_{\text{F}}}, +\end{align} +où $u_{eq}$ est la commande, à l'équilibre, du moteur pour maintenir le fuselage horizontal en l'absence de perturbation et $k_{p}$, $k_{d}$ sont des gains scalaires ajustables. Nous obtenons $\dot{\theta}_{\text{F}}$ à partir de $\boldsymbol{\omega}_{gyro}^{F} = [\dot{\phi}_{\text{F}}~\dot{\theta}_{\text{F}}~\dot{\psi}_{\text{F}}]^\top$. -Les gains $k_{p}$ et $k_{d}$ ont été ajustés en vol pour assurer un comportement satisfaisant. On obtient $\dot{\theta}_{\text{F}}$ à partir de $\boldsymbol{\omega}_{gyro}^{F} = [\dot{\phi}_{\text{F}}~\dot{\theta}_{\text{F}}~\dot{\psi}_{\text{F}}]^\top$. +{\color{blue} La valeur $u_{\text{tail},eq}$ a été obtenue en utilisant l'équation \eqref{eq:momentfuselage}. Nous annulons cette dernière $\sum \overrightarrow{M}_{O_{\text{W}}} = \overrightarrow{0}$ et nous obtenons : +\begin{align} + \label{eq:momentnul} + m_{\text{F}} g \boldsymbol{e}_3 \times \boldsymbol{d}_{\text{G}O_{\text{W}}} + \boldsymbol{F}_{m} \times \boldsymbol{d}_{\text{M}O_{\text{W}}} = \overrightarrow{0} +\end{align} +En utilisant \eqref{eq:momentnul} et $\boldsymbol{F}_{m,eq} = - k_{\text{p}} {u_{\text{tail},eq}}^{2}$, nous obtenons : +\begin{align} + u_{\text{tail},eq} = \sqrt(\frac{mg {z}_{\text{G}O_{\text{W}}} }{k_{\text{p}} {z}_{\text{M}O_{\text{W}}} }) +\end{align} +avec ${z}_{\text{G}O_{\text{W}}}$ et ${z}_{\text{M}O_{\text{W}}}$, respectivement, la troisième composante de $\boldsymbol{d}_{\text{G}O_{\text{W}}} $ et $\boldsymbol{d}_{\text{M}O_{\text{W}}}$. +Les gains $k_{p}$ et $k_{d}$ ont été ajustés lors d'un montage sur un banc de test pour assurer un comportement satisfaisant. \begin{figure}[ht!] \centering \includegraphics[trim={0 15cm 0 25cm},clip, width=0.6\columnwidth]{figures/IMG_20230120_141852.jpg} \caption{Maquette expérimentale du fuselage de Colibri.} \label{fig:colibri_fus} \end{figure} - +Le banc de test de la figure \eqref{fig:colibri_fus} est un montage du fuselage sur un pivot fixe devant la soufflerie ouverte. Ce montage permet d'apprécier le fonctionnement de la commande \eqref{eq:pidfus} et son comportement face au vent. +} @@ -566,13 +576,54 @@ \section{Expérimentations} \caption{Position et orientation de l'aile (six premiers graphiques) et mesure de l'angle entre l'aile et le fuselage (dernier graphique), lors d'un vol réel. } \label{fig:colibri_flight} \end{figure} +{\color{blue} -% \section{Vol avec un contrôleur unifié} +\section{Vol avec un contrôleur INDI unifié} + Au vu du vol expérimental de la Figure~\ref{fig:colibri_flight}, nous avons supprimé le contrôleur proportionnel-dérivé du fuselage pour utiliser l'INDI. Nous ajoutons le moteur du fuselage comme actionneur dans le vecteur de commande $\boldsymbol{u}_{\text{W}}$ et nous ajoutons un nouvel objectif de stabilisation, lequel correspond à la stabilisation du fuselage $u_{\text{tail}}$. + + \begin{align*} + \begin{bmatrix} + \partial \phi \\ + \partial \theta \\ + \partial \psi \\ + \partial T \\ + \partial \theta_{\text{F}} + \end{bmatrix}\! =\! \boldsymbol{G} \boldsymbol{u}_{\text{W}} \!=\! + \begin{bmatrix} + -7.5 & -15 & 7.5 & 15 & 0 & 0 & 0\\ + 0 & 0 & 0 & 0 & 15 & 15 & 0\\ + 0 & 0 & 0 & 0 & 4 & -4 & 0 \\ + -0.6 & -0.6 & -0.6 & -0.6 & 0 & 0 & 0\\ + 0 & 0 & 0 & 0 & 0 & 0 & 15 \\ + \end{bmatrix} + \boldsymbol{u}_{\text{W}} + \end{align*} + + + Dans le cas dynamique, le mouvement de l'aile et donc du point d'attache à un impact sur le fuselage. Il est donc nécessaire de réalisé une étude dynamique \eqref{eq:dynamiquependule}. Toutefois, en l'absence de vent l'actionneur utilisé pour stabiliser le fuselage est le moteur qui ne peux générer qu'une force vers le bas (comme développé dans la section \ref{sec:stabfus}). + \begin{remark} + \label{rem:irréversibilité} + En raison de l'irréversibilité de la génération de force par le moteur du fuselage, une accélération positive ne pourra pas être contrebalancé par le moteur. Lors d'une décélération, une augmentation de la vitesse de rotation du moteur permet de compenser les accélérations linéaires et donc de maintenir le fuselage horizontal. + \end{remark} + + Il est possible d'anticiper la commande de vitesse angulaire du fuselage en fonction des accélérations linéaires verticale $\ddot{z}$ et horizontale $\ddot{x}$ de l'aile. -% \todo{feedforward accélération} -% {\color{blue} - Dans le cas dynamique, le mouvement de l'aile et donc du point d'attache à un impact sur le fuselage. Il est donc nécessaire de réalisé une étude dynamique. Toutefois, en l'absence de vent l'actionneur utilisé poiur stabiliser le fuselage est le moteur qui ne peux generé qu'une force veers le bas. Ainsi, lors d'une accélération positive il ne sera pas possible de contrebalancer l'effet de l'acceleration sur le fuselage avec le moteur. Lors d'une décélération, une augmentation de la -% } + \begin{align} + \label{eq:dynamiquependule} + m l^{2} \ddot{\theta}_{\text{p}} + ml(g-\ddot{z}) \sin{\theta_{\text{p}}} + ml \ddot{x} \cos{\theta_{\text{p}}} = 0\\ + \implies \ddot{\theta}_{p} = -\frac{1}{l} \left( (g-\ddot{z})\sin{\theta_{\text{p}}} + \ddot{x} \cos{\theta_{\text{p}}} \right) + \end{align} + avec $l = \| \boldsymbol{d}_{\text{G}O_{\text{W}}} \|$ et $\theta_{\text{p}} = \theta_{\text{F}} - \frac{\pi}{2} - \arctan{\frac{{x}_{\text{G}O_{\text{W}}}}{{z}_{\text{G}O_{\text{W}}}}}$ + En régime stationnaire, nous avons un équilibre qui assure que l'accélération de la gravité $g$ est compensé par la traction de l'hélice $\boldsymbol{F}_{m}$. Nous discrétisons cette équation pour obtenir le commande feedforward de vitesse angulaire : + \begin{align} + \label{eq:feedforward} + \dot{\theta}_{p} (t+1) = -\frac{1}{l} \left( (-\ddot{z})\sin{\theta_{\text{\text{p}}}} + \ddot{x} \cos{\theta_{\text{p}}} \right) + dot{\theta}_{\text{p}} (t) + \end{align} + De cette équation \eqref{eq:feedforward}, nous observons qu'il est possible de généré une trajectoire qui permette d'accélérer horizontalement sans générer un changement de vitesse angulaire du fuselage (qui ne pourrait pas être compensé voir remarque \ref{rem:irréversibilité}). Cette trajectoire utilise une accélération verticale $\ddot{z}$ pour assurer $ (-\ddot{z})\sin{\theta_{\text{p}}} + \ddot{x} \cos{\theta_{\text{p}}} = 0 $. Cette trajectoire est donc ascendante. Une autre solution à la remarque \ref{rem:irréversibilité} est de permettre la génération d'une force bidirectionnelle (en ajoutant un second moteur ou un servomoteur pour diriger la force). + + + +} % \section{Commande Udwadia-Kalaba} @@ -580,7 +631,12 @@ \section{Expérimentations} % \section{Vols expérimentaux} -\section{Conclusion du Chapitre \ref{chap:colibri}} +\section{Conclusion} + +Ce chapitre propose une nouvelle architecture de drone \textit{freewing} qui possède des caractéristiques intéressantes, telle qu'un fuselage maintenu horizontal pendant toutes les phases de vol, un décollage et un atterrissage vertical, et une passivité naturelle aux perturbations de vent. Toutefois, de nombreuse complexité apparaissent avec cette architecture. La modélisation multicorps mener à permis d'obtenir un modèle représentant le comportement du drone et une identification à isolé les coefficients pour que le modèle soit le plus réaliste. Un travail a été mener sur l'estimation de l'état d'un tel drone permettant de conclure sur la meilleure position pour l'installation des capteurs et l'implémentation de la démarche nécessaire pour réaliser l'estimation de l'état. + +À l'aide de cette dernière, une stabilisation basée sur une double boucle INDI et proportionnel-dérivé a permis de réaliser une validation expérimentale de la maquette, de l'estimation de l'état, mais cette implémentation a montré les limite d'une architecture à deux boucles. Nous avons donc proposé une architecture de commande unifier permettant le contrôle expérimental d'un drone à fuselage pendulaire non actionné. + diff --git a/chapters/Conclusion.tex b/chapters/Conclusion.tex index b4255b1..522cae4 100644 --- a/chapters/Conclusion.tex +++ b/chapters/Conclusion.tex @@ -2,14 +2,13 @@ \chapter*{Conclusion} \addstarredchapter{Conclusion} \todo{Faire la conclusion} { \color{red} -Répondre aux objectifs de l'introduction qui engendrent les ouvertures - - Nous avons utilisé un modèle de la littérature, sans singularité sur l'ensemble du domaine de vol, ne faisant pas appel aux angles aérodynamiques $\alpha$ et $\beta$. Ce modèle mathématique n'a d'utilité pratique que s'il est cohérent avec la réalité, ce qui a pu être démontré dans la littérature et qui est confirmé par nos travaux. De ce modèle, nous avons pu extraire des caractéristiques intéressantes pour les drones à décollage et atterrissage vertical. -Nous avons caractérisé l'ensemble de point d'équilibre avec ou sans vent pour +Nous avons caractérisé l'ensemble de point d'équilibre avec ou sans vent pour un \textit{tailsitter}. De ces équilibres, nous avons extrait la dynamique linéarisée. + + \section{Limite de l'étude} diff --git a/main.pdf b/main.pdf index ed380f2..9f03f3a 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/main.synctex.gz b/main.synctex.gz index c688be5..688704b 100644 Binary files a/main.synctex.gz and b/main.synctex.gz differ