Vous êtes sur la page 1sur 23

PROJET INTERDISCIPLINAIRE

Quadricoptr
Logiciel de vol
DIETRICH Lucas
Lyce Jean-Baptiste Schwilgu Slestat
Terminale S Option SI
Session 2013-2014

www.kestrel.fr

05/06/2014

Groupe : DANTZ Achille, DIETRICH Lucas, DUSSOURD Nicolas

REMERCIEMENTS

Nous souhaitons remercier les personnes qui nous ont aids concrtiser notre projet tout au long
de lanne :

nos professeurs de Sciences de lIngnieur, M. Didier COUCHEVELLOU (professeur de Gnie


Electrique), M. Romuald FOULON, M. Franois RAGUSAF et M. Remi FREIXINOS (professeurs
de Gnie Mcanique), pour leurs disponibilits et leurs conseils,

M. Bertrand SPITZ, enseignant lEcole Nationale de lAviation Civile (ENAC), pour ses
conseils et son aide concernant le filtre complmentaire,

Mme Cline KAVALIAUSKAS, notre professeur de mathmatiques,


concernant les matrices de rotation,

le lyce Jean-Baptiste Schwilgu pour lachat du matriel ncessaire au projet,

les relations extrieures au lyce qui nous ont apports soutien et conseils.

pour ses prcisions

1
DIETRICH Lucas Quadricoptre www.kestrel.fr

TABLE DES MATIERES


INTRODUCTION ....................................................................................................................................... 4
1.

Prsentation du projet ................................................................................................................ 4

2.

Identification du besoin............................................................................................................... 4

3.

Cahier des charges....................................................................................................................... 4

4.

Tche effectuer ......................................................................................................................... 5

5.

Diagramme FAST ......................................................................................................................... 5

I.

MATERIEL : CHOIX ET MISE EN PLACE DES COMPOSANTS .............................................................. 6


1.

Microcontrleurs Arduino ........................................................................................................... 6

2.

Altimtre (rf. : ALN3D : Sensors.cpp : Ligne 61fin) ................................................................. 6

3.

Circuit cbl ................................................................................................................................. 7

II.

LOGICIEL .......................................................................................................................................... 8
1.

Le gestionnaire dexcution ........................................................................................................ 8


a)

Tches effectuer ................................................................................................................... 8

b)

Un gestionnaire traditionnel inadapt .................................................................................... 8

c)

Un systme vnementiel (rf. : ALN3D : System.cpp, Timers.cpp) ....................................... 8

d) Analyse des performances de la gestion des tches (rf.: ALN3D : Analyser.cpp,


Manager.cpp) .................................................................................................................................. 9
2.

Communication ........................................................................................................................... 9
a) Liaison SPI (rf. : ALN3D : Communication.cpp : Lignes 193, ArduinoProLibrary :
Communication.cpp) ....................................................................................................................... 9
b)

Liaison srie (rf. : ALN3D : Communication.cpp : Lignes 93 fin)......................................... 9

c)

Contrle des moteurs (rf. : ArduinoProLibrary : Motors_ESC.cpp) ..................................... 10

3.

Scurit ...................................................................................................................................... 10

III.

DYNAMIQUE .............................................................................................................................. 11

1.

Conventions et notations .......................................................................................................... 11

2.

Calcul des angles (rf. : ALN3D : AP_IMU.cpp) ......................................................................... 11


a)

Acclromtre ....................................................................................................................... 12

b)

Gyroscope (rf. : ALN3D : AP_RotationMatrix.cpp) .............................................................. 12

c)

Filtre complmentaire ........................................................................................................... 13

Synthse ............................................................................................................................................ 13
IV.

ASSERVISSEMENT ...................................................................................................................... 14

1.

Influence des moteurs ............................................................................................................... 14

2.

Rgulateur proportionnel intgral driv (PID) (rf. : ALN3D : AP_PID.cpp) ........................... 14

3.

Grandeurs physiques rgules (rf. : ALN3D : AP_Motors.cpp, lignes 2431) ........................ 15


2

DIETRICH Lucas Quadricoptre www.kestrel.fr

CONCLUSION ......................................................................................................................................... 16
GLOSSAIRE ............................................................................................................................................. 17
ANNEXES................................................................................................................................................ 18
1.

Graphiques ................................................................................................................................ 18
a)

Filtre passe-bas et acclromtres........................................................................................ 18

b)

Acclromtres et gyroscopes .............................................................................................. 18

c)

Filtre complmentaire ........................................................................................................... 19

2.

Vidos, animations, photographies et documents ................................................................... 19

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.

qui rend-il service?

Sur quoi agit-t-il?

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.

3. Cahier des charges


COT MAXIMAL
SOLUTIONS

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

Filtrer les donnes


dentr

ArduIMU

Calculer les angles


(Pitch, Roll, Yaw)

ArduIMU

Calculer les
commandes de
rgulation

ArduIMU

Envoyer une
commande au
moteur

Arduino mini

Traiter les
informations issues
des capteurs

Corriger lassiette

Vous trouverez cette adresse (https://github.com/Kestrel67/quadcopter) le logiciel de contrle en


C++ hberg par GitHub. Chaque annotation du type rf : bibliothque / fichier fait rfrence
un fichier dune librairie de ce logiciel. Elles permettent dillustrer par du code chaque partie du
document.

5
DIETRICH Lucas Quadricoptre www.kestrel.fr

I.

MATERIEL : CHOIX ET MISE EN PLACE DES


COMPOSANTS

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.

2. Altimtre (rf. : ALN3D : Sensors.cpp : Ligne 61fin)


Laltimtre ultrason choisi est le HC-SR04 5. Il a une porte maximale de 4m
et une prcision de 3mm sur une surface plane rflchissante, langle maximal
avec la surface doit tre de 15. Un signal 1L (1 logique) dune dure minimale
de 10s sur lentre Trig du composant permet de dclencher une mesure. Il
envoie un signal ultrason une frquence de 40kHz et mmorise la dure
ncessaire londe pour revenir. Ainsi, il envoie sur la sortie Echo un signal
1L dont la dure est celle du voyage de londe ultrason.
La dure de ce signal est mesure par le timer 16bit (timer1) du processeur en
mode compteur ( counter ). Ce timer est cadenc la frquence de lhorloge principale divis 8
fois cest--dire f = 16MHz / 8 = 2MHz. Ce timer1 incrmente un compteur de une unit toutes les
0.5s tant que le signal Echo est ltat haut. Prcision de distance thorique : 85m (<< 3mm
donc suffisant). La distance avec lobstacle peut tre calcule ainsi :

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

ESC ESC ESC ESC


A
B
C
D
MLI 500HZ

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

d) Analyse des performances de la gestion des tches (rf.: ALN3D : Analyser.cpp,


Manager.cpp)

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

: indique lesclave quil sagit dune adresse ou dun paramtre


A0 A4 : ces 5 bits forment ladresse de loctet crire ou lire.
: ce bit correspond laction dcriture ou de lecture
B0 B7 : ces 8 bits forment loctet de la valeur crire dans le registre.
Une interruption est gnre chez lesclave lorsquune requte a lieu, ainsi le traitement de cette
requte (criture ou lecture) est immdiatement effectu.

b) Liaison srie (rf. : ALN3D : Communication.cpp : Lignes 93 fin)


La liaison srie entre le quadricoptre et la station au sol est assure par deux modules radio de type
Xbee. La station envoie des commandes au quadricoptre, et ce dernier lui retourne les donnes de
vol comme les angles, les commandes des moteurs et dautres informations sur ltat du systme.
Le protocole denvoi des commandes est le mme que celui utilis pour la SPI, sauf que ladresse est
plus longue de 1 bit et que le bit de lecture/criture est absent. Ladresse correspond la commande
et le paramtre correspond la valeur optionnelle.

9
DIETRICH Lucas Quadricoptre www.kestrel.fr

c) Contrle des moteurs (rf. : ArduinoProLibrary : Motors_ESC.cpp)


Le contrle de la pousse des moteurs seffectue via un ESC. Il suffit de gnrer un signal
rectangulaire dont le rapport cyclique est proportionnel la pousse du moteur. La frquence de
ce signal est denviron 500Hz. LArduino Mini gnre 4 signaux de ce type (un pour chaque moteur)
laide de 2 timer physiques : timer0 et timer2.

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.

2. Calcul des angles

(rf. : ALN3D : AP_IMU.cpp)

est orthogonal au plan ( ) et est un bon

Le vecteur dacclration de pesanteur ( ) dans

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

avec les angles de tangage et de roulis :

Par consquent, nous pouvons reconstruire


Soit

(eq.16) :
|

Le vecteur est assimil une matrice colonne dordre 3:

[ ]

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 :
( )

( )

( )

( )

( )

( )

Plus lintervalle de temps est court (


), plus la rotation globale calcule sera prcise. Cest
pourquoi nos fonctions de mesure, dintgration et de calcul des angles seront 100Hz.
Les matrices de rotation permettent de modliser les 3 rotations successives, la matrice reprsentant
la rotation globale du drone par rapport au sol est (
):

12
DIETRICH Lucas Quadricoptre www.kestrel.fr

Ainsi, la matrice reprsentant la rotation du sol par rapport au drone est (


(

):

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)):
( )

( )

( )

Dans notre cas


, ceci implique que langle calcul est en majeur partie issu du gyroscope,
cependant lacclromtre a une influence, certes faible sur langle calcul.
Ainsi, les deux angles calculs seront utiliss pour mettre jour le vecteur et permettre au
gyroscope de calculer les nouvelles rotations en fonction de celui-ci.
Une amlioration apporte est dignorer les donnes probablement fausses de lacclromtre et de
se fier uniquement au gyroscope lorsquune rotation trs rapide est mesure ou
lorsque lacclration dpasse une certaine valeur.

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

1. Influence des moteurs


Daprs la figure du drone figurant en (III.1) nous pouvons voir que les moteurs A et B influent sur le
tangage de lappareil et symtriquement les moteurs C et D sur le roulis. En augmentant la vitesse de
A et en diminuant celle de B, le nez de lappareil va sincliner vers larrire.
Les moteurs A et B tournent dans le sens horaire et les moteurs C et D tournent dans le sens
trigonomtrique. Cette solution technique a t retenue pour minimiser leffet de lacet d aux
moteurs. Une hlice tournant dans le sens horaire produit une force colinaire laxe de rotation qui
soulvera lappareil et une force tangentielle qui sera exerce sur lair. Daprs la troisime loi de
Newton, lair va exercer une force sur lhlice qui va entrainer lensemble (moteur et hlice drone)
dans la rotation inverse : sens trigonomtrique.

2. Rgulateur proportionnel intgral driv (PID)

(rf. : ALN3D : AP_PID.cpp)

Lasservissement consiste stabiliser et sustenter le quadricoptre en modifiant la pousse de


chaque moteur afin de se rapprocher de la position de consigne. Pour cela, nous allons utiliser un
rgulateur automatique de type PID (proportionnel, intgrale, driv). Ce rgulateur tente de
minimiser lerreur ( ) le plus rapidement possible :
Lerreur ( )

( )

( ) avec ( ) valeur de consigne et ( ) la valeur dentre.

( ) correspond la valeur de commande calcule par le rgulateur pour minimiser lerreur.


Lquation de rgulation est la suivante (eq.17) :
( )

( )

( )

( )

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

3. Grandeurs physiques rgules (rf. : ALN3D : AP_Motors.cpp, lignes 2431)


Un asservissement est ralis sur le tangage, le roulis, le lacet et laltitude.
: PID daltitude

: PID de tangage

Les valeurs de commande

et

: PID de roulis

: PID de lacet

appliquer respectivement aux moteurs A, B, C et D sont :

Voici un schma rsumant les 2 dernires parties de cette tude:

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 :

Le respect des rotations : secondes 0 6 et 16 20.


Lattnuation des hautes frquences (vibrations) : secondes 6 16
Le respect de la valeur moyenne du signal : secondes 10 15

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 :

La meilleure prcision du gyroscope sur les rotations : secondes 3 6


Linsensibilit du gyroscope aux vibrations et aux dplacements latraux : secondes 6 10
Leffet de drift du gyroscope par rapport langle estim laide de lacclromtre :
secondes 10 20

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 :

La sensibilit aux rotations rapides : secondes 6 9


Linsensibilit aux vibrations et dplacements latraux : secondes 9 12
La prcision des angles calculs : secondes 12 20

2. Vidos, animations, photographies et documents


Vous trouverez des ressources supplmentaires sur le site du projet : http://kestrel.fr/quadcopter

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);

// SPI : Master class


// Serial
// SPI : Slave

/*********** COMPONENTS ***********/


MPU6000_Init(&Master); // accel, gyro
HMC5883L_Init();
// compass
/*********** EVENTS ***********/
//
EVENT
register_event(EVENT_DYNAMIC,
register_event(EVENT_HMC5883L,
register_event(EVENT_PID_ROLL_PITCH,
register_event(EVENT_PID_ALTITUDE,
register_event(EVENT_SERIAL_DATA_IN,
register_event(EVENT_SERIAL_DATA_OUT,
register_event(EVENT_LED_POSITION,

CALLBACK
_proc_dynamic_calculation);
HMC5883L_Read);
_proc_dynamic_angles_PID);
callback_pid_altitude);
callback_ser_data_in);
_proc_com_out);
update_position_leds);

/*********** TIMERS ***********/


//
EVENT
add_timer(EVENT_DYNAMIC,
add_timer(EVENT_PID_ROLL_PITCH,
add_timer(EVENT_SERIAL_DATA_OUT,
add_timer(EVENT_LED_POSITION,
add_timer(EVENT_HMC5883L,

FREQUENCY
FREQUENCY_DYNAMIC);
FREQUENCY_PID_ROLL_PITCH);
FREQUENCY_SERIAL_DATA_OUT);
FREQUENCY_LED_POSITION);
FREQUENCY_GET_HMC5883L);

/*********** ALTIMETER ***********/


initialize_hc_sr04(PWM0,
EVENT_PID_ALTITUDE);

FREQUENCY_SAMPLE_HC_SR04,

/*********** COM IN ***********/


set_serial_observer(FREQUENCY_SERIAL_OBSERVER, EVENT_SERIAL_DATA_IN);
/*********** ANALYSER + MANAGER ***********/
if (analyser)
{
set_CPU_Analyser(FREQUENCY_ANALYSER);
if (manager)

set_CPU_Manager(FREQUENCY_MANAGER);

}
/*********** PID ***********/
PID_Init();
PID_Manual();

20
DIETRICH Lucas Quadricoptre www.kestrel.fr

/*********** IMU ***********/


IMU_Init(calibrate);
/*********** SPI ***********/
if (synchronization)
AP_synchronization();
AP_write(APL_REG_BLK, 0);
ApplyMotorsThrottle();
/*********** AUTHOR ***********/
if (conf)
ser_display_IMU_conf();
digitalWrite(EMBEDED_LED_RED, LOW);
/*********** TIMERS ***********/
// MSTimer2 : 1000Hz
initialize_timers(FREQUENCY_SEQUENCER_TIMER);
}

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

Vous aimerez peut-être aussi