Getting a robot out of CAD

A robot is designed in CAD and simulated from a URDF, and the trip between the two is where most models are quietly broken. Here is the exporter for each package, what it needs from your assembly, and the four things its output is usually wrong about.

Which exporter

SolidWorks to URDF

An assembly becomes a robot description through the ROS exporter add-in, which reads your mates and writes a package of meshes and a URDF. Then comes the part nobody tells you about: what it got wrong.

sw_urdf_exporter · BSD, maintained in the ROS ecosystem

Onshape to URDF

Onshape lives in a browser and so does its route out: a command-line tool reads the document through the API and writes the description, without exporting anything by hand.

onshape-to-robot · MIT, from the Rhoban robotics team

Fusion 360 to URDF

Fusion exports through a script you run inside it, which walks the joints in your design and writes a URDF package beside them. The unit question is the one to watch.

fusion2urdf · MIT, community maintained

Why the export is only half the job

Every one of these tools produces a file that opens and looks right. That is the problem: the failures they produce are not visible in a render. A model in millimetres where metres were meant draws perfectly and simulates as a robot the size of a building. An inertia block copied between two links draws nothing at all and makes one of them swing wrong. Mesh paths that resolve on the machine that wrote them look fine until a colleague opens the same file and sees an empty scene.

So the useful question after an export is not "did it work" but "which of these happened". Open the result in the viewer and it is checked as it loads: the size of the model against the size it claims, every inertia tensor against what a rigid body can have, centres of mass against the geometry they belong to, mesh paths against whether they can travel, and parts that overlap in the pose the file declares.

After the URDF

A description is a starting point rather than an answer. Once it loads cleanly you can convert it to MJCF and run it in the physics lab, take it to USD for Isaac Sim, or author a movement in motion and find out whether the motors your CAD materials imply can perform it — before the robot exists.