Robot export

URDF, MJCF and SDF straight from your CAD model

Model the robot as parts and joints, the way you would anyway. ProtoJoint writes the robot description from that: links from the parts, joints from the assembly joints, inertia from the exact solids. Drag the joints to check it, then export URDF, MJCF, SDF and a ROS 2 package that opens in RViz.

A six-axis desk arm: a base clamped to the desk, six servos on their axes, the upper arm, the forearm, the wrist and a two-finger gripper.
Set each joint on its slider, or drag the picture to turn it.

ANothing drawn twice

How the assembly becomes a robot description

The export reads the assembly you already built: its parts, their placement, the joints between them and the material of each part. Open it with URDF in the editor’s header, or with Export Robot in a part’s right-click menu.

What each export writes for each thing in the model
In ProtoJointURDFMJCFSDF
A part (component)<link><body><link>
Rigid jointfixedthe child body, nested with no jointfixed
Revolute joint with limitsrevolutehinge with a rangerevolute
Revolute joint without limitscontinuoushingecontinuous
Slider jointprismaticslideprismatic
Ball jointfixed, with a warningballball
Cylindrical, pin-slot, planar jointfixed, with a warningslide and hinge joints in one bodyfixed, with a warning
Motion link (gears, rack, screw)<mimic><equality>none: SDF 1.9 has no mimic (a warning)
Mass, centre of mass, inertia<inertial><inertial><inertial>
A robot arm as a tree: base_link, then shoulder, upper_arm, forearm, wrist and gripper links joined by a fixed joint and revolute jointsbase_linkjoint: fixedshoulderjoint: revoluteupper_armjoint: revoluteforearmjoint: revolutewristjoint: continuousgripper
The joints form a tree: one root link, one parent for every other link.

The root link is the part you pinned to the world, or one you pick in the export panel. A part nested in another and moved by no joint of its own rides in its parent’s link. A joint a format cannot express is written as fixed where it stands, with a warning that says what to use instead.

BPhysics you can trust

DETAIL A

From the part, not a box around it

Each link’s mass, centre of mass and inertia come from its exact shape and its part’s material: steel, aluminium 6061, PLA, nylon and more, or a density you type in.

DETAIL B

Checked before the file is written

The joints must form a tree, every link needs an inertia a real object could have, and a limit needs both its ends. A part with no material is written with a warning that says so.

DETAIL C

Moved before you trust it

Select a joint and drag its handle, or type a value. Limits stop it where the real joint stops, and motion links turn geared joints together and are exported as mimic joints.

DETAIL D

A ROS 2 package, not only a file

One zip named after the package, with each link’s meshes and a README. The ROS 2 package opens in RViz with one launch command, and the MuJoCo and Gazebo files come with a scene to drop the robot into.

CWho it is for

Built next to your terminal

ROS 2 developers

Change a bracket, export, rebuild.

ROS 2’s Tier 1 platforms are Ubuntu 24.04 and Windows 101. ProtoJoint runs in the browser you already have open next to your terminal.

LeRobot and low-cost arms

Your copy of the arm, your files.

The SO-101’s official robot files were generated from a model in another program. In ProtoJoint you change a part, a gripper finger say, and write URDF and MJCF again from your own copy of the model.

→Your robot

Bring an arm or a gripper.

Import its assembly, a .sldasm or a STEP file split into one component per link. Add the joints, pin the base and export.

Sources

  1. Open Robotics, REP 2000: ROS 2 releases and target platforms, accessed October 20, 2026.