Agent Skills › isaac-sim/IsaacSim › motion-generation

motion-generation

GitHub

构建避障机械臂和移动底盘控制器,支持UR10抓取放置及物理仿真。用于Isaac Sim环境下的运动生成与执行。

.claude/skills/motion-generation/SKILL.md isaac-sim/IsaacSim

Trigger Scenarios

需要构建避障机械臂或移动基座控制器 在Isaac Sim中进行机器人运动生成或物理仿真

Install

npx skills add isaac-sim/IsaacSim --skill motion-generation -g -y
More Options

Non-standard path

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

Use without installing

npx skills use isaac-sim/IsaacSim@motion-generation

指定 Agent (Claude Code)

npx skills add isaac-sim/IsaacSim --skill motion-generation -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": "motion-generation",
    "license": "Apache-2.0",
    "metadata": {
        "author": "Aaron Young <info@nvidia.com>"
    },
    "description": "Build obstacle-aware arm and mobile-base controllers. Primary for UR10 pick-and-place around obstacles with physics\/video; use manipulation-ik for obstacle-free grasp tasks."
}

Motion Generation

Purpose

Build obstacle-aware arm and mobile-base motion with the motion_generation controller substrate; cuMotion with RMPflow is the reference arm implementation.

Skill selection and invocation

For obstacle-aware arm demos, invoke motion-generation as the primary skill before scene implementation. A requested video does not make the orchestrator the primary skill. Use manipulation-ik for supporting grasp/contact checks and isaac-sim-remote for live execution.

When the agent runtime exposes a native skill invocation tool (for example, Claude's Skill tool), use it to invoke this skill and the needed supporting skills. Reading their files with shell commands is supplemental reference access, not a substitute for that invocation. On runtimes without such a tool, load the canonical SKILL.md through the supported discovery mechanism and report that native invocation tracing is unavailable; do not fabricate it.

Prerequisites

  • For library implementation and standalone consumers: a completed source/libraries build or installed matching wheels/SDKs.
  • For interactive Kit adapters: built Isaac Sim and the shell environment from isaac-sim-orchestrator; a GPU is required only by the selected controller or rendering workflow.

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

Ownership and execution routes

The registered library surfaces for isaacsim.robot_motion.controllers, isaacsim.robot_motion.cumotion, and isaacsim.robot_motion.experimental.motion_generation are under source/libraries/isaacsim/robot_motion/. Use their module tests to determine which behavior has actually migrated and source/examples/series/motion_generation/ for installed standalone consumer behavior. Run that route through the configured library environment; do not infer solver-specific parity from namespace registration.

Use the corresponding extensions for behavior that module tests have not yet established as standalone, plus Kit discovery, lifecycle, and interactive samples.

Owns the generic isaacsim.robot_motion.experimental.motion_generation (mg) substrate and the phase-machine workflow for obstacle-aware end-effector motion. The motion-generation controller is pluggable: cuMotion (isaacsim.robot_motion.cumotion) is the reference implementation here. PINK and Lula are also motion-generation controllers but are not yet documented in this skill; see the stack-selection table in manipulation-ik to choose.

Shared substrate lives in sibling skills:

Need Read
Python-server launch, asset-root checks, screenshots, markers, run videos, final object-pose oracle isaac-sim-remote
Grasp frames, contact-only gates, physical grasp validation, IK-stack selection manipulation-ik
Mobile-base planning, footprints, differential-drive/Ackermann kinematics, chase cameras navigation-primitives
Dynamic object collision, rigid bodies, materials, physics readback physics-simulation
Headless rendering and video capture isaac-sim-rendering
Final output QA isaac-sim-validator

Available Scripts

Script Purpose Arguments
scripts/control_loop.py Control loop import helper
scripts/cumotion_setup.py Cumotion setup import helper
scripts/frames_and_grasping.py Frames and grasping import helper
scripts/inspect_scene.py Inspect scene Python-server injected globals
scripts/phase_machine.py Phase machine import helper
scripts/world_binding.py World binding import helper

Running scripts

The control-loop, world-binding, frame, controller-setup, and phase-label files are importable helpers, not CLIs with --help. Import or adapt them in a scene script. For Kit demo iteration, load isaac-sim-remote and send scene logic to the running Python server. Use ./python.sh or python.bat for the delivered standalone script after validating the scene through that server. Agent runtimes with run_script() may use it to launch the adapted standalone entry point; do not invoke import-only helpers as scripts.

Scope Rules

  • Use current experimental Isaac Sim APIs. Do not add deprecated manipulator APIs or legacy omni.isaac.* compatibility unless the user asks for migration. RobotState and the world-binding substrate live in isaacsim.robot_motion.experimental.motion_generation; the non-experimental isaacsim.robot_motion.motion_generation is deprecated.
  • For Kit demos, iterate through the Python server before standalone capture, unless the user explicitly requests standalone validation. If the server is unavailable, report the blocked validation rather than silently substituting restart-per-attempt runs. Validate migrated library behavior through its module tests and source/examples, not through the Python server.
  • Do not trust shell exit code alone. Inspect stdout/logs for tracebacks, RuntimeError, explicit pass/fail JSON, and phase completion.
  • Keep one-off probes in /tmp. Only keep reusable, domain-specific helpers under this skill.
  • A standalone Kit script is run by a person, so it must open a visible window by default. Gate headless mode and any frame capture / video encoding behind explicit opt-in flags (for example --render OUTPUT.MP4 switches to headless capture). Never set --headless or SimulationApp(headless=...) to default-on, and never capture frames or encode a video unless asked. Iterating on the Python server (above) is the separate, headless path for tuning.

Workflow

For Kit demo development, establish the Python-server session using references/workflow.md. Record a successful health response, then execute scene inspection, controller iterations, and validation through that session. Starting a server or describing this plan alone does not satisfy live iteration. The explicit user-requested standalone exception in Scope Rules still applies. Keep the invocation and client response evidence alongside the run metrics; successful physics/video alone cannot establish that the required workflow was followed.

  1. Inspect robot prim path, DOF/link names, controller tool frames, object pose/AABB, physics schemas, and collision APIs.
  2. Define the task frame before tuning: tool frame, physical grasp/action point, object semantic axis, and target axis. Measure and log the tool-local grasp offset in the approach orientation before tuning gains, obstacle inflation, or timeouts; freeze it through close/lift.
  3. Build world binding and controller (references/world-binding.md, references/cumotion.md).
  4. Run an explicit phase machine (references/control-loop.md) with target, reset policy, convergence predicate, timeout, and trace line per phase. Advance required motion phases only on measured convergence. A timeout or failed grasp/contact gate terminates the attempt as FAIL; never release or continue to the next phase on timeout.
  5. Validate measured outputs from the actual run. For dynamic manipulation, use manipulation-ik and physics-simulation for grasp/contact gates. Overall PASS requires every required phase and gate, plus stable final object pose, to pass in the same run (with recording enabled when video is requested). An interrupted run is incomplete; a final pose alone cannot override a failed phase.

References And Helpers

  • references/workflow.md: task architecture and phase-machine shape.
  • references/world-binding.md: obstacles and robot-root transforms (SceneQuery, ObstacleStrategy, WorldBinding, synchronize_transforms).
  • references/control-loop.md: RobotState/JointState/SpatialState builders and the reset/forward step that applies joint targets.
  • references/frames-and-grasping.md: tool-frame offsets, axis contracts, and gripper targeting.
  • references/cumotion.md: cuMotion-specific controller (RmpFlowController, supported robots, cspace params, RMPflow failure modes).
  • scripts/inspect_scene.py: Python-server scene inspection (optional cuMotion probe via the supported_robot arg).
  • scripts/cumotion/standalone_demo_template.py: copy-adapt standalone cuMotion scaffold.
  • scripts/control_loop.py: name-addressed RobotState builders and joint-target application.
  • scripts/world_binding.py: cuMotion obstacle discovery and per-frame world sync.
  • scripts/cumotion_setup.py: supported-robot RMPflow controller construction.
  • scripts/frames_and_grasping.py: tool/contact offset conversion helpers.
  • scripts/phase_machine.py: reusable manipulation phase labels.

Generic helpers live in isaac-sim-remote:

  • isaac-sim-remote/scripts/verify_asset.py
  • isaac-sim-remote/scripts/set_debug_view.py
  • isaac-sim-remote/scripts/viewport_video.py

Controller wiring (quick rules)

Full code in references/world-binding.md + references/control-loop.md; controller construction in references/cumotion.md. The non-negotiables:

  • Build joint and site state by name, not by index assumptions (robot.dof_names, the controller's reported tool/site frames).
  • Call controller.reset(estimated, setpoint, t=0.0) before the first forward() and after intentional target discontinuities.
  • Pass controller clock time into forward(...); do not pass dt.
  • Apply positions, velocities, and efforts from the desired joint state when present.
  • Synchronize the world binding every control frame (update_world_to_robot_root_transforms(...) then synchronize_transforms()).
  • Keep the grasped object out of the tracked obstacle set, or the controller plans around it.
  • For simple reactive obstacle avoidance, bind obstacles through CumotionWorldInterface / WorldBinding and keep the transport phase in the RmpFlowController.forward() loop. Do not switch to graph planning or author bypass/clearance targets unless the demo explicitly needs global planning.
  • Tune obstacle inflation in small steps; large clearance buffers can improve avoidance but break grasp/place convergence.
  • Log requested planner clearance and measured runtime clearance separately; they are not the same.
  • Start with example-scale c-space/posture weights; large bias can hide weak task-space motion.
  • For rendered demos, validate the recorder-enabled run, not only a non-captured metrics run.

Mobile-Base Controller Pattern

For mobile bases, route planning and wheel geometry to navigation-primitives. Use this skill only for RobotState / controller integration, and apply joint velocities/efforts/positions rather than writing root transforms as the success path for a physics run.

Frame Discipline

Most failures are frame errors. Log these separately (see references/frames-and-grasping.md):

  • controller tool frame, such as tool0 or wrist_3_link
  • desired and measured tool local +Z axis
  • visible fingertip midpoint or suction tip
  • task grasp point on the object
  • object origin, center of mass, and AABB center
  • object semantic axis and final target axis
  • target pose sent to the controller

Command the tool pose that makes the physical grasp point land on the object grasp point. If the controller drives a flange/tool frame but the gripper contacts at a fingertip or suction cup, calibrate the tool-local offset in the approach orientation and freeze it through close/lift.

Before coding a flip or placement task, prove the final pose is geometrically feasible for the grasp. If a requested final pose requires an upward-facing gripper or below-surface wrist, change the grasp strategy before tuning controller gains or timeouts.

Canonical Sources

Kit tutorial scripts (source/standalone_examples/tutorials/manipulation/, all use the mg substrate):

  • tutorial_9_arm_trajectory.py, tutorial_9_follow_target.py
  • tutorial_9_pick_place_cumotion.py (cuMotion), tutorial_9_pick_place_pink.py (PINK)

Docs (general API first, then implementations):

  • docs/isaacsim/robot_motion_experimental/index.rst: framework overview
  • docs/isaacsim/motion_generation/{index,scene_interaction,trajectory_planning,mobile_robot_control_example}.rst
  • docs/isaacsim/cumotion/index.rst, docs/isaacsim/pink/index.rst

Version History

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

    更新为Isaac Sim 6.2.0 GA版本;新增skill选择与调用指南、库实现前提条件、故障排查表及所有权说明。

  • 2469084 2026-09-22 15:45

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/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-articulation/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
f0e07963
Indexed
2026-09-22 15:45

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