martes, 22 de marzo de 2011

Práctica 4. Buscando el equilibrio

Aqui viene la entrada para la práctica 4, en ella hemos tenido que implementar un Segway con nuestros NXT asi que hemos tenido que rediseñar el aspecto de nuestro robot.






Como vemos ahora VivaBender tiene un aspecto mucho mas simple, con dos motores y un sensor de luz que nos serán suficientes para implementar este Segway.

El concepto de la práctica es sencillo, tenemos que equilibrar al robot basándonos en los valores que obtenemos del sensor de luz, si se inclina hacia delante obtendremos más luz y tendremos que corregir moviendo la base hacia delante y en caso de caer hacia atrás percibiremos menos luz y moveremos la base hacia atrás.

¿La manera de conseguir esto? Un controlador PID. Este tipo de controlador es una forma sencilla de mantener un estado concreto en un sistema (en nuestro caso mantenernos en equilibrio), basa su funcionamiento en tres constantes: la proporcional (P) corrige el error de forma proporcional a este; la integral (I) corrige un error prolongado en el tiempo y la derivativa (D) hace que no tratemos igual a un mismo error si este está disminuyendo o si está aumentando.

La fórmula final queda como sigue:

Valor PID = Kp * error + Ki * error_integral + Kd * error_derivativo

En lo referente a código esta práctica apenas tiene nada más que esta fórmula pero donde realmente nos ha hecho pensar es en la correcta elección de cada una de las constantes. Sin duda hay que elegir una constante Kp correcta y en base a esto ir eligiendo las demás, todo se basa en ensayo y error, hemos observado que una vez elegida una constane Kp que creemos adecuada aumentar Ki hace al sistema más reactivo, pero pasarse en esta constante crea grandes oscilaciones, asimismo aumentar Kd proteje al sistema frente a cambios bruscos pero lo hace algo mas lento en su reaccion general.

Tras mucho calibrar y probando distintas atenuaciones y cotas para la componente integral (sin ninguna duda la que más quebraderos de cabeza nos ha dado) llegamos a esto.





Es un comportamiento bastante satisfactorio pero todavía nos quedaba un as en la manga, como se observa en el video el sensor está al descubierto, quedando asi expuesto a la luz ambiental, esto puede alterar las lecturas del sensor de modo que en la siguiente prueba colocamos una "pantalla" a VivaBender, con esto creamos una zona de sombra debajo del sensor y permitimos que este tome medidas mucho mas fiables. He aqui el resultado final.





Ahora si quedamos satisfechos, hemos intentado enfocar desde todos los ángulos para que se observe como en todo momento el robot se mantiene en equilibrio únicamente por acción del controlador PID. Para conseguir un equilibrio lo más exacto posible hemos incluido la posibilidad de un ajuste "al vuelo", es decir, podemos ajustar el punto que el robot cree como su vertical durante la propia ejecución de este modo si al soltar al robot detectamos que tiene tendencia a irse hacia alante o hacia atrás lo podemos corregir.

Y hasta aqui la entrada, quizas la más corta y más aburrida (por lo monotono de los videos) que hemos publicado hasta ahora, pero sin más... esto ha sido todo!


1 comentario: