Skip to content

feat(atomic-actions): extend handover coordination and slide targets - #733

Merged
yuecideng merged 3 commits into
mainfrom
codex/atomic-actions-main-pr
Oct 4, 2026
Merged

yuecideng merged 3 commits into
mainfrom
codex/atomic-actions-main-pr

Conversation

@yuecideng

Copy link
Copy Markdown
Contributor

Description

This PR isolates the Atomic Actions and direct grasp-generation changes from the larger action-engine branch. It extends held-object continuity, handover/release behavior, coordinated dual-arm release, articulated slide targets, scene-relative pose goals, and contact-aware planning diagnostics.

The change is based directly on main. Task Engine orchestration, Task Program bundle generation, TaskSpec, Asset Engine, and Scene Engine changes remain outside this PR.

Key behavior changes:

  • SceneEntityPose supports world-frame displacement and orientation overrides.
  • Pick, AxisAlign, and Place stop treating expected contact motion as an external scene revision after their configured commit boundary.
  • MoveHeldObject supports ordered object-pose waypoints and bounded final world-yaw alternatives while preserving the verified grasp.
  • HandOver supports transfer-only execution, existing-held continuation, optional release-at-target behavior, and explicit source retreat phases.
  • CoordinatedPickment supports synchronized release and post-release retreat.
  • SlideGoal supports absolute prismatic joint targets with calibrated axis signs and same-timestamp observation checks.
  • GraspKit collision and antipodal filtering is tightened for the expanded action routes.
  • Atomic Actions documentation, API export coverage, and focused tests are updated.

Dependencies: none; this PR targets main.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (non-breaking change which improves an existing functionality)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (existing functionality will not work without user modification)
  • Documentation update

Validation

  • python -m compileall -q embodichain/lab/sim/atomic_actions embodichain/toolkits/graspkit
  • Black check passed for changed Python files.
  • python docs/scripts/check_api_docs.py passed: 2415/2415 exports documented.
  • git diff --check passed.
  • pytest -q tests/sim/atomic_actions tests/toolkits was attempted, but collection is blocked in the current environment by the installed DexSim package: dexsim.types does not export RTRenderMode, which is imported by main's rendering configuration before the tests load.

@yuecideng yuecideng added enhancement New feature or request atomic action atomic action related functionality interaction The interaction simulation features toolkit Stand along tools collection. labels Oct 3, 2026
@greptile-apps

greptile-apps Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 4/5

[Medium risk] Extends atomic action primitives with new motion capabilities.

The PR does not yet appear safe to merge because an existing-held HandOver can continue toward a stale exchange height when its scene-referenced target moves.

Fix All in CodexFindings

  1. P1 Exchange target stops being monitored ▶
Fix with agent prompt
### Issue 1
embodichain/lab/sim/atomic_actions/primitives/hand_over.py:1022-1026
When the existing-held route uses a scene entity as `goal.target_pose`, its pose determines the exchange height. This cutoff disables monitoring from the start. If that entity moves during transfer, execution continues toward the stale height instead of replanning.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

The PR expands atomic-action handover, coordinated release, slide targeting, held-object transport, and grasp planning. Since the previous review, it also narrows AxisAlign’s scene-monitoring cutoff, restores full Place destination monitoring, and makes MoveJoints agent-visible.

  • The Place monitoring concern is fixed, and distinct AxisAlign grasp targets remain monitored.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Scene and robot observations] --> B[Plan atomic action]
  B --> C{Action route}
  C --> D[Handover and release]
  C --> E[Slide joint target]
  C --> F[Held-object waypoints]
  D --> G[Execute timed commands]
  E --> G
  F --> G
  G --> H[Verify effects and update task state]
Loading

Reviews (3) · Last reviewed commit: "fix(atomic-actions): keep dynamic target..."

Comment on lines +1016 to +1018
scene_dependency_monitor_until={
entity_id: 0 for entity_id in self._scene_dependencies(request)
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Exchange target stops being monitored When the existing-held route uses a scene entity as goal.target_pose, its pose determines the exchange height. This cutoff disables monitoring from the start. If that entity moves during transfer, execution continues toward the stale height instead of replanning.

Prompt To Fix With AI
This is a comment left during a code review.
Path: embodichain/lab/sim/atomic_actions/primitives/hand_over.py
Line: 1016-1018

Comment:
**Exchange target stops being monitored** When the existing-held route uses a scene entity as `goal.target_pose`, its pose determines the exchange height. This cutoff disables monitoring from the start. If that entity moves during transfer, execution continues toward the stale height instead of replanning.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Fix in Codex Fix in Claude Code

Comment thread embodichain/lab/sim/atomic_actions/primitives/hand_over.py Outdated
Comment thread embodichain/lab/sim/atomic_actions/primitives/hand_over.py
Comment thread embodichain/lab/sim/atomic_actions/primitives/slide.py
Preserve established hand closures during existing-held transfers, monitor late-bound handover targets, and retreat the released source hand in transfer-only mode. Validate satisfied Slide targets and coordinated options early, and partition centroid grasp pairs by center without duplicate dual-arm candidates.
Comment thread embodichain/lab/sim/atomic_actions/primitives/place.py Outdated
Expose MoveJoints consistently with its public contract and keep Place targets monitored through release. Restrict AxisAlign self-motion cutoffs to the semantic object while preserving independent grasp-target monitoring.
@yuecideng
yuecideng merged commit 5c62b0b into main Oct 4, 2026
9 checks passed
@yuecideng
yuecideng deleted the codex/atomic-actions-main-pr branch October 4, 2026 10:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

atomic action atomic action related functionality enhancement New feature or request interaction The interaction simulation features toolkit Stand along tools collection.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant