Lego Mindstorms

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Lego Mindstorms con tres sensores (tacto, luz y rotación) y un motor eléctrico.
Algunas de las piezas incluidas en Lego Mindstorms y su CD.

Lego Mindstorms es un juego de robótica para niños fabricado por la empresa Lego, el cual posee elementos básicos de las teorías robóticas, como la unión de piezas y la programación de acciones, en forma interactiva. Este robot fue comercializado por primera vez en septiembre de 1998.

Comercialmente se publicita como «Robotic Invention System», en español Sistema de Invención Robotizado (RIS). También se vende como herramienta educacional, lo que originalmente se pensó en una sociedad entre Lego y el MIT. La versión educativa se llama «Lego Mindstorms for Schools», en español Lego Mindstorms para la escuela y viene con un software de programación basado en la GUI de Robolab.[1]

Lego Mindstorms puede ser usado para construir un modelo de sistema integrado con partes electromecánicas controladas por computador. Prácticamente todo puede ser representado con las piezas tal como en la vida real, como un elevador o robots industriales.

Historia[editar]

Lego Mindstorms fue uno de los resultados de la fructífera colaboración entre Lego y el MIT. Esta asociación se emplea como ejemplo de relación entre la industria y la investigación académica que resulta muy beneficiosa para ambos socios.[2]

Colaboración con el grupo de epistemología y aprendizaje del MIT[editar]

La línea Lego Mindstorms nació en una época difícil para Lego, a partir de un acuerdo entre Lego y el MIT. Según este trato, Lego financiaría investigaciones del grupo de epistemología y aprendizaje del MIT sobre cómo aprenden los niños y a cambio obtendría nuevas ideas para sus productos, que podría lanzar al mercado sin tener que pagar regalías al MIT. Un fruto de esta colaboración fue el desarrollo del MIT Programmable Brick (Ladrillo programable).

El mentor del grupo, Seymour Papert, era un matemático interesado desde la década de 1960 por la relación entre la ciencia, la adquisición del conocimiento y el desarrollo de la mente infantil. De hecho, el nombre del producto, Mindstorms, proviene del título de un libro suyo, llamado MindStorms: Children, Computers, and Powerful Ideas,[3] en el que describe sus ideas respecto al empleo de las computadoras como impulsoras del aprendizaje. Papert, uno de los creadores de lenguaje de programación Logo, ampliamente empleado como herramienta para enseñar programación, toma de Jean Piaget la concepción de niño como “constructor de sus propias estructuras mentales”. Es partidario del construccionismo, tesis que sostiene que el niño crea su conocimiento de forma activa y que la educación debe de facilitarle herramientas para realizar actividades que impulsen esta actividad.[4] La lectura de su libro fue lo que impulsó al presidente de Lego a contactar en 1985 con el MIT, pues le hizo pensar que ambos grupos tenían ideas similares sobre el aprendizaje infantil.[2]

El aprender mejor no vendrá de ofrecer las mejores herramientas para que el profesor instruya, sino de dar las mejores oportunidades a los estudiantes para construir.
Seymour Papert

El grupo de epistemología y aprendizaje del MIT, dirigido por Mitchel Resnick, que a su vez había sido pupilo de Papert, estaba profundamente influido por el constructivismo de Piaget, extendido por el propio Papert bajo la denominación de construccionismo. Según esta perspectiva, en lugar de instruir al estudiante proporcionándole fórmulas y técnicas (instruccionismo), es mejor potenciar el aprendizaje creando un entorno en el que los estudiantes puedan desempeñar actividades propias de ingenieros o inventores como vía para acceder a los principios fundamentales de la ciencia y la técnica; pues de esta forma es como se desarrolla la forma de pensar propia de los científicos, los estudiantes se interesan realmente en su trabajo y motu proprio tratan de informarse para resolver los problemas que van encontrando. Así que se concentraron, en palabras de Resnick, en “diseñar cosas que permitan a los estudiantes diseñar cosas”.[2]

Antecedentes y desarrollo del “Bloque programable”[editar]

La línea Mindstorms no fue el primer fruto de la relación entre Lego y el MIT, aunque sí el más exitoso. Con anterioridad, Lego se había interesado por el Lenguaje de programación Logo, Fruto de este interés nació en 1986 Lego TC Logo, creado por Resnick y Steve Ocko. Lego TC Logo era un sistema en el que se programaba en una computadora que estaba conectada por un cable a una construcción Lego que contaba con motores, luces y sensores. Aunque alcanzó un relativo éxito comercial, según Resnick el sistema “imponía restricciones tanto físicas como imaginativas”.[5]

Esta línea de desarrollo continuaría en 1993 con el lanzamiento de Control Lab, de software mejorado.[6]

El paso de programar una computadora que se conectaba a una construcción Lego a programar un bloque de esa construcción era una idea natural que se estudió durante largo tiempo. Desde principios de los años 90 se empezó a investigar esta posibilidad. Sin embargo el proyecto tuvo que esperar a que el mercado fuera propicio. Por una parte, el coste de la tecnología era demasiado alto en un principio. Por otra, el bloque se programaría desde un computador, y por esas fechas los computadores no estaban tan extendidos como lo estaban ocho años más tarde, lo que afectaría negativamente a la demanda. Hubo que esperar un lustro hasta que las condiciones eran las apropiadas y decidieran empezar seriamente el desarrollo de lo que acabaría siendo el bloque RCX, un bloque de Lego que contaba con un microcontrolador, y que constituye el corazón del producto Mindstorms. De esta forma las construcciones Lego pasaban de ser estructuras estáticas a máquinas dinámicas que interactúan con el mundo. Por otra parte, mientras que en muchos casos los productos Lego proporcionaban las piezas necesarias para construir algo con un objetivo fijo, como un tren o un puente, lo que permite “aprender haciendo”, en el desarrollo del nuevo bloque se siguió en cambio la filosofía de Papert y Resnick de fomentar el “aprender diseñando”, y tratar de dejar más abiertas las posibilidades.[7]

Decisiones de diseño[editar]

El segmento de mercado escogido fue el de niños de 10 a 14 años, especialmente varones, a pesar de que las en los desarrollos del MIT no se había hecho distinción entre sexos. Este era también el segmento tradicional de Lego. La elección de este público determinó las decisiones de diseño y las diferencias entre el desarrollo del MIT, llamado Programmable Brick (Ladrillo o bloque programable) y el bloque RCX, diseñado y desarrollado de forma independiente por Lego a partir de las investigaciones realizadas conjuntamente con el MIT. El que se realizara un nuevo producto desde cero en lugar de emplear el diseño del MIT se justifica por los objetivos distintos de ambas organizaciones. El sistema del MIT estaba enfocado a la investigación del proceso de aprendizaje de los niños, lo que hacía que el sistema pudiera ser más caro de producir, pues no se fabricarían muchas unidades, y más frágil, pues siempre habría alguien para arreglarlo en un laboratorio lleno de ingenieros. En cambio, el bloque de Lego estaba destinado a la venta a preadolescentes a gran escala, así que debía ser más asequible y robusto.[2]

Otras de las pautas de diseño fueron:[7]

  • El sistema debía ser sencillo para el nuevo usuario y a la vez debía permitir realizar diseños sofisticados para el iniciado.
  • El juguete debía poderse emplear de muchas formas diferentes. Según Resnick, cada vez que al terminar un proyecto el niño consideraba que había “acabado” con el juguete se consideraba un fallo del diseño. Por otra parte, cada niño tiene intereses diferentes.
  • Simplicidad. En las pruebas del MIT se descubrió que al hacer diseños más pequeños y limitados, conexiones para menos sensores y motores, que llamaron Cricket, los usuarios encontraban nuevas aplicaciones más creativas.
  • Elección cuidadosa de las cajas negras: El niño tiene a su disposición motores, sensores y microcontroladores, pero no pueden modificarlos o rediseñarlos. El juego trataría sobre como combinarlos para hacer diseños, no sobre cómo diseñar estos componentes.
  • Poner énfasis en el aprendizaje de la programación. Resnick había notado que, mientras que el número de ordenadores en las escuelas se había multiplicado en veinte años, a principios de los 80 se enseñaba Basic y Logo, mientras que a finales de los 90 se enseñaban menos rudimentos de la programación. En un principio se experimentó con Logo, pero los niños tardaban demasiado en aprenderlo. Entonces se desarrolló una versión gráfica, LogoBlocks, en la que las instrucciones estaban representadas por bloques y diagamas, que en cambio dificultaba la realización de software complejo. La decisión final del MIT fue implementar una versión híbrida: los programas podrían realizarse de forma gráfica o en código escrito. De esta forma el nuevo usuario podía empezar por la versión sencilla y pasar a la potente cuando necesitase hacer diseños más complejos. Sin embargo, Lego sólo incorporaría en un principio a RCX la versión gráfica del entorno de desarrollo y en lugar de Logo desarrollaría un nuevo lenguaje de programación: RCX Code.
  • El bloque debía tener un número suficiente de puertos de entrada/salida que pudieran conectarse con diferentes tipos de sensores: de temperatura, de amplitud del sonido o de luz.
  • Desatender las sugerencias—hasta cierto punto—y observar en cambio en el laboratorio qué es lo que intentan hacer los niños con el juguete, pues apreciaron que de esta forma obtenían mejores ideas.

Lego ha sido uno de los mejores inventos

Lanzamiento del producto[editar]

Este proyecto inicial se ramificaría en varias direcciones: el MIT 6.270 robotics competition kit, los Crickets del departamento de epistemología y aprendizaje del MIT y el bloque RCX de Lego. Posteriormente, uno de los desarrolladores del MIT involucrados lanzó al mercado su propio producto, fruto de la experiencia en esta investigación, llamado Handy Cricket.

La primera versión salió al mercado con un precio de $200 dólares. Incluía 717 componentes, entre ellos el bloque RCX. Tras su lanzamiento se vendieron 80.000 unidades en tres meses. Además, la comunidad de aficionados a la robótica, un público adulto, acogió con interés este nuevo producto. Este interés imprevisto del público adulto hizo que las ventas triplicaran las expectativas.[2] Además, la creación de una comunidad de entusiastas que ampliaron las posibilidades del producto original, creando entornos de programación alternativos e incluso sistemas operativos para el RCX, como LegoOS y una máquina virtual Java, TinyVM,[8] así como numerosas páginas web de intercambio de ideas.

Además del bloque RCX, existieron otros bloques programables, los cuales gradualmente se fueron desarrollando hasta lograr la versión definitiva de la versión NXT. A partir de 1998 se comercializó el inicio de la línea con el robot Cybermaster. A principios de 2004, debido a los malos resultados de Lego del año anterior, que registró unas pérdidas de 1 400 millones de coronas danesas (unos 188 millones de euros), cundió el rumor de que abandonaría la línea Mindstorms y volvería a su mercado tradicional.[9] Sin embargo, en enero de 2006 Lego anunció la versión Mindstorms NXT, de última generación, que empezó a comercializar en junio de ese mismo año. En enero de 2013 Lego anunció la versión Mindstorms EV3, que comenzará a comercializarse en la segunda mitad de 2013.[10]

Críticas[editar]

Algunas de las decisiones comerciales de Lego contradecían los principios del grupo de epistemología y aprendizaje. Miembros del grupo mostraron su desacuerdo sobre incluir ejemplos de robots orientados al combate en el kit comercial, e incluso sobre incluir cualquier tipo de ejemplo, pues contravenía su principio de dejar a los niños experimentar libremente con los bloques. Por otra parte, aunque el juego parte de la corriente construccionista, muchos profesores los empleaban con métodos de enseñanza esencialmente instructivistas, con lo que la difusión de la filosofía construccionista mediante este juguete ha sido menor de lo que en principio podría esperarse a la vista de las cifras de ventas. El grupo de epistemología y aprendizaje también ha recibido criticas cuestionando su valor académico, pues “casi nunca hacen nuevos descubrimientos tecnológicos, demuestran teorías científicas significativas o crean productos importantes”.[2]

Otros desarrollos[editar]

CyberMaster[11] [editar]

CyberMaster fue uno de los primeros desarrollos de Lego con un bloque de circuitos integrados con capacidades de programación. Su lanzamiento fue en el año 2000 sólo en los mercados de Alemania, Australia, España e Inglaterra, en Estados Unidos sólo llegó una copia que poseía la misma cubierta pero un cambio pequeño en el circuito interno. Este set venía acompañado con un control remoto, el cual se programaba y éste enviaba las instrucciones al bloque, el cual producía los movimientos programados. Este bloque fue distribuido con capacidad de comunicación por radio, que fue abandonado a favor de los infrarrojos en el siguiente diseño RCX. Al ser uno de los primeros experimentos de Lego, este bloque era muy limitado para las capacidades:

  • Sólo permitía un programa en la memoria del control remoto si se utilizaba el software original.
  • Permitía el control de varios CyberMaster mediante el hackeo de la misma radiofrecuencia
  • Los motores venían en el bloque sin poder desmontarse, aunque disponían de encoders.
  • La comunicación entre el control y el computador no se puede hacer en forma simultánea.
  • Poseía un sólo espacio de memoria para el programa y podía ejecutar sólo 5 instrucciones en forma simultánea si se utilizaba el software original.

MicroScout y Scout[12] [editar]

MicroScout fue un microbloque programable lanzado en el año 1999 que se vendía con capacidades de transmisión de instrucciones mediante un enlace de luz visible (en inglés, Visible light link), tenía un sensor de luz incorporado y una bocina integrada. Poseía varias funciones incluidas por defecto:

  • Mover el motor hacia adelante
  • Mover el motor en reversa
  • Seguir o buscar una fuente de luz
  • Control del motor por luz
  • Alarma para alertar un cambio de estado
  • Verificación de código de acceso

Bloque RCX[editar]

Bloque Lógico RCX del Lego Mindstorms.

El bloque RCX es la parte central del Lego Mindstorms, ya que aquí se encuentra toda la parte lógica y electrónica que permite la mayoría de las acciones del robot, almacenándose hasta 5 programas que se pueden cargar en su memoria interna, y guardándose allí el firmware básico para el control de los distintos dispositivos que se pueden conectar al bloque.

El bloque RCX tiene tres versiones oficiales: 1.0, 1.5 y 2.0, las cuales presentan mejoras en el software sin verse afectado mayormente el hardware que se vende con el bloque, sin embargo, la parte electrónica de los bloques no es compatible, ya que las tres versiones poseen distintas regulaciones de voltaje, pero aun así no afecta el hardware que posee el bloque.[13]

Microcontrolador[editar]

Su microcontrolador interno es Hitachi H8/3292, que funciona a 5 volts y una velocidad aproximada de 16 Mhz, siendo esa su velocidad máxima para la serie de Hitachi H8/3000. Posee una memoria ROM de 16 Kb, una memoria RAM externa de 32 Kb y posee un decodificador Analógico Digital que permite transformar las distintas entradas de energía en bits. Su empaque original es de un circuito impreso, que carece de zócalos de conexión, y se encuentra soldada a la base del circuito impreso del bloque. Este microcontrolador puede procesar varias instrucciones por segundos, pero su mayor desventaja comparado con el Lego Mindstorms NXT es la baja capacidad de mantener hilos de procesos, es decir, no puede ejecutar dos instrucciones al mismo tiempo, y a pesar que el programador o usuario compruebe que si puede, no es así, sino que la velocidad de proceso impide distinguir el retardo producido.

Entradas y salidas[editar]

Como medio de entradas posee tres conectores que permite capturar la información que proviene del los distintos sensores. Las entradas se conforma por un bloque de 2x2, que sus cabezas se encuentran rodeadas de un material conductor que permite la lectura del sensor. Las entradas se ubican en la parte superior de la pantalla de LCD, son de color gris y se distinguen por los números 1, 2 y 3.

Las salidas del bloque RCX son para energizar los motores que se pueden conectar al robot y así darle movimiento. El voltaje que provee es de 9 volts, haciendo que cada motor que se conecte al bloque pueda moverse acorde a las instrucciones del programa. Las salidas de energía se encuentran en la parte inferior de la pantalla de LCD, son de color negro y se distinguen por las letras A, B y C.

Pantalla LCD[editar]

La pantalla de LCD que trae el Lego Mindstorms permite visualizar tres zonas de datos:

  • Superior, detección en las entradas de los sensores y el nivel de carga de las baterías.
  • Central, zona alfanumérica que permite ver el contador, temporizador o valores registrados por un sensor.
  • Inferior, indica el sentido de movimiento de los motores.
  • Lateral izquierdo, muestra si hay conexión inalámbrica mediante el puerto infrarrojo

En su modo de operación, la pantalla de LCD posee un contador de ejecución de despliegue las veces y el tiempo que se ha ejecutado el programa, indica el número del programa que se está ejecutando y muestra la imagen de una persona que se encuentra de dos posibles formas, en estado de detención, la representación de la persona está detenida, y cuando se ejecuta un programa, ésta se encuentra en movimiento.

Además, si se selecciona un sensor, permite ver el valor registrado por el sensor, en una medida de RAW que se despliega sin importar el tipo de sensor que se encuentre conectado a la entrada.

Si el bloque no posee el firmware básico, no se muestra el contador de programa ni se ejecutan los programas 2, 3, 4 y 5, sólo permitiendo que el primer programa muestre que funciona la salida de corriente y entrada de datos. Además, la persona se mantiene fija aunque se encuentre en ejecución el programa 1 del bloque.

Esta salida de LCD ayuda al programador en caso que quiera hacer reemplazo del framework, ya que permite la salida de datos en pantalla, para generar una salida de estado de cualquier elemento interno del bloque.

Puerto infrarrojo y comunicación[editar]

En la parte delantera del bloque RCX, el Lego Mindstorms trae un puerto infrarrojo que le permite la comunicación con el computador para transferir el firmware y los programas. Funciona a una frecuencia de 37 Khz, que se asemeja a un control remoto de un televisor, transmitiendo datos a una velocidad aproximada de 2.400 bps, lo que implica que cada bit se transmite a 417 us.[14]

Una de las cualidades del puerto infrarrojo es la capacidad de conectarse a otro dispositivo que posea el puerto, como Palms, computadores portátiles y algunos modelos de teléfonos móviles, lo que permite realizar pequeñas plataformas de comunicaciones para lugares recónditos o muy pequeños.

La distancia de separación entre el RCX y el receptor es como máximo a 30 cm, funcionando a su máxima capacidad desde la base de la torre y sin objetos que interfieran la visual entre ambos instrumentos. Sin embargo, la distancia es menor debido a la contaminación lumínica que puede existir en el cuarto.

Alimentación eléctrica[15] [editar]

La alimentación eléctrica del bloque es mediante 6 baterías AA de 1,5 volts, las cuales se conectan en la parte posterior del bloque. Las baterías se conectan en paralelo y proporcionan energía tanto al bloque como a los motores que se conectan al mismo bloque.

Una advertencia que se realiza en el manual de Lego Mindstorms es el reemplazo de las baterías, que ella alimenta a la pila que se encuentra dentro del bloque, permitiendo almacenar los distintos programas y el firmware básico. Si el reemplazo demora más de 1 minuto, la información almacenada se pierde. Otra advertencia que se realiza a los usuarios es que se evite utilizar baterías recargables debido a que entregan menor o mayor potencia el bloque, produciendo que el sistema eléctrico sea susceptible a fallos.

Se puede programar la desconexión de la alimentación eléctrica mediante el software incluido en el juego de Lego Mindstorms, donde se puede especificar el tiempo de apagado, desde 1 minuto hasta 99 minutos, e inclusive deshabilitar el apagado automático. Además, el mismo programa indica el nivel de carga que poseen las baterías del robot, mostrado por una barra de color verde cuando está cargado y ésta varía hasta rojo cuando se descarga completamente.

Cuando se descarga la batería del robot, este emite un sonido constante hasta que se presiona la tecla de apagado, indicando que las baterías se han agotado.

Bloque NXT[editar]

Lego Mindstorms NXT en una presentación.

El bloque NXT es una versión mejorada a partir de Lego Mindstorms RCX, que generalmente se considera la predecesora y precursora de los bloques programables de Lego.

Debido a la comercialización de los bloque programables, Lego vendió la generación NXT en dos versiones: Retail Version y Education Base Set. Una ventaja de la versión Educacional es que se incluía las baterías recargables y el cargador, pero esta misma versión debía comprar el software según el tipo de licencia: Personal, Sala de clases, Sitio.[16]

Además, Lego dispuso de varios kits para desarrolladores según las características de los programas que estuvieran desarrollando,

  • Software Developer Kit (SDK), que incluía los controladores del puerto de USB, archivos ejecutables y referencia a los bytecodes.
  • Hardware Developer Kit (HDK), incluía la documentación y esquemas para los sensores de NXT.
  • Bluetooth Developer Kit (BDK), documentos de los protocolos usados para la comunicación Bluetooth.

Microcontrolador[editar]

El microcontrolador que posee es un ARM7 de 32 bits, que incluye 256 Kb de memoria Flash y 64 Kb de RAM externa, la cual a diferencia del bloque RCX, posee mayores capacidades de ejecución de programas, evitando que los procesos inherentes de varios paquetes de datos colisionen y produzcan errores y un posible error en la ejecución del software. Su presentación es similar al Hitachi H8 ya que se encuentra en el circuito impreso del bloque, junto a la memoria FLASH.

Entradas y salidas[editar]

En el bloque de NXT existen cuatro entradas para los sensores, pero los conectores son distintos de los del RCX, lo que impide la conexión de sus motores o sensores, sin embargo, el kit de NXT incluye el adaptador para que los sensores de RCX sean compatibles con NXT.[17]

Las salidas de energía aún son tres localizadas en la parte posterior del bloque, haciendo que la conexión para los motores y partes móviles sean de más fácil acceso.

Comunicaciones[editar]

El bloque de NXT puede comunicarse con el computador mediante la interfaz de USB que posee, la cual ya viene en la versión 2.0. Además, para comunicarse con otros robots en las cercanías posee una interfaz Bluetooth que es compatible con al Clase II v 2.0. Esta conectividad con Bluetooth no tan sólo permite conectarse con otros bloques, sino también con computadores, palms, teléfonos móviles, y otros aparatos con esta interfaz de comunicación.[18]

Dentro de las posibilidades de conexión se encuentran

  • Conectar hasta tres dispositivos distintos,
  • Buscar y conectarse a otros dispositivos que posean Bluetooth,
  • Recordar dispositivos con los cuales se ha conectado anteriormente para conectarse más rápidamente,
  • Establecer el bloque NXT como visible o invisible para el resto de los dispositivos.

Firmware[editar]

El firmware del Lego Mindstorms consta de las instrucciones básicas que posee el bloque para hacer las distintas tareas que se le pueden programar en el bloque RCX. El firmware viene en el CD-ROM que se adjunta en el empaque original y debe ser cargado todas las veces que el robot se inicialice o se cambien las baterías y la memoria se borra.

Si no se carga el firmware, el robot queda en modo de arranque, lo cual hace que se pueda jugar con un programa que viene en forma nativa dentro del robot. Para cargar el firmware debe ejecutarse el programa adjunto y luego esperar cerca de 3 minutos para que se cargue completamente el firmware básico.

Las versiones más actuales de Lego Mindstorms RCX, como la versión 2.0, es compatible con las versiones anteriores del bloque, haciendo que los programas escritos en versiones más nuevas también puedan ser ejecutadas en las generaciones previas.

Torre de comunicación[editar]

Torre de comunicación USB, Lego Mindstorms RCX.

Para transferir los programas incluidos o los programados por los usuarios, Lego Mindstorms cuenta con una torre que posee un rayo infrarrojo que se conecta al computador, que junto al software, se puede enviar el firmware y los programas. Esta torre se encuentra disponible en dos versiones:

Torre serial[15]

La torre serial se conecta a un puerto COM del computador, transmitiendo las instrucciones hasta una distancia máxima de 15 cm., en condiciones normales, desde la base de la torre hasta el bloque. Debido a su tipo de conexión, requiere una batería AA alcalina de 1,5 volts, la cual se conecta en la parte posterior de la misma.

El software que controla la conexión de la torre serial se encuentra dentro del mismo software incluido en el juego de Lego Mindstorms y requiere un conector de 9 pines para ser aceptado.

Torre USB

La torre USB fue incluida en las versiones de Lego Mindstorms que poseían el RCX 2.0, la cual se conecta al puerto USB del computador. A diferencia de la torre serial, la torre USB posee alimentación desde el computador, por lo cual no requiere de baterías para su funcionamiento. La distancia máxima a toda la potencia es de 30 cm en condiciones de luminosidad normal.

El software de control no se incluye dentro del paquete de Lego Mindstorms, pero se puede configurar en el Panel de Control de Windows 98 para realizar las pruebas de alcance y ajustar la potencia.

Motores[editar]

Motor Velocidad normal
(RPM)
Torque
(kg/cm)
Velocidad estándar
(RPM)
Estándar 3240 1,760 40
9 voltios 370 3.840 15
Micro 36 0,128 36
Tabla correspondiente a las mediciones para
los distintos motores desmontables de
Lego Robotics
[19]

Los motores de la serie Lego Robotics han sido de tres tipos, los cuales son independientes al bloque, lo que entrega movilidad al sistema dinámico según las necesidades de construcción.

En la tabla de medición, el motor estándar es más veloz que el de 9 volts, pero este último posee más fuerza para mover el robot, ya que pueden levantar cerca de 240 piezas de 8x8, pero es más lento y a la vez más preciso. El motor Micro es sólo para funciones menores debido a su escaso torque y la mínima velocidad de rotación.

Los motores desmontables son alimentados mediante cables que poseen conductores eléctricos que transmiten la energía a los inductores. Como son motores paso a paso, el sentido de conexión no entrega la misma dirección de movimiento.

Los motores integrados al bloque son menos versátiles, pero no dependen de conexiones externas, lo cual ayuda visualmente al robot en su presentación.

El modelo NXT usa servo motores, los cuales permiten la detección de giros de la rueda, indicando los giros completos o medios giros, que es controlado por el software.[20]

Piezas especiales[editar]

Piezas especiales de fijación, rotación y móvil.

El Lego Mindstorms, a diferencia de algunas de los juegos que vende Lego, trae algunas piezas extras que permiten entregar flexibilidad y movimiento al robot que se este construyendo.

Para clasificar las piezas, se sugiere una clasificación entre las piezas móviles, flexibles y de fijación, las cuales son las que incluye el Lego Mindstorms para desarrollar cualquier robot en especial.

Piezas móviles

Las piezas móviles que dispone Lego Mindstorms se centran principalmente en la rotación de bloque, para lograr que las ruedas se muevan en un movimiento circular con respecto al bloque completo. Estas piezas móviles se pueden clasificar en dos:

  1. Pieza de rotación, permite rotar un bloque de Lego con respecto a otro, siendo hueco en el centro del mismo, y con la patas de conexión; lo cual permite añadir más piezas en la parte superior del bloque de rotación. Este bloque se usa fundamentalmente en los robots de movimiento o donde se realiza un cinta de transporte de materiales, y se conecta a uno de los motores para que provea el giro del bloque
  2. Pieza de giro, a diferencia de la pieza de rotación, la pieza de giro permite girar un bloque en el espacio, permitiendo una simulación de ojos de un robot. Esta pieza no posee una utilidad real, pero sirve de adorno para el robot.
Piezas flexibles

Las piezas flexibles permiten recrear una articulación de un sistema articulado, donde se requiere que el robot deba realizar un movimiento no rígido en forma específica, como el brazo robot o el brazo clasificador de piezas. Las piezas flexibles por lo general son tubos de plástico capaces de conectarse con dos bloques que no se encuentren separados a una distancia mayor de 4 cm

Piezas de fijación

Las piezas de fijación, son aquellas que sirven para fijar los ejes de rotación producidos por las piezas de rotación, lo cual implica que son usadas en el centro de las ruedas que posee el Lego. Por lo general, son tubos de 0.5 mm de diámetro el cual se puede poner en la punta de una barra que actúa como eje central de la rueda, fijando que la misma no se salga durante la ejecución de un programa.

Ruedas[editar]

Ruedas del Lego Mindstorms.

Uno de los principales componentes de Lego Mindstorms, y que le da mayor dinamismo a la construcción de robots son las ruedas, ya que permiten que el bloque lógico pueda moverse en un espacio real e interactúe con el medio que lo rodea.

Existen distintas versiones de ruedas, que vienen desde las llantas más anchas, que permiten mayor estabilidad y velocidad; hasta las ruedas más pequeñas que permiten el movimiento del robot en zonas más pequeñas. Se incluye además una cinta que simula el efecto de oruga que poseen los tanques, para que el usuario pueda crear tanques, o una cinta transportadora de objetos.

Una de las connotaciones más destacadas para los fanáticos de la robótica son las mediciones físicas de cada tipo de rueda, donde algunos sitios webs han realizado las pruebas[21] para distintas superficies, incluyendo en caso de mayor peso, velocidad o cantidad de ruedas.

Metodología de desarrollo[editar]

Construcción[editar]

La construcción del robot se basa en la unión de bloques de plástico, característicos de Lego, junto con piezas plegables y algunas piezas que permiten la rotación de ruedas o piezas. El modelo se debe centrar en el bloque programable, ya que este bloque provee la energía necesaria para el movimiento del robot creado. Además, se pueden fijar los sensores que se adjuntan en el kit, para que sean útiles en el desarrollo del robot.

Una de las principales estrategias de construcción se basa en determinar el tipo de robot y si el software proporcionado sirve para construir el robot. Una vez determinado esto, se puede comenzar a construir siempre en bloques de función, como por ejemplo, ensamblar las ruedas a un eje o los sensores en las bases que puedan ser útiles. Tras esto, comienza la fase de unión entorno al bloque, que es fase más critica, debido a que el sensor infrarrojo, en el bloque RCX, no debe ser tapado para que se pueda cargar el software. Una vez ensamblado el robot, se procede al envío del programa y ejecución de las sentencias programadas, y a continuación se procede similar a la programación de un software, a probar y corregir fallos.

Los fallos más comunes en la construcción se debe a la falta de movilidad de las piezas o que los sensores no detectan los valores correctos o simplemente no se mueve. Las estrategias de solución son variadas, pero a la larga, sugieren seguir el camino del rehacer el proceso de pensar y armar y luego ejecutar, es por esto último, que Lego es un juego de robótica que desarrolla la lógica.

Programación[editar]

La programación del Lego Mindstorms se realiza mediante el software que se adjunta en el empaque original, el cual trae el firmware del robot y un programa que emula un árbol de decisiones, para los cuales, el usuario debe programar las acciones a seguir por el robot. El software se encuentra dividido por cada tipo de robot que se puede construir, y que viene recomendado en el empaque.

Una de las principales características de este software de programación, es su entorno visual, el cual emula la construcción por bloques, dando la posibilidad a cualquier usuario aprendiz acostumbrarse rápidamente a la programación de bloque.

Este lenguaje permite las instrucciones secuenciales, instrucciones de ciclos e instrucciones de decisiones, éstas últimas, basadas en los datos reportados por los sensores que se puede añadir al robot.

Lenguajes alternativos de programación[editar]

El bloque del Lego Mindstorms como un producto de hardware y software integrado, puede ser programado con varias interfaces, pero todos logrando el mismo fin. Esto se puede realizar mediante la torre de comunicación y utilizando las herramientas correctas para poder acceder al firmware básico de Lego.

Algunas personas han podido ingresar por medio de interfaces rudimentarias a obtener el código básico de la memoria ROM que posee el Lego y así poder tener acceso a programación mediante assembler para poder controlar por ellos mismos el bloque.

Algunos de frameworks más conocidos con el BrickOS, LejOS y Not Quite C.

BrickOS (o LegOS)[22]

BrickOS es una librería de instrucciones y programas que permiten al programador ingresar de forma directa a la BIOS del bloque y allí instalar un micro sistema operativo con su respectivo núcleo operativo y librerías necesarias para enlazar todos los recursos que dispone el bloque. Para ser instalado debe sobreescribir el área donde se encuentra el framework original, pero con este cambio, el bloque puede ser programado en C, C++ y assembler.

BrickOS está soportado en la mayoría de las distribuciones de Linux y en Windows (por CYGWIN), usando el compilador que trae integrado linux (gcc o gcc++), generando el mapa de bytecodes para controlar las acciones del bloque.

En un inicio, este conjunto de programas se llamaba LegOS, pero la empresa Lego solicitó un cambio de nombre debido a la semejanza que existía entre ambos nombres.

LejOS[23]

LejOS a diferencia de BrickOS, no instala un sistema operativo en reemplazo del firmware del bloque RCX, sino que instala una máquina virtual de Java, lo cual permite el bloque sea programable en el lenguaje Java, por lo cual no dependen de un compilador o un sistema operativo para ser reemplazado. Sin embargo, la transparencia de procesos para el programador es más baja debido a la programación orientada a objetos que restringe LejOS, haciendo que el programa de BrickOS se más utilizado por la transparencia de procesos tanto internos como externos. Esto último repercute en que el programador, utilizando BrickOS, pierde la conciencia de los movimientos que se realiza en forma interna en el bloque, por lo que hace imposible añadir mejores capacidades de programación. Aun así, este programa es muy utilizado con los estudiantes de primer año para programación de máquinas.

Not Quite C[24]

Not Quite C es el único conjunto de programas que no reemplaza el framework original del bloque, pero eso representa una desventaja, por que debe coexistir junto al framework original, por lo tanto emular sus instrucciones, haciendo que el proceso sea más lento que por la metodología de reemplazar el framework.

Not Quite C esta disponible para Mac OS y Windows, y utiliza como lenguaje de programación una versión propia de C. Además, es compatible con la mayoría de la línea de Mindstorms, lo cual lo hace el más extenso de todos los lenguajes alternativos, debido a sus capacidades de migrar entre plataformas de los bloques de RCX.

Physical Etoys

Physical Etoys permite la programación del bloque NXT mediante un entorno de programación visual. Aunque comparte el aspecto visual con el software provisto por Lego, la filosofía de programación de Physical Etoys es muy distinta.

Ofrece dos modos de programación:

  1. El modo "directo", en el cual los programas se ejecutan en la computadora del usuario y las órdenes se transmiten al bloque NXT inmediatamente a través de la comunicación por Bluetooth o USB.
  2. El modo "compilado", en el cual los programas se bajan al bloque NXT usando Not eXactly C (la versión de Not Quite C para NXT).

Cada modo de programación tiene sus ventajas y desventajas.

El modo "directo" permite modificar los programas y ver los cambios producidos de manera inmediata en el comportamiento del robot (sin necesidad de compilar), lo cual facilita mucho la programación, sobre todo al usuario inexperto. Asimismo, al proveer una comunicación ininterrumpida entre el robot y la computadora, el modo "directo" permite ver constantemente los valores de los sensores y utilizar el robot, por ejemplo, como un adquisidor de datos.

El modo "compilado", por su parte, elimina la latencia introducida por la comunicación con la computadora, lo cual lo hace preferible para el desarrollo de tareas autónomas, donde la velocidad de respuesta del robot debe ser óptima.

Problemas de la adaptación[editar]

Un problema generado por el cambio del framework a otro lenguaje es el retardo que pueda existir entre las instrucciones, debido a la emulación de las instrucciones que el conjunto de programas le entrega al bloque. Este retardo fue registrado por Dick Swan y tras algunas pruebas de rendimiento y emulación en software permitió descubrir que el retardo medio para la ejecución de cualquier instrucción, con o sin motor encendido es de 1,75 mseg.[25]

La prueba que realizó fue realizar muchas tareas en la misma cantidad de tiempo, notando la relación lineal de las instrucciones ejecutadas, por lo cual, a mayor cantidad de instrucciones, mayor el tiempo de espera para ejecutar la instrucción.

Sensores[editar]

Voltaje Raw Sensor (Ohm) Luz (lux) Temp (°C) Toque
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
Tabla para las correspondientes constantes,
la cual sirve para analizar los valores captados por los
sensores
[26]

Sensor de luz[editar]

El sensor de luz permite tomar una muestra de luz mediante un bloque modificado que un extremo trae un conductor eléctrico y por el otro una cámara oscura que capta las luces. Esta cámara es capaz de captar luces entre los rangos de 0,6 a 760 lux. Este valor lo considera como un porcentaje, el cual es procesado por el bloque lógico, obteniendo un porcentaje aproximado de luminosidad.

El bloque RCX calcula con la fórmula Luz=145-RAW/7 para determinar el porcentaje obtenido por la lectura de la luz, tomando una muestra cada 2,9 ms, siendo leído en 100 μs. el valor que se lee a partir del sensor.[27]

Debido a que este sensor capta grados de luminosidad, no es capaz de distinguir colores, sólo captando la existencia del blanco (claridad), negro (oscuridad) y los tonos de grises que corresponden a los distintos porcentajes de luz existentes en el medio.

Sensor de temperatura[editar]

El sensor de temperatura permite leer el valor aproximado de la temperatura, mediante la interacción de un termistor en uno de los extremos, generando un campo magnético que permite la detección aproximada de la temperatura del bloque que lo contiene. El bloque original de Lego posee un termistor de 12.2 kohms a 25 °C con un coeficiente de corrección aproximado de un -3,7%/°C.[28]

La fórmula Temp=(785-RAW)/8 puede determinar la temperatura detectada por el sensor.

Sensor de contacto[editar]

El sensor de contacto permite detectar si el bloque que lo posee ha colisionado o no con algún objeto que se encuentre en su trayectoria inmediata. Al tocar una superficie, una pequeña cabeza externa se contrae, permitiendo que una pieza dentro del bloque cierre un circuito eléctrico comience a circular energía, provocando una variación de energía de 0 a 5 V.

En este caso, si la presión supera una medida estándar de 450, mostrado en la pantalla de LCD, se considera que el sensor está presionado, de otro modo, se considera que está sin presión.

Sensor de giro[27] [editar]

El sensor de giro permite conocer la posición del robot en cualquier instante. Para conocer la posición del robot, el sensor produce una variación de energía entre cuatro estados, los cuales son detectados cada 2,9 ms. y procesados por el bloque RCX durante 100 us, en los cuales pasa entre cuatro estados de energía:

2,0 volts → 4,5 volts → 1,3 volts → 3,3 volts (en sentido horario)
3,3 volts → 1,3 volts → 4,5 volts → 2,0 volts (en sentido anti horario)

Con estos estados se permite verificar cuantas variaciones de energía han sucedido desde la lectura. Cada voltaje representa un giro aproximado de 22,6º del sensor, por lo tanto existiendo cerca de 16 ciclos de voltaje para detectar un giro completo.[29] El problema de esta lectura es a bajas velocidades, debido a que genera unas minúsculas variaciones de energía, debido a que los valores intermedios no son considerados como movimiento válido.

Sensor ultrasónico[editar]

El sensor Ultrasónico sólo se incluye en el empaque de Lego Mindstorms NXT, y su principal función detectar las distancias y el movimiento de un objeto que se interponga en el camino del robot, mediante el principio de la detección ultrasónica. Este sensor es capaz de detectar objetos que se encuentren desde 0 a 255 cm

Mediante el principio del eco, el sensor es capaz de recibir la información de los distintos objetos que se encuentren en el campo de detección. El sensor funciona mejor cuando las señales ultrasónicas que recibe, provienen de objetos que sean grandes, planos o de superficies duras. Los objetos pequeños, curvos o suaves, como pelotas, pueden ser muy difíciles de detectar. Si en el cuarto se encuentra más de un sensor ultrasónico, los dispositivos pueden interferir entre ellos, resultando en detecciones pobres.[30]

Libros[editar]

  • The Unofficial Guide to LEGO® MINDSTORMSTM Robots, Jonathan B. Knudsen, ISBN 1-56592-692-7
  • 150 PROYECTOS CON LEGO MINDSTORMS-TECNOLOGÍA-INSTRUMENTACIÓN-ROBÓTICA, Ernesto Martínez de Carvajal Hedrich, (2014), ISBN 978-84-616-8106-8

Véase también[editar]

Referencias[editar]

  1. LEGO Mindstorms, Wikipedia (en italiano)
  2. a b c d e f David Mindell, Christopher Beland, Wesley Chan, Dwaine Clarke, Richard Park, Michael Trupiano (15 de diciembre de 2000). LEGO Mindstorms - The Structure of an Engineering (R)evolution. Structure of Engineering Revolutions. http://web.mit.edu/6.933/www/Fall2000/LegoMindstorms.pdf. Consultado el 15 de mayo de 2010. 
  3. Jonathan Knudsen (2000). O'Reilly (ed.): «Lego MindStorms: Lego and MIT» (en inglés). Consultado el 15 de mayo de 2010.
  4. Mónica María Sánchez Colorado (2004). Eduteka (ed.): «Ladrillos programables para robótica educativa Lego vs. Crickets» (en español). Consultado el 20 de febrero de 2007.
  5. MIT (ed.): «What is Logo?» (en inglés) (2000). Consultado el 15 de mayo de 2010.
  6. «Programmable Brick from LEGO». Logo Update On Line 7 (1). Otoño 1998. http://el.media.mit.edu/logo-foundation/pubs/logoupdate/v7n1/v7n1-pbrick.html. Consultado el 15 de mayo de 2010. 
  7. a b Mitchel Resnick, Brian Silverman (2005). Some Reflections on Designing Construction Kits for Kids. http://llk.media.mit.edu/papers/IDC-2005.pdf. Consultado el 15 de mayo de 2010. 
  8. página del proyecto TinyVM en Sourceforge
  9. «Lego se deja de experimentos». El Mundo. Enero 2004. http://www.elmundo.es/navegante/2004/01/13/laimagen/1073994744.html. Consultado el 15 de mayo de 2010. 
  10. «Announcing LEGO MINDSTORMS EV3» (en inglés). lego.com (4 de enero de 2013). Consultado el 7 de enero de 2013.
  11. CyberMaster, BrickWiki (en inglés)
  12. Micro Scout, BrickWiki (en inglés)
  13. RCX, Brickwiki (en inglés)
  14. LEGO® MINDSTORMS(tm) Internals (en inglés)
  15. a b LEGO MInsStorms RIS
  16. Lego Mindstorms, Wikipedia (en inglés)
  17. NXT, Brickwiki (en inglés)
  18. Bluetooth, NXT Mindstorms Wiki (en inglés)
  19. Lego, Physics of Lego (en inglés)
  20. Servo Motors, NXT Mindstorms Wiki (en inglés)
  21. Wheels, Tyres and Traction (en inglés)
  22. BrickOS, Brickwiki (en inglés)
  23. LejOS, Wikipedia (en inglés)
  24. Not Quite C, Brickwiki (en inglés)
  25. CPU Time, Lego Mindsotrms Internal (en inglés)
  26. Sensor Basics (en inglés)
  27. a b Lego Rotation Sensor Internal (en inglés)
  28. MindStorms RCX Sensor Input Page (en español)
  29. LEGO Rotation or Angle Sensor (en inglés)
  30. NXT Ultrasonic Sensor, NXT Mindstorms (en inglés)

Enlaces externos[editar]

Otros
Software