Lego Mindstorms NXT

For other uses, see Mindstorm (disambiguation).
Logo of LEGO NXT.
"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. A new version of the set, the new Lego Mindstorms NXT 2.0, was released on August 1, 2009, featuring a color sensor and other upgraded capabilities. There is now a new Lego Mindstorms Robot, called the EV3.

NXT Intelligent Brick

NXT Intelligent Brick

The main component in the kit is a brick-shaped computer called the NXT Intelligent Brick AKA(Ciara). 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×60 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 256KB of FLASH memory and 64KB 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.

Firmware and developer kits

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

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

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.[6] 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 firmwares 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,[7] 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.[8] 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[9] 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.[10] 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

Carnegie Mellon Robotic's Academy, ROBOTC is a programming-language based on C for VEX, the new 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 you can fit a large amount of programs into your 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.[11]

nxtOSEK

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

ICON

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

MATLAB and Simulink

MATLAB and Simulink Support for LEGO MINDSTORMS programming is freely available. More information found at:

LEGO MINDSTORMS Support from MATLAB and Simulink

Lua

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

Ada

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

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

FLL NXT Navigation

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

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

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

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 <http://libusb.sf.net/> is supported. Windows support is also possible with the win32 port of libusb.

C_NXT

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 GNU+Linux.

PyNXC

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

NXT-Python

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

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

Physical Etoys

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

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

Sensors

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

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

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.

NXT Sensor Interface Pinout
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

See also

Notes

External links

Wikimedia Commons has media related to Lego Mindstorms.
This article is issued from Wikipedia - version of the 10/28/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.