Pregunta

Tengo una aplicación en la que estoy guiar un vehículo en los rumbos de la brújula y estoy teniendo un problema cuando el vehículo cruce de 360 grados a 0 grados.

En este caso, no hay inteligencia en el lazo de control para calcular que la manera más cercana a girar para seguir un rumbo.

Por ejemplo, si el vehículo es instruido para seguir un rumbo de 360 grados, inevitablemente se desplaza un par de grados al éter lado.Si se desplaza a 0+ grados, el lazo de control se vuelven locos y tratar de dirigir el vehículo todo el camino para llegar a los 360 grados de nuevo.

Hay una elegante manera de lidiar con esto?

La forma en que el navegar función está escrito, yo uso un controlador PID externo de clase y tengo que calcular el título como este:

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

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

            steering.Degree = mv;
        }

Gracias!

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top