Lego Mindstorms NXT
Lego Mindstorms NXT is a programmable robotics kit released by Lego on August 2, 2006.[1][2] It replaced the first-generation Lego Mindstorms kit, which was called the Robotics Invention System. The base kit ships in two versions: the Retail Version (set #8527)[3] and the Education Base Set (set #9797).[4] It comes with the NXT-G programming software, or optionally LabVIEW for Lego Mindstorms.[5] A variety of unofficial languages exist, such as NXC, NBC, leJOS NXJ, and RobotC. The second generation of the set, the Lego Mindstorms NXT 2.0, was released on August 1, 2009, featuring a color sensor and other upgraded capabilities. The third generation, the EV3, was released in September 2013.
NXT Intelligent Brick
The main component in the kit is a brick shaped computer called the NXT Intelligent Brick. It can take input from up to four sensors and control up to three motors, via a modified version of RJ12 cables, very much similar to but incompatible with RJ11 phone cords. The plastic pin to hold the cable in the socket is moved slightly to the right. The brick has a 100×64 pixel monochrome LCD and four buttons that can be used to navigate a user interface using hierarchical menus. It has a 32-bit ARM7TDMI-core Atmel AT91SAM7S256 microcontroller with 256 KB of FLASH memory and 64 KB of RAM, plus an 8-bit Atmel AVR ATmega48 microcontroller, and bluetooth support. It also has a speaker and can play sound files at sampling rates up to 8 kHz. Power is supplied by 6 AA (1.5 V each) batteries in the consumer version of the kit and by a Li-Ion rechargeable battery and charger in the educational version.
The Intelligent Brick remains unchanged with NXT 2.0. A black version of the brick was made to celebrate the 10th anniversary of the Mindstorms System with no change to the internals.
Development kits
Lego has released the firmware for the NXT Intelligent Brick as open source, along with schematics for all hardware components.[6]
Several developer kits are available that contain documentation for the NXT:
- Software Developer Kit (SDK), includes information on host USB drivers, executable file format, and bytecode reference
- Hardware Developer Kit (HDK), includes documentation and schematics for the NXT brick and sensors
- Bluetooth Developer Kit (BDK), documents the protocols used for Bluetooth communications
Programming
Very simple programs can be created using the menu on the NXT Intelligent Brick. More complicated programs and sound files can be downloaded using a USB port or wirelessly using Bluetooth. Files can also be copied between two NXT bricks wirelessly, and some mobile phones can be used as a remote control. Up to three NXT bricks can communicate simultaneously via Bluetooth when user created programs are run.
The retail version of the kit includes software for writing programs that run on Windows and Mac OS personal computers. The software is based on National Instruments LabVIEW and provides a visual programming language for writing simple programs and downloading them to the NXT Brick. This means that rather than requiring users to write lines of code, they instead can use flowchart like "blocks" to design their program.
NXT-G
NXT-G v2.0 is a graphical programming environment that comes bundled with the NXT. With careful construction of blocks and wires to encapsulate complexity, NXT-G can be used for real-world programming. Parallel "sequence beams" are actually parallel threads, so this software is quite good for running a handful of parallel sense/respond loops (example: wait 60 seconds, play a "bonk" sound at low volume if battery is low, loop), or blending autonomous control with bluetooth or other "remote control". The language supports virtual instruments for all Lego branded and most 3rd party sensors/components. Version 2.0 contains new tutorial challenges, a remote control, custom graphics and sound designers, and new Lego color sensor support. Community support is significant.[7]
C# with Microsoft Robotics Developer Studio
Free tools (Visual Studio Express in combination with the Robotics Developer Studio) enable programming the NXT using the C# language.[8] Other supported languages include IronPython and VB.NET.
BricxCC, Next Byte Codes, Not eXactly C
Bricx Command Center (BricxCC) is the integrated development environment (IDE) used to write, compile, and edit NBC and NXC programs for the NXT. Also, as BricxCC was originally made for the RCX, programs for it can be written using NQC via BricxCC. Different firmware versions can be flashed to the NXT using BricxCC.
BricxCC has many utilities such as NeXTExplorer (upload/download files, defragment the NXT, use file hex viewer), NeXTScreen (view what's on the NXT's LCD, and capture images and video).
Next Byte Codes (NBC) is a simple open source language with an assembly language syntax that can be used to program the NXT brick. BricxCC also has the capability to decompile standard .rxe NXT executables to NBC.
Not eXactly C (NXC) is a high level open-source language,[9] similar to C, built on the NBC compiler. It can also be used to program the NXT brick. NXC is basically NQC for the NXT.[10] It is one of the most widely used third-party programming languages for the NXT. In NXC, even creating video games for the NXT is possible. Some people have even got working grayscale on the NXT Screen.
Robolab
Robolab 2.9 Robolab is the newer programming environment originally used on the RCX programmable brick. Version 2.9 has been updated so that it can be used to program the NXT brick. Lego has announced that it will stop officially supporting Robolab but Robolab 2.9 is still available[11] and there are still many user forums and other sources of help available.
RoboMind
RoboMind is educational software that is specially developed to teach students about logic, programming and robotics. The strength of RoboMind is the compactness of the learning environment, which allows to quickly develop and test scripts in a virtual environment. The scripts can then directly be transferred to a Lego Mindstorms NXT robot, to see the result in real life.[12] RoboMind script run on the standard firmware.
Enchanting
Enchanting brings NXT programming into the popular Scratch IDE, designed by the Lifelong Kindergarten Group at MIT to make programming intuitive even for young children. The resulting NXT programs have the compactness and clarity offered by that programming environment.
ROBOTC
ROBOTC is a programming-language based on C for VEX, the VEX Cortex, FIRST Tech Challenge, and Lego Mindstorms. ROBOTC runs a very optimized firmware which allows the NXT to run programs very quickly, and also compresses the files so that a large number of programs can fit into the NXT. Like other NXT languages, ROBOTC requires this firmware to be downloaded from the ROBOTC interface in order to run.
NXTGCC
NXTGCC is a GCC toolchain for programming the NXT firmware in C.
leJOS NXT
leJOS NXJ is a high level open source language based on Java that uses custom firmware developed by the leJOS team.[13]
nxtOSEK
To be able to write in C/C++, nxtOSEK can be used, but that requires custom firmware too.[14]
MATLAB and Simulink
- MATLAB is a high-level programming language for numerical computing, data acquisition, and analysis. It can be used to control Lego NXT robots over a Bluetooth serial port (serial port communication is part of the base functionality of MATLAB) or via a USB connection; for example using the RWTH – Mindstorms NXT Toolbox[17] (free & open-source).
- Simulink is a block diagram environment for modeling and simulating dynamic systems. Using Simulink, a user can design and simulate control algorithms and Lego systems, and subsequently automatically program the Lego NXT or EV3. Support for programming the Lego NXT or EV3 only requires Simulink and is available at no additional charge.
MATLAB and Simulink Support for Lego Mindstorms programming is freely available. More information is online.[18]
Lua
plLua[19] is a port of the Lua programming language, a general purpose scripting language, for Lego Mindstorms.
Ada
A port of GNAT[20] is available for the NXT. It relies on a dedicated run-time kernel based on the Ravenscar profile, the same used on the Goce satellite: this permits to use high-level Ada features to develop concurrent and real-time systems on the Mindstorms NXT.
URBI
URBI is yet another language and is a parallel and event-driven language, with interfaces to C++/Java and Matlab. It also has a component architecture (UObject) for distribution. Urbi is compatible with many robots, including Nao (cf Robocup), Bioloid or Aibo.[21]
FLL NXT Navigation
FLL Nxt Navigation[22] is an open source program to help navigation on the FLL competition table. It uses NXT-G and .txt files to write programs. It is unknown if you can legally implement this in FLL competitions.
Ruby-nxt
Ruby-nxt[23] is a library to program the NXT for the Ruby programming language. Unlike the other languages for the NXT, the code is not compiled to a binary file. Instead the code is directly transmitted to the NXT via a Bluetooth connection.
Robotics.NXT
Robotics.NXT[24] is a Haskell interface to NXT over Bluetooth. It supports direct commands, messages and many sensors (also unofficial). It has also support for a simple message-based control of a NXT brick via remotely executed program (basic NXC code included).
LibNXT
LibNXT[25] is a utility library for talking to the Lego Mindstorms NXT intelligent brick at a relatively low level. LibNXT is targeted mainly at the platforms that the official Lego Mindstorms NXT software overlooks, namely Linux and other unices. It will work on any POSIX-compliant operating system where libusb 0.1 libusb is supported. Windows support is also possible with the win32 port of libusb.
C_NXT
C_NXT[26] is a library for controlling the Lego NXT licensed under the GPLv2. The library allows users to control a Lego NXT via bluetooth controller from within other C programs. The library provides low level control and high level abstraction. The library only runs on Linux.
PyNXC
PyNXC[27] is a project which converts Python code to "Not Exactly C" (NXC)[28] code, to download to Lego Mindstorms Robots.
NXT-Python
NXT-Python[29] is a Python module, which communicates with the NXT via USB or Bluetooth. It supports direct commands and several aftermarket sensors.
LEGO Mindstorms EV3 Software
The software which ships with the newer Mindstorms EV3 set can be used to program the NXT.[30] At the moment, Bluetooth is not supported for the NXT, so programs must be downloaded via a USB cable.
Physical Etoys
Physical Etoys is a visual programming system for different electronic devices. It supports direct mode and compiled mode.
Sensors and Actuators
The Lego Mindstorms NXT 1.0 base kit includes:[32]
- 3 identical servo motors that have built-in reduction gear assemblies with internal optical rotary encoders that sense their rotations within one degree of accuracy.[33]
- The touch sensor detects whether it is currently pressed, has been bumped, or released. The orange Enter button and the gray right and left NXT buttons can be programmed to serve as touch sensors. In the NXT-G programming software, a value of 0 is given out when it is not pressed, and a value of 1 is given out if it is pressed down.[34]
- The light sensor detects the light level in one direction, and also includes a LED for illuminating an object. The light sensor can sense reflected light values (using the built-in red LED), or ambient light. In the NXT-G programming software the sensor senses light on a scale of 0 to 100, 100 being very bright and 0 being dark.[35] If calibrated, the sensor can also be used as a distance sensor.
- The sound sensor measures volume level on a scale of 0 to 100, 100 being very loud, 0 being completely silent.
- The ultrasonic sensor can measure the distance from the sensor to something that it is facing, and detect movement. It can show the distance in both centimeters and inches. The maximum distance it can measure is 233 cm with a precision of 3 centimeters. The ultrasonic sensor works by sending out ultrasonic sound waves that bounce off an object ahead of it and then back. It senses the time it took for that to happen.[36] In the Lego Mindstorms 2.0 base kit, it includes: 2 Touch sensors, one Color sensor (detects several different colors), and an Ultrasonic sensor.
These parts are not included in the Lego Mindstorms NXT base kit and may be bought separately:[37]
- Third-party companies also manufacture sensors such as the compass, gyroscope, infrared tracker, RFID reader and accelerometer sensors sold by Lego.
- The temperature sensor can measure temperature in Celsius or Fahrenheit.
The sensors come assembled and programmed. In the software (see Programming above), people can decide what to do with the information that comes from the sensors, such as programming the robot move forward until it touches something.
Lego also sells an adapter to the Vernier sensor product line. Vernier produces data collection devices and related software for use in education.
Connector
Sensors are connected to the NXT brick using a 6-position modular connector that features both analog and digital interfaces. The analog interface is backward-compatible (using an adapter) with the older Robotics Invention System. The digital interface is capable of both I2C and RS-485 communication.
Pin | Name | Function | Color | Pin Numbering |
---|---|---|---|---|
1 | ANALOG | Analog interface, +9V Supply | white |
|
2 | GND | Ground | black | |
3 | GND | Ground | red | |
4 | IPOWERA | +4.3V Supply | green | |
5 | DIGIAI0 | I2C Clock (SCL), RS-485 B | yellow | |
6 | DIGIAI1 | I2C Data (SDA), RS-485 A | blue |
NXT 2.0
Other names | Mindstorms NXT Mindstorms NXT 2.0 |
---|---|
Parent theme | Technic |
Availability | 2009–2013 |
Official website |
Lego Mindstorms NXT 2.0 is the second set from LEGO's Lego Mindstorms series, launched on August 5, 2009, at the Lego Shop in the U.S. The set contains 619 pieces, including a new sensor that can detect colors. It is priced at approximately US$280, C$350, £230 or A$500. Lego Mindstorms NXT 2.0 has a successor, called the Lego Mindstorms EV3.[38]
8547 Kit Features
- Includes a sound editor for recording any sound and then programming the NXT Brick to play it.
- Includes an image editor for downloading an image to the NXT Brick to appear on the screen.
- Includes 619 pieces (including the NXT Brick)
NXT Intelligent Brick
- 32-bit Atmel AT91SAM7S256 main microcontroller (256 KB flash memory, 64 KB RAM)
- 8-bit Atmel ATmega48 microcontroller @ 4 MHz (4 KB flash memory, 512 Bytes RAM)
- 100×64 pixel LCD screen
- Four RJ12 input ports (ports 1–4)
- Three RJ12 output ports (ports A-C)
- USB port
- Bluetooth Class II V2.0
- Loudspeaker – 8 kHz sound quality, 8-bit resolution, 2–16 kHz sample rate
- Four push buttons, used to navigate menus and can be used in programs.
- Powered by six AA batteries or the NXT rechargeable battery
Sensors
Parts can be ordered separately. In the original kit, the sensors included are the color sensor, two touch sensors, and an ultrasonic sensor:
- Color sensor (9694), for detecting 6 different colors: blue, green, red, yellow, white, black
- Light sensor (9844), for detecting levels of light. (Included in first version, but in 2.0, replaced by color sensor.)
- Touch sensor (9843), a simple button that senses if something collided with it.
- Ultrasonic sensor (9846), for measuring distances using inaudible sound waves.
- Sound sensor (9845), for basic "hearing". Capable of measuring volume, but cannot record actual sounds.
- Compass sensor (MS1034), for detecting direction. Has a built-in calibrator to reduce interference from other magnetic items. (Not included in basic kit, for advanced users.)
- Accelerometer sensor (MS1040), for sensing which general direction it's moving in. Also can measure g-force. (Not included in basic kit, for advanced users.)
- RFID sensor, for communication between multiple robots. (Not included in basic kit, for VERY advanced users.)
- Rotation sensor (built into servo motors), for measuring how far it has turned. This is unique, because it measures based on the turn of the gears inside, rather than the motor itself. Useful for robots that will coast and act based on distance rolled.
- Bluetooth communication (built into "Intelligent brick"), for communication with other devices. Can be used mid-program or for downloading new programs and data.
Actuators
- Servo motor (9842)
- The color sensor can shine light in red, green, or blue. (Normally it senses color by using the lamp in a setting and reading the reflected light levels. It uses the same lamp here for other uses.)
Programming
Very simple programs can be created using the NXT Intelligent Brick itself. In order to create larger, more complex programs, programming software on a PC is required. The standard programming software is NXT-G, which is included in the package. Third-party programming software is also available, some of which is listed below:
NXT-G
NXT-G is the programming software included in the standard base kit. It is based on LabVIEW graphical programming. It features an interactive drag-and-drop environment.
LabVIEW Toolkit
NXT-G is powered by LabVIEW, an industry standard in programming. Created by National Instruments, LabVIEW uses data flow programming to create a virtual instrument. To allow for more advanced programming, in the graphical sense, National Instruments released a Toolkit for the NXT. Version 1.0 came out in December 2006. Since its release, several bugs have been found and new sensors have been created. While the toolkit does allow for the creation of new sensors, National Instruments has yet to formally release an update.
Ada
A port iof GNAT[20] is available for the NXT. It requires nxtOSEK to run. The port includes Ada bindings to the NXT hardware and nxtOSEK.
Next Byte Codes & Not eXactly C
Next Byte Codes (NBC) is a simple open-source language with an assembly language syntax that can be used to program the NXT brick.
Not eXactly C (NXC) is a high level open-source[9] language, similar to C, built on top of the NBC compiler. It can also be used to program the NXT brick. NXC is basically NQC for the NXT.[10] It is the most widely used third-party programming language.
ROBOTC
ROBOTC is an integrated development environment targeted towards students that is used to program and control Lego NXT, VEX, RCX, and Arduino robots using a programming language based on the C programming language.
RoboMind
RoboMind is an educational programming environment that offers a concise scripting language for programming a simulated robot. These internationalized scripts can, however, also directly be exported to Lego Mindstorms robots.[40] It does not require custom firmware in order to run.
NXTGCC
NXTGCC is a GCC toolchain for programming the NXT firmware in C.
URBI
URBI is a parallel and event-driven language, with interfaces to C++/Java and MATLAB. It also has a component architecture (UObject) for distributed computation. Urbi is compatible with many robots, including Nao (cf Robocup), Bioloid or Aibo.[21]
leJOS NXJ
leJOS NXJ is a high level open source language based on Java that uses custom firmware developed by the leJOS team.[13]
nxtOSEK
To be able to write in C (programming language)/C++, nxtOSEK can be used, but that requires custom firmware too.[14]
MATLAB and Simulink
- MATLAB is a high-level programming language for numerical computing, data acquisition and analysis. It can be used to control Lego NXT robots over a Bluetooth serial port (serial port communication is part of the base functionality of MATLAB) or via a USB connection; for example using the RWTH – Mindstorms NXT Toolbox[41] (free & open-source).
- Simulink is a MATLAB-based environment for modeling and simulating dynamic systems. Using Simulink, a user can design control algorithms, automatically generate C code for those algorithms, and download the compiled code onto the Lego NXT.
MATLAB and Simulink code for NXT programming is freely available.
Lua
pbLua[19] is an implementation of the Lua programming language, a general purpose scripting language, for Lego Mindstorms.
FLL NXT Navigation
FLL Nxt Navigation[22] is an open source program to help navigation on the FLL competition table. Uses NXT-G and .txt files to write programs.
ruby-nxt
ruby-nxt[42] is a library to program the NXT for the Ruby programming language. Unlike the other languages for the NXT the code isn't compiled to a binary file. Instead the code is directly transmitted to the NXT via a Bluetooth connection. This method of execution is significantly slower than executing compiled code directly.
See also
- Braigo Braille Lego printer low-cost project
- Lego Mindstorms EV3
- Lego Mindstorms
- Robotics Invention System
- URBI
- Robotics suite
- Dexter Industries – Sensors for the Lego Mindstorms NXT
- FIRST Lego League – A competition with the Lego Mindstorms NXT robot
- RobotAppStore – Apps for Robots (including Lego Mindstorms NXT)
- Robots
References
- "What's NXT? LEGO Group Unveils Lego Mindstorms NXT Robotics Toolset at Consumer Electronics Show" (Press release). Las Vegas, NV: The Lego Group. January 4, 2006. Archived from the original on July 8, 2009. Retrieved 2007-09-17.
- "LEGO MINDSTORMS NXT Robotics Toolset Now Widely Available" (Press release). New York, NY: The Lego Group. August 2, 2006. Archived from the original on September 11, 2006. Retrieved July 3, 2022.
- "8527Mindstorms NXT Kit". Mindstorms.lego.com. LEGO Group. Archived from the original on 2009-02-03. Retrieved 2008-12-26.
- "Lego Mindstorms Education NXT Base Set". Education.lego.com. Archived from the original on 2011-12-10. Retrieved 2011-09-30.
- "LEGO Education | Products > Middle School > NI LabVIEW for LEGO MINDSTORMS Software". Archived from the original on 2011-12-16. Retrieved 2011-11-16.
- "All the tools to take your Lego Mindstorms NXT to the Extreme!". Archived from the original on 6 October 2009.
- "Brickshelf Gallery - Example code fragments". Brickshelf.com. Retrieved 3 July 2022.
- "Shows". Docs.microsoft.com. Retrieved 3 July 2022.
- "Not eXactly C". Sourceforge.net.
- "NBC – NeXT Byte Codes, Not eXactly C, and SuperPro C". Sourceforge.net.
- "Lego Education". Lego.com.
- "RoboMind.net – Documentation > Lego Mindstorms NXT support". Robomind.net.
- Moral, Juan Antonio Breña. "LeJOS, Java for Lego Mindstorms". Sourceforge.net.
- "nxtOSEK". Sourceforge.net.
- "ICON". Teamhassenplug.org. Retrieved 3 July 2022.
- "Team Hassenplug". Teamhassenplug.org. Retrieved 3 July 2022.
- "mindstorms / ev3-toolbox-matlab · GitLab". Gi.rwth-aachen.de. Retrieved 3 July 2022.
- "Search Hardware Support". Mathworks.com. Retrieved 3 July 2022.
- "pbLua Home Page". 8 December 2008. Archived from the original on 2008-12-08. Retrieved 3 July 2022.
- "Libre - Home > Tools > GNAT GPL for LEGO MINDSTORMS NXT – Ravenscar Edition". Archived from the original on 2012-03-05. Retrieved 2009-06-24.
- "Gostai". Gostai.com. Archived from the original on 2007-04-30.
- "FLL NXT Navigation - Home". Archived from the original on 2016-03-04. Retrieved 2009-03-12.
- "zuk/ruby-nxt". Github.com. 14 November 2020. Retrieved 3 July 2022.
- "NXT". Hackage.haskell.org. Retrieved 3 July 2022.
- "Google Code Archive - Long-term storage for Google Code Project Hosting". Code.google.com. Retrieved 3 July 2022.
- "C_NXT". Github.com. 13 June 2016. Retrieved 3 July 2022.
- "Google Code Archive - Long-term storage for Google Code Project Hosting". Code.google.com. Retrieved 3 July 2022.
- "NBC - NeXT Byte Codes, Not eXactly C, and SuperPro C". Bricxcc.sourceforge.net. Retrieved 3 July 2022.
- "Schodet/nxt-python". Github.com. 18 June 2022. Retrieved 3 July 2022.
- "FAQs available for". Education.lego.com. Retrieved 7 December 2019.
- "UC Davis Center for Integrated Computing and STEM Education » Ch Robot Controller". Ucdavis.edu.
- "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". Lego.com. Archived from the original on 2012-05-29. Retrieved 2009-01-15.
- "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". Lego.com.
- "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". Lego.com. Archived from the original on 2012-02-17. Retrieved 2009-01-15.
- "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". Lego.com.
- "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". Lego.com.
- "Home – Lego Mindstroms - LEGO.com". Lego.com. Archived from the original on 2009-10-06. Retrieved 2009-01-15.
- Miles, Stuart (November 6, 2018). "LEGO Mindstorms NXT 2.0 launches". Pocket-lint. Retrieved January 28, 2009.
- "LEGO::NXT - LEGO NXT Direct Commands API". Metacpan.org. Retrieved 3 July 2022.
- "RoboMind.net – Documentation > Lego Mindstorms NXT support". Robomind.net.
- "mindstorms / ev3-toolbox-matlab · GitLab". Git.rwth-aachen.de. Retrieved 3 July 2022.
- "RDoc Documentation". 29 April 2010. Archived from the original on 2010-04-29. Retrieved 3 July 2022.
External links
- lego.Edutech.com, Official Lego Education partner
- external controller with open hardware beaglebone
- Program NXT, help for programming your Lego Mindstorms NXT
- Lego Mindstorms NXT at Curlie
- Mindstorms at Curlie
- HiTechnic.com, LEGO Certified Sensors for the Lego Mindstorms
- mindsensors.com, Sensors for the Lego Mindstorms NXT
- Trinfactor3.com, Enables use of 32 analog sensors with 1 NXT
- robojoy-club, NXT robot and program for beginner
- Placing and Fitting Gears
- Roberta, Educational Robotics
- Lego Mindstorms Community and Projects
- Read This Review Before You Buy Lego Mindstorms EV3
- Lego Mindstorms NXT and Lego Mindstorms NXT 2.0 Projects
- The NXT 2.0 Shooterbot in action