Skip to content

Add coordinated dual-arm atomic actions#323

Open
skywhite1024 wants to merge 43 commits into
mainfrom
ljd/coordinated_pickment_atomic_actions
Open

Add coordinated dual-arm atomic actions#323
skywhite1024 wants to merge 43 commits into
mainfrom
ljd/coordinated_pickment_atomic_actions

Conversation

@skywhite1024

Copy link
Copy Markdown
Collaborator

Summary

  • Add coordinated placement and coordinated pickment atomic actions for dual-arm workflows.
  • Add typed targets/state, exports, API docs, demos, and GLB tutorial assets.
  • Add focused tests for coordinated target/state/action behavior.

Validation

  • python3 -m py_compile core/actions/init files, coordinated demos, and atomic action tests
  • git diff --check

Note: Full pytest in the local conda environment aborts during DexSim/Optix CUDA initialization on this machine.

skywhite1024 and others added 30 commits June 16, 2026 14:05
Captures the review of embodichain/lab/sim/atomic_actions and the proposed
typed-targets / WorldState / TrajectoryBuilder redesign.

Co-Authored-By: Claude <noreply@anthropic.com>
13-task TDD plan implementing the design spec at
docs/superpowers/specs/2026-06-21-atomic-actions-redesign-design.md.

Co-Authored-By: Claude <noreply@anthropic.com>
Move Affordance, AntipodalAffordance, and InteractionPoints out of
core.py into a dedicated affordance.py module. AntipodalAffordance now
stores mesh_vertices, mesh_triangles, generator_cfg, gripper_collision_cfg,
force_reannotate, and is_draw_grasp_xpos as typed dataclass fields rather
than smuggling them through a shared geometry / custom_config dict.

Remove the geometry-aliasing footgun from ObjectSemantics.__post_init__:
it no longer assigns self.affordance.geometry = self.geometry, so an
Affordance never silently inherits a mutable dict from its semantics
parent. __post_init__ now only binds the affordance's object_label.

Update actions.py, engine.py, and __init__.py imports to source the
affordance types from the new module. Update test_core.py, test_engine.py,
and test_actions.py to import Affordance from affordance, drop the
duplicate Affordance/InteractionPoints tests now covered by
test_affordance.py, and stop asserting the removed geometry alias.

Co-Authored-By: Claude <noreply@anthropic.com>
…ngs)

Co-Authored-By: Claude <noreply@anthropic.com>
… slim ABC

Co-Authored-By: Claude <noreply@anthropic.com>
…en tests)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
- MoveAction, PickUpAction, MoveObjectAction, PlaceAction all inherit
  AtomicAction directly. _HandCloseAction is removed.
- Each holds a TrajectoryBuilder for shared helpers.
- execute() takes a typed target + WorldState and returns ActionResult
  with a full-DoF trajectory.
- Cfg classes are flat (no inheritance among Grasp/HandClose variants).

Co-Authored-By: Claude <noreply@anthropic.com>
…rror types)

Co-Authored-By: Claude <noreply@anthropic.com>
Drops SemanticAnalyzer, _resolve_target, _action_context, execute_static.
Keeps the global register_action / unregister_action / get_registered_actions.

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Refresh the module docstring to reflect the four current primitives
(move/pick_up/move_object/place) and the typed-target / WorldState design.
Export list was already correct from the incremental task updates.

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
claude and others added 11 commits June 22, 2026 01:45
Co-Authored-By: Claude <noreply@anthropic.com>
Rewrite the skill to match the new API: sibling actions inheriting
AtomicAction directly, TrajectoryBuilder composition, typed targets,
WorldState/ActionResult contract, engine.register + run. Drops the old
tuple-return / validate / _builtin_action_map / GraspActionCfg-parent
guidance.

Co-Authored-By: Claude <noreply@anthropic.com>
@yuecideng yuecideng self-requested a review June 23, 2026 13:56
@skywhite1024 skywhite1024 force-pushed the ljd/coordinated_pickment_atomic_actions branch from ef6bde1 to d5eb97c Compare June 24, 2026 05:34
Base automatically changed from refactor/atomic-actions-redesign to main June 25, 2026 06:08
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.

3 participants