Lego Mindstorms NXT

From Wikipedia, the free encyclopedia

Logo of Lego NXT.
Logo of Lego NXT.
"Golf bot" - a robot built with the NXT set.
"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 replaces the first-generation Lego Mindstorms kit, which was called the Robotics Invention System. The base kit ships in two versions: The Retail Version[2] and the Education Base Set.[3]. These can be used to compete in FIRST Lego League competitions.

Contents

[edit] NXT Brick

The main component in the kit is a brick-shaped computer called the NXT brick. It can take input from up to four sensors and control up to three motors, via RJ12 cables, very similar to but incompatible with RJ11 phone cords. The brick has a 100x64 pixel greyscale LCD display and four buttons that can be used to navigate a user interface using hierarchical menus. 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.

[edit] Technical specifications

  • 32-bit AT91SAM7S256 main microprocessor (256 KB flash memory, 64 KB RAM)
  • 8-bit ATmega48 microcontroller @ 4 MHz (4 KB flash memory, 512 Bytes RAM)
  • 100×64 pixel LCD matrix display
  • Can be programmed using Windows or Mac OS (NBC/NXC supports Linux as well)
  • Users create a program with new software, powered by LabVIEW from National Instruments
  • A single USB 2.0 port
  • Bluetooth (Class II) wireless connectivity, to transfer programs to the NXT wirelessly or offer ways to control robots remotely (through mobile phones and possibly by PDA's)
  • 4 input ports, 6-wire cable digital platform (One port includes a IEC 61158 Fieldbus Type 4/EN 50 170 (P-NET) compliant expansion port for future use)
  • 3 output ports, 6-wire cable digital platform
  • Digital Wire Interface, allowing for third-party development of external devices

Other software can also be used.

[edit] Firmware and developer kits

Lego has released the firmware for the NXT Intelligent Brick as Open Source.[4]

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

[edit] Programming

Very simple programs can be written using the menu on the NXT. 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 runs on PC and Macintosh 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.

[edit] NXT-G

NXT-G v1.0 is the programming software that comes bundled with the NXT. There are two different programming interfaces. One is included with the retail and educational kits and the other can be purchased separately. This software is adequate for basic programming, like to drive motors, incorporate sensor inputs, do calculations, learn simplified programming structures and flow control, etc. There are several pros and cons to using version 1.0 of this software, some of which are listed here:

Pros:

  • Extremely easy installation on Windows XP and Vista machines.
  • Can transfer data via Bluetooth or included USB cable.
  • Easy to Use, drag and drop, graphical environment.
  • Data wires show data flow from block to block.

Cons:

  • The programs executed on the NXT can be much larger than when compiled by another third party programming language. (e.g. 12kb versus 2kb)
  • Programs take substantially longer to load than other third party programs.
  • When creating large programs, NXT-G tends to have errors that make it crash, and lose unsaved data.
  • NXT-G software usually runs sluggishly, even on powerful PCs.

Most of these issues have been addressed in the recently-released NXT-G v1.1 version of the software.[5]

[edit] 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 is yet to formally release an update.

[edit] Next Byte Codes & Not eXactly C

Next Byte Codes (NBC) is a simple language with an assembly language syntax that can be used to program the NXT brick.

Not eXactly C (NXC) is a high level 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.[6]

[edit] leJOS NXJ

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

[edit] LEJOS OSEK

To be able to write in C/C++, LEJOS OSEK can be used, that requires custom firmware too. [8]

[edit] 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).
  • 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.

[edit] Sensors

The kit includes three identical servo motors that have built-in reduction gear assemblies with internal optical rotary encoders that sense their rotations within one degree of accuracy. The kit also includes four sensors, each with a different capability. 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. The light sensor detects the light level in one direction, and also includes an LED for illuminating an object. The light sensor can sense ambient light with the LED set to off, or reflected light with the LED set to generate light. The sound sensor has a microphone and can be used to detect a sound's amplitude (loudness). The ultrasonic sensor can measure distances and detect movement.The temperature sensor can measure temperature in Celsius or Fahrenheit.The sensors comes assembled and programmed.In the software mindstorms you can decide what to do with the information that come from the sensors (for example you can "tell" the robot move forward until he touch something).

Third-party companies also manufacture sensors, such as the color, compass, and accelerometer sensors sold by Lego.

[edit] Parts

Included in the base kit:

Included in the education base set:

Third-party parts are sold separately:

[edit] References

[edit] Further reading

[edit] External links