Académique Documents
Professionnel Documents
Culture Documents
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
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.
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
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.
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
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(ϕ)
Θ̇ = 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 ϕ θ ψ ;
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(θ)
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
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(θ)
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
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
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
Tϕ
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
ẋ = A · x + B · u
y =C ·x+D·u
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.
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.
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
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.
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.
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
les spécifications des contraintes temporelles pour le système corrigé sont connues.
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.
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
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.
20
P I D
Z 50 50 75
ROLL 42 85 30
PITCH 46 90 32
YAW 45 90 0
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
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.
P = 0.032029.p.(br − y)
où
— 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
.
I = I0 + 0.244381.i.(r − y)
où
— 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.
d(cr − y)
D = 0.000529.d.
dt
où
— 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
G(S) = C · (S · I − A)−1 · B + D
23
Figure 11 – Schéma Simulink du système.
24
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"
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"
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"
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) :
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.
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
30
Nous obtenons une réponse temporelle telle que (FIGURE 17) :
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.
P I D
PITCH 45 60 54
31
Dès lors, on obtient le graphique suivant :
32
La réponse temporelle suivante est obtenue (FIGURE 19) :
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
38
2 Code Matlab
2.1 Matlab Function
39
2.2 Drone.m
40