Nous continuons une série d'articles sur l'automatisation des performances de la voltige aérienne sur un petit drone. Cet article a, tout d'abord, un objectif pédagogique: nous montrons ici comment créer le système de contrôle automatique (ACS) le plus simple en utilisant l'exemple de la tâche d'effectuer la voltige «baril» lors du contrôle d'un avion avec seulement des ailerons. Cet article est le deuxième d'une série de publications «Flight UAV», qui décrit le processus de construction de pièces de matériel et de logiciels de canons automoteurs sous forme de formation.

Lien vers l'article précédent du cycle:
1. «Vol UAV. Comment faire un baril "Contenu:
PrésentationModèle de mouvementParamètres du modèle. Moment d'inertieParamètres du modèle. Dérivés du moment de roulisVérification du modèleSynthèse de contrôle pour la performance du canonExpérience de volRemarquesConclusionsPrésentation
Nous avons donc décidé de mettre en œuvre le «baril» en mode automatique. Evidemment, pour l'exécution automatique d'une figure, il est nécessaire de formuler la loi de commande correspondante. Le processus d'invention sera beaucoup plus indolore et plus rapide si vous utilisez un modèle mathématique du mouvement de l'avion. Le test de la loi de commande dans une expérience de vol, bien que possible, nécessite beaucoup plus de temps, et il peut être beaucoup plus cher en cas de perte ou d'endommagement de l'appareil.
Étant donné qu'aux petits angles d'attaque et de plané de l'avion, son mouvement de roulis n'est pratiquement pas lié au mouvement dans deux autres canaux: la trajectoire et la trajectoire longitudinale - pour compléter un simple «canon», il suffira de construire un modèle de mouvement uniquement autour d'un axe - l'axe
OX du SC associé. Pour la même raison, la loi de commande des ailerons ne changera pas de manière significative lorsqu'il s'agit de créer un système de commande complet.
Modèle de mouvement
L'équation de mouvement de l'
avion autour de l'axe longitudinal
OX du SC associé est extrêmement simple:
où
Est le moment d'inertie autour de l'axe
OX , et le moment
se compose de plusieurs composants, dont pour une description réaliste du mouvement de notre avion, il suffit d'en considérer seulement deux:
où
- le moment dû à la rotation de l'aéronef autour de l'axe
OX (moment d'amortissement),
- le moment dû à la déviation des ailerons (moment de contrôle). La dernière expression est écrite sous forme linéarisée: moment de roulis
dépendant linéairement de la vitesse angulaire
et l'angle de déflexion des ailerons
à coefficients de proportionnalité constants
et
en conséquence.
Comme vous le savez (par exemple, de
Wiki ), une équation différentielle linéaire
correspond au lien apériodique de premier ordre
où
- fonction de transfert,
- opérateur de différenciation,
Est la constante de temps, et
- gagner.
Comment passer d'une équation différentielle à une fonction de transfert?Dans notre cas, des paramètres de l'équation aux paramètres de la fonction de transfert, nous pouvons procéder comme suit (sachant que la dérivée
négatif):
Pour le lien apériodique, la constante de temps
égal au temps pendant lequel la quantité de sortie
avec un seul effet de la quantité d'entrée
prend une valeur qui diffère de l'état d'équilibre de ~ 5%, et le gain
numériquement égal à la valeur en régime permanent de la valeur de sortie avec un effet de pas unique:
Il existe deux paramètres inconnus dans le modèle de mouvement construit: gain
et constante de temps
. Ces paramètres s'expriment à travers les caractéristiques du système physique: moment d'inertie
ainsi que des dérivés du moment de roulis
et
:
Ainsi, si le moment d'inertie est connu
puis, après avoir déterminé les paramètres du modèle, il est possible d'en restaurer les paramètres système.
Paramètres du modèle. Moment d'inertie
Notre avion se compose des parties suivantes: aile, fuselage à plumage, moteur, batterie (batterie) et
avionique :

L'avionique comprend: la carte de pilote automatique, la carte de récepteur
SNA , la carte de modem radio, la carte de récepteur de signal de l'équipement de commande, deux régulateurs de tension, un régulateur de vitesse du moteur et également des fils de connexion.

En raison du faible poids de l'avionique, sa contribution au moment d'inertie total peut être négligée.
Comment le moment d'inertie a-t-il été estimé?Estimation du moment d'inertie
peut être fait comme suit. Regardons le plan le long de l'axe
OX :

Et puis imaginez-le sous la forme du modèle simplifié suivant:
Schéma de calcul du moment d'inertie . En haut à gauche - la batterie, en bas à droite - le moteur. Le moteur et la batterie sont situés sur l'axe du fuselageOn peut voir que pour créer le modèle, la quille, la queue horizontale, la vis et l'avionique ont été jetées. Dans ce cas, restait: le fuselage, l'aile, la batterie, le moteur. En mesurant les masses et les dimensions caractéristiques de chaque pièce, on peut calculer les moments d'inertie de chaque pièce par rapport à l'axe longitudinal du fuselage:
- aile (tige mince):
- fuselage (cylindre creux):
- batterie (plaque):
- moteur (disque):
La valeur totale du moment d'inertie de l'aéronef par rapport à l'axe
OX est obtenue en additionnant les moments d'inertie des pièces:
Estimation de la contribution de chacune des parties de l'aéronef au moment d'inertie total
, il s'est avéré ce qui suit:
- aile - 96,3%,
- le fuselage - 1,6%,
- moteur et batterie - 2%,
On peut voir que la principale contribution au moment d'inertie total
fait une aile. Cela est dû au fait que l'aile a une taille transversale assez grande (envergure - 1 m):

Par conséquent, malgré le poids modeste (environ 20% de la masse totale au décollage de l'avion), l'aile présente un moment d'inertie important.
Paramètres du modèle. Dérivés du moment de roulis et
Le calcul des dérivées du moment de roulis est une tâche assez difficile associée au calcul des caractéristiques aérodynamiques des aéronefs par des méthodes numériques ou en utilisant des techniques d'ingénierie. L'application du premier et du second nécessite des coûts de temps, intellectuels et informatiques importants, qui se justifient dans le développement de systèmes de contrôle pour gros porteurs, où le coût d'erreur dépasse toujours le coût de construction d'un bon modèle. Pour la tâche de contrôle d'UAV, dont la masse ne dépasse pas 2 kg, cette approche n'est guère justifiée. Une autre façon de calculer ces dérivées est une expérience de vol. Compte tenu du bon marché de nos avions, ainsi que de la proximité d'un champ adapté à une telle expérience, le choix était évident pour nous.
Après avoir écrit le firmware dans le pilote automatique pour le contrôle manuel et l'enregistrement des paramètres, nous avons assemblé l'avion et l'avons préparé pour les tests:

Dans l'expérience de vol, il a été possible d'obtenir des données sur l'angle de déviation des ailerons et la vitesse angulaire de rotation de l'avion. Le pilote a contrôlé l'avion en mode manuel, volant en cercle, virages et «barils», et l'équipement de bord a enregistré et envoyé les informations nécessaires à la station au sol. En conséquence, les dépendances nécessaires ont été obtenues:
(deg / s) et
(b / p). Valeur
représente l'angle de déviation normalisé des ailerons: une valeur de 1 correspond à une déviation maximale, et une valeur de -1 correspond à un minimum:

Comment déterminer maintenant
et
à partir des données reçues? La réponse est de mesurer les paramètres transitoires sur des graphiques.
et
.
Comment les coefficients k et T ont-ils été déterminés?Gain
a été déterminée en affectant la valeur de la valeur en régime permanent de la vitesse angulaire à la valeur de la déviation de l'aileron:
Dépendances de l'angle de déviation des ailerons et de la vitesse angulaire de roulis dans le temps obtenues dans l'expérience de volDans la figure précédente, les sections de la valeur à l'état stationnaire de la vitesse angulaire correspondent approximativement, par exemple, aux segments proches des instants temporels 422, 425 et 438 s (marqués en rouge foncé sur la figure).
Constante de temps
déterminé à partir des mêmes graphiques. Pour cela, des sections d'un changement brusque de l'angle de déflexion des ailerons ont été trouvées, puis le temps a été mesuré pour lequel la vitesse angulaire prend une valeur qui diffère de la valeur en régime permanent de 5%.
Le résultat de la détermination des valeurs de la constante de temps et du gain est le suivant:
,
. Ces valeurs des coefficients avec une valeur connue du moment d'inertie
les valeurs suivantes des dérivées du moment angulaire correspondent:
Vérification du modèle
Donc, après avoir construit un modèle, dont la base est un lien apériodique
il peut être vérifié en appliquant un signal à l'entrée
obtenu à partir de l'expérience de vol et comparer le signal de sortie du modèle avec la valeur
également obtenu dans l'expérience.
Comment s'est déroulée la simulation?Nous avons choisi l'outil de modélisation, principalement, basé sur la possibilité de répéter les résultats par un large éventail de lecteurs: cela signifie principalement que le programme devrait être dans le domaine public. En principe, le problème de la modélisation du comportement de la liaison apériodique de premier ordre peut être résolu en créant votre propre outil à partir de zéro. Mais comme à l'avenir le modèle deviendra plus compliqué, la création de votre propre instrument peut détourner l'attention de la tâche principale - la création de canons automoteurs. Compte tenu du principe d'ouverture de l'outil, nous avons choisi
JSBsim .
Dans la section précédente, nous avons obtenu les valeurs des coefficients
et
. Nous les utilisons pour simuler le mouvement de l'avion. Du
dernier article, nous nous souvenons que la configuration du modèle d'avion dans
JSBsim est définie à l'aide d'un fichier
XML . Créez votre propre modèle:
<?xml version="1.0"?> <fdm_config name="OP1" version="2.0" release="BETA"> <metrics> <wingarea unit="M2"> 0.2 </wingarea> <wingspan unit="M"> 1.0 </wingspan> <chord unit="M"> 0.2 </chord> <htailarea unit="M2"> 0.03 </htailarea> <htailarm unit="M"> 0.5 </htailarm> <vtailarea unit="M2"> 0.03 </vtailarea> <vtailarm unit="M"> 0.5 </vtailarm> <location name="AERORP" unit="M"> <x> -0.025 </x> <y> 0 </y> <z> 0.05 </z> </location> </metrics> <mass_balance> <ixx unit="KG*M2"> 0.018 </ixx> <iyy unit="KG*M2"> 0.018 </iyy> <izz unit="KG*M2"> 0.018 </izz> <emptywt unit="KG"> 1.2 </emptywt> <location name="CG" unit="M"> <x> 0 </x> <y> 0 </y> <z> 0 </z> </location> </mass_balance> <ground_reactions> </ground_reactions> <propulsion> </propulsion> <flight_control name="FCS: OP1"> <channel name="Pitch"> </channel> <channel name="Roll"> <summer name="Roll Trim Sum"> <input>fcs/aileron-cmd-norm</input> <clipto> <min>-1</min> <max>1</max> </clipto> </summer> </channel> <channel name="Yaw"> </channel> </flight_control> <aerodynamics> <axis name="DRAG"> </axis> <axis name="SIDE"> </axis> <axis name="LIFT"> </axis> <axis name="ROLL" unit="N*M"> <function name="aero/coefficient/Clp"> <description>Roll_moment_due_to_roll_rate</description> <product> <property>velocities/p-aero-rad_sec</property> <value>-0.24</value> </product> </function> <function name="aero/coefficient/Clda"> <description>Roll_moment_due_to_aileron</description> <product> <property>fcs/aileron-cmd-norm</property> <value> 2.4 </value> </product> </function> </axis> <axis name="PITCH"> </axis> <axis name="YAW"> </axis> </aerodynamics> <output name="OP1.csv" rate="60" type="CSV"> <property> velocities/vc-kts </property> <property> aero/alphadot-deg_sec </property> <property> aero/betadot-deg_sec </property> <property> fcs/throttle-cmd-norm </property> <simulation> OFF </simulation> <atmosphere> OFF </atmosphere> <massprops> OFF </massprops> <aerosurfaces> ON </aerosurfaces> <rates> ON </rates> <velocities> ON </velocities> <forces> OFF </forces> <moments> OFF </moments> <position> ON </position> <coefficients> OFF </coefficients> <ground_reactions> OFF </ground_reactions> <fcs> ON </fcs> <propulsion> OFF </propulsion> </output> </fdm_config>
Étant donné que nous construisons un modèle du mouvement de l'appareil uniquement le long du rouleau, nous laisserons de nombreuses sections de fichier vides. Les caractéristiques suivantes sont définies séquentiellement dans le fichier modèle.
Les dimensions géométriques de l' avion sont définies dans la section
métrique : aire des ailes, envergure, longueur de la corde aérodynamique moyenne, aire de la queue horizontale, épaule de la queue horizontale, aire de la queue verticale, épaule de la queue verticale, position du foyer aérodynamique.
Les caractéristiques de masse de l' aéronef sont définies dans la section
masse_équilibre : tenseur d'inertie de l'aéronef, masse à vide, position du centre de masse.
Il est à noter que les positions absolues du foyer aérodynamique et le centre de masse de l'aéronef ne participent pas au calcul de la dynamique de l'appareil, leur emplacement relatif est important.
Les sections suivantes décrivent les caractéristiques du train d'atterrissage de l'avion et de sa centrale électrique.
Dans la section suivante, responsable
du système de contrôle , nous remplirons le canal responsable du contrôle de roulis: nous indiquerons la seule entrée
fcs / aileron-cmd-norm , dont la valeur sera normalisée de -1 à 1.
Les caractéristiques aérodynamiques sont définies dans la section
aérodynamique : les forces sont définies dans un système de coordonnées à grande vitesse et les moments sont définis dans un système couplé. Nous sommes intéressés par le moment de roulis. Dans la section
nom de l'
axe = "ROULEAU" , des fonctions sont définies qui déterminent le moment des forces à partir de diverses composantes de la projection du moment des forces aérodynamiques sur l'axe
OX du système de coordonnées associé. Il existe deux de ces composants dans notre modèle. La première composante est le moment d'amortissement, qui est égal au produit de la vitesse angulaire par le coefficient déterminé précédemment
. La deuxième composante est le moment des ailerons à une vitesse de vol fixe: il est égal au produit du coefficient précédemment déterminé
par la quantité de déviation des ailerons.
Il convient de noter que lors de la détermination du coefficient
la valeur dimensionnelle a été utilisée
. Dans nos données de vol, la vitesse angulaire a été mesurée en degrés par seconde, tandis que
JSBSim utilise des radians par seconde, donc le coefficient
doit être réduit à la dimension souhaitée, c'est-à-dire divisé par 180 degrés et multiplié par
radian. Nous notons ces composantes du moment des forces aérodynamiques à l'intérieur des fonctions produit du
produit . Lors de la modélisation, le résultat de toutes les fonctions est résumé et la valeur de la projection du moment aérodynamique sur l'axe correspondant est obtenue.
Vous pouvez vérifier le modèle créé sur les données expérimentales obtenues lors des tests en vol. Pour ce faire, créez un script avec le contenu suivant:
<?xml version="1.0" encoding="utf-8"?> <runscript> <use aircraft="ownPlane1" initialize="scripts/airborne"/> <run start="0" end="51" dt="0.01"> <event name="Trims"> <condition> sim-time-sec ge 0.0 </condition> <set name="simulation/do_simple_trim" value="5"/> </event> <event name="Time Notif" continuous="true"> <description>Provide a time history input for the aileron</description> <condition> sim-time-sec ge 0</condition> <set name="fcs/aileron-cmd-norm" > <function> <table> <independentVar lookup="row">sim-time-sec</independentVar> <tableData> 0 0.00075 0.1 0.00374 0.2 -0.00075 0.3 -0.00075 0.4 -0.00075 0.5 -0.00075 0.6 0.00075 0.7 0.00075 ... 48.8 -0.00075 48.9 0.00000 49 -0.00075 </tableData> </table> </function> </set> </event> </run> </runscript>
où les points indiquent des données manquantes. Dans le fichier de script qui nous est familier de l'article précédent, un nouveau type d'événement (
«Time Notif» ) est apparu, ce qui vous permet de définir un changement continu du paramètre dans le temps. La dépendance du paramètre sur le temps est définie par la fonction de table.
JSBSim interpole linéairement la valeur de la fonction entre les données tabulaires. La procédure de vérification du modèle de mouvement de roulis consiste à exécuter ce script sur le modèle créé et à comparer les résultats avec ceux expérimentaux.
Le résultat de la vérification est illustré dans la figure:

Comme le montre la figure, la coïncidence du modèle avec la réalité est légèrement moins complète.
Synthèse de contrôle pour la performance du canon
Après avoir reçu le modèle, il est facile de déterminer combien et pendant combien de temps il est nécessaire de dévier les ailerons pour terminer le «canon». Une option est l'algorithme de déviation suivant:
- : les ailerons commencent à s'écarter d'une position neutre;
- : ailerons rejetés de 50%;
- : les ailerons commencent à dévier vers une position neutre;
- : ailerons au neutre.
La présence de segments d'une durée de 0,1 s au début et à la fin de l'algorithme de déflexion des ailerons simule l'inertie du servo variateur, qui ne peut pas dévier instantanément les surfaces. Le modèle montre qu'avec une telle loi de déflexion des ailerons, l'avion doit effectuer un tour complet autour de l'axe
OX , tu vois?
Expérience de vol
La loi résultante de contrôle des ailerons a été programmée dans un pilote automatique monté sur un avion. L'idée de l'expérience est simple: amener l'avion en vol horizontal, puis utiliser la loi de contrôle obtenue. Si le mouvement réel de l'avion le long du rouleau correspond au modèle créé, alors l'avion doit effectuer un «baril» - une révolution complète de 360 degrés.
Nous exprimons notre gratitude à notre fidèle pilote pour son travail, son professionnalisme et un coffre confortable sur un wagon universel!
Au cours de l'expérience, il est devenu clair que le modèle de roulis a été construit avec succès - l'avion a effectué un «baril» après l'autre dès que le pilote a activé la loi de commande programmée. La figure suivante montre la vitesse angulaire
enregistrés pendant l'expérience et obtenus à partir des résultats de la simulation, ainsi que l'angle de gîte et de tangage de l'expérience de vol:

Et la figure suivante montre les signaux enregistrés dans l'expérience de vol pour les ailerons, la gouverne de profondeur (RV) et le gouvernail (RN):

Les lignes verticales indiquent les moments du début et de la fin de l'exécution du "canon". On peut voir sur les chiffres que lors de l'exécution du «baril» le pilote n'intervient pas dans le contrôle de la gouverne de profondeur et du gouvernail, il est également clair que l'angle de tangage a toujours tendance à diminuer lors de l'exécution du «baril» - l'avion se met en plongée, comme le prédit les résultats de la simulation dans le simulateur de vol (voir l'article
"UAV de vol. Comment faire un tonneau" ). Si vous examinez attentivement les graphiques précédents, il deviendra clair que le troisième «canon» n'était même pas terminé, car le pilote est intervenu en contrôle pour sortir l'avion de la plongée: l'angle de tangage change tellement lorsque le «canon» est exécuté uniquement par des ailerons.
Remarques
- Les canons automoteurs construits pour l'exécution du "canon" ne tiennent pas compte de la dépendance des dérivés du moment de roulis à la vitesse de vol. D'une part, cela a été fait pour ne pas compliquer le modèle et la loi de gestion. D'un autre côté, une telle dépendance est facile à introduire si, au lieu des dérivés et utiliser des quantités et défini à une vitesse de vol donnée .
- La loi de commande développée est une commande de programme sans rétroaction. La présence de rétroaction sur la vitesse angulaire et / ou l'angle de roulis améliorera la précision de la figure, ce qui sera fait à l'avenir.
Conclusions
À la suite de notre travail, nous avons montré l'une des façons de créer un modèle de mouvement d'un drone en vitesse angulaire
. Dans une expérience de vol, il a été prouvé que le modèle de mouvement créé est cohérent avec l'objet simulé. Sur la base du modèle développé, on obtient la loi de contrôle du programme, ce qui permet d'effectuer le «barillet» en mode automatique. Nous nous sommes également assurés qu'il ne serait pas possible d'accomplir le «baril» correct avec les seuls ailerons, et nous l'avons également clairement démontré.
La prochaine étape sera la finalisation de la loi de commande par l'ajout de rétroaction, ainsi que l'inclusion de la commande d'ascenseur. Ce dernier nécessitera la création d'une maquette du mouvement longitudinal de nos avions. Sur la base des résultats des travaux, la prochaine publication sera publiée.