An open-source quadruped robot designed to make robotics accessible — one walking robot at a time.
Corndog started as a workaround to a college rule (no drones on campus → build a walking robot instead) and turned into a nearly two-year deep dive into robotics, kinematics, and control systems. Based on the open-source MicroSpot design and inspired by Boston Dynamics' Spot, it's a small quadruped with 3 degrees of freedom per leg, a full inverse kinematics stack, IMU feedback, and a growing set of behaviors.
As featured on American Ninja Warrior Season 17
| Feature | Status |
|---|---|
| Static walking gaits (forward/backward) | ✅ Working |
| Turn left / turn right | ✅ Working |
| Standing & balancing | ✅ Working |
| Inverse kinematics (IK) | ✅ Working |
| IMU feedback (BNO08X) | ✅ Working |
| Custom animations (dance, wave, handstand, etc.) | ✅ Working |
| Companion mode (shoulder perch) | ✅ Working |
| Steam Deck wireless control + video stream | ✅ Working |
| Dynamic gaits | 🔧 In progress |
| ML-Agents gait learning | 🔧 In progress (environment skeleton done) |
| Custom power PCB | 🔧 In progress |
| Kit available for purchase | 🔜 Coming soon |
| Assembly guide | 🔜 In progress |
| Spec | Value |
|---|---|
| Size | ~15 inches |
| Legs | 4 (quadruped) |
| Degrees of freedom | 12 total (3 per leg) |
| Brain | Raspberry Pi 5 |
| Servo driver | Adafruit PCA9685 |
| Actuation range | 0–270° per servo |
| Power | LiPo battery + buck converter (custom PCB coming) |
| Construction | 3D printed (PLA) |
| Control | Tkinter GUI on-device, or Steam Deck over TCP |
Corndog is open-source — you can print and source everything yourself. If you'd rather skip the work, a kit is coming soon through OpenLonehollow.
| Tier | What You Get | Estimated Price |
|---|---|---|
| Printed Parts Only | All 3D printed structural components | ~$60–80 |
| Unassembled Kit | Printed parts + all electronics | ~$450–500 |
| Assembled & Calibrated | Fully built, programmed, and ready to go | ~$800 |
Want to build it yourself from scratch? Everything you need is in this repo and the assembly guide.
| Component | Notes | Example Link |
|---|---|---|
| Raspberry Pi 5 | Raspbian 64-bit | Amazon |
| Adafruit PCA9685 PWM Driver | I²C address 0x40 | Adafruit |
| Servo Motors × 12 | 0–270°, pulse 500–2500 µs | Amazon |
| Adafruit BNO08X IMU | I²C address 0x4B | — |
| LiPo Battery + Power Module | Custom PCB solution coming | Amazon |
| I²C LCD Display | For status readout | — |
| Wires, headers, standoffs | Standard hobby hardware | — |
A full Bill of Materials with exact quantities and sources is in progress and will be linked here.
Most structural parts come from KDY0523's Thingiverse design, with reinforced legs from mike4192's SpotMicro fork.
Modifications and custom parts (like the shoulder harness for companion mode) are included in the /3DModels folder.
- All parts currently printed in PLA
- Experimented with ASA for joints (more strength) but it snapped under stress and PLA is easier to work with
- Thanks to BTULab (where I work now) @ CU Boulder for printing assistance
Everything installs itself. On a fresh Raspberry Pi (Raspberry Pi OS Bookworm 64-bit with desktop), open a terminal on the Pi and run:
curl -sSL https://raw.githubusercontent.com/Obsideaock/Corndog/main/installer/install.sh | bash
sudo rebootThat single line handles the apt packages, I2C, the Python environment,
the IK library, the corndog command, and the boot supervisor. To install
somewhere other than ~/Corndog:
curl -sSL https://raw.githubusercontent.com/Obsideaock/Corndog/main/installer/install.sh | CORNDOG_DIR=/path/you/want bashFull details in Docs/USER_GUIDE.md.
| Script | What it does |
|---|---|
main.py |
Core control: IK, all movements, Tkinter GUI |
SteamDeckCommunication.py |
Joystick control over TCP + MJPEG video stream |
MoveLib.py |
Movement library (aliased by SteamDeck script) |
gait_engine_app.py |
Gait engine module |
StartupLCD.py |
Boot supervisor + LCD display |
tools/align.py |
Assembly Part A: hold servos at the horn pose |
tools/calibrate.py |
Assembly Part B: trim joints + save calibration |
Flipper2.py / FlipperTed.py |
Flipper Zero integration |
Calibration is built in — no more editing angles by hand. During assembly:
corndog align # Part A: before horns go on — holds every servo at
# the reference pose so you attach horns correctly
corndog calibrate # Part B: after assembly, robot ON ITS BACK — nudge
# each joint to perfect, press s to saveThe calibration lives in ~/.config/corndog/calibration.json and survives
every software update. Details in
Docs/USER_GUIDE.md.
Run
corndog gui # GUI control (on-device)
corndog deck # Steam Deck / remote control + video stream
# Stream available at http://<pi-ip>:8000/stream.mjpg
# Control on TCP port 65432- Static walking gaits
- Turn left / right
- Inverse kinematics
- IMU integration
- Companion mode
- Steam Deck control
- Assembly guide (in progress)
- Full BOM
- Custom power PCB
- Dynamic gaits
- ML-Agents gait training
- Web dashboard
- Kit launch
Issues and PRs are welcome — please use GitHub Issues and follow existing code style. The project is licensed CC BY 4.0, so use and adapt freely with credit.
- KDY0523 — original 3D design
- Mike4192 — reinforced legs and IK library
- BTULab @ CU Boulder — 3D printing support
Built by Leo Heuring (Obsideaock) · openlonehollow.com
