IMA3/IMA4 2020/2022 P3 : Différence entre versions

De Wiki de Projets IMA
(Page créée avec « =<div class="mcwiki-header" style="border: double; border-color: #11869a; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; backgro... »)
 
(Initialisation du drone)
 
(245 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
  
  
=<div class="mcwiki-header" style="border: double; border-color: #11869a; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #99d8e3; vertical-align: top; width: 98%;"> INTRODUCTION </div>=
+
=<div class="mcwiki-header" style="border: double; border-color: #616363; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #BDC3C2; vertical-align: top; width: 98%;"> PRESENTATION DU SUJET </div>=
 
<p>
 
<p>
L'objectif de ce bureau d'étude est la conception et la réalisation d'une clé USB personnalisée. <br \><br \>
+
 
Pour se faire, nous devrons créer un circuit éléctronique ou PCB (Printed Circuit Board) à l’aide du logiciel Fritzing. Suite à cela, nous allons souder les composants électroniques nécessaires sur notre PCB. Puis nous programmerons le micro-contrôleur pour gérer la communication USB et accéder à la mémoire. Enfin, nous fabriquerons un boîtier à notre clé USB. <br \><br \>
+
[[Fichier:LOGOXX.png|200px|thumb|left|Notre logo]]<br>
A cette clé USB devra être réalisée une amélioration, à savoir une option qui sera développée dans la partie "AMELIORATION" de notre page.
+
 
 +
L’objectif de ce projet est de réaliser un drone, de sa conception à sa réalisation et de mettre en œuvre une solution pour le commander par wifi. <br />
 +
Notre équipe est composée d'étudiants en 4ème année de la spécialité « Systèmes embarqués » qui sont : Niels Godbert, Léo Poumaer, Rémi Brachot, Lucas Postollec et Louise Maës. <br />
 +
Nous espérons que ce projet va nous permettre de pouvoir mettre en application les savoir-faire acquis pendant notre formation, et ainsi pouvoir développer de nouveaux acquis grâce à ce travail en groupe. <br />
 +
 
 +
<br /><br /><br /><br /><br /><br />
 
</p>
 
</p>
  
=<div class="mcwiki-header" style="border: double; border-color: #11869a; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #99d8e3; vertical-align: top; width: 98%;"> COMPÉTENCES & MATÉRIELS UTILISÉS  </div>=
+
=<div class="mcwiki-header" style="border: double; border-color: #616363; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #BDC3C2; vertical-align: top; width: 98%;"> QU'EST-CE QU'UN DRONE ? </div>=
<p>
+
 
[[Fichier:Attiny84.jpg|100px|thumb|right|Attiny84]]
+
== Introduction ==
Afin de réaliser le dé numérique nous avons eu besoin du matériel suivant:<br/><br/>
+
 
* D'un micro-processeur, un Attiny84 <br/>
+
[[Fichier:drone.jpg|200px|thumb|right|Quadrirotor]]<br>
* D'une plaque de cuivre sur laquelle va être imprimé notre circuit. <br/>
+
Les drones sont des aéronefs autonomes qui ont la particularité de ne pas nécessiter de présence humaine à bord. Cependant, leurs utilisations la plus répandue n’est que semi-autonome, ils restent majoritairement pilotés manuellement à distance par commande numérique. <br />
* De 7 leds pour l'affichage.<br />
+
Utilisés aussi bien en tant que loisir que dans le milieu professionnel et militaire, on observe une popularité qui ne cesse de croître depuis plusieurs années. Que ça soit pour la photographie afin de filmer des plans autrement impossibles, pour des relevés de terrain ou encore pour la sécurité et pour le bâtiment, les drones deviennent un outil de travail unique et de plus en plus indispensable dans certaines professions.<br /><br />
* Et de 7 résistances. <br />
+
 
</p>
+
Durant ce projet, nous allons nous intéresser plus précisément sur '''les quadrirotors''' (ou quadricoptères), une catégorie bien précise de drones. <br />
 +
Le quadrirotor se démarque du fait de sa voilure tournante comportant quatre rotors et quatre hélices pour sa sustentation contrairement à d’autres types de drones où le nombre d’hélice peut aller jusqu’à huit. Les rotors les plus populaires sont placés aux extrémités d'une croix, cependant d’autres variétés de cadres existent (en “H”, en “X”, en “T”...etc). <br />
 +
 
 +
Ici, nous allons réaliser un drone quadrirotors en "X".<br /><br />
 +
 
 +
== Composition ==
 +
 
 +
[[Fichier:Hélices.png|200px|thumb|left|Composition du quadrirotor]]<br>
 +
L’architecture d’un quadrirotor est épurée, la conception du drone est un compromis entre légèreté, résistance et performance.<br />
 +
Son châssis central comporte le contrôleur de vol (un microcontrôleur et des capteurs), une batterie et 4 bras avec au bout, les hélices mises en rotations par des moteurs commandés par le microcontrôleur. <br /><br />
 +
La différence entre les nombreux modèles va se faire sur la matière du châssis et des hélices ainsi que leurs tailles, la capacité de la batterie, la vitesse maximale, la distance de contrôle, la portée des différents capteurs et la caméra embarquée. Le choix est très vaste et, avec une demande croissante, le prix baisse de plus en plus ce qui rend cette technologie accessible au grand public. <br />
 +
 
 +
 
 +
 
 +
<br /><br /><br /><br />
 +
 
 +
== Principe de fonctionnement ==
 +
[[Fichier:fonctionnement.png|150px|thumb|right|Axes de rotation]]<br>
 +
Afin de comprendre le fonctionnement d’un drone, il est important de définir les trois axes de rotation sur lesquels il va se déplacer : <br /><br />
 +
 
 +
L’axe des x, dit axe de roulis, qui correspond au mouvement de bascule de gauche à droite.<br />
 +
L’axe des y, dit axe de tangage, qui correspond au mouvement de bascule d’avant en arrière.<br />
 +
L’axe des z, dit axe de lacet, qui correspond à la rotation sur lui-même.<br /><br />
 +
 
 +
On observe deux positions possibles pour le drone dans son repère ; lorsque les hélices sont parallèles au sol, elles génèrent une force perpendiculaire qui permet au drone de s’élever dans les airs. Lorsque celles-ci sont inclinées, elles permettent au drone de se déplacer dans une direction.
 +
<br /><br />
 +
On peut alors établir le tableau suivant :<br />
 +
[[Fichier:tableau.png|500px|thumb|center|Tableau de fonctionnement]]
 +
<br />
 +
 
 +
=<div class="mcwiki-header" style="border: double; border-color: #616363; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #BDC3C2; vertical-align: top; width: 98%;"> CAHIER DES CHARGES </div>=
 +
 
 +
== Objectifs ==
 +
<br />
 +
Le but de notre projet est de concevoir un drone dans son intégralité, ce qui inclut : la modélisation d’un circuit imprimé et de la partie électronique, la réalisation du châssis, la modélisation et programmation informatique du système de contrôle qui permettra la communication avec le drone. <br /><br />
 +
Finalement, une fois tous ces éléments réalisés, le drone devrait être capable de voler selon les bons vouloirs de son pilote.
 +
<br /><br />
 +
L'année dernière, nous avons hérité du drone des anciens SE4. Notre objectif était alors de faire voler leur drone. Nous avons constaté que le câblage était à refaire et que les pieds de leur drone n'étaient pas assez solides. Nous avons donc dû revoir notre cahier des charges. <br /><br />
 +
 
 +
== Description fonctionnelle des besoins ==
 +
<br />
 +
Initialement, afin d’atteindre notre but de concevoir un drone; voici ce qui devait être mis en place : <br /><br />
 +
 
 +
'''''Niveau matériel :'''''<br />
 +
* La documentation et le choix des matériaux pour les différentes parties du châssis.<br />
 +
* La conception (ou l’achat) d’un châssis capable de résister aux chocs, de supporter le poids de la batterie, et bien évidemment conçu de manière à simplifier l'ensemble des branchements électriques entre les différentes parties du drone.<br />
 +
* La documentation et le choix sur le dimensionnement des pièces électroniques/électromécaniques (moteurs, contrôleurs de moteurs, contrôleur de vol, carte mère, capteurs) et autres pièces indispensable (hélices par exemple).<br /><br />
 +
 
 +
'''''Niveau informatique :'''''<br />
 +
* La communication entre le drone et un téléphone, un ordinateur ou une télécommande via le wifi (nous pensons  à une application dédiée à cet effet, via AppInventor). <br />
 +
* La modélisation, la programmation de parcours pour vérifier le fonctionnement du drone. <br /><br />
 +
 
 +
'''''Niveau Automatique/Commande :'''''<br />
 +
* Le drone doit pouvoir monter, descendre, se déplacer latéralement et pivoter sur lui-même (axe de lacet).<br />
 +
* Le drone devra répondre aux instructions du pilote de manière rapide et précise.<br />
 +
* Le drone doit être en mesure de voler correctement et jusqu’à une distance suffisamment grande entre lui-même et le pilote. <br />
 +
* Le drone doit être stable, même face aux intempéries (vent par exemple) .<br />
 +
* Les servomoteurs doivent être parfaitement synchronisés pour garantir la stabilité.<br /><br />
 +
 
 +
== Limites du projet ==
 +
<br />
 +
Les objectifs que nous nous sommes fixés au début du projet ont évolué. En effet, nous avions prévu de réaliser un drone de A à Z, en codant son programme et en le chargeant nous-même sur notre carte préalablement designée par nos soins. Cependant, nous n'avions pas encore eu conscience de la difficulté de ce que nous voulions entreprendre. De plus, nous avons également revu à la baisse notre volonté d'apporter une amélioration à notre projet. Les équipements que nous pouvons ajouter au drone restent malgré tout très couteux. <br /><br />
 +
 
 +
 
 +
De plus, d’autres limites de notre projet nous sont apparues, par exemple les contraintes financières et matérielles. En effet, certains matériaux dont nous connaissons les caractéristiques avantageuses dans la conception d’un drone sont plutôt coûteux, à savoir le carbone pour le châssis ou alors des matériaux peut-être trop lourds comme le bois. <br /><br />
 +
 
 +
 
 +
Nous devons aussi prendre en compte l’installation d’une batterie : comment recharger le drone ? Est-ce trop lourd ? Quelle est l’autonomie ?
 +
La météo et les potentiels obstacles doivent être pris en compte par le pilote.
 +
<br /><br />
 +
 
 +
== Gantt projet ==
 +
[[Fichier:Gantt-projet.xlsx - SE4-1.jpg|800px|thumb|center|Diagramme de Gantt du semestre 7]]
 +
 
 +
=<div class="mcwiki-header" style="border: double; border-color: #616363; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #BDC3C2; vertical-align: top; width: 98%;"> LES MATERIAUX ET EQUIPEMENTS ELECTRONIQUES UTILISES</div>=
 +
 
 +
== Le châssis ==
 +
<br />
 +
Avant tout, le choix du matériau est très important pour un drone : il faut qu’il soit  ni trop lourd ni trop rigide. En effet, le cadre du drone va devoir supporter toutes les vibrations que va générer le drone, il faut donc un matériau pas trop déformable afin que celui-ci reste stable et ne se détériore pas. Même si le carbone semble être idéal, il reste une solution très coûteuse. En compromis, l’alliance entre le bois et le plastique est ce qui nous semblait le plus conforme : le bois forme un châssis solide et rigide, tandis que pour les pieds le plastique résisterait aux vibrations et à l'atterrissage de l’engin. <br />
 +
En réalité, le bois est à proscrire et mieux vaut le remplacer par de l’aluminium, très léger et très rigide.
 +
<br /><br />
 +
 
 +
== Les hélices ==
 +
[[Fichier:helices2.png|150px|thumb|right|Les différentes hélices]]<br>
 +
 
 +
Comme pour le cadre, les hélices définissent la fonction que l’on veut donner à notre drone. Il en existe de tailles, de formes et de matériaux différents.<br />
 +
Plus les hélices ont de pales, plus elles consomment d’énergie  et donc, par conséquent, la consommation du drone est plus importante. Les hélices en plastique sont de très bonnes candidates et rivalisent avec celles en carbone, beaucoup plus chères. Mais au-delà du matériau, la longueur et le pas de celles-ci jouent un rôle important dans la fonction de notre drone.<br /><br />
 +
 
 +
Une hélice dite longue va tourner moins rapidement qu’une hélice dite courte, mais sa capacité de portance sera, bien évidemment, plus importante au vu de sa taille. Elle apporte aussi, plus de stabilité. Contrairement à la taille de l’hélice, un pas élevé implique une faible portance et une vitesse de rotation maximale limitée.<br /><br />
 +
 
 +
On peut alors établir un tableau récapitulatif des effets de la taille des hélices et de son pas :<br />
 +
[[Fichier:tableauhelice.png|500px|thumb|center|Les différentes tailles d'hélices et leurs conséquences]]
 +
<br />
 +
 
 +
== Les moteurs ==
 +
 
 +
 
 +
Afin de bien choisir ses moteurs, il faut bien définir le type de vol que va réaliser notre drone. Il faut donc définir les paramètres suivants : l’endurance souhaitée, la taille du drone, son poids total, sa charge utile, sa vitesse maximale, le nombre de moteurs (ici quatre) ainsi que son utilité. En général, pour un vol “stable”, il faut 8 000 tours/minutes maximum, pour un vol “normal”, il faut 10 000 tours/minutes et enfin, pour un vol “nerveux”, il faut 12 000 tours/minutes. <br /><br />
 +
 
 +
Si on utilise une batterie 3S (11,1V), on peut établir le tableau suivant :<br />
 +
[[Fichier:tableaumoteur.png|500px|thumb|center|Caractéristiques de vol en fonction de la taille des hélices et du moteur]]
 +
 
 +
<br />
 +
Ici, pour la conception de notre drone, nous avons décidé d’utiliser des moteurs brushless qui sont de la même famille que les machines synchrones. Ils sont faciles à contrôler à l’aide d’un ESC, sont plus fiables et ont une grande marge de vitesse de rotation, ce qui correspond à la fonctionnalité que l’on veut donner à notre drone. <br /><br />
 +
 
 +
== La batterie ==
 +
[[Fichier:batterie.png|150px|thumb|right|Batterie adaptée à notre drone]]<br>
 +
 
 +
Le choix de la batterie est très important pour le bon fonctionnement du drone. <br />
 +
En effet, la batterie doit être assez puissante pour alimenter les différents composants mais être également assez légère pour ne pas rendre le drone trop lourd et ainsi, l'empêcher de voler correctement.
 +
<br /><br /><br /><br /><br />
 +
 
 +
== Le contrôleur de vol ==
 +
[[Fichier:controleurdevol.png|150px|thumb|left|Le contrôleur de vol]]<br>
 +
 
 +
Après avoir fait de nombreuses recherches, nous nous sommes vite rendu compte qu’il allait nous être compliqué à notre niveau de réaliser par nous même l’ensemble de la partie communication avec le drone, ainsi que le contrôle et la commande des moteurs, des différents capteurs,.. <br />
 +
Notre choix s’est donc porté sur le contrôleur de vol Pixhawk qui inclut tout ce dont nous avons besoin. <br />
 +
 
 +
En effet, le PixHawk4 est un contrôleur de vol, c’est-à-dire que ce module agit comme une carte microcontrôleur (comme un arduino) déjà programmée (programmation très complexe) et conçue de manière à être extrêmement exploitable : on peut ajouter au PX4 un grand nombre de capteurs tels que : une caméra, des capteurs ultrason, stabilisateur de caméra,...<br /><br />
 +
 
 +
=<div class="mcwiki-header" style="border: double; border-color: #616363; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #BDC3C2; vertical-align: top; width: 98%;"> MODELISATION </div>=
 +
 
 +
 
 +
== Modélisation mathématique ==
 +
<br />
 +
 
 +
Avant toute chose, il est important de savoir comment fonctionne mathématiquement notre système, afin de pouvoir modéliser notre système sur Matlab. <br /><br />
 +
 
 +
Ainsi, après plusieurs études de documentation sur la conception d’un drone, nous en sommes venus aux équations de mouvement suivantes :<br /><br />
 +
 
 +
[[Fichier:equationMouv.png|300px|thumb|center|Equations du mouvement du système]]
 +
 
 +
avec Iq , q ∈ [ x , y , z ] : le moment d’inertie en kg.m2 <br />
 +
φ : angle de roulis. Il définit la rotation autour de l’axe x1( − π < φ < π)  en radians <br />
 +
θ : angle de tangage. Il définit la rotation autour de l’axe y1( − 2π < θ < 2π ) en radians<br />
 +
Ψ : angle de lacet. Il définit la rotation autour de l’axe z1(− π <Ψ < π ) en radians<br /><br />
 +
 
 +
 
 +
Le drone va subir différentes forces qui vont entrer en jeu dans la dynamique du système :<br /><br />
 +
 
 +
'''La portance:''' composante de force subie par un corps en mouvement dans un fluide qui s’exerce perpendiculairement à la direction du mouvement des hélices. Celle-ci est générée grâce à la rotation des quatre hélices. Elle va permettre à l’appareil de décoller si elle compense au moins la traînée. Elle s’exprime sous la forme : τx = bl(Ω4² − Ω2²) sur l’axe de roulis et τy = bl(Ω3² − Ω1²) sur l’axe de tangage avec b le coefficient de portance en kg.m/rad2 et l la demi-envergure du quadrirotor en mètres.<br /><br />
  
----
+
'''L’effet gyroscopique:''' capacité d’un objet à conserver son moment angulaire. Ainsi, lorsque le quadrirotor est en rotation sur deux axes, cette force apparaît sur le troisième axe et résiste aux mouvements de ce dernier. Elle s'exprime comme suit : Gx = Jωy(Ω1² + Ω3² − Ω4² − Ω2²) et Gy = Jωx(− Ω1² − Ω3² + Ω4² + Ω2²), respectivement pour l’axe de roulis et de tangage.<br /><br />
  
<p>
+
'''La traînée:''' force qui s’oppose parallèlement au mouvement d’un corps dans un fluide et agit comme un frottement. Elle vaut : τz = d(Ω1² + Ω3² − Ω4² − Ω2²) avec d le coefficient de traînée en kg.m2/rad2. Elle s’applique donc selon l’axe de lacet.<br /><br />
[[Fichier:LCD.jpg|100px|thumb|right|Ecran LCD]]
 
Afin de créer notre clé USB, nous allons utilisés les matériaux suivants:<br /> <br />
 
  
* Un écran LCD de 0.91" ce qui contribue à notre amélioration de la clé.  <br /><br/><br /><br/><br /> <br />
+
En projetant ces trois forces et en ajoutant l’effet de l’accélération des moments
[[Fichier:ATMega16u2.png|100px|thumb|right|ATMega16u2]]
+
d’inertie sur chaque axe, on obtient les équations de la vitesse angulaire suivant les axes de
* Du micro-contrôleur AVR, l'ATMega16u2 qui possède l'électronique nécessaire à la gestion d'un bus USB 2.0.  <br/><br/><br/><br/><br /> <br />
+
lacet, roulis et tangage :<br /><br />
[[Fichier:memoire.jpg|100px|thumb|right|Mémoire 128Gb]]
 
* Une mémoire de capacité de 128Gb. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
 
[[Fichier:ATMega328.jpg|100px|thumb|right|ATMega328]]
 
* D'un micro-contrôleur, un ATMega328<br /><br /><br /><br /><br /><br /><br /><br />
 
* Un potentiomètre de 220k Ohms
 
* De trois résistances (deux de 10k Ohms et une de 1M Ohm)
 
* De quatre capacités (deux de 100nF et deux de 22pF)
 
* Un bouton
 
* Un oscillateur de 16MHz de fréquence
 
</p>
 
  
=<div class="mcwiki-header" style="border: double; border-color: #11869a; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #99d8e3; vertical-align: top; width: 98%;"> PROJET INTERMÉDIAIRE</div>=
+
[[Fichier:vitesseangulaire.png|400px|thumb|center|Equations de la vitesse angulaire selon les trois axes du système]]
  
<p>
+
avec Iq , q ∈ [ x , y , z ] : le moment d’inertie en kg.m2 <br />
[[Fichier:schematic_de.png|300px|thumb|right|Schematic du dé]]
+
φ : angle de roulis. Il définit la rotation autour de l’axe x1( − π < φ < π)  en radians <br />
Dans un premier temps, nous avons effectué un projet intermédiaire, celui du dé numérique, afin de nous familiariser avec le logiciel Fritzing et le langage informatique qui va nous servir à coder l'amélioration qu'on apporte à notre clé USB. <br/><br/>
+
θ : angle de tangage. Il définit la rotation autour de l’axe y1( − 2π < θ < 2π ) en radians <br />
 +
Ψ : angle de lacet. Il définit la rotation autour de l’axe z1(− π <Ψ < π ) en radians <br />
 +
Ω , i ∈ [1; 4] : la vitesse de chaque moteur en rad/s <br /><br />
  
Premièrement, nous avons réalisé le schematic du dé que voici: <br/>  
+
== Simulation ==
<br/><br/>
+
<br />
 +
Pour réaliser une simulation Matlab à l’aide des résultats trouvés précédemment, nous avions besoin d’un modèle du quadrirotor. <br /><br />
  
Puis nous avons pu établir le PCB de celui-ci: <br/>
+
Grâce à la partie Simulink  du logiciel Matlab, nous avons pu commander le drone, et vérifier sa stabilité via des simulations. <br />
[[Fichier:PCB_DE_B6.png|400px|thumb|left|PCB du dé]]
+
La boîte à outils UAV comprend des outils et des applications de référence pour concevoir, simuler, tester et déployer des applications de drones. On peut alors observer sur la figure suivante, les commandes que nous avons utilisé afin de procéder à la simulation du drone :<br /><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> [[Media:de_Maes_Poumaer.zip]]
 
<br/><br/>
 
Enfin, après impression du circuit imprimé, nous avons soudé les éléments du dé:
 
  
 +
[[Fichier:commandeSimu.png|800px|thumb|center|Commande de la simulation du drone]]
  
[[Fichier:20200328_164915.jpg|400px|thumb|left|Dé vue de face]]
+
[[Fichier:bloc1.png|150px|thumb|left|Bloc de commandes]]<br>
 +
Ce gros schéma bloc comprend quatre curseurs permettant d’appliquer une commande au drone en hauteur, en latitude, en longitude et en angle de lacet.<br /><br /><br /><br />
  
[[Fichier:20200328_164923.jpg|400px|thumb|right|Dé vue de dos]]
+
[[Fichier:bloc2.png|150px|thumb|right|Bloc de commandes]]<br>
 +
Le suivant, quatre sous-systèmes qui permettent d’ajuster  manuellement les valeurs des paramètres des PID qui corrigent chaque commande à l’aide de curseurs.<br /><br />
  
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
 
  
Sur la vidéo, on peut observer que nous avons mis en place un décompte afin d'ajouter une touche d'originalité à ce projet intermédiaire. C'est à dire que lorsqu'on appuie sur le bouton qui représente le lancer du dé, on observe les chiffres 6, 5, 4, 3, 2 et 1 qui vont s'afficher un à un grâce aux LEDs avant de découvrir le chiffre obtenu par le dé.
+
[[Fichier:bloc3.png|500px|thumb|center|Bloc de commandes]]<br />
  
Voici une vidéo démonstrative du fonctionnement du dé : [[Média:vidéodéB6.mp4]]
+
Enfin, ces deux parties représentent différents capteurs tels qu’un gyroscope, un capteur de vitesse et de position.<br />
 +
On peut décider de commander le drone manuellement grâce au curseur  ou automatiquement, grâce à des schémas de commande.<br />
 +
Cela va permettre au drone de suivre des commandes sans intervention extérieure. On peut par exemple commander au drone de suivre un trajet particulier, ou tout simplement de lui demander d’atterrir.<br /><br />
  
</p>
 
  
=<div class="mcwiki-header" style="border: double; border-color: #11869a; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #99d8e3; vertical-align: top; width: 98%;"> CODE DÉ NUMÉRIQUE </div>=
+
'''''Régulation du drone :'''''
 +
<br /><br />
 +
On doit maintenant réussir à stabiliser le quadrirotor, afin qu’il “obéisse” aux consignes de manière stable, rapide et précise. Pour cela, on doit récupérer les données en vitesse, position et angles fournies par les différents capteurs. Un convertisseur nous indique les tensions qu’on peut appliquer pour que le drone puisse atteindre la position désirée. Dans un premier temps, on cherche à calculer la poussée à appliquer et les valeurs d’angle de roulis et de tangage désirées. <br />
 +
Voici la structure du schéma bloc permettant ces calculs :<br />
  
<p>
+
[[Fichier:regulation.png|500px|thumb|center|Bloc de régulation du système]]<br />
      Voici le code réalisé afin de faire fonctionner le projet intermédiaire, à savoir "le dé numérique".
+
Le principe est plutôt simple: la position mesurée est soustraite à la valeur désirée. Elle est ensuite corrigée dans un PID qui renvoie une tension adaptée, permettant d’atteindre la vitesse voulue. <br />
</p>
+
La vitesse théorique en x et y est soustraite à la vitesse mesurée et multipliée par la matrice de rotation afin d’avoir l’erreur sur la vitesse. L’erreur est corrigée par un PID qui nous donne respectivement la valeur de l’angle de roulis et de tangage désirée. <br />
 +
Le principe reste le même pour la vitesse en z mis à part que nous n’avons pas besoin de multiplier par la matrice de rotation, de plus, le dernier PID renvoie la valeur de poussée. <br /><br />
  
void setup() {
 
  int led0 = 0;
 
  int led1 = 1;
 
  int led2 = 2;
 
  int led3 = 3;
 
  int led4 = 4;
 
  int led5 = 5;
 
  int led6 = 6;
 
  int bouton = 9;
 
  randomSeed(analogRead(0));
 
  pinMode(led0,OUTPUT);
 
  pinMode(led1,OUTPUT);
 
  pinMode(led2,OUTPUT);
 
  pinMode(led3,OUTPUT);
 
  pinMode(led4,OUTPUT);
 
  pinMode(led5,OUTPUT);
 
  pinMode(led6,OUTPUT);
 
  pinMode(bouton,INPUT);
 
}
 
void de1(int led3){
 
    digitalWrite(led3, HIGH);
 
}
 
void de2(int led5, int led1)
 
{
 
    digitalWrite(led5, HIGH);
 
    digitalWrite(led1, HIGH);
 
}
 
void de3(int led1,int led3,int led5)
 
{
 
    digitalWrite(led1, HIGH);
 
    digitalWrite(led3, HIGH);
 
    digitalWrite(led5, HIGH);
 
}
 
void de4(int led1,int led0,int led5,int led6)
 
{
 
    digitalWrite(led1, HIGH);
 
    digitalWrite(led0, HIGH);
 
    digitalWrite(led5, HIGH);
 
    digitalWrite(led6, HIGH);
 
}
 
void de5(int led0,int led1,int led3,int led5,int led6)
 
{
 
    digitalWrite(led0, HIGH);
 
    digitalWrite(led1, HIGH);
 
    digitalWrite(led3, HIGH);
 
    digitalWrite(led5, HIGH);
 
    digitalWrite(led6, HIGH);
 
 
}
 
void de6(int led0,int led1,int led2,int led4,int led5,int led6)
 
{
 
    digitalWrite(led0, HIGH);
 
    digitalWrite(led1, HIGH);
 
    digitalWrite(led2, HIGH);
 
    digitalWrite(led4, HIGH);
 
    digitalWrite(led6, HIGH);
 
    digitalWrite(led5, HIGH);
 
}
 
 
void loop() {
 
  int led0=0;
 
  int led1=1;
 
  int led2=2;
 
  int led3=3;
 
  int led4=4;
 
  int led5=5;
 
  int led6=6;
 
  int bouton=9;
 
  int etat = 0 ;
 
  etat = digitalRead(bouton);
 
  int  numero_des = 0;
 
  digitalWrite(led0, LOW);
 
  digitalWrite(led1, LOW);
 
  digitalWrite(led2, LOW);
 
  digitalWrite(led3, LOW);
 
  digitalWrite(led4, LOW);
 
  digitalWrite(led5, LOW);
 
  digitalWrite(led6, LOW);
 
  if( etat==LOW)
 
  {
 
    numero_des = random(1,7);
 
    de6(led0,led1,led2,led4,led5,led6);
 
    delay(350);
 
    digitalWrite(led0, LOW);
 
    digitalWrite(led1, LOW);
 
    digitalWrite(led2, LOW);
 
    digitalWrite(led3, LOW);
 
    digitalWrite(led4, LOW);
 
    digitalWrite(led5, LOW);
 
    digitalWrite(led6, LOW);
 
    delay(350);
 
    de5(led0,led1,led3,led5,led6);
 
    delay(350);
 
    digitalWrite(led0, LOW);
 
    digitalWrite(led1, LOW);
 
    digitalWrite(led2, LOW);
 
    digitalWrite(led3, LOW);
 
    digitalWrite(led4, LOW);
 
    digitalWrite(led5, LOW);
 
    digitalWrite(led6, LOW);
 
    delay(350);
 
    de4(led1,led0,led5,led6);
 
    delay(350);
 
    digitalWrite(led0, LOW);
 
    digitalWrite(led1, LOW);
 
    digitalWrite(led2, LOW);
 
    digitalWrite(led3, LOW);
 
    digitalWrite(led4, LOW);
 
    digitalWrite(led5, LOW);
 
    digitalWrite(led6, LOW);
 
    delay(350);
 
    de3(led1,led3,led5);
 
    delay(350);
 
    digitalWrite(led0, LOW);
 
    digitalWrite(led1, LOW);
 
    digitalWrite(led2, LOW);
 
    digitalWrite(led3, LOW);
 
    digitalWrite(led4, LOW);
 
    digitalWrite(led5, LOW);
 
    digitalWrite(led6, LOW);
 
    delay(350);
 
    de2(led5,led1);
 
    delay(350);
 
    digitalWrite(led0, LOW);
 
    digitalWrite(led1, LOW);
 
    digitalWrite(led2, LOW);
 
    digitalWrite(led3, LOW);
 
    digitalWrite(led4, LOW);
 
    digitalWrite(led5, LOW);
 
    digitalWrite(led6, LOW);
 
    delay(350);
 
    de1(led3);
 
    delay(350);
 
    digitalWrite(led0, LOW);
 
    digitalWrite(led1, LOW);
 
    digitalWrite(led2, LOW);
 
    digitalWrite(led3, LOW);
 
    digitalWrite(led4, LOW);
 
    digitalWrite(led5, LOW);
 
    digitalWrite(led6, LOW);
 
    delay(1500);
 
    if (numero_des==1)
 
    {
 
      de1(led3);
 
      delay(2500);
 
    }
 
    if (numero_des==2)
 
    {
 
      de2(led5,led1);
 
      delay(2500);
 
    }
 
    if (numero_des==3)
 
    {
 
      de3(led1,led3,led5);
 
      delay(2500);
 
    }
 
    if (numero_des==4)
 
    {
 
      de4(led1,led0,led5,led6);
 
      delay(2500);
 
    } 
 
    if (numero_des==5)
 
    {
 
      de5(led0,led1,led3,led5,led6);
 
      delay(2500);
 
    } 
 
    if (numero_des==6)
 
    {
 
      de6(led0,led1,led2,led4,led5,led6);
 
      delay(2500);
 
    }
 
  }
 
}
 
  
=<div class="mcwiki-header" style="border: double; border-color: #11869a; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #99d8e3; vertical-align: top; width: 98%;">  CHRONOLOGIE </div>=
+
Maintenant que nous avons les valeurs désirées en angle, il nous faut, dans un second temps, réaliser la correction que nécessite le système afin de répondre correctement à la consigne en rotation sur les 3 axes. <br />
 +
On convertit alors la valeur consigne, calculée au préalable en radians, puis on soustrait la valeur mesurée pour connaître l’erreur et la corriger à l’aide d’un PID. <br />
 +
Cela donne le schéma bloc suivant :<br /><br />
 +
[[Fichier:bloc4.png|500px|thumb|center|Bloc de correction]]<br>
  
 +
Et pour finir, on doit envoyer au drone les valeurs de tension à appliquer sur chaque moteur qui correspondent aux coordonnées désirées. Un bloc dans la boîte à outil UAV permet de faire cela.<br /><br />
 +
[[Fichier:bloc5.png|500px|thumb|center|Bloc de commande des moteurs]]<br>
  
<p>
+
=<div class="mcwiki-header" style="border: double; border-color: #616363; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #BDC3C2; vertical-align: top; width: 98%;"> COMMUNICATION </div>=
* 27/01/2020 : Lors de cette séance, nous avons pris connaissance du bureau détude, à savoir, la création d'une clé USB. Cette séance a permis de mettre les bases du sujet et d'inviter à la réflexion au niveau de l'amélioration que nous pouvons apporté. <br /><br />
 
* 10/02/2020 : Nous nous sommes mis d'accord sur le petit plus de notre clé. C'est en faisant des recherches sur des écrans LCD que nous avons décidé de travailler sur l'amélioration expliquée dans la partie suivante. <br /><br />
 
* 02/03/2020 : Nous nous sommes familiarisés avec le logiciel Fritzing en élaborant le circuit imprimé d'un dé numérique.<br /><br />
 
* 05/03/2020 : Lors de cette nouvelle séance nous avons finalisé la réalisation du circuit imprimé du dé numérique. Celui-ci terminé, nous avons donc lancé son impression.<br /><br />
 
  
* 09/03/2020 : Nous avons élaboré le programme du dé numérique sur l'IDE Arduino. En effet grâce à la fonction random, nous lançons le dé, qui nous donne un chiffre entre 1 et 6. Selon le chiffre obtenu, certaine(s) LED s'allume(nt) et le dé affiche le chiffre obtenu.<br/><br />
+
== Le logiciel QGround ==
*12/03/2020 : Cette séance nous a permis d'apprendre à souder les différents composants du dé numérique sur notre circuit imprimé. Ont été soudés : les résistances, le micro-controleur ainsi que le bouton qui sert à lancer le dé, soit de relancer le programme informatique.<br/><br/>
+
[[Fichier:px4.png|150px|thumb|right|Pack Px4]]<br>
   
 
*19/03/2020 : Lors de cette séance, nous avons réglé les problèmes de code rencontrés (en effet le numéro des PIN ne coïncidaient pas avec celles mentionnées dans le code). Nous avons également pu imaginer une stratégie afin de mettre en place notre amélioration (celle-ci sera développée dans la partie « AMELIORATION » de notre wiki).<br/><br />
 
* 23/03/2020 : Cette séance était dédiée à la mise en place de notre amélioration sur le logiciel Fritzing. <br /><br />
 
* 26/03/2020 : Nous avons continué le Fritzing de la solution. <br /><br />
 
* 30/03/2020 : Lors de cette séance, nous avons continué le schematic de notre clé sur Fritzing et commencé le code de celle-ci. <br /><br />
 
* 02/03/2020 : Cette séance nous a permis de terminer le schematic de notre clé USB. <br /><br />
 
* 06/04/2020 : Toujours sur le logiciel Fritzing, nous avons placé des connecteurs afin de connecter nos deux cartes puis élaboré le PCB de celles-ci. De plus, du côté code, nous avons pu initialiser l'écran LCD. <br /><br />
 
* 09/04/2020 : Aujourd'hui, nous avons avancé sur le code informatique de l'amélioration. Nous avons trouvé comment afficher une barre de téléchargement sur l'écran qui montre l'avancée du transfert de fichier sur notre clé. <br /><br />
 
*27/04/2020 : Le schematic de l'amélioration étant terminé et validé, nous avons commencé l'élaboration de son circuit imprimé. <br /><br />
 
*30/04/2020 : Le PCB de notre amélioration est terminé et validé. Nous nous sommes concentré sur le code de notre clé USB. Afin de comprendre comment procéder, nous nous sommes informés sur comment est fait un système de fichier VFAT. <br /><br />
 
*04/05/2020 : Lors de cette séance, nous avons continué nos recherches sur le système de fichiers VFAT.
 
  
</p>
+
Le pack PX4 commandé par l’école comportait 2 radios télémétriques (toutes 2 émettrices/réceptrices) de la marque Holybro, ce sont des modules fonctionnant à 433MHz.<br /><br />
  
=<div class="mcwiki-header" style="border: double; border-color: #11869a; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #99d8e3; vertical-align: top; width: 98%;"> AMÉLIORATION  </div>=
+
De manière générique, le logiciel utilisé avec ses radios, qui sont faites pour fonctionner avec le PX4 (et que nous avons aussi commencé à utiliser) est le logiciel QGroundControl.<br /><br />
  
<p>
+
Ce logiciel (open source) qui est disponible sur PC et Android, permet principalement de commander au drone un certain trajet, et aussi de configurer le drone, ainsi que tous ces capteurs, moteurs, … (du moment qu’ils fonctionnent grâce à PX4 ou ArduPilot, une bibliothèque faite pour les drone d’Arduino). <br />
       
+
Le logiciel offre une utilisation facile et directe pour les débutants, tout en offrant une prise en charge des fonctionnalités haut de gamme pour les utilisateurs expérimentés.<br /><br />
[[Fichier:cleUSB_B6.png|300px|thumb|left|Carte électronique]]
 
[[Fichier:cleUSB_B6_back.png|300px|thumb|right|Carte électronique]]
 
<br /><br/>
 
Dans un premier temps, nous avons décidé de conceptualiser la clé USB de 128Gb. En effet, celle-ci nous laissait l'opportunité d'ajouter une quelconque amélioration, des plus faciles à réaliser ou au contraire plus compliquées. Nous savions qu'elle offrait la puissance et la place nécessaire pour faire ce que nous voulions. Et de plus, sachant que sa programmation était plus compliquée que celle de la premiere version, elle constituait un challenge supplémentaire pour nous.
 
<br /><br /><br /><br />
 
  
Afin d'ajouter un petit plus à notre clé USB, nous avons eu l'idée d'incorporer un écran LCD. <br />
 
Cet écran permettra à l'utilisateur de vérifier la capacité de stockage restante mais aussi d'afficher le nom des fichiers à chaque fois que ceux-ci sont ajoutés à la clé. <br />
 
[[Fichier:schematic_LCDB6.png|300px|thumb|right|Schematic de l'écran LCD]]
 
De plus, un fichier lourd met un certain temps à se transférer sur une clé USB. Ainsi notre barre de stockage fonctionnera telle un vumètre et montrera l'évolution du transfert du fichier. <br />
 
Afin de mettre en place les éléments que nous voulons ajouter à notre clé USB, nous allons donc associer un second micro-contrôleur sur lequel sera connecté l'écran LCD et les composants qui nous permettront d'afficher notre barre de stockage/vu-mètre.<br /><br />
 
  
Dans un premier temps, comme le montre la partie CHRONOLOGIE, nous avons commencé par élaborer le schématique de notre amélioration. Nous avons recherché comment connecter l'écran à son micro-contrôleur. Ainsi grâce au lien : https://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay nous avons entrepris la réalisation du schématique grâce au logiciel Fritzing. <br /> 
+
[[Fichier:interfaceQG.png|300px|thumb|right|Interface QGround]]<br>
A ce schéma, nous avons ajouté des éléments dans la partie quartz et la partie RESET du micro-contrôleur. La première agit comme horloge externe qui permet de cadencer le micro-contrôleur. La seconde permet la mise à zéro du micro-contrôleur, soit après son allumage ou soit en cas de plantage.
+
Ces principales caractéristiques sont :<br /><br />
<br/><br/> <br/>
 
[[Fichier:PCB_LCDB6.png|300px|thumb|left|PCB de l'amélioration de face]]
 
[[Fichier:PCBbis_LCDB6.png|300px|thumb|right|PCB de l'amélioration de dos]]
 
<br /><br /><br />
 
Après validation du schématique, nous nous sommes engagés dans la réalisation du circuit imprimé. Toujours à l'aide du logiciel Fritzing, nous avons dessiné le circuit de l'amélioration. Ce qui nous donne le PCB qu'on peut voir sur les deux images.
 
<br/><br /><br/><br /><br/>
 
Voici le fichier Fritzing: [[Media:amelioration_B6.zip]] (à renommer en .fzz) <br /><br /><br />
 
  
Suite et aussi pendant la conceptualisation électronique de notre amélioration, nous nous sommes penchés sur sa programmation. Dans un premier temps, nous nous sommes questionnés sur "comment faire afficher quelque chose sur l'écran LCD?". Grâce à un kit Arduino que nous avions à notre disposition, nous avons pu tester et réaliser un code qui affichait une sorte de barre de téléchargement. Celle-ci représentera, plus tard, le vumètre qui indique l'avancée des téléchargements des fichiers sur la clé ou encore la capacité restante sur cette dernière. <br />
+
* Installation / configuration complète des véhicules alimentés par ArduPilot et PX4 Pro.<br />
Ensuite, nous nous sommes intéressés sur "comment communiquer avec la mémoire de la clé?". Ainsi, nous avons effectué des recherches sur le fonctionnement du système de fichier VFAT. <br /> <br /> <br />
+
* Assistance en vol pour les véhicules exécutant PX4 et ArduPilot (ou tout autre pilote automatique qui communique en utilisant le protocole MAVLink).<br />
 +
* Planification de la mission pour le vol autonome.<br />
 +
* Affichage de la carte de vol indiquant la position du véhicule, la trajectoire de vol, les points de cheminement et les instruments du véhicule.<br />
 +
* Streaming vidéo avec superpositions d'affichage des instruments.<br />
 +
* Prise en charge de la gestion de plusieurs véhicules.<br />
  
* Fonctionnement du système de fichier VFAT:<br />
+
<br /><br /><br />
Le VFAT est un système de fichier qui utilise une table d'allocation de fichiers. <br />
+
En récupérant le drone, étant donné que les branchements entre le PX4 et la PMB était incorrects pour notre utilisation du drone, le logiciel et le drone n’arrivaient pas à se connecter.<br />
Cette dernière constitue un index qui liste le contenu d'un disque afin d'enregistrer l'emplacement des fichiers sur celui-ci. Il faut savoir que les blocs qui constituent un fichier ne sont pas toujours stockés de manière contiguë sur ce disque ainsi la table d'allocation permet de conserver la structure du fichier en créant des liens vers les blocs constitutifs du fichier. <br /><br />
+
Grâce à M. Louad Kahouadji, ingénieur et professeur au bâtiment Esprit, nous avons pu résoudre ce problème et établir la communication entre notre drone et le logiciel GroundControl. <br /><br />
  
Grâce à ce système, les noms des fichiers peuvent contenir 255 caractères. <br />
+
== Initialisation du drone ==
lien à garder : https://stackoverflow.com/questions/11928982/what-is-the-difference-between-vfat-and-fat32-file-systems
+
<br />
 +
Grâce à une intervention du professeur M. Louad Kahouadji nous avons pu commencer la configuration du PixHawk 4. Dans un premier temps, il nous fallait configurer l’orientation des capteurs, pour ce faire, nous avons suivi le mode d’emploi fourni par la documentation  disponible sur le site PX4. La configuration de la boussole interne se fait ensuite. M. Louad Kahouadji nous a accompagnés dans la configuration et cela nous a éclairé de nombreuses zones d’ombres. <br /><br />
  
</p>
+
Au fur et à mesure, nous sommes arrivés à un moment bloquant car il nous manque un module. Nous n’avons pas de module GPS ni de module optical flow pour faire déplacer le drone dans un espace.<br />
 +
<br />
  
=<div class="mcwiki-header" style="border: double; border-color: #11869a; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #99d8e3; vertical-align: top; width: 98%;"> CODE DE L'AMÉLIORATION </div>=
+
Le module GPS est utile pour un déplacement en extérieur et le module optical flow est plus amené à être utilisé dans un espace clos. Sans l’un de ces modules il nous a été impossible de finaliser l’initialisation.<br />
 +
<br />
  
#include <LiquidCrystal.h>
+
Cependant, grâce à l’aide du professeur nous savons désormais vers quelle direction travailler afin d’enfin commencer les simulations du drone.<br /><br />
 
LiquidCrystal lcd(12,11,5,4,3,2);
 
 
const int LCD_NB_ROWS = 2;
 
const int LCD_NB_COLUMNS = 16;
 
 
byte START_DIV_0_OF_1[8] = {
 
  B01111,
 
  B11000,
 
  B10000,
 
  B10000,
 
  B10000,
 
  B10000,
 
  B11000,
 
  B01111
 
};
 
 
byte START_DIV_1_OF_1[8] = {
 
  B01111,
 
  B11000,
 
  B10011,
 
  B10111,
 
  B10111,
 
  B10011,
 
  B11000,
 
  B01111
 
};
 
 
byte DIV_0_OF_2[8] = {
 
  B11111,
 
  B00000,
 
  B00000,
 
  B00000,
 
  B00000,
 
  B00000,
 
  B00000,
 
  B11111
 
};
 
 
byte DIV_1_OF_2[8] = {
 
  B11111,
 
  B00000,
 
  B11000,
 
  B11000,
 
  B11000,
 
  B11000,
 
  B00000,
 
  B11111
 
};
 
 
byte DIV_2_OF_2[8] = {
 
  B11111,
 
  B00000,
 
  B11011,
 
  B11011,
 
  B11011,
 
  B11011,
 
  B00000,
 
  B11111
 
};
 
 
byte END_DIV_0_OF_1[8] = {
 
  B11110,
 
  B00011,
 
  B00001,
 
  B00001,
 
  B00001,
 
  B00001,
 
  B00011,
 
  B11110
 
};
 
 
byte END_DIV_1_OF_1[8] = {
 
  B11110,
 
  B00011,
 
  B11001,
 
  B11101,
 
  B11101,
 
  B11001,
 
  B00011,
 
  B11110
 
};
 
 
void setup_progressbar() {
 
 
  lcd.createChar(0, START_DIV_0_OF_1);
 
  lcd.createChar(1, START_DIV_1_OF_1);
 
  lcd.createChar(2, DIV_0_OF_2);
 
  lcd.createChar(3, DIV_1_OF_2);
 
  lcd.createChar(4, DIV_2_OF_2);
 
  lcd.createChar(5, END_DIV_0_OF_1);
 
  lcd.createChar(6, END_DIV_1_OF_1);
 
}
 
 
void draw_progressbar(byte percent) {
 
 
  lcd.setCursor(0, 0);
 
  lcd.print(percent);
 
  lcd.print(F(" %  "));
 
  lcd.setCursor(0, 1);
 
 
  byte nb_columns = map(percent, 0, 100, 0, LCD_NB_COLUMNS * 2 - 2);
 
  for (byte i = 0; i < LCD_NB_COLUMNS; ++i) {
 
 
    if (i == 0) { // Premiére case
 
      if (nb_columns > 0) {
 
        lcd.write(1); // Char début 1 / 1
 
        nb_columns -= 1;
 
 
 
      } else {
 
        lcd.write((byte) 0); // Char début 0 / 1
 
      }
 
 
 
    } else if (i == LCD_NB_COLUMNS -1) { // Derniére case
 
 
 
      if (nb_columns > 0) {
 
        lcd.write(6); // Char fin 1 / 1
 
 
 
      } else {
 
        lcd.write(5); // Char fin 0 / 1
 
      }
 
 
 
    } else { // Autres cases
 
 
 
      if (nb_columns >= 2) {
 
        lcd.write(4); // Char div 2 / 2
 
        nb_columns -= 2;
 
 
 
      } else if (nb_columns == 1) {
 
        lcd.write(3); // Char div 1 / 2
 
        nb_columns -= 1;
 
 
 
      } else {
 
        lcd.write(2); // Char div 0 / 2
 
      }
 
    }
 
  }
 
}
 
 
void setup() {
 
  lcd.begin(LCD_NB_COLUMNS, LCD_NB_ROWS);
 
  setup_progressbar();
 
  pinMode(13,INPUT);
 
  draw_progressbar(0);
 
}
 
 
void chargement(int temps)
 
{
 
  for (int i=0; i<temps; i++){
 
    lcd.setCursor(0,0);
 
    lcd.print(" ______________");
 
    lcd.setCursor(0,1);
 
    lcd.print("|##____________|");
 
    delay(350);
 
    lcd.setCursor(0,1);
 
    lcd.print("|####__________|");
 
    delay(350);
 
    lcd.setCursor(0,1);
 
    lcd.print("|__####________|");
 
    delay(350);
 
    lcd.setCursor(0,1);
 
    lcd.print("|____####______|");
 
    delay(350);
 
    lcd.setCursor(0,1);
 
    lcd.print("|_____####_____|");
 
    delay(350);
 
    lcd.setCursor(0,1);
 
    lcd.print("|______####____|");
 
    delay(350);
 
    lcd.setCursor(0,1);
 
    lcd.print("|________####__|");
 
    delay(350);
 
    lcd.setCursor(0,1);
 
    lcd.print("|_________####_|");
 
    delay(350);
 
    lcd.setCursor(0,1);
 
    lcd.print("|___________###|");
 
    delay(350);
 
    lcd.clear(); 
 
  }
 
}
 
 
void loop(){
 
  int charge=0;
 
  if(digitalRead(13) == LOW){
 
      charge = random(0,100) ; // mettre ici le pourcentage qui il a d'utiliser sur la memoire
 
   
 
      chargement(3);
 
      int percent = charge;
 
      draw_progressbar(percent);
 
      delay(100);
 
    }
 
}
 
  
=<div class="mcwiki-header" style="border: double; border-color: #11869a; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #99d8e3; vertical-align: top; width: 98%;"> CONCLUSION  </div>=
+
=<div class="mcwiki-header" style="border: double; border-color: #616363; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #BDC3C2; vertical-align: top; width: 98%;"> REVISIONS APPORTEES </div>=
 +
<br />
 +
En fin de semestre l'année dernière, nous avons hérité du drone du groupe des anciens SE4. Cependant, celui-ci ne pouvait pas voler d'une, par ce que nous avons appris précédemment, mais aussi parce que son câblage était à revoir.<br /><br />
  
Enfin dans cette partie nous allons élaborer un bilan sur plusieurs points concernant notre clé, à savoir; l'aspect financier, le temps qu'il nous a fallu pour effectuer ce bureau d'étude, mais aussi l'aboutissement de notre projet. Nous allons également ouvrir la réflexion sur l'aspect commerciale de notre solution.
+
Nous avons donc dans un premier temps, réétudier le câblage électrique de notre drone. Nous avons donc, resoudé des câbles qui s'étaient désoudés ou qui alors n'étaient pas encore câblé. <br /><br />
 
  
* Bilan financier
+
Nous avons aussi et surtout, pensez judicieux de refabriquer les pieds du drone faits en bois qui étaient, de part notre jugement, trop fragiles. En effet, le bois est une matériau rigide, lorsque le drone se pose sur le sol après son vol, il subit des vibrations qui déforment le matériau de part ses ondes. Or le bois des pieds n'auraient pas pu subir cette propagation d'on et se seraient cassés instantanément. <br />
Après une étude du coût de réalisation de notre clé USB, nous remarquons que la conception de notre amélioration coûterait environ 32,26€ pour toute la partie électronique (sans compter la conception mécanique du boîtier de la clé USB). De plus, le PCB de la clé coûte à lui seul 10,70€. Ainsi, on arrive à un produit qui coûterait plus de 42,96€ de réalisation. Cette estimation est réalisée pour la production d'une seule clé, la production de plusieurs clés diminuerait considérablement le coût de celle-ci à l'achat. En effet, pour la fabrication de 10 cartes électroniques de la clé le prix est de 4,27€ pièce, et pour 10 PCB de notre amélioration on a un coût de 6,68€ pièce.
 
  
 +
[[Fichier:ancienp.png|300px|thumb|center|Les anciens pieds de notre drone]]<br />
  
* Bilan temporel
+
Nous avons donc remodéliser les pieds de notre drone sur le logiciel Fusion au Fabricarium, avant de les imprimer à l'aide des imprimantes 3D de l'école.<br /><br />
Ce bureau d'étude s'est étalé sur un total de 11 semaines, soit un total de 44h. Durant tout ce temps, nous avons pu réaliser la majeure partie de notre projet. En effet, au vu des circonstances actuelles, il est difficile d'effectuer un bilan temporel significatif car nous avons perdu du temps à cause d'une réorganisation. Ainsi, on ne peut pas dire s'il nous aurait fallu plus ou moins de temps pour terminer notre projet.
+
[[Fichier:fusion.png|300px|thumb|center|Modélisation 3D des nouveaux pieds de notre drone]]<br />
  
 +
Après avoir modélisé la pièce, la seule étape restante fut l’impression en 3 dimensions, qui a été réalisée, non sans quelques ratés, au Fabricarium.<br />
 +
[[Fichier:failimpression.png|150px|thumb|left|Une impression ratée dûe à un mauvais réglage]]
 +
[[Fichier:impressionpied2.png|150px|thumb|right|Une impression réussie]]
 +
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  
* Bilan technique
+
=<div class="mcwiki-header" style="border: double; border-color: #616363; border-width:5px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #BDC3C2; vertical-align: top; width: 98%;"> CONCLUSION  </div>=
En imaginant qu'après soudure tout fonctionne sans problème, la taille de notre amélioration pose cependant problème. En effet, l'écran LCD étant imposant, notre clé ne pourrait pas être commercialisable. On recherche tout de même d'une clé USB qu'elle soit pratique et transportable (soit de taille raisonnable). Or, ce que nous proposons ici n'est pas « conforme » sur ce point.
+
<br />
Néanmoins, elle reste fonctionnelle et l'amélioration que nous avons réalisée est une piste que nous trouvons intéressante.
 
De plus, d'après le bilan financier, la clé possèderait un prix d'achat beaucoup trop élevé par rapport au marché. Ainsi, il faudrait réétudier la solution pour la rendre moins chère.
 
  
 +
Durant ce second semestre de travail sur le projet nous avons perdu du temps durant cette période. En effet, nous aurions pu prévoir en effet qu’il pouvait nous manquer du matériel pour la simulation, nous étions persuadés d'avoir ce qu’il nous fallait. De plus, l’impression des pieds a pris plus de temps que prévu et il nous a fallu relancer les impressions à plusieurs reprises. Parallèlement, nous avons pu avancer davantage sur la partie wiki et sur la préparation d’une future simulation qui était initialement prévue. <br />
 +
Quand nous serons amenés à de nouveau travailler sur un projet il pourrait être intéressant de mieux vérifier les ressources à disposition et  essayer de faire une simulation plus rapidement afin d’obtenir des résultats concrets.  De plus, ce serait un gain de temps de se fixer rapidement sur un logiciel de travail afin de ne pas perdre à travers les multitudes de solutions qui s’offrent à nous. <br /><br />
  
* Que faudrait-il changer? Comment?
 
Enfin, nous pensons qu'il serait possible de rendre notre clé USB plus pratique sur le plan technique en remplaçant l'écran LCD utilisé par un autre plus petit. En effet, nous avons utilisé un écran 16x2 mais peut-être qu'un écran 1x8 aurait convenu.
 
  
 +
Finalement, en travaillant sur la conception de quadricoptère, nous avons réussi à réaliser :<br /><br />
 +
* d’importantes recherches bibliographiques sur le fonctionnement du drone, <br />
 +
* la compréhension du modèle de commande et de correction,<br />
 +
* le dimensionnement des pièces,<br />
 +
* le choix des matériaux,<br />
 +
* la prise en main de la simulation MatLab du robot,<br />
 +
* la prise en main du logiciel QGround, qui nous permettra de nous connecter au PixHawk 4, et de calibrer, contrôler le drone.<br />
 +
* Modéliser en 3D, ou en 2D, de nouveaux pieds pour le drone, en choisissant avec soin le matériau<br />
 +
* Prendre encore mieux en main la modélisation MatLab, effectuer des simulations avec<br />
 +
* Nous avons refait toute la partie branchement électronique du drone (notamment au niveau PixHawk 4)<br />
 +
* A l’aide du logiciel QGroundControl (qu’il nous faut continuer d’apprendre à maîtriser), initialiser le PixHawk 4, les moteurs brushless et les capteurs afin de faire voler le drone en intérieur<br />
 +
* On a aussi porté à notre connaissance le langage de programmation ROS, qui est utilisé pour la programmation robotique. Il pourrait être intéressant d’apprendre ce langage afin de faire faire un parcours au drone.<br /><br />
  
  
Pour finir, ce bureau d'étude nous a permis d'acquérir des compétences dans le domaine de l'électronique, de l'informatique et dans la gestion de projet.
+
== Aller plus loin ==
En effet, nous avons pu grâce aux outils qui étaient à notre disposition concevoir et réaliser une clé USB mais aussi pu mettre en place une idée afin d'améliorer celle-ci. Nous nous sommes donc familiarisés avec le logiciel de conception de carte électronique Fritzing, avec le langage informatique C grâce auquel nous avons codé notre clé et avec les outils de soudure. Nous avons su nous organisés devant les tâches que nous devions réaliser. De plus, nous avons su tenir compte d'un calendrier sans prendre de retard dans nos objectifs.
+
<br />
  
Nous pouvons donc dire que ce bureau d'étude nous a permis de mettre à l'épreuve notre capacité à nous organiser et nous a aussi apporté de la satisfaction face au challenge que nous avons relevé. En effet, l'amélioration que nous imaginions au départ n'était pas forcément évidente à mettre en place mais elle nous a surtout motivé durant toute la période du projet.  
+
Pour continuer le projet, nos premières pistes seraient de nous orienter vers l’achat des fournitures manquantes : le gps ou le optical flow. Cela nous permettrait de réaliser les premières simulations afin d’obtenir des résultats concrets. Cela nous permettrait d'ensuite nous attarder sur les pistes d’optimisations/améliorations possibles et d’observer les différents impacts des paramètres du logiciel PX4.<br /><br />
  
De part cette expérience, nous nous sommes confortés dans le choix de notre spécialité pour l'an prochain, à savoir la formation IMA proposée à Lille.
+
Dans un second temps nous pourrons nous attarder sur la conception du châssis et son optimisation. En effet, nous pourrions utiliser d’autres matériaux tels que le carbone ou l’aluminium afin d’optimiser son poids et sa rigidité. <br /><br />

Version actuelle datée du 6 janvier 2022 à 19:17


PRESENTATION DU SUJET

Notre logo

L’objectif de ce projet est de réaliser un drone, de sa conception à sa réalisation et de mettre en œuvre une solution pour le commander par wifi.
Notre équipe est composée d'étudiants en 4ème année de la spécialité « Systèmes embarqués » qui sont : Niels Godbert, Léo Poumaer, Rémi Brachot, Lucas Postollec et Louise Maës.
Nous espérons que ce projet va nous permettre de pouvoir mettre en application les savoir-faire acquis pendant notre formation, et ainsi pouvoir développer de nouveaux acquis grâce à ce travail en groupe.







QU'EST-CE QU'UN DRONE ?

Introduction

Quadrirotor

Les drones sont des aéronefs autonomes qui ont la particularité de ne pas nécessiter de présence humaine à bord. Cependant, leurs utilisations la plus répandue n’est que semi-autonome, ils restent majoritairement pilotés manuellement à distance par commande numérique.
Utilisés aussi bien en tant que loisir que dans le milieu professionnel et militaire, on observe une popularité qui ne cesse de croître depuis plusieurs années. Que ça soit pour la photographie afin de filmer des plans autrement impossibles, pour des relevés de terrain ou encore pour la sécurité et pour le bâtiment, les drones deviennent un outil de travail unique et de plus en plus indispensable dans certaines professions.

Durant ce projet, nous allons nous intéresser plus précisément sur les quadrirotors (ou quadricoptères), une catégorie bien précise de drones.
Le quadrirotor se démarque du fait de sa voilure tournante comportant quatre rotors et quatre hélices pour sa sustentation contrairement à d’autres types de drones où le nombre d’hélice peut aller jusqu’à huit. Les rotors les plus populaires sont placés aux extrémités d'une croix, cependant d’autres variétés de cadres existent (en “H”, en “X”, en “T”...etc).

Ici, nous allons réaliser un drone quadrirotors en "X".

Composition

Composition du quadrirotor

L’architecture d’un quadrirotor est épurée, la conception du drone est un compromis entre légèreté, résistance et performance.
Son châssis central comporte le contrôleur de vol (un microcontrôleur et des capteurs), une batterie et 4 bras avec au bout, les hélices mises en rotations par des moteurs commandés par le microcontrôleur.

La différence entre les nombreux modèles va se faire sur la matière du châssis et des hélices ainsi que leurs tailles, la capacité de la batterie, la vitesse maximale, la distance de contrôle, la portée des différents capteurs et la caméra embarquée. Le choix est très vaste et, avec une demande croissante, le prix baisse de plus en plus ce qui rend cette technologie accessible au grand public.






Principe de fonctionnement

Axes de rotation

Afin de comprendre le fonctionnement d’un drone, il est important de définir les trois axes de rotation sur lesquels il va se déplacer :

L’axe des x, dit axe de roulis, qui correspond au mouvement de bascule de gauche à droite.
L’axe des y, dit axe de tangage, qui correspond au mouvement de bascule d’avant en arrière.
L’axe des z, dit axe de lacet, qui correspond à la rotation sur lui-même.

On observe deux positions possibles pour le drone dans son repère ; lorsque les hélices sont parallèles au sol, elles génèrent une force perpendiculaire qui permet au drone de s’élever dans les airs. Lorsque celles-ci sont inclinées, elles permettent au drone de se déplacer dans une direction.

On peut alors établir le tableau suivant :

Tableau de fonctionnement


CAHIER DES CHARGES

Objectifs


Le but de notre projet est de concevoir un drone dans son intégralité, ce qui inclut : la modélisation d’un circuit imprimé et de la partie électronique, la réalisation du châssis, la modélisation et programmation informatique du système de contrôle qui permettra la communication avec le drone.

Finalement, une fois tous ces éléments réalisés, le drone devrait être capable de voler selon les bons vouloirs de son pilote.

L'année dernière, nous avons hérité du drone des anciens SE4. Notre objectif était alors de faire voler leur drone. Nous avons constaté que le câblage était à refaire et que les pieds de leur drone n'étaient pas assez solides. Nous avons donc dû revoir notre cahier des charges.

Description fonctionnelle des besoins


Initialement, afin d’atteindre notre but de concevoir un drone; voici ce qui devait être mis en place :

Niveau matériel :

  • La documentation et le choix des matériaux pour les différentes parties du châssis.
  • La conception (ou l’achat) d’un châssis capable de résister aux chocs, de supporter le poids de la batterie, et bien évidemment conçu de manière à simplifier l'ensemble des branchements électriques entre les différentes parties du drone.
  • La documentation et le choix sur le dimensionnement des pièces électroniques/électromécaniques (moteurs, contrôleurs de moteurs, contrôleur de vol, carte mère, capteurs) et autres pièces indispensable (hélices par exemple).

Niveau informatique :

  • La communication entre le drone et un téléphone, un ordinateur ou une télécommande via le wifi (nous pensons à une application dédiée à cet effet, via AppInventor).
  • La modélisation, la programmation de parcours pour vérifier le fonctionnement du drone.

Niveau Automatique/Commande :

  • Le drone doit pouvoir monter, descendre, se déplacer latéralement et pivoter sur lui-même (axe de lacet).
  • Le drone devra répondre aux instructions du pilote de manière rapide et précise.
  • Le drone doit être en mesure de voler correctement et jusqu’à une distance suffisamment grande entre lui-même et le pilote.
  • Le drone doit être stable, même face aux intempéries (vent par exemple) .
  • Les servomoteurs doivent être parfaitement synchronisés pour garantir la stabilité.

Limites du projet


Les objectifs que nous nous sommes fixés au début du projet ont évolué. En effet, nous avions prévu de réaliser un drone de A à Z, en codant son programme et en le chargeant nous-même sur notre carte préalablement designée par nos soins. Cependant, nous n'avions pas encore eu conscience de la difficulté de ce que nous voulions entreprendre. De plus, nous avons également revu à la baisse notre volonté d'apporter une amélioration à notre projet. Les équipements que nous pouvons ajouter au drone restent malgré tout très couteux.


De plus, d’autres limites de notre projet nous sont apparues, par exemple les contraintes financières et matérielles. En effet, certains matériaux dont nous connaissons les caractéristiques avantageuses dans la conception d’un drone sont plutôt coûteux, à savoir le carbone pour le châssis ou alors des matériaux peut-être trop lourds comme le bois.


Nous devons aussi prendre en compte l’installation d’une batterie : comment recharger le drone ? Est-ce trop lourd ? Quelle est l’autonomie ? La météo et les potentiels obstacles doivent être pris en compte par le pilote.

Gantt projet

Diagramme de Gantt du semestre 7

LES MATERIAUX ET EQUIPEMENTS ELECTRONIQUES UTILISES

Le châssis


Avant tout, le choix du matériau est très important pour un drone : il faut qu’il soit ni trop lourd ni trop rigide. En effet, le cadre du drone va devoir supporter toutes les vibrations que va générer le drone, il faut donc un matériau pas trop déformable afin que celui-ci reste stable et ne se détériore pas. Même si le carbone semble être idéal, il reste une solution très coûteuse. En compromis, l’alliance entre le bois et le plastique est ce qui nous semblait le plus conforme : le bois forme un châssis solide et rigide, tandis que pour les pieds le plastique résisterait aux vibrations et à l'atterrissage de l’engin.
En réalité, le bois est à proscrire et mieux vaut le remplacer par de l’aluminium, très léger et très rigide.

Les hélices

Les différentes hélices

Comme pour le cadre, les hélices définissent la fonction que l’on veut donner à notre drone. Il en existe de tailles, de formes et de matériaux différents.
Plus les hélices ont de pales, plus elles consomment d’énergie et donc, par conséquent, la consommation du drone est plus importante. Les hélices en plastique sont de très bonnes candidates et rivalisent avec celles en carbone, beaucoup plus chères. Mais au-delà du matériau, la longueur et le pas de celles-ci jouent un rôle important dans la fonction de notre drone.

Une hélice dite longue va tourner moins rapidement qu’une hélice dite courte, mais sa capacité de portance sera, bien évidemment, plus importante au vu de sa taille. Elle apporte aussi, plus de stabilité. Contrairement à la taille de l’hélice, un pas élevé implique une faible portance et une vitesse de rotation maximale limitée.

On peut alors établir un tableau récapitulatif des effets de la taille des hélices et de son pas :

Les différentes tailles d'hélices et leurs conséquences


Les moteurs

Afin de bien choisir ses moteurs, il faut bien définir le type de vol que va réaliser notre drone. Il faut donc définir les paramètres suivants : l’endurance souhaitée, la taille du drone, son poids total, sa charge utile, sa vitesse maximale, le nombre de moteurs (ici quatre) ainsi que son utilité. En général, pour un vol “stable”, il faut 8 000 tours/minutes maximum, pour un vol “normal”, il faut 10 000 tours/minutes et enfin, pour un vol “nerveux”, il faut 12 000 tours/minutes.

Si on utilise une batterie 3S (11,1V), on peut établir le tableau suivant :

Caractéristiques de vol en fonction de la taille des hélices et du moteur


Ici, pour la conception de notre drone, nous avons décidé d’utiliser des moteurs brushless qui sont de la même famille que les machines synchrones. Ils sont faciles à contrôler à l’aide d’un ESC, sont plus fiables et ont une grande marge de vitesse de rotation, ce qui correspond à la fonctionnalité que l’on veut donner à notre drone.

La batterie

Batterie adaptée à notre drone

Le choix de la batterie est très important pour le bon fonctionnement du drone.
En effet, la batterie doit être assez puissante pour alimenter les différents composants mais être également assez légère pour ne pas rendre le drone trop lourd et ainsi, l'empêcher de voler correctement.




Le contrôleur de vol

Le contrôleur de vol

Après avoir fait de nombreuses recherches, nous nous sommes vite rendu compte qu’il allait nous être compliqué à notre niveau de réaliser par nous même l’ensemble de la partie communication avec le drone, ainsi que le contrôle et la commande des moteurs, des différents capteurs,..
Notre choix s’est donc porté sur le contrôleur de vol Pixhawk qui inclut tout ce dont nous avons besoin.

En effet, le PixHawk4 est un contrôleur de vol, c’est-à-dire que ce module agit comme une carte microcontrôleur (comme un arduino) déjà programmée (programmation très complexe) et conçue de manière à être extrêmement exploitable : on peut ajouter au PX4 un grand nombre de capteurs tels que : une caméra, des capteurs ultrason, stabilisateur de caméra,...

MODELISATION

Modélisation mathématique


Avant toute chose, il est important de savoir comment fonctionne mathématiquement notre système, afin de pouvoir modéliser notre système sur Matlab.

Ainsi, après plusieurs études de documentation sur la conception d’un drone, nous en sommes venus aux équations de mouvement suivantes :

Equations du mouvement du système

avec Iq , q ∈ [ x , y , z ] : le moment d’inertie en kg.m2
φ : angle de roulis. Il définit la rotation autour de l’axe x1( − π < φ < π) en radians
θ : angle de tangage. Il définit la rotation autour de l’axe y1( − 2π < θ < 2π ) en radians
Ψ : angle de lacet. Il définit la rotation autour de l’axe z1(− π <Ψ < π ) en radians


Le drone va subir différentes forces qui vont entrer en jeu dans la dynamique du système :

La portance: composante de force subie par un corps en mouvement dans un fluide qui s’exerce perpendiculairement à la direction du mouvement des hélices. Celle-ci est générée grâce à la rotation des quatre hélices. Elle va permettre à l’appareil de décoller si elle compense au moins la traînée. Elle s’exprime sous la forme : τx = bl(Ω4² − Ω2²) sur l’axe de roulis et τy = bl(Ω3² − Ω1²) sur l’axe de tangage avec b le coefficient de portance en kg.m/rad2 et l la demi-envergure du quadrirotor en mètres.

L’effet gyroscopique: capacité d’un objet à conserver son moment angulaire. Ainsi, lorsque le quadrirotor est en rotation sur deux axes, cette force apparaît sur le troisième axe et résiste aux mouvements de ce dernier. Elle s'exprime comme suit : Gx = Jωy(Ω1² + Ω3² − Ω4² − Ω2²) et Gy = Jωx(− Ω1² − Ω3² + Ω4² + Ω2²), respectivement pour l’axe de roulis et de tangage.

La traînée: force qui s’oppose parallèlement au mouvement d’un corps dans un fluide et agit comme un frottement. Elle vaut : τz = d(Ω1² + Ω3² − Ω4² − Ω2²) avec d le coefficient de traînée en kg.m2/rad2. Elle s’applique donc selon l’axe de lacet.

En projetant ces trois forces et en ajoutant l’effet de l’accélération des moments d’inertie sur chaque axe, on obtient les équations de la vitesse angulaire suivant les axes de lacet, roulis et tangage :

Equations de la vitesse angulaire selon les trois axes du système

avec Iq , q ∈ [ x , y , z ] : le moment d’inertie en kg.m2
φ : angle de roulis. Il définit la rotation autour de l’axe x1( − π < φ < π) en radians
θ : angle de tangage. Il définit la rotation autour de l’axe y1( − 2π < θ < 2π ) en radians
Ψ : angle de lacet. Il définit la rotation autour de l’axe z1(− π <Ψ < π ) en radians
Ω , i ∈ [1; 4] : la vitesse de chaque moteur en rad/s

Simulation


Pour réaliser une simulation Matlab à l’aide des résultats trouvés précédemment, nous avions besoin d’un modèle du quadrirotor.

Grâce à la partie Simulink du logiciel Matlab, nous avons pu commander le drone, et vérifier sa stabilité via des simulations.
La boîte à outils UAV comprend des outils et des applications de référence pour concevoir, simuler, tester et déployer des applications de drones. On peut alors observer sur la figure suivante, les commandes que nous avons utilisé afin de procéder à la simulation du drone :

Commande de la simulation du drone
Bloc de commandes

Ce gros schéma bloc comprend quatre curseurs permettant d’appliquer une commande au drone en hauteur, en latitude, en longitude et en angle de lacet.



Bloc de commandes

Le suivant, quatre sous-systèmes qui permettent d’ajuster manuellement les valeurs des paramètres des PID qui corrigent chaque commande à l’aide de curseurs.


Bloc de commandes

Enfin, ces deux parties représentent différents capteurs tels qu’un gyroscope, un capteur de vitesse et de position.
On peut décider de commander le drone manuellement grâce au curseur ou automatiquement, grâce à des schémas de commande.
Cela va permettre au drone de suivre des commandes sans intervention extérieure. On peut par exemple commander au drone de suivre un trajet particulier, ou tout simplement de lui demander d’atterrir.


Régulation du drone :

On doit maintenant réussir à stabiliser le quadrirotor, afin qu’il “obéisse” aux consignes de manière stable, rapide et précise. Pour cela, on doit récupérer les données en vitesse, position et angles fournies par les différents capteurs. Un convertisseur nous indique les tensions qu’on peut appliquer pour que le drone puisse atteindre la position désirée. Dans un premier temps, on cherche à calculer la poussée à appliquer et les valeurs d’angle de roulis et de tangage désirées.
Voici la structure du schéma bloc permettant ces calculs :

Bloc de régulation du système

Le principe est plutôt simple: la position mesurée est soustraite à la valeur désirée. Elle est ensuite corrigée dans un PID qui renvoie une tension adaptée, permettant d’atteindre la vitesse voulue.
La vitesse théorique en x et y est soustraite à la vitesse mesurée et multipliée par la matrice de rotation afin d’avoir l’erreur sur la vitesse. L’erreur est corrigée par un PID qui nous donne respectivement la valeur de l’angle de roulis et de tangage désirée.
Le principe reste le même pour la vitesse en z mis à part que nous n’avons pas besoin de multiplier par la matrice de rotation, de plus, le dernier PID renvoie la valeur de poussée.


Maintenant que nous avons les valeurs désirées en angle, il nous faut, dans un second temps, réaliser la correction que nécessite le système afin de répondre correctement à la consigne en rotation sur les 3 axes.
On convertit alors la valeur consigne, calculée au préalable en radians, puis on soustrait la valeur mesurée pour connaître l’erreur et la corriger à l’aide d’un PID.
Cela donne le schéma bloc suivant :

Bloc de correction

Et pour finir, on doit envoyer au drone les valeurs de tension à appliquer sur chaque moteur qui correspondent aux coordonnées désirées. Un bloc dans la boîte à outil UAV permet de faire cela.

Bloc de commande des moteurs

COMMUNICATION

Le logiciel QGround

Pack Px4

Le pack PX4 commandé par l’école comportait 2 radios télémétriques (toutes 2 émettrices/réceptrices) de la marque Holybro, ce sont des modules fonctionnant à 433MHz.

De manière générique, le logiciel utilisé avec ses radios, qui sont faites pour fonctionner avec le PX4 (et que nous avons aussi commencé à utiliser) est le logiciel QGroundControl.

Ce logiciel (open source) qui est disponible sur PC et Android, permet principalement de commander au drone un certain trajet, et aussi de configurer le drone, ainsi que tous ces capteurs, moteurs, … (du moment qu’ils fonctionnent grâce à PX4 ou ArduPilot, une bibliothèque faite pour les drone d’Arduino).
Le logiciel offre une utilisation facile et directe pour les débutants, tout en offrant une prise en charge des fonctionnalités haut de gamme pour les utilisateurs expérimentés.


Interface QGround

Ces principales caractéristiques sont :

  • Installation / configuration complète des véhicules alimentés par ArduPilot et PX4 Pro.
  • Assistance en vol pour les véhicules exécutant PX4 et ArduPilot (ou tout autre pilote automatique qui communique en utilisant le protocole MAVLink).
  • Planification de la mission pour le vol autonome.
  • Affichage de la carte de vol indiquant la position du véhicule, la trajectoire de vol, les points de cheminement et les instruments du véhicule.
  • Streaming vidéo avec superpositions d'affichage des instruments.
  • Prise en charge de la gestion de plusieurs véhicules.




En récupérant le drone, étant donné que les branchements entre le PX4 et la PMB était incorrects pour notre utilisation du drone, le logiciel et le drone n’arrivaient pas à se connecter.
Grâce à M. Louad Kahouadji, ingénieur et professeur au bâtiment Esprit, nous avons pu résoudre ce problème et établir la communication entre notre drone et le logiciel GroundControl.

Initialisation du drone


Grâce à une intervention du professeur M. Louad Kahouadji nous avons pu commencer la configuration du PixHawk 4. Dans un premier temps, il nous fallait configurer l’orientation des capteurs, pour ce faire, nous avons suivi le mode d’emploi fourni par la documentation disponible sur le site PX4. La configuration de la boussole interne se fait ensuite. M. Louad Kahouadji nous a accompagnés dans la configuration et cela nous a éclairé de nombreuses zones d’ombres.

Au fur et à mesure, nous sommes arrivés à un moment bloquant car il nous manque un module. Nous n’avons pas de module GPS ni de module optical flow pour faire déplacer le drone dans un espace.

Le module GPS est utile pour un déplacement en extérieur et le module optical flow est plus amené à être utilisé dans un espace clos. Sans l’un de ces modules il nous a été impossible de finaliser l’initialisation.

Cependant, grâce à l’aide du professeur nous savons désormais vers quelle direction travailler afin d’enfin commencer les simulations du drone.

REVISIONS APPORTEES


En fin de semestre l'année dernière, nous avons hérité du drone du groupe des anciens SE4. Cependant, celui-ci ne pouvait pas voler d'une, par ce que nous avons appris précédemment, mais aussi parce que son câblage était à revoir.

Nous avons donc dans un premier temps, réétudier le câblage électrique de notre drone. Nous avons donc, resoudé des câbles qui s'étaient désoudés ou qui alors n'étaient pas encore câblé.

Nous avons aussi et surtout, pensez judicieux de refabriquer les pieds du drone faits en bois qui étaient, de part notre jugement, trop fragiles. En effet, le bois est une matériau rigide, lorsque le drone se pose sur le sol après son vol, il subit des vibrations qui déforment le matériau de part ses ondes. Or le bois des pieds n'auraient pas pu subir cette propagation d'on et se seraient cassés instantanément.

Les anciens pieds de notre drone

Nous avons donc remodéliser les pieds de notre drone sur le logiciel Fusion au Fabricarium, avant de les imprimer à l'aide des imprimantes 3D de l'école.

Modélisation 3D des nouveaux pieds de notre drone

Après avoir modélisé la pièce, la seule étape restante fut l’impression en 3 dimensions, qui a été réalisée, non sans quelques ratés, au Fabricarium.

Une impression ratée dûe à un mauvais réglage
Une impression réussie















CONCLUSION


Durant ce second semestre de travail sur le projet nous avons perdu du temps durant cette période. En effet, nous aurions pu prévoir en effet qu’il pouvait nous manquer du matériel pour la simulation, nous étions persuadés d'avoir ce qu’il nous fallait. De plus, l’impression des pieds a pris plus de temps que prévu et il nous a fallu relancer les impressions à plusieurs reprises. Parallèlement, nous avons pu avancer davantage sur la partie wiki et sur la préparation d’une future simulation qui était initialement prévue.
Quand nous serons amenés à de nouveau travailler sur un projet il pourrait être intéressant de mieux vérifier les ressources à disposition et essayer de faire une simulation plus rapidement afin d’obtenir des résultats concrets. De plus, ce serait un gain de temps de se fixer rapidement sur un logiciel de travail afin de ne pas perdre à travers les multitudes de solutions qui s’offrent à nous.


Finalement, en travaillant sur la conception de quadricoptère, nous avons réussi à réaliser :

  • d’importantes recherches bibliographiques sur le fonctionnement du drone,
  • la compréhension du modèle de commande et de correction,
  • le dimensionnement des pièces,
  • le choix des matériaux,
  • la prise en main de la simulation MatLab du robot,
  • la prise en main du logiciel QGround, qui nous permettra de nous connecter au PixHawk 4, et de calibrer, contrôler le drone.
  • Modéliser en 3D, ou en 2D, de nouveaux pieds pour le drone, en choisissant avec soin le matériau
  • Prendre encore mieux en main la modélisation MatLab, effectuer des simulations avec
  • Nous avons refait toute la partie branchement électronique du drone (notamment au niveau PixHawk 4)
  • A l’aide du logiciel QGroundControl (qu’il nous faut continuer d’apprendre à maîtriser), initialiser le PixHawk 4, les moteurs brushless et les capteurs afin de faire voler le drone en intérieur
  • On a aussi porté à notre connaissance le langage de programmation ROS, qui est utilisé pour la programmation robotique. Il pourrait être intéressant d’apprendre ce langage afin de faire faire un parcours au drone.


Aller plus loin


Pour continuer le projet, nos premières pistes seraient de nous orienter vers l’achat des fournitures manquantes : le gps ou le optical flow. Cela nous permettrait de réaliser les premières simulations afin d’obtenir des résultats concrets. Cela nous permettrait d'ensuite nous attarder sur les pistes d’optimisations/améliorations possibles et d’observer les différents impacts des paramètres du logiciel PX4.

Dans un second temps nous pourrons nous attarder sur la conception du châssis et son optimisation. En effet, nous pourrions utiliser d’autres matériaux tels que le carbone ou l’aluminium afin d’optimiser son poids et sa rigidité.