Jointly Convert a file

STEP file to URDF: the complete guide

STEP is the most accurate CAD interchange format for robot conversion — but it carries no joints. Here's how a URDF is recovered from a STEP file, and how to do it fast.

Guide · ~5 min read

A STEP file (.step/.stp, ISO 10303) stores boundary representation geometry: exact analytic surfaces — cylinders, planes, cones, and the axes that define them. That precision is exactly what you want for a robot model, because a revolute joint's axis is the axis of a cylindrical surface. IGES (.iges/.igs) is similar.

The catch: STEP has no joints

STEP describes shape, not motion. There are no mates, no kinematic tree, no "this pin rotates in that hole". So converting STEP to URDF is a two-part problem:

  1. Structure — which solids are separate links, and how are they connected?
  2. Joints — for each connection, what type (revolute/prismatic/fixed) and along which axis?

How joint axes are recovered from B-Rep

Because STEP keeps exact surfaces, a converter can find where two parts meet at a shared cylindrical interface — a pin in a bore — and read the joint axis directly from that cylinder's axis. This is far more reliable than mesh-based inference, which only sees a triangulated approximation of the same surface. From B-Rep you get exact revolute and prismatic axes; from a mesh you get an estimate.

What still can't be recovered

Even with perfect geometry, a single static pose cannot tell you:

These need a human decision, a two-pose capture, or robot-class priors. A good converter is conservative here: it would rather mark a joint fixed than emit a wrong axis.

The manual route

By hand, you'd import the STEP into FreeCAD or a similar tool, split it into per-link bodies, work out each joint axis, compute inertia (density × geometry), decimate collision meshes, and hand-write the URDF XML — links, joints, <origin> frames at each hinge, <inertial> and <collision> blocks. It's doable, and it's a long afternoon per robot.

The automated route

Jointly takes the STEP file directly, recovers the structure and exact axes from the B-Rep, computes Mirtich inertia, generates convex collision, and writes the URDF (plus SDF, MJCF and USD) with meshes packaged in a ZIP. You confirm limits and which joints are motorized, and you're done in about 90 seconds.

Skip the manual work

Jointly does everything on this page automatically: drop in your CAD (STEP, mesh, SolidWorks or Onshape), and it infers joints, axes, inertia and collision, then exports a simulation-ready URDF, SDF, MJCF or USD. The first conversions are free.

Try Jointly free →

Tips for a clean STEP export