Releases: newton-physics/urdf-usd-converter
Releases · newton-physics/urdf-usd-converter
URDF USD Converter v0.1.0
0.1.0
Features
- Added support for the local
file://protocol for external references (meshes and textures) - Applied all current Newton USD Schemas (v0.1.0) alongside UsdPhysics schemas
- URDF joint mimics are now converted via
NewtonMimicAPI
- URDF joint mimics are now converted via
Fixes
- Corrected inertia calculations to be consistent across platforms during eigenvector decomposition
Dependencies
- Updated to usd-exchange>=2.2.2
- Updated to newton-usd-schemas>=0.1.0
URDF USD Converter v0.1.0rc2
Features
- Added support for the local
file://protocol for external references (meshes and textures)
Fixes
- Corrected inertia calculations to be consistent across platforms during eigenvector decomposition
Dependencies
- Updated to usd-exchange>=2.2.2
- Updated to newton-usd-schemas>=0.1.0rc3
URDF USD Converter v0.1.0rc1
Features
- Applied all current Newton USD Schemas (v0.1.0rc2) alongside UsdPhysics schemas
- URDF joint mimics are now converted via
NewtonMimicAPI
- URDF joint mimics are now converted via
URDF USD Converter v0.1.0b1
Features
- Calibration, Dynamics, Safety Controller, and Mimic are all converted as custom attributes on the Joint prim
- Convert custom elements as Scopes and custom attributes with
customandurdf:namespace - Adapted link handling for URDF's "ghost link" convention, where the first link may be a
purely used to identifiy fixed vs floating articulations
Fixes
- Stopped triangulating OBJ meshes to support n-gons
- Fixed handling of URDF materials with no material name
Documentation
- Added benchmarks reporting for several URDF datasets
- Added documentation on how to specify ROS packages
URDF USD Converter v0.1.0a2
Features
- Added conversion of DAE embedded materials to
UsdPreviewSurfacematerials - Improved performance by optimizing numpy processing when converting STL, OBJ, and DAE meshes
Fixes
- Fixed several DAE mesh conversion issues
- Fixed to correctly parse even when the DAE file structure is corrupted
- Fixed an issue where the UV array could not be acquired correctly in some cases
- Fixed
familyTypeattribute when meshes contain subsets
- Fixed OBJ per-face material assignments via
UsdGeomSubsets - Fixed material overrides beween native URDF & embedded OBJ/DAE materials
- We now match
rviz&urdfviewerwhere embedded OBJ/DAE materials take priority over URDF materials
- We now match
- Fixed texture wrapping behaviour using
repeatmode on allUsdUvTextureshaders- The
wrapModeis exposed on the material interface so users can change it as needed
- The
- Fixed color issue related to the specular workflow
- Specular workflow has been unconditionally disabled. There is no meaningful mapping of URDF specular color (phong based materials) to UsdPreviewSurface (simplistic PBR based materials) so we ignore specular color for now. This gives results more closely matching
rviz&urdfviewer
- Specular workflow has been unconditionally disabled. There is no meaningful mapping of URDF specular color (phong based materials) to UsdPreviewSurface (simplistic PBR based materials) so we ignore specular color for now. This gives results more closely matching
- Fixed URDF Parser to allow invalid
axisspecification onfixedjoints- Many sample assets have
axis="0 0 0"on fixed joints, which is meaningless but harmless
- Many sample assets have
- Fixed URDF Parser to handle errors when no links exist in the file
Documention
- Update Concept Mapping document to reflect new stance on material overrides
URDF USD Converter v0.1.0a1
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.Xformprims withUsdPhysics.RigidBodyAPIapplied - The root link has
UsdPhysics.ArticulationRootAPIapplied 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
- URDF links are converted as
- Joint Conversion
- Revolute joints as
UsdPhysics.RevoluteJointwith angular limits - Continuous joints as
UsdPhysics.RevoluteJointwithout limits - Prismatic joints as
UsdPhysics.PrismaticJointwith linear limits - Fixed joints as
UsdPhysics.FixedJoint - Planar joints as
UsdPhysics.Jointwith the appropriateUsdPhysics.LimitAPIapplied 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 attributesurdf:limit:velocityandurdf:limit:effortrespectively.
- Revolute joints as
- Geometry Conversion
- All visual and collision geometry is converted to USD
- Visuals are set with
defaultUsdPurpose and colliders withguideUsdPurpose
- Visuals are set with
UsdPhysics.CollisionAPIis 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-stlandusd-exchangewith normal processing - OBJ files converted using
tinyobjloaderandusd-exchangewith UV coordinates and normal mapping - DAE files converted using
pycolladaandusd-exchangewith UV coordinates, normal mapping, andUsdGeom.Subsetsupport - OBJ and DAE files specifying multiple meshes convert as a list of meshes under a common parent prim
UsdPhysics.MeshCollisionAPIis applied to mesh colliders with convex hull specified as the approximation preference
- Spheres as
UsdGeom.Sphere - Boxes as
UsdGeom.Cubewith scale transforms - Cylinders as
UsdGeom.Cylinder
- All visual and collision geometry is converted to USD
- Visual Material and Texture Conversion
- All materials are converted to
UsdShade.Materialgraphs usingUsdPreviewSurfaceshaders, 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
- OBJ embedded materials (MTL files) convert diffuse color, specular color, dissolve (opacity), roughness (not shininess), metallic, and ior
- diffuse, specular, normal/bump, roughness, metallic, and opacity textures are all supported
- All materials are converted to
- Prim Naming
- If URDF/DAE/OBJ names are not valid USD specifiers they are automatically transcoded & made unique & valid
- Display name metadata preserves the original source names on the USD Prims
- Command Line Interface
- Input is an URDF file and default output is a USD Layer as a structured Atomic Component with an Asset Interface USDA layer
- All heavy data is compressed binary data (via USDC layers) while lightweight data is plain text for legibility
- Optional comment string embedded into all authored USD Layers
- Optional Stage flattening for single-file output
- Optionally skip the
UsdPhysics.Scene(this may be desirable for multi-asset setups) - Error handling with graceful failures
- Enable verbose output for debugging (exposes any traceback info)
- Input is an URDF file and default output is a USD Layer as a structured Atomic Component with an Asset Interface USDA layer
- Python API
- Full programmatic access via
urdf_usd_converter.Converterclass with configurable parameters for all CLI flags - Enables interactive editing of the USD Layers after conversion
- Full programmatic access via
Known Limitations
USD Data Conversion
- Joint Conversion
- Calibration has no equivalent in
UsdPhysicsand is omitted - Dynamics has no equivalent in
UsdPhysicsand is omitted - Safety Controller has no equivalent in
UsdPhysicsand is omitted - Mimic has no equivalent in
UsdPhysicsand is omitted
- Calibration has no equivalent in
- Geometry Conversion
- No other file formats beyond OBJ/DAE/STL are supported
- For DAE files, only "TriangleSet", "Triangles", "Polylist", and "Polygons" are supported
- For OBJ files, only objects with faces are supported (i.e. no points, lines, or free-form curves/surfaces)
- Visual Material and Texture Conversion
- DAE embedded materials are not implemented
- Projection shaders for basic geometry primitives (box, cylinder, sphere) are not implemented
- More accurate PBR materials (e.g. OpenPBR via UsdMtlx) are not implemented
- Other Elements
- Transmission conversion is not implemented
- Gazebo conversion is not implemented
- Conversion of other out-of-spec URDF extensions are not implemented
Using the USD Asset in other USD Ecosystem applications
- The USD Asset contains nested rigid bodies within articulations.
- Support for nested bodies in UsdPhysics is fairly new (as of USD 25.11), and some existing applications may not support this style of nesting.