Question

J'ai une application dans laquelle je guide un véhicule selon les caps de la boussole et je rencontre un problème lorsque le véhicule passe de 360 ​​degrés à 0 degré.

Dans ce cas, il n'y a pas d'intelligence dans la boucle de contrôle pour calculer la façon la plus proche de tourner pour suivre un cap.

Par exemple, si le véhicule reçoit l’ordre de suivre un cap de 360 ​​degrés, il dérivera inévitablement de quelques degrés vers l’autre côté.S'il dérive à plus de 0 degrés, la boucle de contrôle deviendra folle et essaiera de diriger le véhicule complètement pour le ramener à 360 degrés.

Existe-t-il une manière gracieuse de gérer cela ?

De la façon dont la fonction de navigation est écrite, j'utilise une classe de contrôleur PID externe et je calcule le cap comme ceci :

            lock (steering)
        {
            if (!Engaged)
            {
                return;
            }

            double mv = 90 + Trim + pidController.CalculateCorrection(flyHeading, currentHeading);

            steering.Degree = mv;
        }

Merci!

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top