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