En varias ocasiones hemos visto vehículos de LEGO Mindstorms, de tipos muy diversos y con diferentes movimientos o acciones posibles. Salvo que sean completamente autónomos, la mayoría tienen algo en común, necesitan un controlador, un mando. Uno de los controladores más extendidos es el joystick. Seguro que muchos ya lo habéis usado en vuestras creaciones, ahora queremos enseñaros una pequeña recopilación de diseños.
Nos dice Wikipedia:
“Un joystick (Del inglés Joy=alegría, Stick=palo) o palanca de mando es un dispositivo de control de dos o tres ejes que se usa desde una computadora o videoconsola hasta un transbordador espacial o los aviones de caza, pasando por grúas.
Se suele diferenciar entre joysticks digitales (que leen cuatro interruptores encendido/apagado en cruceta situada en la base más sus combinaciones y los botones de acción) y joysticks analógicos (que usan potenciómetros para leer continuamente el estado de cada eje, y además de botones de acción pueden incorporar controles deslizantes), siendo estos últimos más precisos.”
Este es un ejemplo de joystick de 1980
Después de esta breve introducción general, veamos algunos joysticks realizados con NXT.
Este primer joystick sencillo conectado por cable al ladrillo ha sido diseñado por NXT-Programs y permite controlar el movimiento del vehículo dependiendo de la combinación existente entre el pulsador y el ángulo de rotación del motor en cada momento. Ambos definirán, es decir están codificando, la acción a realizar.
Para conseguir cada una de los posibles movimientos de este vehículo debemos de aprender a manejarlo y esto dependerá de cómo lo hayamos programado. En este ejemplo funciona así:
– Ir recto
– Girar a la derecha
– Girar a la izquierda
– Marcha atrás
El sistema anterior tiene el inconveniente de que debemos seguir físicamente al modelo que controlamos (lo cual es bastante limitador, teniendo en cuenta que la longitud del mayor de los cables del NXT es de 50 cm), a la par que nos consumen uno de los puertos del motor y otro de sensores. Tiene obviamente la ventaja de su bajo coste.
Para realizar un control remoto del robot a través de bluetooth disponemos de varias alternativas:
- Hacer uso de NXT Mobile Application y controlar el robot a través del teclado de un móvil en el que hemos instalado la aplicación anterior.
- Crear una aplicación que se ejecute en el ordenador y se conecta mediante bluetooth al robot. La aplicación necesitará recibir las señales de control a través de un interfaz de E/S, que bien puede ser el teclado, un joystick, etc. En este caso estaríamos haciendo uso de la comunicación bluetooth PC-NXT.
- Control directo desde el software NXT-G ejecutándose en un PC. Este control está disponible desde la versión comercial 2.0 del software (8547).
- Controlar el robot mediante un segundo NXT.
El objetivo de este artículo es seguir con la última de las posibilidades, es decir, el de modelos que controlan remotamente a otro ladrillo mediante bluetooth. En este caso, y dado que trabajamos con dos NXT, necesitamos crear dos programas:
- Uno residente en el primer NXT que hace de joystick controlador, captura el estado del joystick y envía a través de bluetooth las órdenes a ejecutar en el robot controlado. Para que esta aplicación funcione deberemos haber definido un protocolo de comunicaciones entre los dos NXT. Esta comunicación será normalmente unidireccional, desde el NXT controlador hacia el NXT controlado.
- Un segundo programa residente en el NXT remoto. Este NXT recibe los comandos mediante bluetooth procedetes del primer NXT, los interpreta y finalmente ejecuta las acciones pertinentes.
El primero de los ejemplos que os queremos mostrar es el que controla el robot esfera de LEGO
Su funcionamiento es bastante sencillo: los dos motores están conectados a un ladrillo NXT y montados de forma ortogonal (perpendiculares entre sí). Se utilizan las lecturas de los sensores de rotación integrados en los motores para obtener la posición del joystick. La rotación del motor superior controla la velocidad, mientras que el valor de rotación del motor inferior define el giro, así:
Un segundo modelo un poco más completo es el diseñado por Philo.
En este caso tenemos un josytick en el que los motores y el ladrillo inteligente forman un sólo bloque. Aunque la idea de posicionamiento de los motores es semejante hay algunas diferencias (en parte debidas a que la propia mecánica del robot esfera obligaba a un control más específico):
- El motor superior controla el movimiento adelante/atrás, mientras que el de la base controla el movimiento derecha/izquierda.
- En este caso los motores no se unen entre sí, sino que están unidos a la propia base del controlador, evitando así la perdida de precisión en el movimiento.
- El motor de la base se une al superior con un ingenioso sistema de plataforma basculante, tal y como se aprecia en la siguiente imagen.
Este diseño incluye también un botón que sirve, en otras cosas para el calibrado inicial del dispositivo, marcando la posición “0”.
Los dos últimos modelos utilizan la lectura del sensor de rotación de los motores, pero también podemos construir nuestro joystick usando el sensor de aceleración o acelerómetro. Este sistema tiene la ventaja de que mediante un solo sensor (consumiendo un solo puerto del NXT controlador) podemos controlar tres acciones del robot controlado. Esto es así porque el acelerómetro nos devuelve la inclinación en los 3 ejes, por lo que disponemos de 3 variables de control. De forma similar podríamos hacer uso del giróscopo, pero éste tiene el inconveniente -en esta aplicación- de que extraemos únicamente la información de una velocidad de rotación, por lo que sólo disponemos de un parámetro de control y la desventaja de que, habiendo consumido en ambos un puerto de sensores, el coste de ambos sensores es parecido.
En el siguiente diseño el controlador (conectado por cable al NXT) es un acelerómetro. Las lecturas del acelerómetro son las que permiten situar el robot en la posición correcta. Este joystick incorpora además un sensor de contacto que hace las veces de gatillo.