jueves, 29 de abril de 2021

LEGO EV3 Gyro Boy. Una experiencia del Club de Robótica IESBI mostrada en Expociencia en los Recreos.

 Pinchad en las fotos para acceder a los vídeos:





En palabras de Sergio Miñano, el alumno encargado de montar y cargar el programa del robot y de hacer las demostraciones, “El pasado trimestre se me dio la oportunidad de trabajar con el Lego Mindstorm

EV3. Este es un robot de Lego, que una vez montado, se puede programar de una forma fácil e intuitiva,

con un idioma de programación inspirado en Scratch del MIT.

Con las nuevas tecnologías, esto es una buena forma de iniciarse en la programación, un campo en constante desarrollo, y con cada vez más importancia.

La sencillez del montaje y la programación, y la facilidad de ver el resultado de esta hace la experiencia bastante amena, dando además unas posibilidades muy amplias para crear lo que quieras.

En mi caso concreto hice un robot que se mantenía en pie sobre dos ruedas alineadas una al lado de la otra. Este, dependiendo de hacia donde se inclinase, corregía el movimiento con un movimiento contrario. El movimiento se hacía dependiendo de varios factores. Además, el equipo cuenta con varios sensores, en este caso se utiliza un giroscopio para medir la inclinación y un sensor de colores que, dependiendo del color que lea, hace una serie de movimientos.

Siendo tan amigable, proporcionado por el centro y tan ameno recomendaría la experiencia.”


Efectivamente, Gyro Boy hace algo que, como sabe cualquiera que haya probado suerte con un monociclo, es muy complicado: desplazarse sobre una rueda sin perder la verticalidad. Vamos a explicar cómo.


Para comprender su funcionamiento podemos fijarnos inicialmente en sus partes funcionales y después en el programa que ejecuta. Para ello podríamos instalarnos la aplicación EV3 Classroom que nos mostrará los planos de montaje y el programa que ejecuta.

https://education.lego.com/en-us/downloads/mindstorms-ev3/software

Tras navegar un poco por la aplicación encontramos los planos de montaje y prestamos atención a las siguientes partes funcionales:

- servomotores: son motores eléctricos en los que podemos controlar el sentido, ángulo y potencia de giro. Los acoplamos directamente a las ruedas. Si giran en el mimo sentido, el robot se desplazará hacia adelante o hacia detrás. Si giran en sentidos

contrarios, el robot girará a derechas o a izquierdas sobre el plano







- el giroscopio permite medir la inclinación o ángulo realizado por el sensor en las tres direcciones del espacio. También permite detectar aceleraciones o frenadas. Podemos verlo en el dibujo anterior.


- sensor de contacto y servomotor: la función del sensor de contacto sería detectar cuando retiramos el “asiento” del robot que lo sustenta al principio y que lo sitúa en una situación de verticalidad respecto del plano horizontal que le servirá de referencia. El servomotor tiene como función mover los brazos del motor ejecutando una especia de baile.




- el ladrillo (brick) que es el cerebro y el corazón del robot: almacena el programa y lo ejecuta recibiendo información de los sensores y mandando órdenes a los servomotores. Sensores y servomotores se conectan al ladrillo mediante cables. El ladrillo podrá también mostrar información gráfica o de texto en su pantalla, emitir sonidos e interactuar con el usuario mediante unos pulsadores que incorpora.


- el sensor de color: identifica los colores que incluye el asiento y ejecuta una serie de movimientos dependiendo de estos cuatro colores.
- el sensor de ultrasonidos: mide la distancia hasta un objeto que se sitúe frente a él. Le indicará al robot que realice un movimiento al detectar la presencia de algo a una distancia mínima. Se sitúa en el brazo izquierdo.



Aquí tenemos una vista de conjunto del robot con el “asiento” que asegura su verticalidad y los colores que leerá el sensor de color.

Aquí tenéis un vídeo del montaje

https://www.youtube.com/watch?v=zDjWz4jC59s


Si navegamos otra vez por la aplicación podremos acceder al programa que ejecuta. Dentro de este programa podemos identificar dos “main task” o dos secuencias de programación  simultáneas principales que ejecuta dentro de sendos bucles infinitos. La primera secuencia de programación monitoriza los Sensores de color y ultrasónico para controlar la velocidad y la dirección del conductor. La segunda secuencia de programación es el bucle de control principal para equilibrar el robot. Esta última hace varias llamadas a bloques de creación propia para crear variables, calibrar el girospio  y otras. Las ayudas que incorpora el programa explican muy bien la función de cada bloque.



Mejor que explicar el programa en detalle, vamos a explicar en qué se basa el control de la verticalidad del robot. Si consideramos el ángulo respecto de la vertical una desviación no deseable o error, debemos pedir a las ruedas motrices que giren en un sentido, ángulo y velocidad suficientes para corregirlo.

El problema es cuantificar esta acción correctora: si es demasiado potente y prolongada en el tiempo, el robot caerá en sentido contrario; si es demasiado floja y no responde con inmediatez el robot seguirá cayendo hasta alcanzar un ángulo imposible de corregir (tiene el centro de gravedad muy alto y eso limita la posibilidad de corrección: a partir de una inclinación el robot caerá irremisiblemente). Se ha visto en uno de los vídeos del principio: la acción correctora provoca una oscilación creciente del robot que acaba por tumbarlo. En la curva error (ángulo) respecto del tiempo que se muestra a continuación vemos lo que pasa cuando la acción correctora agrava el problema más que solucionarlo.

 

 


Lo que se hace en estos casos es que la acción correctora es proporcional a la suma de tres componentes:

- proporcional: el valor del error o ángulo de desviación en cada instante. Así, adecuamos la respuesta al valor de la desviación.

- integral: el valor del área de la curva de error respecto de la última vez que pasó por el eje horizontal: así evitamos la aparición del error acumulado que la acción proporcional no detecta y corrige y evitamos retrasos prolongados en la corrección.

- derivativo: la pendiente de la curva de error. Esta componente atenúa curvas demasiado crecientes o decrecientes evitando también acciones correctores demasiado potentes.

A continuación se muestra cómo se representa la este sistema de control en diagrama de bloques y cómo afecta a la curva de error la incorporación de las componentes en una curva temperatura tiempo de otro proceso regulado diferente que hemos tomado de ejemplo.










Os dejo a vosotros interpretar en el programa cómo responde el robot a las señales del sensor de colores y del sensor de ultrasonidos y cómo calcula el robot la respuesta y cómo tiene en cuenta el movimiento de los servomotores en ese cálculo.


Para terminar un vídeo realizado durante la demostración de Sergio ante sus compañeros de clase.

https://drive.google.com/file/d/14-o5aZwsycZb3DIXVfu0WbPcwye7RQfG/view?usp=sharing

 

Y otros vídeos de youtube

https://www.youtube.com/watch?v=B21WSmoqUzU

https://www.youtube.com/watch?v=51utce9cBto

https://www.youtube.com/watch?v=8gudD9nUmEk

https://www.youtube.com/watch?v=4Yv_vvUx0Zs



No hay comentarios:

Publicar un comentario