Annonce

Réduire
Aucune annonce.

Autopilote Arduino pour X-plane

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

  • Autopilote Arduino pour X-plane

    Coucou la foule, je code un autopilot arduino qui controle x-plane.

    Vous pouvez voir une vidéo ou l'arduino ne controle que la vitesse :


    Une video ou je controle vitesse + AoA mais le controle d'AoA etait encore foireux a ce moment la :


    Maintenant j'ai un controle de Vitesse + AoA + vitesse verticale (fpm), je poste une vidéo demain.

    L'arduino prend le controle du joystick via UDP.
    Le controle de la vitesse est simple direct.
    Ensuite il y a un controle d'AoA et l'AoA cible est determiné par le controle de vitesse verticale.

    Et le code source of course : https://github.com/ker2x/ArduinoXPla.../master/source

  • #1
    Bon courage.
    Portable PC LDLC Intel(R)Core(TM)i7 7700 4.2ghz, Mem:36GO - 2 cartes graphiques GTx1080sli 8go - windows 10
    XP v9 & v10 & v11

    (ancien)Pilote Privé, pilote modèles réduits dont hélico.
    Roule en Burgman 650, roulait en Spyder, roulait en ST1300.

    Commentaire


    • #1
      Merci

      Des gens connaissent la théorie pour les autopilotes ?
      Vous pensez quoi de l'utilisation de l'AoA plutot que le pitch pour controler la vitesse verticale ?

      Commentaire


      • #1
        Oui bon courage ...

        Les sondes AoA mesure l'incidence, à puissance égale, si je change l'incidence pour monter, je perds de la vitesse, ce qui peut être tragique :-)
        Pour monter je préfère ( comme proposé sur la plupart des PA ) utiliser IAS, et gérer la montée avec le réglage des gaz.
        L'utilisation de VS oblige également à gérer sa vitesse pour rester dans les limites basse et/ou hautes.

        Le trim ( à ma connaissance ) est présent pour régler l'avion dans les configurations de décollage/montée, croisière, descente .

        Jouer sur l'incidence est plus réservé aux avions "de chasse" pouvant voler hors des domaines de vol standard, grâce à leur calculateur, et leur puissance.

        Hervé
        Dernière modification par djetdail, 18 août 2014, 07h54.
        La lecture des manuels, tutos, docs ... libère le pilote de la machine :-)
        X -plane 12 Win 11 Pro Gigabyte Z690 I7 12700K 64DDR5 5600Mhz RTX 3090 24Go

        Commentaire


        • #1
          J'utilise un Cessna Skymaster, pas un avion a incidence variable

          Sur mon AP, pour l'instant, le contrôleur de vitesse est totalement indépendant et tente de maintenir l'IAS qu'on lui a indiqué.
          J'ai un contrôleur qui mesure l'angle d'attaque et qui actionne la gouverne de profondeur pour maintenir l'AoA qu'on lui a indiqué.
          J'ai un 3ème controleur qui mesure la vitesse verticale (VVI dans les data x-plane) et c'est lui qui détermine la l'AoA cible pour pouvoir atteindre la VVI cible.

          Normalement, si la vitesse baisse a assiette constante, l'AoA augmente, et donc le controleur AoA actionnera la gouverne de profondeur pour piquer du nez.
          Avec ce contrôleur je ne devrai jamais décrocher.

          Dans la pratique ca ne marche pas si bien que ca
          L'angle d'attaque va rester dans une marge acceptable jusqu’à arriver a la vitesse de décrochage.

          Il faut que je retravaille mes boucles, encore

          Commentaire


          • #1
            J'ai rajouté pas mal de code.
            Une ligne de commande et un Roll control

            Le code source est dispo : https://github.com/ker2x/ArduinoXPlaneAutopilot

            Commentaire


            • #1
              Envoyé par ker2x Voir le message
              Des gens connaissent la théorie pour les autopilotes ?
              Comme tu comprends l’anglais et les PID, je ne peux que te conseiller le site www.diydrones.com, en particulier la partie ARDUPLANE.
              Pourquoi ?
              Il s’agit d’un système Open Source de pilote automatique évolué pour drones basé sur une plateforme ARDUINO. Il est soutenu par une communauté nombreuse.
              Les fonctions sont très évoluées puisqu’il intègre une navigation automatique avec points tournants, trajectoires droites et curvilignes, gestion automatique du décollage de l’atterrissage, réglage en vol des paramètres de régulation Kp, Ki, Kd, et réglage automatique de ces paramètres, gestion de la trajectoire optimisée pour l’énergie, zones interdites, vol inversé, etc.
              Le site présente également des diagrammes de fonctionnement des routines principales de contrôle.
              Bref de quoi passer de longues soirées d’étude et trouver ton bonheur.
              Deux pages pour commencer mais n'hésite pas à consulter la table des matières (surtout la partie FLYING):

              XP11.41 - WIN 7 - i7 - GTX970

              Commentaire


              • #1
                Je connaissais mais j'avais pas trouvé ces jolies pages.
                Merci pour les liens

                Commentaire


                • #1
                  Je vais enlever le controle d'AoA, ca va grave me compliquer la vie

                  Commentaire


                  • #1
                    Envoyé par ker2x Voir le message
                    Je vais enlever le controle d'AoA, ca va grave me compliquer la vie
                    Je pense que c'est préférable.
                    Les deux contrôles imbriqués du code (résultat du calcul sur VVI qui donne la consigne pour le calcul sur AoA) risquent de donner une instabilité car il y a des différences entre AoA et Pitch:
                    * AoA (Angle of Attack ou Incidence) est l'angle entre la corde de l'aile et la direction du vent relatif.
                    * le "pitch" dépend de la trajectoire, pas du vent relatif.
                    Exemple : avion volant sur une trajectoire horizontale :
                    * pitch = 0
                    * L'avion vole avec un AoA positif (à moins d'une aile à forte cambrure qui donnerait suffisamment de portance même à incidence nulle) => AoA est normalement positif en vol horizontal.

                    Le calcul de 'VVI.Com****' va fournir un VVI_out = 0 ou très petit (car l'avion vole à l'horizontale => VVI_in = 0 et la consigne est VVI_target = 0 => pas d'écart).
                    Le calcul de 'AOA.com****' devrait entrainer une oscillation car:
                    AoA_in = valeur positive (angle d'incidence en vol horizontal)
                    AoA_target = VVI_out = 0
                    Par conséquent cette partie du code (AOA.com****) va donner un AoA_out non nul, quels que soient les coefficients Kp, Ki, Kd.
                    Or cette valeur AoA_out est envoyée à X-Plane sous forme de consigne pour la profondeur (elevator).
                    La profondeur va alors quitter sa position pour modifier le pitch, ce qui va modifier l'assiette de l'avion qui va ainsi quitter sa trajectoire horizontale....

                    L'intérêt d'utiliser l'AoA est qu'il est normalement plus réactif que la VVI, mais cela devrait se faire sous une autre forme.

                    Autres améliorations possibles:
                    * Si tu choisis de faire varier la vitesse (Speed) de consigne (120 dans le code Arduino), il serait bon d'en tenir compte dans le calcul du 'roll' (avec les ailerons) et du 'pitch' (avec la profondeur), en atténuant la correction aux grandes vitesses (sur un avion de ligne, il existe des ailerons Low Speed près de l'extrémité des ailes, et des ailerons High Speed près de l'emplanture).

                    * Pour le Pitch, une amélioration consiste à tenir compte du roll (une inclinaison latérale augmente la traînée donc réduit le taux de montée).
                    Dernière modification par FlyingBaldy, 19 août 2014, 20h03.
                    XP11.41 - WIN 7 - i7 - GTX970

                    Commentaire


                    • #1
                      Envoyé par FlyingBaldy Voir le message
                      Le calcul de 'VVI.Com****' va fournir un VVI_out = 0 ou très petit (car l'avion vole à l'horizontale => VVI_in = 0 et la consigne est VVI_target = 0 => pas d'écart).
                      Quand mon post affiche "com****", il s'agit d'un excès de zèle de l'application qui gère ce forum.
                      J'ai naturellement voulu écrire le nom utilisé dans le code Arduino, c'est-à-dire "c o m p u t e" mais il semble que les 4 dernières lettres correspondent à un mot défendu. Mon dieu quelle horreur!
                      XP11.41 - WIN 7 - i7 - GTX970

                      Commentaire


                      • #1
                        Merci pour les infos

                        En fait c'est justement le soucis de correction pitch/roll qui me fait abandonner l'idée d'utiliser l'AoA pour commander la profondeur.

                        Donc je vais passer par le pitch pour commander la profondeur.

                        Ensuite je vais pouvoir m'occuper de la dérive.
                        Parce que la techniquement j'autopilote sur 2 axe pour l'instant

                        Commentaire


                        • #1
                          Je me prend la tete sur le cap

                          Je veux pas aller de 0° a 360° mais de -inf à +inf
                          Et encore, je suis pas sur, je pense qu'il y a un modulo 360 a caser quelque part.
                          Mais c'est probablement meme pas ce qu'il faut faire non plus.

                          En fait il faudrait probablement avoir un hding_Target = 0.0f et un hding_In compris entre -180 et 180.
                          et le In etant la difference entre le cap cible et le cap actuel. A grand coup de +/- 360° et de modulo et... gaaaah

                          Commentaire


                          • #1
                            mmm non c'est pas ca.

                            Commentaire


                            • #1
                              Ce sujet concernant plus la programmation pour carte Arduino, je l'ai déplacé vers la rubrique Matériel.

                              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

                              Chargement...
                              X