Open Modular Drone - TIRREX Project

Version 1.0.1

Site de ressource pour l'assemblage et l'utilisation des drones Tirrex

ESC

Page sur les ESC (electronic speed controleur) qui comme leur nom l’indique ne font pas forcément une vrai régulation du vitesse…Pourtant, en première approximation, la force générée par le propulseur est proportionnelle au carré de sa vitesse de rotation. Revue des différentes technologie testées et utilisées dans la communauté.

BLHeli

Différentes versions BLHeli (historique), BLHeli S (open source en assembleur), BLHeli 32 (Fermé) Avantage: Beaucoup de hardaware disponible, compatible avec beaucoup de contrôleur de vols. protocoles supportés : PWM, DSHOT, DSHOT + télémétrie, DSHOT bidirectionnel. Dshot : retour info sur vitesse : courant / tension mais frequence assez faible, telemetrie sur un autre cable : fonctionne mais rajoute des cables, pas très adapté Dshot bidirectionnel –> a chaque envoie une réponse télémetrie, dispo sur betafligth mais pas sur px4 Dshot bidirectionnel n’existe pas sur px4, mais utilisé sur betaflight pour filtrer les IMU Inconvénient: Pas de contrôle sur la vitesse en boucle fermé interne de base. La vitesse réelle du moteur dépend de la charge de la batterie.

Il existerai historiquement une version en boucle fermée mais où? R. KIEFFER évoque des travaux utilisant des ESC en boucle fermée avec le firmware BLHeli ou WII ESC sur variateurs hobbyking. A creuser https://code.google.com/archive/p/wii-esc/source/default/source

J. DUMON évoque une solution en boucle fermée non interne à l’ESC mais avec Betaflight et bidirectional DSHOT. Il existe aussi des projets open source d’ESC sur Betaglight. https://github.com/betaflight/betaflight-esc https://github.com/betaflight/BLHeli_S

Investigations sur BLHELI en cours au Gipsa-lab, on mettra a jour les informations sur le wiki, rubrique ESC.

solutions avec bouclage externe

  • Jacques GANGLOFF (Icube) a developpé une solution de régulation de vitesses propulseur pour son robot dexter, basé sur ESC Kiss (et BLHELI?) et arduino, puis une carte intégrée controle de vole+ESC sous bétaflight.

solutions avec modification de firmware

Firmware AM32

Le firmware opensource AM32 https://github.com/AlkaMotors/AM32-MultiRotor-ESC-firmware a été testé au GIPSA-Lab. Des modifications ont été faites pour améliorer le bouclage en vitesse et paramétrer le firmware (gains PID, activation du mode RPM). Les codes modifiés sont disponibles ici :

Ce firmware est compatible avec tous les esc basés sur le microcontrolleur STM32 F051, ces modèles en particuliers ont étés utilisés au GIPSA-Lab :

  • HGLRC T-Rex 35A 3-6s
  • ReadyToSky 35A 2-5s
  • HGLRC 4 en 1 3-6S

solution avec le protocole UAVCAN

  • ESC UAVCAN (voir présentation jointe) Tout le code est ouvert https://github.com/PX4/sapog Avantage: régulation en boucle fermée interne à l’ESC, logiciel open source, cablage sous forme de chaine can (assez propre et robuste) Inconvénient: Pas de dev sur le firmware depuis 5 ans, peu de hardware disponible, vistesse maximale plus limitée que les ESC “classique” Il y a des deveoppements en cours coté protocole UAVCAN, mais pas sur l’ESC en lui même. hardware testé ESC 20A “Kottleta 20”: https://www.studiosport.fr/kit-de-4-esc-kotleta20-holybro-a23650.html , 280€TTC les 4 chez studiosport Mesures au Gipsa: 13000 tours/minutes maximum pour un moteur 14 poles magnétiques vitesse un peut juste pour des drones avec propulseur 5 pouces et 6 pouces, plus adaptés à partir de 7 pouces à priori Pour 5 pouces, trouver un moteur avec moins de poles magnétiques permettrait de fonctionner avec toute la gamme de propulseurs

Définition d’un ESC idéal pour notre groupe recherche UAV

Il est nécessaire de développer notre propre firmware pour disposer des fonctionnalités dont nous avons besoin pour les drones. A minima la régulation en vitesse retours vitesse, courant tension, idéalement température, le tout à une fréquence “élevée” supporté par px4 betaflight et ardupilote et potentiellement FOC Freinage actif et recharge batterie mode régulation de courant plusieurs hardware dispo (compatible BLHELI ou au moins gammes 20A-40A et 15 A 4en1)

Il est possible de financer un stage par TIRREX sur le sujet, encadré dans l’une des entités enregistrés dans Tirrex (procédure administrative à voir avec J. DUMON)

En l’état, la solution Firmware AM32 décrite plus haut semble être celle qui est la plus proche de cet objectif : maitrise du code, plusieurs hardwares compatibles testés encore en vente (03/2023), bouclage ne vitesse jusqu’à 24000tr/min, protocole pwm ou dshot

ESC Open Hardware

Pour assurer la compatibilité hardware / firmware, il pourrait être intéressant de concevoir un esc en open hardware. Plusieurs pistes à explorer :

sujets annexes

Sujet annexe - Modèle de groupe motopropulseur plus complet J. DUMON décrit des avancées au GIPSA sur la simulation du groupe (ESC + Moteur que l’on peut déjà partager) mais reste les simulation aérodynamiques des propulseurs. Un stage pfe a démarré sur ce sujet: modèle propulseur poussée en fonction de vitesse de rotation et son interaction avec un flux d’air “parasite”

Une piste de départ son les travaux de l’ETHZ basés sur The True Role of Accelerometer Feedback in Quadrotor Control Philippe Martin, Erwan Salaun https://hal.archives-ouvertes.fr/hal-00422423v1/document Initialement développé comme un plugin Gazebo, ce modèle est utilisé dans la simulation gazebo de PX4 SITL depuis de nombreuses années. Il a été intégré dans Ignition Gazebo (le remplaçant de Gazebo). https://github.com/ignitionrobotics/ign-gazebo/blob/c08fc87e2b965ab388f6dc4a74f8668213ecae8f/src/systems/multicopter_motor_model/MulticopterMotorModel.cc Un exemple de fichier avec les paramètres disponibles peut être trouvé ici https://github.com/ignitionrobotics/ign-gazebo/blob/ign-gazebo6/examples/worlds/quadcopter.sdf L’identification des paramètres sur un groupe motopropulseur réel reste un challenge.

-Paramétrage de PX4 pour que la commande soit homogène à une vitesse de rotation au carré et non une vitesse de rotation: Thrust to motor control signal model parameter : Parameter used to model the nonlinear relationship between motor control signal (e.g. PWM) and static thrust. The model is: rel_thrust = factor * rel_signal^2 + (1-factor) * rel_signal, where rel_thrust is the normalized thrust between 0 and 1, and rel_signal is the relative motor control signal between 0 and 1.

Ressources et échanges: Réunion UAV-tech sur les ESC du 23/03/2022 Présents : Damien SIX (LS2N),Daniel SIDOBRE (LAAS), Amaury NEGRE (GIPSA),Jonathan DUMON (GIPSA),Thomas PAVOT (ICUBE INSA Strasbourg),Renaud KIEFER (ICUBE INSA Strasbourg),Martin LEFEBVRE (ICUBE INSA Strasbourg)

Last updated on 6 Jan 2025
Published on 6 Jan 2025
 Edit on GitHub