Aquí en primicia una versión diferente de Wall-E hecha íntegramente con vex IQ, para empezar deciros que es un robot que anda de forma autónoma esquivando todos los obstáculos que encuentra a su paso, pasamos a ver como esta hecho y después explicaremos su programación. Como podeid observar, el robot no tiene un sistema de tracción basado en cadenas como tiene el original, pero es que no dispongo de tales piezas.
Componentes:
- Distintas piezas de construcción
- 5 motores
- 1 sensor de distancia
- 1 gyro
- 1 touch led
Y ahora antes de empezar con la programación una demostración de su funcionamiento.
La programación de Wall-E es muy sencilla, la he realizado con la versión gratuita de Modkit y la vamos a explicar paso a paso desde el punto de vista de cada componente usado.
En primer lugar hablar de los componentes (motores y sensores) que forman la parte a programar del robot.
A continuaciòn las variables utilizadas:
- Pausa, es la que nos indica si el robot esta en marcha o parado, este estado se cambia al tocar el touch led.
- DerechaLibre, distancia hasta un obstáculo a la derecha del robot.
- IzquierdaLibre, distancia hasta un obstáculo a la izquierda del robot.
- Calculando, para el robot mientras busca por donde puede seguir.
- Rotación, donde se almacena el giro que tiene que hacer para ir por el lado donde no hay obstáculos.
Brain, solo decir que el robot comienza en moda pausa y hasta que se pulse el touch led no se pone en marcha.
DriveTrain, la parte mas compleja donde se gestiona el movimiento del robot, el robot anda hacia adelante hasta que se encuentra un obstáculo y entonces mira hacia donde puede girar, una vez visto por donde puede ir, lo lleva a cabo.
Touch Led, aquí se gestiona el color de touch led, así como si el robot esta activo o esta en modo pausa, el led tiene tres posibles colores, rojo si hay un obstáculo cerca, verde si hay vía libre y naranja si hay un obstáculo lejos.
Distance, solo se ajusta la distancia máxima del sensor.
Gyro, lo calibramos e iniciamos su angulo y rotación para poder empezar a usarlo con precisión. Los demás componentes deberán de esperar 5 segundos antes de hacer nada ya que es el tiempo que se necesita en este proceso.
Cabeza (motor que gira el sensor de distancia), es el encargado de calcula por donde puede seguir el robot, básicamente gira a la derecha y a la izquierda para ver si hay algún obstáculo y se guarda la distancia al obstáculo mas cercano.
BrazoIzq, se mueve para arriba y para abajo mientras este andando el robot.
BrazoDer, se mueve para arriba y para abajo mientras este andando el robot.
Como mejoras posibles, podríamos añadir al algoritmo de movimiento, una corrección al posible desvió de ruta, es decir, si el robot se va desviando poco a poco, podemos corregir su desviación. Algo así como:
- Nos guardaríamos el angulo del gyro sobre el que estamos avanzando en una variable y lo actualizaríamos cada vez que cambiamos la dirección.
- Cada vez que avanzamos miraríamos que:
- Si el angulo del gyro es mayor que el angulo guardado + 2, corregiriamos a la derecha hasta el angulo guardado.
- Si el angulo del gyro es menor que el angulo guardado - 2, corregiríamos a la izquierda hasta el angulo guardado.