![]() |
Tesseract 0.28.4
|
URDF describes robot kinematic, dynamic, and visual structure in a standardized XML format.
The Universal Robot Description Format (URDF) is the standard way to describe a robot in ROS. It defines:
Your URDF essentially answers: **"What does my robot physically consist of?"**
Once you have a valid URDF, tools like Tesseract can parse it, build internal representations, and use it for collision detection, motion planning, visualization, and simulation.
Getting Started? See Tesseract URDF Loading Example for a complete walkthrough of loading and using URDF files in code.
What You Need to Know About URDF**
A URDF is a tree of links connected by joints:
All other links hang from the root through their parent joints
Example: 6-DOF Robot Arm**
Tip link: "tool_flange" (where the end-effector attaches)
URDF vs SRDF**
| Aspect | URDF | SRDF |
|---|---|---|
| Purpose | Physical structure and kinematics | Semantic meaning and planning configuration |
| Content | Links, joints, masses, geometry, frames | Planning groups, collision rules, poses, TCPs |
| Usage | Load robot into planning/simulation tools | Configure planners and collision handlers |
| Required | Yes, always | Often yes (strongly recommended with URDF) |
See Semantic Robot Description Format (SRDF) for more details on semantic descriptions.
A basic URDF contains:
Links** – Represent rigid bodies
Joints** – Connect links and define motion
Joint Types:**
| Type | DOF | Range | Use Case |
|---|---|---|---|
| revolute | 1 | Limited rotation | Arm joints, rotation axes |
| continuous | 1 | Unlimited rotation (-∞ to ∞) | Wheels, continuous spindles |
| prismatic | 1 | Limited translation | Linear actuators, slides |
| fixed | 0 | None (rigidly attached) | Sensors, brackets, tools |
| floating | 6 | Unlimited | Mobile bases, free-floating objects |
| planar | 3 | Planar motion (x, y, θ) | Mobile bases on flat terrain |
Before loading your URDF into Tesseract, review these guidelines to ensure smooth integration.
Avoid these special characters in joint and link names:**
-[ ]( )These characters cause parsing issues in Tesseract. Use underscores or CamelCase instead.
Good names:** joint_1, link_2_base, toolFlange Bad names:** joint-1, link[2], tool_flange(tcp)
Many URDFs specify both hard limits and soft limits (safety limits).
Hard Limits** – Primary joint boundaries, set in the <limit> tag:
Soft Limits** – Conservative boundaries for safe operation, set in <safety_controller>:
How Tesseract Handles This:**
Protects your robot by restricting motion to safer ranges
Important:** If soft limits are set to 0.0, that joint becomes immobilized. Verify your URDF is correct; Tesseract will not validate or warn you about this.
Tesseract uses the collision meshes from your URDF for all collision detection and distance calculations.
Why Collision Meshes Matter:**
Too coarse = poor safety, missed collisions, bad trajectories
Optimization Guidelines:**
Use convex decomposition or hulls for complex shapes
Example Structure:**
Always test your URDF before deploying it to production.**
ROS provides the check_urdf tool to validate syntax:
This catches XML errors and basic structural issues.
But also** — load it into Tesseract and visualize the collision geometry (see Tesseract URDF Loading Example). Visual inspection catches issues that automated checks miss:
Tesseract extends the standard URDF with additional geometry types and options optimized for planning and collision checking.
All extensions are optional — use them only when you need specialized geometry types beyond standard primitives and meshes.
A capsule is a cylinder with hemispherical endcaps. Efficient for collision checking and commonly used for robot arms.
When to use:**
Want faster collision checks than detailed meshes
URDF Usage:**
Attributes:**
length – Distance between hemisphere centers (in meters)radius – Radius of the cylinder and hemispheres (in meters)A cone for conical collision geometry.
When to use:**
Geometry approximation of tapered components
URDF Usage:**
An octree map for volumetric environment representation, populated from point cloud data or octree files.
When to use:**
Object recognition and shape approximation
Supported Sources:**
*.octree)Point cloud files (*.pcd)
Attributes:**
shape_type="box" – Axis-aligned boxes for voxelsshape_type="sphere_inside" – Spheres inside voxelsshape_type="sphere_outside" – Spheres outside voxels
Example with Point Cloud:**
A signed distance field (SDF) mesh for precise collision geometry with precomputed distance information.
When to use:**
Applications requiring exact distance queries
URDF Usage:**
Automatically convert collision meshes into convex hulls for more efficient collision checking and motion planning.
Why Use Convex Hulls:**
Trade-off: Convex hulls overapproximate the original shape
When to use:**
Need predictable, fast collision response
Important:** Always visualize the generated convex hull to ensure it's conservative enough for your application.
Global Setting (applies to all meshes):**
Mesh-Level Override (can enable/disable per-mesh):**
The mesh-level setting overrides the global setting.
check_urdf without errors-, [, ], (, ))0.0), or removedpackage:// URIs (not absolute paths)After you have a working URDF:
URDF Reference and Tutorials**
URDF Examples – Real robot URDF files from the ROS community
URDF Generation Tools**
Manual URDF Creation – Write URDF by hand in XML
Visualization and Validation**
check_urdf – ROS tool to validate URDF syntax and structureTF (Transform Framework) – Inspect frame relationships and broadcast transforms
Related Documentation**