HBM004: Iniciación a la robótica con LEGO® MINDSTORMS


 

Iniciación a la robótica con LEGO® MINDSTORMS

 

LEGO MINDSTORMS

 

La robótica se une a nuestros queridos ladrillos, ¿qué más puedes pedir?

 

Texto e imágenes por Koldo

 

En más de una ocasión he leído en algún foro o me han preguntado cómo iniciarse en la robótica con LEGO® MINDSTORMS. Para ciertas personas resulta algo atractivo pero que a la vez genera cierto respeto y temor, ¿seré capaz de hacer algo? O acaso ¿será algo que me superará y resultará frustrante?

En los últimos años el montar y programar robots está pasando de ser una actividad únicamente desarrollada por profesionales con una formación formal a entrar en el ámbito del tiempo libre y convertirse en el hobby de muchas personas que buscan en las nuevas tecnologías algo diferente a lo que ofrece un videojuego.

Este artículo está dirigido a aquellas personas que sin una formación previa sobre robótica y programación desea montar y programar sus propios robots con LEGO MINDSTORMS.

Para empezar a montar y programar robots el primer paso es tener una idea general de lo que es un robot, y de cuáles son las tareas que nos vamos a encontrar en su desarrollo. Ese va a ser el objetivo fundamental de este artículo al que seguirán otros que puedan ser útiles para profundizar en el montaje y programación de robots.

¿Qué es un robot?

Tuve la fortuna de poder participar en el jurado técnico de las pruebas clasificatorias de la FLL(1) que se celebraron en Pamplona en noviembre del pasado año. Cuando preguntamos a uno de los equipos qué había aprendido durante la experiencia de participar en la FLL la respuesta fue que ahora sabían lo que era un robot. Hasta entonces para ellos un robot era una máquina con patas y brazos que ejecutaba diferentes acciones (androides). Tras haber montado y programado un robot habían aprendido que un robot puede ser mucho más que eso. Se pueden encontrar diferentes definiciones, una de ellas puede ser la siguiente: Un robot es un ingenio mecánico controlado electrónicamente capaz de ejecutar acciones diversas siguiendo un programa preestablecido y en su caso que interactúa con su entorno. Pero quizás lo mejor para aprender sobre lo que esla robótica es “hacer”, es decir, montar y programar robots. Veamos primero cuáles son los elementos comunes que vamos a encontrar en todos los robots.

1. El sistema sensitivo

Una de las partes básicas de un robot es su sistema sensitivo, sin él no podría percibir su entorno, y en consecuencia, no podría responder ante los diferentes estímulos que se le presentan. Los elementos por medio de los que el robot recibe información de su entorno son los sensores que permiten medir distancias, iluminación del ambiente, niveles de ruido, temperatura…

El sistema básico de LEGO® MINDSTORMS(2) dispone de cuatro sensores:

Sensor de contacto: básicamente es un pulsador como el que utilizamos para hacer sonar el timbre de casa. Tiene dos posiciones: pulsado y suelto. Puede ser utilizado en un robot móvil para detectar cuando choca contra una pared.

Sensor de luz: Mide el nivel de luminosidad que recibe convirtiendo la lectura en valores comprendidos entre 1 y 100. Ejemplos básicos de su uso pueden ser hacer que un robot se dirija a una zona iluminada, detectar el encendido de la luz en un espacio y hacer sonar una alarma, o para el clásico robot que sigue una línea sobre el suelo.

Sensor de ultrasonidos: Es capaz de medir la distancia a un objeto que se encuentre a una distancia inferior a 250 cm. Así como con el sensor de contacto hay que chocar para detectar un objeto con el detector de ultrasonidos ya no es necesario. Su uso lo podríamos asimilar al sistema por medio del cual un murciélago detecta los obstáculos en la oscuridad.

Sensor de sonido: Mide el nivel de ruido en su entorno y asigna un valor a la lectura entre 1 y 100. Puede dársele diferentes usos, entre ellos se encuentra el controlar un robot con palmadas de las manos, tal y como se hace con ciertos sistemas de iluminación doméstica.

2. El sistema motor

Además de sentir el robot ha de tener la capacidad de responder a los estímulos externos, es decir, de "hacer". De hecho es posible diseñar un robot sin sensores pero al contrario, no tiene ningún sentido que no sea capaz de hacer nada, aunque no sea mas que generar sonidos.

Para "hacer" utiliza los motores con los que puede desplazarse, abrir y cerrar una pinza… o lo que se desee.

Los motores del sistema LEGO MINDSTORMS está diseñados de tal manera que además de controlar la potencia y sentido de giro es posible controlar la magnitud de dicho giro: ya sea por tiempo, número de vueltas o grados (con una precisión de 1 grado). Esto facilita en gran manera el control de los movimientos.

En el NXT se pueden conectar simultáneamente hasta tres motores.

3. El cerebro

Para responder a los estímulos externos hay que tener la capacidad de tomar decisiones y para eso está el “cerebro” o controladora que en el caso del nuevo sistema de LEGO MINDSTORMS se llama NXT.

El NXT dispone de tres salidas (en las que podremos conectar hasta tres motores) y de cuatro entradas (permiten conectar hasta cuatro sensores). Además de ello dispone de otros modos de comunicarse con el entorno: un pequeño altavoz que puede reproducir sonidos con una limitada potencia, pero muy útiles en algunos programas; una pantalla con una resolución de 64x100 pixeles por medio de la cual es posible presentar mensajes de texto o gráficos; y un puerto de comunicaciones bluetooth que le permite conectarse con otros robots (enviar y recibir mensajes), teléfonos móviles o incluso conectarse con un receptor GPS.

El NXT puede conectarse con el ordenador por medio de un cable USB o de modo inalámbrico vía una conexión bluetooth.

4. El esqueleto

Todo lo anterior necesita un esqueleto adaptado al uso que se le quiera dar que lo sustente. En función del objetivo deseado habrá que montar una estructura en forma de vehículo con ruedas, en forma de bípedo o cuadrúpedo, en forma de organizador de bricks en base a su color… Sobre todo en el caso de los robots móviles es importante que esta estructura sea resistente, un robot móvil que puede chocar con una pared hay que montarlo de tal manera que no se desmonte durante su uso. Tanto el set comercial de LEGO® MINDSTORMS como el educativo ofrecen un conjunto de piezas suficiente para empezar a montar robots y con el tiempo puede completarse principalmente con la línea LEGO TECHNIC.

5. Sus comportamientos

Pero ¿qué es un cerebro sin inteligencia? Nada, así que por medio de la programación hay que definir cómo se ha de comportar el robot ante los diversos estímulos externos.

Para ello LEGO MINDSTORMS ofrece un software de programación gráfico conocido como NXT-G. Una serie de bloques ordenados de acuerdo con lo que se desea que haga el robot generan un programa que se transfiere al NXT para que éste, de modo totalmente autónomo sin necesitar el ordenador para nada, lo ejecute.

Un ejemplo paso a paso

Se trata de montar y programar un robot que se mueva por MINDSTORMSuna habitación, pasillo… y que cuando choque contra la pared u otro objeto sea capaz de girar y seguir tras evitar el obstáculo.

El procedimiento básico de diseño, montaje y programación de un robot es un procedimiento de ensayo, error y mejora. En la figura 1 puede verse un esquema del procedimiento.

 

1. Diseño y montaje de un robot móvil

Cuando se va a montar un robot móvil, antes de nada hay que definir qué sistema de dirección se va a utilizar: un robot con cuatro ruedas, dos para la dirección y dos motrices; o un robot con un sistema de dirección diferencial, es decir, con dos ruedas conectadas cada una a un motor y un tercer punto de apoyo que puede ser una esfera o una rueda loca. El que los motores se muevan a la misma o diferente velocidad hará que el movimiento sea rectilíneo o de giro.

Para empezar es mejor hacerlo con dirección diferencial, hacerlo de otro modo complica tanto el montaje como la programación.

Para este ejemplo lo mejor es utilizar el Tribot (uno de los modelos incluidos en el set de LEGO MINDSTORMS).

2. Programación

Antes de empezar con el software de programación, sea este el que sea, hay que escribir el algoritmo a utilizar. ¿Qué es el algoritmo? Es la descripción paso a paso de lo que ha de hacer el robot en un lenguaje humano. En este caso podría ser el siguiente:

1. avanzar en línea recta hasta que choque

2. retroceder en línea recta durante 1 segundo

3. girar 90º sobre sí mismo a la izquierda

4. empezar el ciclo otra vez

Ahora que tenemos el algoritmo ya podemos convertirlo a un lenguaje que comprenda el robot, eso lo haremos por medio de LEGO® MINDSTORMS NXT-G. Una de las características de NXT-G, al contrario de otros lenguajes de programación, es que desde el primer momento podremos escribir programas totalmente funcionales, no es necesario un proceso de aprendizaje previo y está pensado para todos los públicos.

Un programa en NXT-G es una secuencia de bloques de programación unidos por medio de un enlace que simula un liftarm. Los bloques se arrastran hasta la posición deseada y se enlazan automáticamente. En la figura 2 puede verse el programa correspondiente al algoritmo anterior.

 

LEGO MINDSTORMS

 

Cada bloque de programación dispone de un panel que permite configurarlo. En el caso del bloque Mover (figura 3) se puede modificar la velocidad, el tiempo que ha de permanecer en marcha o si ha de hacerlo de modo indefinido, cómo ha de pararse… o si lo que ha de hacer es únicamente un giro de un ángulo determinado.

En este programa, tal y como puede verse en la figura 2, se utilizan únicamente dos bloques de programación y una estructura de control. Uno de los bloques (Move o Mover) es el que hace que el robot avance, retroceda, gire… es decir, que se mueva y el otro es el que hace que el programa espere hasta que el robot choque. Las estructura de control determinan el flujo del programa, en este caso Loop hace que la secuencia que engloba se repita una y otra vez.

Una vez que hayamos escrito el programa solo falta transferirlo al NXT. PaLEGO MINDSTORMra ello hay que encenderlo y conectarlo al ordenador vía cable USB (es lo más rápido y fácil) o conexión inalámbrica bluetooth (a veces su configuración da trabajo y es más lenta). En la figura 4 pueden verse los botones que se utilizan para dicha transferencia.

3. Ensayo

Ahora que ya tenemos el robot con su programa sólo queda probarlo y observar si hace lo que deseamos. Probablemente las decisiones que hemos tomado en cuanto al tiempo de retroceso y el de giro no hayan dado el resultado deseado, así que tras probarlo habrá que ajustar dichos tiempos en el programa hasta conseguir resultados óptimos.

En muchos casos tras probar el robot no solo tendremos que hacer cambios en el programa sino que también en el montaje: se mueve demasiado lento y hay que modificar la combinación de engranajes o tamaño de ruedas; hay partes que deberían girar o desplazarse de un modo más fluido…

Por dónde empezar

Para iniciarse lo mejor es tomar como punto de partida la guía presente en el mismo software NXTG. Ofrece una serie de modelos con sus programas descritos paso a paso. Ello nos ayudará a conocer los diferentes elementos de los que está compuesto el sistema, el manejo del editor de programas y a adquirir habilidades básicas de programación.

A partir de ahí uno de los caminos a utilizar es reproducir creaciones ajenas (libros(3) , Internet(4) …) y tras montar el robot leer el programa, analizarlo y editarlo. Transferirlo sin más no nos ayudaría a progresar en el aprendizaje.

Otra, más complicada en el inicio, es desarrollar creaciones propias. Las ideas las podemos encontrar en nuestro entorno, en Internet, en modelos ajenos que pueden servir de partida para desarrollar el propio.

 

Notas:

(1) FLL: FIRST LEGO Liga. Competición internacional de robótica organizada entre FIRST y LEGO. Más información en http://www.roboteca.org/.

(2) Todas los elementos que se mencionan en este artículo son comunes a los sets comercial y educativo.

(3) En la http://wiki.lrobotikas.net puedes encontrar bibliografía en inglés sobre LEGO MINDSTORMS. En un próximo artículo escribiré sobre los que a mí me parecen básicos.

(4) En http://lrobotikas.net puedes encontrar creaciones propias del autor de este artículo y sus hijos, algunas de ellas con instrucciones de montaje paso a paso. Una fuente muy interesante es http://www.nxtprograms.com/, en todos los proyectos que ofrece utiliza únicamente las piezas de una caja de MINDSTORMS y utiliza NXT-G como lenguaje de programación.■

Lrobotikas