Bonjour,
Depuis peu, je me suis pris d'affection pour ces drones que l'on nomme quadricoptères. Fort des cours d'automatique que j'ai pu avoir durant mes années d'étude, j'aimerais aujourd'hui les mettre en pratique pour réaliser (théoriquement) la partie asservissement d'un quadricoptère.
Je souhaiterais faire une approche théorique simplifiée d'un quadricoptère de type X.
1. Introduction
Voici le schéma représentant le drone et ces moteurs :
drone.png
Le système dispose de 3 types de capteurs :
Capteur gyroscopique sur les 3 axes X, Y et Z mesurant l'inclinaison du drone
Capteur accéléromètrique sur les 3 axes X, Y et Z mesurant l'accélération du drone
Capteur altimétrique mesurant la hauteur du drone par rapport à un référentiel fixe, le sol par exemple.
Pour cette étude théorique, aucun aspect matériel n'est pris en compte, poids du drone, type de moteur, provenance des capteurs...etc Nous résonnerons dans un monde idéal.
Une fois l'approche théorique validée, alors les contraintes physiques, environnementales, électroniques pourront être ajoutées.
2. Objectif
L'objectif de l'étude est de mettre en place un asservissement permettant de maintenir le drone en vol stationnaire à une altitude fixe. Le drone doit donc ne pas tourner sur lui-même, ne pas dériver, ne pas avoir de roulis et rester à altitude fixe.
3. Postula de départ
Afin de simplifier l'étude, on considère les points suivants :
-le drone est stable sur ces axes de lacet (Z) et de tangage (Y) : seul le roulis (X) est à asservir
-le drone ne subit pas d'accélération sur les axes Z et X : seul l'accélération en Y est à asservir -> dérive droite/gauche donc.
4. Asservissements
4.1. Asservissement en hauteur
La partie la plus "simple" consiste à asservir la hauteur. La hauteur du drone se règle en variant la vitesse de rotation des 4 moteurs de la même manière. Ainsi, pour augmenter la hauteur, on augmente les gaz des 4 moteurs de la même manière, pour diminuer la hauteur du drone, on diminue les gaz des 4 moteurs de la même manière.
Le schéma suivant peut être utilisé :
pid-h.png
On obtient la commande moteur cmd_h_all qui s'applique aux 4 moteurs.
4.2. Asservissement en inclinaison
Pour régler l'inclinaison du drone, il faut agir par paire de moteur. Par exemple, si le drone penche de 5° sur la gauche, il faut augmenter les gaz des 2 moteurs de droite et diminuer les gaz des 2 moteurs de droite. Bien entendu, on augmente les gaz des moteurs d'une paire de la même manière.
Le schéma suivant peut être utilisé :
pid-angle.png
On obtient deux commande : cmd_angle_G et cmd_angle_D qui agissent respectivement sur les moteurs (1) (2) et (3) (4)
4.3. Asservissement en accélération
En cas de rafale de vent latérale, le drone va glisser dans le sens du vent et subir une accélération en conséquence. Par exemple, si une bourrasque arrive sur la droite du drone, celui-ci va dériver sur la gauche. Pour compenser cette accélération, il faut agir, encore une fois, par paire de moteur. Si le drone dérive vers la gauche, il faut augmenter les gaz de la paire gauche et diminuer les gaz de la paire droite.
Le schéma suivant peut être utilisé :
pid-acc.png
On obtient deux commande : cmd_acc_G et cmd_acc_D qui agissent respectivement sur les moteurs (1) (2) et (3) (4).
A noter que les commandes d'accélération et d'angle sont dépendantes. En effet, pour corriger un glissement latéral, il faut incliner le drone dans l'autre sens afin qu'il reprenne sa position initiale.
Nous avons maintenant toutes nos commandes moteur pour cette étude simplifiée.
Pour le moteur (1) par exemple, les commandes suivantes s'appliquent :
-cmd_h_all
-cmd_angle_G
-cmd_acc_G
5. Mes questions
Mes questions sont les suivantes :
Mon approche théorique simplifiée est-elle correcte ou suis-je complètement à côté de la plaque ?
Comment faire pour obtenir une seule commande pour chaque moteur à partir de 3 commandes ? Somme ? Multiplexage ? Logique combinatoire... ?
Je n'ai pas l'habitude de rédiger de cahier des charges, si vous pensez qu'il manque des informations, n'hésitez pas à me le signaler et j'étoferai.
Merci de m'avoir lu et bonne journée![]()
-----