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.
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