PLAYGROUND*ROBOTICS
pick a design. build it.

Workspace

load an existing design and work the plan — progress is saved in your browser

~$3,950 partsdifficulty ●●●●~8.5 weeks0% completerepo ↗

Build plan — Gantt

ProcureFabricateAssembleBring-up
W1W2W3W4W5W6W7W8W9
Procure
Order 12x XM430-W350-T
Order electronics
Source frame hardware
Fabricate
3D print frame
Generate CHAMP config
Validate gait in Gazebo
Assemble
Assemble legs and chassis
Wire electronics
Set servo IDs and zero pose
Bring-up
Write hardware interface
IMU calibration
Tune gait.yaml
Teleop and navigation

Procure

0/3

Fabricate

0/3

Assemble

0/3

Bring-up

0/4

Build knowledge base

Official BOM ↗

BOM highlights — ~$3,950 total

Dynamixel XM430-W350-T smart servo (robotis.us ~$290-310 ea) ×12$3,480
RPLidar A1 (optional, supported by champ bringup.launch)$99
U2D2 USB converter + U2D2 Power Hub Board set$85
Raspberry Pi 4 8GB SBC (or Jetson Nano)$75
PLA filament for frame + TPU for paws (~2 kg) ×2$45
3S LiPo 5200 mAh battery (12V for XM430)$40
BNO055 9-DOF IMU (fused quaternion on imu/data)$35
Teensy 4.0 + buck converters + bearings/fasteners$91

Design files

  • cadSpotMicro frame STLs by KDY0523 (thingiverse.com/thing:3445283, PLA + flexible-filament paws, M3/M4/M5 hardware + flange bearings) plus URDFs pulled via chvmp/robots ./install_descriptions
  • electronicsU2D2 + Power Hub Board wiring for 12x Dynamixel TTL daisy-chain per emanual.robotis.com; Teensy 4.0 needs 3.3V-to-5V logic-level converter for the TTL bus; BNO055 on I2C; buck converters for SBC/logic rails
  • firmwarechvmp/firmware (lightweight CHAMP on Teensy 3.1/3.6/4.0) or a ros_control hardware interface node that subscribes trajectory_msgs/JointTrajectory and publishes sensor_msgs/JointState per the champ Hardware Integration wiki
  • simchamp Gazebo simulation (roslaunch champ_config gazebo.launch) with the config package generated by chvmp/champ_setup_assistant (pseudo-URDF, gait.yaml, joints/links maps)

Gotchas from the community

  • CHAMP mainline is ROS1 only (tested on Kinetic/Melodic; runs on Noetic, which reached EOL May 2025) — ROS2 support exists only via community forks/ports, not the documented master branch.
  • Gazebo simulation is well supported but real-hardware docs are sparse: you must write your own actuator hardware interface (subscribe JointTrajectory, publish JointState), and multiple issues (#150, #152) show real-robot bring-up friction.
  • Servo torque is the classic failure: stock SpotMicro MG996R/AX-12A-class servos stall under the ~3-4 kg robot's weight in dynamic gaits — XM430-W350-class (~4.1 Nm stall) is the realistic choice at ~$290/servo, dominating the BOM.
  • The IMU must publish a fused quaternion on imu/data with correct mounting orientation — raw MPU6050 without fusion causes bad state estimation (issues #149, #152).
  • champ_setup_assistant requires strict URDF conventions (per-leg hip->upper-leg->lower-leg->foot joint chains, correct knee orientation) and all actuators zeroed with legs perpendicular to the ground, or the controller misbehaves.
  • Gait tuning in gait.yaml is empirical: default stances can be too narrow (#155), robots flip over above ~0.7 m/s in sim, and foot-friction physics (mu1/mu2/kp) plus velocity caps need per-robot tuning.

Key docs