The heart of the kit is the big yellow brick, the RCX. This contains a microprocessor which can be programmed (you download a program into the brick through the infra-red transmitter which takes up one end of the brick).
The brick has three input ports (1, 2, 3) to which you can connect sensors, and three ports for output (A, B, C). You can just about see those in the photo above.
The standard Mindstorms kit available from LEGO comes with two different kinds of sensor that can be attached to the input ports; sensors that detect touch, and sensors that detect light. Motors are the only devices from the basic kit that can be attached to the output ports. Here is a typical robots that one can construct from these basic parts:
The robot uses tracks since these simplify the drivetrain, has "whiskers" connected to the touch sensors, and has two light sensors in front of the tracks to stop the robot rolling off the edge of its tabletop environment.
This restricted set of parts limits what one can achieve in terms of the behaviour of a given robot design, but with a little ingenuity an amazing variety of mechanical designs can be created. Two examples are given below:
The one on the left is a stable two wheel design, that on the right can rotate the chassis relative to the RCX. There are many other neat designs out there, including synchro drives and some incredible static robots (VCR anyone?).
The offical routes to programming the RCX are to use a visual programming language called RCX Code which is supplied with the kits, or RoboLab, an environment specially designed for schools and education. Both of these use the Lego-provided operating system or firmware, and the firmware puts harsh limits on programming possibilities (restricting one to use at most 32 8-bit integers as variables for example).
To overcome some of these obstacles, a legion of serious LEGO hackers has grown up, reverse engineering the RCX to discover the internals, and figuringout how to build new homebrew sensors.
Links to such sites can be found on the unofficial Mindstorms homepage.
This community has also provided alternative languages for programming the RCX with. We have:
We will use BrickOS for the practicals; be sure to download and install it before coming to the class.
Here are my Installation notes for BrickOS.
Finally, if you want to program using these non-standard languages but
have a graphical environment, this is provided by BricxCC (well if you run Windows; Linux and Mac users
have to use the usual editor/command line approach).
The robot we will use for the second half of the semester is the (very
cute) Sony AIBO. In particular, we will use the ERS-210 model:
The best source of information on doing serious robotics with the AIBO is the OPEN-R page. OPEN-R is the system provided by Sony for programming the AIBOs; OPEN-R provides a set of macros for talking to the AIBO harware and a cross-compiler to allow the C++ code that you write to be compiled into binaries that the AIBO can execute.
You can download the OPEN-R development environment from the OPEN-R page, which also contains pretty clear instructions on what to do to install OPEN-R.
You need to download the OPEN-R SDK, and you need the version for the ERS-210.
Here are some notes on installing the OPEN-R SDK. These notes are mainly concerned with installing OPEN-R under Linux, which is what our RoboCup team uses. It is possible to install OPEN-R under Windows (using Cygwin once again) and for the Mac, though we have no experience of doing so.
If you are going to install OPEN-R under Windows, note that Sony recommend downloading a specific version of Cygwin, which is available from the OPEN-R pages. This, of course, may mean you lose the version of Cygwin you installed for BrickOS.
You need to do this download and install before the first lab session in which we use AIBOs. The laptop onto which you download OPEN-R should have a USB port; we'll use the USB port to attach a peripheral that allows us to write to the special (pink) AIBO memory sticks that we load the control programs onto.
The OPEN-R page also provides links to a wealth of data on the RoboCup league that uses AIBOs. These teams are the heaviest developers of AIBO code, and much can be learnt from browsing their pages.
In particular, CUNY participates in the MetroBots AIBO team, and we will be building on the MetroBots code during the lab sessions.