NXT Programming Software

These are different ways of writing programs that will execute on the LEGO NXT brick.  This list doesn't include all features, but should include enough information to provide a good starting point for you to figure out which software best suits your needs.

Features NXT-G Retail NXT-G Educational RoboLab 2.9 NBC NXC RobotC NI LabVIEW Toolkit leJOS NXJ pbLua LEJOS OSEK ICON
Version - - - - - - - - - - -
Language type Graphic Graphic Graphic Assembly (not exactly) C C Graphic Java Lua ANSI C Graphic (on brick)
Firmware Standard Standard Standard(#1) Standard Standard Standard(#1) Standard Custom Custom Custom Standard
IDE (included?) Yes Yes Yes Yes Yes Yes No (#6) plugins for Eclipse and NetBeans. No (#7) Eclipse CDT(GCC+ATMEL SAM-BA) Yes
Windows Yes Yes Yes Yes Yes Yes Yes Yes Yes (#7) Yes na
Mac OSX Yes Yes Yes Yes Yes Not Yet Yes Yes Yes (#7) No na
Linux No No No Yes Yes No No Yes Yes (#7) No (maybe) na
Events No No Yes No No Yes No Standard Java events Yes (OSEK RTOS) No
Multithreading Yes Yes Yes Yes Yes Yes Yes Yes Yes (OSEK RTOS) No
Bluetooth Brick to PC Yes Yes No Yes Yes Yes Yes Yes Yes Yes No
Bluetooth Brick to Brick Yes Yes No Yes Yes Yes Yes Yes Yes Not yet No
Bluetooth Brick to Other Device No No No No No Yes No Yes Yes No No
I2C Support (#5) (#5) Yes Yes Yes Yes Yes Yes Yes Yes (US only) (#5)
RS 485 support - - - - - - - - - - -
File System Yes Yes Yes Yes Yes Yes Yes Yes Not Yet Not planned -
Floating Point No No Yes No No Yes No? Yes (#8) Yes -
Datalog No No Yes No No Yes No Yes No Not Yet -
How to get it Included With retail version of NXT Available with Educational Version of NXT Available with Educational Version of NXT BricxCC Web Site BricxCC Web Site RobotC.net or LEGO Education LabVIEW toolkit Site (#6) Free download from lejos Web Site pbLua Site LEJOS OSEK site ICON web site
Support for 3rd party devices Yes Yes ? ? Yes Yes ? Yes ? ? -
What do you want to do... (#2)
Make robots move without learning to program Yes Yes Yes Yes
Learn to Program using the NXT No
Write "Fast" programs Yes Yes Yes Maybe? Yes Yes
Write programs "Fast" Yes Yes Yes YES
Learn Advanced Programming concepts ? Yes Yes Yes Yes Yes Yes
Suited For (#3) People starting with the NXT- or doing simple tasks Schools starting with the NXT Schools upgrading from the RCX to the NXT Advanced programmer C programmer Applications requiring maximum speed LabVIEW users, or people wanting to improve NXT-G Java Programmers Educational Users Embedded software programmer, C/C++ programmer Programming without using a computer
   
NXT-G Retail NXT-G Educational RoboLab 2.9 NBC NXC RobotC NI LabVIEW Toolkit leJOS NXJ pbLua LEJOS OSEK ICON
Test Program (#4)
Tested Version

1.1

2.9

13c

1.0
Speed (loops/min)

762

73k

4285

103k

750/5350 (#9)

 

18k

2695

408/2057
Speed (#10)

134k/412k

31k

334k/18144k

Memory (bytes)

10704 bytes

559 bytes

1428 Bytes

561 bytes

8084/1890

1750 bytes 18240 (includes firmware)
Time to write

10 minutes

~20 min

30 minutes

30 min

15 min/80 min

30 minutes

< 10 min
Program

 Code, Graphic

Code, Graphic

Code

Code1, Code2, Author's comments

Code, Graphic / Code1 + Code2, Graphic

 

Code 1

Code 2

Code
   
Other Comments (Facts & Opinions) This software is designed for kids, but is not too limiting for adults Same as Retail version, with different "Academy" robots. LEGO has said this is the last version of RoboLab that will be made. Can be used to create blocks that work in NXT-G programs, OR it can create programs to download directly to the NXT OR it can create PC programs to control the NXT(see below) Early in development LEJOS OSEK is NOT part of the leJOS project, but does use parts of leJOS code.

Notes

(1) RoboLab and RobotC both use firmware that comes Standard with some LEGO software. 
(2) None of these are the "Final Answer" in programming, but maybe this will help you pick the right software for you. 
(3) This is mostly an opinion of who would use this software.    
(4) I created a "test program " to run on all platforms to compare speed, memory used (size of program), and approximate time to code the program, in the given language.
(5) The standard firmware does provide I2C functions, and NXT-G does use them for the Ultra-sonic sensor, but NXT-G does not provide direct access to I2C functions. 
(6) The LabVIEW Toolkit for the NXT is an add-on for LabVIEW.  In order to use it, the user must own a copy of LabVIEW.
(7) Programs are compiled on the LEGO NXT brick
(8) Lua supports something close to floating point.  Check the web site for details
(9) The two NI programs were written using (1) The Labview Toolkit & high-level calls (kid proof blocks) and (2) The Toolkit and low level elements
(10) Most software will run faster if it is optimized, by minimizing, or removing the display commands.  This row is has optimized speeds.


Software Suggestions

If you're looking here to find the "best" software, it's not that easy.  The best software depends on what you want to learn, what you already know, and what you want to do.  Even these questions are not always that clear-cut.


NXT Off-Brick controllers (Remote Controls) 

These are different types of "remote control" systems for the NXT.  Most don't require any programming on the NXT.  Generally, these allow someone to write and execute a program on a PC, which will send commands to the NXT, and in some cases, display the sensor values on the PC.  This list rapidly grew beyond the width of a page, so it was turned to accommodate more languages

Software Language type Control type NXT Required Firmware Link Type Link Source Windows Mac OSX Linux Read Sensors Websites
LEGO NXT Mobile Application Simple RC Remote Control Standard (#2) Bluetooth Phone or PDA - - - No LEGO
FunkNXT Simple RC Remote Control Standard Bluetooth Phone - - - Yes FunkNXT
BT RC NXT-G NXT to NXT Remote Program running on NXT Bluetooth Another NXT - - - User Programmable BTRC
Simple BT Remote Simple RC Remote Control Standard Bluetooth Desktop Yes No No Yes Simple Windows RC
RobotC Simple RC Remote Control Standard (#1) USB/BT Desktop Yes Not Yet No Yes Robot C Web Site
BricxCC Simple RC Remote Control Standard USB/BT Desktop Yes No Yes BricxCC Web Site
OnBrick PDA Graphic Programmable RC Standard Bluetooth PDA - - - Yes OnBrick
OnBrick PC Graphic Programmable RC Standard Bluetooth Desktop Yes No No Yes OnBrick
NXT Director Simple RC Customizable Remote Control Standard Bluetooth Palm PDA - - - No? Director
RoboDNA Simple RC Remote Control Standard Bluetooth Desktop Yes Yes RoboDNA
MS Robotics Studio .NET User Program running on PC Standard Bluetooth Desktop Yes Yes (non-commercial version is free) Download site or Microsoft Site
NI LabVIEW Toolkit Graphic (LabVIEW G) User Program running on PC Standard USB/BT Desktop Yes Yes Yes LabVIEW toolkit Site
RoboLab Graphic User Program running on PC Standard USB Desktop Yes Yes Yes Robolab 
iCommand Java User Program running on PC Standard Bluetooth Desktop or PDA Yes Yes Yes iCommand
LEGO::NXT Perl User Program running on PC Standard USB/BT Desktop Yes Yes Yes Yes Perl
nxt-Ruby Ruby User Program running on PC Standard Bluetooth Desktop Yes Yes Yes Yes Ruby
NXT# C# User Program running on PC Standard Bluetooth Desktop Yes Yes? NXT#
Mindsqualls C# User Program running on PC Standard Bluetooth Desktop Yes Yes Mindsqualls

NXT Python

Python User Program running on PC Standard USB/BT Desktop Yes Yes? Python

My Robot Me

Graphic? User Program running on PC Standard USB/BT Desktop Yes No No Yes This web site seems to be gone...Robot Me

Notes

(1) RobotC uses firmware that comes Standard with some LEGO software
(2) LEGO's Mobile Application can send messages to a program running on an NXT


Other Team Hassenplug NXT stuff

copyright 2007, Steve Hassenplug - Updated Feb 29th, 2008