A graphical tool to write your own RCX firmware !

NEW:     Ultimate ROBOLAB v.150 now available !!!!  <===

ROBOLAB is based on the standard LEGO RCX-firmware. This very well woven basic RCX program offers many exciting features that allow easy RCX programming in nearly any environment. One of the major firmware qualities is the remarkable system-stability: it is nearly impossible to crash a running RCX. (In fact there is only one known crash that rarely appears, when kids rapidly, continuously and sometimes simultaneously press the Run and the On/Off button). The programs controlling GASTON, the humanoid robot introduced on this site, - really complex code, regarded the fact that it has been developed in a secondary school environment - are still based on the original firmware. Some firmware limitations however appeared during the programming phase:

This unexhausted list of limitations won't affect normal RCX-programming. But, when switching to high ceiling projects, they can cause much trouble, spoiling the result. In order to continue profiting of the ROBOLAB graphical features and to allow complex RCX programming, we created "ULTIMATE ROBOLAB", a new programming tool to graphically generate code that is directly compiled to Assembler, converted to H8-opcodes and downloaded to the RCX through the normal ROBOLAB firmware-download procedure. ULTIMATE ROBOLAB automatically associates variables to their addresses, reserves memory for arrays, adds kernel-code only if required, etc; whenever possible it uses the RCX ROM-code. The results are consistent programs that unlock most of the potential of the RCX.

Some ULTIMATE ROBOLAB characteristics:

Ultimate ROBOLAB has been officially presented at the ROBOLAB conference in August 2004 


We give you the possibility to test a few examples that introduce some aspects of Ultimate ROBOLAB.

In order to test the following samples, use Download.vi as a firmware downloader working with normal ROBOLAB.

Type the name of the firmware you want to download to the RCX. (The firmware file and the Vi library must be located in the same directory!)

Get ---->   Download.vi

If now you press the RCX Run-button, the program is executed and the little man in the display starts running.

Tip: Resetting the RCX

Play around with the different RCX buttons and notice the reactions. The On/Off-button powers the RCX down or awakes it from standby mode. The View-button only produces a response, if the your program is actually running and allows you to track the sensor-values. The Prgm-button has no function unless you press it simultaneously with the On/Off-button. This causes the RCX to reset.

Note that in Ultimate ROBOLAB you can reprogram the function of each button.

1. Hello World

Comparable to standard ROBOLAB, Ultimate ROBOLAB programs start with a Begin icon and are finished with an End icon.

Get ---->   hello_world.srec


2. Ohmmeter

If you download the following program, the RCX will behave as an Ohmmeter for resistors from 0..2MOhm. Connect a resistor between the pins of Sensor port 2, the display returns the resistor value expressed in Ohms. The last digit to the right of the running man is the power of ten.

The measured resistor in this example has a value of 9.902kOhm (=9.902 * 103Ohm).

If no resistor is connected the RCX displays a value around 2.5MOhm.

Get  --> Ohmmeter.srec

range example exponent scale count_loops
0..999 478 0 x1   (0) --
1000..9999 1.200E3 3 = [(count_loops DIV 3)+1]*3 x0.001 (3) = 3-(count_loops MOD 3) 0
10000..99999 65.34E3 3 x0.01   (2) 1
100000..999999 734.5E3 3 x0.1     (1) 2
1000000..2000000 1.023E6 6 x0.001 (3) 3

The subroutine scale_Ohmmeter_display.vi  first counts the number of loops that are necessary to find out the range of the resistor-value by repeatedly dividing it by 10. Numbers smaller than 1000 are displayed as they are. The exponent and the display-scale (the place of the decimal point) are computed from the number of loops.

3. Fast datalogging

With Ultimate ROBOLAB you may do fast datalogging. The following program will store lightsensor-values at port 1 as data-points  into the red dataset at a rate of 1000 Hz. The yellow timer is used as time-base for the logging and is stored in the background to have the datalog-sets be compatible with standard ROBOLAB. Each data-point has 3 bytes.

Get  -->  fast_datalogging.srec
If you use ROBOLAB Investigator, you can upload the data. Note that the logging frequency in this example is faster than the actual sensor sampling rate of about 300Hz.

4. Using the infrared channel

Ultimate ROBOLAB gives you access to the IR-channel. You can easily set up an efficient data-exchange with the PC or a network of RCXs. Here an example how to use the LEGO remote control. Some notes about the program:

5. A curiosum: compute 255 digits of PI using the Spigot Algorithm

If you download the program PI_spigot_display.srec to the RCX, it will immediately start computing. During this phase, the display shows dots. Then you will be shown 255 digits of the number PI. The main display indicates the position, the digit to the right of the running man shows returns the number.

We rebuilt the Ferrari brother's Tape Writer, presented in their famous book Building Robots with LEGO Mindstorms, Syngress. The picture shows part of what the printer wrote: hand-drawn numbers !!

Page created 26/04/2004

last update 13/02/2006

current Ultimate ROBOLAB version 1.5.0

RetourMain Page