Wiki » Historique » Version 18
Anonyme, 01/05/2020 17:30
1 | 1 | Anonyme | *INTRODUCTION* |
---|---|---|---|
2 | |||
3 | Le projet Polytech est un projet qui se déroule sur les deux années de PeiP (Parcours des Écoles d’Ingénieur Polytech). Le but est de travailler par groupe de trois ou quatre sur un sujet choisi au préalable afin d’apprendre à collaborer en équipe. En effet, savoir mener à bien une étude fait partie intégrante du métier d’ingénieur. Ainsi, le projet Polytech consiste en une première mise en situation de ce savoir-faire indispensable. |
||
4 | |||
5 | 18 | Anonyme | |
6 | 1 | Anonyme | Dans notre cas, nous avons choisi le projet proposé par M. Laffont dont l’intitulé est le suivant : |
7 | +Le Simulateur de drone+. |
||
8 | |||
9 | L’objectif de ce projet est de modéliser le fonctionnement d’un drone dans un environnement virtuel à l’aide du logiciel Raydium. Ce travail implique différents aspects car avant de recréer un drone, il faut savoir comment celui fonctionne, c’est-à-dire connaitre les forces nécessaires à ses différents mouvements puis savoir traduire ces actions en language informatique. La modélisation 3D du drone fait également partie des tâches à effectuées. |
||
10 | |||
11 | Ce rapport sera découpé en 4 parties. Dans un premier temps, nous expliciterons concrètement l’aspect mécanique de ce projet, c’est-à-dire que nous étudierons quelles forces sont nécessaires pour qu’un drone décolle, vole, avance, recule, etc. Ensuite, nous nous attarderons sur la présentation d’un outil indispensable : le moteur de jeu. Ensuite, nous développerons l’aspect régulation du projet. Enfin, la modélisation du drone et des forces seront expliquées. |
||
12 | |||
13 | |||
14 | |||
15 | |||
16 | 4 | Anonyme | h1. *+ASPECT MÉCANIQUE+* |
17 | 2 | Anonyme | |
18 | Tout d’abord, un drone est un aéronef dont le pilotage n’est pas effectué par un être humain à son bord mais par pilotage automatique ou télécommandé. Plusieurs usages sont possibles, allant de l’utilisation civile et récréative à une utilisation militaire. |
||
19 | De ce fait, il existe plusieurs modèles n’utilisant pas tous les mêmes procédés de vol. En effet, à l’inverse de drones militaire, les drones civils fonctionnent pour la plupart via un système de rotors. |
||
20 | 4 | Anonyme | Dans notre projet nous nous sommes donc attelés à modéliser un drone quadrirotor, il a alors fallu que nous nous intéressions dans un premier temps au fonctionnement réel de ces derniers. Ainsi, il a été nécessaire d’étudier plusieurs aspects physique en relation avec le drone afin de réaliser notre modélisation. Tout d’abord, il a été nécessaire de s’intéresser aux forces qui s’appliquent sur le drone du décollage à l’atterrissage. Ensuite, dans l’optique de mettre en mouvement le drone nous avons dûs étudier les différents mouvements réalisable par un drone afin de les transposer lors des simulations. |
21 | 9 | Anonyme | |
22 | 1 | Anonyme | |
23 | 18 | Anonyme | h2. +Forces exercées sur le drone :+ |
24 | |||
25 | 2 | Anonyme | Il existe plusieurs forces qui vont s’exercer sur le drone, parmi elles des forces générées par le drone lui même et d’autres extérieure à celui-ci. On compte alors quatre forces majeures interagissant avec le drone : |
26 | |||
27 | -la gravité (poids) est la force qui tend à ramener le drone au sol, plus le drone est lourd et plus l’attraction gravitationnelle sera importante. |
||
28 | |||
29 | 3 | Anonyme | -la portance correspond à la force de poussée générée par le drone, pour que celui-ci décolle elle doit alors être supérieure à la gravité. |
30 | 2 | Anonyme | |
31 | 3 | Anonyme | -la traction, correspondant à la force qui fait avancer le drone par inclinaison de ce dernier |
32 | 1 | Anonyme | |
33 | -la trainée, qui est la force s’opposant à la traction du fait de la résistance de l’air sur l’avancée du drone, elle agit comme un frottement. |
||
34 | 18 | Anonyme | |
35 | 9 | Anonyme | !IMAGE1.png! |
36 | 1 | Anonyme | |
37 | |||
38 | 18 | Anonyme | h2. +Forme des hélices+ |
39 | |||
40 | 9 | Anonyme | Tout comme les avions, les drones utilisent la portance afin de décoller puis voler. En effet, d’après la Troisième Loi de Newton, “Tout corps A exerçant une force sur un corps B subit une force de même intensité, de même direction mais de sens opposée exercée par le corps B.”. Ici désignons l’hélice comme A et l’air comme B. A étant en mouvement (rotation) elle va rencontrer et dévier une masse d’air B. L’hélice, applique donc une force vers le bas sur l’air. En contrepartie l’air va appliquer une force d’intensité égale vers le haut qui va permettre, lorsque la vitesse des hélices sera suffisante, de faire décoller le drone. |
41 | 1 | Anonyme | |
42 | 9 | Anonyme | Ainsi, la troisième loi de Newton justifie la forme inclinée des hélices du drone puisque cette inclinaison permet d’envoyer plus d’air vers le bas et donc de créer une force de portance plus importante. |
43 | 18 | Anonyme | |
44 | 1 | Anonyme | !IMAGE2.png! |
45 | |||
46 | 11 | Anonyme | |
47 | 18 | Anonyme | h2. +Définitions des mouvements selon les axes X,Y,Z :+ |
48 | |||
49 | 1 | Anonyme | Intéressons nous maintenant aux différents mouvements du drone il convient alors dans un premier temps de définir les axes par rapport auxquels ils sont effectués. |
50 | 18 | Anonyme | |
51 | 13 | Anonyme | !IMAGE3.png! |
52 | |||
53 | 18 | Anonyme | Le tangage regroupe les mouvements faisant avancer reculer le drone par rotation autour de l'axe Y. Le Roulis lui, comporte les mouvements de déplacement du drone vers la gauche et vers la droite par rotation autour de l'axe X, tandis que le Lacet permet une rotation horizontale sur place autour de l’axe Z. |
54 | 13 | Anonyme | |
55 | Ces notions vont nous permettrent de définir les différents mouvements basiques que peut effectuer un drone ainsi que leurs mise en oeuvre. |
||
56 | |||
57 | 1 | Anonyme | Ainsi, nous verrons par la suite qu’afin d’effectuer ces différents mouvements il est nécessaire de jouer sur la vitesse de rotation des hélices. Pour ce faire, chaque rotor est relié à un seul moteur ce qui permet à chaque hélice de tourner à des vitesses différentes les unes des autres. De ce fait, cela permet au drone de mieux répondre aux différentes contraintes qu'il subit mais également d'effectuer les divers mouvements autours des axes X,Y et Z. |
58 | 13 | Anonyme | |
59 | Intéressons nous maintenant à la réalisation de ces différents mouvements. |
||
60 | 1 | Anonyme | |
61 | 13 | Anonyme | |
62 | 18 | Anonyme | h2. +Montée & descente :+ |
63 | 1 | Anonyme | |
64 | Premièrement, afin que le drone puissent décoller les hélices doivent créer une force plus importante que celle générée par le poids du drone permettant ainsi son envol. A l’inverse, pour descendre toutes les hélices diminuent de vitesse, le drone descend alors car la force exercée par son poid devient supérieur à sa force d’élévation. Lors de la montée descente, toutes les hélices tournent à la même vitesse permettant d’avoir un unique mouvement selon l’axe Z. |
||
65 | 18 | Anonyme | |
66 | 13 | Anonyme | !IMAGE4.png! |
67 | 14 | Anonyme | |
68 | 1 | Anonyme | |
69 | 18 | Anonyme | h2. +Stabilité en vol stationnaire :+ |
70 | |||
71 | 14 | Anonyme | Dans la réalité, afin d’assurer une bonne stabilité les hélices sont placées symétriquement afin de ne pas créer de déséquilibres sur le drone. Ces dernières une fois en vol vont alors tourner à la même vitesse afin que chaque hélice génère la même force pour qu’une fois encore il n’y ait pas de déséquilibres. De plus, la bonne stabilité du drone sera également assurée par une inversion par paire du sens de rotation des hélices. |
72 | |||
73 | 1 | Anonyme | Ainsi, les hélices M1 et M3 tourneront dans le sens horaire tandis que M2 et M4 tourneront en sens anti-horaire. |
74 | 18 | Anonyme | |
75 | 14 | Anonyme | !IMAGE5.png! |
76 | 1 | Anonyme | |
77 | 14 | Anonyme | Cela a pour effet d’annuler le couple créé par la rotation de chaque hélice. De ce fait, les forces faisant tourner le drone vers la droite sont compensées par celle le faisant tourner vers la gauche. En effet si toutes les hélices tournaient toutes dans le même sens alors le drone tournerait sur lui-même. |
78 | |||
79 | |||
80 | 18 | Anonyme | h2. +Mouvement de tangage et de roulis :+ |
81 | |||
82 | 14 | Anonyme | Pour que le drone avance et recul (mouvement de tangage) ou se déplace latéralement (mouvement de roulis) il faut créer une inclinaison du drone par rapport à l’horizontale. Afin de créer cette angle, il est nécessaire de diminuer la puissance des moteurs dans la direction de mouvement souhaitée et d’augmenter en parallèle la puissance des deux moteurs opposés afin de conserver la même altitude. |
83 | 18 | Anonyme | |
84 | 1 | Anonyme | !IMAGE6.png! |
85 | 14 | Anonyme | |
86 | 1 | Anonyme | Une fois l’angle créé le drone avance dans la direction que l’on a choisie, à savoir celle où les rotors ont diminués de puissances. En effet, les forces créées par les hélices ne sont alors plus absolument verticales mais possèdent désormais une composante horizontale responsables du mouvement. |
87 | 18 | Anonyme | |
88 | 15 | Anonyme | !IMAGE7.png! |
89 | |||
90 | |||
91 | 18 | Anonyme | h2. +Mouvement de lacet :+ |
92 | |||
93 | 1 | Anonyme | Le mouvement de lacet simple va permettre au drone d’effectuer une rotation sur place vers la droite ou vers la gauche. Pour ce faire, il faut diminuer la puissance des deux moteurs dont les hélices tournent en sens opposé à la rotation souhaitée. En parallèle, on augmente la puissance des hélices qui elles tournent dans le même sens que la rotation à effectuer. Ainsi, pour effectuer une rotation horaire, il faut diminuer la puissance des rotors tournant dans le sens anti-horaires et augmenter ceux tournant dans le sens horaire et inversement. |
94 | 18 | Anonyme | |
95 | 1 | Anonyme | !IMAGE8.png! |
96 | |||
97 | Pour ce mouvement de lacet, on utilise le couple créé par la rotation des hélices afin de tourner. Initialement, ce couple est compensé par l’inversion du sens de rotation des hélices deux à deux, les hélices sur la même diagonales tournant dans le même sens. Ainsi, lorsqu’on diminue une paire d’hélices tournant dans le même sens, le couple associé créé par ces dernières diminue également. L’équilibre est rompu et le drone effectue une rotation sur lui même dans le sens de rotation des deux autres hélices ayant conservées leur puissance. |
||
98 | |||
99 | |||
100 | Maintenant que l'aspect mécanique du projet a été présenté, intéressons-nous à l'aspect moteur de jeu |
||
101 | 18 | Anonyme | |
102 | |||
103 | |||
104 | |||
105 | h1. +ASPECT MOTEUR DE JEU+ |
||
106 | |||
107 | Cette partie a pour objectif de présenter ce qu’est un moteur de jeu. En effet, la réalisation de notre projet aurait été impossible sans l’aide d’un tel outil étant donné nos faibles compétences de départ dans le domaine de la simulation informatique. |
||
108 | |||
109 | |||
110 | h2. +Définition et première approche+ |
||
111 | |||
112 | Un moteur de jeu est un outil informatique principalement utilisé dans le domaine du jeux vidéo. Il s’agit en fait d’un logiciel qui offre aux développeurs les fonctionnalités nécessaires à la création d’une application. De nos jours, l’utilisation d’un moteur de jeu par les studios de développement représente un gain de temps (et d’argent) car cela évite de devoir programmer un jeu de A à Z. |
||
113 | Ainsi, le moteur de jeu est en quelque sorte le « chef d’orchestre » d’une simulation car c’est lui qui gère et met en relation les différents domaines du jeu vidéo tels que la physique, l’audio, les entrées de l’utilisateur, l’éclairage de la scène, les animations etc. En fait, il est important de comprendre qu’un tel dispositif est la plupart du temps constitué d’une multitude de sous-moteurs commandant chacun un aspect du jeu. |
||
114 | |||
115 | !IMAGE9.png! |
||
116 | |||
117 | Concrètement, l’objectif d’un moteur de jeu est de recréer les caractéristiques du monde réel (la gravité par exemple) dans un environnement virtuel. On en distingue deux types : |
||
118 | |||
119 | - Le moteur 2D qui offre un rendu en deux dimensions par empilement d’images matricielles. Une image matricielle est une image formée à partir d’un tableau dont les cellules représentent un point de l’image. |
||
120 | |||
121 | - Le moteur 3D qui utilise des calculs de projection pour obtenir des images en trois dimensions |
||
122 | |||
123 | Voici une liste des moteurs de jeu les plus répandus : Unreal engine, Open GL, Renderware etc. |
||
124 | |||
125 | Concernant notre projet, le moteur de jeu que nous avons utilisé s’appelle Raydium. Raydium est un moteur de jeu 3D qui permet de gérer la physique ainsi que d’autres aspect d’un jeu vidéo. Le principal avantage de Raydium est que ce moteur de jeu n’exige pas un important niveau de connaissance pour développer une application 3D. Son but est de permettre à des novices de s’entrainer à maitriser les fonctions de bases d’un jeu vidéo. Par exemple, un jeu complet peut tenir sur moins de 800 lignes de codes ce qui traduit bien sa simplicité. |
||
126 | |||
127 | !IMAGE10.png! |
||
128 | |||
129 | Néanmoins, n’ayant jamais utilisé un tel outil nous avons dû nous renseigner sur les différentes fonctionnalités offertes par ce logiciel pour mener à bien notre projet. |
||
130 | |||
131 | |||
132 | h2. +Fonctionnalités+ |
||
133 | |||
134 | Dans cette sous-partie, nous allons détailler certains aspects gérés par le moteur de jeu. A savoir : les entrées / sorties, les mathématiques utilisées, la physique qui est un point très important de notre projet ainsi que la détection des collisions. |
||
135 | |||
136 | *Les entrées et les sorties:* |
||
137 | Lorsque l’on joue à un jeu vidéo, le moteur de jeu doit être en mesure d’interpréter ce que demande le joueur. Le fait d’appuyer sur une touche (joystick, clavier ou souris) doit provoquer une action bien spécifique comme une accélération, un décollage ou un tir. |
||
138 | |||
139 | Dans notre cas, le drone apparait au sol puis décolle pour se stabiliser à une certaine hauteur définit au préalable dans le programme. Ensuite, la fait d’appuyer sur la touche F2 le fait avancer. Une fois que l’utilisateur à relâcher le bouton F2 le drone s’arrête. L’idéal aurait été d’imposer une touche pour chaque action : décollage, avancer, s’arrêter, atterrissage. |
||
140 | |||
141 | *Les mathématiques:* |
||
142 | Dans un jeux vidéo, les mathématiques sont partout. Que ce soit pour la modélisation, l’affichage, le rendu, l’animation ou l’intelligence artificielle, les mathématiques sont indispensables. |
||
143 | Différentes branches sont utilisées : géométrie pour le placement des objets les uns par rapport aux autres, algèbre linéaire pour passer de la 3D à la 2D etc. |
||
144 | |||
145 | Parmi les opérateurs utilisés, on peut citer les matrices et les vecteurs. En général, une matrice de dimension trois sert à stocker l’orientation / position des objets. Chaque item est alors repéré selon son orientation/ position sur trois axes (x, y et z). Les vecteurs quant à eux sont utilisés pour modéliser tout type d’actions telles que des forces. |
||
146 | |||
147 | Il faut savoir qu’un moteur de jeu effectue énormément de calcul par seconde (produit scalaire, vectoriel et matricielle ainsi qu’inversion de matrice). C’est pourquoi les développeurs de jeux vidéo doivent être très attentifs lors de leur travail et être judicieux quant à leur choix d’opérations. En effet, des méthodes couteuses en calcul peuvent entrainer des ralentissements pendant l’exécution du jeux vidéo. |
||
148 | |||
149 | Afin de stabiliser le drone, nous avons mis au point un algorithme de régulation PID qui se base sur le principe de proportionnalité, d’intégration et de dérivabilité. Cet algorithme est détaillé dans la partie +Aspect régulation+. |
||
150 | |||
151 | *La physique:* |
||
152 | L’intérêt d’un moteur de jeu réside dans sa capacité à gérer la physique, c’est-à-dire sa façon de calculer comment les objets interagissent entre eux, comment ils bougent, comment ils rebondissent etc. Pour effectuer de tels calculs, distinguons trois sortes de physique : |
||
153 | ` |
||
154 | - La physique du point : chaque objet est représenté par un seul et unique point. Ce point possède ses propres caractéristiques telles que sa vitesse, son accélération, son poids etc. Le principal avantage de la physique du point est sa simplicité. Son défaut : on se retrouve très vite limité surtout lorsque l’on cherche à agir sur l’orientation de l’objet en question. |
||
155 | Par exemple, pour simplifier les choses, on pourrait considérer notre drone comme un point dans l’espace. Pour le stabiliser en hauteur cela ne poserait pas de problème, par contre lorsque l’on cherchera à le faire avancer / tourner cela sera plus compliqué et moins réaliste. C’est pourquoi il est préférable de voir notre objet volant comme un système de 5 points : le corps auquel on ajoute les 4 hélices. Dans ce cas on ne parle plus de physique du point mais de physique des solides (ou des systèmes de points). |
||
156 | |||
157 | - La physique des solides : tous les objets sont associés à une forme géométrique simple (cube, sphère, cylindre etc.). Cela permet d’obtenir des résultats beaucoup plus réalistes car on peut également influer sur l’orientation spatiale des objets en question. Sous Raydium, le moteur de physique du solide utilisé est ODE (Open Dynamics Engine). En fait, ODE est une bibliothèque logicielle libre et multiplateforme permettant de simuler l’interaction physique de corps rigides. Elle intègre également plusieurs primitives géométriques ainsi qu’un détecteur de collisions. |
||
158 | |||
159 | !IMAGE11.png! |
||
160 | |||
161 | - La physique des particules : elle permet de mettre en œuvre le fait que chaque solide est constitué de plein de petits points que l’on pourrait assimiler à des atomes. Tous ces petits points sont reliés entre eux par des liaisons rigides ou non (des ressorts par exemple). |
||
162 | |||
163 | *Détection des collisions:* |
||
164 | On parle de collision lorsque deux objets se percutent l’un contre l’autre. Dans la réalité, il en résulte une transmission d’énergie et de quantité de mouvement de l’un des corps vers le second. Un bon moteur physique est un moteur physique qui est capable, à l’aide de calculs, de simuler le plus fidèlement possible cet échange (trajectoire, points et date d’impact etc.) Il est possible de distinguer deux modèles de détection des collisions : |
||
165 | |||
166 | - Le modèle statique : le temps est découpé en échantillon et le détecteur de collisions regarde une fois pendant chaque échantillon si les objets se touchent. Ce modèle a des limites car si les deux objets possèdent des vitesses trop grandes, il est possible qu’ils se percutent sans que le détecteur ne s’en rende compte. |
||
167 | |||
168 | - Le modèle dynamique : la détection se fait en continu, d’un échantillon sur l’autre. Dans ce cas, il n’y a aucun risque qu’une collision ne soit pas traitée mais les calculs sont plus nombreux que pour la méthode précédente. |
||
169 | |||
170 | Pour notre projet, cet aspect du moteur de jeu n’est pas très utile puisque notre drone vole dans un environnement sans obstacle. |
||
171 | |||
172 | |||
173 | |||
174 | |||
175 | h1. +ASPECT RÉGULATION+ |
||
176 | |||
177 | h2. +But d’un asservissement+ |
||
178 | |||
179 | Un asservissement permet de réaliser un objectif donné par une consigne. Il est utilisé pour beaucoup de systèmes. Il existe plusieurs types d’asservissement correspondant différentes utilisations. Le principe commun à chaque asservissement est de mesurer l’écart entre la consigne (valeur ou objectif défini par l’utilisateur) et l’état actuel du dispositif asservi. En fonction de l’écart mesuré on agit sur le dispositif pour se rapprocher au maximum de la consigne et stabiliser le dispositif à la valeur de la consigne valeur. Pour certains asservissement la consigne peut être modifiée durant le fonctionnement du système. Dans ce dernier cas le système réagit en fonction de sa nouvelle consigne. |
||
180 | |||
181 | Un asservissement peut être définit par différentes caractéristiques qui évaluent sa performance : |
||
182 | |||
183 | - La rapidité ou temps de réponse (temps d’établissement du régime stationnaire sur le schéma) de l’asservissement, c’est le temps nécessaire pour que le système atteigne une valeur stable. |
||
184 | - La pression ou erreur statistique c’est la capacité de l’asservissement à s’approcher le plus possible de la consigne donnée, en d’autres termes que l’écart entre la valeur du système et la consigne soit le plus petit possible. |
||
185 | - La stabilité, on dit d’un asservissement qu’il est stable s’il finit par ne plus osciller ou qu’il ne diverge pas, il doit atteindre une valeur finie et constante au cours du temps |
||
186 | - Le dépassement de la consigne, il sert à mesurer de combien la valeur du système a dépassé la consigne au cours de l’asservissement. |
||
187 | |||
188 | !IMAGE12.png! |
||
189 | |||
190 | Toutes ces caractéristiques permettent d'évaluer les performances d’un asservissement. |
||
191 | |||
192 | |||
193 | h2. +Fonctionnement général d’un asservissement+ |
||
194 | |||
195 | !IMAGE13.png! |
||
196 | |||
197 | Il faut savoir qu’un système asservi réagit en fonction de la situation actuelle du système utilisé. C’est dire que le capteur du système asservi (altimètre, GPS, thermomètre…) sert à relever les données de la situation actuelle du système. Ensuite un correcteur (ordinateur, automate…) va calculer par rapport relevés du capteur et à la consigne attendue les modifications à apporter sur l’actionneur pour changer une ou plusieurs caractéristiques du système. |
||
198 | Par exemple pour atteindre une certaine vitesse en voiture le capteur est le conteur de vitesse et le correcteur est le conducteur. S’il est au-delà de sa consigne il va ralentir et s’il est en dessous il va accélérer. C’est un système asservi en fonction de la vitesse. |
||
199 | |||
200 | h2. +Type d’asservissement utilisé pour notre projet+ |
||
201 | |||
202 | !IMAGE14.png! |
||
203 | |||
204 | Pour asservir notre drone nous nous sommes appuyés sur une régulation du type (PID), Il utilise les actions Proportionnelles, Intégrale et Dérivé. C’est un des asservissements très couramment utilisé par une multitude de systèmes dont les drones. |
||
205 | |||
206 | Dans cette régulation l’action proportionnelle correspond l’écart entre la consigne et l’état actuel du système, c’est l’erreur proportionnelle. Cette composante de la régulation va donc agir proportionnellement à l’erreur. Reprenons l’exemple de la voiture plus la voiture est loin de la limite de vitesse plus il va accélère où freiner. Si le conducteur veut atteindre 80 km/h alors qu’il roule à 10km/h il devra accélérer plus fort que s’il roule 75km/h. C’est l’action proportionnelle. Cette action sert à atteindre la consigne. |
||
207 | |||
208 | L’action dérivée permet d’anticiper le mouvement ou l’évolution du système au cours du temps. Pour cela on relève l’erreur actuelle et on la compare à la précédente pour adapter la prochaine correction en conséquence, cette action permet d’amplifier l’action proportionnelle. En prenant l’exemple de la voiture, si le conducteur est loin de la limite de vitesse il va accélérer encore plus fort pour y monter plus vite et une fois qu’il s’en rapproche il va décélère plus tardivement et plus fort. En résumé l’action dérivé sert juste à amplifier l’action proportionnelle. Cette action sert à limiter les oscillations autour de la consigne, à stabiliser le système plus vite. |
||
209 | |||
210 | L’action intégrale permet de corriger une faible erreur une fois le système stabilisé a une valeur. On fait la somme des erreurs sur les temps pour pouvoir la corriger par la suite. Par exemple pour la voiture le conducteur a réussi à stabiliser sa voiture à 78km/h au lieu de 80, il s’aperçoit de la différence de 2 km/h pour compenser il décide donc d’accélérer à peine plus pour atteindre 80km/h. l’action intégrale permet d’avoir une meilleure précision, de se rapprocher au maximum de la consigne. |
||
211 | |||
212 | |||
213 | h2. +Asservissement du drone dans raydium+ |
||
214 | |||
215 | h3. Stabilisation en hauteur |
||
216 | |||
217 | Pour asservir le drone dans raydium nous avons décidé d’adopter un régulateur PD (proportionnel, dérivé) avec le même principe que la régulation PID mais nous avons laissé la partie intégrale de coté sur les recommandations de notre tuteur pour des raisons de simplicité. Et en effet nous nous sommes aussi donc aperçus qu’avec le programme au point, le drone ne se stabilisait pas exactement à la hauteur de la consigne, il y avait un écart très minime ce qui est dû au manque de l’action intégrale. |
||
218 | |||
219 | Dans un premier temps pour mieux comprendre le principe d’un asservissement nous n’avons appliqué qu’une seule force pour faire décoller le drone. Le drone devait monter à une altitude donnée par la consigne et s’y stabiliser de lui de lui-même sans actions extérieures de notre part. Pour ce faire nous avons dans un premier temps essayé seulement avec une action proportionnelle mais le drone oscillait autour de la hauteur de la consigne et ne se stabilisait jamais. |
||
220 | |||
221 | Pour réaliser ce programme nous l’avons programmé dans le langage C et dans une boucle se nommant « display » se réitérant 60 fois par secondes ca qui permet de recalculer toutes les valeurs tout les soixantièmes de secondes notamment celle pour l’asservissement du drone. |
||
222 | |||
223 | _Extrait du programme avec une seule force et seulement l’action proportionnelle :_ |
||
224 | |||
225 | !IMAGE15.png! |
||
226 | |||
227 | - La première ligne correspond au relevé de la position dans l’espace de l’élément « drone » via une fonction prédéfinie par raydium. |
||
228 | |||
229 | - La deuxième ligne sert à extraire de « position_drone » seulement la position du drone sur l’axe Z (axe de l’altitude). |
||
230 | |||
231 | - Ensuite nous donnons une valeur a la variable k. |
||
232 | |||
233 | - Puis nous calculons « Eps » (epsilon) l’erreur entre la consigne et l’altitude du drone. Ici « Eps » représente la valeur de l’action proportionnelle. |
||
234 | |||
235 | - La ligne suivante nous ajoutons un coefficient constant k a la valeur epsilon pour la changer et faire des tests avec différentes valeurs, de cette manière nous accentuons ou diminuons l’action proportionnelle d’epsilon. Ici k*Eps représente la force à appliquer sur le drone. |
||
236 | |||
237 | - Enfin nous appliquons la nouvelle valeur de la force sur l’axe Z à l’élément « drone » on feut voir que les composantes sur les axes X et Y sont nulles ce qui est normal car nous voulons juste faire mouvoir le drone en hauteur pour l’instant. |
||
238 | |||
239 | Comme cette méthode n’étais pas efficace nous avons décidé de rajouter l’action dérivée dans le calcul de la force : |
||
240 | |||
241 | !IMAGE16.png! |
||
242 | |||
243 | Nous avons toujours la composante proportionnelle avec Eps que l’on nome par la suite fp (c’est la variable « force » de l’extrait précédent) pour force proportionnelle. Puis nous avons fd qui représente l’action dérivée, elle est calculée en prenant la différance entre l’ancienne valeur de l’erreur (EpsOld) et celle de l’itération actuelle Eps. Les variables k1 et k2 sont des coefficients s’ajoutant respectivement à fp et fd pour modifier l’influence de ces dernières en changeant la valeur de k1 et k2. La nouvelle force prend désormais en considération l’action proportionnelle et l’action dérivée come on peut le voir sur la dernière ligne. Puis comme dans l’extrait précédant on applique la force a l’élément drone. De cette manière nous avons réussi à stabiliser le drone a l’altitude souhaité. |
||
244 | |||
245 | Mais cette simulation n’est pas en phase avec la réalité car un drone a 4 hélices, il est donc porté par 4 forces dans le modèle de simulation précédant nous n’avons qu’une seule force. C’est pour cette raison que cette simulation n’est pas réaliste. Nous avons donc décidé de créer un objet "Drone" constitué de 5 éléments qui sont le corps du drone et les 4 hélices liées au corps du drone. Puis nous appliquons de la même manière que précédemment une force sur chaque hélice. |
||
246 | |||
247 | |||
248 | h3. Déplacements du drone |
||
249 | |||
250 | Nous avons rencontré un nouveau problème venant de l’application de forces, les force que nous appliquons jusqu’à présent étaient des forces qui s’appliquaient par rapport aux axes du repères et non par rapport aux axes de l’objet. |
||
251 | C’est-à-dire que même si le drone se penchait les forces était seulement appliquées sur l’axe Z (axe de l’altitude) du repère et n’avait pas de composante sur un autre axe, ce qui permet au drone d’avancer par exemple (confer partie mécanique du drone). Pour palier à ce problème nous avons dû changer les forces en forces relatives grâce à une fonction de raydium aux éléments sur lequel s’appliquent les forces, les hélices en l’occurrence. Désormais les forces sont appliquées relativement aux objets c’est-à-dire par rapport aux axes des objets et non aux axes du repère. Grace a cette modification les forces ont désormais deux composantes par rapport au repère quand le drone s’incline, une toujours portée par l’axe Z et une autre sur l’axe X permettant de le faire avancer. |
||
252 | |||
253 | Pour faire avancer le drone il faut l’incliner on a donc dû asservir l’angle du drone en plus de sa hauteur, en temps normal la consigne de l’angle est de 0°. De la même façon que pour la hauteur, avec une régulation PD nous avons asservi l’angle. |
||
254 | |||
255 | !IMAGE17.png! |
||
256 | |||
257 | Ici nous relevons les valeurs des angles du drone grâce a la fonction de la première ligne de l’extrait puis nous les convertissons en degrés. « rotx » correspond à la rotation du drone autour de l’axe X il en est de même pour les deux autres. Pour faire avancer le drone sur l’axe X il faut donc arriver à changer « roty ». |
||
258 | |||
259 | !IMAGE18.png! |
||
260 | |||
261 | On utilise le même procédé pour asservir l’angle que pour la hauteur mais la « consigne_x » (angle de rotation que doit prendre le drone autour de l’axe Y) représente un angle que le drone doit atteindre pour gérer le déplacement sur l’axe X.si « consigne_x » prend la valeur 20 alors le drone prendra un angle de 20° autour de l’axe Y et pourra se déplacer sur l’axe X. |
||
262 | |||
263 | Par la suite on ajoute la force « ang_x » aux forces des hélices arrière et on l’enlève aux hélices avant de cette façon le drone augmente et diminue les forces des hélices avant et arrière selon l’angle de la consigne et son angle actuel. |
||
264 | |||
265 | !IMAGE19.png! |