Add coordinated pickment atomic action#323
Open
skywhite1024 wants to merge 6 commits into
Open
Conversation
ef6bde1 to
d5eb97c
Compare
d5eb97c to
ac5d406
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
This PR extends EmbodiChain’s simulation atomic-action system with dual-arm, coordinated motion primitives (“CoordinatedPickment” and “CoordinatedPlacement”), including new typed target/state dataclasses, exports, docs/API reference updates, tutorial demos, and accompanying unit tests.
Changes:
- Added dual-arm coordinated atomic actions and supporting typed targets/state (
CoordinatedPickment*,CoordinatedPlacement*,CoordinatedHeldObjectState), threading the new state through existing actions viaWorldState. - Added tutorial/demo scripts for coordinated pickment and coordinated placement.
- Updated Sphinx API reference + built-in actions docs and added focused tests for the new target/state/action behavior.
Reviewed changes
Copilot reviewed 9 out of 15 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
embodichain/lab/sim/atomic_actions/core.py |
Introduces new coordinated target/state dataclasses and extends WorldState/Target union. |
embodichain/lab/sim/atomic_actions/actions.py |
Implements CoordinatedPickment and CoordinatedPlacement, plus shared dual-arm helpers and state threading. |
embodichain/lab/sim/atomic_actions/__init__.py |
Re-exports coordinated actions/targets/state through the atomic_actions package API. |
tests/sim/atomic_actions/test_core.py |
Adds unit tests for the new coordinated target/state dataclasses and WorldState carriage. |
tests/sim/atomic_actions/test_actions.py |
Adds execution-shape/state tests for coordinated actions using dual-arm mocks. |
scripts/tutorials/atomic_action/coordinated_pickment.py |
Adds an end-to-end demo script for dual-arm coordinated pickment. |
scripts/tutorials/atomic_action/coordinated_placement.py |
Adds an end-to-end demo script for dual-arm coordinated placement. |
docs/source/overview/sim/atomic_actions/builtin_actions.md |
Documents the new coordinated actions in the “built-in actions” overview. |
docs/source/api_reference/embodichain/embodichain.lab.sim.atomic_actions.rst |
Exposes the new actions/targets/state in the generated API reference. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+1696
to
+1700
| return ( | ||
| True, | ||
| self._interpolate_qpos_keyframes(left_traj, keyframe_indices, n_waypoints), | ||
| self._interpolate_qpos_keyframes(right_traj, keyframe_indices, n_waypoints), | ||
| ) |
Comment on lines
+158
to
+162
| Dual-arm placement motion for two already-held objects. The placing arm moves its | ||
| held object to the upper target and releases it; the support arm moves its held | ||
| object to the support target and keeps holding. On success, `WorldState.held_object` | ||
| is the support object and `coordinated_held_object` is cleared. | ||
|
|
2f069c3 to
07e1a00
Compare
Comment on lines
+1896
to
+1897
| left_grasp_xpos=left_target_xpos, | ||
| right_grasp_xpos=right_target_xpos, |
| "right_hand_close_qpos", | ||
| ): | ||
| if getattr(self.cfg, name) is None: | ||
| logger.log_error(f"{name} must be specified in CoordinatedPickmentCfg") |
yuecideng
requested changes
Jul 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CoordinatedPickmentdual-arm atomic action for pinching one shared object with two grippers, lifting it, and moving it to an object-centric target pose.CoordinatedPickmentTargetandCoordinatedHeldObjectState, public API exports, API docs, and focused tests for the world-state contract.pencil/potobjects pluspencil.glb,pot.glb, andtable.glbassets.docs/source/_static/atomic_actions/coordinated_pickment.gif.Validation
git diff --check origin/main...HEADpython3 -m py_compile embodichain/lab/sim/atomic_actions/core.py embodichain/lab/sim/atomic_actions/actions.py embodichain/lab/sim/atomic_actions/__init__.py tests/sim/atomic_actions/test_core.py tests/sim/atomic_actions/test_actions.py scripts/tutorials/atomic_action/coordinated_pickment.pyconda run -n embodichain040 python -m black --check --diff --color ./conda run -n embodichain040 pytest tests/sim/atomic_actions/test_actions.py tests/sim/atomic_actions/test_core.py(42 passed)conda run -n embodichain040 pytest tests/sim/atomic_actions/test_engine.py(13 passed)conda run -n embodichain040 python scripts/tutorials/atomic_action/coordinated_pickment.py --object pot --diagnose_plan --headless_playNotes
CoordinatedPlacementcode, docs, tests, demo, and placement-only assets were removed from this PR because that action is handled by a separate PR.main.