Quaddle URDF
A URDF (Unified Robot Description Format) model of Petoi's Quaddle β a 4-servo, omnidirectional quadruped robot kit for physical AI learning & experiments.
Try it now, no setup required: Quaddle robot simulator.
Watch it in action: Teach Quaddle How to Walk, Race with Pose-Controlled Teleoperation.
About Quaddle
- Runs on OpenCat.
- Starting at $99. Reserve yours on Kickstarter β delivery is early December 2026.
Contents
robot.urdf β the robot description (single file, no ROS package.xml/CMakeLists)
assets/ β STL meshes referenced by robot.urdf via package://assets/*.stl
All visual geometry is defined with package://assets/... mesh URIs. This is a bare
URDF, not a full ROS package β a viewer/tool that doesn't already resolve package://
paths (e.g. a generic URDF viewer, or Python tooling like yourdfpy/urdfpy) may need
either a ROS_PACKAGE_PATH entry that maps assets to this directory, or the mesh
paths rewritten to plain relative paths (assets/...).
Structure
The robot is modeled as a central body link with four identical leg assemblies β
left_front, right_front, right_back, left_back β each built from the same
per-leg joint pattern:
<side>_thigh(revolute) β the driven hip joint, connecting the leg assembly to the body. One per leg; this is the actuated servo joint.<side>_motor_arm,<side>_leg,<side>_spring(revolute) β the passive four-bar linkage that converts the single hip servo's rotation into Quaddle's knee-lift walking gait (Petoi's "retro-mechanical" leg design β one motor drives the full leg motion instead of a separate knee actuator).<side>_wheel,<side>_wheel_tip(continuous) β the rolling foot tip at the end of each leg, enabling Quaddle's omnidirectional movement (walk, strafe, spin in place) without extra actuators.<side>_knee,<side>_foot,body_collision, and theclosing_*links β fixed, zero-mass dummy frames used for collision geometry and linkage closure, not physical parts.
Totals: 46 links, 45 joints (16 revolute, 8 continuous, 21 fixed).
Viewing the model
Any URDF-compatible viewer should work once mesh paths resolve correctly, for example:
# ROS 2 (if available)
ros2 launch urdf_tutorial display.launch.py model:=robot.urdf
# Or a standalone Python viewer
pip install yourdfpy
python3 -c "import yourdfpy; yourdfpy.URDF.load('robot.urdf').show()"
License
MIT β see LICENSE.