Unofficial FLL FAQ06-c - RoboLab
UFAQ Table of Contents
Q12.0) What versions of Robolab will work with the NXT?
A) Only version 2.9 or latter will work with the NXT. All other versions of the program are
devoted to programming the RCX only. A 2.9 upgrade is available from LEGO Educational.
Q12.1) My new computer hangs when I use an RCX USB tower with RoboLab!
A) The new "hyperthreading" technology in the new batch of Intel processors is not compatible
with the tower's USB driver. The solution is simply to download the latest driver from LEGO at
this link
http://www.lego.com/eng/education/mindstorms/home.asp?pagename=download
Q12.2) What versions of RoboLab exist?
A) Robolab has had many revisions. Some revisions have been patches to a previous version and others
have had to be purchased. This table details the principle changes.
| RoboLab Versions |
| Version |
Comments |
| 1.0 |
Disk |
| 1.5 |
Patch from 1.5 available from LEGO |
| 2.0 |
Disk |
| 2.5 |
Disk |
| 2.5.1 |
Patch. |
| 2.5.2 |
Patch. Fixes know vision, data logging, CLI, and other problems... |
| 2.5.3 |
Disk or patched from 2.5.2. Fixes known bugs in 2.5.2 |
| 2.5.4 |
Disk. Directly supports Mac OS X. Can read old files. |
| 2.5.9 |
Disk. Supports the NXT. |
Q12.3) RoboLab hangs up at times. What is wrong?
A) It has been reported that on some systems RoboLab will hang up. The problem may occur when the system goes
into a powersave mode. If you are running a laptop, turn off hibernation and/or powersave modes.
Q12.4) What documentation is available for RoboLab?
A1) Visit the Minnesota FLL web page at www.hightechkids.org/fll. They have several good tutorials on the use of
RoboLab.
A2) LEGO Dacta sells a series of manuals aimed at teachers using RoboLab in the classroom. In the past, the
first manual came with the copy of RoboLab you get when purchasing the technology upgrade kit from FIRST. This
manual does have some useful information but may not be worth the hefty price asked.
A3) Tufts University was the creator of RoboLab. They have a huge reference manual available online at
http://www.ceeo.tufts.edu/robolabatceeo/Resources/documentation It is a reasonable reference guide but cannot
be considered a tutorial or user's guide.
Q12.5) I need documentation beyond what comes with RoboLab. Are there any tricks to help us?
A) The following tricks are available:
- Use spacebar to select between the pointer and thread tool.
- Use the tab key to select between pointer, hand, thread, and text tools.
- Press control-b to remove all the broken wires.
- On occasion you will see array tools pop up in some menus. These have no benefit in RoboLab. They are
artifacts of the underlying LabView language.
- Light sensors can be used in raw (unpowered) mode. You will need the latest 2.5.1 version or the 2.5.1
patches from Tufts (http://www.ceeo.tufts.edu/RobolabatCEEO) The specific patch needed are
the "New Generic Sensors". According to FIRST, the patches are legal to use.
- Using the pointer tool, you can single click on a wire to select just that segment.
- Double click on the wire and you select the full connection from source to destination.
- Triple click on a wire and you select the entire tree (one source to many destinations).
- Quadruple click on a wire and your finger gets tired!
- If you right click a text box, a pop-up window opens. Uncheck the "Size to text," then drag a corner of the
text box to increase the size of the text box.
- The text box inside color and the text frame can be set to colors other than white and black using the colors
palette. The lower right color box controls the text box color. The upper left (and more forward) color box
controls the frame color.
- Changing the text box color to 'T' for transparent and then increasing the text box size can allow a certain
section of code needing a comment to have a box around the code and the comment. Look for the 'T' in the lower
left hand corner after left-clicking the color box.
- You can move graphic items forward or backwards relative to each other using the tools on the menu line.
- You can arrange icons using the "align and distribute" commands.
- Clicking your right mouse button while holding down the shift key, gives you a menu of cursor tools. This
provides easy access to the eye-dropper and paint brush tools.
Q12.6) How can we speed up downloading our programs to the RCX?
A) If you use RoboLab and use subroutines, you have an opportunity to speed up your downloading. First you must
understand that each program slot has space to define 8 subroutines. These subroutines are available to be called
by the program (and tasks) loaded into the associated slot. Next you need to understand that the subroutines are
persistent. That is, they stay defined
in memory until you delete them or you remove the batteries from the RCX. With that said, you can download your
subroutines to the program slot in one download session and your program in another session. The following
description of this most ingenious idea comes from John Wanninger.
"Suppose you want to use 4 subroutines: Sub1 for Forward, Sub2 for Reverse, Sub3 for Left turn, and Sub4 for Right
turn. Let's create these in a vi we'll call "subs.vi". This vi has a start (green stoplight) , 4 'create
subroutine' function blocks, each with it's own associated subroutine branching off, and then an end (red
stoplight). Let's pick program slot 3 on the robot, and now download the program to it. Now create another vi
called "new.vi" containing several "run Subroutine" functions to run any or all of the subs Sub1, Sub2, Sub3 or
Sub4, and download it to program slot 3. Note that this vi does NOT need to contain any 'create subroutine' functions.
Those previously created subroutines will always be available in that program slot (#3 in this example) in the RCX
until they are either deleted (with the 'delete subroutine' function), written over(redefined by a new 'create
subroutine' of the same number), or the RCX batteries expire."
Q12.7) What happens to an RCX task that you stop and then restart?
A) According to the Mindstorms documentation, the stopped task will be restarted at the beginning and not
where it left off.
Q12.8) Is it possible for an RCX subroutine to call another subroutine?
A) No. Subroutines can only be one deep.
Q12.9) Why are there only 5 power levels in RoboLab when RIS has 8?
A) The icons for the power levels in RoboLab are nothing but a sub-vi wrapper around a numeric value. The
legal numeric values are 0 to 7. Notice that power level 0 is not off but rather the lowest power level. This
means you can wire a numeric value (0-7) when asked for a power level, or a RoboLab icon (1 to 5). The mapping
between RoboLab power levels and the low level numeric constants is:
RoboLab Icon Numeric value
1 0
2 1
3 3
4 5
5 7
Q12.10) Why do our programs go nuts when we add a jump into a sub-vi?
A) A program cannot have more than one set of each colored or numbered jumps and lands. When you place a
jump/land combination into a sub-vi and use that sub-vi multiple times, you actually have multiple jumps
and lands of the same color. The programs therefore get very confused.
Q12.11) How do you change the background color in RoboLab 2.5+?
A) Bring up the palette of cursors. Pick the eye dropper. Use the eye dropper to pick up some white from one
of the icons. Now switch the paint brush. Pick on the background and voila!
Q12.12) Why would you want to change the background color in RoboLab anyway?
A) Because you can(!) and because:
- A pink background on Tuesdays and orange on Fridays is about as much fun as is legal for a minor!
- Changing the color to blue is always a good laugh since you can't see half the wires!
- A white background uses less ink on a color printer.
Q12.13) In RoboLab, what is the difference between a subroutine and a sub-vi?
A) A sub-vi is a shorthand method to make your code more readable and re-usable. Code that is defined in a
sub-vi is expanded each time it is called. For those in the know, these are macros. There is no economy of
code size.
A subroutine shares the trait that a collection of code is aggregated into one place. But unlike the
sub-vi, the aggregate code is not expanded. The subroutine code only exists once in the program. When the
program goes to execute the aggregate, it remembers where it was, jumps to the subroutine, executes it, and
then jumps back to the starting point. There is economy in size.
Q12.14) In RoboLab, what is a sub-vi and how do we create them?
A) A sub-vi is a short hand notation. It allows the user to represent a series of icons with a single icon.
A sub-vi drastically reduces the number of icons displayed on the top level diagram. Sub-vis are not
subroutines in the true programming sense. They are equivalent to a macro. Each time a sub-vi is used in a
program, all the icons it represents are substituted before the program
is downloaded. You can create a sub-vi quite simply. Use the selection tool to highlight all the icons that
you wish to aggregate. Next select "Create Sub-vi" from the edit menu. The icons will be replaced with a new
icon. Double click this icon to see the original icons. Make sure to perform a "Save As" on the sub-vi to
save it. This sub-vi can now be used many places in your own program.
Be aware of a minor bug in RoboLab. The sub-vi diagram will have begin and end terminals. The terminal
labels are swapped, but the program will function properly. Use the text tool to rename the terminals.
A sub-vi can accept parameters. When creating the sub-vi, do not select numeric constants that you wish
to be parameters. When the sub-vi is created, connectors will be generated that you can tie to.
Q12.15) Why can't we seem to be able to create a subroutine using RoboLab 2.0?
A) Subroutines are part of the 'extras' that can be separately activated. Look under the 'Project' menu for
this
option. Activating the 'extras' will give you lots of new icons to explore.
Q12.16) How many containers are available in RoboLab? It looks like only three (Red, Blue, and Yellow)!
A) Yes there are quite a few available but you will need to use the generic container and tie a container
number to it. If you are using RoboLab 2.0 you will need to first install the extras to gain access to the
generic containers.
Q12.17) RoboLab keeps crashing after installation.
A) Make sure you reboot the computer after the installation and before use.
Q12.18) I have a copy of RoboLab 2.0. Should I upgrade to 2.5+?
A1) An upgrade might be in order. Some new features where added to 2.5+ that make it very nice for a veteran
team. The first is the 'autowire' feature that automatically wires icons together when they get close to
each other. 2.5+ also supports the USB tower. Besides this 2.5+ has a host of new command icons that might be
valuable. 2.5+ also supports sensors in un-powered mode and other advanced commands.
A2) Upgrade is certainly needed if you want to program an NXT as well.
Q12.19) In RoboLab, how can I tell what an icon does?
A1) Double click the icon and the front panel for that icon should appear. Often, help information will be
provided.
A2) Enable "Show Help" from the menu help command. Hovering the cursor over an icon should pop up a help
window.
Q12.20) Can RoboLab be run under OSX on a MAC?
A) Yes. RoboLab just needs to open in Classic (which happens automatically).
Q12.21) How does one have a fork within a fork without getting programming errors?
A) You must open and close the forks in a certain order. The last fork opened must be the first fork closed. In ascii art:
-----<----------<----------->---------->-------
......|..........|.........|..........|
......|..........|.........|..........|
......|..........+---------+..........|
......|...............................|
+-------------------------------+
The < and > are fork opens and closes. Ignore the dots, they are needed to keep the picture lined up. If the vertical line to not match up, cut the text and past it into NotePad or other editor that uses a fix width font!
Q12.22) Why does Robolab only have a few colored containers?
A) The colored containers are just shortcuts for generic numbered containers. If you use the generic container and tie a unique number to it, you can have many more containers. The first few numbers (1, 2, 3, 4) correspond to the colored variables. But you can use variables up to something like 35 without problems. Just be careful. The higher variable numbers are special purpose variables. They will tell you what iteration your loop is in and other interesting things, and hence using them as a variable would be bad news!
Q12.23) Is it possible to add comments to a RoboLab program?
A) Yes. You can use text boxes. Once created, if you right click a text box, a pop-up window opens. Uncheck the "Size to text," then drag a corner of the text box to increase the size of the text box.- The text box inside color and the text frame can be set to colors other than white and black using the colors palette. The lower right color box controls the text box color. The upper left (and more forward) color box controls the frame color. - Changing the text box color to 'T' for transparent and then increasing the text box size can allow a certain section of code needing a comment to have a box around the code and the comment. Look for the 'T' in the lower left hand corner after left-clicking the color box. - I haven't found a way to set the text box color other than transparent and still see any underlying code in Robolab 2.5.
Q12.24) Once a subvi is created is it possible to adjust the connectors?
A) Yes it is with some dangers. It is often just as easy to start fresh use copy and past functions to pull from the old subvi. But for the brave:
- Opened Sub VI in question.
- Right clicked on Sub VI icon in upper right corner of the Panel window and selected Show Connector.
- Right clicked on Sub VI icon (popup-menu) again and picked Disconnect All Terminals.
- Selected (Popup-Menu)/Rotate 90 degrees until the terminals were in the correct orientation.
- Left clicked (using the wiring tool) on each terminal and the appropriate component in the panel window in turn.
- Right clicked on the Begin and End terminals and made them required rather than recommended.
- Edit the text boxes from the default "Numeric" type text to something useful like "Power" or "Light Level" or "seconds".
- Saved the Sub VI.
Using similar ideas you can even add new terminals. This is left as an exercise for the reader.
Q12.25) Why does the value of our blue container get destroyed when using a loop inside a subroutine (not subvi)?
A) You have found a fascinating bug in either the firmware or in Robolab 2.5.2. The loop counter is normally assigned to container 47 when used inline or in a subvi. For some reason it gets assigned to container 1 which is the same as the blue container when used in a subroutine. Either to not use loops inside subroutines or stay away from the colored containers.
Q12.26) RoboLab hangs up each time I try to download a program.
A) The old RCX tower device driver that comes with RoboLab is not compatible with the new Hyperthreading technology. You can download a new driver from here: http://www.lego.com/eng/education/mindstorms/home.asp?pagename=download
UFAQ Table of Contents
Home
Disclaimer: This FAQ is not an official FIRST document.
It is an accumulation of knowledge derived from six thousand messages posted to
the FLL forum over three seasons. It has been reviewed by numerous people, but may
still contain errors. Use at your own risk.
Readers are encouraged to submit errors, suggested wording changes, new topics,
or comments to Skye Sweeney at skye@fll-freak.com
Copyright 2003-2006 Skye Sweeney; Last Updated on 10/28/2006