URDF Studio

Search documentation

#Checks reference

The codes below appear in the Checks tab. The first letter says what kind of problem it is:

  • R — robot structure (the link tree)
  • P — physical properties (mass, inertia, limits)
  • A — assets (mesh files and packages)
  • S — xacro style

For how to use the Checks tab, see Find and fix problems.

#Structure

Code Severity Found when How to fix
R-001 Error There is no root link, or several unconnected trees each have children Connect every link to one tree with joints
R-002 Error Following joints from parent to child comes back to the same link Remove or redirect the joint that closes the loop
R-003 Error A joint's parent or child names a link that doesn't exist Fix the typo, or declare the missing link
R-004 Error Two links, or two joints, have the same name Rename one; in xacro, check that prefixes are applied
R-005 Error A <mimic> names a joint that doesn't exist, or mimics form a loop Point the mimic at an existing, non-mimic joint

#Physical properties

Code Severity Found when How to fix
P-001 Warning A link has no <inertial> Add mass and inertia. Fine to ignore for pure frames like tool0. Not checked for MuJoCo models, which compute inertia from geoms
P-002 Warning The inertia values are physically impossible (the tensor is not positive-definite) Recompute the inertia, for example from the CAD model. Check ixx, iyy, izz are positive and each is less than the sum of the other two
P-003 Error / Warning Mass is negative (error), zero or missing (warning), or over 10,000 kg (warning — usually grams used by mistake) Give every real part its mass in kilograms
P-004 Warning A revolute or prismatic joint has no lower or upper limit Add <limit lower upper effort velocity>
P-005 Warning A continuous joint declares lower / upper Remove them (they're ignored), or make the joint revolute
P-006 Warning A joint's effort or velocity limit is zero Set the real values; controllers may refuse to move the joint otherwise

#Assets

Code Severity Found when How to fix
A-001 Error A mesh file can't be found, a package:// path names a package that isn't in the opened folder, or has no package name See Meshes are missing
A-002 Warning A package has no package.xml in the opened folder, but its meshes were found by looking in parent folders Open the folder that contains package.xml
A-003 Info Some meshes are scaled by 0.001 or 1000 and others aren't — a sign of mixed millimetres and metres Check each mesh's units; URDF uses metres

#Xacro style

These only apply to .xacro files.

Code Severity Found when How to fix
S-001 Info $(arg name) is used without a matching <xacro:arg> Declare the argument with a default
S-002 Info A <xacro:property> or <xacro:arg> is declared but never used Remove it, or check for a typo where it should be used
S-003 Info A <xacro:macro> is declared but never called Remove it, or call it
S-004 Warning An expression divides by zero Fix the expression or the property it uses
S-005 Info A link or joint name isn't snake_case Off by default

#Loading problems

Some problems stop the model from loading properly. They are listed together under Loading problems in the Checks tab, also pop up as a message in the corner of the window, and appear in the Problems panel in VS Code:

Message is about Meaning
XML that can't be parsed The file isn't valid XML — often an unclosed tag or a stray &. Nothing can be shown until it's fixed
Xacro that can't be expanded An include, macro call or argument failed. The message names it
An include cycle Two xacro files include each other (or a file includes itself)
A macro that calls itself too deeply A recursive macro has no stopping condition (limit: 200 levels)
A file that isn't valid XML The robot file or an included file is empty or not XML
A skipped xacro expression One ${…} expression failed; the rest of the file was expanded without it
$(find pkg) for an unknown package The package isn't in the opened folder or package roots
A link with more than one parent Two joints name the same child
lower greater than upper A joint's limits are reversed
SRDF or semantic files A configured SRDF or YAML file couldn't be read or parsed

#Quick fixes

Check Fix
P-001 Inserts a small default <inertial>
P-003 Sets the mass to 1.0
P-004 Inserts a default <limit>
P-005 Removes the limits from the continuous joint
P-006 Sets effort to 100 and velocity to 1.0

The inserted values are placeholders. Replace them with real numbers.

#Health score

Model health = 100 − 10 × errors − 3 × warnings − 0.5 × infos, never below zero.