Converter
Convert robot description formats
Every direction below has been run over four robots — a six-axis arm, a gripper, a generic quadruped and the Unitree A1 — out and back again. What each one loses is stated on its own page, and repeated as a comment inside the file you download.
What converts into what
-
URDF to MJCF
2 things cannot cross over.
-
MJCF to URDF
2 things cannot cross over.
-
URDF to SDF
1 thing cannot cross over.
-
SDF to URDF
Nothing was dropped on any of the samples.
-
MJCF to SDF
Nothing was dropped on any of the samples.
-
SDF to MJCF
1 thing cannot cross over.
-
Xacro to URDF
Nothing was dropped on any of the samples.
-
Xacro to MJCF
1 thing cannot cross over.
-
Xacro to SDF
Nothing was dropped on any of the samples.
The formats
- URDF .urdf
- the ROS description of a robot: links, joints, geometry and inertia, one rigid tree.
- Xacro .xacro
- URDF with macros, properties and includes — expanded before anything can read it. Read only — it is a source format, not a target.
- MJCF .xml
- MuJoCo's own format: the same robot, plus everything a solver needs to simulate it.
- SDF .sdf
- Gazebo's format, which describes a whole world rather than a single robot.
Why the losses are listed at all
A converter that reports nothing is not lossless; it is quiet. These formats do not describe the same things — MJCF holds a solver's worth of settings a URDF has no words for, URDF has mimic joints SDF cannot express without a plugin, and a velocity limit lives on the joint in one and on the actuator in another. Anything we cannot carry is named, both here and inside the file, so the gap is found now rather than in a simulation that behaves oddly for reasons nobody can place.
Converting is also rarely the end of it. The viewer shows what survived, and the physics lab runs the result under gravity and contact to see whether it behaves like a robot at all.