Implementación de control de crucero

3

Estoy haciendo un proyecto que requiere que implemente un sistema de control de crucero en un auto RC usando un GPS para retroalimentación.

He implementado controladores PID anteriormente, pero esto es un poco nuevo para mí porque en lugar de generar un delta de corrección como -8 o +6, el controlador debe generar un valor de 0 a 100, siendo 100 tan rápido como el coche puede irse, y 0 es un punto muerto.

Al principio, intenté usar una solución en la que mantuve una cuenta corriente del acelerador actual y simplemente le agregué el mv del controlador PID. Esto se convirtió en un gran problema porque la variable "currentThrottle" se convirtió esencialmente en un segundo integrador y con frecuencia se liquidaba cuando el automóvil no respondía lo suficientemente rápido.

Una limitación de este proyecto es que no puedo modificar el algoritmo utilizado para generar el delta de corrección PID, pero puedo hacer lo que quiera con el punto de ajuste y mv antes / después de que se genere la corrección PID:

(int)cruiseControl.CalculateCorrection(8, rmc.Speed);

Donde 8 es el punto de ajuste (8kts) y rmc.La velocidad es la velocidad actual. Esto devolverá el delta de corrección calculado a partir de las variables PidConfig (Kp, Ki, Kd, control de conclusión del integrador, etc.) cuando construí el objeto PidController.

¿Alguna idea?

    
pregunta chris12892

1 respuesta

1
  

... frecuentemente terminaría cuando el   el coche no respondió lo suficientemente rápido.

Parece que las ganancias de tus bucles están fuera de lugar (técnicamente hablando). Los bucles PID están limitados por la respuesta de frecuencia del sistema que están manejando. Creo que la respuesta del acelerador es violentamente más rápida que la información de la velocidad del GPS ... haciendo que la búsqueda de alta frecuencia sea un hecho.

Comience con un Kp pequeño y todas las demás ganancias de bucle en cero. Trabaje Kp arriba hasta obtener una respuesta que sea lenta y suave ... por lo que está siguiendo un desplazamiento de la curva del punto de ajuste. Solo cuando tienes algo "menos amortiguado" puedes comenzar a generar ganancias y cerrar el error.

Si el GPS es realmente lento, una cierta interpolación de los datos de velocidad entre actualizaciones permitirá aumentar la velocidad de bucle. También ayudaría un bucle de límite de velocidad alrededor de la salida.

Un bucle PID es un modelo de un sistema ... el sistema que tienes ... no el sistema que quieres :)

    
respondido por el Rusty

Lea otras preguntas en las etiquetas