Sintonizar un PID con SmartDashboard

Un PID (Proporcional, Integral, Diferencial) es un algoritmo para determinar la velocidad de un motor basado en la retroalimentación de sensores, para alcanzar el punto de control lo más rápido posible. Por ejemplo, un robot con un elevador que se mueve a una determinada posición debería moverse lo más rápido posible y luego detenerse sin excederse, para no generar oscilaciones. Conseguir que el controlador PID se comporte de esta forma se llama “sintonizar”. La idea es calcular un valor de error que sea la diferencia entre el valor actual del elemento del mecanismo de retroalimentación y el valor deseado (punto de control). En caso de ser un brazo, puede que exista un potenciómetro conectado al canal análogo que provea de un voltaje proporcional a la posición del brazo. El valor deseado es el voltaje predeterminado a la posición a la que se moverá el brazo, y el valor actual es el voltaje para la posición actual del brazo.

Encontrar los valores de los puntos de control con LiveWindow

Setting a motor's speed with LiveWindow.

Cree un subsistema PID por cada mecanismo con retroalimentación. Los subsistemas PID contienen el actuador (motor) y el sensor de retroalimentación (potenciómetro, en este caso). Puede usar el modo de prueba para visualizar los sensores y actuadores del subsistema. Utilice manualmente el intensificador para ajustar el actuador a la posición que desee. Note que los valores del sensor (2) para cada posición deseada. Estos valores se convertirán en los puntos de control de los controladores PID.

Visualizar el controlador PID en LiveWindow

Controlling a PIDController in LiveWindow.

En el modo de prueba, los subsistemas PID se muestran con sus parámetros P, I, y D por separado. Los valores P, I y D son los pesos aplicados al error calculado (P), la suma de los errores en razón al tiempo (I), y la tasa de cambio de los errores (D). Cada uno de estos términos es multiplicado por los pesos y se añaden juntos para formar el valor del motor. Escoger los valores óptimos para P, I y D puede ser una tarea difícil y requiere cierta experiencia. El modo de prueba permite modificar estos valores, y observar el mecanismo de respuesta.

Importante

The enable option does not affect the PIDController introduced in 2020, as the controller is updated every robot loop. See the example here on how to retain this functionality.

Sintonizar el controlador PID

Using the PIDController to tune the control.

Tuning the PID controller can be difficult and there are many articles that describe techniques that can be used. It is best to start with the P value first. To try different values fill in a low number for P, enter a setpoint determined earlier in this document, and note how fast the mechanism responds. If it responds too slowly, perhaps never reaching the setpoint, increase P. If it responds too quickly, perhaps oscillating, reduce the P value. Repeat this process until you get a response that is as fast as possible without oscillation. It’s possible that having a P term is all that’s needed to achieve adequate control of your mechanism. Further information is located in the Tuning a Flywheel Velocity Controller document.

Una vez que ha determinado los valores de P, I y D estos pueden añadirse a su código. Puede encontrarlos en las propiedades de sus subsistemas PID en RobotBuilder o en el constructor del subsistema PID dentro de su código.

El término F (avance) es utilizado para controlar la velocidad con el controlador PID.

Para más información, consulte Control PID en WPILib.