Agent Skills › isaac-sim/IsaacSim › usd-articulation

usd-articulation

GitHub

用于在USD中组装和验证多臂机器人关节层级,应用Isaac Robot Schema并执行结构校验。

.claude/skills/usd-articulation/SKILL.md isaac-sim/IsaacSim

Trigger Scenarios

组装多臂机器人关节层级 修复机器人关节树结构 验证USD Articulation结构

Install

npx skills add isaac-sim/IsaacSim --skill usd-articulation -g -y
More Options

Non-standard path

npx skills add https://github.com/isaac-sim/IsaacSim/tree/develop/.claude/skills/usd-articulation -g -y

Use without installing

npx skills use isaac-sim/IsaacSim@usd-articulation

指定 Agent (Claude Code)

npx skills add isaac-sim/IsaacSim --skill usd-articulation -a claude-code -g -y

安装 repo 全部 skill

npx skills add isaac-sim/IsaacSim --all -g -y

预览 repo 内 skill

npx skills add isaac-sim/IsaacSim --list

SKILL.md

Frontmatter
{
    "name": "usd-articulation",
    "license": "Apache-2.0",
    "metadata": {
        "author": "Renato Gasoto <info@nvidia.com>"
    },
    "description": "Validate and build multi-arm articulations in USD. Use when assembling or fixing robot joint hierarchies."
}

USD Articulation — Multi-Arm Robots

Purpose

Assemble and validate multi-link robot articulations with ArticulationRootAPI, fixed joints, and Isaac robot schema overlays before deployment.

Prerequisites

  • For standalone schema authoring: matching OpenUSD and isaacsim-robot-schema library artifacts.
  • For live articulation interaction, extension commands, or rendering: built Isaac Sim and the environment from isaac-sim-orchestrator.

Limitations

  • Targets Isaac Sim 6 / Kit 110 unless a section states otherwise.
  • Does not replace official NVIDIA documentation for unsupported edge cases.

Troubleshooting

Error / symptom Cause Solution
Black or empty frames Missing lights or non-RTX render mode Add dome/key light; confirm RTX / PathTracing settings
Hang on stage load or first render MDL compile or oversized stage Follow isolation steps in isaac-sim-troubleshooting

Schema authoring versus runtime interaction

The robot schema is generated and packaged from source/libraries/isaacsim_usd_schemas/robot/; use that distribution for standalone schema application and validation with OpenUSD. For robot-motion schema metadata, use the separate isaacsim.robot_motion.schema module. These schema packages do not require a Kit extension registry merely to import.

Kit commands, live timeline interaction, UI, and rendering stay on the Kit route.

Two layers stack on a robot USD:

  1. Physics: UsdPhysics.ArticulationRootAPI, UsdPhysics.Joint, UsdPhysics.RigidBodyAPI, PhysxSchema.PhysxArticulationAPI.
  2. Robot Schema (usd.schema.isaac.robot_schema): semantic overlay used by isaacsim.robot.poser, the importers, manipulators examples, and any tool that walks "this robot's links / joints / named poses".

Rule: visual plausibility is not mechanical correctness. If it doesn't articulate, it doesn't exist.

Available Scripts

Script Purpose Arguments
scripts/apply_robot_schema.py Apply Isaac Robot Schema overlay to an existing USD articulation see script --help
scripts/multi_arm_assembly.py Assemble a multi-arm robot in USD using FixedJoints see script --help
scripts/validate_articulation.py Validate multi-arm robot USD articulation structure CLI args via sys.argv (see script --help)

Running scripts

From agent runtimes that expose skill execution helpers, invoke helpers with run_script():

run_script("scripts/apply_robot_schema.py", args=["--help"])

From a built Isaac Sim tree, run the same file with ./python.sh (Linux) or python.bat (Windows) from _build/*/release, or execute shell helpers directly when they do not require the simulator.

Multi-arm assembly (correct pattern)

assemble_multi_arm_robot(stage, chassis_usd, arm_usd, robot_root, arm_offset, chassis_body_path, arm_base_path) — spawn chassis + arm, create a FixedJoint, remove ArticulationRootAPI from the arm.

See scripts/multi_arm_assembly.py.

What does not work

  • Referencing the same arm USD twice via sublayer composition.
  • Using over "Geometry" to add arms in a parts layer.
  • Assuming visual presence equals physical attachment.

Robot Schema overlay (Kit 110)

Apply the modern Isaac Robot Schema on top of the physics layer. The URDF/MJCF importers do this automatically; for hand-authored or retrofitted USDs apply it manually.

apply_robot_schema(stage, robot_prim, link_prims, joint_prims, site_prims, robot_type) — apply IsaacRobotAPI on root, IsaacLinkAPI on each link, IsaacJointAPI on each joint, IsaacSiteAPI on grasp/mount frames, then call PopulateRobotSchemaFromArticulation to fill ROBOT_LINKS/ROBOT_JOINTS. Valid robot_type tokens: Default, End Effector, Manipulator, Humanoid, Wheeled, Holonomic, Quadruped, Mobile Manipulators, Aerial.

See scripts/apply_robot_schema.py.

Schema Applied to Role
IsaacRobotAPI (Classes.ROBOT_API) robot root robot_type, ordered link/joint relations, named-pose container
IsaacLinkAPI (Classes.LINK_API) each rigid link mass/visual aux for tools that walk the chain
IsaacJointAPI (Classes.JOINT_API) each joint semantic joint metadata
IsaacSiteAPI (Classes.SITE_API) grasp / mount / reference frames named frames for IK targets, mounts, sensors
IsaacNamedPose (Classes.NAMED_POSE) pose container prims stored joint configurations (see manipulation-ik)
Classes.SURFACE_GRIPPER end-effector site author surface gripper via CreateSurfaceGripper
Classes.ATTACHMENT_POINT_API site or link attachment points used by accessory tooling

Validation checklist

Before trusting any multi-arm robot:

  1. Exactly 1 UsdPhysics.ArticulationRootAPI on the chassis, nowhere else.
  2. At least one chassis/root-branch FixedJoint anchors each top-level attached subsystem before flatten-before-deploy.
  3. Every joint body is reachable from the single articulation root through one connected joint hierarchy.
  4. IsaacRobotAPI present on the root; robot_type set to a valid token.
  5. ROBOT_LINKS / ROBOT_JOINTS relations populated (call PopulateRobotSchemaFromArticulation if not).
  6. Each grasp frame carries IsaacSiteAPI (not deprecated IsaacReferencePointAPI).
  7. Render from four angles (front, side, 3/4, top).
  8. Send to a vision LLM with a binary question ("Arms attached? PASS/FAIL").

Validation snippet (self-contained)

Run via $ISAAC_SIM_DIR/python.sh. Enforces exactly one ArticulationRootAPI, verifies the entire joint graph is connected to that root, checks for at least one root-branch FixedJoint attachment before flatten-before-deploy, and reports the Robot Schema state.

validate_articulation(usd_path) — assert exactly 1 ArticulationRootAPI, verify hierarchy connectivity, and print root-attached children plus Robot Schema state.

See scripts/validate_articulation.py.

Extend with whatever subsystem path patterns your asset uses. Binary goal: exactly one root, one connected articulated hierarchy, at least one root-branch FixedJoint anchor before flattening, and the Robot Schema overlay present.

Common failures

Symptom Cause Fix
Arms render but float No FixedJoint to chassis add FixedJoint
Multiple articulation roots Arm USD has its own root RemoveAPI(UsdPhysics.ArticulationRootAPI) from arms
Training works but arms independent Separate articulation trees single root + FixedJoints
RobotPoser.solve_ik() errors out missing IsaacRobotAPI / link relations ApplyRobotAPI + PopulateRobotSchemaFromArticulation
Importer applied IsaacReferencePointAPI older asset re-import with current Isaac Sim, or migrate to IsaacSiteAPI (deprecation warning)
robot_type attribute value rejected typo or stale token pick from get_allowed_tokens(Attributes.ROBOT_TYPE)

Version History

  • 87c9527 Current 2026-10-19 10:45

    更新环境依赖说明,移除对旧版路径变量的强制要求;修正故障排查表以反映最新问题。

  • 2469084 2026-09-22 15:46

Same Skill Collection

.claude/skills/action-and-event-data-generation/SKILL.md
.claude/skills/actor-sdg-generate-lighting-variations/SKILL.md
.claude/skills/actor-sdg-sweep-config/SKILL.md
.claude/skills/behavior-tree-generation/SKILL.md
.claude/skills/calibrate-metropolis-camera/SKILL.md
.claude/skills/data-collection-sim/SKILL.md
.claude/skills/generate-incident-config/SKILL.md
.claude/skills/isaac-camera/SKILL.md
.claude/skills/isaac-sim-assets/SKILL.md
.claude/skills/isaac-sim-headless-deployment/SKILL.md
.claude/skills/isaac-sim-installation/SKILL.md
.claude/skills/isaac-sim-migration/SKILL.md
.claude/skills/isaac-sim-orchestrator/SKILL.md
.claude/skills/isaac-sim-remote/SKILL.md
.claude/skills/isaac-sim-rendering/SKILL.md
.claude/skills/isaac-sim-robot-navigation/SKILL.md
.claude/skills/isaac-sim-ros-workspaces/SKILL.md
.claude/skills/isaac-sim-ros2-bridge/SKILL.md
.claude/skills/isaac-sim-sensor/SKILL.md
.claude/skills/isaac-sim-troubleshooting/SKILL.md
.claude/skills/isaac-sim-validator/SKILL.md
.claude/skills/isaac-sim-web-viewer/SKILL.md
.claude/skills/isaac-sim-workflow/SKILL.md
.claude/skills/manipulation-ik/SKILL.md
.claude/skills/meta-skills/SKILL.md
.claude/skills/mobility-gen/SKILL.md
.claude/skills/motion-generation/SKILL.md
.claude/skills/navigation-primitives/SKILL.md
.claude/skills/object-bin-packing/SKILL.md
.claude/skills/occupancy-map/SKILL.md
.claude/skills/physics-simulation/SKILL.md
.claude/skills/physx-to-newton-conversion/SKILL.md
.claude/skills/place-camera-aim-at/SKILL.md
.claude/skills/place-camera-max-coverage/SKILL.md
.claude/skills/profile-isaac-sim/SKILL.md
.claude/skills/run-incident-events/SKILL.md
.claude/skills/skill-distillation/SKILL.md
.claude/skills/skills-eval-triage/SKILL.md
.claude/skills/spatial-reasoning/SKILL.md
.claude/skills/urdf-mjcf-to-usd-conversion/SKILL.md
.claude/skills/usd-composition-architecture/SKILL.md
.claude/skills/usd-pipeline/SKILL.md
.claude/skills/validation-diff-gifs/SKILL.md
.claude/skills/vlm-scene-captioning/SKILL.md
skills/action-and-event-data-generation/SKILL.md
skills/actor-sdg-generate-lighting-variations/SKILL.md
skills/actor-sdg-sweep-config/SKILL.md
skills/behavior-tree-generation/SKILL.md
skills/calibrate-metropolis-camera/SKILL.md

Metadata

Files
0
Version
87c9527
Hash
4355828c
Indexed
2026-09-22 15:46

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-10-31 02:11
浙ICP备14020137号-1