Vous êtes sur la page 1sur 43

Faculté Polytechnique

Tuning of the flight controllers of a 3D prin-


ted “home-made” drone
Rapport de projet Ba3 - spécialité électricité

VANDER B EKEN Léo


VANDENHENDE Maxime

Promoteurs: Prof. A.VANDE WOUWER


Ir G.DELANSNAY

Année académique 2021-2022


Remerciements

Nous tenons, avant de débuter ce rapport de projet, à remercier Mr Delansnay Gilles,


Mr Dewasme Laurent et Mr Vande Wouw er Alain pour leur disponibilité et leur conseils
tout au long de ce projet.
Nous tenons également à remercier Mr Moeyeart Vincent pour son aide et ses conseils.

i
Table des matières

1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Démarche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Modèle mathématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1 Matrices de Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Equations Translationelles du mouvement . . . . . . . . . . . . . . 7
2.3 Equations du mouvement de Rotation . . . . . . . . . . . . . . . . 8
2.4 Moment et Force Aérodynamique . . . . . . . . . . . . . . . . . . . 9
2.5 Modèle Non-Linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.6 Modèle Linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Reconstruction du Drone . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1 Modélisation 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Assemblage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Présentation du logiciel Betaflight . . . . . . . . . . . . . . . . . . . . . . . 15
4.1 Hypothèses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 Analyse des PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1 Etude théorique d’un PID . . . . . . . . . . . . . . . . . . . . . . . 16
5.2 Etude du code source de Betaflight . . . . . . . . . . . . . . . . . . 20
5.3 Implémentation du système sur Simulink . . . . . . . . . . . . . . . 23
5.4 Interprétation des résultats avec les valeurs initiales de Betaflight . 24
5.5 Interprétation des résultats avec les valeurs optimales des PID . . . 29
6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Bibliographie 36

Annexes 38
1 Code Source Betaflight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2 Code Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.1 Matlab Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.2 Drone.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

ii
Liste des tableaux

1 Valeurs initiales modifiables par l’utilisateur . . . . . . . . . . . . . . . . . 21


2 Termes multiplicatifs imposés par Betaflight . . . . . . . . . . . . . . . . . 21
3 Impact de l’augmentation des différents gains . . . . . . . . . . . . . . . . 29
4 Valeurs modifiées dans Betaflight pour Z . . . . . . . . . . . . . . . . . . . 30
5 Valeurs modifiées dans Betaflight pour ϕ . . . . . . . . . . . . . . . . . . . 30
6 Valeurs modifiées dans Betaflight pour θ . . . . . . . . . . . . . . . . . . . 31
7 Valeurs modifiées dans Betaflight pour ψ . . . . . . . . . . . . . . . . . . . 32

1
1 Introduction
Dans le cadre du cours de projet d’électricité de 3ième année de bachelier à la Faculté
Polytechnique de Mons, il fallait que nous fassions un choix parmi tous les sujets proposés.
Nous avons donc décidé de choisir le sujet suivant : "Tuning of the flight controllers of a 3D
printed “home-made” drone". Ce dernier a déjà été abordé l’année passée par Emilien Flas
et Ludovic Pirard. Ils avaient pour mission d’assembler un drone à partir d’impressions
3D et de le faire voler. En plus de cette étape, il leur a été demandé de modéliser les
équations de mouvements du drone. Grâce à cela, ils ont pu modéliser les modèles linéaires
et non-linéaires du drone et calculer les PID relatifs de ces différents modèles. Le projet sur
lequel nous nous sommes attardés avait pour but d’aller plus loin dans la compréhension de
l’implémentation des contrôleurs. La continuité de ce projet est donc la suivante : faciliter
l’utilisation du drone. L’objectif final est d’apporter, chaque année, une amélioration pour, à
terme, pouvoir fabriquer et contrôler de A à Z un drone, sans devoir passer par des logiciels
pour lesquels nous n’avons pas connaissance des calculs qui se passent derrière.

2
1.1 Objectifs
L’objectif principal de ce projet est donc d’identifier comment les contrôleurs sont
implémentés sur le logiciel Betaflight[12] ainsi que de faire le lien entre l’interface du logiciel
et les paramètres des contrôleurs. Aussi, le réajustement du paramétrage des contrôleurs
aura pour but de faciliter le vol du drone. Pour cela, la simulation du système du drone
apportera la bonne compréhension des paramètres du modèle et des contrôleurs. Ainsi, nous
aurons la pleine possession du réglage du drone. En plus de tout cela, d’autres objectifs
viendront se greffer au projet. En effet, un des objectifs "externes" à ce qui a été demandé
initialement est la modélisation d’une nouvelle structure 3D du drone. La structure initiale
n’étant pas adaptée à un système de liaison permettant une attache résistante entre les
composants du drone, celle-ci a dû être repensée complètement.

1.2 Démarche
Ce projet s’est déroulé en plusieurs étapes :
— La première était la prise en main du logiciel principal : Betaflight. Mais également
la prise de connaissance des avancées des anciens étudiants sur le sujet.
— Il a donc fallu, par la suite, appréhender et comprendre le code source du logiciel
afin d’y retrouver l’implémentation des différents contrôleurs.
— La modélisation des différentes parties des contrôleurs sur simulink et analyse des
résultats

3
2 Modèle mathématique
Cette partie tient compte de l’analyse formulée par les étudiants de l’an dernier tout en
essayant d’apporter une compréhension supplémentaire à ce sujet.
Ce modèle permettra de prédire, théoriquement, au mieux les divers comportements
expérimentaux du drone. Pour ce faire, diverses simulations seront implémentées. Mais avant
tout, il est important de rappeler que dans la réalité, très peu de modèles sont linéaires... et
surtout pour les modèles de drone. Or, pour essayer d’améliorer le PID interne du drone
afin de le rendre plus stable, il est nécessaire de linéariser le modèle autour de son point de
fonctionnement. Le modèle mathématique présenté dans ce rapport est basé sur les notions
du cours d’Advanced control [15], les travaux de Mr Delansnay et Mr Maton [16] [2] et
Mr Sabatino [19]. Afin de construire au mieux ce modèle mathématique, il est essentiel de
définir deux cadres de référence :
— un référentiel inertiel fixé
— l’autre attaché au drone directement et donc mobile

Le référentiel mobile est uni au barycentre du drone. Celui-ci est appelé OABC et est repris
au niveau de la FIGURE 1 (ABC pour "Aircraft Body Center"). Le référentiel inertiel,
quant à lui, est un référentiel où les lois de Newton 1 sont valides. Ce référentiel inertiel
est appelé ON ED où "NED" signifie : North-East-Down. Ces derniers indiquent donc les
vecteurs dirigés vers le Nord, l’Est et le centre de la terre.

Figure 1 – Systèmes référentiels mobiles et inertiels [19]

P⃗
1. F = m⃗a

4
La vitesse de rotation des moteurs du drone permet de modifier notamment la position
de ce dernier mais également sa vitesse et/ou son accélération. Le drone étant composé de
quatres moteurs "DC", il est possible de les séparer en deux parties en fonction de leur sens
de rotation. La FIGURE 2[16] représente la modélisation du drone en fonction de ses axes
de références et de ses vitesses et sens de rotation des moteurs.
— horlogique pour les moteurs M1 et M3
— anti-horlogique pour les moteurs M2 et M4

Figure 2 – Représentation schématique du drone, angles d’Euler et axes mobiles et inertiels

Les axes x,y,z ci-dessus sont en réalités équivalents aux axes A,B,C définis auparavant. Des
angles y sont associés : ψ, ϕ et θ. Ces derniers sont appelés Angles d’Euler. Ces trois angles
d’Euler représentent les rotations possible du drone autour de chaque axe du référentiel mo-
bile. ψ représente l’angle "yaw" dit "lacet" au niveau de l’axe z ; ϕ l’angle "roll" dit "roulis"
au niveau de l’axe x ; et enfin, θ représente l’angle "pitch" dit "tangage" au niveau de l’axe y.

2.1 Matrices de Rotation


Typiquement, ψ et ϕ ∈] − π; π] et θ ∈ ]- π2 ; π2 ]. Le but de ces angles est de pouvoir
projeter les coordonnées de l’axe inertiel dans celui du drone et inversément. Pour ce faire,

5
la définition d’une matrice de transformation est nécéssaire. Celle-ci est formée par une
suite de trois matrices de rotations planes : Rϕ , Rθ et Rψ . Ces rotations planes sont définies
comme suit :  
cosψ −sinψ 0
Rψ (ψ) = sinψ cosψ 0
0 0 1

Cette matrice de rotation plane Rψ (ψ) représente la rotation autour de l’axe z.


 
cos(θ) 0 sin(θ)
Rθ (θ) =  0 1 0 
− sin(θ) 0 cos(θ)

Rθ (θ) représente la rotation autour de l’axe y.


 
1 0 0
Rϕ (ϕ) =  0 cos(ϕ) − sin(ϕ) 
0 sin(ϕ) cos(ϕ)
La rotation autour de l’axe x, l’angle "roll" ϕ est représenté par la matrice de rotation
Rϕ (ϕ).
Comme dit précédemment, pour obtenir la matrice de transformation du référentiel inertiel
vers celui du corps du drone, il suffit de multiplier les trois matrices de rotations entre elles :

Rψθϕ (ψ, θ, ϕ) = Rψ (ψ) · Rθ (θ) · Rϕ (ϕ)


 
cos(θ) cos(ψ) cos(ψ) sin(θ) sin(ϕ) − cos(ϕ) sin(ψ) sin(ϕ) sin(ψ) + cos(ϕ) cos(ψ) sin(θ)
=  cos(θ) sin(ψ) cos(ϕ) cos(ψ) + sin(θ) sin(ϕ) sin(ψ) cos(ϕ) sin(θ) sin(ψ) − cos(ψ) sin(ϕ) 
− sin(θ) cos(θ) sin(ϕ) cos(θ) cos(ϕ)

Pour obtenir la matrice de transformation du corps du drone vers le référentiel inertiel, il


suffit de prendre l’inverse de la matrice définie ci-dessus :

R−1
ψθϕ (ψ, θ, ϕ)
 
cos(θ) cos(ψ) cos(θ) sin(ψ) − sin(θ)
=  cos(ψ) sin(θ) sin(ϕ) − cos(ϕ) sin(ψ) cos(ϕ) cos(ψ) + sin(θ) sin(ϕ) sin(ψ) cos(θ) sin(ϕ) 
sin(ψ) sin(ϕ) + cos(ψ) cos(ϕ) sin(θ) cos(ϕ) sin(ψ) sin(θ) − cos(ψ) sin(ϕ) cos(θ) cos(ϕ)

Il est également possible, en plus des matrices de transformation de plan, d’obtenir la


matrice de transformation des vitesses angulaires. L’inverse de la matrice de Wronskian W −1
est la matrice de transformation permettant de passer des vitesses angulaires rattachées au
corps du drone vers celles du repère inertiel :

Θ̇ = W −1 ω

6
où Θ̇ = = (ϕ̇, θ̇, ψ̇)T ; et ω = (p, q, r)T . Cette matrice de transformation des vitesses
angulaires vaut donc :
 
cos(θ) sin(ϕ) sin(θ) cos(ϕ) sin(θ)
1
W −1 =  0 cos(ϕ) cos(θ) − sin(ϕ) cos(θ) 
cos(θ)
0 sin(ϕ) cos(ϕ)

Les mouvements de translation du drone sont : positions x,y et altitude z et ceux de rotation :
roll θ, pitch ϕ et yaw ψ dans le référentiel inertiel. Douze variables d’états sont à déclarer :
T
trois positions de translation et les trois vitesses correspondantes x y z ϕ θ ψ ;


trois positions angulaires et leurs vitesses correspondantes, dans le repère du drone


T
u v w p q r .


2.2 Equations Translationelles du mouvement


Ces équations sont basées sur la seconde loi de Newton :
X− →
Fw = mv̇ ⇒ G ⃗ − T⃗ = mv̇

où l’indice "w" fait écho au référentiel inertiel. Le vecteur G représente le vecteur gravité
relié au drone tandis que le vecteur T représente la poussée des moteurs.


Comme dit précédemment, F est défini dans le repère inertiel, G ⃗ l’est également. Cependant,
T est, quant à lui, défini dans le repère du drone. La matrice de transformation R−1 est

donc nécessaire à la bonne projection des différents vecteurs précédemment définis dans le
même repère.
L’équation précédemment définie devient donc :
   
0 0
1  1
v̇ = 0  − R−1  0 
m m
mg T

Il est logique de retrouver les composantes du vecteur gravité et poussée à la dernière ligne
de leur matrice respective puisque ces vecteurs n’agissent uniquement que sur la composante
liée à l’altitude du drone.

7
Après réalisation du produit matriciel entre R−1 est T⃗ , il vient :
 
T sin(θ)
1 
v̇ = −T sin(ϕ) cos(θ) 
m
mg − T cos(ϕ) cos(θ)

2.3 Equations du mouvement de Rotation


Dans le repère inertiel, en utilisant la loi de rotation des corps rigides et en sachant que
le moment lié au drone est défini à partir de la dérivée du moment cinétique en fonction du
temps, il vient :

⃗ w = dL = d (I⃗ · ω
M ⃗)
dt dt

Où I⃗ est le tenseur d’inertie rattaché au corps du drone, défini comme étant :


   
Ixx Ixy Ixz Ixx 0 0
I⃗ =  Iyx Iyy Iyz  =  0 Iyy 0 
Izx Izy Izz 0 0 Izz

La répartition de la masse du drone étant symétrique, cela a pour effet de rendre nul tous
les éléments hors diagonale du tenseur. Par souci de simplicité, il convient d’implémenter le
moment dans le référentiel du drone en utilisant les équations d’Euler :
 
τx
M ⃗˙ + ω
⃗ b = I⃗ · ω ⃗ × (I⃗ · ω
⃗ ) =  τy 
τz

L’expression de droite s’exprime comme :


     
p Ixx p (Izz − Iyy ) qr
⃗ × (I⃗ · ω
ω ⃗ ) =  q  ×  Iyy q  =  (Izz − Ixx ) rp 
r Izz r (Iyy − Ixx ) pq

Les expressions du moment M


⃗ b sont données par :

τx = Ixx ṗ + (Izz − Iyy ) qr


τy = Iyy q̇ + (Izz − Ixx ) rp
τz = Izz ṙ + (Iyy − Ixx ) pq

En isolant les termes dérivés des équations définies ci-dessus, il vient l’expression des
différentes accélérations angulaires :

8
τx + Iyy qr − Izz qr


 ṗ =



 Ixx
 τy + Ixx pr − Izz pr
q̇ =

 Iyy
τ + Ixx pq − Iyy pq


ṙ = z


Izz
En utilisant les équations de transformation et la matrice de Wronskian, il est possible
d’exprimer les angles d’Euler du repère inertiel :

r cos(ϕ) sin(θ) q sin(θ) sin(ϕ)

 ϕ̇ = p + +
cos(θ) cos(θ)




θ̇ = q cos(ϕ) − r sin(ϕ)

r cos(ϕ) q sin(ϕ)


ψ̇ = +



cos(θ) cos(θ)

2.4 Moment et Force Aérodynamique


Des moments et forces sont créés de par l’action des hélices du drone. Les forces de
poussée générées par les moteurs "i" (i = 1→4) sont proportionnelles au carré de la vitesse
de rotation du moteur "i". Ces forces sont définies comme suit :

Fi = −Ka ωi2

De la même manière, des moments aérodynamiques sont également créés par les moteurs
"i" (i = 1→4) tels que :
Mi = Km ωi2

Il est important de noter que les constantes Km et Ka sont liées directement aux moteurs.
En définissant "l" comme la longueur entre les bras des moteurs et le centre du drone, tout
en appliquant la règle de la main droite, nous pouvons exprimer τx , τy et τz comme suit :
2 2
 

 τ x = −F 2 l + F4 l = K a l ω4 − ω2
τy = F1 l − F3 l = Ka l ω12 − ω32


τz = M1 − M2 + M3 − M4 = Km ω12 − ω22 + ω32 − ω42
 

La poussée "T" est définie comme suit :

T = −Ka ω12 + ω22 + ω32 + ω42




9
2.5 Modèle Non-Linéaire
Grâce aux diverses expressions précédemment définies, il est possible d’écrire les
équations dynamiques décrivant le comportement du drone. Ce modèle non-linéaire se
présente ainsi : Ẋ = f(X,U) tel que X est le vecteur état du drone. Celui s’écrit :
T
∈ R12 . Le vecteur U, vecteur d’inputs,

x = x y z ϕ θ ψ u v w p q r
est donné par : U = [T, τx , τy , τz ].
Il vient donc : 

 f1 = ẋ



 f2 = ẏ



 f3 = ż
f4 = ϕ̇ = p + r cos(ϕ) sin(θ)
+ q sin(θ) sin(ϕ)


cos(θ) cos(θ)



f5 = θ̇ = q cos(ϕ) − r sin(ϕ)




 f = ψ̇ = r cos(ϕ) + q sin(ϕ)

6 cos(θ) cos(θ)
Ẋ = 1

 f 7 = u̇ = m
T sin(θ)
−1
f = v̇ = T cos(θ) sin(ϕ)



 8 m
1
f = ẇ = T cos(ϕ) cos(θ) + g



 9 m
 τx +Iyy qr−Izz qr


 f10 = ṗ = Ixx
τy +Ixx pr−Izz pr

f = q̇ =

11


 Iyy
τz +Ixx pq−Iyy pq

f12 = ṙ =

Izz

2.6 Modèle Linéaire


Ce modèle est présenté puisque pour implémenter des contrôleurs PID, il est nécessaire
de linéariser le modèle donné autour d’un point de fonctionnement.
Il est donc nécessaire de faire certaines hypothèses sur le modèle non-linéaire. Celles-ci
se traduiront par le fait que le système sera assimilé à un système fonctionnant à faibles
oscillations. Il viendra dès lors qu’un sinus sera approximé par son argument et que cos(x)
≈ 1.

10
Ẋ devient donc

 f1 = ẋ = u



 f2 = ẏ = v



 f3 = ż = w




 f4 = ϕ̇ = p + rθ + qθϕ
f5 = θ̇ = q − rϕ





 f6 = ψ̇ = r + qϕ
X˙lin = f7 = u̇ = m1 T θ

f8 = v̇ = −1



 m

 1


 f9 = ẇ = m T + g
f10 = ṗ = τx +IyyIqr−I zz qr




 xx
f11 = q̇ = τy +IxxIpr−I zz pr



 yy

f12 = ṙ = τz +IxxIpq−I yy pq

zz

Le point de fonctionnement sera tel que X˙lin = 0. Cette valeur nulle permet de n’in-
troduire aucune variationdans le système étudié. Le point de fonctionnement est donc
donné comme suit : Xe = xe ye ze ϕe 0 0 0 0 0 0 0 0 . Le vecteur d’inputs


devient également Ue = −mg 0 0 0 . La valeur ’mg’ dans ce vecteur représente la


force nécessaire afin de supprimer le poids du drone pour que ce dernier puisse léviter dans
l’air.
Le système sera représenté par deux équations :

ẋ = A · x + B · u
y =C ·x+D·u

où les matrices A, B, C et D sont données par :


 
0 0 0 0 0 0 1 0 0 0 0 0
 0 0 0 0 0 0 0 1 0 0 0 0 
 
 0 0 0 0 0 0 0 0 1 0 0 0 
 
 0 0 0 0 0 0 0 0 0 1 0 0 
 
 0 0 0 0 0 0 0 0 0 0 1 0 
 
∂f
 0 0 0 0 0 0 0 0 0 0 0 1 
A= =  
∂X X=Xe ,U =Ue  0 0 0 0 −g 0 0 0 0 0 0 0 

 0 0 0 g 0 0 0 0 0 0 0 0 
 
 0 0 0 0 0 0 0 0 0 0 0 0 
 
 0 0 0 0 0 0 0 0 0 0 0 0 
 
 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0

11
0 0 0 0
 
 0 0 0 0 
 
 0 0 0 0 
 
 0 0 0 0 
 
 0 0 0 0 
 
∂f  0 0 0 0 
B= = 0 0 0 0

∂U X=Xe ,U =Ue 




 1 0 0 0 0 

 m 0 0 0 

 0 1 
Ixx
0 0 
1
 
 0 0 0 
Iyy
1
0 0 0 Izz

Les entrées qui sont conservées pour le contrôle du drone sont exprimées dans la matrice C
telle que :  
0 0 1 0 0 0 0 0 0 0 0 0
 0 0 0 1 0 0 0 0 0 0 0 0 
C=  0 0 0

0 1 0 0 0 0 0 0 0 
0 0 0 0 0 1 0 0 0 0 0 0
La matrice D représente les effets du vent. Celle-ci sera imposée égale à zéro.
Pour les valeurs des moments d’inertie dans la matrice B, ces derniers valent 2 :
N
g = 9, 81
kg
m = 112, 13.10−3 kg
kg
Ixx = 63048, 27.10−9
m2
kg
Iyy = 101096, 91.10−9 2
m
kg
Izz = 57140, 73.10−9 2
m

2. Ces valeurs sont celles calculées l’année dernière, le drone étant quasiment identique, garder ces
valeurs semble donc être une très bonne approximation n’engendrant que potentiellement des différences
minimes

12
3 Reconstruction du Drone
Comme dit précédemment, la première version de la structure 3D du drone n’était pas
optimale. En effet, les seules liaisons entre les parties inférieure et supérieure du drone se
faisaient uniquement via des colsons. Il était donc impératif de re-modéliser une structure
fiable et solide.

3.1 Modélisation 3D
L’an dernier, le projet était principalement de construire un drone de toutes pièces et
la finalité était de le faire voler. Par rapport à l’an dernier, nous avons fait le choix de
retravailler les différentes pièces du drone afin que les liaisons mécaniques entre celles-ci
soient d’une efficacité plus certaine.
Il a donc fallu s’attarder sur une reconstruction complète de la structure du drone. Il est
important de noter que la structure est composée de deux parties : le "down" et le "upper"
body.
Pour la partie basse, la nouvelle ossature est fortement basée sur l’ancienne. Les modifications
apportées sont :
— l’élargissement des trous pour les vis des quatres moteurs.
— l’ouverture et l’élargissement des trous pour les vis reliant le "down" et "upper"
body, assurant ainsi une meilleure liaison entre les différents composants amenant
ainsi à une meilleure stabilité en vol.

Ci-dessous vous trouverez la modélisation, sur SolidWorks, de cette pièce.

Figure 3 – Down Body

13
Pour le haut, il a fallu repenser également au design de la pièce. En effet, l’ "upper
body" initial ne tenait que très peu à la structure du dessous. Cela étant dû au fait qu’elles
étaient toutes deux reliées par des colsons mais également par des "tiges" en plastique et
non des vis. Tout cela n’offrant que très peu de stabilité au drone.
Les "améliorations" apportées par ce nouveau design étaient donc bien plus pratiques qu’aé-
rodynamiques (un projet de Ma1 méca a pour but d’améliorer les capacités aérodynamiques
du drone). Les nouveautés présentes sur le nouveau haut sont donc :
— une extrusion plus profonde et large des trous, permettant donc aux vis d’offrir une
meilleure stabilité pour l’entièreté des composants du drone. Mais également de
pouvoir se "débarasser" des colsons. Ceux-ci étant peu esthétiques et peu pratiques.

Tout comme le "down body", vous trouverez ci après le modèle SolidWorks de cette pièce.

Figure 4 – Upper Body

3.2 Assemblage
Les différents composants du drone sont les suivants :
— Les 4 moteurs : RacerstarRacing BR1103B
— Hélices à 4 pales
— Carte de contrôle des moteurs : SucceX-E 45A
— Carte de Vol : SucceX-E F405
— Un récepteur radio : FrSky D4R-II
— La batterie : Lithium-Polymère 7,4 V
— Un condensateur : 470 µF

Le condensateur, placé en parallèle avec la batterie, empêchent les perturbations des


composants constituant les cartes. Ces perturbations sont notamment dues aux bruits
électriques causés par les moteurs. La mise en rotation des moteurs s’explique de la façon
suivante : lorsque du courant est injecté dans les bobines constituant les différents moteurs,
cela a pour effet de créer un champ magnétique qui tend à s’opposer aux aimants des
moteurs permettant la mise en rotation de ces derniers. Le drone est commandé à partir
d’une télécommande RC (Radio Commande) connectée à distance au récepteur radio "FrSky
D4R-II". Via un canal SBUS en PPM, les données sont transférées du récepteur radio à la
carte de vol via le port RX de la carte.

14
4 Présentation du logiciel Betaflight
Betaflight est un logiciel libre[12] permettant de configurer les paramètres de vol d’un
drone de A à Z. En effet, il offre énormément de réglages accessibles via une interface facile
d’utilisation. Par exemple, beaucoup de modes sont présents afin de faciliter certains aspects
de vol. Dans cette section, les hypothèses sur les modes vont être posées et l’interface du
logiciel va être présentée.

4.1 Hypothèses
Dans le logiciel Betaflight, de nombreux modes sont activables ou non par l’utilisateur
permettant ainsi de meilleures sensations en vol, aidant l’utilisateur à faire voler le drone
"correctement". Par exemple, voici deux exemples de modes pouvant être intéressants :
"Anti-gravity mode", "AirMode". Le premier empêche le drone de tourner trop fort lors
d’accélérations rapides et le second permet une stabilisation plus poussée du drone grâce à
un PID supplémentaire. [4] Lors de ce projet, toutes ces fonctionnalités ont été désactivées
dans le but de se focaliser uniquement sur l’étude pure des PID du drone. En effet, en
activant les modes, différents filtres ou différentes structures s’ajoutent aux PID de base,
modifiant alors les résultats et ne permettant pas de bien comprendre le fonctionnement
intrinsèque des PID. Il pourrait tout de même être intéressant de pousser la recherche
plus loin et d’ajouter des fonctionnalités au drone pour finalement comprendre le système
"Drone" dans son entièreté.

4.2 Interface
Dans cette section, l’interface de Betaflight va être présentée. Ce sera principalement
l’interface "Réglages de PID" qui sera mise en avant car, sans grande surprise, elle contient
tous les curseurs permettant à l’utilisateur de customiser les contrôleurs. Voilà donc le
tableau permettant de gérer les PID ainsi que l’interface permettant d’activer certains mode
directement liés aux PID. Les figures ci-après (FIGURE 5 et 6) 3 représentent l’interface
des réglages de PID dans le logiciel Betaflight.

Figure 5 – Interface Betaflight "Réglages des PID"

3. Betaflight

15
Figure 6 – Interface Betaflight "Réglages des PID"

Ci-dessus se trouvent une partie des modes se référant aux PID, il peut être intéressant,
dans une étude plus poussée, de les activer et d’étudier le système en les prenant en compte.

5 Analyse des PID


Tout d’abord, il faut savoir que les contrôleurs PID sont indispensables dans un drone.[17]
En effet, un PID[18] est défini comme étant un contrôleur permettant d’améliorer les
performances d’un système en boucle fermée. Autrement dit, il applique automatiquement
une correction précise et réactive à une fonction de contrôle. Concrètement, dès qu’un
drone est déséquilibré à cause d’un évènement extérieur, les contrôleurs PID vont entrer
en jeu pour corriger ce déséquilibre et restabiliser le drone. L’objectif de cette partie est
donc, premièrement de rappeler les concepts théoriques des PID et, deuxièmement d’étudier
comment sont implémentés les contrôleurs PID dans le logiciel afin de comprendre les
réglages liés à ces derniers dans le but de les paramétrer de manière optimale.

5.1 Etude théorique d’un PID


L’équation général d’un contrôleur Proportionnel-Intégral-Dérivé est donné par :
1 + pTi 1 + pTd
CP ID (p) = Gc
pTi 1 + pλTd

— Gc représente le facteur de proportionnalité
— Ti est la constante de temps d’intégration
— Td exprime la constante de temps de dérivation

Il est important de noter que λ < 1.


La FIGURE 7 représente le schéma bloc d’un contrôleur PID implémenté en série dans le
logiciel simulink de matlab.

16
Figure 7 – Schéma bloc d’un contrôleur PID en série

Principe de calcul
Pour ce faire, un dimensionnement par l’approche fréquentielle du contrôleur est néces-
saire. Cela donne :
1 + jωTi 1 + jωTd
CPID (jω) = Gc
jωTi 1 + jωλTd

La détermination des paramètres du PID revient à calculer Gc , Ti et Td . Pour cette méthode,


les hypothèses principales sont que :

les spécifications des contraintes temporelles pour le système corrigé sont connues.

Démarche pour atteindre un système corrigé grâce à un contrôleur PID


Pour se faire il faut choisir une valeur α a priori (α = TTdi ) ; choisir une pulsation wc de
correction et donc le choix d’un point de départ ; et choisir un point cible P dans le tracé
de Black-Nichols.
Le choix de la valeur α est généralement fixée à 10 4 . C’est en effet une valeur typique pour
ce paramètre. Cependant, une adaptation de sa valeur peut se faire en fonction du problème
rencontré.
Le choix du point cible P peut se faire de manière intuitive. Cependant, dans le plan
de Black, P sera préférentiellement choisi de manière à obtenir une courbe CGs G1 G2
minimisant le dépassement en |M |max . Aussi, le choix du point cible sera tel que |M |w=0 =
0 dB entraînant une erreur de régime nulle (bon fonctionnement de l’action intégral). Mais
également afin d’obtenir une bande passante élevée et donc que ω sera grand en |M |ω=0 -3
dB.
L’argument de Cpid (jw) doit se trouver entre −90◦ et ϕamax par rapport au point cible
P. ϕamax , trouvable dans des abaques, est fonction de α et λ. Il vient donc un gamme de
valeurs admissibles pour ω, comprise entre ωmin et ωmax . Ces deux valeurs de pulsations
résultent de l’interception de la droite passant par −90◦ du point cible ; et +ϕamax du point
cible (respectivement) avec la courbe Gs G1 G2 .

4. [5] [6]

17
La figure (FIGURE 8)[6] ci-dessous montre un exemple de correction, dans le plan de
Black, de la courbe caractéristique du modèle.

Figure 8 – Principe de correction de la courbe Gs G1 G2

La courbe corrigée sera donc Gs CG1 G2 où "C" représente le contrôleur type PID
précédemment implémenté.
Toutes ces différentes corrections auront pour effet de diminuer le dépassement, le temps
d’intégration et de dérivation. Par contre, le temps de montée, quant à lui, verra sa valeur
augmenter. Le but d’un contrôleur PID est donc de minimiser les oscillations du signal de
sortie autour de la consigne et donc espérer une convergence plus rapide de la sortie vers
cette consigne entraînant une erreur de régime nulle.

18
Rôle des différentes parties du PID

Figure 9 – Bloc P-I-D en parallèle

Le schéma ci-dessus (FIGURE 8) 5 montre l’implémentation d’un contrôleur PID en


parallèle. Dans ce schéma bloc, l’équation du contrôleur est la suivante :
 
1 pτd
Cparallèle = Kp 1 + +
pτi 1 + pλ2 τd
   
tel que τi = Ti 1 + Ti
(1−λ)Td
; τd = Td 1
(1−λ)Td − λ ; Kp = GTCi τi ; λ2 = λT
τd
d
1+ Ti

— La partie proportionnelle de ce type contrôleur crée une erreur entre le point de


consigne souhaité et la valeur de sortie afin de sortir la réponse proportionnelle.
Si aucune erreur n’est présente dans le modèle, aucune réponse corrective sera
d’application. 6
— La partie intégrale joue le rôle d’éliminateur de l’erreur résiduelle en l’intégrant. Une
fois l’erreur éliminée, ce terme cesse de croître. La partie intégrateur peut cependant
être non souhaitée si sont tolérées des erreurs de commande ou de perturbation.
Parfois, les exigences sur le temps de réponse sont trop élevées. Cela impliquera donc
une grande sollicitation des actionneurs et leurs limites de fonctionnement de sortie
seront donc potentiellement atteintes. Il s’agit dès lors d’un phénomène de saturation
de l’actionneur provoquant un emballement de l’action intégrale : wind-up[6]. Cela se
traduit par un traînage de la réponse et d’un dépassement sur la réponse indicielle.
Cette dernière caractéristique provient du fait que le signal d’erreur devient négatif
afin de ramener la commande à sa valeur de régime. [8]
5. [5] [6]
6. [13] [8] [13]

19
— Le terme dérivé correspond à une meilleure approximation future de l’erreur entre la
consigne souhaitée et la valeur réelle de la sortie.

5.2 Etude du code source de Betaflight


Betaflight étant un logiciel Open Source, il est facile d’accéder à son code source via le
site de Betaflight citeBetaflightCodeSource. De plus, il est à noter que le code est rédigé
dans le langage C++. Les parties les plus importantes du code seront disponibles dans
l’annexe du rapport. (cfr. annexe 1).
Quatre contôleurs PID [14] sont implémentés dans le logiciel, un contrôlant l’altitude
Z du drone et 3 autres contrôlant les 3 angles ϕ (PITCH), θ (ROLL) et ψ (YAW) liés
respectivement aux 3 axes de rotations (X, Y, Z) possibles du drone. Ces quatres régulateurs
ont des valeurs de base implémentées par le logciel et modifiables par l’utilisateur. Il est
d’ailleurs souvent recommandé de les modifier car elles sont généralement obsolètes menant
à un drone instable. On retrouve donc dans la TABLE 1, les valeurs par défaut proposées
par le logiciel Betaflight.

20
P I D
Z 50 50 75
ROLL 42 85 30
PITCH 46 90 32
YAW 45 90 0

Table 1 – Valeurs initiales modifiables par l’utilisateur

L’utilisateur a donc le choix de modifier ces réglages dans une certaine plage de valeurs
comprise entre 0 et 200 pour chaque partie du PID[3].
N.B : les résultats liés à ces valeurs seront analysés un peu plus loin dans la partie 5.4
Interprétation des résultats

De plus, ces termes modifiables par l’utilisateur sont multipliés par des facteurs imposés
par Betaflight et non modifiables cette fois-ci, permettant une optimisation des contrôleurs.
Les valeurs de ces derniers sont repris dans le tableau suivant (voir TABLE 2) :

P 0.032029
I 0,244381
D 0,000529

Table 2 – Termes multiplicatifs imposés par Betaflight

Type de PID
Dans le code Betaflight, ce sont des PID à 2 degrés de liberté parallèles 7 qui ont été
implémentés dont voici l’équation et le schéma (voir FIGURE 10) :

d(cr − y)
Z
u = KP .(br − y) + KI . (r − y).dT + KD .
dT
7. [9] [10] [21]

21
Figure 10 – Structure des PID

Remarque : Il est à noter que le système étudié est en discret et que l’équation présentée
ci-dessus est en continu[7].
Un des avantages de ce genre de contrôleur est qu’il permet de répondre à de rapides
perturbations sans augmentation significative du dépassement. De plus, ce type de PID
possède les facteurs b et c multipliant respectivement le signal d’entrée de la partie propor-
tionnelle et intégrale. Ceux-ci sont modifiables dans les systèmes mais vu que dans ce cas-ci
tous les modes ont été désactivés par hypothèses, ces termes multiplicatifs sont fixés à 1, ce
qui nous rapporte donc à un PID plus classique.

Equation de la partie Proportionnelle


Dans le code source[20], nous pouvons trouver le partie proportionnelle "P". Celle-ci est
donnée par l’expression :

P = 0.032029.p.(br − y)

— 0.032029 est un facteur imposé par Betaflight.
— p est la valeur, comprise entre 0 et 200, à entrer sur Betaflight par l’utilisateur.
— b=1
.

Equation de la partie Intégrale


L’expression de la partie intégrale "I" est donnée par :

I = I0 + 0.244381.i.(r − y)


— 0.244381 est un facteur imposé par Betaflight.

22
— i est la valeur, comprise entre 0 et 200, à entrer sur Betaflight par l’utilisateur.
— I0 est le terme intégral de l’instant précédent.

Equation de la partie Dérivée


L’expression de la partie dérivée "D" est donnée par :

d(cr − y)
D = 0.000529.d.
dt

— 0.000529 est un facteur imposé par Betaflight.
— d est la valeur, comprise entre 0 et 200, à entrer sur Betaflight par l’utilisateur.
— c=1

5.3 Implémentation du système sur Simulink


Dans Betaflight, les PID sont implémentés de façon discrète. Or, le système comportant
les fonctions de transfert que nous utilisons sont en continu. Dès lors, un bloc faisant la
transition entre l’analogique et le numérique, nommé Zero-Order Hold, a du être rajouté.
Les PID ont pu, ensuite, être ajoutés en suivant la structure présentée dans la section 5.2
"Etude du code source de Betaflight : Type de PID". Pour pouvoir correctement calculer nos
contrôleurs, il est nécessaire de trouver les fonctions de transfert de notre système linéaire.
Pour ce faire, il existe une équation présentée dans le cours Advanced Control, avec laquelle
on peut obtenir une matrice de fonction de transfert du système linéarisé s’écrivant :

G(S) = C · (S · I − A)−1 · B + D

où les matrices A, B, C et D sont introduites dans la section 2 Modèle mathématique, où S


représente la variable de Laplace et I la matrice identité. En résolvant cette équation sur
Matlab (voir annexe 2), on obtient les fonctions de transfert du système sur la diagonale
d’une matrice G :  8,92 
s 2 0 0 0
 0 17500 0 0 
G=  s2 
15860
0 0 s2
0 
9891
0 0 0 s2
Cette matrice étant de dimension 4x4, possède 4 termes sur sa diagonale, de telle sorte que
chacun des ces termes, étant une fonction de transfert, correspondent aux variations de
l’altitude Z et des 3 angles ϕ, θ et ψ respectivement selon les 4 actions T, τx , τy et τz . Ainsi,
on peut "construire" le système sur Simulink dont voici le schéma 8 (voir FIGURE 11) :
8. [10] [21] [9] [7]

23
Figure 11 – Schéma Simulink du système.

5.4 Interprétation des résultats avec les valeurs initiales de Beta-


flight
Les quatres prochaines figures correspondent aux réponses temporelles des quatres PID
du drone implémentés avec les valeurs initiales proposées par Betaflight. Différentes analyses
vont être effectuées afin de comprendre comment améliorer ces réponses pour optimiser nos
régulateurs.

24
Réponse temporelle du PID "z"

Figure 12 – Réponse temporelle du PID "z".

Dans la figure ci-dessus (FIGURE 12), on peut facilement conclure que le PID lié à
l’altitude est instable étant donné que la courbe diverge. Il faut se souvenir que ce PID a
des valeurs imposées par Betaflight. Dès lors, les résultats pour ce PID, démontrés dans la
prochaine section, seront des améliorations proposées pour améliorer le capteur mais ils ne
seront pas modifiables directement sur l’interface du logiciel.
L’instabilité de ce PID peut être expliquée par le fait qu’il y a deux intégrateurs dans la
fonction de transfert et 1 de plus dans le contrôleur, il faudrait donc, peut-être, annuler le
terme intégral dans le PID.

25
Réponse temporelle du PID "Roll"

Figure 13 – Réponse temporelle du PID "Roll".

Ci-dessus (voir FIGURE 13), on peut observer la réponse temporelle du PID "Roll".
Plusieurs caractéristiques sont à retenir. Tout d’abord, le temps de montée est très court.
Ensuite, puisque la valeur de régime voulue est 0.1 rad, on peut calculer le dépassement.
En effet, vu que la valeur maximale atteinte par la courbe vaut 0.10039 rad, on trouve
un dépassement valant 0.39 %. Celui-ci déjà très bas mais on souhaite le minimiser au
maximum, ce qui sera tenté d’être fait dans la prochaine section. Pour finir, on peut observer
un temps d’établissement valant 1.6 sec.

26
Réponse temporelle du PID "Pitch"

Figure 14 – Réponse temporelle du PID "Pitch".

Dans le cas du PID "Pitch", sa réponse temporelle (voir FIGURE 14) a une allure
similaire à celle du régulateur précédent. La consigne vaut aussi 0.1 rad. C’est-à-dire que
l’on souhaite une rotation de 0.1 rad autour de l’axe "Y". Dès lors, la courbe est caractérisée
par un dépassement valant 0.00059
0.1
.100 = 0.59% et par un temps de montée très court, de
l’ordre du millième de seconde. De plus, son temps d’établissement s’élève à environ 1.3
sec. Pour finir, l’erreur de régime est nulle puisque la courbe atteint la valeur demandée
initialement.

27
Réponse temporelle du PID "Yaw"

Figure 15 – Réponse temporelle du PID "Yaw".

Ci-dessus (voir FIGURE 15) se trouve la courbe de la réponse temporelle du PID


correspondant à la rotation autour de l’axe "Z". L’échelon de consigne vaut aussi 0.1 rad. La
réponse idéale serait une courbe avec de bonnes caractéristiques telles qu’un dépassement
pas trop élevé et des temps de montée et d’établissement pas trop long. Ce n’est pas ce qui
est observé ici. En effet, la réponse temporelle diverge vers l’infini traduisant une instabilité
du régulateur PID. Il va donc falloir trouver les valeurs du PID pour lesquelles le contrôleur
se stabilise et les rentrer directement sur Betaflight.

Conclusion
Grâces aux résultats obtenus précédemment, différentes conclusions peuvent être tirées.
Tout d’abord, les valeurs définies par Betaflight ne correspondent pas au bon fonctionnement
de nos PID. Ceci peut-être expliqué par le fait que ce logiciel est conçu pour tout type
de drone. Le notre étant assez petit, il est normal que les valeurs indiquées par Betaflight
soient mauvaises. Logiquement, il faudra diminuer celles-ci afin de diminuer la "force" des
changements faits par le PID. C’est donc ce qui sera fait dans la prochaine section.

28
5.5 Interprétation des résultats avec les valeurs optimales des PID
Dans cette section, ce seront les réponses temporelles des PID dont les valeurs ont été
modifiées afin d’avoir un contrôleur optimal, présentant les meilleures caractéristiques. Le
dimensionnement des contrôleurs consiste à calculer les coefficients en fonction de plusieurs
critères : la stabilité de la boucle, l’erreur de régime et les performances en régime transitoire,
c’est-à-dire le dépassement, le temps de montée et le temps d’établissement. Pour cela, il
faut se rappeler de l’impact qu’a chaque partie d’un PID lorsqu’on le modifie. Tout cela est
décrit dans le tableau suivant (TABLE 3) :

Gain Tmontée Tétablissement Dépassement Erreur de régime


Kp ↗ Diminue Augmente Augmente Diminue
Ki ↗ Diminue Augmente Augmente Annule
Kd ↗ − Diminue Diminue −

Table 3 – Impact de l’augmentation des différents gains

A partir du tableau ci-dessus et en essayant plusieurs valeurs pour les différentes parties du
PID, on va pouvoir déterminer de meilleures caractéristiques pour les contrôleurs. Dans la
section 5.1 Etude théorique d’un PID, une méthode permettant d’améliorer les performances
d’un régulateur PID a été présentée. Celle-ci utilisait les courbes de Black avec lesquelles
un vecteur de correction était calculé. Dans cette section, le choix des paramètres a été fait
de manière empirique.

Réponse temporelle du PID "Z"


Avec les valeurs initiales du PID "z", on obtenait des performances instables. En modifiant
les différents gains (voir TABLE 4), le système se stabilise et donne la réponse suivante
(FIGURE 16) :

29
Figure 16 – Réponse temporelle du PID "Z".

Avec les valeurs qui suivent, les performances s’améliorent donc comme mentionné au-
dessus. Tout d’abord, au niveau des différents temps, on obtient un temps de montée valant
0.2149 sec grâce à la formule suivante : Tm = T90% − T10% = 0.3292 − 0.1143 et un temps
d’établissement égal à 2.78 sec. Ensuite, au niveau du dépassement, celui-ci atteint les
12.7 %, il est un peu élevé mais cela reste le plus bas possible pour avoir un bon équilibre
avec toutes les autres performances. Pour finir, on obtient une erreur de régime valant
1 − 0.9972 = 0.0028 m. On obtient donc des performances assez correctes pour ce PID,
même si elles pourraient être meilleures en modifiant toutes les caractéristiques intrinsèques
imposées par Betaflight.
P I D
ROLL 35 1 150

Table 4 – Valeurs modifiées dans Betaflight pour Z

Réponse temporelle du PID "Roll"


Pour ce PID, étant donné que les performances étaient assez bonnes avec les valeurs initiales
de Betaflight, les changements n’auront pas un grand impact sur les nouvelles performances
du PID. En effet, en imposant les valeurs suivantes dans Betaflight (TABLE 5) :
P I D
ROLL 30 50 34

Table 5 – Valeurs modifiées dans Betaflight pour ϕ

30
Nous obtenons une réponse temporelle telle que (FIGURE 17) :

Figure 17 – Réponse temporelle du PID "Roll".

On peut donc recalculer les différentes performances. Tout d’abord, le temps de montée
étant déjà très faible de base, les changements ne l’impacteront qu’infiniment peu. On
partira donc du fait que le temps de montée avec les valeurs initiales est égal à celui-ci.
Ensuite, au niveau du dépassement, on observe que celui-ci a légèrement baissé, puisqu’il
atteint maintenant 0.29 %. Pour ce qui est du temps d’établissement et de l’erreur de
régime, il n’y a pas de changements significatifs à relever.

Réponse temporelle du PID "Pitch"


Au niveau du PID "Pitch", la démarche d’amélioration des performances va être assez
similaire à celle du PID précédent. En effet, les performances étant assez correctes, les
changements n’impacteront que très peu ces dernières. En appliquant donc une consigne de
0.1 rad avec des valeurs de PID suivantes (TABLE 6) :

P I D
PITCH 45 60 54

Table 6 – Valeurs modifiées dans Betaflight pour θ

31
Dès lors, on obtient le graphique suivant :

Figure 18 – Réponse temporelle du PID "Pitch".

Dans ce cas-ci (voir FIGURE 18), le dépassement passe de 0.59 % à 0.10021−0.10000


0.1000
.100 =
0.21%. Cependant, cela applique un inconvénient, le temps d’établissement augmente,
passant de 1.3 sec à 1.8 sec (la courbe oscille encore très légèrement après 1.8 sec, mais
les variations sont tellement faibles qu’on peut les considérer comme nulles). Il faut donc
faire un compromis entre les 2 paramètres afin de répondre au mieux aux attentes de la
situation. De plus, grâce à ces paramètres, l’erreur de régime obtenue est nulle. Pour finir,
le temps de montée étant encore une fois très faible, il n’y a pas de changements significatifs
à mettre en avant.

Réponse temporelle du PID "Yaw"


Pour ce qui est du contrôleur "Yaw", avec les valeurs initiales de Betaflight, le système était
instable. En modifiant cette valeur, celui-ci devient stable. Pour une consigne de 0.1 rad, et
avec des valeurs de PID suivantes (TABLE 7) :
P I D
YAW 9 7 30

Table 7 – Valeurs modifiées dans Betaflight pour ψ

32
La réponse temporelle suivante est obtenue (FIGURE 19) :

Figure 19 – Réponse temporelle du PID "Yaw".

Les performances obtenues sont très correctes. En effet, premièrement, comme pour chaque
PID, le temps de montée est très court. Ensuite, le dépassement atteint 0.0957 %, le temps
d’établissement vaut 4 sec et l’erreur de régime est infime, pouvant être considérée égale à
0.

Conclusion
Pour conclure avec cette section, il est évident que les paramètres de base de Betaflight
sont inadéquats pour les PID "Z" et "Yaw" et sont améliorables pour les 2 autres PID.
De plus, on observe que pour la plupart des gains, il faut les diminuer pour que ceux-ci
correspondent à notre drone. En effet, puisque Betaflight a été codé pour tout type de
drone, il a fallu faire une "moyenne" sur les valeurs proposées afin de correspondre au plus
de drones possible. Etant donné que celui étudié lors du projet est assez petit et léger,
puisqu’il ne possède pas de caméra par exemple, les PID devront être paramétrés avec des
valeurs pas trop élevées au risque d’avoir des contrôleurs trop "puissants", déstabilisant
ainsi le drone. Pour finir, les performances obtenues avec les valeurs imposées par Betaflight
ne sont pas les plus optimales possibles, il faudrait les implémenter indépendamment du
logiciel pour assurer des performances calquées sur le modèle de notre drone et non sur un
ensemble de modèles.

33
6 Conclusion
L’objectif de ce projet était de comprendre la manière dont les contrôleurs PID sont
implémentés dans le logiciel Betaflight. Ceux-ci sont de types 2DOF (2 degrees of freedom),
mais se rapportent à des régulateurs classiques au vu des hypothèses qui ont été posées.
Ensuite, le second objectif était d’implémenter ces contrôleurs sur Simulink afin d’étudier
leurs paramètres dans le but de les améliorer afin d’avoir des performances optimales sur le
drone. En effet, Betaflight est un logiciel permettant de configurer tout type de drone. Les
valeurs de PID initiales qu’il propose sont donc une moyenne de valeurs afin de correspondre
à tous les drones menant ainsi à des réponses non-optimales ou pire, à des instabilités. Il a
donc fallu, de manière empirique, trouver les valeurs les plus adaptées à notre drone, en
étudiant les courbes avec différentes valeurs de gain. Un autre objectif "second" est venu se
greffer en cours de projet. En effet, la structure de base n’était pas la plus optimale. Il a
donc fallu remodéliser tout le drone afin que les liaisons entre les différentes partie soient
solides.
Dans une recherche plus étendue, il est possible de pousser la réflexion plus loin en réduisant le
nombre d’hypothèses simplificatrices. Effectivement, toute une gamme de modes, désactivés
dans notre cas, proposée par Betaflight, pourrait être pris en compte dans le système,
permettant ainsi d’encore mieux comprendre le fonctionnement interne du drone dans le
but de pouvoir peut-être "soi-même" implémenter des PID sans passer par un logiciel tel
que Betaflight.
L’outil "Betaflight Blackbox Explorer" [11] est un logiciel à partir duquel des modifications
apportées pour une meilleure sensation en vol peuvent être implémentées. Ce logiciel
complémentaire à Betaflight permet d’ajouter de potentiels filtres applicables à partir des
données enregistrées lors des essais en vol.[1] Les filtres proposés par cet outil permettent
notamment d’amoindrir les signaux bruités reçus au niveau du contrôleur de vol. Ces filtres
font en sorte que les moteurs ne sur-réagissent pas aux diverses oscillations des signaux
ébruités évitant entre-autre leur surchauffe.

34
Bibliographie

[1] (1133) Betaflight Filter Settings 1: BLACKBOX EXPLORER | Easy Tuning Method
- YouTube. url : https://www.youtube.com/watch?v=zl9qCsTGPTk&t=4s.
[2] Advanced Control : Drone project-Solution.
[3] BetaFlight 3.2 : tuning PID, théorie et pratique - WE are FPV. url : https :
//www.wearefpv.fr/betaflight-3-2-reglages-pid-20170918/.
[4] Betaflight 3.4 | drivers, installation, flashage, paramétrage | Débutant drone FPV -
YouTube. url : https://www.youtube.com/watch?v=r1rCUmRrPMo&t=3s.
[5] Commandes des Procédés - Compléments Contrôleurs.
[6] Commandes des Procédés - Contrôleurs.
[7] Continuous-time or discrete-time two-degree-of-freedom PID controller - Simulink
- MathWorks France. url : https://fr.mathworks.com/help/simulink/slref/
pidcontroller2dof.html.
[8] Contrôleur PID. url : https://stringfixer.com/fr/PID_loop.
[9] Create 2-DOF PID controller in parallel form, convert to parallel-form 2-DOF PID
controller - MATLAB pid2 - MathWorks France. url : https://fr.mathworks.com/
help/control/ref/pid2.html.
[10] Design Two-Degree-of-Freedom PID Controllers - MATLAB Simulink - MathWorks
France. url : https://fr.mathworks.com/help/slcontrol/ug/designing-two-
degree-of-freedom-pid-controllers.html.
[11] GitHub - betaflight/blackbox-log-viewer: Interactive log viewer for flight logs recorded
with blackbox. url : https://github.com/betaflight/blackbox-log-viewer.
[12] Home · betaflight/betaflight Wiki · GitHub. url : https://github.com/betaflight/
betaflight/wiki.
[13] NinjaFlight: PID tuning. url : https://mkschreder.github.io/ninjaflight/md_
docs_PID_tuning.html.
[14] PID C++ implementation · GitHub. url : https://gist.github.com/bradley219/
5373998.
[15] Process Complexity Multiple Input and Multiple Output (MIMO) variables.

35
[16] Project-Advanced control.
[17] Quadcopter PID Explained - Oscar Liang. url : https : / / oscarliang . com /
quadcopter-pid-explained-tuning/.
[18] Régulateur PID — Wikipédia. url : https://fr.wikipedia.org/wiki/R%C3%
A9gulateur_PID.
[19] Francesco Sabatino. Quadrotor control: modeling, nonlinear control design, and
simulation. 2015.
[20] The Betaflight Open Source Flight Controller Firmware Project · GitHub. url :
https://github.com/betaflight.
[21] Two-Degree-of-Freedom PID Controllers - MATLAB Simulink - MathWorks France.
url : https://fr.mathworks.com/help/control/ug/two-degree-of-freedom-
2-dof-pid-controllers.html.

36
Annexes

37
1 Code Source Betaflight

Figure 20 – Facteurs multiplicatifs imposés par Betaflight

Figure 21 – Equations des PID

38
2 Code Matlab
2.1 Matlab Function

39
2.2 Drone.m

40

Vous aimerez peut-être aussi