• OpenTX : la logique et les bonnes pratiques

     

    En matière de radiocommandes, deux écoles s’opposent : l’une revendique une utilisation assistée, via un principe d’activation de mixages préprogrammés (logique « précâblée », type Graupner, Futaba, etc.), tandis que l’autre laisse au contraire toute liberté à l’utilisateur de relier à sa guise les ordres des manches aux servos, à partir d’une boîte à outils basée sur des mixages libres (logique « ouverte », type Multiplex, ER9X ou OpenTX).

    Par nature, la première école bénéficie d’un a-priori favorable mais son architecture logicielle figée n’est pourtant pas sans inconvénient. Les fonctionnalités de la radio sont en effet intimement liées aux nombre de voies, avec un tarif en proportion et des contraintes non négligeables :

    • Déterminer les mixages à utiliser pour son modèle, puis ensuite les retrouver dans les menus pour les activer, nécessite de connaître le catalogue et la localisation des fonctions préprogrammées ou, à défaut, de passer un certain temps à faire défiler les menus. Trivial pour un "moustachu", nettement moins pour un utilisateur moins averti.
    • Chaque fonctionnalité non prévue sur la radio nécessite, quand cela est possible (que celui qui n’a jamais râlé après les limitations ou la logique étriquée de sa radio me jette la première pierre…), des contorsions (détournement des mixages préprogrammés, utilisant de mixages libres en sur-couche) rendant a posteriori la programmation difficilement lisible et modifiable.
    • Si la fonctionnalité désirée n’existe pas et ne peut pas être recréée, ou si le nombre de voie est insuffisant, il faut monter en gamme dans la marque et investir à nouveau dans une radio, plus puissante mais aussi généralement sensiblement plus chère.

     

    A l’opposé, grâce à une programmation basée uniquement sur des mixages libres, OpenTX ne présente pas ces limitations et offre des possibilités quasi-illimitées, y compris sur les radios les plus modestes comme la Turnigy 9x. En contrepartie, programmer un modèle peut se faire de tellement de manières différentes, pour un résultat identique mais avec plus ou moins de lourdeur (avec des conséquences sur l'occupation mémoire du modèle et la latence de calcul), qu’une approche méthodique et rigoureuse est indispensable. Avec à la clé, grâce à cette hygiène de programmation, des programmes clairs, efficaces et légers.

    C’est cette approche que je vais essayer de démystifier ici au travers de deux exemples de complexité
    croissante, sur 9X/M2560 (c’est idem sur Taranis ou Horus, à la présentation des écrans près). Avant
    de commencer, il faut juste retenir une chose essentielle : programmer un modèle sous OpenTX nécessite
    uniquement de se poser la question suivante : « j’ai une gouverne à actionner, quels sont les ordres
    à lui envoyer ? »
    . Autrement dit, il suffit de décrire son besoin en termes simples et concrets, du
    point de vue de l’action des gouvernes, au lieu de le traduire en noms barbare de mixages comme avec
    une logique pré-programmée. Vous verrez, c’est nécessaire et suffisant, et d'une grande simplicité
    une fois le principe compris.

     

    1/ Bloc-diagramme OpenTX

    OpenTX : les bonnes pratiques

    L’écran « manches » est dédié au formatage des manches, qui consiste à définir, pour chaque manche, sa ou ses courbe(s) de réponse, équivalent du « dual-rate / expo » dans les marques habituelles et étendu sur OpenTX par la possibilité d’utiliser une courbe ou une fonction mathématique, par ex., associée à une activation par interrupteur et/ou phase(s) de vol.

    Le « mixeur » sert à affecter les manches aux voies, via des mixages libres, qui définissent en même temps la manière dont le manche est utilisé : taux, offset, activation par interrupteur et/ou phase(s), mais aussi avec ou sans trim associé, différentiel / courbe / fonction mathématique, retardateur(s) et ralentisseur(s). Encore mieux, les mixages sont chaînables entre eux, c'est à dire que la sortie d'un mixage est utilisable comme source d'un ou plusieurs autre(s) mixage(s).

    L’écran « servos » sert au formatage des servos (rappel : un servo = une voie du récepteur), définissant leur sens de rotation, amplitudes de débattement et neutre.

    D’autres écrans permettent des réglages complémentaires : phases de vol (agissant sur les « manches » et le « mixeur »), paramètres généraux de la radio, gestion des mémoires, chronomètres, télémesure, fonctions spéciales, interrupteurs logiques, variables globales, etc. Le détail, ainsi que le mode de navigation dans les menus, est donné sur les différents notices : Turnigy 9x (sera bientôt remise à jour), Taranis, ainsi que les excellents tutoriels vidéos de Sébastien / LapinFou.

    NOTA important :
    Les écrans qui suivent sont en anglais, mais OpenTX existe aussi en français, italien, etc.
    La programmation se réalise de préférence sur la radio plutôt que sur Companion, le réglage du sens et des courses des
    gouvernes ne pouvant se faire efficacement que modèle allumé et en cours de programmation (et non une fois le programme
    terminé).
    Utiliser les wizards de pré-configuration d’un modèle retarde l’échéance d’apprentissage d’OpenTX… s’en passer est le
    meilleur moyen de progresser !

     

    2/ Exemple simple : delta motorisé

    OpenTX : les bonnes pratiques
    Nous avons à commander :
    Un moteur : par le manche des gaz (mais cela peut être un interrupteur
    ou tout autre organe de commande, ou même un trim, tout est imaginable
    avec OpenTX).
    Les élevons : par le manche d’ailerons (fonction roulis) et le manche
    de profondeur (fonction tangage).

    L’affection des voies du récepteur est elle aussi totalement libre, pour
    cet exemple nous choisissons arbitrairement :
    Voie 1 = gaz
    Voie
    2 = élevon gauche
    Voie 3 = élevon droit

    Une fois les servos branchés sur le récepteur suivant l’affectation choisie, passons donc à la programmation. Pour commencer, modèle éteint pour l’instant, direction le menu « Mixeur », c’est là où se fait la majorité du travail :

    • Sur la voie 1 (moteur), on crée une ligne de mixage avec source = manche de gaz
    • Sur la voie 2 (élevon gauche), on crée une ligne de mixage avec source = manche de profondeur
    • Sur la voie 3 (élevon droit), on crée une ligne de mixage avec source = manche de profondeur

    OpenTX : les bonnes pratiques

    NOTA
    Dans le cas de servos actionnés simultanément par plusieurs fonctions, on commence toujours par créer les mixages de
    celles ayant un sens de débattement symétrique (profondeur, snap-flap, courbure, etc.) afin de figer les taux avec un
    signe judicieux (positif à cabrer, par ex.). On rajoutera par la suite les fonctions avec inversion de sens (ailerons,
    etc.), qui bénéficieront du réglage effectué pour les premières.

    Pour ajouter une ligne de mixage, on peut copier/coller une ligne existante depuis une autre ligne, puis l’éditer, ou
    cliquer sur « Enter » sur la ligne vide pour automatiquement lui ajouter un mixage.

    Ici l’option de flashage « bolt » (texte en gras) a été utilisée, ce qui permet de savoir si le mixage est actif (taux
    en caractère gras) ou pas (taux en caractère normal).

    Nous pouvons maintenant allumer le modèle. Ca y est, nos gouvernes bougent avec le manche de profondeur et les gaz fonctionnent… la première fois, c’est presque magique ! Par contre, l’une des gouvernes bouge à l’envers, direction donc le menu « Servos » pour ajuster son sens (ici, c’est la voie 2 qui a été inversée) :

    OpenTX : les bonnes pratiques

    NOTA
    L’option « = » (cf. notice 9X) a été sélectionnée pour conserver la linéarité des débattements quand on trimme les
    gouvernes ou quand on ajoute de nouveaux mixages a posteriori.

    On en profite pour régler le neutre des gouvernes (d’abord mécaniquement sur l’avion, puis seulement ensuite sur la radio pour finaliser) et symétriser leurs demi-courses de manière à obtenir exactement les mêmes débattements entre haut et bas et entre gauche et droite (aucune commande n’étant strictement identique, d’un servo à l’autre ou d’un sens à l’autre) :

    OpenTX : les bonnes pratiques

    NOTA
    L’intérêt de réaliser ce réglage ici [plutôt que dans chaque ligne de mixage du menu « Mixeur », comme il est tentant
    de le faire] est qu’il est fait une fois pour toute, quels que soient les ordres qui arriveront au servo. Pour rappel :
    c’est idem sur toute les radios, cela fait partie des « bonnes pratiques » universelles en matière de programmation de
    radio.

    La butée étant à +/-100%, la course de référence des gouvernes est donc la plus faible. En conséquence, on réduit les
    demi-courses excédentaires (et non : on augmente les demi-courses les plus faibles).

    Le réglage du neutre est ici supporté par le « neutre PPM » (à droite, 1500 µs au neutre) plutôt que le « sub-trim »
    (à gauche, 0% au neutre), le premier ne polluant pas l’écran de position des servos.

    C’est à ce stade que l’on règle les bras de levier des commandes (en déplaçant leurs points d’ancrage sur les palonniers
    de servo et les guignols) pour obtenir les débattements attendus (les plus grands qu’auront les gouvernes) mais en léger
    excès (d’environ 20 à 30%). Les débattements finaux seront ensuite ajustés via l’écran « manches » (voir ci-après), ce
    qui permettra de distinguer les débattements par manche et ménager de la marge de trim (sinon il en résulte un écrêtage
    des ordres en butée de manche).

    Maintenant que nos débattements sont dans le bon sens et parfaitement calibrés, retour au « Mixeur » où l’on ajoute le manche d’ailerons sur les voies 2 et 3 :

    OpenTX : les bonnes pratiques

    NOTA
    L’une des gouvernes débattra fatalement dans le mauvais sens en fonction aileron, nécessitant donc un taux à –100%
    (ici voie 3) contre +100% pour l’autre.

     Ca y est, nous avons maintenant réglé les débattements bruts des gouvernes et créé l’équivalent d’un « mixage croisé » de type « delta », utilisé aussi pour les ailes volantes, les appareils à incidence intégrale ou les empennages en Vé. Finalement, rien de bien compliqué et ne nécessitant aucune connaissance du catalogue des fonctions de la radio, il suffisait simplement de recenser les servos à piloter et décider des ordres à leur envoyer.

    Pour finaliser les débattements par fonction de pilotage (pour rappel, cf. ci-avant, excédentaires volontairement d’environ 20 - 30%), direction le menu « Manches », plutôt que dans l’écran des servos (il ne permet pas d’avoir un débattement propre à chacun des ordres qui arrivent au servo) ou le mixeur (cela nécessiterait de doubler le nombre de taux à régler, ce qui alourdirait inutilement la programmation). Là aussi, c’est une bonne pratique valable pour toutes les radios.

    Pour cela, on ajoute une ligne au manche de profondeur et une ligne à celui d’ailerons, puis on ajuste les taux :

    OpenTX : les bonnes pratiques

    La notice du modèle indique qu’il faut utiliser un différentiel d’aileron, retour à l’écran « mixeur ». On édite les deux lignes de mixages correspondantes, et on indique le taux de différentiel dans le champ « Diff ». 

    OpenTX : les bonnes pratiques   OpenTX : les bonnes pratiques

    NOTA
    On remarque, dans l’écran de gauche, la liste des phases de vol (« Mode », en anglais), que l’on retrouve aussi dans
    l’écran des manches. Une fois les phases déclarées (cf. ci-après), on peut choisir –en cochant  ou pas chaque case-
    pour quelles phases le mixage sera actif ou inactif.

    Par défaut, le mixage est additionné à la voie (opérande « += »), mais il peut aussi être soustrait ou servir de
    multiplicateur à la ligne qui précède.

    Une fois la programmation de base élaborée, nous allons utiliser d’autres outils qui vont nous simplifier la mise au point, en l’occurrence les variables globales (GVAR) et les fonctions spéciales. Les premières vont remplacer des taux (ici les débattements de profondeur et d’ailerons ainsi que le différentiel d’ailerons, avec l’avantage pour ce dernier d’avoir une seule valeur à régler au lieu de deux) tandis que les secondes vont permettre de les lier à un organe de commande pour, in fine, les régler en vol. Avec ce principe, finit les atterrissages à répétition pour régler finement les débattements…

    Mettons que nous allons utiliser GVAR1 pour le débattement de profondeur, GVAR2 pour celui d’ailerons et GVAR3 pour le différentiel. Commençons par les débattements, dans le menu « manches » (appui long sur la touche « menu » pour basculer de la valeur à la liste des GVAR) :

    OpenTX : les bonnes pratiques

    Ensuite le différentiel, dans le « Mixeur » :

    OpenTX : les bonnes pratiques

    Maintenant, créons les fonctions spéciales de réglage en vol, avec arbitrairement (on peut utiliser n’importe quel interrupteur physique ou logique) l’interrupteur « D/R AIL » pour leur activation :

    OpenTX : les bonnes pratiques

    Par souci autant de logique que de simplicité, les organes de commandes retenus pour les réglages en vol sont les trims des manches associés (ils sont temporairement « détournés » par la fonction spéciale lors de son activation). Pour le différentiel, on utilisera le trim de gaz. Pour les radios qui en sont pourvues, il est aussi possible d’utiliser les encodeurs rotatifs pour ce type de réglage, ils fonctionnent exactement de la même manière.

    NOTA
    Une fois une GVAR réglée, il est bien entendu possible de basculer le taux associé sur sa valeur effective pour libérer
    la GVAR pour d’autres usages (et libérer de la mémoire modèle). Pour cela : appui long sur la touche « menu » lors de
    l’édition du taux (suivant le même principe qui a permis de bascule du taux à GVAR).

    On peut aller encore plus loin, avec les phases de vol. Il s’agit de sous-mémoires du modèle, permettant d’enregistrer des taux (Gvar y compris, pour les radios les plus puissantes type M2560, 9XR Pro ou Taranis) et des activations distinctes (formatage de manches, mixages) pour chaque phase de vol (phase de vol lent, de gratte, de vitesse, d’atterrissage, etc.). Pour cet exemple, nous allons distinguer une phase « vol rapide » et une phase « vol lent », avec pour chacune un débattement et un différentiel spécifique, toujours réglable en vol.

    Premièrement, on déclare les phases de vol, avec les interrupteurs associés :

    OpenTX : les bonnes pratiques

    OpenTX : les bonnes pratiques   OpenTX : les bonnes pratiques

    NOTA
    Les trims de manche (0000) sont ici tous communs à la phase 0 (phase de base). Ils peuvent être distincts au besoin,
    ce qui se justifie généralement pour les phases de vol avec courbure d’aile non nulle, où il peut être nécessaire de
    retrimmer l’appareil pour conserver la ligne de vol (mais, si vous avez bien calibrés les servos suivant la méthodologie
    ci-avant, cela devrait être anecdotique).

    Ensuite, on spécifie les valeurs initiales des GVAR 1, 2 et 3 pour chaque phase, que l’on ajustera ensuite en vol pour affiner.

    OpenTX : les bonnes pratiques   OpenTX : les bonnes pratiques

     

    3/ Exemple élaboré : planeur électrique quadroflap

    Les fonctions sont les suivantes : pilotage du moteur et des AF crocodiles par le manche de gaz (multi-affectation : tiers de course inférieur = AF, tiers médian = neutre, tiers supérieur = moteur), courbure de gratte et utilisation de voies virtuelles (= voie non affectée à un servo mais utilisée comme source d'un autre mixage) pour grouper la consigne de courbure. La phase 0 est ici utilisée en phase de sécurité pour inactiver moteur et AF, tandis que la phase 1 est dédiée à ces fonctions et la phase 2 sert au vol de gratte.

    OpenTX : les bonnes pratiques    OpenTX : les bonnes pratiques             

                  OpenTX : les bonnes pratiques
       Affectation des voies
    CH1 = moteur
    CH2 = profondeur
    CH3 = dérive
    CH4 = aileron 1
    CH5 = aileron 2
    CH6 = volet 1
    CH7 = volet 2
    […]
    CH10 = courbure ailerons
    CH11 = courbure volets

    La voie 1 est soit pilotée par le manche des gaz (via la courbe CV1, voir ci-après) dans la phase « TH-ON » (moteur actif), soit forcée à -100% dans les autres phases (moteur inactif).

    La compensation AF (via le manche de gaz) vers profondeur de la voie 2, elle aussi active uniquement dans la phase « TH-ON », est pilotée par la courbe CV1 (voir ci-après) plus la variable globale GV3. Cette dernière est optionnelle, on aurait pu tout faire dans CV1, mais GV3 apporte la possibilité d’ajuster le taux en vol, ce qui est très intéressant étant donné l’importance et la sensibilité de ce réglage.

    Les voies 10 et 11 sont utilisées comme voies virtuelles, concaténant les taux de courbure (« MAX GV2 » pour la courbure de gratte, actif en phase « THERMA », et « Thr 100% » pour les AF en phase « TH-ON ») des, respectivement, ailerons et volets. Cette astuce [de voies virtuelles] permet d’économiser ici 12 lignes de mixage (par rapport au fait d’écrire ces lignes directement sur les voies concernées), avec un gain d’occupation mémoire et de facilité de programmation significatif.

    GV1 est ici utilisé pour le différentiel d’ailerons et volets en ailerons, de manière à avoir une valeur unique à régler (au lieu de 4), avec la possibilité d’un réglage en vol (valable sur M2560 et supérieur).

    Par sécurité, les mixages d’AF sont inactifs dans la phase « TH-OFF ».

    Si la machine le nécessitait, on aurait aussi pu joindre aux voies 10 et 11 un couplage profondeur vers courbure (eq. « snap-flap ») pour les virages serrés, sous la forme : += Ele GV4 TrimOff DRexOff. Ces deux derniers termes indiquent que le trim et le formatage du manche de profondeur ne sont pas pris en compte dans le mixage, de manière à éviter que le réglage du manche de profondeur interfère avec le fonctionnement de la courbure.

    Les courbes utilisées pour l'affectation du manche de gaz au moteur et aux aérofreins crocodiles :

    OpenTX : les bonnes pratiques   => courbe de gaz, commençant au tiers supérieur du manche
    OpenTX : les bonnes pratiques    => courbe d’ailerons en AF, commençant au tiers inférieur
    OpenTX : les bonnes pratiques     => courbe de volets en AF, commençant au tiers inférieur

     

    NOTA
    Ne pas oublier de paramétrer le chronomètre moteur en % de gaz (de manière à avoir une vision
    réaliste de la capacité accu ou réservoir consommée, le chrono étant d’autant plus lent que les
    gaz sont réduits) et pointant sur la voie des gaz (et non le manche, qui est utilisé aussi pour
    les AF).
    La sécurité « moteur coupé » est ici gérée par l’inhibition du mixage concerné, plutôt que par
    une fonction spéciale de forçage de la voie à -100%. L’intérêt est double : d’une part cela évite
    d’avoir à jongler entre deux écrans pour avoir la vision complète des ordres envoyés aux servos,
    et d’autre part l’utilisateur a toujours la connaissance (sur l’écran ou via les annonces
    vocales) de la phase de vol en cours, sans avoir à faire un effort de mémorisation pour savoir
    à quel interrupteur et position d’interrupteur correspond l’activation de la sécurité moteur.

    Copyright Franck Aguerre / RC Aero Lab