jueves, 24 de marzo de 2011

Práctica 4 - Control PID: el robot equilibrista

Para la realización de ésta práctica comenzamos rediseñando el robot, para eso tras unos primeros diseños erróneos, ya que el robot quedaba demasiado desequilibrado, buscando un poco por internet y comparando algunos modelos segway utilizamos el mostrado en la imagen, que conseguía cierta estabilidad.


A continuación nos informamos un poco más sobre la estabilización mediante PID, para ello utilizamos el siguiente enlace de la wikipedia: http://es.wikipedia.org/wiki/Proporcional_integral_derivativo. Un vez comprendido el controlador PID pasamos a ponerlo en práctica en el código. Para ello utilizamos las siguientes formulas que definen cada componente PID:


   P=Medida_Actual-Posicion_Inicial;
I = I+P;
D = P-Error_Anterior;
PID = P*Kp+I*Ki+D*Kd;

El valor obtenido del PID, será el que definirá la velocidad de los motores, de forma que si el PID es positivo (el robot cae hacia adelante) el robot avanzará y si el PID es negativo (el robot cae hacia atrás) el    robot retrocederá. 
Según este comportamiento, realizamos pruebas para ajustar cada constante proporcional. Observando el comportamiento del robot al modificar estas constantes llegamos a la conclusión de que la constante proporcional debería tener una valor suficientemente relevante como para recoger el error actual, la proporcional integral debía tener valores muy pequeños ya que al ser el sumatorio de los errores aumentaba mucho la velocidad del motor, respecto a la constante proporcional derivativa decidimos ajustarla a valores muy altos, ya que al ser la diferencia entre el error actual y el error anterior si esta diferencia es mucha quiere decir que el robot estará muy desequilibrado por lo que necesitará una mayor velocidad y al contrario si la diferencia es pequeña significará que el robot esta relativamente equilibrado con lo que la velocidad no deberá aumentar en exceso. Así decidimos que la mejor configuración y la que mejor resultados nos dio es la siguiente: Kp=30, Ki=2,Kd=160.

A continuación mostramos el robot realizando el equilibrio:


y el siguiente muestra como vuelve a buscar el equilibrio tras desequilibrarle:


No hay comentarios:

Publicar un comentario