Retour sur BETAFLIGHT et l’Air Mode

La grande majorité des pilotes utilise cleanflight et baseflight ou open pilot . Vous le savez. Pourtant un nouveau firmware apparu sur cleanflight pourrait bien s’imposer en pointant du doigt quelques  » faiblesses  » du dernier firmware. Ainsi qu’en ajoutant de nouvelles fonctionnalités comme le flashage des ESC via cleanflight et la suite logicielle BLheli, en binôme. Voyons les changements en détails puis consultons l’avis d’un spécialiste, kenny9999. Qui validera ou pas les progrès de ce nouveau firmware. Nous allons passer en revue ce que Boris B lui même appelle la plus grande découverte faite grâce à betaflight : l’air mode. Une nouveauté qui ouvre bien des perspectives.

Nous vous expliquerons tout en 3 niveaux de compréhension :

  1.   pour ceux qui sont experts de la programmation et des FC niveau 1
  2.   pour ceux qui sont familiers avec les MEMs, les processeurs et le codage niveau 2
  3.   pour ceux qui veulent une explication simple niveau 3

Il sera aussi question d’amélioration de la procédure de failsafe, notament en PWM. Il semblerait qu’en PWM on ne pouvait pas choisir failsafe «  sans délai « . Alors qu’en PPM oui. Betaflight corrigerait bientôt ce problème. Est-ce le cas après des mois de tests ? A voir avec vous, les pilotes.

Betaflight est un firmware cleanflight qui existe pour différentes cartes de vol. Comme ceci.

Voici les cartes pour lesquelles ce firmware a été testé :
Naze32 rev4 and rev5
CC3D
Colibri Race / The cube
SpracingF3 / Dodo
Sparky
Motolab Tornado F3

 

Niveau 1

Les améliorations sont logicielles et basées pour certaines sur l’amélioration de la communication entre les composants, c’est à dire des processeurs et les MEMs. D’autres sont des corrections; par exemple certaines opérations retarderaient le  » control loop  » en mode acro. Avec betaflight les réactions de la carte, donc du quadri, devraient être encore améliorées.

Some parts of proccessing are not being done efficiently like accelerometers reading when flying acro mode, which was delaying the control loop. With this firmware disabling accelerometers is not anymore necessary.

 

D’autre part, il y aurait une désynchronisation entre le gyro et le loop ( une boucle de programme ).  Betaflight corrigerait la désynchronisation en donnant la priorité aux valeurs du gyro :

Gyro update is leading the loop. The loop will start after interrupt is triggered for new gyro sample. The PID controller will always be doing the calculation of the most fresh gyro value.

 

Le mode acro est celui qui est privilégié par les programmeurs de betaflight. Ils ne négligent pour autant pas les modes stabilisés. Enfin les applis mobiles comme Ezgui et Configurator qui servent notamment à piloter les modules Bluetooth restent compatibles. L’utilisation d’un cable usb OTG reste possible avec un téléphone sous Android.

– Synchro gyro avec les valeurs de gyro les plus récentes, avec un délai réduit entre l’acquisition des données et le départ de la boucle de programme
– Overclocking du bus 12c pour des communications plus rapides avec le sensor MPU6000 où se situent les gyros et acceleros.
–  filtre Gyro FIR préconfiguré pour moins d’erreurs vers le contrôleur PID
–  Calcul et filtrage du D optimisé pour une précision accrue du Dérivatif  ( PID )
– Réglages par défaut des PID1 et PID2 améliorés
– Plus nécessaire de désengager l’ ACC pour obtenir les mêmes performances sur les Alienwii F1. Les valeurs du gyro passant en priorité en mode acro .
– Meilleure gestion des taches pour minimiser l’effet de gigue sur les moteurs. ( gigue = fluctuation du signal.  enfin j’espère… ).
–  Oneshot125 compatible avec le fast PWM ( utile si vous désirez un taux de rafraichissement des ESC jusqu’à 4 khz)
– Réglages par défaut des PID1 et PID2 adaptés à la plupart des machines
– moteurs et ESC moins chauds grâce aux filtres optimisés

Nouveautés version 2.20 et plus : 

– suppression du looptime
– depuis la version 2.2.0, si on désactive l’accéléromètre et le gyro, on peut atteindre un looptime de 500 sur les FC F1. Sur les F3 on peut atteindre ce looptime sans désactiver les capteurs. F1 à F4 sont les séries des processeurs STM32, le cerveau des FC. 

J’ai traduit au mieux et je pense ne pas avoir dis de grosses bêtises. Voici le texte original au cas, fort probable, ou vous seriez meilleur que moi pour comprendre. N’hésitez pas à me corriger dans les commentaires. je rectifierai.

Vous trouverez betaflight sur githu, ici .

Voici aussi les liens à copier coller car nous connaissons parfois des dysfonctionnements. ( Hooo  !! Mais quel magnifique texte  ve– la looptime est supprimée, il va aussi vite qu’il peut
– depuis la version 2.2.0, si on désactive l’accéléromètre et le gyro, on peut atteindre un looptime de 500 sur les FC F1. Sur les F3 on peut atteindre ce looptime sans désactiver les capteurs.rt qui n’agresse pas du tout les yeux…). 

Liens :

  • https://github.com/borisbstyle/betaflight/releases/
  • https://dl.dropboxusercontent.com/u/…betaflight.zip

La procédure d’installation est sur l’excellent blog oscarliang. Et sur la vidéo ci dessous ( les pid utilisés par le monsieur sont persos, notamment l’expo ) :

 

Voici l’explication schématique détaillée du fonctionnement des firmwares natifs de cleanflight ( image 1 ) puis celle de betaflight ( image 2 ) :

image 1

 

 

 

 

 

 

 

 

 

 

image 2
image 2

 

 

 

L ‘avis de kenny9999

Niveau 2

Kenny possède les compétences pour juger des améliorations apportées par betaflight. Il a déjà codé des FC et voici son point de vue en québecois :

 

Il y a des améliorations, c’est sur. Mais à quel point je ne sais pas. Pourtant les résultats sont là. Certaines choses sont logiques mais d’autres moins. Le point à souligner, c’est l’augmentation de la rapidité de la loop principale de contrôle qui lit le gyro, calcule le PID et contrôle les moteurs.

Avec la version précédente du firmware de cleanflight, 1.9, et probablement la 1.10, le minimum que j’avais réussi  à obtenir avec un bon résultat en baissant le control loop, c’était 1500 sur une naze32. Cependant, j’avais quand même des problèmes d’ajustement sur le D ou j’avais trop de I… mais je pense que c’était plus le D. La naze32 a un processeur Arm cortex F1, depuis qu’ils ont sortit les dodo, je m’en sers, et j’ai réussi a avoir une performance incroyable, avec cleanflight 1.9 avec une loop de 1000.
Boris B, a réussi à optimiser le processing pour faire en sorte que l’on puisse rouler la loop a 1000 sur un naze32.
En gros, pour être le plus stable possible en acro, on doit lire le gyro, calculer les pid et contrôler les moteurs. Le plus vite possible, c’est la principale amélioration que je vois. Avec la naze32, le plus bas possible fonctionnant pas trop mal était ( pour moi) 1500. Soit un update rate aux moteurs de 666Hz. On arrive à 1Khz avec betaflight ( j’ai même cru voir 2 Khz sur une vidéo ).
A noter que ces modifications s’appliquent seulement au contrôleur PID 1 et 2, (Rewrite et Luxfloat).
La choses principale qu’il a enlevé dans les contrôleurs PID, c’est un genre de moyenne sur le D-Term qui était fait sur les 2 dernières itérations. C’est logique vu que le processing se fait beaucoup plus vite, on ne traîne pas une erreur avec la moyenne mais on l’applique directe à la loop courante. Le reste… me semble pareil, au niveau du code.
C’est beaucoup plus clair expliqué par kenny9999. Ça n’intéressera pas forcément tout le monde mais ça valide en grande partie les promesses de betaflight. Et les premières impressions des pilotes l’ayant essayé vont aussi dans ce sens.
On remercie BorisB et Kenny pour leurs travaux respectifs.

Pour résumer

Niveau 3

Ce firmware est basé sur une optimisation des calculs, des communications entre les composants et la mise en place de filtres. L’air mode est un mode de vol supplémentaire obtenu par betaflight au prix d’intenses réflexions. Bref, betaflight c’est plus mieux.

Un peu de recul

Cela fait quelques jours maintenant que je recueille les témoignages de pilotes ayant installé betaflight.
Le moins que l’on puisse dire c’est que les éloges pleuvent. Un membre de la team MVA m’a confié que son Quad à littéralement changé de comportement de vol. En mieux.
Je vais donc franchir le pas et referai un topo pour vous, les gens qui lisent. Merci d’ailleurs. Non mais parce que c’est du boulot vous comprenez… et des fois vous lisez pas tout…. et le prix des fruits et légumes, c’est plus possible !

L’air mode :

Voici deux vidéos qui sont plus parlantes que n’importe quelle explication. Nous tenterons malgré tout d’expliquer ce mode de vol particulier.

Une rapidité de réaction affolante

Vidéo en vol avec télémétrie complète

Air mode et Idle Up

L’Idle Up est un mode de vol qui nous vient de l’hélico. Bien que j’ai pratiqué un peu, je ne suis pas un spécialiste. Je vais donc me borner à énoncer ce dont je suis à peu près sûr.

L’idle Up est une courbe des gaz particulière affectée à un inter dont on se sert en hélico pour que les gaz ne tombent pas à zéro quand on baisse le manche des gaz à fond ou pour inverser le pas. Impossible d’atterrir avec ce mode activé, en hélico. Enfin si c’est possible mais avec un inter alors.

Mais l’hélico n’est pas géré par une carte de vol. Le problème de cette dernière si j’ai bien compris, c’est que si les gaz sont à zéro le quad considère qu’il n’est pas en vol et ne stabilise pas. C’est à dire que les moteurs ne réagiront pas à vos sollicitations.  Le multi ne fonctionne pas non plus en acro. Impossible par exemple d’utiliser le yaw avec les gaz à zéro. Ce qui nous prive de mouvements fort sympathiques.

Ce mode peut avoir des conséquences sur la façon d’armer votre racer. Il se peut qu’en activant l’air mode sans paramétrer une protection que votre quad décolle immédiatement après avoir armé. Pourquoi ? Car l’air mode activé, votre machine pense qu’elle vole alors que non.

Ce mode permet une plus grande réactivité des réactions. On peut passez des flips  et des rolls sans que tous les moteurs tournent.  Ce qui était impossible avant. Skitzo dans ses freestyles se sert de l’élan de sa machine. L’air mode lui permet d’enchaîner une boucle alors que les gaz sont à zéro. Ou de jouer sur le lacet.

beaucoup de recul

Quelques mois ont passé et bien des pilotes volent sous betaflight. Alex l’a installé sur la CC3D de lAnakin vendu sur la boutique. Tous disent que le changement est flagrant. Je vais bientôt essayer et nous verrons cela. A savoir que c’est le mode acro qui est privilégié par ce firmware. Voici un lien qui détaille quelques-uns des tous derniers changements.


24 commentaires Ajoutez les votres
  1. les derniers schéma sont des schémas XML ! (je bosse la dessus touts les jours pour la petites histoire :))
    Est ce que le firmware est développé en C++ ?

  2. Le firmware n est pas developpé chez canal plus. non.
    Serieusement je ne sais pas si c est du c++. Ca n est pas indiqué mais c est certainement le meme langage que le firmware natif qui lui est en C++. Ce me semble en tout cas.

    1. j’ai regardé sur le repository GIT, c’est du C 🙂
      Du coup, ils utilisent juste l’UML pour modéliser l’algorithme.
      A la base, l’UML permet de définir l’ensemble des scénario possible avant le début de la partie développement brut. Il y a même des software UML qui permettent de générer automatiquement le squelette d’une application afin de partir sur une bonne base de développement 🙂 Je suis architecte software 🙂

      1. Waouw. Ca depasse completement mes competences. J espere ne pas avoir dis de betises dans l article mais je ne crois pas. J ai traduit la page du programmeur

  3. Frédéric Giacomaggi => le loop c’est la boucle infinie principale du programme.

    En arduino voila a quoi ressemble un programme simple:
    => les librairies, les variables, l’initialisation et la boucle infinie

    #include
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    void setup() {
    lcd.begin(16, 2);
    lcd.print(« hello, world! »);
    }

    void loop() {
    lcd.setCursor(0, 1);
    lcd.print(millis() / 1000);
    }

      1. C’est pas simple d’expliquer comment écrire un programme, mais bon 🙂
        voici un lien vers la doc arduino
        http://playground.arduino.cc/French/Loop

        « Après avoir créé une fonction setup(), qui initialise et fixe les valeurs de démarrage du programme, la fonction loop () (boucle en anglais) fait exactement ce que son nom suggère et s’exécute en boucle sans fin, permettant à votre programme de s’exécuter et de répondre. Utiliser cette fonction pour contrôler activement la carte Arduino.  »

        et

        « La fonction loop() est obligatoire, même vide, dans tout programme.
        Pour comprendre : les habitués du C seront surpris de ne pas trouver la classique fonction main() obligatoire dans tout programme C. En fait, la fonction setup() et la fonction loop() sont implémentées au sein de la fonction main() (Voir dans le répertoire arduino le fichier \hardware\cores\arduino\main.cxx) qui est appelée en premier lors de l’exécution de tout programme en C, langage sur lequel est basé le langage Arduino.  »

        => l’arduino est fort fort proche du langage C

        🙂 j’espère que c’est plus clair

        1. Merci. Tant que j’ai pas dis de bêtises ça va. Sinon prière de me le dire pour rectifier. Surtout que la traduction était difficile

  4. Il faut tester pour le croire.
    J’ai fait deux de mes machines un Spider Hex et un ZMR , l’un en Naze32 l’autre en CC3D et bien mes machines n’ont jamais volé comme çà.. c’est juste hallucinant aux PID stocks

  5. Petites corrections:
    – il n’y a pas d’overclocking du processeur
    – la looptime est supprimée, il va aussi vite qu’il peut
    – depuis la version 2.2.0, si on désactive l’accéléromètre et le gyro, on peut atteindre un looptime de 500 sur les FC F1. Sur les F3 on peut atteindre ce looptime sans désactiver les capteurs.
    Pour moi ce point est au moins aussi importent que l’air mode.

    Et je confirme que stock, ça vole tout de suite mieux qu’avec Cleanflight. J’avais même un multi que je n’arrivais pas à régler (PID) et avec betaflight il est devenu sain instantanément ! Le réglage des PID est donc plus simple !

  6. L’Air mode qui « permet une plus grande réactivité des réactions. On peut passez des flips et des rolls sans que tous les moteurs tournent. Ce qui était impossible avant.  »
    Tout à fait possible avant, il suffisait de décaler un peu le bas de la courbe de gaz sur la radio à l’aide d’un inter, ce que certains faisaient déjà… rien de bien spécial 🙂

  7. Le bus 12C n’existe pas, c’est le bus i2c, c’est pas la même ligne. Plus sérieusement c’est un protocole (pas protologue) de communication utilisé entre les composant d’une même carte.

  8. ce qui est sur, c’est que ce mode est une vrai aide au pilotage, en particulier pour la stabilité de la machine en free style et lors des reprise en sortie de figure.essayer c’est l’adopter !

  9. Petite correction : avec un hélico 3D, on peu très bien atterrir en Idle Up. Le principe c’est juste de faire tourner le rotor à un régime stabilisé. on ne gère l’altitude qu’en changeant l’incidence des pales. ensuite on coupe les gaz avec un inter « throttle hold ».
    A+

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *