24.3.11

Práctica 4 - Control PID: el robot equilibrista

24.3.11



-Descripción de controlador PID

Esta es la formula que del controlador PID, dicha formula, a la hora de pasarla a la práctica, no se puede usar tal cual en el código, por lo tanto convertimos la integral en un sumatorio, y la derivada en la variación del error.
El resultado, u, es la velocidad que los motores deben de dar a las ruedas en cada momento para que mantenga el equilibrio

-Obtención de parámetros e implementación (kp 22, ki 1.2,kd 14, Lim de i 200)

La constante kp es una constante proporcional al error medido entre la posición en la que está y de la que debería estar

La constante kd es una costante proporcional a la derivada del error, por lo cual, esta constante es la que hace posible que cuando desequilibres al robot, el vuelva al equilibrio

La constante ki es una constante proporcional a la integral del error, la cual hace que cuanto mas alejado, o mas tiempo este alejado del punto de equilibrio, más fuerza de a los motores para recuperar la posición.

-Video del robot equilibrista


-Gráficas de la ejecución:

Con el objetivo de intentar interpretar el movimiento a partir de las constantes, del error, la integral y la derivada del error, nos propusimos capturar los datos que maneja RJV11 en cada momento. Para ello leJOS incluye un par de herramientas muy útiles, el nxjmonitor y el nxjdataviewer.

Lo óptimo hubiera sido poder monitorear todos los datos durante la ejecución del programa, casi en tiempo real, para lo cual el nxjmonitor hubiera sido la herramienta perfecta. Pero debido a la imposibilidad de conseguir ejecutarlo en nuestros ordenadores personales, y no poder usarlo en los ordenadores del laboratorio debido a la ausencia de los paquetes necesarios para la conexión bluetooth, no fue posible hacer uso del nxjmonitor. En su lugar usamos el nxjdataviewer, un pequeño programa que nos hacia posible recoger los datos de un log que íbamos generando durante la ejecución de RJV11. El nxjdataviewer cumplió su propósito perfectamente, con la pega de poder obtener solo los últimos datos recogidos, debido a la limitación de la memoria del ladrillo.

A continuación unas gráficas correspondientes a una ejecución que consiguió mantener el equilibrio durante unos 10 segundos antes de estrellarse. Las gráficas han de leerse de derecha a izquierda:

Puede observarse como las gráficas en su parte izquierda aumentan/disminuyen repentinamente, mostrandonos los valores que manejaba RJV11 en el momento de caerse.

-Conclusión

Nos ha costado mucho dar con las constantes adecuadas, pero nos hemos acercado ya que RJV11 nos aguanta 13 segundos en equilibrio. Hemos probado muchas constantes basandonos experimentalmente en las pruebas anteriores y modificando segun veiamos que necesitabamos en cada momento, y tambien basandonos en las gráficas extraidas.

Cuando aumentamos la kd, dejando las demas igual, se aumenta la velocidad de las ruedas, si disminuimos dicha constante, tambien se disminuye la velocidad.
Cuando aumentamos la ki, a la minima acumulacion de error se dispara la velocidad de las ruedas, y si se disminuye se le permite mas error y por lo tanto mas inclinacion del cuerpo del robot.
Cuando aumentamos la kd, se me hace muy sensible a la variacion de error, pero si se disminuye, no responde bien a los posibles desequilibrios externos.

Próxima entrega: Práctica 5 - Entorno simulado Gazebo y JDE

10.3.11

Práctica 3 - Navegación local evitando obstáculos

10.3.11
En esta práctica debemos hacer uso de dos sensores de contacto, dos sensores de luz, y de un sensor de ultrasonidos. Decidimos hacer un montaje el cual nos permitiera incorporar todos los sensores al mismo tiempo, se estén usando o no, esto nos permitió no perder tiempo en montajes y desmontajes, puesto que la propia naturaleza de la práctica nos obligaba a usar distintas combinaciones sensores. El resultado final es el siguiente:

Montaje final de RJV11 para la prática 3.
Los sensores de contactos serán usados a modo de parachoques, permitiéndonos detectar cuando hemos colisionado con un objeto para cualquier punto de la parte frontal de RJV11. La importancia de distinguir si la colisión se produjo por la izquierda o por la derecha es vital para saber por que lado debemos sortear el obstáculo. Por ello optamos por hacer un parachoques individual para cada uno de los sensores.

Detalle de los sensores de contacto con su doble parachoques individual.
En un principio nuestros sensores de luz estaban orientados en 90º y -90º respecto del frontal de RJV11. Dada la dificultad de estos sensores para captar la luz se decidió colocar con orientación 45º y -45º, con la esperanza de que obteniesen mejores lecturas de luz al darle más directamente.

Sensores de luz RCX con orientaciones 45º y -45º.
El sensor de ultrasonidos era necesario montarlo de tal manera que pudiera girar hacia la izquierda y la derecha con el fin de detectar obstáculos. No se nos ocurrió manera más sencilla de colocarlo que directamente sobre un eje conectado a un motor. De esta manera podemos girar el sensor facilmente gracias a la odometría interna del motor.

Sensor de ultrasonidos conectado a un motor.


Comportamiento de evitación de obstáculos usando sensores de contacto:

Para este ejercicio, hemos usado dos sensores de contacto, ya que si RJV11 choca contra un obstáculo que está a su izquierda, el robot retrocede un poco para esquivarlo, y viceversa.
Para calcular como esquivar los objetos, hemos implementado el codigo basándonos en el caso extremo, en el que el objeto está en en centro del robot ,de tal forma que lo esquive sin chocar.
También, al chocar el robot e ir hacia atrás, se descolocaba de su eje inicial y al girar no se quedaba en la misma trayectoria que al principio, por lo que decidimos que el robot se parara un intervalo de tiempo desde que choca hasta que retrocede.



Comportamiento de evitación de obstáculos usando el sensor de ultrasonidos:

En este ejercicio hay que esquivar obstaculos antes de llegar a el, para ello usamos el sensor de ultrasonidos y un motor que lo hace girar desde -45 a 45 grados de la direccion del robot.
Para calcular como esquivar ese obstaculo hemos usado funciones trigonometricas para calcular una suma ponderada de las coordenadas de las fuerzas de atraccion y repulsion. Dicha ponderacion depende de la distancia a la que se encuentre el objeto.



Comportamiento ir hacia la luz:

En una intuición inicial los sensores de luz fueron utilizados en modo pasivo, de tal manera que no emitieran luz, y fuera únicamente la luz ambiente la que les influyera. Lamentablemente pudimos comprobar como al estar en modo pasivo las lecturas de luz eran mucho menos precisas que en modo activo. Por que se pusieron otra vez en modo activo.

La orientación de los sensores pudo hacerse perfectamente en 90º y -90º, pero debido a la dificultad que tienen estos sensores para captar la luz que no le llega directamente, se decidió orientarlos en 45º y -45º, con la intención de que mejorase los resultados.

Uno de los mayores problemas de este ejercicio es el sensor de luz en si mismo. La sensibilidad que ha demostrado ha sido bastante pobre, lo cual nos ha dificultado mucho las cosas a la hora de implementar un algoritmo con los valores de luz captados.

Otro de los problemas que se pudo solucionar fue el hecho de que a pesar de que los dos sensores son del mismo modelo, ante igual exposición a la luz, nos daban valores de lectura considerablemente diferentes. Esto se arregló durante el proceso de calibrado de la oscuridad, de tal manera que le hallaba el error sistematico entre un sensor y otro ante la misma cantidad de luz (dentro de lo posible), y posteriormente se usaba ese error sistematico para equilibrar el error cometido entre los dos sensores en cada una de las lecturas.

Finalmente, y como en prácticas anteriores, para guiar a RJV11 hacia la luz se optó por un control reactivo P respecto del error cometido entre las lecturas de los dos sensores (teniendo en cuenta el error sistemático entre ambos). De esta manera si el sensor izquierdo capta más luz que el derecho, RJV11 girara a la izquierda para orientarse a la luz mediante el método steer con un valor de ratio de giro proporcional al error, y viceversa. El resultado se puede ver en el siguiente video:




Comportamiento ir hacia la luz evitando obstáculos:

En este ejercicio hemos mezclado los comportamientos tanto el de esquivar un obstaculo por contacto, como el de esquivar un obstaculo con ultrasonidos, con el comportamiento de seguir hacia la luz, por lo cual RJV11 sigue la luz esquivando los obstaculos.

seguir la luz esquivando con contacto


seguir la luz esquivando con ultrasonidos



Próxima entrega: Práctica 4 - Control PID: el robot equilibrista
 
◄Design by Pocket, BlogBulk Blogger TemplatesThe Blog Full of Games;