Skip to content

feat(tasks): add declarative physical handover - #505

Closed
yuecideng wants to merge 3 commits into
feat/expert-program-registration-runtime-catalogfrom
feat/declarative-hand-over-task
Closed

feat(tasks): add declarative physical handover#505
yuecideng wants to merge 3 commits into
feat/expert-program-registration-runtime-catalogfrom
feat/declarative-hand-over-task

Conversation

@yuecideng

@yuecideng yuecideng commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Description

Stack

Add the Dual-UR5/PGI declarative HandOver vertical slice, its exact pose/effect integration, and real contact-dynamics acceptance coverage. The runtime guards held objects in flight and detects physical loss instead of hiding it with a synthetic attachment.

The layer also fixes solver configuration construction so finalized parameters reach subclasses correctly. HandOver completes through ordinary commands, physical evidence, settling, and validation without simulator-side object repair.

Refs #471
Refs #474

Type of change

  • New feature (non-breaking change which adds functionality)

Screenshots

Not applicable.

Validation

  • Focused coverage: tests/gym/envs/tasks/test_hand_over.py, simulation-handover/policy tests, atomic runner/session tests, and solver tests
  • Final affected-suite regression on the stack tip: 1215 passed, 2 skipped, 8 deselected
  • Changed Python files pass Black 26.3.1; the Sphinx build and rollout-report drift check pass at the stack tip

Checklist

  • Changed Python files pass Black 26.3.1.
  • Corresponding public/design documentation is included in this stack.
  • Tests cover the affected behavior.
  • No dependency update is required.

@yuecideng yuecideng changed the title feat/declarative hand over task feat(tasks): add declarative physical handover Aug 11, 2026
@yuecideng yuecideng added task A task written in openai gym format for imitation learning or reinforcement learning gym robot learning env and its related features robot Module related to robot atomic action atomic action related functionality enhancement New feature or request labels Aug 11, 2026
@yuecideng
yuecideng marked this pull request as ready for review August 11, 2026 16:46
Copilot AI lite review requested due to automatic review settings August 11, 2026 16:46
@greptile-apps

greptile-apps Bot commented Aug 11, 2026

Copy link
Copy Markdown

Greptile Summary

The PR adds a declarative Dual-UR5 handover task and introduces phase-aware physical held-object guards with row-local state reconciliation. It also aligns simulation runner cadence, preserves position-controller preload during settling, and fixes solver configuration construction.

  • Adds the packaged handover environment, robot/scene profile, semantic poses, configuration, and physical-simulation acceptance coverage.
  • Observes held-object loss during named trajectory phases and routes failed rows into bounded retry or external recovery.
  • Adds configurable continuation behavior during effect verification and completion.
  • Constructs concrete solver configurations with finalized constructor parameters before subclass post-initialization.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete blocking or independently actionable non-blocking issue identified.

The new guard path correlates fresh evidence to the active attempt and waypoint, preserves healthy batch rows during reconciliation, and enforces timeout recovery before further command dispatch; the solver and handover configuration paths are likewise consistent with their callers and tests.

Important Files Changed

Filename Overview
embodichain/lab/sim/atomic_actions/execution.py Adds correlated phase-aware guard requests/results, row-local relation invalidation, and retry or external-recovery transitions.
embodichain/lab/sim/atomic_actions/runner.py Invokes held-object guards before due commands and supports suppressing observed-position holds during effect verification.
embodichain/lab/sim/skills/compiler.py Grounds Pick, Place, and HandOver held-object invariants against named trajectory segments and physical effect monitors.
embodichain/lab/sim/skills/runtime.py Collects phase-scoped evidence, computes loss masks, and produces authorized removal-only state reconciliation.
embodichain/lab/gym/envs/expert_program/simulation_policies.py Preserves drive targets for active settling rows while holding inactive rows at measured positions.
embodichain/lab/sim/solvers/base_solver.py Passes recognized concrete configuration fields through construction so subclass post-initialization observes finalized values.
embodichain_tasks/embodichain_tasks/tableware/hand_over.py Defines the declarative Dual-UR5/PGI handover environment, calibrated physical scene, profile, and registration.
embodichain_tasks/configs/expert_program/tableware/hand_over.yaml Declares the Pick-to-HandOver workflow, settling policy, and delivery-pose validator.
embodichain_tasks/configs/gym/hand_over/dual_ur5.json Adds the runnable task configuration with dual-arm geometry, controller parameters, and contact dynamics.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Declarative Pick / HandOver call] --> B[Compiler grounds motion and effect guards]
    B --> C[ExecutionRunner obtains fresh observation]
    C --> D{Held-object guard passes?}
    D -- Yes --> E[Dispatch next command]
    D -- Loss with retry --> F[Invalidate failed-row relation]
    F --> G[Replan within retry budget]
    D -- Loss without retry --> H[Emit recovery required]
    E --> I[Terminal physical effect verification]
    I --> J[Commit verified state]
    J --> K[Wait-stable using live target qpos]
    K --> L[Validate delivered object pose]
Loading

Reviews (1): Last reviewed commit: "feat(atomic-actions): guard in-flight he..." | Re-trigger Greptile

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@yuecideng

Copy link
Copy Markdown
Contributor Author

Folded into #480 during stacked-PR consolidation. Its commits remain included in #480; the remote branch is retained for traceability.

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 gym robot learning env and its related features robot Module related to robot task A task written in openai gym format for imitation learning or reinforcement learning

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants