Skip to content

Instantly share code, notes, and snippets.

@Wumpf
Created May 19, 2026 14:57
Show Gist options
  • Select an option

  • Save Wumpf/7cce9c8f7db80c20741be6289d910073 to your computer and use it in GitHub Desktop.

Select an option

Save Wumpf/7cce9c8f7db80c20741be6289d910073 to your computer and use it in GitHub Desktop.
LLM generated description of URDF & alternatives
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Robot Description Formats: URDF and Alternatives</title>
<style>
body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; line-height: 1.55; max-width: 1100px; margin: 0 auto; padding: 2rem; color: #222; background: #fafafa; }
h1, h2, h3 { line-height: 1.2; }
h1 { font-size: 2.2rem; margin-bottom: 0.25rem; }
.subtitle { color: #666; margin-bottom: 2rem; }
section { background: white; border: 1px solid #ddd; border-radius: 12px; padding: 1.5rem; margin: 1.5rem 0; }
table { width: 100%; border-collapse: collapse; margin-top: 1rem; }
th, td { border: 1px solid #ddd; padding: 0.75rem; vertical-align: top; }
th { background: #f0f0f0; text-align: left; }
.tag { display: inline-block; background: #eef3ff; color: #254a91; border: 1px solid #c9d8ff; border-radius: 999px; padding: 0.15rem 0.55rem; font-size: 0.85rem; margin-right: 0.25rem; }
.note { border-left: 4px solid #4677f5; padding: 0.8rem 1rem; background: #f2f6ff; margin-top: 1rem; }
.format-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; }
.card { border: 1px solid #ddd; border-radius: 10px; padding: 1rem; background: #fff; }
.card h3 { margin-top: 0; }
</style>
</head>
<body>
<h1>URDF and Robot Description Format Alternatives</h1>
<p class="subtitle">A structured overview of URDF, SDF, MJCF, USD, glTF, Collada, and common CAD/mesh formats.</p>
<section>
<h2>What is URDF?</h2>
<p><strong>URDF</strong>, or <strong>Unified Robot Description Format</strong>, is an XML-based format commonly used in <strong>ROS</strong> to describe a robot’s physical and kinematic structure.</p>
<p>A URDF file describes how a robot is assembled from rigid bodies and joints. It is commonly used for visualization, transform computation, motion planning, collision checking, and basic simulation integration.</p>
<h3>Important things contained in URDF</h3>
<ul>
<li><strong>Links:</strong> rigid robot bodies, such as a base, arm segment, wheel, or camera housing.</li>
<li><strong>Joints:</strong> connections between links, such as fixed, revolute, continuous, prismatic, floating, or planar joints.</li>
<li><strong>Kinematic tree:</strong> parent-child relationships between links and joints.</li>
<li><strong>Visual geometry:</strong> meshes or primitive shapes used for rendering.</li>
<li><strong>Collision geometry:</strong> simplified geometry used for collision detection and planning.</li>
<li><strong>Inertial properties:</strong> mass, center of mass, and inertia tensor.</li>
<li><strong>Materials:</strong> simple colors and material references for visualization.</li>
<li><strong>ROS/Gazebo extensions:</strong> optional tags for simulation plugins, transmissions, sensors, and control interfaces.</li>
</ul>
<div class="note"><strong>Key limitation:</strong> plain URDF describes a single robot as a tree structure. It is not ideal for full simulation worlds, closed-loop mechanisms, rich materials, or complex scene composition.</div>
</section>
<section>
<h2>Main Alternatives</h2>
<div class="format-grid">
<div class="card"><h3>SDF / SDFormat</h3><p><span class="tag">Gazebo</span><span class="tag">simulation</span><span class="tag">worlds</span></p><p><strong>SDF</strong> is the simulation description format used by Gazebo and Ignition Gazebo. It can describe robots, objects, sensors, lights, plugins, and complete simulation worlds.</p><h4>Contains</h4><ul><li>Models</li><li>Links and joints</li><li>Worlds and environments</li><li>Lights</li><li>Sensors</li><li>Physics parameters</li><li>Simulation plugins</li><li>Nested models</li><li>Visual and collision geometry</li></ul></div>
<div class="card"><h3>MJCF</h3><p><span class="tag">MuJoCo</span><span class="tag">physics</span><span class="tag">robot learning</span></p><p><strong>MJCF</strong> is MuJoCo’s XML format. It is designed for high-performance physics simulation, articulated bodies, contacts, actuators, and control.</p><h4>Contains</h4><ul><li>Bodies</li><li>Joints</li><li>Geometries</li><li>Inertial properties</li><li>Actuators</li><li>Tendons</li><li>Contacts</li><li>Sensors</li><li>Materials and meshes</li><li>Simulation/compiler options</li></ul></div>
<div class="card"><h3>USD / OpenUSD</h3><p><span class="tag">3D scenes</span><span class="tag">Isaac Sim</span><span class="tag">asset pipeline</span></p><p><strong>USD</strong>, or <strong>Universal Scene Description</strong>, is a rich scene description system originally developed by Pixar. In robotics, it is commonly associated with NVIDIA Isaac Sim and advanced simulation asset pipelines.</p><h4>Contains</h4><ul><li>Scene hierarchy</li><li>Meshes and geometry</li><li>Materials and shaders</li><li>Lights and cameras</li><li>Animation</li><li>Variants and composition arcs</li><li>References to external assets</li><li>Physics metadata, with extensions</li><li>Robotics semantics, with extensions</li></ul></div>
<div class="card"><h3>glTF / GLB</h3><p><span class="tag">visual assets</span><span class="tag">web</span><span class="tag">meshes</span></p><p><strong>glTF</strong> and binary <strong>GLB</strong> are modern 3D asset formats optimized for efficient transmission and rendering.</p><h4>Contains</h4><ul><li>Meshes</li><li>Materials</li><li>Textures</li><li>Scene nodes</li><li>Transforms</li><li>Animations</li><li>Skins and skeletons</li><li>Cameras and lights, via extensions</li></ul></div>
<div class="card"><h3>Collada / DAE</h3><p><span class="tag">legacy</span><span class="tag">3D interchange</span><span class="tag">meshes</span></p><p><strong>Collada</strong> is an older XML-based 3D asset interchange format. It has often been used with URDF to provide visual mesh geometry.</p><h4>Contains</h4><ul><li>Meshes</li><li>Materials</li><li>Textures</li><li>Transforms</li><li>Animations</li><li>Skeletons</li><li>Scene graph information</li></ul></div>
<div class="card"><h3>CAD and Mesh Formats</h3><p><span class="tag">geometry</span><span class="tag">manufacturing</span><span class="tag">assets</span></p><p>Formats such as <strong>STEP</strong>, <strong>STL</strong>, <strong>OBJ</strong>, and <strong>FBX</strong> are commonly used for robot parts, visual geometry, or manufacturing data, but they are not complete robot description formats.</p><h4>Contains</h4><ul><li>Part geometry</li><li>Surface meshes</li><li>CAD solids, depending on format</li><li>Materials, depending on format</li><li>Textures, depending on format</li><li>Animations, depending on format</li></ul></div>
</div>
</section>
<section>
<h2>Comparison Table</h2>
<table><thead><tr><th>Format</th><th>Primary Use</th><th>Most Important Contents</th><th>Strengths</th><th>Limitations</th></tr></thead><tbody>
<tr><td><strong>URDF</strong></td><td>ROS robot model description</td><td>Links, joints, visuals, collisions, inertial data, materials</td><td>Simple, ROS-native, widely supported for robot kinematics</td><td>Limited scene/world support; weak for complex simulation</td></tr>
<tr><td><strong>SDF / SDFormat</strong></td><td>Gazebo simulation</td><td>Models, worlds, links, joints, sensors, lights, plugins, physics</td><td>Better simulation support than URDF; supports full worlds</td><td>Less universal outside Gazebo-style simulation workflows</td></tr>
<tr><td><strong>MJCF</strong></td><td>MuJoCo physics simulation</td><td>Bodies, joints, actuators, tendons, contacts, sensors, physics options</td><td>Excellent physics and control modeling</td><td>Mostly tied to MuJoCo ecosystem</td></tr>
<tr><td><strong>USD / OpenUSD</strong></td><td>Rich 3D scene and simulation asset pipelines</td><td>Scene hierarchy, meshes, materials, lights, cameras, animation, variants, references</td><td>Powerful composition and large-scene management</td><td>More complex; robotics semantics often require extensions</td></tr>
<tr><td><strong>glTF / GLB</strong></td><td>Portable 3D visual assets</td><td>Meshes, materials, textures, transforms, animations, skins</td><td>Efficient, modern, web-friendly</td><td>Not a full robot description format</td></tr>
<tr><td><strong>Collada / DAE</strong></td><td>Legacy 3D asset interchange</td><td>Meshes, materials, textures, transforms, animations</td><td>Historically common with URDF</td><td>Older, verbose, less common in modern workflows</td></tr>
<tr><td><strong>STEP / STL / OBJ / FBX</strong></td><td>CAD, geometry, and mesh exchange</td><td>Geometry, meshes, surfaces, materials, textures, sometimes animation</td><td>Useful for part design and visual/collision assets</td><td>Usually lacks robot joints, kinematics, dynamics, and semantics</td></tr>
</tbody></table>
</section>
<section>
<h2>How These Formats Relate to Each Other</h2>
<h3>Robot semantics vs. visual geometry</h3>
<table><thead><tr><th>Category</th><th>Formats</th><th>Role</th></tr></thead><tbody>
<tr><td>Robot description</td><td>URDF, SDF, MJCF</td><td>Define robot structure, joints, physical properties, and simulation behavior.</td></tr>
<tr><td>Scene description</td><td>SDF, USD</td><td>Define robots plus environments, lights, cameras, assets, and world layout.</td></tr>
<tr><td>Visual asset description</td><td>glTF, GLB, Collada, OBJ, FBX</td><td>Define meshes, materials, textures, animations, and renderable geometry.</td></tr>
<tr><td>CAD/manufacturing geometry</td><td>STEP, STL</td><td>Define engineered part geometry or mesh exports, often converted for simulation/rendering.</td></tr>
</tbody></table>
<h3>Common workflow relationships</h3>
<ul>
<li><strong>URDF often references mesh files</strong> such as STL, OBJ, DAE, or sometimes glTF for visual and collision geometry.</li>
<li><strong>URDF can be converted to SDF</strong> for Gazebo simulation, but some semantics may need plugins or extra SDF-specific configuration.</li>
<li><strong>CAD files are often simplified</strong> into visual meshes and collision meshes before being referenced by URDF, SDF, MJCF, or USD.</li>
<li><strong>SDF extends beyond a robot</strong> by describing full simulation worlds, including terrain, lights, sensors, and physics settings.</li>
<li><strong>MJCF is more simulation/control focused</strong> than URDF and is common in reinforcement learning and robotics control research.</li>
<li><strong>USD is broader than robotics</strong>: it can contain robots, environments, props, lights, cameras, materials, animation, and references to many external assets.</li>
<li><strong>glTF and Collada are usually supporting assets</strong>, not complete robot model descriptions by themselves.</li>
</ul>
<h3>Typical conversion paths</h3>
<table><thead><tr><th>From</th><th>To</th><th>Why</th></tr></thead><tbody>
<tr><td>CAD</td><td>STL / OBJ / DAE / glTF</td><td>Export robot part geometry for visualization or collision.</td></tr>
<tr><td>Meshes</td><td>URDF</td><td>Attach visual and collision geometry to robot links.</td></tr>
<tr><td>URDF</td><td>SDF</td><td>Use a ROS robot model in Gazebo-style simulation.</td></tr>
<tr><td>URDF / meshes</td><td>USD</td><td>Use robot assets in richer scene/simulation pipelines such as Isaac Sim.</td></tr>
<tr><td>URDF / custom model</td><td>MJCF</td><td>Use the robot in MuJoCo for physics simulation or robot learning.</td></tr>
<tr><td>Collada / OBJ / FBX</td><td>glTF / GLB</td><td>Modernize 3D assets for efficient rendering and web use.</td></tr>
</tbody></table>
</section>
<section>
<h2>Rule of Thumb</h2>
<ul>
<li>Use <strong>URDF</strong> if you are working in ROS and need a robot model.</li>
<li>Use <strong>SDF</strong> if you need Gazebo simulation with worlds, sensors, lights, and plugins.</li>
<li>Use <strong>MJCF</strong> if you are working with MuJoCo, control, contacts, or reinforcement learning.</li>
<li>Use <strong>USD</strong> if you need rich scene composition, high-quality assets, or Isaac Sim-style workflows.</li>
<li>Use <strong>glTF / GLB</strong> for portable visual assets.</li>
<li>Use <strong>STEP</strong> for CAD interchange and engineering geometry.</li>
<li>Use <strong>STL / OBJ / DAE / FBX</strong> as supporting mesh formats, not complete robot descriptions.</li>
</ul>
</section>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment