The Complete H3/H3-R Tutorial (Mini-ABB) v1.0
The Complete H3/H3-R Tutorial v1.0
Updated April 30, 2009
The purpose of this guide is to use the PowerPod program to calibrate the servos and create a custom Basic Atom 28 program for PS2 remote control, autonomous, or serial control.
Note: PS2 control programs have been verified to work with Madcatz, Pelican, Hiteck and Lynxmotion wireless controllers.

AH3-R

BH3-R

BH3

CH3-R
Hardware & Software
Hardware: SSC-32 / Bot Board / BASIC Atom 28 | PS2 Cable / PS2 Wireless Controller or RC-Style Stick Radio | Hexapod 3 / 3-R
Software: PowerPod | Basic Micro Atom IDE (supported versions: 2.2.1.1, 5.3.0.0, and 5.3.1.3 only — if your chip has a "Rev-D" label, you must use v5.3.1.3)
Resources: Close-up of SSC-32 | Close-up of Bot Board
Download PowerPod. Unzip and run setup.exe — this creates a desktop icon. When the program opens, click "Help" and review the manual before proceeding.
Figure 1.
Set the robot up on a stand such as a CD spindle. Connect the DB9 cable to your PC and to the SSC-32. Install a 6VDC battery to the quick-connect cable. Power on to verify that the green LED on the SSC-32 lights up — this indicates the SSC-32 is functioning properly (not a power indicator). It remains lit until it receives valid data, then blinks when receiving data. The servos may jump but will not hold position yet. Consult the PowerPod manual if you have trouble connecting.
Figure 2-1.
Figure 2-2.
Click "All=1500" to enable the servos. The robot's legs should move quickly into position and hold. If they go limp after moving, the battery is low — the SSC-32's green LED will be steady as a clue. If the legs look radically misaligned, remove the center servo horn screw, pull the horn off, reposition, and replace. Offsets under 15° will be corrected in the servo offset procedure.
Figure 3.
Use servo offset adjustment to fine-tune leg alignment. The goal is each leg perpendicular to the chassis with the knee forming a perfect right angle (see Figures 4-1 and 4-2).
Select servo channel 0 by clicking its radio button. Click the Offset slider to select it but don't move it yet — use the keyboard arrow keys for accuracy. Tap slowly until the joint moves. After all joints are adjusted, save the .hcf file.
Note: the PowerPod image represents the inline version, but servo channels are the same for the round version.
Figure 4.
Figure 4-1.
Figure 4-2.
Open the master .pmp program ("H3 VX.36 - Master.pmp"). Configure the following options:
IDE: Choose the appropriate version.
Control: PS2, Autonomous, or Serial.
H3 Legs: 3DOF-A, 3DOF-B, 3DOF-C, or 3DOF (Old).
H3 Body: Round or inline.
PS2 sticks dead zone: Small, Normal, or Large.
Tibia Angle: + values set foot tip away from knee (+20 recommended for 3DOF-C leg).
Auto Legs Down: If enabled, lowers lifted tripod after inactivity.
Click Save to update your config file, then click "Build Basic Program" to create your custom program.
Figure 5.
Change the baud rate jumpers on the SSC-32 to 38.4 kbaud. Remove the DB9-enable jumpers and install the DC-01 with the narrow (0.1") spaced connector on the TTL serial communication posts. The black wire is closest to the edge of the board, and the yellow wire is on RX.
Figure 6. (click to enlarge)
For the round chassis, remove the 3/8 x 4-40 screws holding the SSC-32 and install the Bot Board using the same screws. Attach the red and black wires from the SSC-32 to the VS input, with black on (−) and red on (+).
For both chassis styles: remove the ABC buttons / LED jumpers. Install the following jumpers: VS=VL, speaker enable, VL to I/O 4-7 bus. Install the DC-01 to I/O P15 with black toward the outside and yellow on the I/O pin. Consult the Bot Board manual if needed.
Figure 7. (click to enlarge)
Install the Playstation 2 cable as illustrated in Figures 8-1 and 8-2.
Figure 8-1.
Figure 8-2.
Use double-sided foam tape to stick the PS2 cable on the bottom of the robot as shown. This makes it easier to swap controllers if needed.
Figure 9.
Download and install the BASIC Atom IDE. Connect the serial data cable to the PC's serial port (9 pins that stick out) and the other end to the Bot Board's DB9 port. A BAFO BF-810 or IOGear USB-to-Serial adapter can also be used.
Figure 10.
Download the program from PowerPod into the BASIC Atom IDE and program the Atom. Install the PS2 controller receiver into the PS2 cable, apply power. If all is well, you should hear a few short beeps, the legs snap to position, and the body slowly lifts up. Then the two tripods will lift and lower once. If you properly calibrated the servo offsets, the legs should be perfectly aligned. Remove power to the robot.
Figure 11.
Make sure your PS2 controller is on. The software switches to analog mode automatically, but some controllers may need this done manually. Continuous beeping means the PS2 controller is not connected — test with a PlayStation 2 to verify.
Shoulder buttons adjust height, leg lift, and speed. Default is Walking mode. Right joystick for translation, Left joystick X-axis to rotate, Left joystick Y-axis changes ride height (L3 locks it). Press Select to switch between Walking and Body Move mode. Servo on Pin 31 auto-pans; servos on Pins 29/30 add pan/tilt or gripper (Body Move mode only).
| Button | Walking Mode (default) |
|---|---|
| Select | Switch modes |
| Right Joystick | Speed and direction for translation |
| Left Joystick | X-Axis: Rotational movement | Y-Axis: Ride height |
| L1 | Preset: Tile Floor |
| L2 | Preset: Default |
| L3 | Locks ride height |
| R1 | Preset: Tall Grass |
| R2 | Preset: Body Low |
| R3 | Horn |
| Start | Knee angle shift (max ground clearance) |
| D-Pad L/R | Left: Speed increase | Right: Speed decrease |
| D-Pad U/D | Up: Leg lift increase | Down: Leg lift decrease |
| △ Triangle | Lowers body then removes servo pulses. Press again to return (cold start). |
| O Circle | All servos = 1500mS |
| X | "Attack Mode" |
| □ Square | "Learning to Fly" |
| Button | Body Move Mode |
| Select | Switch modes |
| Right Joystick | Move body horizontally (two axis translation) |
| Left Joystick | See text above |
| L3 | Change Left Joystick function |
| R3 | Horn |
| D-Pad L/R | Left: Speed increase | Right: Speed decrease |
| D-Pad U/D | Up: Leg lift increase | Down: Leg lift decrease (affects Walking mode only) |
| △ Triangle | Lowers body then removes servo pulses. Press again to return. |
| O Circle | All servos = 1500mS |
| X | "Attack Mode" |
| □ Square | "Learning to Fly" |
Table 12.
Edit the movequery subroutine to create autonomous or custom RC code. Key variables:
XSpeed: 120 (forward) to -120 (backward) | YSpeed: 120 (right) to -120 (left) | Steering: 20 (right) to -20 (left) — rotates in place when XSpeed and YSpeed are 0 | Height: -25 to 25
LegUpShift: 20 (close to floor) to 70 (~2.5" from floor). If LegUpShift > 45, the tripod gait is modified and GaitSpeed is limited to 8–4; move the body higher (Height -15 to -20). Near 70, use GaitSpeed 8–5.
For "car mode": decrease XSpeed and use Steering to turn. For crab walk: use only XSpeed and YSpeed.
This customer-submitted program adapts Laurent's PS2 code for an RC-style stick radio. Verified with a Multiplex Royal Evo 9. Uses a 6-channel RC receiver: RC1/RC2 for forward/backward and left/right, RC4 for rotation. RC channels 5 and 6 (three-state switches) select function; RC3 (slider) provides the value.
Download: eh3r6pro.zip — RC Stick Radio Program
RC Channel Function Reference (Table 14-2)
| RC5 | RC6 | Description | Note |
|---|---|---|---|
| 2 | 2 | Do nothing | Both 3-state switches in middle |
| 2 | 1 | Attack position | — |
| 2 | 3 | Standby position | — |
| 1 | 2 | Do nothing | — |
| 1 | 1 | Speed +/− | RC3 provides value |
| 1 | 3 | Legupshift +/− | RC3 provides value |
| 3 | 2 | Do nothing | — |
| 3 | 1 | Fly position | — |
| 3 | 3 | Height +/− | RC3 provides value |
Consult the documentation for the Bot Board and SSC-32 to explore different powering options. 6VDC is recommended for the servos. A single 9VDC battery can power all VL (5VDC logic) regulators — this increases run time since servo batteries retain sufficient charge for the servos even after voltage is too low for the VL regulators.

