After scouring the internet for more information about how the RoboPet works, we have learned one thing: there is very little information about how the RoboPet works. This is likely because of the existence of the RoboSapien at the same time. RoboSapien was a better robotics platform and attracted all of the attention and glory.
For convenience, we’ve accumulated all of the stuff we know about the RoboPet here. Some of this comes from other source, some from our own experimentation.
The RoboPet was designed and programmed by the legendary Mark Tilden.
The RoboPet can run autonomously and is controlled by a 13 button infrared remote. When powered up, the robot is operating autonomously. Using the remote, you can direct it to perform various actions, “train” it, or record a series of up to 20 actions to be replayed on command.
The RoboPet runs on 4 AAA batteries in series, providing 6 volts raw power. It contains 5 motors and gearboxes (one for each leg and one to twist the waist.) Each gearbox is equipped with a position sensor. It also contains 3 infrared transmitters and one infrared receiver, all located in its head. There is a microphone between its front legs and a speaker located between its rear legs. In addition, there is a simple tilt sensor inside.
Its CPU is a custom 16 bit RISC processor that contains 512k of audio, 12k of programming, and 128 bytes of RAM. There is no persistent storage on board.
There are three circuit boards: the mainboard, the power board, and the tilt sensor board. Nocturnal over at EvoSapien has compiled a wonderfully complete diagram of these boards and their connections. Head over there for those details.
RoboPet uses the RoboSapien V2 IR protocol. The carrier frequency is 39.2 KHz, but carrier modulation and demodulation are done by the IR components themselves and so we can ignore it. Data is signaled by pulse encoding with a pulse time of 1/1200 of a second (about 0.833 ms).
NOTE: Although the pulse rate is supposed to be 1200 HZ, the RoboPet’s remote can vary from it a lot. Further, the amount of error a remote has will vary over time. Any code or circuitry that will be handling the remote’s transmissions will have to be very tolerant of speed variations.
The transmission protocol used is as follows. Data is sent as a string of bits, most significant bit first. There are 12 bits per command. “Signal” refers to the binary output from the IR receiver or binary input to the IR transmitter.
- When no data is being transferred, the signal is HIGH.
- A new command is signaled by taking the signal LOW for 8 pulse times (about 6.66 ms)
- A bit is sent
- If the bit is 0, the signal is taken HIGH for 1 pulse time.
- If the bit is 1, the signal is taken HIGH for 4 pulse times (about 3.33 ms)
- The signal is taken LOW for 1 pulse time.
- Step 3 is repeated until 12 bits are sent.
- The signal is taken HIGH.
Every command is 12 bits long. The first four bits identify the type of Wowwee robot the command is intended for. We know of six of these codes, but our information is old and there is likely to be more.
0011: RoboSapien V2
0101: RS Media
Therefore, every command that we’ll be dealing with starts with 0010 (0x2). Here are all the possible commands that we know of (in hexadecimal):