Domanda

Ho un'applicazione in cui sto guidando un veicolo sulle intestazioni della bussola e ho un problema quando il veicolo attraversa da 360 gradi a 0 gradi.

In questo caso, non ci sono intelligenti nel ciclo di controllo per calcolare il modo più vicino per girare per seguire un'intestazione.

Ad esempio, se il veicolo viene chiesto di seguire una voce di 360 gradi, inevitabilmente sposta di qualche gradi sul lato etere. Se si sposta a 0+ gradi, il ciclo di controllo impazzerà e proverà a guidare il veicolo tutto intorno per farlo di nuovo a 360 gradi.

C'è un modo aggraziato per affrontarlo?

Il modo in cui viene scritta la funzione di navigazione, utilizzo una classe di controller PID esterno e calcola l'intestazione in questo modo:

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

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

            steering.Degree = mv;
        }

Grazie!

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top