Vous êtes sur la page 1sur 48

Ralisation dun

quadricoptre
stabilis

COSNARD Nicolas
FAURE Axel
GUINAULT Pierre
RIVRAY Benjamin
Universit dAuvergne

Anne 2012-2013

Nous autorisons la diffusion de notre rapport sur l'intranet de l'IUT

Remerciements

Dr Philippe Kauffmann & M. Jacques Laffont, matres de projet,

Pour leur investissement et leur aide tout au long de ce projet.

Francisco Sanchez, technicien Polytech Clermont-Ferrand,

Pour son assistance dans la ralisation des montages lectroniques.

Christian Couderc, service informatique CR2I,

Pour son aide lors de la ralisation de divers montages.

Sommaire
Remerciements ........................................................................................................................ 2
Introduction .............................................................................................................................. 5
Bilan de lexistant ..................................................................................................................... 6
Choix techniques ..................................................................................................................... 7
Construction du nouveau cadre ....................................................................................... 7
RX62 ou M32.......................................................................................................................... 7
ArduPilot Mega 2.5............................................................................................................... 8
Module Wi-Fi WizFi 220 ......................................................................................................... 8
Moteurs & ESC....................................................................................................................... 8
Matriel ................................................................................................................................... 10
Carte ArduPilot et capteurs .............................................................................................. 10
Descriptif .......................................................................................................................... 10
Modifications apportes ............................................................................................... 10
Schma dassemblage ................................................................................................. 11
Centrale inertielle, MPU-6000 ........................................................................................ 11
Puce GPS, Mediatek MT3329 ........................................................................................ 12
Dtecteur dobstacles et mesure de laltitude, Sonar SRF-04 ................................. 12
Sonde de temprature .................................................................................................. 14
Microcontrleur RX62......................................................................................................... 14
Le RX62N .......................................................................................................................... 14
Le RX62T ........................................................................................................................... 15
Moteurs, ESC & hlices ...................................................................................................... 15
Algorithmes & Stabilisation ................................................................................................... 16
Mixage des voies RC ......................................................................................................... 16
Traitement de la centrale inertielle.................................................................................. 18
Filtre de Kalman .............................................................................................................. 18
AHRS: Attitude Heading Reference System ................................................................ 19
Aspect physique et algorithmes de stabilisation ........................................................... 22
Dfinitions utiles dans le domaine du quadricoptre : ............................................. 22
Effet prendre en compte pour le vol d'un drone. .................................................. 22
Analyse mcanique ....................................................................................................... 24
PID (Proportionnel, Intgral, Driv)............................................................................. 28
Implmentation embarque ............................................................................................... 33

La RPDL ................................................................................................................................ 33
Exemple : cration dune temporisation : .................................................................. 33
Exemple : envoi de messages via le port srie : ........................................................ 33
Exemple : paramtrage du port srie : ....................................................................... 34
Implmentation sur lArduino ........................................................................................... 35
Communications.................................................................................................................... 36
Protocole de communication Wifi................................................................................... 36
Valeurs numriques ........................................................................................................ 36
Format gnral de la trame ......................................................................................... 37
Communication TTL entre ArduPilot & RX ....................................................................... 38
Bilan technique ...................................................................................................................... 39
Project Summary .................................................................................................................... 40
Bibliographie ........................................................................................................................... 41
Annexes ................................................................................................................................... 42
Annexe 1 : Identificateurs de trame ................................................................................ 42
Annexe 2 : Commandes de configuration du module Wifi ......................................... 44
Annexe 3 : Schma RX62T................................................................................................. 45
Annexe 4 : Schma Module Wifi ...................................................................................... 45

Introduction
Entre mcanique, lectronique et informatique, la conception d'un drone autonome
met en jeu des problmatiques varies. Ce sont ces problmatiques que nous avons
essay de traiter au cours de ces quatorze semaines de projet.
Notre but tait en effet de parvenir la ralisation d'un quadricoptre capable d'un
vol stabilis et autonome. Dans cette optique, les ralisations des diffrentes quipes
ayant contribu ce projet au cours des annes prcdentes devaient initialement
nous servir de base de travail.
Au-del de la simple ralisation des algorithmes, notre travail a consist en une
contribution la prise de dcision entourant les aspects matriels et les objectifs
prcis du projet. D'autre part la nature de notre projet a rendu ncessaire la prise en
main, voire la ralisation, de divers montage lectroniques lis au drone.
Par ailleurs, le systme ralis au sein de notre quipe devait s'intgrer dans un projet
plus vaste comportant un simulateur dont le dveloppement tait la charge d'une
seconde quipe. Il nous a donc fallu prendre en compte cette contrainte
supplmentaire et faire en sorte que les deux projets puissent avancer en parallle et
aboutissent des programmes compatibles.
Au cours de notre progression dans ce projet, nous avons rencontr plusieurs
difficults, divers niveaux tant du point de vue informatique que matriel. Afin d'en
faciliter la comprhension, nous prsenterons ici tout d'abord, les diffrents domaines
techniques traits puis nous reviendrons sur la chronologie du projet, l'interconnexion
entre ces domaines et la rpartition des diffrentes tches.

Bilan de lexistant
Le bilan de lexistant que nous avons ralis ds les premires semaines du
projet nous a permis de dterminer les problmes existant et de dfinir ce qui
pourrait tre conserv et ce qui devrait tre remplac. Il nous t en effet apparu
lors dune tentative de dmonstration de la capacit de vol du drone par M.
Kauffmann que ce dernier prsentait en ltat un certain nombre de problmes. Ces
problmes rendaient presque impossible le vol du drone et devait donc tre rsolus.
Voici un rsum synthtique de ce bilan.

Commenons par la partie matrielle. Larmature du drone tait en bois, de


conception artisanale, partiellement casse et offrant une prise au vent importante
elle devait tre change. Sur cette armature taient fixs quatre moteurs Turnigy
2204-14T, offrant une puissance thorique suffisante, les chocs reus au cours de
sances de tests les annes prcdentes avaient fauss les arbres de certains
dentre eux, leur remplacement semblait galement souhaitable. Les hlices quant
elle tait assez fortement endommages et fixes par des lastiques uss, elles ne
pouvaient donc tre conserves. Le drone tait galement quip de quatre ESC
(un par moteur) dont ltat semblait satisfaisant, une carte de distribution rpartissait
le courant entre ces ESC, cette carte tait mal positionne et prsentait des faux
contacts. Avec le drone, nous ont t confis, une carte quipe dun processeur
Atmel, capable de faire voler le drone laide dun code pr-charg, un module
RC (et une tlcommande) que nous avons dcid de conserver et un module wifi
dont le remplacement tait dores et dj programm.
Concernant la partie logicielle, le simulateur repris par lquipe de projet avec
laquelle nous travaillions prsentait une base de travail sous Raydium, toutefois la
qualit du code tait assez dcevante. Lapplication Android quant elle tait
incomplte mais globalement utilisable. Enfin le code source destin au
microcontrleur M32 comportait uniquement un code de contrle du dcollage qui
na pu tre test et dont les sources taient parpilles et difficilement rcuprables.

Au terme de ce bilan, il est donc apparu que lessentiel du code et du


matriel prsent au dmarrage de ce projet devrait faire lobjet dun remplacement
ou dune rvision importante. Il allait donc nous falloir dterminer ce qui devrait le
remplacer.

Choix techniques
Construction du nouveau cadre
Le cadre est constitu de tubes en fibre de carbone, ce qui permet d'allier
lgret et robustesse. La plaque centrale et les supports des moteurs sont en
merisier, ce qui permet de fixer facilement toute l'lectronique embarque. Des
patins en polystyrne fixs au bout des bras permettent d'amortir les rebonds au
pos, et offrant une garde au sol importante pour protger les composants fixs sous
le drone.
Les moteurs ne sont pas fixs au bout des bras, ce qui permet de protger les
hlices puisque les patins toucheraient un ventuel obstacle avant les hlices mais
leur distance par rapport au centre du drone est rglable, ce qui peut servir
modifier la dynamique de vol.

RX62 ou M32
La famille de microcontrleur RX62 produite par Renesas a t choisie par
lquipe pour remplacer le microcontrleur utilis par les quipes prcdentes, le
M32.
Lobjectif de ce microcontrleur est double : il doit la fois assurer la
communication avec lArduPilot, donc vers les capteurs et actionneurs, mais aussi
vers un terminal Android ou un ordinateur, pour tre contrl par ce biais et envoyer
les informations ncessaires au simulateur.
Cet objectif double ncessitait donc une puissance suffisante, puisque la
nature mme du projet nous forait avoir des temps de traitements trs brefs. Cest
donc ce premier souci de rapidit qui nous a fait pencher vers le RX, puisquil
dispose dune horloge cadence 100MHz, contre 32MHz pour le M32.
En outre, concernant le dveloppement logiciel, le compilateur fourni permet
dutiliser du C++, et Renesas fournit un ensemble de bibliothques appeles RPDL
(Renesas Peripheral Driver Library) permettant dutiliser de manire simplifie les
diffrents priphriques, comme les ports srie ou les broches dentres sorties.
Enfin, le fait que le RX remplace le M32 dans les cours dinformatique
embarque implique que les prochaines quipes ne connaitront pas le M32, il est
donc logique de se baser sur le RX, qui en plus dispose dune configuration
technologique bien plus rcente que le M32.
La carte ralise lanne prcdente nayant jamais fonctionn, nous
navons donc pas eu de regret labandonner pour travailler avec le nouveau
microcontrleur RX62.
7

ArduPilot Mega 2.5


Nos recherches prliminaires sur les nouveaux composants nous ont amen
vers l'ArduPilot. Cette carte de prototypage rapide est base sur un Arduino Mega
2560. Dans sa dernire rvision (2.5), l'ArduPilot se compose d'une seule carte
(plusieurs shields auparavant) intgrant les composants ncessaires au vol d'un avion
ou d'un hlicoptre comme une centrale inertielle 6 axes (3 gyroscopes, 3
acclromtres), une boussole 3 axes, d'un baromtre et d'une puce GPS.
Cet ensemble tant rassembl sur une seule et mme carte permet
d'optimiser la place ncessaire sur le drone et diminuer les cblages. Par la qualit
de ces composants et sa compactibilit, les nombreuses entres/sorties et sa facile
prise en main, le choix de l'ArduPilot semble incontestable.

Module Wi-Fi WizFi 220


Le module WizFi 220 est un module Wi-Fi produit par la socit WIZnet. Il sagit
dun module compatible avec les normes Wi-Fi IEEE 802.1 b/g/n, idal pour
lembarqu grce sa faible consommation et sa petite taille.
Il intgre un grand nombre de fonctionnalits, parmi lesquelles une interface
srie, un serveur DHCP, un serveur http minimaliste, une implmentation des
encryptions WEP et WPA2 et des protocoles TCP et UDP.
En outre, il bnficie dun mode classique, permettant de se connecter un
rseau existant, dun mode ad-hoc, permettant la connexion direct un
priphrique compatible (un ordinateur le plus souvent) et enfin dun mode point
daccs (AP, pour Access Point), qui autorise le module crer son propre rseau
sur lequel viennent se connecter diffrents priphriques. Ici, le mode AP encore en
dveloppement ne permet une connexion stable quavec deux ou trois
priphriques en mme temps. (cf. annexe 2 : Commandes de configuration)
Le rle de ce module Wi-Fi, reli au RX62T par un port srie, est dassurer la
communication entre dune part le drone, et dautre part un priphrique de
contrle (application PC ou android) et/ou le simulateur.

Moteurs & ESC


Nous avons utilis le mme type de moteurs que les
annes prcdentes, des moteurs Turnigy 2204-14T de
type brushless ; nous expliquerons leur fonctionnement
plus tard.
Ce type de moteur a lavantage de ne pas chauffer, davoir un bon
rendement (suprieur 70%), une faible consommation, un faible poids (19g) et
peuvent supporter des hlices de 8 pouces comme celles dont nous disposons.

Le seul reproche possible ces moteurs est la longueur de larbre. En effet ce


dernier ne dpassant pas, les hlices sont donc simplement poses dessus et
maintenues par 2 lastiques.

Matriel
Carte ArduPilot et capteurs
Descriptif
En plus de ces
entres/sorties et ports:

nombreux

capteurs,

elle

possde

de

nombreuses

8 entres PWM
8 sorties PWM/PPM
9 entres/sorties analogiques
4 ports sries (UART0 : USB et Xbee par dfaut,
UART1 : GPS, UART2: Xbee aprs modification, UART3 : ...)
1 port I2C pour des circuits externes
1 port SPI
Pour toutes les entres/sorties, les broches se composent
de 3 pins, un pin +5V, GND et un dernier pour le signal.

Modifications apportes
Afin de permettre une alimentation de lArduPilot par les moteurs la place
de lUSB, un dispositif a t mis en place par les concepteurs. Il a suffit de placer un
cavalier sur les broches JP1 comme montr sur le schma ci-dessous. Cette
modification permet alors davoir lalimentation par les moteurs et de pouvoir rester
connecter en USB.

Pour la mise en place des communications srie, nous devions utiliser un port
srie libre. Le port 0 tant rserv lUSB, le port 1 pour le GPS, nous avons dcid
dutiliser le port 2, initialement prvu pour la communication Xbee, et qui disposait
dj dun connecteur. Initialement, ce connecteur tait reli au port 0, le mme
que le port USB. Il a donc fallu modifier la carte pour fixer le port 2 cette
connectique. Pour cela des soudures et des coupures de pistes taient ncessaires

10

(comme indiqu sur le schma ci-dessous), ces interventions furent ralises par M.
KAUFFMANN.

Schma dassemblage

Centrale inertielle, MPU-6000


La MPU-6000, fabrique par Invensense, fait partie des meilleurs composants
utiliss dans les tablettes, smartphones et diffrents capteurs. Elle est trs apprcie
car elle a un faible cot, une faible consommation et de hautes performances.

11

C'est une centrale inertielle 6 axes, c'est--dire qu'elle


associe selon les axes X, Y, Z: 3 gyroscopes (vitesse angulaire)
et 3 acclromtres (acclrations). Cette gnration
intgre un DMP (Digital Motion Processor) afin d'ajouter 3
axes supplmentaires avec l'utilisation de magntomtres
externes dans le but de corriger la drive des mesures. Pour
communiquer, elle peut utiliser 2 systmes de bus: I2C et SPI.
De plus, on peut configurer leur sensibilit que cela soit pour
les gyroscopes et les acclromtres.
Dsormais intgre la carte ArduPilot, nous avons utilis la bibliothque mise
disposition qui utilise la communication SPI pour rcuprer les valeurs des capteurs.
Une tache future possible sera de rcrire cette bibliothque.

Puce GPS, Mediatek MT3329


Cette puce fabrique par MediaTek fait partie des composants les plus utiliss
dans les systmes de localisation. Sa faible consommation et sa haute prcision,
mme dans les milieux urbains (<3 dans 50% des cas), sont des atouts majeurs. Son
taux de rafraichissement peut varier de 1 10 kHz, et il lui faut au plus 35 secondes
froid pour se localiser. Par dfaut on utilise le port avec une
vitesse de 38400 bauds.

Dtecteur dobstacles et mesure de laltitude, Sonar SRF-04


Afin de permettre notre drone de voler sans
dommage, nous avons choisi d'utiliser de multiples sonars
afin de dtecter les obstacles environnants. Nous avons pris
les sonars SRF-04 que nous utilisons en TP.
Ces composants conus par la socit Devantech
permettent de mesurer des distances entre 3cm et 3m.
Notre drone possdera 5 sonars, 1 situ dessous pour nous donner son altitude
(dans le cas de faibles hauteurs) et 1 entre chaque bras du quadricoptre, cela
permettant d'viter un obstacle qui passerait entre les bras. Le spectre de ce sonar
n'tant pas trop large (cf. diagramme ci-contre), les bras n'entraineront pas de
perturbations dans les mesures.
Ce capteur peut tre utilis avec une communication I2C ou par des
entres/sorties analogiques. Nous utilisons cette dernire.

12

Pour cela, nous avons 4 broches :

Son fonctionnement est assez simple, comme le montre le diagramme ci-dessous.

On envoie une impulsion pendant au moins 10s sur le TRIGGER pour dmarrer
la mesure. Ensuite il envoie 8 cycles d'ultrasons 40 kHz et met la voie ECHO au
niveau haut. Il coute alors et ds que l'cho revient, il la passe au niveau bas.
L'cho est donc une pulsation proportionnelle la distance de l'objet. Si rien n'est
dtect alors le SRF04 baissera sa voie ECHO de toute faon aprs 36ms d'attente.

13

Voici un code d'exemple pour Arduino:

La possibilit d'utiliser le mme port TRIGGER pour les diffrents sonars a permis
d'conomiser le nombre de broches, car sinon il aurait fallu 4*5 = 20 broches et donc
10 broches de signal alors que nous n'en avons que 9 libres. Il faut rpter la
squence des digitalWrite avant chaque mesure de distance.

Sonde de temprature
Afin de contrler la temprature de la batterie, nous avons dcid d'utiliser la
sonde utilise en TP. En cas de suralimentation de la batterie, la temprature
augmente fortement, on pourra donc essayer de lanticiper.
Lors de son acquisition, une ide supplmentaire tait voque, c'tait de
faire du retro engineering sur le code fourni avec, mais la complexit et lobscurit
de ce dernier n'ont pas permis de le faire. Pour les successeurs, rcrire les
bibliothques pourrait tre une nouvelle piste de travail. Au final, nous utiliserons
cette carte comme un macro-capteur intelligent qui enverra simplement les valeurs
de ses capteurs au RX62T par le port srie UART2.

Microcontrleur RX62
Le RX62N
Le RX62N est une carte utilise pour le dveloppement, avec ses nombreux
priphriques qui permettent un dbogage bien plus facile quavec une carte
embarque.
Parmi ces priphriques, on notera les deux qui nous ont le plus servi, le port
srie reli directement un connecteur DB9 ce qui rend la liaison avec un ordinateur
beaucoup plus facile, et la prsence dun afficheur de 2 lignes de 8 caractres qui
permet de suivre le droulement du code. Cette carte de dveloppement possde

14

aussi un port USB, un port ethernet et de nombreuses broches pouvant servir


diffrents usages.
Nous avons donc commenc par travailler avec le RX62N pour prendre en
main cet outil tant donn que nous avions travaill avec le M32 dans nos cours
dembarqu. Toutefois, nutilisant que trs peu des possibilits fournies par le RX62N
et celui-ci tant trop volumineux pour tre embarqu, nous avons rapidement
continu le dveloppement sur la carte embarque que nous avons dessin avec
laide de M. Kauffmann et ralise par M. Sanchez, qui tait, elle quipe dun
RX62T.

Le RX62T
Le RX62T est la version que nous avons embarque sur le quadricoptre. La
carte de dveloppement devant tre de taille et de poids minimaux, nous avons
rduit les priphriques au minimum.
Au final, la carte embarque en plus du microcontrleur deux ports srie pour
communiquer avec le module wifi et avec lArduPilot, une diode pour sassurer de la
mise sous tensions, trois connecteurs pour brancher dautres diodes, utiles pour le
dbogage, un oscillateur pour sassurer du bon cadencement du RX et du circuit
dalimentation.

Moteurs, ESC & hlices


Nos moteurs sont de type brushless (ou moteur synchrone courant continu),
cest--dire quils sont constitus daimants permanents et de capteurs effet Hall,
qui permettent de dtecter la position du rotor en mesurant les variations des
champs magntiques. On trouve galement un systme lectronique de
commande pour permettre la commutation du courant dans le strator (sur le
schma : anneau lextrieur).
Leur fonctionnement se base sur la rpulsion magntique. Quand le ple nord
du rotor passe devant le sud du bobinage, ils se repoussent, comme le fait un
aimant avec une boussole. Ainsi sans contacts, il ny a ni usure, ni frottements
contrairement
au
moteur

courant
continu.
Pour contrler la vitesse des moteurs, ils sont associs avec des ESC (Electronic
Speed Controller). Le rle de ces contrleurs est de rguler la tension pour donner
plus ou moins de vitesse au moteur en abaissant la tension
d'entre par dcoupage de celle-ci. Il y a donc deux systmes
distincts dans le contrleur : le premier ragit la consigne
venant de la carte et fournit une tension dalimentation, mais
laisse passer l'amprage dont il aura besoin. Le second, en
fonction de la position du rotor, commute le bon circuit (en se
servant des informations sur la position du rotor reue par le
moteur et donc quel circuit il faut commuter), aux bornes
duquel on va retrouver cette tension.

15

Algorithmes & Stabilisation


Mixage des voies RC
Lors de lutilisation de la commande RC, il est ncessaire de mixer les canaux
pour appliquer les mouvements raliss laide des joysticks. Ces actionnements
vont agir sur la commande envoye chaque moteur : soit une augmentation du
signal PWM soit une diminution.
Llaboration de cet algorithme a t simple, il a suffi de rflchir lincidence de la
manuvre demande sur chaque moteur. Pour chaque moteur, la commande
principale est le Throttle (les gaz qui permettent de faire monter ou descendre le
drone, laquelle on ajoutera ou soustraira les autres commandes affecte dun
coefficient.
Par exemple, pour avancer le drone va sincliner vers lavant. Les moteurs avant, 1 et
2, vont devoir ralentir et les moteurs arrire, 3 et 4, vont acclrer. On va donc
soustraire le signal reu sur le canal 2, responsable de cette inclinaison, aux
commandes des moteurs 1 et 2 et lajouter aux 2 autres. Afin damliorer la rponse,
on applique un coefficient dtermin exprimentalement chaque commande.
Pour rappel, voici la disposition des moteurs de notre drone :

16

Le tableau suivant rsume ltat de chaque moteur selon les mouvements :


Joystick

Commandes

Commande

Incidences sur
moteur

M1,M2,M3,M4 +

M1,M2,M3,M4 -

M2,M4
M1,M3 +
M2,M4 +
M1,M3 M1,M2 +
M3,M4 M1,M2 M3,M4 +

M1,M4 M2,M3 +

M1,M4 +
M2,M3 -

17

Traitement de la centrale inertielle


Daprs Kalman Filter for Beginners : with MATLAB Examples, Phil Kim and Lynn Huh
Afin de connaitre la position de notre drone, il nous faut rcuprer et traiter les
valeurs de la centrale inertielle. Comme pour tout capteur, afin dviter le bruit et
diminuer les erreurs, il tait important de filtrer ces valeurs. Cest pourquoi nous avons
utilis le filtre de Kalman.

Filtre de Kalman
Le premier filtre de Kalman a t utilis pour larospatial lors des missions
Apollo. Effectivement s'il existe un domaine o la connaissance exacte de la position
et de l'tat d'un objet est importante, c'est bien l'arospatial.
Il serait difficile d'avoir un systme de navigation sans un filtre de Kalman. En
effet lorsqu'on dsire suivre une cible, des donnes sur sa position, sa vitesse et son
acclration sont mesures chaque instant mais avec normment de
perturbations dues au bruit ou aux erreurs de mesure. Le filtre de Kalman utilise la
dynamique de la cible pour dfinir son volution dans le temps et ainsi obtenir de
meilleures donnes, en liminant le bruit.
On peut dfinir ce filtre comme un estimateur rcursif, car la prdiction de
l'tat suivant se base sur l'tat prcdent et les mesures actuelles.
On peut donc dcouper ce filtre en 2 phases: la prdiction et la mise jour. La
phase de prdiction utilise l'tat estim prcdemment afin d'estimer l'tat courant.
La phase de mise jour se base sur l'tat courant pour corriger l'tat prdit.

I. Prdiction

de
l'tat et matrice de
covariance*

0. Initialisation des
valeurs initiales

III. Mise jour avec


mesure et calcul
de l'estime.

II. Calcul du gain


du filtre

* : mesure de la prcision
de l'tat estim

IV. Mise jour de la


covariance de
l'erreur.

18

Avoir des valeurs propres cest bien, mais il est ncessaire de bien savoir les exploiter.

AHRS: Attitude Heading Reference System


AHRS se traduit par systme dattitude et de cap. Il sagit dun systme conu
pour obtenir lorientation en 3D de lobjet, utilisant des gyroscopes et des capteurs
de rfrence comme les acclromtres et/ou magntomtres.
Nous allons donc prsenter comment avoir un drone positionn l'horizontal

l'aide
de
la
centrale
inertielle
(gyroscopes,
acclromtres).
Ces capteurs vont nous donner des vitesses angulaires et des acclrations selon 3
axes (x, y, z). Si nous prenons notre drone, il suffit de connaitre les 3 angles (roulis,
tangage et lacet) pour le positionner prcisment. C'est donc ce que nous obtenir
pour dfinir l'horizontalit de notre quadricoptre. Etant donn que nous
recherchons le positionner horizontalement, nous ne tiendrons pas compte du
3me angle : le lacet (selon z).
Dtermination partir des gyroscopes
Nous ne pouvons pas obtenir directement les angles d'Euler en intgrant les
vitesses angulaires, car il n'y a pas de drivs avec ces angles. Ces vitesses sont en
rad/sec. On doit donc transformer les vitesses angulaires mesures puis les intgrer
pour obtenir les angles d'Euler. Mais au long des calculs, des erreurs saccumulent et
les valeurs drivent.
Si on observe les mesures ci-dessous, on remarque que pendant la manuvre
sur le roulis, le tangage augmente. Cela est d l'accumulation des erreurs lies
lintgration.

On constate donc qu'un gyroscope est trs prcis sur une courte priode mais peu
sur une longue.

19

Dtermination partir des acclromtres


Dans les acclrations mesures, on retrouve diffrentes acclrations comme
l'acclration gravitationnelle, qui sont modifis lors du changement de vitesse que
ce soit en amplitude ou lors d'un changement de direction.
Si on retire lacclration gravitationnelle, on peut obtenir les positions partir de ces
mesures.

= sin1 ( )

= sin1 (
)
cos
Ax,Ay : acclrations selon x et y
: angle de roulis
: angle de tangage

Les graphes ci-dessus montrent les valeurs des angles obtenues partir des
acclromtres. On voit qu'il n'y a pas d'accumulation d'erreurs mais que la valeur
maximale tourne autour de 9 alors que la centrale est incline de 30. La diffrence
tant trop importante, on ne peut pas utiliser les acclromtres seuls.

Dtermination en fusionnant les capteurs


On a remarqu que sparment, ces capteurs n'taient pas efficaces pour
positionner le drone. Mais si on pouvait associer les avantages de chacun, on
pourrait obtenir quelque chose d'intressant. Cest ici quintervient le systme AHRS
mais Pour pouvoir s'accommoder des acclrations passagres ainsi que des
perturbations et vibrations magntiques, il est ncessaire de fusionner les donnes de
tous les capteurs dans un filtre de Kalman.

20

Le schma suivant montre comment nous allons combiner nos mesures.


L'attitude obtenue par les acclromtres deviendra la mesure ncessaire au filtre
de Kalman. Ainsi l'erreur des gyroscopes sera corrige par les acclromtres ds
que les mesures des gyroscopes divergeront.

Mesures

Acceleromtres

Dtermination
de l'attitude

Gyroscopes

Attitude

Filtre de Kalman

La difficult supplmentaire vient du fait qu'on ne peut pas appliquer le filtre


de Kalman sur ces mesures. Nous devons donc transformer les angles d'Euler laide
de matrices de quaternions. Suite ces changements nous pourrons appliquer le
filtre. Nous passerons sur les diffrents calculs, il suffit de se reporter la
documentation nous ayant servi de rfrence.

Finalement, cette fusion aura permis d'liminer les inconvnients de chaque


type de capteur et donc davoir des valeurs prcises comme le montrent les
courbes ci-dessus.
Correction supplmentaire
Dans l'ide d'un vol autonome, on pourra apporter une correction
supplmentaire l'aide de la boussole et de ses magntomtres. Ainsi l'aide du
champ magntique terrestre nous pourrons corriger les drives restantes.

21

Aspect physique et algorithmes de stabilisation


Dfinitions utiles dans le domaine du quadricoptre :

Angle de calage : angle entre la corde et le plan de rotation de l'hlice


Trane : rsistance de l'air sur l'hlice sur une hlice en rotation.
Vitesse induite : vitesse communique la molcule d'air lors de son
passage au travers du disque rotor.

Effet prendre en compte pour le vol d'un drone.


Cette partie relate des contraintes de l'environnement extrieur au drone et qui
agisse dessus.

L'effet de couple : Du fait que le l'hlice tourne dans un sens, le moteur tend
tourner dans le sens oppos en raison de la trane induite par les pales. Il en
rsulte une lgre inclinaison du moteur concern. L'effet de couple dpend
de la masse du l'hlice, de son pas, de son diamtre et de son rgime, mais
aussi et surtout la puissance disponible : plus la puissance est grande, plus
l'effet de couple est grand.

L'inclinaison de l'axe du moteur en d l'effet de couple dpend de la


rsistance qui lui est oppos. Pour rduire cet effet, on peut appliquer deux types de
contre-mesures :
-

les mesures passives qui ont lieu lors de la conception.


les mesures actives qui sont celle que l'on peut induire durant le vol
(comme le report de poids d'un ct ou de l'autre, un rglage
asymtrique du Trim, une rduction de pousse...).

La prcession gyroscopique : Une hlice qui tourne agit comme un


gyroscope, qui initialement tend rsister toute force qui pourrait lui faire
changer d'axe de rotation.

Ainsi, si une telle force persiste ou est assez intense, l'hlice en rotation ne
drive pas dans la direction cette force, mais dans une direction de 90 de celle-ci
dans le sens trigonomtrique.

22

F la force instantane applique au systme en rotation, et R la rsultante 90


degrs dans le sens de rotation que le systme va rellement "ressentir".

La pousse asymtrique des pales : celle-ci a trois facteurs qui sont :


Elle se manifeste lorsque l'hlice n'est pas dans le plan horizontal, chacune
des pales lorsqu'elle descend est entrane vers l'avant, et lorsqu'elle monte
vers l'arrire (phnomne d bien entendu la force de pesanteur).

D'o en descente : vitesse air = vitesse sol + vitesse de rotation + vitesse


d'entranement.
Et en monte : vitesse air = vitesse sol + vitesse de rotation vitesse
d'entranement.

Le poids de la pale P vient dans un cas s'additionner la train f, et dans l'autre


cas s'en soustraire. Il y a donc asymtrie ds lors que le drone n'est pas l'horizontal.
-

Du fait de l'inclinaison du moteur, l'angle d'attaque de chaque pale est plus


lev dans la phase de descente que dans la phase de monte. Cela
provoque plus de pousse d'un ct de l'hlice que de l'autre.
Les deux facteurs prcdents induisent le fait que le ct o la pale descend
est expose un flux d'air dit propre alors que l'autre subit un masquage
aggravant. Cela provoque une pousse accrue du cot de descente, et
rduit de l'autre, ce qui s'ajoute encore aux facteurs prcdents, et on a
donc une boucle.

A noter que la principale diffrence entre la prcession gyroscopique et la


pousse asymtrique des pales est que la premire est une force momentane qui
disparat ds le prochain changement d'assiette ; alors que la seconde est peu de

23

chose prs permanente, de sorte que la direction relle de l'appareil est toujours
dcale par rapport la direction souhaite.
Il est galement intressant de noter que la pousse asymtrique des pales et
la prcession gyroscopique sont rapidement contraries par une rduction de
puissance et par l'vitement de changement d'assiette trop brut.

Analyse mcanique
Afin de dterminer quelles sont les contraintes internes aux quadricoptre, il
nous a fallu raliser une analyse mcanique, et dterminer, si ces contraintes
engendrent des problmes, si une approche mcanique (classique) pouvait les
paliers.
Thorie de l'lment de la pale (Froude)
La thorie de l'lment de la pale a t initialement dveloppe par Froude
qui assimile dans cette thorie l'lment de la pale une plaque mince, soumise
un vent relatif. Cette thorie a t amliore depuis par Drzewiecki qui calcule les
caractristiques arodynamiques des hlices.
La pale est ici dcoupe en un nombre fini de tranches (lments) l'aide de
surfaces cylindrique.
On suppose que l'coulement dans un anneau, limit par deux surfaces
voisines, est indpendant de l'coulement dans les autres anneaux. Il est ainsi
possible d'obtenir de faon indpendante les forces de trane dD, et les forces de
portance dL applique sur chaque tranche, sans tenir compte de l'coulement dans
les lments voisins.
Enfin, en intgrant les efforts lmentaires, on peut calculer es caractristique
arodynamique intgrales du rotor.

24

Pour obtenir l'effort lmentaire, chaque lment de la pale est donc


reprsent comme une aile cylindrique (aile allongement infini), avec une surface
dS = c*dr.
L'aile est soumise au vent rsultant W, qui est une composition de la vitesse du vent
l'infini Vinf et celle de rotation U = r.
W = Vinfini + r , cest la vitesse relative en m/s (pas le travail)
Vinfini est la vitesse lamont en m/s.
= vitesse angulaire en rad /r.
r = rayon local, correspond au r sur le schma prcdent
L'angle d'incidence est calcul partir de l'angle d'coulement =
arctan(Vinf / U), et l'angle de calage de la pale : =(-).
La portance et la trane peuvent maintenant tre calcules partir des
formules :
= . . W 2 . CL . . c . dr
= . . W . CD . . c . dr
O CL et CD sont les coefficients, respectivement, de trane et de portance
du profil d'aile.
Les valeurs de ces coefficients dpendent de l'angle d'incidence entre la corde du
profil et la vitesse rsultante. De faon gnrale, ces coefficients sont obtenus
partir d'essais de profils ou des simulations numriques prenant en compte la
viscosit du milieu ; dans notre cas la mthode de recherche des coefficients par
essais nous a sembl tre plus facilement ralisable que la seconde mthode, qui
ncessiterait des moyens d'envergures son application.

25

Afin d'obtenir la force tangentielle et la force axiale, applique chaque


lment de la pale, on projette les forces de trane et de portance sur le plan de
rotation et sur l'axe de rotation :
= . . . [ CL . . + CD . . ] . . .
= . . . [ CL . . CD . . ] . . .

Finalement l'intgration de ces forces le long de la pale, du pied l'extrmit


permet d'obtenir la force axiale et la puissance du rotor.
En prenant en compte le nombre de pale N et la vitesse angulaire du rotor , on
obtient la force axiale Fa et la pousse P (en Watts) :
= . . . [, ] ( . [ CL . . + CD . . ] . . . )
= . . . [, ] ( . [ CL . . CD . . ] . . . )
La thorie de l'lment de la pale donne des rsultats satisfaisant condition
que les vitesses induites soient faibles.
Thorie de l'hlice
Comme la thorie de l'lment de la pale ne nous convient pas totalement
nous nous sommes alors penchs sur la thorie de l'hlice, plus gnrale, et qui ne
prend pas en compte le profil des pales.
Soient (i) l'angle d'incidence de la pale, () l'angle de pas et () l'angle de
conicit.

26

Plus l'angle d'incidence augmente, plus us la portance augmente, jusqu' une


valeur limite o le profil dcroche. Au dcrochage, la portance s'croule et la
trane crot brutalement.
La vitesse en chaque point de la pale augment proportionnellement
l'loignement de l'axe de rotation, et la portance crot en fonction du carr de la
vitesse.
La vitesse de rotation de la pale vaut : R, V est la vitesse de la pale et Vt la
vitesse de translation.

27

La rsultante arodynamique en hauteur Rz est : Rz = . . S . V . CZ .


= masse volumique du fluide du milieu en Kg/m3
S = matre couple en m
V = vitesse en m/s
CZ = coefficient portance
Conclusion de l'analyse

Dans le cadre de notre projet, nous avons prfr substitu la rsolution


mcanique de l'instabilit du drone par une rsolution mathmatique utilisant un
asservissement PID.
Ce choix est d la quantit de traitement qu'il n'est pas possible de raliser avec le
matriel prsent sur le drone ou avec le budget qu'il nous est fourni. De plus la
complexit des quations demanderait trop de temps pour pouvoir avoir un vol
stabilis dans les dlais impartis.

Dans la prochaine partie nous aborderons donc la solution de stabilisation par


PID que nous avons implment de faon concrte, et nous tudierons galement
la recherche des coefficients ncessaires sa mise en place.

PID (Proportionnel, Intgral, Driv)


Pour pouvoir obtenir un asservissement satisfaisant et applicable sur notre
matriel, le PID constitue une solution ad-hoc.

Afin de pouvoir viter une mise en quation totale du quadricoptre nous


avons d nous pencher sur les diffrents algorithmes de stabilisation. Au cours ces
recherches, il est apparu que dans notre cas une mthode semblait parfaitement
adapte : le PID, respectivement Proportionnel, Intgral, Driv.
Cette mthode semblait prsenter un double avantage, elle tait d'un part
robuste et fiable car largement prouve dans un large panel de contextes et
d'autre part elle semblait assez facile mettre en uvre.

Principe du PID : le principe du PID est relativement simple. Lorsque que le


systme tudi ici le drone se trouve dsquilibr, l'algorithme envoie une

28

commande qui donne une raction dont le sens est oppose celui dsquilibre, et
ce afin que le drone retrouve l'tat souhait.
A premire vue cela peut sembler simple mettre en uvre : il suffit,
d'apparence, que la rponse envoye soit proportionnelle l'erreur provoque par
le dsquilibre pour que le systme soit stabilis. Toutefois si l'on se contente d'un
algorithme aussi simple, on se rend vite compte qu' dfaut d'tre stable, le
quadricoptre ragit souvent trop lentement.

De faon augmenter les performances de l'algorithme il nous faut ajouter


au terme directement proportionnel (P), un terme proportionnel la drive de
l'erreur (D).
Ce second terme permet alors au systme de regagner plus vite son tat stable et
rgle ainsi le problme de ractivit du systme.
Mais encore un fois, les choses restent l encore imparfaites : le systme ragit en
effet souvent trop brusquement donnant lieu des oscillations (parfois mme
explosives).

Afin d'obtenir une rponse plus stable du systme un dernier terme doit donc
tre ajout.
Ce terme est quant lui proportionnel l'intgrale de l'erreur dans le temps, c'est le
I .
Lorsque ces 3 termes sont prsents le PID est complet et le systme peut enfin tre
stable.
Si le principe de l'algorithme s'arrte l et demeure assez simple une des
grandes difficults qu'il induit rside dans la dtermination des trois coefficients de
proportionnalit permettant de calculer chacun des termes du PID. Ces coefficients
sont gnralement nomms Kp, Kd et Ki.
Leur dtermination est dans la plupart des cas fruit d'une dmarche entirement
empirique.
Il est prconis de fixer d'abord le Kp de sorte de la rponse soit correcte, puis le Kd
afin qu'elle soit suffisamment rapide et en dernier lieu le Ki jusqu' obtenir une
stabilit suffisante.

Au sein d'un quadricoptre, un seul PID ne suffit pas, il faut en effet asservir le
drone la fois en hauteur et sur trois angles (lacet, tangage et roulis). Nous avons
donc dcid dans un premier temps de ne pas traiter le lacet qui ne nous a pas
29

sembl tre prioritaire, en effet une combinaison du tangage, du roulis et de la


hauteur permettent dj un dplacement sur les 3 axes de l'espace tridimensionnel.
La stabilisation en hauteur est simple vrifier : si on place le drone trop bas
par rapport sa position de consigne, il doit augmenter la vitesse de rotation de tous
ces moteurs simultanment pour s'lever. Si on dpasse la position des consignes les
moteurs doivent alors ralentir.
Les stabilisations en tangage et en roulis sont rgies par le mme principe. Si
l'on incline le drone en suivant l'axe avant/arrire ou l'axe gauche/droite, le drone
doit augmenter la vitesse des deux moteurs abaisss et diminuer celle des moteurs
surlevs afin de se retrouver nouveau la position de consigne (l'implication de
deux moteurs tient ici la configuration en X du drone).
Enfin la stabilisation en lacet consiste simplement contrler la rotation du
quadricoptre autour de son centre de gravit et dans le plan form par les
moteurs. Pour cela il faut intervenir sur les vitesses des quatre moteurs en augmentant
la vitesse de deux moteurs (opposs sur le drone) et diminuer celle des deux autres.
La stabilisation en lacet utilise le fait que les moteurs tournent dans des sens diffrent
et induisent donc des couples opposs. Par exemple, pour avoir un couple du
systme quadricoptre positif, on augmente la vitesse de rotation moteurs ayant un
couple positif et abaisse celle des moteurs ayant un couple ngatif, et inversement
pour avoir un couple ngatif.
Concrtement, dans notre cas, nous avons dans un premier temps ralis une
modlisation primitive de la physique du drone dans un tableur. Nous avons ensuite
tent d'ajuster les coefficients jusqu' obtenir un systme stable. Nous avons ensuite
implment nos algorithmes sur le drone et avons procd avec prudence des
tests.

PID en angle

30

PID en hauteur
On peut observer l'action thorique de l'application d'un PID pour la suppression des
oscillations. Dans la courbe du PID angle comme celle du PID hauteur on a : en bleu
la consigne, et en rouge la valeur mesure.

Il est apparu rapidement que les rsultats dtermins dans le tableur taient trop
grossiers pour tre appliqus sur le modle rel. Nous avons donc procd une
nouvelle srie d'exprimentations qui ft relativement longues du fait des
prcautions qu'il nous a fallu prendre pour ne pas risquer d'endommager le drone.
Une autre difficult de ces exprimentations rsidait dans la difficult juger
sans banc de test ni moyen de mesure spcifique de l'impact rel des modifications
ralises sur le systme.
Au cours de ces exprimentations nous avons constat qu'une partie de nos
obstacles la stabilisation tait lie un problme bien diffrent de ceux que nous
envisagions, le gnrateur de laboratoire que nous utilisions ne dlivrait en effet plus
un courant suffisant pour permettre au drone de se stabiliser. L'apport de courant
ncessaire l'augmentation de puissance de certains des moteurs entranait en
effet une pnurie sur les autres. Il est donc bon de noter qu'il faut s'assurer d'avoir
assez de puissance pour appliquer un PID, puisque celui-ci en ncessitera plus ds
son application.
Aprs des heures rechercher des coefficients en adquation avec le profil
de notre quadricoptre, nous sommes parvenus obtenir une stabilisation sans
doute trop imparfaite pour permettre le vol prolong du drone dans un espace
restreint, mais nanmoins suffisamment satisfaisante pour que nous dcidions de
nous en tenir l et mettre profit notre temps dans la poursuite des recherches sur
d'autres parties de notre projet.

31

Formules associes au PID :


Erreur i = consigne - valeur mesure i
Drive i = (valeur mesure i valeur mesure i-1) / (ti - ti-1)
Intgrale i = Intgrale i-1 + Erreur i * (ti ti-1)
Erreur i *= Kp
Erreur i += Intgrale i * Ki
Erreur i -= Drive * Kd
Pistes d'optimisations
Cohen-Coon et Ziegler-Nichols sont des algorithmes offrant la possibilit
dautomatiser la dtermination des coefficients du PID.

32

Implmentation embarque
La RPDL
La RPDL, Renesas Peripheral Driver Library, est une bibliothque de priphriques
fournie par Renesas permettant de manipuler ces derniers avec des fonctions de
haut niveau.
Cela permet un gain de temps trs important puisque lutilisation est trs largement
simplifie, et les fonctions sont bien documentes.

Exemple : cration dune temporisation :


Par exemple, voici le code utilis pour gnrer une temporisation de 100 ms avec un
timer :

R_CMT_CreateOneShot(1,PDL_NO_DATA,0.1,PDL_NO_FUNC,0);
La fonction R_CMT_CreateOneShot permet de configurer un timer pour un
vnement unique.
Ses paramtres sont :
-

Le numro du timer utiliser, un entier compris entre 0 et 3 inclus, ici le 1.


La configuration utiliser. Ici, on utilise la constante PDL_NO_DATA qui permet
dutiliser les valeurs par dfaut.
Le temps dattente en secondes, dans un float.
La fonction appeler la fin de lattente. Ici on souhaite simplement
continuer lexcution du flux courant donc on utilise la constante
PDL_NO_FUNC.
La priorit de linterruption (la fonction appele la fin). Le paramtre est
ignor sil ny en a pas, comme dans le cas prsent.

Exemple : envoi de messages via le port srie :


Voici un exemple plus important avec une partie de lenvoi de la configuration au
module wifi :

R_SCI_Send(2,PDL_NO_DATA,"AT+WD\r\n",0,PDL_NO_FUNC);
R_CMT_CreateOneShot(2,PDL_NO_DATA,0.1,PDL_NO_FUNC,0);
R_SCI_Send(2,PDL_NO_DATA,"AT+WM=2\r\n",0,PDL_NO_FUNC);
R_CMT_CreateOneShot(2, PDL_NO_DATA,0.1,PDL_NO_FUNC, 0);
R_SCI_Send(2,PDL_NO_DATA,"AT+WAUTH=0\r\n",0,PDL_NO_FUNC);
Ici, on alterne un envoi de trame srie avec une attente de 100 ms. Nous avons d
mettre en place cette temporisation pour sassurer que le module wifi ait le temps
de traiter la configuration, puisquavant cet ajout le module narrivait pas grer la
rception de toutes les informations.

33

La fonction R_SCI_Send permet lenvoi dun message sur le port srie paramtr
auparavant.
Ses paramtres sont :
-

Le port utiliser, un entier compris entre 0 et 6 inclus mais diffrent de 4.


La configuration utiliser. Ici, on utilise la constante PDL_NO_DATA qui permet
dutiliser les valeurs par dfaut.
Ladresse de dbut du message envoyer, sous forme dun uint8_t (cr ici
partir dun tableau de char)
Le nombre doctets envoyer dans le cas dun envoi de donnes binaires. Ici
on le met 0 puisquon envoie des donnes ASCII, il repre tout seul la fin de
la chane.
La fonction appeler la fin de lenvoi. Ici on souhaite simplement continuer
lexcution du flux courant donc on utilise la constante PDL_NO_FUNC.
La priorit de linterruption (la fonction appele la fin). Le paramtre est
ignor sil ny en a pas, comme dans le cas prsent.

Exemple : paramtrage du port srie :


R_SCI_Set(PDL_SCI_PIN_SCI2_A);
R_SCI_Create(2,PDL_SCI_8N1,115200,5);
R_SCI_Receive(2,PDL_NO_DATA,&gSCI_RXBuffer,1,CB_SCIReceive,P
DL_NO_FUNC);
Cet ensemble de fonctions permet de paramtrer le port srie et linterruption de
rception.
R_SCI_Set active le port sur lequel srie on travaille, ici le port reprsent par la
constante PDL_SCI_PIN_SCI2_A.
R_SCI_Create cre le port au niveau logiciel. Ses paramtres sont :
-

Le numro de port srie utiliser.


Configuration du channel : 8 bits, sans parit, 1 bit darrt.
Le taux de transfert en bauds
La priorit de linterruption de rception

R_SCI_Receive permet dactiver la fonction dinterruption pour la rception. Ses


paramtres sont :
-

Le numro de port srie utiliser.


La configuration utiliser. Ici, on utilise la constante PDL_NO_DATA qui permet
dutiliser les valeurs par dfaut.
Le buffer de rcupration des caractres.
Le nombre de caractres lire avant de lancer linterruption.
Linterruption dclencher le nombre atteint.

34

Une deuxime fonction dinterruption excuter en cas derreur.

Implmentation sur lArduino


LArduino permet de programmer en C/C++ pour le code proprement
parler et nous fournit des bibliothques de base pour la gestion des priphriques
(SPI, I2C, IO,). Nous avons galement utilis des bibliothques C++ fournies par le
projet Arducopter afin de gagner du temps dans un premier temps. Ces codes de
haut niveau ont permis de faciliter lutilisation des priphriques intgrs. Une des
tches futures pourrait tre de rcrire ces bibliothques.
Par rapport au projet, nous avons seulement utilis les bibliothques fournies
pour rcuprer les valeurs brutes des priphriques. Nous avons ensuite implment
tous les algorithmes prsents prcdemment ainsi que les classes ncessaires au
fonctionnement des nouveaux priphriques comme les sonars et le protocole de
communication.
Lavantage du dveloppement en C/C++ a t de pouvoir programmer sur
un ordinateur afin davoir un vrai dbuggeur et ensuite dobtenir un code
facilement adaptable au RX ou lArduino. Nous suivons ainsi lobjectif de gnricit
du code.
Limplmentation du traitement de la centrale inertielle a ncessit en plus le
dveloppement dune classe de gestion des matrices avec les diffrentes
oprations ncessaires. Quant la gestion du protocole, il respecte celui dfini dans
ce projet.
Finalement, notre programme principal est un programme de calibrage des
diffrentes PID, o en temps rel nous pouvons modifier les diffrents coefficients et
la vitesse. A ct, des programmes annexes permettent de tester les diffrents
composants du drone.

35

Communications
Protocole de communication Wifi
La mise au point du protocole de communication Wifi, bien qu'apparemment
simple, tait une tche qui comportait tout de mme certaines difficults. Au
premier rang de ces difficults figure la ncessit de raliser un protocole
suffisamment volutif pour s'adapter aux volutions futures du projet. De plus le
protocole Wifi devant jouer le rle d'interface entre les travaux de notre quipe et
ceux de l'quipe en charge du simulateur, il se devait de rpondre autant que
possible aux attentes des deux quipes.
Le protocole de communication prsent ci-aprs constitue le protocole final
pour notre projet, toutefois il a t prvu qu' l'avenir il puisse tre remplac par un
protocole repens pour offrir une plus grande vitesse de communication. Le
protocole prsent ici est donc un protocole simplifi afin d'offrir une plus grande
facilit de dbogage lors des phases de dveloppement.
Dans le but d'viter une trop grande lenteur du protocole, il fut dcid de
privilgier les communications UDP aux communications TCP.

Valeurs numriques
Toutes les valeurs numriques (rcupres depuis un capteur ou transmises
comme consigne) doivent tre converties de sorte que leurs valeurs varient entre 32767 (la valeur minimale relle est en fait -32678 mais -32767 a t prfr pour des
raisons de symtrie) et 32767 (valeur maximale thoriquement atteignable).
Un champ de valeur aussi important doit assurer une prcision suffisante pour
les calculs effectuer par la suite.
L'usage de int16_t dfinis dans stdint.h a donc t jug pertinent dans le
cadre des manipulations de ces valeurs.
Une formule permettant d'obtenir un formatage efficace est alors :
Val_formate = (65534 . (Val_Relle - Val_Min)/(Val_Max - Val_Min)) 32767
Cette formule rendra des valeurs entre 32767 et -32767.
Les calculs doivent autant que possible tre raliss en float afin d'viter des pertes
importantes au cours de la division.
La formule de rcupration des valeurs est alors :
Val_rcup = (((Val_formate + 32767) / 65534) . (Val_Max Val_Min)) +Val_Min

36

Format gnral de la trame


Le format de trame choisi est le suivant :
<NUM_PAQUET><!><TYPE_TRAME><< ?>|<<:><VAL>[,VAL[,...]]>><!><CTRL_SUM><CRLF>
Avec :
<NUM_PAQUET> : numro du paquet, auto-incrmental, sur 4 chiffres, non sign, en
dcimal.
<!> : caractre "!" utilis comme sparateur
<TYPE_TRAME> : suite de 2 caractres en ASCII indiquant les informations portes par
la trame (voir plus bas)
<< ?>|<<:><VAL>[,VAL[,...]]>> valant soit :
-- "?" dans le cadre de la demande d'une (srie de) valeurs
-- ":" suivi d'une srie de valeurs spars par des virgules
<CTRL_SUM> consiste en la somme des valeurs ASCII de toute la trame jusqu'au
caractre "!" prcdant cette somme ("!" inclus)
<CRLF> : caractres "\r\n" C'est la lecture de ces caractres qui indiquera la fin de
la trame.
Liste des TYPE_TRAME
Les TYPES_TRAME sont des suites de 2 caractres ASCII
TYPE_TRAME commenant par un 0
Ces types sont rservs des fins de test et ne doivent pas tre utilis dans le cadre
d'une implmentation finale.
TYPE_TRAME commenant par un 1
Ces types sont rservs la transmission des erreurs.
Identificateurs de trame
La liste des identificateurs actuellement attribus est disponible en annexe 1.
Exemples
On aura ainsi par exemple
0010!Gx?!513
correspond au dixime message chang, le contrleur demande au drone la
valeur de son gyroscope en x
37

0011!Gx:21!608
serait la rponse du drone
ou encore
0101!0B:21,22,58!828
qui serait le 101e message d'une srie, utilisant un protocole de test (commenant
par 0) et renvoyant 3 valeurs
Le rle des communications est primordial puisque chaque carte aura,
terme, son propre rle : ArduPilot comme macro-capteur, RX comme centre de
calcul et au bout un ordinateur pour envoyer les commandes ou une liaison avec le
simulateur.
Nous avons donc privilgi les connexions sries car elles sont simples mettre
en uvre et chaque carte possde plusieurs ports.

Communication TTL entre ArduPilot & RX


La mise en place des communications a t contrainte par le respect les
tensions utilises. Le RX62T fonctionnant en 3.3V, il fallait donc diminuer la tension de
sortie du port UART2 de lArduino.
Il a suffi dajouter 2 rsistances sur la broche TX : 1.5k et 3.3k. Il fallait
galement faire la mme dmarche avec lordinateur lors de nos tests sans RX62T.
Nous utilisions un adaptateur USB/RS-232 qui sortait avec un connecteur DB9. Afin de
faire le pont entre ce connecteur et la carte Arduino, nous avons mis en place un
montage autour dun MAX202.
Aprs ladaptation des tensions, la connexion entre ArduPilot et RX est simple. Une
mme masse, et la broche RX de lun sur la broche TX de lautre.

38

Bilan technique
Ces quatre mois de projet nous ont permis de raliser de nombreuses choses,
bien que lintgralit des objectifs nait pas t atteinte. En effet, les nombreuses
difficults techniques rencontres nous ont pousss rviser nos objectifs, pour
finalement nous concentrer sur lessentiel.
Ainsi, nous avons russi faire voler le drone avec le nouveau matriel, en utilisant la
carte ArduPilot, en contrlant via la tlcommande RC. De plus, nous avons
dtermin un algorithme de stabilisation efficace qui permet de stabiliser le drone
en lui donnant une consigne de hauteur, malgr dventuelles perturbations.
Nous avons aussi russi dvelopper les premires fonctionnalits sur le RX62T, aprs
une priode dapprentissage ncessaire la prise en main de ce nouveau
microcontrleur et des outils associs. Nous avons ralis un code fonctionnel pour
lutilisation des ports srie servant la communication avec dune part lArduPilot et
dautre part le module WizFi 220.
Concernant ce dernier, nous avons dfini un ensemble de commandes de
configuration qui permettent dassurer un fonctionnement optimal et le plus simplifi
possible, en limitant les interventions de connexions aux seuls priphriques, plus aiss
de paramtrage.

39

Project Summary
Our project consisted in making a self-stabilized quad-copter
The global idea is to make a drone which can be either remote controlled with a
radio command or an android smartphone, or self-controlled using an Inertial
Measurement Unit and GPS coordinates. The drone must also be able to
communicate its sensors' data so its state can be seen in real time in a simulator
through Wi-Fi communication
This project was already started in previous years, but the lack of usable code as well
as the poor state of the existing drone forced us to restart everything from scratch
after making a complete and exhaustive analysis of the state of the existing project.
We decided to use an ArduPilot Mega, a microcontroller based on Arduino Mega,
with embedded IMU, magnetometers, GPS, and I/O pins to control the motors and
the radio command. But its Atmel chip wasn't powerful enough to process the
calculations needed, so we chose the Renesas RX62T as an embedded chip to
perform these calculations. The idea was to start coding everything on the Arduino,
then to move it step by step on the RX, so it would force us to do generic code which
could be used with any microcontroller and any peripheral.
Each of us four had a dedicate task: Benjamin had to find algorithms in order to
stabilize the drone, Pierre worked with the ArduPilot to create the code to use the
RC, the motors and the sensors, Axel defined protocols for communication between
the drone and its peripherals (simulator, Android remote control) and Nicolas had
to create a configuration for the Wi-Fi chip and start coding with the new RX62.
We encountered various difficulties, mostly due to the material aspect of our project
: our syllabus deals with coding, including coding for embedded systems, but we
dont have any electronics lectures, so we werent able to solve the problem we
were confronted to, or even find them. Moreover, the stabilization part requires
advanced knowledge in certain fields of mathematics and physics we didnt have,
so we based our work on some PhDs and Masters theses.
At this date, we have reached some our goals, but several electronics issues prevent
us from finishing this project. So far, our achievements are the stabilization of the new
drone using the ArduPilot, some basic communication code executed on the
embedded RX62T, and an efficient configuration for the Wi-Fi module.
We strongly recommend continuing this project next year as we took care into
making an efficient and clear code. We also documented our work and researches
as we had at heart to provide an easy to maintain and improve project.

40

Bibliographie
-

Kalman Filter for Beginners : with MATLAB Examples, Phil Kim and Lynn Huh

Thse I.Dobrev (Arts et mtiers, 2009)


Primary Propeller Forces, as pertaining to powered paragliding, Keith Pickersgill
Xplorer
http://aeroquad.com/showthread.php?1167-Stable-Mode-Explained
http://technicaladventure.blogspot.fr/2012/03/quadrocopter-firmware-4rotor-explained.html
http://arduino.cc/
http://code.google.com/p/arducopter/
https://groups.google.com/forum/?fromgroups#!forum/diy-pid-control
http://quadcopterpourlesnuls.over-blog.com/article-ardupirates77870656.html
http://code.google.com/p/ardupirates/
http://robots.dacloughb.com/
http://fr.scribd.com/doc/45617335/Regulation-PID
http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sansfaire-de-calculs/
http://jeremie.sangare.fr/coriolis_uav/pfe_coriolis_rapport_de_projet.pdf
http://gnexkopter.gnexlab.com/dokumanlar/Rapport_PIP_Quadrirotor.pdf

41

Annexes
Annexe 1 : Identificateurs de trame
"Ca" suivi d'une srie de 11 valeurs est utilis pour envoyer l'ensemble des valeurs des
capteurs dans l'ordre suivant :
acclro_x,acclro_y,acclro_z,gyro_x,gyro_y,gyro_z,magnto_x,magnto_y,
magnto_z,baromtre,thermomtre
Acclromtres
"Ax" suivi d'une valeur correspond l'acclromtre x
"Ay" suivi d'une valeur correspond l'acclromtre y
"Az" suivi d'une valeur correspond l'acclromtre z
"Aa" suivi de trois valeurs correspond aux valeurs des trois acclromtres dans
l'ordre x,y,z
Gyroscopes
"Gx" suivi d'une valeur correspond au gyroscope x
"Gy" suivi d'une valeur correspond au gyroscope y
"Gz" suivi d'une valeur correspond au gyroscope z
"Ga" suivi de trois valeurs correspond aux valeurs des trois gyroscopes dans l'ordre
x,y,z
Magntomtres
"Mx" suivi d'une valeur correspond au magntomtre x
"My" suivi d'une valeur correspond au magntomtre y
"Mz" suivi d'une valeur correspond au magntomtre z
"Ma" suivi de trois valeurs correspond aux valeurs des trois magntomtres dans
l'ordre x,y,z
Sonars
"Sf" suivi d'une valeur correspond au sonar avant (front)
"Sb" suivi d'une valeur correspond au sonar arrire (back)
"Sl" suivi d'une valeur correspond au sonar gauche (left)
"Sr" suivi d'une valeur correspond au sonar droit (right)
"Su" suivi d'une valeur correspond au sonar haut (up)
"Sd" suivi d'une valeur correspond au sonar bas (down)
"S6" suivi de 6 valeurs correspond la valeur des 6 sonars (ordre : avant, arrire,
gauche, droite, bas, haut)

42

Autres capteurs
"B0" suivi d'une valeur correspond au baromtre
"TH" suivi d'une valeur correspond au thermomtre
"GP" suivi de 8 valeurs correspond aux valeurs du : latitude, longitude, vitesse,
direction, nombre de satellites, tat du first fix, temps
Moteurs
Du drone vers le contrleur
"M1" suivi d'une valeur correspond la valeur actuelle du moteur 1
"M2" suivi d'une valeur correspond la valeur actuelle du moteur 2
"M3" suivi d'une valeur correspond la valeur actuelle du moteur 3
"M4" suivi d'une valeur correspond la valeur actuelle du moteur 4
"Me" suivi de 4 valeurs correspond la valeur actuelle des 4 moteurs (1,2,3,4)
"Mc" suivi d'une valeur correspond la valeur actuelle de la consigne moteur
"M+" suivi de 5 valeurs correspond la valeur actuelle des 4 moteurs suivi de la
consigne moteur
Du contrleur vers le drone
"M1" suivi d'une valeur correspond la valeur atteindre pour le moteur 1
"M2" suivi d'une valeur correspond la valeur atteindre pour le moteur 2
"M3" suivi d'une valeur correspond la valeur atteindre pour le moteur 3
"M4" suivi d'une valeur correspond la valeur atteindre pour le moteur 4
"Me" suivi de 4 valeurs correspond la valeur atteindre pour les 4 moteurs (1,2,3,4)
"Mc" suivi d'une valeur correspond la valeur atteindre pour la consigne moteur
"M+" suivi de 5 valeurs correspond la valeur atteindre pour les 4 moteurs suivi de
la consigne moteur

43

Annexe 2 : Commandes de configuration du module Wifi


Voici la configuration adopte pour le module WizFi 220. Les diffrentes
commandes sont dtailles dans la documentation du module.

AT+WD
AT+WM=2
AT+WAUTH=0
AT+NDHCP=0
AT+NSET=192.168.1.1,255.255.255.0,192.168.1.1
AT+WA=QuadNetwork,,8
AT+DHCPSRVR=1
AT+NSUDP=5000
ATA2
Configuration :
- Module en mode Point d'accs
- Pas d'authentification requise
- Serveur DHCP
- Rseau sans fil "SICopter"
- Ip 192.168.1.1, masque 255.255.255.0
- Serveur UDP mis en place sur le port 5000
Signification des diffrentes commandes :

AT+WD
Rinitialise la configuration.
AT+WM=2
Active le mode point d'accs.

AT+WAUTH=0
Pas d'authentification.

AT+NDHCP=0
Dsactive le client DHCP

AT+NSET=192.168.1.1,255.255.255.0,192.168.1.1
Paramtrage du rseau sur le module :
IP : 192.168.1.1, Masque : 255.255.255.0 ,Passerelle : 192.168.1.1

AT+WA=SICopter,,8
Dfinit le SSID "SICopter" sur le canal 8

AT+DHCPSRVR=1
Active le serveur DHCP.

AT+NSUDP=5000
Active un serveur UDP sur le port 5000.
Pour lancer un serveur TCP, remplacer par "AT+NAUTO=1,1,,5000"
ATA2
Active la connexion et bascule en mode DATA
44

Annexe 3 : Schma RX62T

45

Annexe 4 : Schma Module Wifi

46

47

Vous aimerez peut-être aussi