Skip to content

Add dynamic scene recovery for atomic actions - #450

Open
yuecideng wants to merge 2 commits into
feat/atomic-action-pr2a-execution-runnerfrom
feat/atomic-action-pr2b-dynamic-scene
Open

Add dynamic scene recovery for atomic actions#450
yuecideng wants to merge 2 commits into
feat/atomic-action-pr2a-execution-runnerfrom
feat/atomic-action-pr2b-dynamic-scene

Conversation

@yuecideng

Copy link
Copy Markdown
Contributor

Description

This PR adds dynamic-scene recovery to the typed atomic-action execution stack.

It introduces a SceneProvider boundary, a RigidObjectSceneProvider, global/per-environment collision-world revisions, and collision-sensitive phase invalidation. AtomicAction.plan() now owns scene binding and delegates skill logic to _plan(), so current obstacle poses are injected into copied planner options instead of being repeated across individual skill parameters. cuRobo implements the dynamic-world bridge, and ExecutionSession emits collision_world_changed before bounded per-environment replanning.

The PR also adds runnable moving-target and dynamic-obstacle recovery tutorials, focused multi-environment recovery tests, planner/provider tests, and corresponding Sphinx and agent-context updates.

Dependencies: #449. This is a stacked PR whose base is feat/atomic-action-pr2a-execution-runner; commit 7cbba908 is the PR2B-only change.

Fixes: N/A (no linked issue).

Type of change

  • Breaking change (existing functionality will not work without user modification)

The extension hook for AtomicAction subclasses changes from overriding public plan() to implementing _plan(). This is intentional within the unmerged refactor stack and prevents actions from bypassing framework-owned scene binding.

Validation

  • black --check --diff --color ./ — 562 files unchanged
  • pytest -q tests/sim/atomic_actions tests/sim/planners/test_curobo_planner.py tests/sim/planners/test_motion_generator_batched.py — 181 passed, 4 skipped
  • python -m compileall -q embodichain/lab/sim/atomic_actions scripts/tutorials/atomic_action
  • agent_context/MAP.yaml YAML parsing
  • Moving-target headless simulation — dynamic_goal_changedreplanned → completed after 83 accepted commands
  • Dynamic-obstacle headless simulation — collision_world_changedreplanned → completed after 83 accepted commands
  • Sphinx HTML build completed; existing repository-wide autodoc warnings remain
  • Full test suite was not run; affected atomic-action and planner scopes were validated proportionally

Screenshots

Not applicable; this change adds runtime APIs and headless simulation tutorials.

Checklist

  • I have run the black . command to format the code base.
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix is effective or that my feature works
  • Dependencies have been updated, if applicable.

Add versioned scene providers, per-environment collision-world invalidation, and planner-side dynamic obstacle binding. Include bounded recovery tests plus runnable moving-target and cuRobo obstacle examples.
@yuecideng yuecideng added breaking enhancement New feature or request atomic action atomic action related functionality motion gen Things related to motion generation for robot labels Aug 2, 2026
@yuecideng
yuecideng force-pushed the feat/atomic-action-pr2a-execution-runner branch from 1794d02 to 00456c8 Compare August 3, 2026 03:37
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 breaking enhancement New feature or request motion gen Things related to motion generation for robot

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant