Annonce

Réduire
Aucune annonce.

Accelerations X plane

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • #1
    Bonsoir Dominique,
    Tout d'abord merci de m'avoir répondu et désolé de vous répondre aussi tardivement, je n'ai pas pu finir mon programme dans la journée car je n'ai pas eu beaucoup de temps libre, et j'ai commis une erreur qui ma fait perdre du temps...
    Après votre réponse, je comprends mieux maintenant pourquoi il faut que je travaille dans le référentiel avion, d'autant plus que ce sera des ULM qui seront simulés.
    Je vous propose les 4 captures d'écran :
    1-Vol Horizontal vers l'Est : http://hpics.li/f454be0
    2-Vol Horizontal vers le Nord Est : http://hpics.li/28fbea9
    3-Vol en montée : http://hpics.li/4bfdee3
    4-Vol en virage http://hpics.li/3f0cde0

    J'espère avoir respecté ce que vous m'avez demandé.
    Si ces valeurs sont correctes, je vais alors faire ce que vous m'avez dit, et essayer de transformer les valeurs dans le référentiel avion.
    Si tous se passe bien, je vais ensuite transformer ca en un angle de rotation de la plateforme en prenant en compte ce que vous m'avez dit.
    Une de vos remarque m'interpelle, je n'avais pas pensé à la vitesse de basculement de la plateforme en fonction du niveau d'accélération. Il va falloir que j'y réfléchisse un peu plus.
    Je vous remercie de votre aide.
    Bonne soirée
    Antonin

    Commentaire


    • #1
      Antonin,
      Tout devient très clair. Je posterai ce soir ou demain avant 9 heures la démarche à suivre pour les calculs.
      1. Enseignements tirés des 4 cas de vol
      2. Calcul des accélérations linéaires au niveau avion
      3. Calcul de la gravité au niveau avion
      4. Autres calculs possibles

      Dominique
      XP11.41 - WIN 7 - i7 - GTX970

      Commentaire


      • #1
        Je suis ravi que tout soit clair pour vous. En espérant que je vais comprendre la procédure. J'attends votre réponse. Encore merci, vous m'aidez beaucoup.
        Antonin

        Commentaire


        • #1
          Remarques préliminaires
          Je conseille de prendre un papier, un crayon et de faire des dessins pour comprendre la suite.
          Les angles en degrés doivent être convertis en radians (angle/180*pi)

          Enseignements tirés des 4 cas de vol
          Le référentiel « Sol » OpenGL est bien : X vers l’est, Y vers le haut, Z vers le sud
          L’angle theta correspond à la pente affichée sur l’horizon artificiel
          L’angle phi correspond à l’inclinaison (banking) affichée sur l’horizon artificiel
          L’angle psi correspond au cap affiché dans le cockpit


          Le calcul de l’accélération totale, donc la norme de a = racine(ax²+ay²+az²), est faible pour les cas de trajectoire rectiligne (est, nord-est, montée) et important dans le cas du virage. L’accélération linéaire totale ne tient compte que d’accélérations tendant à faire dévier l’avion d’une trajectoire rectiligne. Tout va bien.


          Dans le cas du virage vers la gauche à partir d’un cap 17°, l’accélération principale est due à la force centrifuge/centripète, donc vers l’intérieur du virage. Dans notre cas le centre du virage se trouve vers le nord-ouest (17°-90° car virage à gauche). Dans le référentiel « sol » le NO se trouve vers les X négatifs et les Z négatifs. Tout va bien.

          Calcul des accélérations linéaires dans le référentiel avion
          On fait pivoter le référentiel suivant trois angles successifs (l’ordre est important) :
          Psi autour de l’axe Y (« cap »), theta autour de l’axe X (« pente »), phi autour de l’axe Z (« roulis »)
          Remarque : la rotation autour de l’axe d’un référentiel XYZ se fait comme suit :
          Autour de X : angle positif Y vers Z
          Autour de Y : angle positif Z vers X
          Autour de Z : angle positif X vers Y
          « Malheureusement » en aéronautique, le cap est donné dans le sens horlogique (du nord vers l’est), donc dans le sens X vers Z. Nous devrons donc changer le signe de psi dans les formules.
          De même pour le roulis, qui est positif en roulis par la droite (horlogique donc Y vers X), alors que le sens de référence est X vers Y.
          Pour theta, tout va bien, l’angle theta est positif quand le nez de l’avion monte, ce qui correspond à une rotation de Y vers Z.


          A l’assaut ! Voici les formules.
          On part de l’accélération dans le référentiel sol : ax, ay, az
          Rotation de psi autour de Y :
          ax1 = ax*cos(-psi) - az*sin(-psi)
          ay1 = ay
          az1 = ax*sin(-psi) + az*cos(-psi)
          Rotation de theta autour de X’ (=le nouveau X)
          ax2 = ax1
          ay2 = ay1*cos(theta) + az1*sin(theta)
          az2 = -ay1*sin(theta) + az1*cos(theta)
          Rotation de psi autour de Z’’ (=le nouveau Z)
          ax3 = ax2*cos(-phi) + ay2*sin(-phi)
          ay3 = -ax2*sin(-phi) + ay2*cos(-phi) *** modifié le 23/3/11
          az3 = az2
          On retrouve les accélérations linéaires selon le référentiel « avion » :
          ax3 : accél. latérale => commande de moteur de tangage cabine => cabine bascule à droite si accél. positive
          ay3 : accél. verticale => commande vérin de cabine => cabine monte si accél. positive
          az3 : accél. longitudinale => commande de moteur de roulis cabine => cabine bascule vers le bas si accél. positive
          Dans le cas du virage, cela donne : ax3=-8.2 / ay3 = 24.0 / az3 = 1.4 m/s²


          Ces valeurs doivent être corrigées selon une série de facteurs exposés précédemment


          En outre, ces valeurs ne tiennent pas compte de la gravité, mais uniquement des variations de trajectoire avion. Ceci est incomplet, comme le montre le cas en montée ; l’avion en montée devrait être simulé par un basculement de la cabine vers l’arrière, même si la montée est parfaitement rectiligne.

          Calculs de la gravité au niveau avion
          Le calcul est plus simple car l’accélération due à la gravité dans le référentiel sol est : gx=0, gy=-g (=-9.81m/s²), gz=0.


          Pour obtenir la gravité dans le référentiel avion il suffit d’appliquer les mêmes formules que précédemment, on obtient donc :
          gx’ = -g*cos(theta)*sin(-phi)
          gy’ = -g*cos(theta)*cos(-phi)
          gz’ = g*sin(theta)


          Une dernière correction à effectuer : il faut retirer l’effet de la gravité régnant déjà dans la cabine (on retire -9.81m/s² de gy3) avant de déterminer les signaux de commande : les mouvements de cabine simulent les accélérations subies par le pilote, il ne faut donc pas faire bouger la cabine pour la partie « naturelle » (vers le bas de la cabine) de la gravité.


          Au final, les signaux de commande (non corrigés) de la cabine pour tenir compte de la gravité sont donc :
          gx3 = -g*cos(theta)*sin(-phi)
          gy3 = -g*cos(theta)*cos(-phi) – (-g) = g*(1- cos(theta)*cos(-phi))
          gz3 = g*sin(theta)
          Dans le cas du virage, cela donne :
          gx3=-8.5 (bascule à gauche)
          gy3 = 6.3 (vérin monte)
          gz3 = 3.4 m/s² (bascule vers l’arrière)

          Autres accélérations
          On pourrait également tenir compte des accélérations angulaires (P dot, Q dot, R dot), probablement utile pour simuler un hélicoptère, un avion d’acrobatie ou de chasse mais ceci est pour le moment hors contexte.

          Si l’unité de commande ne peut calculer facilement les fonctions trigonométriques (sinus, cosinus), nous utiliserons le quaternion.

          Dominique
          Dernière modification par FlyingBaldy, 23 mars 2011, 20h29. Motif: correction formule ay3
          XP11.41 - WIN 7 - i7 - GTX970

          Commentaire


          • #1
            Bonjour Dominique,
            Tout d'abord merci d'avoir pris du temps pour m'expliquer tout ca. J'avoue que tous ces calculs me dépassent un peu, mais je comprends certains raisonnements.
            Pour ce qui est du calcul trigonométriques il n'y a pas de problème, la machine devrait pouvoir calculer ça, du moment que je me trompe pas dans le code.
            Le problème que je rencontre est plus physique. En effet, vous m'avez donné 2 calculs d'accélérations si je ne me trompe pas.
            1- Calcul des accélérations linéaires dans le référentiel avion
            2- Calcul de la gravité de l'avion qui est aussi une accélération.
            J'ai refait les calculs, je trouve les mêmes résultats, c'est normal, mais une chose que je ne comprend pas, c'est comment associer ces 2 calculs. Car pour moi c'est 2 accélérations différentes, ils faut donc créer une sorte de résultante des accélérations linéaires et de la gravité, et ensuite à partir de ce résultat ordonner à la plateforme de faire une rotation selon tel ou tel axe.
            J'airai une autre question:
            ax3 : accél. latérale => commande de moteur de tangage cabine => cabine bascule à droite si accél. positive
            ay3 : accél. verticale => commande vérin de cabine => cabine monte si accél. positive
            az3 : accél. longitudinale => commande de moteur de roulis cabine => cabine bascule vers le bas si accél. positive

            Je ne comprend pas votre déduction de l'accélération ax3. En effet, si cette accélération commande le moteur de tanguage, il faut alors pencher la plateforme vers l'avant ou l'arrière mais je ne vois pas pourquoi il faut la pencher à droite. Et donc je ne comprend pas non plus le raisonnement de l'accélération az. Pouvez-vous m'éclaircir à ce sujet?
            Je vous remercie beaucoup pour toute cette aide aussi précise et complète.
            Bonne journée
            Antonin

            Commentaire


            • #1
              Antonin,

              J'ai effectivement mélangé le texte des mouvements cabine (je prépare également le calcul des accélérations angulaires, le tout dans un fichier excel, et j'ai loupé un copier-coller). Le texte correct est :
              ax3 : accél. latérale => commande de moteur de roulis cabine => cabine bascule à gauche si accél. positive
              ay3 : accél. verticale => commande vérin de cabine => cabine monte si accél. positive (en fait la vitesse de déplacement du vérin devrait correspondre à l’accélération - voir dernier paragraphe)
              az3 : accél. longitudinale => commande de moteur de tangage cabine => cabine bascule vers le bas si accél. positive
              Je vais corriger le texte de mon post précédent.

              Combinaison des accélérations:
              En pratique on soustrait la valeur due à la gravité de la valeur de l’accélération linéaire (pour chaque axe) : ax-gx, ay-gy, az-gz.


              Conversion des accélérations calculées en commandes moteur

              Il faut également corriger la valeur de chaque axe (avant ou après combinaison des accélérations) selon une fonction à déterminer (voir figure).
              Il faut convertir la valeur calculée précédemment en un angle de rotation de cabine (-15° à 15°).
              La figure jointe présente des valeurs d’accélération de -100% à 100%, ce qui peut correspondre à des accélérations de -100 à 100 m/s² (acrobatie) ou -30 à +30 m/s² (ULM), …
              J’ai représenté quelques exemples de fonction de conversion :
              1 Proportionnel agressif : l’angle varie rapidement en fonction de l’accélération.
              2 Proportionnel modéré : l’angle varie lentement en fonction de l’accélération.
              3 Sinusoïdal : l’angle varie rapidement pour des accélérations modérées puis plus lentement pour des accélérations importantes.
              4 Quelconque : il est possible de déterminer toute forme de fonction, et même d’avoir une conversion différente selon que l’accélération est positive ou négative.


              Pour commencer, je propose de faire le calcul a-g pour chaque axe x, y, z puis d'appliquer une fonction de type 2 ou 3, avant d’affiner après les essais en cabine.
              En version de base, je n'utiliserais que 2 axes (tangage et roulis).


              La version la plus sophistiquée consisterait à appliquer une fonction spécifique sur chaque valeur ax, ay, az, gx, gy, gz puis de faire le calcul a-g.


              Cliquez sur l'image pour la voir en taille réelle 

Nom : 		Accélérations X-Plane - fonction de commande.jpg 
Affichages :	1 
Taille :		28,9 Ko 
ID : 			453968

              Ajout d'un vérin pour l'axe vertical
              Il faut noter la différence entre les axes X (simulé par roulis) et Z (simulé par tangage) d'une part, et l'axe Y (vérin linéaire) d'autre part.
              Les accélérations ressenties selon les X et Z peuvent être simulées par un basculement de cabine parce que le poids du corps dans la cabine n'est alors plus vertical. Cest pourquoi une accélération linéaire se traduit par un angle de rotation de cabine.
              Ceci n'est pas vrai pour l'axe vertical Y: déplacer le siège/la cabine vers le haut ou le bas ne change rien à la sensation d'accélération verticale; c'est la VITESSE/ACCELERATION de déplacement du vérin qui donne l'impression d'accélération verticale. Cest une grosse difficulté pace que cette accélération ne peut être maintenue très longtemps.



              En résumé:

              Pour X et Z : accélération => angle moteur : on donne une consigne de position

              Pour Y : accélération => vitesse/accélération de vérin : on donne une consigne de vitesse ou d'accélération.


              Prochaine étape, les accélérations angulaires!


              Dominique
              Dernière modification par FlyingBaldy, 17 mars 2011, 19h24.
              XP11.41 - WIN 7 - i7 - GTX970

              Commentaire


              • #1
                Merci pour toutes ces précisions. Je me lance dans le changement de référentiel des accélérations. J'ai bien envie d'utiliser une fonction sinusoïde pour la transformation d'accélération en angle. Mais je pense qu'il faut d'abord que je détermine avec un ulm quelles sont les accélérations max et a partir de ca je créer 3 fonctions (une pour chaque accélération) qui me permettent de profiter au mieux de l'angle de rotation de chaque axe par rapport à l'accélération.
                Avez vous une méthode pour choisir la fonction sinusoïde?
                Merci de prendre du temps pour me répondre.
                Bonne soirée
                Antonin

                Commentaire


                • #1
                  Bonjour a tous,
                  J'ai une nouvelle question pour Dominique :
                  Je rencontre un problème lors de la mise en place du calcul de ay3, je ne trouve pas la même valeur que vous.
                  En effet, vous avez trouvé ax3=-8.2 / ay3 = 24.0 / az3 = 1.4 m/s² pour le vol en virage,
                  alors que je trouve ax3 : -8.176113 / ay3 : -22.816874 / az3 : 1.4005934
                  J'ai revérifié toute la fonction de conversion mais c'est copie conforme des équations de votre dernier message.
                  Je me demande alors si vous n'avez pas commis une erreur en recopiant les formules.
                  Mon niveau en physique ne me permettant pas de corriger le problème seul, je viens vous demander de l'aide.
                  En vous remerciant,
                  Antonin

                  Commentaire


                  • #1
                    Antonin, il manque un signe '-' au début de la formule de ay3.
                    La formule correcte est ay3 = -ax2*sin(-phi) + ay2*cos(-phi)

                    Pour clarifier, je te propose la démarche suivante, en espérant ne plus avoir commis de faute de frappe.

                    Référentiels X-Plane
                    · « sol » (OpenGL) : X (Est), Y (zénith), Z (Sud) au point (0,0,0) de la tuile de terrain active
                    · « trajectoire »
                    · « aéronef » : X (droite), Y (dessus), Z (arrière)


                    Rotations entre référentiels
                    · « Sol » => « aéronef » : ‘-psi’ puis ‘theta’ puis ‘-phi’ (les signes ont été expliqués précédemment)
                    · « trajectoire » => « aéronef » : ‘-beta’ puis ‘alpha’ puis ‘-phi’


                    Accélérations fournies par X-Plane
                    · Linéaires : local_ax, local_ay, local_az (selon X, Y, Z dans le référentiel « sol »)
                    · Angulaires : Qdot, Rdot, Pdot (autour de X, Y, Z dans le référentiel « trajectoire »)
                    Ce sont les accélérations s’exerçant sur l’aéronef pour lui faire suivre une trajectoire (pas d’accélération si vol rectiligne à vitesse constante).


                    Accélérations utiles pour la cabine du simulateur
                    Note : nous avons besoin des accélérations qui s’exercent sur le pilote par rapport au cockpit ; les accélérations sont donc opposées aux accélérations fournies par X-Plane (voir note précédente). Une autre force s’exerçant sur le pilote est la gravité, dont l’accélération est [0,-g,0] en coordonnées « sol », car accélération s’exerce vers le bas donc à l’opposé de Y . Les ‘accélérations pilote’ que nous cherchons sont dès lors égales à l’opposé des ‘accélérations aéronef’ plus la ‘gravité’.

                    · Accélérations linéaires pilote (dans le référentiel « sol »):
                    o ax = – local_ax
                    o ay = – local_ay -g
                    o az = – local_az
                    · Accélérations angulaires pilote (dans le référentiel « trajectoire »):
                    o aq = -Qdot
                    o ar = -Rdot
                    o ap = -Pdot


                    Il suffit d’appliquer les bonnes rotations à ces accélérations pour retrouver les accélérations pilote complètes dans le référentiel « aéronef ». Celles-ci correspondent aux 6 degrés de liberté permettant de décrire le mouvement réel.


                    · Accélérations linéaires pilote (dans le référentiel « aéronef »):
                    o ax3 = [ax*cos(psi)+az*sin(psi)]*cos(phi) – [ay*cos(theta)+{-ax*sin(psi)+az*cos(psi)}*sin(theta)]*sin(phi)
                    o ay3 = [ax*cos(psi)+az*sin(psi)]*sin(phi) + [ay*cos(theta)+{-ax*sin(psi)+az*cos(psi)}*sin(theta)]*cos(phi)
                    o az3 = -ay*sin(theta) + [-ax*sin(psi)+az*cos(psi)]*cos(theta)

                    · Accélérations angulaires pilote (dans le référentiel « aéronef »):
                    o aq3 = [aq*cos(beta)+ap*sin(beta)]*cos(phi) – [ar*cos(alpha)+{-aq*sin(beta)+ap*cos(beta)}*sin(alpha)]*sin(phi)
                    o ar3 = [aq*cos(beta)+ap*sin(beta)]*sin(phi) + [ar*cos(alpha)+{-aq*sin(beta)+ap*cos(beta)}*sin(alpha)]*cos(phi)
                    o ap3 = -ar*sin(alpha) + [-aq*sin(beta)+ap*cos(beta)]*cos(alpha)


                    Fin de la première partie: nous avons calculé les accélérations linéaires et angulaires dans le référentiel « aéronef », EN SON CENTRE DE GRAVITE. Jusqu’à présent, nous n’avons fait aucune approximation par rapport au modèle de X-Plane; ces valeurs permettent de commander n’importe quel cabine de simulation (de 1 à 6 axes), pour n’importe quel aéronef (ballon, avion, hélico, voiture, bateau, soucoupe volante…).

                    Deuxième partie, l’adaptation à la configuration de la cabine. Je vois trois étapes :
                    1. Le centre/point de référence de la cabine du simulateur se trouve-t-il près du centre de gravité de l’aéronef ?
                    Probablement pour un aéronef compact, comme un ULM. Sûrement pas pour un avion de ligne ! Il suffit d’imaginer un tel avion au décollage : la dérive « descend », le centre de gravité reste encore un peu à hauteur constante, alors que le cockpit « monte » ! Les calculs précédents sont corrects au centre de gravité. La cabine du simulateur correspondant au cockpit, il nous faudrait donc corriger les valeurs déjà calculées.
                    2. Tenir compte du nombre d’axes du simulateur
                    3. Adapter la sensibilité des axes (proportionnel, sinusoïdal, …) selon les préférences de l’utilisateur, pour donner un comportement réaliste, arcade ,…

                    Imaginons (au hasard) le cas d’une cabine 2 axes (roulis, tangage) pour simuler un ULM.
                    · On peut considérer que le centre de la cabine est proche du centre de gravité : pas de correction
                    · On dispose d’un axe de roulis (Z en référence X-Plane) et d’un axe de tangage (X en référence X-Plane)
                    o ax3 correspond à une accélération latérale, qui peut être simulée par l’axe de roulis
                    o ay3 correspond à une accélération verticale, qui ne peut être simulée avec les axes proposés
                    o az3 correspond à une accélération longitudinale, qui peut être simulée par l’axe de tangage
                    o aq3 correspond à une accélération de tangage, qui peut être simulée par l’axe de tangage
                    o ar3 correspond à une accélération de lacet, qui ne peut être simulée avec les axes proposés
                    o ap3 correspond à une accélération de roulis, qui peut être simulée par l’axe de roulis
                    · La sensibilité (= consigne moteur cabine par rapport à une valeur d’entrée calculée) dépend de l’utilisateur/concepteur de la cabine.
                    o L’axe moteur de roulis aura par exemple comme consigne : k1*ax3 + k2*ap3
                    o L’axe moteur de tangage aura par exemple comme consigne : k3*az3 + k4*aq3

                    Je croise les doigts et je vais boire une bière!

                    Dominique
                    Dernière modification par FlyingBaldy, 23 mars 2011, 20h53.
                    XP11.41 - WIN 7 - i7 - GTX970

                    Commentaire


                    • #1
                      Bonjour Dominique,
                      je prends en compte le problème du signe et le règle cet après midi.
                      A la suite de votre poste, j'aurais encore quelques questions pour éclaircir mon esprit.
                      1-Je ne comprends pas a quel axe correspond chaque acceleration. En effet, vous dites "On dispose d’un axe de roulis (Z en référence X-Plane)
                      et vous en déduisez "az3 correspond à une accélération longitudinale, qui peut être simulée par l’axe de tangage"
                      Je ne comprends donc pas la déduction. Pouvez-vous m'éclaircir la dessus?
                      2-Ensuite, pour commander le moteur j'aimerais avoir un indice sur la déterminaison des coefficient(k1*ax3 + k2*ap3). Avez vous une méthode ou une marche à suivre?
                      ap3 est en rad/s-2 alors que ax3 est en m/s-2 il y a une conversion à faire je pense non?
                      En espérant que la bière était bonne,
                      Encore une fois merci. Sans vous je ne serais pas rendu bien loin dans la mise en oeuvre de la commande de la plateforme...
                      Antonin

                      Commentaire


                      • #1
                        Envoyé par haprock Voir le message
                        Encore une fois merci. Sans vous je ne serais pas rendu bien loin dans la mise en oeuvre de la commande de la plateforme...
                        Quand ça marchera il faudra l'inviter à l'essayer.

                        Daniel
                        Intel I5 6500 3,2 Ghz, RAM 16 Go, GeForce GTX 960 2 Go, Linux Ubuntu 18.04
                        Portable Asus Intel i5 2,8 Ghz, RAM 8 Go, GeForce 840M, Windows 8.1 64bits
                        #AMD II X2 245 2,9 Ghz, RAM 8 Go, GeForce GTX 650 1 Go, Linux Ubuntu 14.04
                        #AMD 64x2 5200 2,6 Ghz, RAM 4 Go, GeForce 9600 GT 512 Mo, Linux Ubuntu 10.04
                        #MacBook Pro 15" 2,4 Ghz, RAM 4 Go, GeForce GT 330 M 256 Mo, Mac OS 10.6

                        Commentaire


                        • #1
                          1-Je ne comprends pas a quel axe correspond chaque acceleration. En effet, vous dites "On dispose d’un axe de roulis (Z en référence X-Plane)
                          et vous en déduisez "az3 correspond à une accélération longitudinale, qui peut être simulée par l’axe de tangage"
                          Je ne comprends donc pas la déduction. Pouvez-vous m'éclaircir la dessus?


                          Cela est dû à deux facteurs :
                          1. La différence entre accélérations linéaires et angulaires
                          2. L’approximation faite dans le cadre d’une cabine de simulateur qui ne possède que 2 axes.

                          Je considère l’axe Z mais ceci s’applique naturellement aussi aux axes X et Y.
                          Les accélérations peuvent être représentées par un vecteur, c’est-à-dire une grandeur/intensité et une direction. Les calculs trigonométriques précédents servent à calculer les coordonnées du même vecteur « accélération » dans différents référentiels au moyen de matrices de rotation.
                          Un même vecteur aligné avec l’axe Z (= axe du « fuselage » dans X-Plane) peut représenter :
                          · Soit une accélération linéaire (LE LONG de l’axe Z): il représente dans ce cas une augmentation ou une diminution de vitesse de l’aéronef. Le signe détermine le sens ; pour X-Plane, l’axe Z est orienté vers l’arrière de l’avion, une accélération positive entraîne donc un ralentissement de l’avion (je sais c’est compliqué, mais je n’ai pas choisi le sens des référentiels de X-Plane). Une accélération ‘az’ négative correspond à une augmentation de vitesse de l’avion, par exemple au décollage.
                          · Soit une accélération angulaire (AUTOUR de l’axe Z) : il s’agit cette fois d’une rotation autour de fuselage, donc un roulis.

                          DANS LE CADRE d’une cabine mue par DEUX AXES DE ROTATION (roulis et tangage) :
                          · On ne dispose pas d’axe linéaire pour simuler les accélérations linéaires. Comment faire ? C’est simple, nous allons tricher ! Prenons l’exemple d’une automobile : lors d’une forte accélération, le corps est « plaqué » contre le siège (par inertie, le corps ne reste pas sur place parce que le dossier du siège le pousse vers l’avant); lors d’un freinage puissant, le corps a tendance à glisser en avant du siège (par inertie, le corps a une tendance à continuer à la même vitesse et c’est la ceinture qui le retient). Pour simuler ces effets dans un simulateur, on va donc basculer le siège d’avant en arrière (tangage) comme suit : ‘az’ négatif => avion accélère => siège bascule en arrière / ‘az’ positif => ralentissement => le siège bascule vers l’avant. Si ce n’est pas encore clair, demande à un copain de te prêter sa 2CV et tu comprendras encore mieux. Cela fonctionne également avec une Porsche ou une Ferrari mais je pense qu’il est plus facile d’emprunter une 2CV. En conclusion : pour une cabine à deux axes rotatifs, ’az’ (accél. Linéaire le long de Z) commande le moteur l’axe de tangage
                          · Pour les accélérations angulaires, c’est beaucoup plus simple : une accélération autour de Z se traduit par une rotation autour de l’axe de roulis. Il suffit de régler la valeur de butée et la sensibilité. ‘ap’ est une accélération de roulis dans X-Plane qui commande le moteur de l’axe de roulis.

                          2-Ensuite, pour commander le moteur j'aimerais avoir un indice sur la déterminaison des coefficient(k1*ax3 + k2*ap3). Avez vous une méthode ou une marche à suivre?
                          ap3 est en rad/s-2 alors que ax3 est en m/s-2 il y a une conversion à faire je pense non?

                          Comme je l’ai dit précédemment, il y aura une part d’essais à prévoir.

                          La rotation de la cabine est limitée (+/-15°) : il faut donc prévoir une valeur maximale des accélérations au-delà desquelles la cabine ne bougera plus. Il faut dès lors fixer ces valeurs maximales, une par axe (dans notre cas, ax/az/aq/ap, les autres n’étant pas utilisés par la cabine). On peut même sophistiquer en prévoyant des butées différentes en négatif et en positif (par ex. accélération longitudinale maxi plus grande en valeur absolue que le freinage maxi). Je te propose de les fixer en fonction de la fiche technique de l’ULM que vous voulez simuler. Une autre méthode consiste à effectuer un vol type avec X-Plane et à lire les accélérations typiques à partir des sorties X-Plane.

                          On gère ensuite pour chaque axe moteur de cabine, l’importance que l’on accorde à chaque accélération :
                          · Roulis : par exemple 50% ‘ax3’ et 50% ‘ap3’
                          · Tangage : par exemple 80% ‘az3’ et 20% ‘aq3’ (on privilégie ainsi l’effet moteur ce qui correspond à un appareil sans ou avec peu de flaps par exemple – avec un appareil sous-motorisé mais avec flaps, aéro-freins, … on pourrait plutôt privilégier ‘aq3’).

                          Il faut enfin choisir une sensibilité pour chaque axe :
                          · Pour un comportement calme, on va utiliser un coefficient faible.
                          · Pour un comportement arcade (sortez vos sacs), on utilisera des coefficients plus importants
                          · On peut également faire varier le coefficient : faible variation pour de petites accélérations, grandes variations pour des accélérations moyennes, faibles variations pour de grandes accélérations… Quand tu en seras là, ce sera pour faire passer ta cote de 18,5 à 19/20 à mon avis.

                          Pour résumer, je commencerais par programmer les moteurs comme suit :
                          Si ax3 > ax_max alors ax3=ax_max
                          Si az3 > az_max alors az3=az_max
                          Si aq3 > aq_max alors aq3=aq_max
                          Si ap3 > ap_max alors ap3=ap_max
                          k1 = 0.50 / k2 = 1-k1 / k3 = 0.80 / k4 = 1-k3
                          Moteur_roulis = k1*ax3 + k2*ap3
                          Moteur_tangage = k3*az3 + k2*aq3

                          Thumbs up !

                          Je vais me reprendre une autre petite bière….

                          Dominique
                          Dernière modification par FlyingBaldy, 24 mars 2011, 16h21.
                          XP11.41 - WIN 7 - i7 - GTX970

                          Commentaire


                          • #1
                            Quelle explication ! J'ai tout compris, enfin presque.
                            "Moteur_roulis = k1*ax3 + k2*ap3"
                            k1*ax3 -> m/s-2
                            k2*ap3" -> rad/s-2
                            Avons nous le droit d'additionner deux unités différente?
                            En outre, j'ai parlé a mon prof de math et je lui ai montré l'image avec la transformation d'une accélération en un angle. Il m'a donné tout de suite une equation qui me parait pas mal.
                            AngleMoteur = AngleMoteurMax * sin( (PI/(2*AccelerationMax)*Acceleration))
                            AngleMoteur -> ce que l'on souhaite recuperer pour commander le moteur
                            AngleMoteurMax-> la buté définie dans le cahier des charges à +30°
                            AccelerationMax-> Valeur définie après des tests dans xplane
                            Acceleration-> Acceleration instantanée de l'avion à un temps t pour un des 2 axes
                            On repète la même équation avec l'autre axe et avec des valeurs de buté différentes.
                            Le problème, c'est que si je fait "Moteur_roulis = k1*ax3 + k2*ap3" ça ne peut plus fonctionner.
                            Et le fait d'additionner des m/s-2 et des rad/s-2 me dérange. On obtient quoi au final?
                            Je suis sur que c'est évident pour vous, pardonnez ma négligence...
                            En vous remerciant encore une fois.
                            PS: Après que les autres départements de l'iut aient fait leur part du travail, je prendrais contact avec mon prof pour que Dominique ait un pass VIP.

                            Commentaire


                            • #1
                              J'ai dû abréger mon message précédent pour participer à une réunion.

                              J'aurais dû écrire :
                              roulis_max = 15 (si course moteur cabine est 30° total)
                              tangage_max = 15 (si course moteur cabine est 30° total)
                              Moteur_roulis = (k1*ax3/ax_max + k2*ap3/ap_max)*roulis_max
                              Moteur_tangage = (k3*az3/az_max + k2*aq3/aq_max)*tangage_max

                              Concernant les unités, la bonne formule telle que ci-dessus fournit les unités correctes:
                              exemple avec seulement une accélération 'ax': Moteur_roulis = (k1 * ax3/ax_max)*roulis_max est bien en degrés car 'ax3' et 'ax_max' sont en degrés/s² et 'roulis_max' est en degrés.

                              La formule que t'a proposée ton professeur correspond à la mienne mais en introduisant une fonction sinusoïdale qui est plus évoluée et qui correspond exactement à ce que j'avais proposé précédemment (mon message du 17/3 19h18 - proposition de type 3).

                              Elle est pas belle la vie?

                              Dominique
                              Dernière modification par FlyingBaldy, 24 mars 2011, 17h28.
                              XP11.41 - WIN 7 - i7 - GTX970

                              Commentaire


                              • #1
                                C'est encore moi...
                                Si je ne m'abuse, 'ax3' et 'ax_max' sont en m/s-2 en revanche ap3 et ap_max sont en °/s-2 ou rad/s-2 mais cela ne change rien car les unité s'annulent normalement.
                                Ce que j'ai du mal a comprendre, c'est la forme de la courbe représentée par Moteur_roulis = (k1*ax3/ax_max + k2*ap3/ap_max)*roulis_max, car si j'utilise cette fonction, la fonction que vous m'aviez donnée et revue par mon prof n'est donc pas utilisée. Laquelle est la meilleure? Ou peut être qu'on peut prendre en compte à la fois les accélérations linéaires et les accélérations angulaires et passer ces accélérations dans des fonctions du type de celle que j'ai mis dans le poste précédent.
                                Qu'en pensez-vous?

                                Antonin

                                Commentaire

                                Chargement...
                                X