Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Quadricoptr
Logiciel de vol
DIETRICH Lucas
Lyce Jean-Baptiste Schwilgu Slestat
Terminale S Option SI
Session 2013-2014
www.kestrel.fr
05/06/2014
REMERCIEMENTS
Nous souhaitons remercier les personnes qui nous ont aids concrtiser notre projet tout au long
de lanne :
M. Bertrand SPITZ, enseignant lEcole Nationale de lAviation Civile (ENAC), pour ses
conseils et son aide concernant le filtre complmentaire,
les relations extrieures au lyce qui nous ont apports soutien et conseils.
1
DIETRICH Lucas Quadricoptre www.kestrel.fr
2.
Identification du besoin............................................................................................................... 4
3.
4.
5.
I.
2.
3.
II.
LOGICIEL .......................................................................................................................................... 8
1.
b)
c)
Communication ........................................................................................................................... 9
a) Liaison SPI (rf. : ALN3D : Communication.cpp : Lignes 193, ArduinoProLibrary :
Communication.cpp) ....................................................................................................................... 9
b)
c)
3.
Scurit ...................................................................................................................................... 10
III.
DYNAMIQUE .............................................................................................................................. 11
1.
2.
Acclromtre ....................................................................................................................... 12
b)
c)
Synthse ............................................................................................................................................ 13
IV.
ASSERVISSEMENT ...................................................................................................................... 14
1.
2.
3.
CONCLUSION ......................................................................................................................................... 16
GLOSSAIRE ............................................................................................................................................. 17
ANNEXES................................................................................................................................................ 18
1.
Graphiques ................................................................................................................................ 18
a)
b)
c)
2.
3.
Logiciel ....................................................................................................................................... 20
BIBLIOGRAPHIE ...................................................................................................................................... 22
3
DIETRICH Lucas Quadricoptre www.kestrel.fr
INTRODUCTION
THEME : ROBOTIQUE
SOUS-THEME : Quadricoptre
PROBLEMATIQUE :
Comment inspecter en toute scurit un ouvrage de grande hauteur ?
1. Prsentation du projet
Ds la fin du mois daot, notre quipe a choisi de concevoir un quadricoptre dans le cadre du
projet de terminale S. Nous souhaitions concevoir nous-mmes lintgralit dun objet technique en
mettant en uvre des comptences diverses : lectronique, mcanique, informatique, physique et
mathmatiques. Cest un projet ambitieux, choisi en raison de sa complexit.
2. Identification du besoin
Certains difices doivent tre
inspects
pour
dtecter
dventuels
dangers
ou
vnements
anormaux.
Cependant, certains dentre eux
sont trs difficiles daccs, voire
inaccessibles (ponts, immeubles,
barrages), et ncessitent de
mettre
en
place
des
quipements lourds et coteux
(grue, chafaudages, etc).
Parfois, linspection ncessite la
cessation de lactivit dans la
zone pour des questions de
scurit ou daccessibilit.
Entreprise
Ouvrage de grande
hauteur
Quadricoptre
Inspecter en toute
scurit des ouvrages
de grande hauteur ou
inaccessibles
Un
quadricoptre
permet
Dans quel but?
dinspecter la plupart des grands
ouvrages en toute scurit pour les usagers, sans empcher lactivit et sans mettre en uvre des
quipements coteux. De plus, il vite lintervention humaine directe et dangereuse sur louvrage
lorsquil ne sagit que dune inspection.
300
Utilisation
de Altitude
cartes standards
maximale : 50m
Autonomie
Porte minimale
minimale de vol : en champ libre :
5min
500m
4
DIETRICH Lucas Quadricoptre www.kestrel.fr
4. Tche effectuer
Ma tche consiste mettre en place un systme de contrle qui permette de sustenter le
quadricoptre dans les airs. Il faut tout dabord concevoir le systme lectronique, incluant les
capteurs qui permettent dacqurir les informations, les microcontrleurs pour le traitement des
donnes et les interfaces de communication. Il est ncessaire de mettre en place un modle
mathmatique, concevoir lalgorithme de contrle (algorithme de rgulation) et enfin permettre
lenvoi des commandes calcules aux moteurs afin de stabiliser lappareil. De plus, le systme doit
pouvoir communiquer avec le sol, tre scuritaire et permettre un dveloppement continuel,
pratique et rapide.
5. Diagramme FAST
Voici le diagramme FAST de ma partie dans le projet :
Acqurir les
informations des
capteurs
Sustenter le drone
Acqurir
lacclration et la
vitesse angulaire sur
chaque axe
Gyroscope et
acclromtre de
lArduIMU
Acqurir laltitude
Altimtre
ArduIMU
ArduIMU
Calculer les
commandes de
rgulation
ArduIMU
Envoyer une
commande au
moteur
Arduino mini
Traiter les
informations issues
des capteurs
Corriger lassiette
5
DIETRICH Lucas Quadricoptre www.kestrel.fr
I.
1. Microcontrleurs Arduino
Le microcontrleur ArduIMU conu et vendu par Sparkfun
Electronics est un driv des cartes Arduino, programmable en C++
par le logiciel Arduino. Il possde un gyroscope 3 axes, un
acclromtre 3 axes et galement un magntomtre 3 axes. Le
processeur est un ATmega328P 8bits cadenc 16MHz avec 32Ko
de mmoire programmable. Il est galement possible dy ajouter
un GPS. Son cot est approximativement de 60.
Il a t choisi pour sa facilit de mise en uvre, cest--dire que tous les capteurs sont sur la mme
carte. Le processeur est suffisamment puissant pour effectuer lacquisition, le traitement et le calcul
des commandes moteurs ainsi que la communication avec le sol.
Un Arduino Mini (ATMega328P 8bits 16MHz) a t choisi comme contrleur annexe pour gnrer les
4 signaux MLI destins chaque ESC. Il est peu cher et cote environ 12.
Ou est la valeur du compteur la fin du signal, la frquence du timer1 (en Hz) et la vitesse du
son dans lair (340m.s^-2). Il est ncessaire de diviser le temps par deux, car londe a fait un allerretour.
Ce composant a t choisi pour sa bonne porte et sa prcision, laltitude du drone sera contrle
vue pour une altitude suprieure 3-4m. Lacquisition de laltitude sera excute une
frquence de 2Hz.
6
DIETRICH Lucas Quadricoptre www.kestrel.fr
3. Circuit lectrique
Un circuit lectrique a t conu pour y placer les deux microcontrleurs, ainsi que les connexions,
des entres/sorties complmentaires, des diodes lectroluminescentes et des slecteurs. Un
connecteur est prvu pour laltimtre et quatre autres sont disponibles pour les ESC. LESC D a le rle
de fournir le courant la carte pendant le vol, cependant un emplacement a t prvu pour une
alimentation externe. Cette carte permet la programmation de chaque CPU. Des fixations ont t
prvues pour y placer le shield et le module Xbee utiliss pour la communication. Ci-dessous deux
photographies de la carte : (Vous trouverez le schma lectrique de la carte dans lannexe)
Voici un schma reprsentant lorganisation des composants sur la carte, avec le type de
communication utilis entre eux:
Xbee
Module Wifi
Srie 9600bauds/s
Altimtre
HC-SR04
Trig / Echo
ATmega328P
SPI 4MHz
Esclave
Arduino Mini
ATmega328P
SPI 4MHz
Acclromtre
Gyroscope
ArduIMU (Matre)
7
DIETRICH Lucas Quadricoptre www.kestrel.fr
II.
LOGICIEL
1. Le gestionnaire dexcution
a) Tches effectuer
Le logiciel concevoir doit excuter des tches des frquences diffrentes et variables. Les
principales tches figurent dans le tableau ci-dessous. Les frquences ont t obtenues par
exprimentation.
Fonction
Acquisition des donnes du gyroscope et de
lacclromtre
Acquisition des donnes du magntomtre
Acquisition de laltitude
Calculs cinmatiques afin de dterminer
lassiette et lorientation du drone dans lespace
Correction des angles de tangage et de roulis
(PID)
Correction de langle de lacet (PID)
Correction de laltitude (PID)
Vrifier la disponibilit dune commande sur la
liaison de communication srie
Envoyer les donnes de vol via la liaison srie
Effectuer une analyse sur ltat du systme
Frquence
100Hz
10Hz
2Hz
100Hz
25Hz
10Hz
2Hz
40Hz (Variable)
5Hz (Variable)
10Hz (Variable)
Les fonctions les plus lourdes en temps dexcution et en frquence sont surlignes en bleu.
b) Un gestionnaire traditionnel inadapt
Une mthode traditionnelle utilise pour la programmation des petits microcontrleurs serait de
construire une boucle principale qui, pour chaque fonction, vrifierait si elle doit tre excute ou
non par rapport sa dernire invocation. La boucle doit donc effectuer la double tche de grer la
frquence et lexcution des fonctions. De plus, lajout dune fonction ncessite dinsrer une
condition dans la boucle principale et donc de lalourdir, ce qui rend ce systme peu flexible.
c) Un systme vnementiel (rf. : ALN3D : System.cpp, Timers.cpp)
Le principe dun tel systme est dexcuter la fonction associe un vnement reu. Chaque
vnement est associ une fonction (appele callback). Les vnements sont par exemple gnrs
par des timers logiciels des frquences varies, des interruptions ou par nimporte quelle autre
fonction. Les vnements traiter sont ajouts une file dattente (FIFO : First in First Out). Le seul
rle de la boucle principale est de prlever lvnement en tte de file et dexcuter la callback
associe.
Du fait que la boucle principale na quune action effectuer, elle est trs simple (annexe page 21
system_loop()). De plus, il est facile dajouter une fonction excuter une frquence dtermine. Il
faut tout dabord crer un vnement et lui associer la fonction (annexe page 20 catgorie EVENTS),
et enfin ajouter un timer logiciel et dfinir la frquence laquelle excuter la fonction (annexe page
20 catgorie TIMERS). Un systme de la sorte est plus souple et permet un dveloppement plus
agrable et rapide.
8
DIETRICH Lucas Quadricoptre www.kestrel.fr
Une fonction danalyse du logiciel a t mise en place. Elle permet de connaitre la frquence de la
boucle principale, le temps pris par le processeur pour excuter les fonctions, le nombre de
dpassements de file (overflow) et galement le nombre de commandes reues et envoyes. Cet
analyseur est utile pour ajuster les diffrentes frquences des fonctions afin doptimiser leur
utilisation.
2. Communication
a) Liaison
SPI (rf. :
Communication.cpp)
ALN3D :
Communication.cpp :
Lignes
193,
ArduinoProLibrary :
La communication entre lArduIMU et lArduino Mini est assure par une liaison synchrone SPI
4MHz o lArduIMU est le matre. Trs rapide, elle permet dchanger rapidement beaucoup de
donnes sur de courtes distances. LArduino Mini (esclave) se comporte comme un registre,
lArduIMU crit ou lit lune des 32 adresses disponibles. Sil veut modifier la vitesse dun moteur, il
devra crire la valeur du rapport cyclique ladresse rserve au moteur. Lcriture et la lecture
consistent envoyer 2 octets. Le protocole de communication utilis est le suivant :
A4
A3
A2
A1
A0
B7
Octet de ladresse
B6
B5
B4
B3
B2
B1
B0
Octet du paramtre
9
DIETRICH Lucas Quadricoptre www.kestrel.fr
3. Scurit
Un quadricoptre est un engin dangereux, de nombreux accidents ont dj eu lieu. La chute dun
drone de quelques kilogrammes est lun des risques, mais plus basiquement les hlices sont
tranchantes. Ces moteurs brushless sont puissants et tournent une vitesse de 200tours/sec, malgr
des hlices en plastique lger et souple, il faut tre trs vigilant.
Quelques prcautions ont t prises en priode de dveloppement :
lorsquun des angles de tangage ou de roulis est suprieur 25, on coupe les moteurs,
lorsquune commande darrt durgence est reue via la liaison srie, on coupe
galement les moteurs.
10
DIETRICH Lucas Quadricoptre www.kestrel.fr
III. DYNAMIQUE
1. Conventions et notations
Le quadricoptre est constitu de 2 branches principales, qui se croisent perpendiculairement en leur
milieu. Aux 4 opposs se trouvent 4 moteurs brushless. Le repre orthonorm du drone
( ) est le repre de travail. Nous allons galement dfinir le repre orthonorm terrestre
par
( ), ou ( ) est la plan reprsentant la surface terrestre.
Pour un quadricoptre, engin symtrique, il est peut-tre inappropri de parler de tangage et de
roulis, mais nous mettons en place cette convention pour simplifier ltude. Langle de tangage ( )
est langle ( ) o est la projection du vecteur dans le plan ( ). Langle de roulis ( ) est
langle ( ) o est la projection du vecteur dans le plan ( ). Langle de lacet ( ) est langle
(
) o est la projection du vecteur dans le plan ( ).
Repre
li au drone, avec les angles de
tangage, de roulis et de lacet.
rfrentiel pour calculer les angles de tangage et de roulis. Nous allons donc crer le vecteur qui
reprsentera dans le repre
; il est colinaire celui-ci.
et
11
DIETRICH Lucas Quadricoptre www.kestrel.fr
(eq.16) :
|
[ ]
Le but global est destimer dynamiquement et le plus prcisment possible le vecteur afin de
calculer les angles de roulis et de tangage.
a) Acclromtre
Lacclromtre mesure lacclration subite par le drone (m.s^-2), et donc lacclration de
pesanteur ( ) lorsque le quadricoptre est immobile. Il est thoriquement inadapt pour estimer
en dynamique. Outre le fait que nimporte quelle forte acclration fausse totalement la mesure des
angles, il donne cependant des coordonnes moyennes correctes ce vecteur pour des acclrations
faibles. Cependant, il est extrmement sensible aux vibrations. Ces valeurs sont donc filtres sur
chaque axe laide de la fonction de lissage exponentiel (Filtre-passe-bas) suivante ; cette fonction
supprime les hautes frquences (les vibrations) et lisse globalement le signal (eq.11) :
(
est la valeur de lacclration lisse, est le coefficient de lissage, ici gal 0.90, et est la valeur
de lacclration. Vous trouverez en annexe (1) un graphique montrant lefficacit dun tel filtre.
b) Gyroscope (rf. : ALN3D : AP_RotationMatrix.cpp)
Le gyroscope permet de mesurer les vitesses de rotation
et
(rad.s^-1) respectivement
autour de ses 3 axes et . En intgrant ces vitesses de rotation par le temps, on obtient les angles
et (rad) effectus respectivement autour des axes et pendant lintervalle de temps :
( )
( )
( )
( )
( )
( )
12
DIETRICH Lucas Quadricoptre www.kestrel.fr
):
chaque itration, nous appliquons la nouvelle matrice de rotation au vecteur (initialis grce
lacclromtre) pour connatre ces nouvelles coordonnes :
Le gyroscope mesure trs prcisment les rotations rapides. Mais la principale contrainte est quil ne
mesure pas exactement 0 rad.s^-1 lorsque lIMU redevient immobile aprs une rotation, ceci est
leffet de drive ( drift ) quil faut corriger. De plus, cette erreur est amplifie par lintgration. Par
consquent, le gyroscope ne pourra tre utilis que pour dterminer les angles court terme
(quelques secondes). Vous trouverez en annexe (2) un graphique illustrant la problmatique.
c) Filtre complmentaire
Nous utilisons donc un filtre spcial pour combiner le gyroscope et lacclromtre. Le principe dun
filtre complmentaire est simplement dutiliser court terme les angles issus du gyroscope et de les
corriger long terme laide de ceux issus de lacclromtre (eq.14) (voir annexe (3)):
( )
( )
( )
Synthse
Voici le schma rcapitulant la procdure pour estimer les angles.
Acclromtre
(m.s^-2)
Filtre-passe-bas
Filtre
complmentaire
0.90
Gyroscope
(rad.s^-1)
Matrices de
rotation
Angle , ()
0.99
Vitesse angulaire
(rad.s^-1)
13
DIETRICH Lucas Quadricoptre www.kestrel.fr
IV.
ASSERVISSEMENT
( )
( )
( )
( )
Une version amliore permet dviter le dpassement de la composante drive lorsque lon
( )
modifie la consigne. Pour cela on suppose la valeur de consigne constante (
) et on
obtient une driv de mesure (eq.18):
( )
( )
( )
( )
Les constantes
et
sont respectivement les coefficients proportionnel, intgral et drive.
Ils dterminent quelle(s) doit (doivent) tre la ou les composantes dominantes pour la rgulation.
Ces coefficients doivent tre dtermins exprimentalement et dpendent fortement des
paramtres physiques du drone (pousse des moteurs, poids, envergure, etc) et du type de vol
(stabilit maximale, acrobatie, ractivit, etc).
14
DIETRICH Lucas Quadricoptre www.kestrel.fr
: PID de tangage
et
: PID de roulis
: PID de lacet
Acclromtre
Filtre passe-bas
(LPF)
=0.90
Filtre
complmentaire
=0.99
PID
Rgulateur de tanguage
Rgulateur de roulis
Rgulateur de lacet
Gyroscope
Matrice de
rotation
Rgulateur daltitude
Corrections
Altimtre
15
DIETRICH Lucas Quadricoptre www.kestrel.fr
CONCLUSION
A lissue des PPE, jestime que le systme mis en place pour sustenter lappareil est abouti. Les tests
de stabilisation effectus sur 1 axe montrent lefficacit du modle mathmatique et des solutions
technologiques employs. Le quadricoptre conserve de faon stable une position, et atteint
rapidement et de manire prcise une position de consigne.
La centrale inertielle choisie pour un cot total de 80 est suffisamment performante pour effectuer
toutes les mesures, calculs et corrections ncessaires. Le microcontrleur ATmega328P cadenc
16MHz permettrait mme deffectuer les calculs une frquence 2 fois plus leve. Le filtre
complmentaire est lalgorithme avec le meilleur rapport performances/complexit. Cependant, une
amlioration possible serait de le remplacer par un Kalman. Ce filtre est idalement utilis pour
combiner des grandeurs physiques, telles que lacclration et la vitesse angulaire, mais il est
mathmatiquement complexe (hors du programme de terminale), lourd coder et excuter.
Ainsi, nous pourrions envisager un dcollage ainsi quun vol autonome dune dure suprieure 5
minutes, cependant beaucoup de tests sont encore ncessaires pour y parvenir. Les connaissances
requises en mathmatiques et en physique sont un frein majeur notre projet, ce qui nous oblige
passer un temps considrable comprendre les notions qui nous font dfaut.
L'objectif que nous nous tions fix a cependant t atteint : tre capable de concevoir un drone de
faon totalement autonome sans lutilisation daucun logiciel existant. Ce projet a t trs bnfique
pour nous, car il nous a permis de comprendre et dappliquer des concepts nouveaux. De plus, la
ralisation du prototype et les tests effectus marquent la concrtisation dun travail collectif et
lachvement de notre projet.
16
DIETRICH Lucas Quadricoptre www.kestrel.fr
GLOSSAIRE
ESC : Electronic Speed Control est un circuit lectronique qui permet de modifier la vitesse dun
moteur lectrique, ici de type brushless.
MLI : Modulation de Largeur dImpulsion (en anglais PWM : Pulse Width Modulation) est un procd
qui consiste modifier le rapport cyclique dun signal rectangulaire afin de modifier la vitesse dun
moteur par exemple.
Shield : lment de type socle conu ici pour se poser sur un Arduino et proposer de nouvelles
fonctionnalits. Shield Xbee pour relier chaque pin de larduino celles du module Xbee.
Xbee : Catgorie de module radio.
SPI : Serial Peripheral Interface, Protocole de communication synchrone bidirectionnel (full-duplex)
de type matre/esclaves.
ATmega328P : Microcontrleur dvelopp par la socit ATmel. CPU (Cur): 8bits de type AVR
(frquence maximale : 20Mhz) flash (mmoire programmable): 32ko, RAM : 2ko. Il est utilis dans de
nombreux modles de cartes Arduino.
IMU : Inertial Measurement Unit, une centrale inertie est un instrument permettant dintgrer le
mouvement dun mobile (acclration, vitesse angulaire) afin destimer sa position et son orientation
(cap, tangage, roulis, etc).
PID : Un rgulateur de type Proportionnel Intgral Driv permet deffectuer une rgulation dune
grandeur physique en boucle ferme.
Timer : une horloge est une fonction dun processeur qui permet de mesurer ou gnrer un
signal dune certaine dure avec une prcision qui dpend de sa frquence.
17
DIETRICH Lucas Quadricoptre www.kestrel.fr
ANNEXES
1. Graphiques
Ces graphiques ont t raliss laide de python et des packages matplotlib et numpy.
a) Filtre passe-bas et acclromtres
Ce graphique montre langle de roll calcul dune part avec lacclration non filtr (en rouge) et
dautre part avec lacclration filtr (en bleu). Nous constatons :
b) Acclromtres et gyroscopes
Ici, la courbe bleue reprsente langle calcul partir de lacclromtre (non filtrs) et la courbe
rouge reprsente langle calcul partir du gyroscope. Nous constatons :
18
DIETRICH Lucas Quadricoptre www.kestrel.fr
c) Filtre complmentaire
Le filtre complmentaire combine les angles issus du gyroscope et de lacclromtre afin dobtenir
des angles thoriques les plus proches de la ralit. La courbe en rouge reprsente langle de
tangage et la courbe bleue reprsente langle de roulis. Nous constatons :
19
DIETRICH Lucas Quadricoptre www.kestrel.fr
3. Logiciel
Voici le programme principal (Main.h) du logiciel de contrle. Tous les autres programmes sont
disponibles ladresse suivante : https://github.com/Kestrel67/quadcopter
void system_setup(bool conf, bool synchronization,
analyser, bool manager)
{
/*********** OUTPUTS ***********/
pinMode(EMBEDED_LED_RED, OUTPUT);
pinMode(EMBEDED_LED_BLUE, OUTPUT);
bool
calibrate,
bool
digitalWrite(EMBEDED_LED_RED, HIGH);
/*********** COM ***********/
SPIMaster Master = SPIMaster();
Serial.begin(SERIAL_BAUDRATE);
AP_init(&Master);
CALLBACK
_proc_dynamic_calculation);
HMC5883L_Read);
_proc_dynamic_angles_PID);
callback_pid_altitude);
callback_ser_data_in);
_proc_com_out);
update_position_leds);
FREQUENCY
FREQUENCY_DYNAMIC);
FREQUENCY_PID_ROLL_PITCH);
FREQUENCY_SERIAL_DATA_OUT);
FREQUENCY_LED_POSITION);
FREQUENCY_GET_HMC5883L);
FREQUENCY_SAMPLE_HC_SR04,
set_CPU_Manager(FREQUENCY_MANAGER);
}
/*********** PID ***********/
PID_Init();
PID_Manual();
20
DIETRICH Lucas Quadricoptre www.kestrel.fr
void system_loop()
{
for(;;)
{
Event_t e = event_dequeue();
if (e != EVENT_NULL)
execute_callback(e);
}
}
21
DIETRICH Lucas Quadricoptre www.kestrel.fr
BIBLIOGRAPHIE
Acclromtre, Gyroscope:
http://www.instructables.com/id/Accelerometer-Gyro-Tutorial/
https://code.google.com/p/ardu-imu/
https://github.com/TKJElectronics
http://theboredengineers.com/2012/09/the-quadcopter-get-its-orientation-from-sensors/
http://theboredengineers.com/category/diy/quadri/
http://theccontinuum.com/2012/09/24/arduino-imu-pitch-roll-from-accelerometer/
Matrice de rotation :
http://en.wikipedia.org/wiki/Rotation_matrix
http://en.wikipedia.org/wiki/Euler_angles
Complementary Filter, Kalman filter:
http://www.pieter-jan.com/node/11
PID:
http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/
http://www.ferdinandpiette.com/blog/2012/04/asservissement-en-vitesse-dun-moteur-avecarduino/
Arduino:
http://www.atmel.com/Images/doc8161.pdf
http://playground.arduino.cc/Code/Timer1
http://sphinx.mythic-beasts.com/~markt/ATmega-timers.html
https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-18/recipe-18-7
22
DIETRICH Lucas Quadricoptre www.kestrel.fr