You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Features
USD Asset Structure
Output Assets are completely standalone with no dependencies on the source URDF, OBJ, DAE, or STL files
Atomic Component structure with Asset Interface layer and payloaded contents
Separate geometry, material, and physics content layers for easy asset-reuse across domains
Library-based asset references for meshes and materials to avoid heavy data duplication
Explicit USD stage metadata with units (meters, kilograms) and up-axis (Z)
Link Conversion
URDF links are converted as UsdGeom.Xform prims with UsdPhysics.RigidBodyAPI applied
The root link has UsdPhysics.ArticulationRootAPI applied to indicate the root of the kinematic tree
Links are nested in USD, reflecting the kinematic hierarchy of the source URDF rather than the XML file structure
Complete mass properties including explicit inertia & center of mass via UsdPhysics.MassAPI
Joint Conversion
Revolute joints as UsdPhysics.RevoluteJoint with angular limits
Continuous joints as UsdPhysics.RevoluteJoint without limits
Prismatic joints as UsdPhysics.PrismaticJoint with linear limits
Fixed joints as UsdPhysics.FixedJoint
Planar joints as UsdPhysics.Joint with the appropriate UsdPhysics.LimitAPI applied to constrain the locked DOFs
Floating joints (bodies are free by default in USD)
All joints have automatic joint frame alignment between Body0 and Body1, accounting for URDF joint axis, position, and orientation.
Joint limits for velocity & effort have no equivalent in UsdPhysics, but are authored as custom attributes urdf:limit:velocity and urdf:limit:effort respectively.
Geometry Conversion
All visual and collision geometry is converted to USD
Visuals are set with default UsdPurpose and colliders with guide UsdPurpose
UsdPhysics.CollisionAPI is applied to colliders
Meshes as UsdGeom.Mesh
Automatic mesh library generation with reference-based asset structure, to avoid duplicate topology
STL files converted to USD using numpy-stl and usd-exchange with normal processing
OBJ files converted using tinyobjloader and usd-exchange with UV coordinates and normal mapping
DAE files converted using pycollada and usd-exchange with UV coordinates, normal mapping, and UsdGeom.Subset support
OBJ and DAE files specifying multiple meshes convert as a list of meshes under a common parent prim
UsdPhysics.MeshCollisionAPI is applied to mesh colliders with convex hull specified as the approximation preference
Spheres as UsdGeom.Sphere
Boxes as UsdGeom.Cube with scale transforms
Cylinders as UsdGeom.Cylinder
Visual Material and Texture Conversion
All materials are converted to UsdShade.Material graphs using UsdPreviewSurface shaders, and encapsulated as instanceable material interfaces
PNG texture support with automatic texture copying and path resolution
URDF materials convert rgba as diffuse color and opacity, with support for diffuse textures