Example: converting an industrial forklift CAD assembly to URDF
This is an internal accuracy-testing example, not a customer case study — one of several real assemblies used to stress-test Jointly's joint inference during development.
A forklift is a useful accuracy benchmark because it packs several distinct joint types and a genuinely tricky structural case into one assembly:
What's in the assembly
- Drive/steer wheels — revolute joints, straightforward from either B-Rep axes or mesh symmetry.
- The mast lift — a prismatic joint (the forks slide vertically along the mast), which needs to be distinguished from a revolute joint by translation-vs-rotation symmetry in the geometry, not assumed.
- The hydraulic tilt cylinder — a revolute pivot mounting the mast assembly to the chassis.
The structural problem: reparenting
Root/base selection sometimes needs to change which part is treated as a given joint's parent in the kinematic tree — for example, choosing the chassis rather than a wheel as the base link. When that reparenting happens, a joint's type classification has to be re-derived for its new parent-child relationship, not carried over from before the reparent. In this assembly, the hydraulic mount initially kept a stale classification from its original parent after the base link was reselected, which read as a bogus prismatic joint along the wrong axis instead of the real revolute pivot. The fix was making joint classification re-run after any reparenting step, not just at initial graph construction.
This is exactly the kind of static-geometry problem B-Rep precision helps with, but doesn't fully solve — the geometry tells you the axis; getting the parent-child structure right is a separate, and in cases like this, harder problem.
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 →The takeaway
Multi-joint-type assemblies with a non-trivial root choice are where automated joint inference earns its keep — and where it's most likely to go wrong if the pipeline doesn't re-check its own assumptions after structural changes like reparenting. See the full STEP-to-URDF guide for how axis recovery works in general.