PID Toolbox


Introduction

PID Toolbox est un logiciel intégrant un ensemble d'outils graphiques d'analyse des données BlackBox de Betaflight ou Butterflight. Il permet de visualiser l'effet des réglages, et ainsi d'optimiser les performances ou caractéristiques de vol d'un quadcopter freestyle, racer ...

PID Toolbox : Github
Wiki PID Toolbox : Wiki

La notation BF est utilisée pour dire Betaflight & Butterflight. FC pour Flight Controleur ou contrôleur de vol

Installation

Sous windows (Version 64 bits nécessaire)
Télécharger la dernière version de PID Toolbox : PID Toolbox releases
Décompresser le fichier .zip dans un répertoire.
Executer MyAppInstaller_web.exe (répertoire runtime_installation_file)
Choisir le répertoire d'installation de PID Toolbox.
Le logiciel va installer PID Toolbox ainsi que les bibliothèques Matlab (Téléchargement des fichiers Matlab)
Télécharger ensuite BlackBox Decode : Blackbox tools releases
Décompresser le fichier .zip et copier blackbox_decode.exe dans le répertoire PID Toolbox/application.

Configuration Betaflight / Butterflight

Installer la carte SD dans le slot de la FC. (SD Formatée)
Connectez la FC au PC et lancer l'application de configuration BF.

Configuration BlackBox

Sélectionner le support d'enregistrement dans l'onglet Blackbox : SD
Régler la fréquence d'échantillonnage à 2Khz
Remarque : Certaines FC ne disposent pas de slot SDCard, mais d'une mémoire FLASH intégrée sur la carte FC.

Configuration du debug_mode.
Dans le CLI :
set debug_mode = GYRO_SCALED (permet d'enregistrer les donnnées gyro non filtrées et mis à l'échelle en degrés/s)
save

Filtrage des gyros

Les capteurs gyros sont très sensibles aux vibrations. Les signaux issus des gyro doivent être peu bruités afin de ne pas perturber le fonctionnement des boucles d'asservissement (PID).

Configuration hardware propre :

- Hélices neuves ou correctes
- Montage souple de la FC (ou gyros découplés sur la FC) et des moteurs (soft mount)
- Batterie LiPo ayant des résistances internes faibles.
- Moteurs en bon états (roulements, axes ...)

Filtrage numérique des signaux des gyros.

Les multicopters sont des machines produisant des niveaux de vibrations importants. Même en ayant pris des précautions, (voir étape 1), les signaux seront porteurs de perturbations néfastes au bon fonctionnement.

Sur chacun des axes (Roll, Pitch, Yaw), une boucle d'asservissement (PID) calcule en permanence les commandes à affectuer pour réduire l'erreur entre la consigne de vitesse de rotation (position du manche de la radio commande, en mode acro) et la vitesse réelle de rotation mesurée par le capteur Gyro de l'axe concerné. Si le signal est bruité, la boucle d'asservissement est perturbée. Le coefficient D (du PID) associé à un signal bruité fait chauffer les moteurs et dans le cas pire peut les endommager.

Il faut donc s'assurer que les signaux des gyros soient corrects avant de se lancer dans le réglages des PID.

Pour cela, on peut conserver ou revenir aux réglages standards des PID de BF.

Les filtres

Activer 'Dynamic Filter' et désactiver les autres filtres 'notch'

Le 'Dynamic Filter' ou 'Dynamic Notch Filter' est un filtre coupe bande. Le logiciel analyse en permanence les signaux gyros afin de trouver le pic de signal entre 150 et 600hz (selon configuration dyn_notch_quality). Le filtre est centré sur ce pic de bruit en temps réel pour une efficacité maximale.
Ce filtre dynamique permet de désactiver les filtres 'notch' statiques.

Le vol

Réaliser un vol en mode acro :
- Une partie en stationnaire, par exemple en début de vol, par exemple pendant 10s.
- Une partie en déplacement lineaire en augmentant progressivement les gaz jusqu'au maximum.

Récuperer le fichier .bbl .bfl sur la carte SD (ou télécharger la FLASH de la FC)

PID Toolbox

Lancer PID Toolbox et charger le fichier log du vol.
PID Toolbox permet de charger 2 fichiers (A et B) afin réaliser des comparaisons entre essais (modification du filtrage, ou PID ...). Charger le fichier en A
Appuyer sur LOAD + RUN
Le fichier est chargé et affiché dans l'écran principal.
Il est possible de réduire la zone de traitement en saisissant les temps de début et de fin, à droite. (Suppression du choc d'atterrissage, réduction du temps de calcul)

Appuyer sur 'spectrogram'
Sélectionner : Gyro unfilt (A) et Gyro (A) sur 2 des 4 zones de sélection.

Affichage 3D

Le 'subsampling' permet de limiter la quantité de données traitées pour réduire les temps de calcul au détriments de la précision du résultat.

Appuyer sur RUN. Le temps de calcul peut être relativement long, en fonction de la taille du fichier et de la puissance du PC.

Résultats

Les résultats peuvent-être observés sous 2 formes : 2D ou 3D

Nota :
Les signaux ci-dessous sont issus de mon Quadcopter IFlight XL5 sous Butterflight 3.6.6 sur FC Matek F405-STD. (Dynamic filter, Kalman, BiQuad par défaut.)

En 2D : Niveau de vibration en fonction de la fréquence. (A gauche Gyros filtrés, à droite signaux Gyros bruts.)

Affichage 2D

En 3D : Niveau de vibration en fonction de la fréquence et de la position de la commande de gaz. (A gauche Gyros filtrés, à droite signaux Gyros bruts.)

Affichage 3D

Fréquences des signaux :

F < 20hz : mouvements commandés du quad (Pilotage ou correction du contrôleur de vol).
de 20 hz à 150hz : propwash, mid throttle oscillations ou autres vibrations indésirables.
de 150hz à 600hz : vibrations moteurs variant en fonction de la commande des gaz.

Analyse des graphiques 2D

Signaux non filtrés (à droite):
- Les 3 axes ne sont pas affectés de la même façon par les vibrations.
- Il y a un pic assez net à environ 180hz. (Vibrations moteurs)
- Les vibrations sont visibles jusqu'à environ 700hz.

Signaux filtrés (à gauche):
- Le filtrage est très efficace et supprime quasiment tout le bruit de 100hz à 700hz.
- Les mouvements commandés et basse fréquences ne semblent pas affectés.

Analyse des graphiques 3D

- On voit nettement en 3D sur les signaux non filtrés, la trace en diagonale du bruit des moteurs dont la fréquence augmente avec la commande des gaz.
- Les différentes lignes parallèles et plus faibles sont des harmoniques.
- Le filtrage est très efficace, les signaux filtrés sont propres, il ne subsiste que les mouvements commandés.

Le filtre dynamique est très efficace pour éliminer ce pic de bruit qui se déplace en fonction du régime moteur.

Nota : Pour avoir le signal diagonal complet, il faut bien évidemment avoir fait un vol utilisant toute la course des gaz ....

Réglage du filtre dynamique

Pour un quadcopter peu bruité, il est possible de réduire l'efficacité du filtre dynamique, car le filtrage introduit de la latence :

Le paramètre 'dyn_notch_quality' défini l'excursion en fréquence du filtre :
La valeur 70 correspond à 240hz à 300hz
La valeur 5 correspond à 150hz à 600hz (à reserver aux quadcopter très propres avec un pic de bruit des moteurs très net, le risque étant que le filtre ne se centre pas sur la bonne fréquence.)

Le paramètre 'dyn_notch_width_percent' défini la largeur de bande du filtre en %.
Par exemple, à 20% si le filtre se centre sur 300hz, il couvrira 240hz à 360hz.

Les paramètres par défauts sont assez 'protecteurs' (pour eviter d'endommager les moteurs) et induisent une latence significative. C'est pour cela qu'il peut être intérressant de réduire le filtrage.

Paramètres par défaut, adapté à un quad très bruyant :
set dyn_notch_quality = 70
set dyn_notch_width_percent = 50

Quad moyennement bruyant :
set dyn_notch_quality = 15
set dyn_notch_width_percent = 30

Quad très peu bruyant :
set dyn_notch_quality = 5
set dyn_notch_width_percent = 20

Commande 'save' après modifications dans CLI.

ATTENTION : Si pendant les tests, avec un filtrage réduit, les moteurs chauffent, il faut revenir à un filtrage plus important.

Réglage des PID

PID Toolbox permet de visualiser la réponse à un échelon du quadcopter sur chacun des axes par déconvolution.
L'objectifs est de réaliser des vols avec différentes configurations de P, I et D, afin d'observer les résultats sur ces réponses calculées. Chaque vol peut avoir une durée de 30s à 60s, et doit enchainer des mouvements sur les 3 axes en mode acro. (Nouveau fichier log Blackbox pour chaque séquence armement/désarmement.)
L'idéal est de pouvoir faire les réglages directement sur la radiocommande par un script LUA, ou dans l'OSD des lunettes ...
Il est à noter que PID Toolbox trace des courbes soit pour des rotations ≤500°/s ou >500°/s. Pour obtenir, les secondes courbes il faudra donc aussi réaliser des mouvements avec de forts taux de rotation.

Exemple de tracés : (2 enregistrements A et B, avec PID différents, ≤500°/s)

PID

Il est à noter l'allure spécifique de la réponse sur l'axe Yaw, qui est normale, car cet axe est beaucoup moins efficace.

L'objectif est d'obtenir une réponse avec une montée assez rapide, centrée sur le niveau 1, sans trop de dépassement (overshoot) et peu d'oscillations.

Sur l'image animée suivante (Source : Wikipédia ), on peut voir l'effet de chacun des paramètres P, I et D.

PID animation

Méthode de réglage :

Séquence P

Le but est d'observer la réponse du quadcopter aux évolutions de coefficients P sur les 3 axes.
Pour mieux visualiser l'effet de P, on peut baisser I et D. Attention, avec des coefficients bas, le quadcopter peut être difficile à controler !

Si le PID par défaut est 40 40 20
Commencer par exemple avec P = 30 (avec I = 30, D = 15)
Augmenter P de 5 à chaque vol jusqu'à P = 55 sans modifier I et D.

Exemple de graphes, sur Roll pour 2 valeurs de P différentes (I et D fixes)

P differents

Coté gauche PID = 40, 35, 20, le dépassement est faible, et peut probablement être corrigé en augmentant D.
Coté droit PID = 55, 35, 20, le dépassement est important, il faut probablement diminiuer P.

Choisir P
Si D a une valeur pas très faible, il faut déjà choisir une courbe avec un dépassement pas trop important (par exemple 10% à 15%) et pas trop d'oscillations.
Une fois une valeur de P choisi pour chaque axe.

Ajuster I
Si l'erreur 'statique' est importante, c'est à dire si la courbe ne converge par vers 1. Il faut remonter I.
Le fait de remonter I peut produire plus d'oscillations.
Si la réponse comporte beaucoup d'oscillations sur la partie droite de la réponse, I est probablement trop élevé.

Exemple : I un peu trop élevé; Plateau sur la montée et oscillations

P differents

Avec P et I sensiblements corrects, on passe à D.

Avec le P choisi et une valeur fixe de I. Faire des vols en augmentant D de 5 en 5 jusquà 40 maximum, et en vérifiant la température des moteurs, surtout pour les D élevés. Sélectionner D pour avoir peu ou pas de dépassement et d'oscillations.

Résultat d'un réglage correct (Pitch ou Roll) : Peu de dépassement, peu d'oscillations, niveau plateau autour de 1 :

P differents

Résultat d'un réglage correct (Yaw) :

P differents

Affiner ...

Ensuite, il est possible d'affiner les réglages, par de petites variations (1 ou 2) :
- Dépassement : baisser P / augmenter D
- Trop amorti : augmenter P / baisser D
- Mauvaise convergenge vers 1 : Augmenter I (Augmenter I peut provoquer des oscillations.)
- Plateau sur la montée ; Baisser I

Compléments

Certains paramètres de BF peuvent modifier les valeurs P, I et D de façon transitoire.

Antigravity

Lorsque 'Antigravity' est activé, la valeur des I est multiplié par un coefficient (Anti Gravity Gain) lors des variations rapides de la commande des gaz, afin d'améliorer la stabilité.
Le réglage peut se faire dans l'onglet 'PID Tuning' de BF : 'Anti Gravity Gain' et 'Anti Gravity Threshold'
Anti Gravity Gain = coefficient multiplicateur de I.
Anti Gravity Threshold = Seuil d'activation : La commande de gaz variant de 1000 à 2000, 350 représente donc 35%.

TPA (Throttle PID Attenuation)

Le TPA a pour objectif de pouvoir utiliser des réglages PID relativement agressifs pour verrouiller le quadcopter, tous en évitant les oscillations dues aux commandes 'plein gaz'.
Pour ce faire, le TPA baisse les coefficients PID de façon proportionnelle à la commande des gaz à partir d'un seuil de cette même commande.
TPA breakpoint : Seuil de la commande de gaz : 1500 = 50% de la commande (1000 à 2000)
TPA = atténuation : 0.1 = 10% à plein gaz.

Si après avoir correctement réglé les PID, on obtient des oscillations à plein gaz, il est alors nécessaire de régler le TPA (15%, 20% ...), et son seuil d'activation.

Le TPA ne modifie que les PID Roll et Pitch, le Yaw n'est pas impacté.

Depuis juin 2005