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. Posteriormente salió un nuevo modelo llamado EV3, el último a la fecha (2018).
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.
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:
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 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.
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]
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 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 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 estándar firmware.
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.
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 es una toolchain GCC para programar el NXT firmware en C.
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]
Para poder programar en C/C++, puede usarse nxtOSEK, pero eso requiere también un firmware específico.[12]
Para escribir archivos directamente en el NXT, ICON de Steve Hassenplug es el recurso ideal.
El soporte de MATLAB y Simulink para programar LEGO MINDSTORMS es gratuito.
LEGO MINDSTORMS Support from MATLAB and Simulink
pbLua es un puerto del lenguaje de programación Lua, un lenguaje de programación de uso general para Lego Mindstorms.
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 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 Archivado el 4 de marzo de 2016 en Wayback Machine. 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 en las competencias de FLL.
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 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 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 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 es un proyecto que convierte Python en NXC para poder ser descargado a los robots de LEGO Mindstroms.[16]
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.
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 es un sistema de programación visual para diferentes equipos electrónicos. Es soportado en modo directo o compilado.
El kit base de Lego Mindstorms NXT 1.0 incluye:[18]
Los siguientes sensores se venden por separado y no vienen incluidos en el kit de LEGO:[23]
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.
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.