Quadruped Robot Render
3D Render

Quadruped Robot

Robotics EngineerSpring 2025SolidWorks · 3D Printing · Python · Raspberry Pi

Overview

As part of Columbia's Robotics Studio course, I worked with a partner to design and build a four-legged walking robot from the ground up. The course covered the entire robot design process: sketching, CAD modeling, 3D printing, electronics integration, and Python programming.

Our robot, nicknamed "FC Robocop", uses 8 serial bus servomotors (240° range) arranged in a mammalian configuration with 2 degrees of freedom per leg. It's controlled by a Raspberry Pi and powered by an onboard rechargeable battery.

Max Speed

11.32 cm/s

Servomotors

8

240° range each

DOF

2 per leg

Hip + Knee joints

CAD & Design

SolidWorks CAD model
01

SolidWorks assembly model

Bottom view render showing FC Robocop branding
02

Bottom view with "FC Robocop" branding

Build

All structural components were 3D printed with careful attention to print quality and support removal. The body houses the Raspberry Pi, battery, and power regulation electronics. Each leg assembly bolts directly to the body with servos daisy-chained via serial bus.

Completed quadruped robot
03

Completed robot with electronics installed

Leg assembly detail

Hip bracket and servo assembly

Leg assembly with cable routing

Cable routing through leg

Gait & Programming

The walking gait uses a drag-and-push motion where only the knee servos move while the hips stay locked. This keeps all four feet in continuous ground contact for maximum stability.

Gait cycle (~1 second):

  1. Front knees retract, pulling body forward
  2. Rear knees extend, pushing body forward
  3. Rear knees retract to reset
  4. Front knees extend to reset

The Python code includes a health monitoring routine that tracks servo temperature, voltage, and position errors, plus a graceful shutdown that parks all legs before disabling torque.

# Gait cycle pseudocode
def walk_cycle():
  # Phase 1: Pull with front legs
  front_knees.retract()

  # Phase 2: Push with rear legs
  rear_knees.extend()

  # Phase 3-4: Reset positions
  rear_knees.retract()
  front_knees.extend()

# Health monitoring
if servo.temp > TEMP_CRIT:
  servo.disable_torque()
  print("Overheating!")

In Action

Want to see more?

View All Projects