Skip to content

feat: consume physical entities in manager reset transactions (#1599) - #1600

Draft
TATP-233 wants to merge 1 commit into
mainfrom
feat/issue-1599-entity-consumer
Draft

TATP-233 wants to merge 1 commit into
mainfrom
feat/issue-1599-entity-consumer

Conversation

@TATP-233

Copy link
Copy Markdown
Collaborator

Manager-Based object-only reset previously rebuilt a full state row from global defaults, which could reset the robot and broadcast environment zero's variant state. This change binds logical entities to UniSim's public physical layout, stages one selected-entity reset request, reads per-environment defaults, and restores independent keyframe controls without accessing private backend data.

Scene/config owners materialize typed physical sources and variants, validate the parent contract and collect their asset paths. A registered primitive task uses the same pickleable EnvFactory for MuJoCo and IsaacSim, with passive joints adding state but no actions. Bilingual contract notes and changelog describe the current scalar-joint/common-row transaction boundary.

Refs #1599, unilabsim/unisim#108 and unilabsim/unisim#113.

Draft dependency boundary: this code requires the UniSim M2 APIs currently on dev/issue-108-multi-entity. The released dependency lock is still UniSim 1.4.2 and has intentionally not been disguised with an unreviewed release pin. Development validation used an explicit editable UniSim integration checkout. Before merge, publish/resolve the agreed minimum upstream version, update dependency metadata/lock and rerun final-head installation/CI. This PR is not yet claimed installable from the current lock.

Validation on the final local implementation tree:

  • UV_NO_SYNC=1 make check: passed (Ruff, mypy 128 modules, Pyright 0 errors; one optional Drake warning).
  • UNILAB_LOCAL_UNISIM=/home/user/ws/unilabsim/unisim-m2 UV_NO_SYNC=1 make test: 1477 passed, 28 skipped, 588 slow deselected.
  • Same environment with make test-all: passed, 70% coverage; required benchmark import smoke 34/34 module and 35/35 script checks.
  • uv run --no-sync pytest -q tests/base/test_entity_scene_consumer.py tests/envs/test_multi_entity_consumer.py: 9 passed, 2 explicit native skips.
  • UNILAB_TEST_M2_ISAACSIM=1 uv run --no-sync pytest -q tests/envs/test_multi_entity_consumer.py -k native --basetemp=/tmp/unilab-m2-isaacsim-rr -x: 2 passed, using registered factory → ManagerBasedRlEnv → public UniSim → actual IsaacSim worker. Covers passive articulation and rigid object/mirror scenes; these working-tree runs precede final released-dependency acceptance.
  • Docs checks: 19 passed. git diff --check: passed.

Required Go2/Allegro assets were obtained through the registered asset hub and remain ignored; no robot meshes entered git. Four pre-step-control test mocks were updated to initialize the new MuJoCo runtime fields. No training, reward redesign, runner/learner changes or M3 contact/DR support is introduced.

Declared/PR base: main. Governing contracts: ADR-0006 and ADR-0007; current-head remote CI and released-dependency validation remain merge gates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant