Lego MindStorm NXT

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda
Robot creado usando el kit de LEGO Mindstorm NXT

LEGO Mindstorms NXT es un set programable fabricado por LEGO en julio de 2006.[1]​ Este set reemplazó a la primera versión de Lego Mindstorms RCX. Dicho aparato tiene dos versiones, la versión comercial (set#8527)[2]​ y la versión educativa (set #9797).[3]​ El set viene con el programa NXT-G u opcionalmente con el programa de LabVIEW para Lego Mindstorms.[4]​ Una nueva versión del NXT salió en 2009, llamada Lego Mindstorms NXT 2.0, la cual incluía un sensor de color y algunas otras mejoras. Más tarde salió un nuevo modelo llamado EV3, el último a la fecha (2018).

Ladrillo Programable NXT[editar]

Ladrillo programable NXT

El elemento principal del set es la computadora con forma de ladrillo, llamada Ladrillo programable NXT, o también conocido como el cerebro. El ladrillo soporta tener hasta cuatro sensores conectados y controlar hasta tres motores. Estos se conectan mediante un cable RJ12, el cual es muy similar al RJ11, pero este último es incompatible con el sistema.

El ladrillo cuenta con una pantalla LCD monocromática de 100 x 60 píxeles, cuatro botones para navegar y seleccionar los programas, también cuenta con un microcontrolador de 32 bits ARM7TDMI-core Atmel AT91SAM7S256 con 256KB de memoria y 6KB de RAM, además de un microcontrolador de 8 bit Atmel AVR ATmega48. Es alimentado por 6 pilas AA (1.5 V c/u), o con una pila recargable de Li-Ion, en la versión educativa.

El ladrillo NXT no cambió para la versión 2.0, aunque para celebrar el décimo aniversario de Mindstorms salió una edición limitada de color negro, con ninguna modificación interna.

Kits de firmware y de desarrolladores[editar]

Lego lanzó el firmware del NXT como open source, al igual que los diagramas de todos los componentes de hardware.[5]

Varios kits de desarrolladores que contienen documentación del NXT están disponibles:

  • Software Developer Kit (SDK), incluye información sobre los controladores USB, formatos de archivo ejecutable y referencias en byte code.
  • Hardware Developer Kit (HDK), contiene documentación y diagramas para el ladrillo y los sensores del NXT.
  • Bluetooth Developer Kit (BDK), contiene la documentación sobre los protocolos Bluetooth.

Programación[editar]

Se pueden crear programas muy simples solo utilizando el menú en el ladrillo NXT, para programas más complicados o sonidos se deben programar mediante el puerto USB o usando una comunicación inalámbrica mediante Bluetooth. Algunos archivos se pueden pasar de un ladrillo a otro usando Bluetooth, también se puede usar algunos celulares como control remoto. Los NXT se pueden comunicar entre sí y correr algunos programas simultáneamente, esto se puede hacer hasta con tres dispositivos NXT.

La versión comercial del kit incluye un software para escribir programas en Windows o en Mac OS. Este software está basado en LabVIEW de National Instruments el cual provee una programación visual, lo que implica que en vez de tener que escribir el código simplemente se puede programar usando diagramas esquemáticos.

NXT-G[editar]

NXT-G v2.0 es una plataforma de programación que viene incluido con el NXT. Con la construcción de bloques y cables para encapsular la complejidad, el NXT-G se puede usar para real-world programming. Su programación en paralelo es buena para poder correr ciclos de secuencias y respuestas en paralelo, para mezclar el control autónomo con el bluetooth, o con algún otro control remoto. Este lenguaje permite la visualización de todos los instrumentos de LEGO, y la mayoría de sensores y componentes externos. La versión 2.0 contiene nuevos tutoriales, un control remoto, diseños de gráficos y sonidos personalizados y soporte del nuevo sensor de color de LEGO.

C sharp con Microsoft Robotics Developer Studio[editar]

Herramientas gratuitas (Visual Studio Express en combinación con Robotics Developer Studio) habilitan la programación del NXT usando el lenguaje de programación C sharp, otros lenguajes que acepta son IronPython y VB.NET.[6]

BricxCC, Next Byte Codes, Not eXactly C[editar]

Bricx Command Center (BricxCC) es la IDE, usada para escribir, compilar, y editar programas NBC y NXC para NXT. También, como BricxCC originalmente fue creado para el RCX, los programas pueden ser escritos usando NQC vía BricxCC. Diferentes firmwares pueden ser usados para programar al NXT usando BricxCC.

BricxCC tienen muchas utilidades como NeXTExplorer (carga/descarga archivos, y desfragmento el NXT, usando el archivo hex viewer); y NeXTScreen (visualización de la pantalla LCD del NXT y captura de imágenes y vídeo).

Next Byte Codes (NBC) es un lenguaje simple de open source con la sintaxis del lenguaje de ensamblador que puede ser utilizado para programar el NXT.CricxCC también tiene la capacidad de descompilar ejecutables .rxe de NXT a NBC.

Not eXactly C (NXC) es una lenguaje de programación de open source de alto nivel,[7]​ similar a C, construido en el compilador NBC. NXC también sirve para programar el NXT. El NXC es básicamente el NQC para el NXT .[8]​ Es uno de los lenguajes de programación externos más utilizados para programar el NXT. Es posible crear videojuegos para el NXT en NXC.

Robolab[editar]

Robolab 2.9 es la plataforma más reciente originalmente usada en el RCX. La versión 2.9 ha sido actualizada para que pueda ser usada por el NXT. Lego anunció que oficialmente va a dejar de soportar Robolab pero Robolab 2.9 sigue disponible.[9]

RoboMind[editar]

RoboMind es el software educacional que fue especialmente diseñado para enseñarle a los maestros y alumnos sobre lógica, programación y robótica. La fortaleza de RoboMind es el ambiente de aprendizaje, el cual permite desarrollar y probar scripts en una plataforma virtual rápidamente. Los scripts se pueden transferir directamente al robot NXT para visualizar los resultados en la vida real.[10]​ Los scripts de RoboMind corren el standard firmware.

Enchanting[editar]

Enchanting trae la programación del NXT al Scratch IDE, diseñada por Lifelong Kindergarten Group en el MIT para hacer la programación más intuitiva inclusive para niños pequeños. El programa de NXT tiene la claridad ofrecida por esa plataforma de programación.

ROBOTC[editar]

Carnegie Mellon Robotic's Academy, ROBOTC es un lenguaje de programación basado en C por VEX, el nuevo VEX Cortex, FIRST Tech Challenge y LEGO MindStorms. ROBOTC corre una versión optimizada del firmware el cual permite que el NXT corra con gran velocidad los programas, además de que comprime los archivos para que puedan caber una gran cantidad de estos en el NXT, como cualquier otro lenguaje del NXT, ROBOTC requiere que descargues el programa directamente de la interfaz de ROBOTC para que pueda ser ejecutado.

NXTGCC[editar]

NXTGCC es una toolchain GCC para programar el NXT firmware en C.

leJOS NXT[editar]

leJOS NXJ es un lenguaje open source de alto nivel basado en Java que utiliza un firmware específico producido por el leJOS team.[11]

nxtOSEK[editar]

Para poder programar en C/C++, puede usarse nxtOSEK, pero eso requiere también un firmware específico.[12]

ICON[editar]

Para escribir archivos directamente en el NXT, ICON de Steve Hassenplug es el recurso ideal.

MATLAB y Simulink[editar]

  • MATLAB es un lenguaje de programación de alto nivel para cálculo numérico, adquisición de datos y análisis. Puede ser usado para controlar el NXT mediante el puerto serial del bluetooth (la comunicación serial es parte de la funcionalidad de MATLAB) o vía USB, por ejemplo usando el RWTH - Mindstorms NXT Toolbox.
  • Simulink es una plataforma de modelado y simulado de sistemas dinámicos usando diagrama de bloques. Usando Simulink el usuario puede diseñar y simular algoritmos de control y sistemas LEGO, por lo que se puede programar el NXT o el EV3. El soporte para programar el NXT o el EV3 requiere tener Simulink el cual no tiene un costo adicional.

El soporte de MATLAB y Simulink para programar LEGO MINDSTORMS es gratuito.

LEGO MINDSTORMS Support from MATLAB and Simulink

Lua[editar]

pbLua es un puerto del lenguaje de programación Lua, un lenguaje de programación de uso general para Lego Mindstorms.

Ada[editar]

Un puerto de GNAT está disponible para el NXT.[13]​ Se basa en núcleo de ejecución de tiempo real basado en el Ravenscar profile, el mismo que se utiliza en el satélite GOCE, este permite usar características Ada de alto nivel para desarrollar sistemas de tiempo real y concurrentes en el NXT.

URBI[editar]

URBI es otro lenguaje y es un lenguaje en paralelo y orientado a eventos, con interfaces en C++, Java y Matlab. También tiene una arquitectura de componentes (UObject) para la distribución. Urbi es compatible con varios robots, incluyendo a: NAO, Bioloid y Aibo.[14]

FLL NXT Navigation[editar]

FLL Nxt Navigation es un programa de código abierto (open source) que permite la navegación en la tabla de la competencia de FLL. Este programa utiliza NXT-G y archivos .txt para escribir los programas. No se sabe si es legal implementar esto el las competencias de FLL.

ruby-nxt[editar]

ruby-nxt es una librería del NXT para el lenguaje de programación Ruby. A diferencia de algunos otros lenguajes para el NXT el código no es compilado a un archivo binario sino que el código es directamente transmitido al NXT vía bluetooth.

Robotics.NXT[editar]

Robotics.NXT es una interfaz Haskell para el NXT por Bluetooth. Este permite comandos directos, mensajes y muchos sensores (incluyendo no oficiales), también permite un control a base de mensajes de un NXT ejecutado vía remota.

LibNXT[editar]

LibNXT es una librería de utensilios para hablarle al NXT en un nivel muy bajo. LibNXT está enfocada principalmente a las plataformas oficiales de LEGO Mindstroms NXT. La librería trabaja en todos los sistemas operativos POSIX-compliant donde libusb 0.1[15]​ sea soportado. También puede ser utilizado en Windows usando el puerto win32 de libusb.

C_NXT[editar]

C_NXT es una librería para controlar el NXT certificada bajo el GPLv2. La librería permite a los usuarios controlar el NXT vía un control bluetooth desde otros programas en C. La librería provee un bajo nivel de control pero un gran nivel de abstracción, la librería solo corre en GNU+Linux.

PyNXC[editar]

PyNXC es un proyecto que convierte Python en NXC para poder ser descargado a los robots de LEGO Mindstroms.[16]

A Lego NXT car which avoids walls implemented in Physical Etoys

NXT-Python[editar]

NXT-Python es un módulo de python en el cual se comunica con el NXT vía USB o Bluetooth, soporta comandos directos y varios sensores ajenos a LEGO.

LEGO Mindstorms EV3 Software[editar]

El software que viene con el nuevo LEGO Mindstroms EV3 puede ser usado para programar el NXT, por el momento la señal   bluetooth es incompatible por lo que los programas deben de ser descargados usando el cable USB.[17]

Physical Etoys[editar]

Physical Etoys es un sistema de programación visual para diferentes equipos electrónicos. Es soportado en modo directo o compilado.

Sensores[editar]

El kit base de Lego Mindstorms NXT 1.0 incluye:[18]

  • 3 servo motores idénticos que tienen incorporado un conjunto de reductores de velocidad con codificadores rotatorios ópticos que perciben las rotaciones con un grado de precisión.[19]
  • 1 sensor de presión, este detecta si está presionado, fue presionado o fue soltado. El botón naranja de "Enter" y los dos botones grises pueden ser programados como sensores de presión. En el software NXT-G se le asigna un valor de 0 cuando no está presionado y un valor de 1 si fue o está presionado.[20]
  • El sensor de luz detecta el nivel de luz en una sola dirección, también incluye un LED para iluminar un objeto. El sensor de luz puede detectar los valores de luz reflejados (usando el LED rojo), o el nivel de luz ambiental. En el programa de NXT-G el sensor mide una escala de luz de 0 al 100, siendo 100 muy claro y 0 muy oscuro.[21]​ Si se calibra el sensor puede ser utilizado como un sensor de distancia.
  • El sensor de sonido mide el volumen en una escala de 0 al 100, siendo 100 muy ruidoso y 0 silencio completo.
  • El sensor ultrasónico mide la distancia a la que un objeto se encuentra del sensor, y puede detectar movimiento, el sensor se puede programar para que de la medición en centímetros o en pulgadas. La distancia máxima que puede medir es de 233 cm con una precisión de 3 cm.[22]
  • En el LEGO Mindstorms 2.0 incluye un sensor de color.

Los siguientes sensores se venden por separado y no vienen incluidos en el kit de LEGO:[23]

  • Compañías externas a LEGO también fabrican sensores como: compás, giroscopio, rastreador infrarrojo, lector RFID, acelerómetros y sensores de temperatura, algunos de estos sensores también los fabrica LEGO.

Los sensores se deben de programar usando cualquiera de los medios mencionados arriba y es decisión del usuario saber qué hacer con los valores que le otorga cada uno de los sensores.

Lego también vende adaptadores para la línea de sensores Vernier.

Conectores[editar]

Los sensores son conectados al ladrillo del NXT usando una conexión modular de 6 posiciones que incluye interfaces analógicas y digitales. La interfaz análoga es compatible con la versión anterior RCX usando un adaptador. La interfaz digital es capaz de manejar las comunicaciones I2C y RS-485.

Interfaz de conexión de pines de los sensores del NXT
Pin Nombre Función Color Pin Numbering
1 ANALOG Analog interface, +9V Supply Wire white.svg
blanco
Rj25 connector.jpg
2 GND Tierra Wire black.svg
negro
3 GND Tierra Wire red.svg
rojo
4 IPOWERA +4.3V Supply Wire green.svg
verde
5 DIGIAI0 I2C Clock (SCL), RS-485 B Wire yellow.svg
amarillo
6 DIGIAI1 I2C Data (SDA), RS-485 A Wire blue.svg
azul

Notas[editar]

  1. «What's NXT? LEGO Group Unveils LEGO MINDSTORMS NXT Robotics Toolset at Consumer Electronics Show». Las Vegas, NV: The Lego Group. 4 de enero de 2006. Archivado desde el original el 8 de julio de 2009. Consultado el 17 de septiembre de 2007. 
  2. «8527Mindstorms NXT Kit». Mindstorms Website. LEGO Group. Consultado el 26 de diciembre de 2008. 
  3. «LEGO MINDSTORMS Education NXT Base Set». Lego Education Website. Lego Group. Archivado desde el original el 10 de diciembre de 2011. Consultado el 30 de septiembre de 2011. 
  4. «LEGO Education - LabVIEW for LEGO MINDSTORMS». 
  5. «All the tools to take your LEGO Mindstorms NXT to the Extreme!». Archivado desde el original el 6 de octubre de 2009. 
  6. Peek, Brian (2007–07–16). Microsoft Robotics Studio and LEGO Mindstorms NXT. Sample Project on coding4fun. MSDN Channel 9, 16 July 2007. Retrieved from http://channel9.msdn.com/coding4fun/articles/Microsoft-Robotics-Studio-and-LEGO-Mindstorms-NXT.
  7. Next Byte Codes and Not eXactly C
  8. NBC/NXC Next Byte Codes and Not eXactly C
  9. http://www.legoeducation.us/store/detail.aspx?CategoryID=177&by=9&ID=1273&c=1&t=0&l=0
  10. http://robomind.net/en/docLego.html
  11. LeJOS, Java for Lego Mindstorms
  12. http://lejos-osek.sourceforge.net/index.php
  13. «GNAT GPL for Lego MINDSTORMS | Tools | Libre». libre. adacore.com. Consultado el 14 de septiembre de 2016. 
  14. «URBI NXT Page». Archivado desde el original el 30 de abril de 2007. Consultado el 4 de agosto de 2008. 
  15. «libusb». libusb.sf.net. Consultado el 14 de septiembre de 2016. 
  16. «NBC - NeXT Byte Codes, Not eXactly C, and SuperPro C». bricxcc. sourceforge.net. Consultado el 14 de septiembre de 2016. 
  17. «LEGO.com Support - Frequently Asked Questions». lego.com. Consultado el 11 de mayo de 2014. 
  18. Lego Mindstorms NXT base kit parts
  19. Servo motors
  20. Touch sensor
  21. Light sensor
  22. Ultrasonic sensor
  23. Extra parts

Enlaces externos[editar]