Professional Documents
Culture Documents
quadricoptre
stabilis
COSNARD Nicolas
FAURE Axel
GUINAULT Pierre
RIVRAY Benjamin
Universit dAuvergne
Anne 2012-2013
Remerciements
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.
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
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
11
12
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
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
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.
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
16
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
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
* : mesure de la prcision
de l'tat estim
18
Avoir des valeurs propres cest bien, mais il est ncessaire de bien savoir les exploiter.
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
= 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.
20
Mesures
Acceleromtres
Dtermination
de l'attitude
Gyroscopes
Attitude
Filtre de Kalman
21
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.
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
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
25
26
27
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.
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
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
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.
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 :
-
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 :
-
34
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
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.
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
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
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
45
46
47