LEGO MindStorms:
Robotics Invention System

 

 

Introducción

LEGO MindStorms Robotics Invention System (RIS) es un producto del grupo LEGO comercializado desde Septiembre de 1998. Consta de sensores, motores y un bloque de construcción principal que alberga un microprocesador, programable mediante comunicación serie infrarroja con un PC. Este kit de robótica parece muy bien preparado para acercarse a las bases de la robótica moderna tanto en casa como en la docencia.
Parte de la información que se proporciona a continuación se ha obtenido directamente del manual de usuario del producto. 

Ir a descripción del RCX

Volver al principio de página

 

El RCX

El núcleo del RCX es un microcontrolador Hitachi H8 (H8/3292) de 16 MHz (5 V), con 16 K de ROM y 512 byte de RAM internas, 2 temporizadores de 8 bit y 1 de 16 bit, conversor A/D de 8 bit, y con 32 K de RAM externa.

Este microcontrolador se usa para controlar:

Una ROM de 16 K contiene el driver que se ejecuta cuando se alimenta por primera vez el RCX. Este driver on-chip se amplía descargando otros 16 K de firmware al RCX. Tanto el driver como el firmware aceptan y ejecutan instrucciones del PC mediante el puerto de comunicaciones IR. Adicionalmente, se pueden descargar programas de usuario al RCX como código de bytes que se almacena en una región de 6 K de memoria. El firmware se encarga de interpretar y ejecutar las instrucciones de dicho código.

El diseño del RCX está inspirado en la tecnología del "ladrillo" programable del MIT (Massachusets Institute of Technology), aunque ambos dispositivos tienen diferentes CPUs y cuentan con sistemas software enteramente diferentes.

Ladrillo programable del MIT

http://fredm.www.media.mit.edu/people/fredm/mindstorms/index.html
http://el.www.media.mit.edu/projects/programmable-brick/

Ladrillo RCX de LEGO

http://www.legomindstorms.com/
http://graphics.stanford.edu/~kekoa/rcx/#Serial
http://www.crynwr.com/lego-robotics/

    

Ampliar

En la cara superior del circuito se distinguen a la izquierda 2 LED IR y un receptor IR. En el centro se halla un LCD y varios condensadores y un zócalo adaptador a la derecha. el LCD cubre a su controlador y a un altavoz.

Ampliar         Ampliar

En la cara inferior el gran chip cuadrado es el microcontrolador; el chip que está debajo es una RAM. El gran cip del medio es un banco de flip-flops y el pequeño es un banco de puertas NAND. Los tres chips iguales de la izquierda son controladores de los motores.

Volver al principio de página

 

Transmisor de infrarrojos

Ampliar    Ampliar

A la derecha se presenta la cara superior de la placa del transceptor de IR. A la izquierda hay una resistencia de 6.7 W y un switch; los dos clips del centro son bancos de puertas NAND y el círculo gris a la derecha y abajo es un regulador de voltaje. El rectángulo blanco bajo el chip superior del centro es un LED verde, y a la derecha se halla el recptor IR y dos LED IR iguales. El conector serie DB-9 se encuentra en la cara opuesta de la placa.

El cable que conecta el transceptor IR al PC es un cable de modem nulo que consta de 6 hilos, aunque sólo se utilizan 5:

Pin A Nombre Descripción
2 3 RD Receive Data
3 2 TD Transmit Data
5 5 SG Signal Ground
7 8 RTS Ready To Send
8 7 CTS Clear To Send

El pin 4 se conecta al pin 4 pero no se uasa. Los pines 1, 6 y 9 no están concetados.

Las señales RTS/CTS no se usan para control de flujo. En su lugar, son usadas por el PC para detectar si el transceptor está conectado. Éste une los hilos CTS y RTS; el PC prueba su presencia subiendo y bajando RTS. Si CTS sigue a RTS, supone que el dispositivo conectado en el puerto serie es el transceptor.

Volver al principio de página

 

Motores

Los motores cuentan con una considerable reducción interna, lo cual los hace útiles en aplicaciones que requieran un elevado par con baja velocidad y pocas pérdidas por fricción. Tienen una eficiencia en torno al 80%. Pueden ser alimentados con la célula solar LEGO, una batería de 9V y varios MicroComputadores LEGO.

 

  Especificaciones (como Motor):
  • 350 rpm @ 9 V, en vacío
  • 5 mA en vacío
  • 350 mA 
  • 1 V arranca el giro en vacío
  Especificaciones (como Generador):
  • Máx. rpm ~350
  • 9 V de salida @ 350 rpm
  • ~350 mA @ 350 rpm
  Precauciones
  • Nunca exceder 9V

Volver al principio de página

 

Sensores

El RCX controla simultáneamente tres puertos de entrada para conexión de sensores. Estos pueden ser de:

El voltaje en la entrada es convertido a un valor RAW  interno en el intervalo 0 (0V) a 1023 (5V). Dependiendo del tipo de sensor, el número RAW es convertido al número que se observa por programa o mediante View:

Resumen de entradas:

	V (V)	RAW	Sensor (W)	Luz	T (ºC)	Contacto
	0.0	0	0 		-	-	1
	1.1	225	2816		-	70.0	1
	1.6	322	4587		100	57.9	1
	2.2	450	7840		82	41.9	1
	2.8	565	12309		65	27.5	0
	3.8	785	32845		34	0.0	0
	4.6	945	119620		11	-20.0	0
	5.0	1023	Inf		0	-	0

 

 

La ranura es suficientemente ancha para acomodar varias piezas Lego. En particular, una rueda de 0.95 pulgadas con 6 huecos, de modo que bloquea el haz infrarrojo 6 veces por revolución. El sentido de la rotación no se puede determinar monitorizando la señal del fototransistor, pero esto es irrelevante si la rueda se halla conectada al motor, cuyo sentido de giro es conocido.

 

Volver al principio de página

 

Programación

El lenguaje de programación del RIS de LEGO se denomina código RCX. Es un lenguaje imperativo gráfico cuya secuencia de órdenes se construye a modo de piezas de rompecabezas que se apilan consecutivamente. Un ejemplo se puede observar en la siguiente figura.

En este programa, denominado Program4.rcx, se ordena lo siguiente:
  • activar los dos motores (conectados a los puertos A y C)
  • repetir 5 veces el siguiente bloque de órdenes:
    • cambiar el sentido de giro (marcha atrás)
    • esperar 3 s. (3 s. marcha atrás)
    • cambiar el sentido de giro del motor A (con lo cual se realiza un giro)
    • esperar 3s. (3s. girando)
    • cambiar el sentido de giro del motor A (con lo que se recupera la marcha habitual)
  • apagar los motores.

Como se observa, es un lenguaje realmente intuitivo y rápido de aprender.

Aunque la sintaxis de los bloques está en inglés (lo mismo que sucede en los lenguajes textuales como BASIC o C), la ayuda on-line está en español. 

Las opciones de cada orden se pueden ajustar sin más que pulsar con el botón derecho del ratón sobre el bloque representativo de la misma.

Se pueden incluso realizar "tareas simultáneas". En el ejemplo de la figura inferior se ha insertado en paralelo con el flujo principal del programa un bloque que vigila el sensor de contacto, y en el caso de que se active, emite un sonido.

Las ideas básicas de programación en código RCX se resumen en lo que sigue, recogidas directamente del manual de usuario del producto.

Volver al principio de página

 

Un ejemplo en el aula

Se ha montado en el aula un robot móvil con la base estructural del Roverbot (un modelo descrito con detalle en la Constructopedia, el manual de montaje de LEGO MindStorms). Utiliza dos motores (en los puertos A y C del RCX ) con sistema reductor, ruedas y un parachoques delantero simple en el que se ha instalado un sensor táctil (en el puerto 1). La base motriz resulta suficientemente resistente como para soportar choques de consideración. No obstante, la reducción de la velocidad del motor evita colisiones violentas.

El programa de control utilizado, una modificación del programa de biblioteca Rover3.rcx, se muestra en la figura inferior y consigue lo siguiente: el robot avanza hacia adelante hasta que choca con un objeto; después, retrocede durante un segundo y se gira en dirección opuesta al objeto con el que acaba de chocar; por último, vuelve a avanzar de frente.

 

A continuación se muestran algunas películas con los detalles de la conexión del sistema de infrarrojos al puerto serie del PC, de la descarga del programa en la RAM del RCX, y del funcionamiento del robot móvil.

 

Reproducir película de la conexión al PC  Reproducir película de la descarga de un programa en el RCX

Reproducir película de movimientos de un robot móvil

Volver al principio de página

 

 

Los robots de LEGO en la WW

Es posible la programación de los LEGO MindStorms en otros lenguajes distintos al código RCX: Existe una gran variedad de entornos de programación de los robots de LEGO. Uno de ellos consiste en un compilador muy similar al del lenguaje C, denominado NQC (Not Quite C). http://www.enteract.com/~dbaum/nqc/index.html

Incluso se ha escrito un sistema operativo al efecto: LegOS  (en plataformas Windows y Linux): http://www.noga.de/legOS/, http://legos.sourceforge.net/

Programación bajo Unix: http://lucas.hispalinux.es/Presentaciones/200002hispalinux/conf-16/16-html/hispalinux2000.html

Páginas de LEGO: http://www.lego.com/, http://www.legomindstorms.com/
MindStorms en la educación: http://www.viztel.com/mie/
ROBOLAB (LEGO MidStorms sets for schools): http://www.lego.com/dacta/robolab/home.asp
Hardware LEGO (recambios) http://www.lego.com/dacta/hardware/default.asp
Página de enlaces para robots LEGO: http://www.cs.uu.nl/people/markov/lego/index.html

Volver al principio de página

volver a Inicio