SDF vs. Collada 1.5

Paul B. Hvass & G.A. vd. Hoorn - 3ME
ROS Industrial

Existing Features/practice

Feature Default
URDF
Option A
Start with SDF
Option B
Start with Collada 1.5
Serial kinematic chains Yes Yes Yes
Special frames: base_link, tool_0 Not enforced gripper_link No/Yes[3]
Primitives
(spheres, cylinders, etc)
Yes Yes Yes
Link materials
(color, alpha, texture)
Yes Yes Yes
Collision geometry Yes Yes Yes[4]
Joint limits
(position, velocity, accel)
Yes
(pos, vel, eff)
Yes
(pos, vel, eff, stiffness)
Yes
(pos, vel, acc, dec, jerk)[5]
Sensor definition Yes
(proposed)
Yes Yes - camera/optics only[6]
6 DOF floating joints
(used for robot or sensor calibration)
Yes
(floating)
Use a model tag? Yes[7]
Meshes stored separately Yes Yes Yes[8]
URDF -> X conversion Yes Yes Yes
[3] - through OpenRAVE extension
[4] - OpenRAVE extension provides explicit support for visual, link-collision and world-collision geometry. Collada itself supports specialised elements for modeling dynamic behaviour (rigid bodies, capsules, convex_mesh, etc)
[5] - much more general: rigid body constraints. Also: soft limit support
[6] - extensive support through OpenRAVE
[7] - compound joint / rigid_body constraint?
[8] - supports URIs to refer to external entities (but can also store everything in single file).

URDF 2 Wish list

Feature Default
URDF
Option A
Start with SDF
Option B
Start with Collada 1.5
Parallel kinematic chains
(closed loops)
No Yes Yes
Rich set of parameters No Yes Yes
Forward compatibility N/A Yes Yes
Extensible No Yes? Yes[9]
Independent chains
(multiple robots) ?
Yes Yes Yes
World and component modeling Not intended Yes Yes
Human readable Yes Yes Not really
(large models quite complex)
Easy to learn Yes Yes No[1]
Multiple levels of detail for collision avoidance No No No[10]
Sensors: intrinsic parameters No Yes Yes[11]
Zero State/Default State
(joint positions)[13]
No
(zero state == default)
No No (?)
Saved states - general
(maintenance pose, tool change pose)
No No (?) No (?)
Tool changer/mounting positions
(connect/disconnect)
No No No
Tool center point
(TCP)
No
(not explicit)
No
(not explicit)
Yes
(explicit)
Discrete state joints
(extend/retract)
No No (?) No (?)
Mutable joint limits No No Yes
(use formulas)
DH compensation
(mutable parameters for as-built geometry compensation)
No No No
Material properties for each body, not just each link No Yes Yes
Support for move groups[13] No No No
Hardware parameters No No No
Import/export from/to CAD SolidWorks
(sw2urdf)
SolidWorks
(wpi sw2sdf)
Many editors natively, others via plugin[12]
Simpler name space handling ? ?
Include x
(i.e. gripper)
No Yes Yes[8]
Industry 4.0 Standard No No Yes[2]
[1] - Might not matter if a good GUI editor is available
[2] - see AutomationML Whitepaper and German Standarization Roadmap industrie 4.0
[8] - supports URIs to refer to external entities (but can also store everything in single file).
[9] - explicit support for user-defined meta-data through 'extra' elements (used heavily by OpenRAVE)
[10] - spec suggests using multiple instance_node elements (but implementation dependent)
[11] - has camera, imager (ccd), optics elements natively. OpenRAVE extends this with additional model parameters
[12] - probably mostly Collada 1.4, not 1.5
[13] - see URDF2

Related

Use XSLT instead of xacro