This article may require copy editing for grammar, style, cohesion, tone, or spelling. You can assist by editing it. (October 2017) (Learn how and when to remove this message)


"Golf bot" — a robot built with the NXT set.

Lego Mindstorms NXT is a programmable robotics kit released by Lego in late July 2006.[1] 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)[2] and the Education Base Set (set #9797).[3] It comes with the NXT-G programming software, or optionally LabVIEW for Lego Mindstorms.[4] 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

[edit]

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

[edit]

Lego has released the firmware for the NXT Intelligent Brick as open source, along with schematics for all hardware components.[5]

Several developer kits are available that contain documentation for the NXT:

Programming

[edit]

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

[edit]

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, for example: http://www.brickshelf.com/cgi-bin/gallery.cgi?f=191310

Alternative Programming Environments
Name Language Replaces Lego Firmware Platform Availability Description Link
Microsoft Robotics Developer Studio C# No(?) Windows Discontinued Free tool which supported programming the NXT and remote control with an Xbox 360 controller.[6] The software was discontinued in 2014.[7] [1]


Bricx Command Center NXC (Not eXactly C), NBC (Next Byte Codes) No Windows, Linux (development branch[8]) Open Source BricxCC is the integrated development environment (IDE) used to write, compile, and edit assembly-style NBC and C-style NXC programs for the NXT. It includes additional utilities for transferring files, capturing images and video from the NXT's LCD, and other specialised tasks. Also supports NQC programs for the previous RCXversion of Mindstorms. [2]
Robolab 2.9 Visual block-based No Windows, OS X Standalone, or free extension for proprietary software Software based on LabVIEW, originally designed for the older RCX programmable brick. Verison 2.9 added support for the NXT as an aid for existing users to transition to the new hardware. A related version "RoboLab for LabVIEW" is freely available for modern versions of LabVIEW. [3] [4]
RoboMind ROBO (text-based) No Windows, OS X, Linux Open Source A simple educational programming language, intended as a first introduction to automation and programming. It has a built-in simulation environment for developing and testing scripts. Scripts can be transferred to an NXT robot to see the result in real life.[9] [5]
Enchanting Enchanting No? Windows, OS X, Linux (experimental) Open Source An educational programming language based on Scratch developed by Southern Alberta Robotics Enthusiasts group [6]
ROBOTC ROBOTC Yes Windows Proprietary A free programming language that supports a number of educational robotics systems. Is uses a very optimized firmware, which allows it to run programs very quickly, and also compresses the files so that a large number of programs can fit into the NXT. [7]


NXTGCC

[edit]

NXTGCC is a GCC toolchain for programming the NXT firmware in C.

leJOS NXT

[edit]

leJOS NXJ is a high level open source language based on Java that uses custom firmware developed by the leJOS team.[10]

nxtOSEK

[edit]

To be able to write in C/C++, nxtOSEK can be used, but that requires custom firmware too.[11]

ICON

[edit]

To write files on the NXT itself, ICON by Steve Hassenplug is an ideal resource.

[edit]

MATLAB and Simulink Support for Lego Mindstorms programming is freely available. More information is at Lego Mindstorms Support from MATLAB and Simulink

Lua

[edit]

pbLua is a port of the Lua programming language, a general purpose scripting language, for Lego Mindstorms.

Ada

[edit]

A port of GNAT 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

[edit]

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.[12]

FLL NXT Navigation

[edit]

FLL Nxt Navigation 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

[edit]

Ruby-nxt 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

[edit]

Robotics.NXT 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

[edit]

LibNXT 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

[edit]

C_NXT 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

[edit]

PyNXC is a project which converts Python code to "Not Exactly C" (NXC) code, to download to Lego Mindstorms Robots.

NXT-Python

[edit]

NXT-Python 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

[edit]

The software which ships with the newer Mindstorms EV3 set can be used to program the NXT.[13] At the moment, Bluetooth is not supported for the NXT, so programs must be downloaded via a USB cable.

Physical Etoys

[edit]
A Lego NXT car which avoids walls implemented in Physical Etoys

Physical Etoys is a visual programming system for different electronic devices. It supports direct mode and compiled mode.

C/C++ Interpreter Ch

[edit]

Ch is a C/C++ interpreter running C/C++ code to control Lego NXT or EV3. No firmware upload/download is required, no compilation is needed. A C/C++ code running in Ch can control either a Lego NXT, EV3, or multiple of NXT/EV3.[14]

Sensors

[edit]

The Lego Mindstorms NXT 1.0 base kit includes:[15]

These parts are not included in the Lego Mindstorms NXT base kit and may be bought separately:[20]

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. [citation needed]

Lego also sells an adapter to the Vernier sensor product line. Vernier produces data collection devices and related software for use in education. [citation needed]

Connector

[edit]

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.

NXT Sensor Interface Pinout
Pin Name Function Color Pin Numbering
1 ANALOG Analog interface, +9V Supply Pin 1 – ANA
white
2 GND Ground Pin 2 – GND
black
3 GND Ground Pin 3 – GND
red
4 IPOWERA +4.3V Supply Pin 4 – IPOWERA
green
5 DIGIAI0 I2C Clock (SCL), RS-485 B Pin 5 – DIGIAI0
yellow
6 DIGIAI1 I2C Data (SDA), RS-485 A Pin 6 – DIGIAI1
blue

NXT 2.0

[edit]
Lego Mindstorms NXT 2.0
Other namesMindstorms NXT
Mindstorms NXT 2.0
Parent themeTechnic
Availability2009–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.[21]

8547 Kit Features

[edit]
Model Forklift Constructed using the Lego Mindstorms NXT 2.0

NXT Intelligent Brick

[edit]

Sensors

[edit]

Parts can be ordered separately. In the original kit, the sensors included are the color sensor, two touch sensors, and an ultrasonic sensor:

Actuators

[edit]

Programming

[edit]

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

[edit]

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

[edit]

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.

Lego::NXT

[edit]

LEGO::NXT provides an API between Perl and NXT.

Ada

[edit]

A port of GNAT 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

[edit]

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[22] 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.[23] It is the most widely used third-party programming language.

ROBOTC

[edit]

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

[edit]

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.[24] It does not require custom firmware in order to run.

NXTGCC

[edit]

NXTGCC is a GCC toolchain for programming the NXT firmware in C.

URBI

[edit]

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.[12]

leJOS NXJ

[edit]

leJOS NXJ is a high level open source language based on Java that uses custom firmware developed by the leJOS team.[10]

nxtOSEK

[edit]

To be able to write in C (programming language)/C++, nxtOSEK can be used, but that requires custom firmware too.[11]

[edit]

MATLAB and Simulink code for NXT programming is freely available.

Lua

[edit]

pbLua is an implementation of the Lua programming language, a general purpose scripting language, for Lego Mindstorms.

FLL NXT Navigation

[edit]

FLL Nxt Navigation An open source program to help navigation on the FLL competition table. Uses NXT-G and .txt files to write programs.

ruby-nxt

[edit]

ruby-nxt 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.

Robotics. NXT

[edit]

Robotics.NXT 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).

See also

[edit]

Notes

[edit]
  1. ^ "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.
  2. ^ "8527Mindstorms NXT Kit". Mindstorms Website. LEGO Group. Retrieved 2008-12-26.
  3. ^ "Lego Mindstorms Education NXT Base Set". Lego Education Website. Lego Group. Archived from the original on 2011-12-10. Retrieved 2011-09-30.
  4. ^ "Lego Education – LabVIEW for Lego Mindstorms".
  5. ^ "All the tools to take your Lego Mindstorms NXT to the Extreme!". Archived from the original on 6 October 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. ^ ((cite web |url=https://mspoweruser.com/microsoft-kills-the-microsoft-research-robotics-team/%7Cdate=2014-09-22}
  8. ^ cite web |url=https://sourceforge.net/p/bricxcc/code/commit_browser |name=BricxCC SVN Code Commits |accessdate=2021-09-26}
  9. ^ "RoboMind.net – Documentation > Lego Mindstorms NXT support". robomind.net.
  10. ^ a b Moral, Juan Antonio Breña. "LeJOS, Java for Lego Mindstorms". sourceforge.net.
  11. ^ a b "nxtOSEK". sourceforge.net.
  12. ^ a b "Gostai". gostai.com. Archived from the original on 2007-04-30.
  13. ^ Education, LEGO. "FAQs available for:". education.lego.com. Retrieved 7 December 2019.
  14. ^ "UC Davis Center for Integrated Computing and STEM Education » Ch Robot Controller". ucdavis.edu.
  15. ^ "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". lego.com.
  16. ^ "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". lego.com.
  17. ^ "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". lego.com.
  18. ^ "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". lego.com.
  19. ^ "Home – LEGO® MINDSTORMS® - LEGO.com – Mindstorms LEGO.com". lego.com.
  20. ^ "Home – Lego Mindstroms - LEGO.com". lego.com.
  21. ^ Miles, Stuart (November 6, 2018). "LEGO Mindstorms NXT 2.0 launches". Pocket-lint. Retrieved January 28, 2009.
  22. ^ Cite error: The named reference Not eXactly C was invoked but never defined (see the help page).
  23. ^ Cite error: The named reference bricxcc.sourceforge.net was invoked but never defined (see the help page).
  24. ^ "RoboMind.net – Documentation > Lego Mindstorms NXT support". robomind.net.
[edit]

Category:Lua (programming language)-scriptable hardware Category:Robot kits Category:Products introduced in 2006 Category:2006 in robotics