Robot-Body-Isaac Profile USD Authoring Guide#
This document describes how to author a USD asset that conforms to the
Robot-Body-Isaac profile. It consolidates the required feature set, USD
properties, naming conventions, and robot-specific composition requirements.
Profile definition#
The Robot-Body-Isaac profile includes the following feature set (see robot_body_isaac.toml and the feature dependency graph). Each feature’s requirements and dependencies are defined in the feature specifications.
[Robot-Body-Isaac]
"1.0.0" = {features = [
{"FET_001_STANDARD" = {version = "0.1.0"}}, # Minimal
{"FET_003_STANDARD" = {version = "0.1.0"}}, # RBD Physics (Standard)
{"FET_004_ROBOT_PHYSX" = {version = "0.1.0"}}, # Multi-body physics (Robot PhysX)
{"FET_021_ISAAC" = {version = "0.2.0"}}, # Robot Core (Isaac)
{"FET_022_ISAAC" = {version = "0.1.0"}}, # Driven Joints (Isaac)
{"FET_024_PHYSX" = {version = "0.1.0"}}, # Articulation
{"FET_100_ISAAC" = {version = "0.1.0"}}, # Isaac composition
]}
"1.2.0" = {features = [
{"FET_001_STANDARD" = {version = "0.1.0"}}, # Minimal
{"FET_003_PHYSX" = {version = "0.4.0"}}, # RBD Physics (PhysX)
{"FET_004_PHYSX" = {version = "0.4.0"}}, # Multi-body physics (PhysX)
{"FET_021_ISAAC" = {version = "0.2.0"}}, # Robot Core (Isaac)
{"FET_022_ISAAC" = {version = "0.2.0"}}, # Driven Joints (Isaac)
{"FET_024_PHYSX" = {version = "0.1.0"}}, # Articulation
{"FET_101_ISAAC" = {version = "0.1.0"}}, # Robot Isaac composition
]}
Version 1.2.0 notes#
Version 1.2.0 pins the PhysX rigid-body/multibody contract
(FET_003_PHYSX@0.4.0, FET_004_PHYSX@0.4.0) and adopts the robot Isaac
composition feature FET_101_ISAAC@0.1.0 in place of the prop-oriented
FET_100_ISAAC. FET_101_ISAAC routes robot assets to the standalone
simready.asset_transformer robot transform (simready_physx_to_isaac_robot),
so the composed asset carries the Isaac robot schema (IsaacRobotAPI,
isaac:physics:robotLinks, isaac:physics:robotJoints) required by the
FET_021_ISAAC robot-core checks.
Required USD properties and schemas#
Stage metadata (required)#
defaultPrimmust be set on every layer.upAxis = "Z"andmetersPerUnit = 1must be set on every stage.
PhysX rigid bodies and colliders (required)#
Apply
PhysicsRigidBodyAPIto any simulated rigid body prim.Apply
PhysicsCollisionAPIto collision-enabled prims.Author
physics:approximation = "sdf"for PhysX collider approximation.Rigid body prims must be
UsdGeomXformable.
Multi-body joints (required)#
Use
UsdPhysicsJointprims (or subtypes) to connect rigid bodies.Author
rel physics:body0andrel physics:body1relationships.Apply
PhysxJointAPIwhen authoring PhysX-specific joint properties.
Driven joints (required)#
Apply
PhysicsDriveAPI:*orPhysxMimicJointAPI:*to driven joints.Apply
PhysicsJointStateAPI:*to driven joints.Author
physxJoint:maxJointVelocitywith a positive value.When a joint has both drive and mimic APIs, drive stiffness and damping must be exactly
0.0.Mimic joints must set a single valid
physxMimicJoint:*:referenceJointand authorphysxMimicJoint:*:gearing,physxMimicJoint:*:naturalFrequency, andphysxMimicJoint:*:dampingRatio.
Robot schema (required)#
Apply IsaacRobotAPI to the default prim and populate robot relationships:
apiSchemasincludesIsaacRobotAPIisaac:namespaceisaac:physics:robotJointsrelationshipisaac:physics:robotLinksrelationship
Articulation root (required)#
Apply PhysicsArticulationRootAPI to the root prim of the articulation:
def Xform "Robot" (
prepend apiSchemas = ["PhysicsArticulationRootAPI"]
)
{
}
Robot composition requirements#
Robot core requirements enforce a modular layout for physics data and a clean asset folder structure.
Physics layer separation#
Author physics schemas and physics attributes in the physics layer only.
Keep base/visual layers free of physics schemas and physics attributes.
Clean folder layout#
Robot asset folders must not contain unreferenced files.
Keep the interface layer at the root, with subfolders for payloads.
Example layout:
Manufacturer/
robot.usd
Payload/
material.usda
base.usda
geometry.usdc
instances.usda
Physics/
physics.usda
physx.usda
No overrides#
Author changes in source layers, not session or override layers.
Avoid muting or overriding schema-defining layers.
Thumbnail requirement#
Provide a thumbnail at
.thumbs/256x256/{robot name}.png.
Naming conventions#
Robot naming#
Use lowercase, underscore-separated file names.
Use stable prim paths for robot roots and joints.
Prim naming#
Choose either
camelCaseorsnake_caseand use it consistently.Avoid spaces, special characters, and reserved keywords.
Use descriptive, purpose-driven names.
Use prefixes by prim type when appropriate (e.g.,
mesh_,material_).
File naming#
Use lowercase file names.
Use
.usd,.usda,.usdc, or.usdzas appropriate.Use underscores or hyphens; avoid spaces and special characters.
Avoid reserved names (e.g.,
CON,PRN,AUX,NUL).Use version numbers when appropriate (e.g.,
_v1.0).
Validation metadata (recommended)#
Include profile metadata in customLayerData to simplify validation workflows:
customLayerData = {
dictionary SimReady_Metadata = {
dictionary validation = {
string profile = "Robot-Body-Isaac"
string profile_version = "1.0.0"
}
}
}
References#
Feature dependency graph — requirements and dependencies for all features
nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/profiles/robot_body_isaac.tomlnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_021_ISAAC.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_022_STANDARD.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_024_STANDARD.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/isaac_sim/robot_core/requirements/robot-schema.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/isaac_sim/robot_core/requirements/robot-naming.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/isaac_sim/robot_core/requirements/clean-folder.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/isaac_sim/robot_core/requirements/no-overrides.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/isaac_sim/robot_core/requirements/thumbnail-exist.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/isaac_sim/robot_core/requirements/verify-robot-physics-attribute-source-layer.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/isaac_sim/robot_core/requirements/verify-robot-physics-schema-source-layer.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/base_articulation/requirements/has-articulation-root.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/physics_driven_joints/requirements/physics-joint-has-drive-or-mimic-api.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/physics_driven_joints/requirements/physics-joint-max-velocity.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/physics_driven_joints/requirements/drive-joint-value-reasonable.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/physics_driven_joints/requirements/mimic-api-check.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/naming_paths/requirements/prim-naming-convention.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/naming_paths/requirements/file-naming-convention.md