Skip to content

test(simulation/isaac): motion-primitive parity suite + real-Isaac integration test #2156

Description

@yinsong1986

Goal

Close out the test-parity acceptance criteria of #2123: same-named Isaac tests mirroring the MuJoCo motion-primitive suite, plus a real-Isaac integration test.

Depends on #2155 - the Isaac move_to implementation (and transitively #2154) - if that PR hasn't merged yet, post a comment on this issue and stop.

Scope

  1. Parity unit suite: tests/simulation/isaac/test_motion_primitives.py mirroring tests/simulation/mujoco/test_motion_primitives.py case-for-case where the behavior is backend-neutral (validation rejections, gripper metadata semantics, abort reasons, structured error shapes). GPU-dependent cases are skipped in unit CI using the same skip pattern as the existing tests/simulation/isaac/ files. Where a MuJoCo case pins a MuJoCo-only mechanism (e.g. data.ctrl interplay, _SUBSTEPS_PER_TICK), note the omission in a comment rather than porting it emptily - test behavior, not implementation.
  2. Integration test (AGENTS.md rule 8): tests_integ/simulation/test_isaac_motion_primitives.py (or matching the existing tests_integ/ layout) running against real Isaac Sim:
  3. If any of the three primitives are surfaced through agent tools during this work, every exposed parameter needs its own Args: entry (AGENTS.md rule 13, pinned by tests/tools/test_agent_tool_parameter_descriptions.py). If they are not tool-surfaced, this item is a no-op - do not add tool wrappers here.

Constraints

  • No production-code changes expected; if a parity test exposes a real behavioral divergence, file it as its own issue and skip/xfail with a reference rather than patching production code in this test-only PR.
  • MuJoCo suite untouched and green; hatch run format && hatch run lint && hatch run test green (integration tests run via hatch run test-integ on GPU hardware and are not part of unit CI).
  • Changelog fragment changelog.d/<pr-number>-isaac-primitive-parity-tests.md.

Part of #2123. Newton has the same gap; it stays out of scope here (noted follow-up on the parent).

Parent: #2123

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status
    In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions