How to Make the Robosapien Go

The Java way (better-documented)

1. Download the Java API for the robot:
http://www.cs.cmu.edu/~cga/humanoids-ugrad/robosapien-java.zip

2. Download the JRE 1.5.0 & JDK 1.5.0 for your platform:
http://java.sun.com/products/archive/j2se/5.0_21/index.html

If your system is not already irreparably infested with some other
version of Java, you could try actually installing these as the system
versions. Mine was, so I just ran them from my home directory.

3. Download Netbeans 5.5.1:
http://www.netbeans.info/downloads/all.php?b_id=3095

Same deal. If you use a package manager on Unix, said package manager
will demand that you use the newer version, and will fight you tooth
and nail if you try to install an older version. I therefore also just
run this from my home directory. If you're running Java 1.5.0 from
your home directory, you'll need to tell Netbeans where they are.

4. Download NetBeans Mobility Pack 2.5, for NetBeans 5.5.1 and Java
1.5.0: http://java.sun.com/products/sjwtoolkit/download-2_5_1.html
http://www.netbeans.info/downloads/dev.php?release_version=5.5.1&build_type_id=2
and install it.

5. Follow the guide PDF found inside robosapien.zip. It tells you
pretty much everything you need to know.

The non-Java way

1. Download the Java API (no, not a typo):
http://www.cs.cmu.edu/~cga/humanoids-ugrad/robosapien-java.zip

2. Inside said API, you will find a zip file called sdimage.zip. Unzip
this into some directory. One of the resulting subdirectories will be
called rsupdate. Inside this directory is a shell script called
rsupdateapp. This is a shell script run early in the boot
process. When you're using Java, it runs your Java app. You can put
whatever you like here.
Here is a partial guide to commands you can run from your shell
script.

Here is a list of software for this robot. Of particular interest is
the C cross-compiler, so you can write C code that runs on the robot,
and is, you know, fast. However, until and unless you disassemble and
reverse-engineer the command and state-query binaries on the robot,
you'll still be calling out to them, so the utility of C may be limited.

It has been theorized by people who do this kind of thing that the
binaries in question actually pass messages over a bus of some kind to
another processing unit that actually handles control, and the thing
you're programming is actually the media end, rather than the control
end. (Hence, for example, the binary name send_robot_cmd.)

3. Once you've modified rsupdateapp to do what you like, copy it and
any necessary files to the corresponding directory on the SD
card. Unmount the SD card, stick it in the robot, and feel glorious.

Some notes:

- Some of the things you will find on the internet will suggest
cracking the robot open and doing unholy things to its innards. Don't
do that.

- If you want to get info back about, say, prints you make, you have
to keep the part in the shell script that mounts the SD card and cd's
to it, and then redirects the output of your actual program to a file
on it.

- People have gotten a USB connection to talk to the robot, and I
think even a shell, but it involved complicated Windows driver magic,
which I wasn't enormously enthusiastic about.