Repository navigation
[Proposal] Unify Atomic Skill benchmarks under configuration-driven suites #669
Description
Proposal
Build a single configuration-driven benchmark path for Atomic Skills by extending the existing scripts/benchmark/motion_generation suite framework instead of maintaining one standalone benchmark runner per skill.
A suite configuration should select:
- an embodiment component and optional initial-configuration overrides;
- one or more planner adapters and their configurations;
- Atomic Skills, cases, and physical stage evaluators;
- nominal, robustness, and held-out generalization domains;
- the measurement and reporting protocol.
The resolved suite should generate a planner-independent, versioned case manifest, execute every compatible planner on the same cases, evaluate success from physical scene evidence, and emit the existing reproducibility artifacts and report.
The intended data flow is:
Suite YAML
├─ embodiment component + overrides
├─ planner specifications
├─ Atomic Skill cases
└─ versioned generalization domains
↓
resolved case manifest
↓
generic motion-generation runner
↓
physical stage evaluators
↓
trials.jsonl + aggregates.json + report.md
Reuse existing owners
- Reuse
SuiteCfg, planner/scenario/robot registries, the generic runner, and the artifact/report pipeline introduced by [Proposal] Neural Motion Generator benchmark with cuRobo baseline #437. - Reuse official embodiment components under
embodichain_tasks/configs/components/embodiments/rather than defining benchmark-only robot constructions. - Represent each Atomic Skill through an
AtomicSkillCaseProviderplus a physical evaluator. Invocation construction, case generation, stage measurement, and aggregation should remain separate concerns. - Reuse the per-skill stage model being developed in Benchmark seven more atomic skills #642 after its physical-success criteria are corrected and covered by counterexample tests.
Configuration model
The suite should make the following concepts first-class:
- Embodiment — component path, optional overrides, initial joint configuration, endpoint bindings, and runtime services.
- Planner — existing
PlannerSpecCfg/adapter selection and planner-owned parameters. - Atomic Skill — skill ID, options, cases, ordered physical stages, tolerances, and required capabilities.
- Generalization domain — stable domain ID and version, applicability, required capabilities, case generator or frozen cases, and perturbation/held-out metadata.
- Protocol — seeds, repeats, replay timing, recording policy, thresholds, and report schema version.
Generalization domains must distinguish:
- nominal evaluation;
- in-domain robustness perturbations;
- held-out adaptability domains such as a new object, scene layout, end effector, or embodiment.
Case inclusion must be frozen before candidate evaluation. unsupported must come from an independent capability contract or an exhaustive, reproducible validator; it must not be inferred from a truncated probe or from the result of the planner being ranked.
Physical evaluation contract
Stage success must come from simulator observations, contact/effect evidence, or other measured scene state. CompiledTrajectory.projected_context is hypothetical planning state and must not be used as proof that an object was grasped, released, transferred, or retained.
The evaluator interface should support:
- ordered, skill-specific stages;
- segment-boundary measurements;
- shared cross-cutting rules such as premature object drop;
- stable failure stages and taxonomy;
- replay/video using the same timing schedule as the scored execution;
- per-environment outcomes for batched cases.
Migration phases
- Correct the shared physical measurement contract and introduce the evaluator interface.
- Load official embodiment components and migrate the currently benchmarked Atomic Skills into
AtomicSkillCaseProviderimplementations. - Add versioned generalization domains and aggregate nominal/robustness/adaptability statistics.
- Retain current per-skill commands only as compatibility wrappers, then remove duplicated lifecycle and reporting code when migration is complete.
Acceptance criteria
- A suite can select an official embodiment component, planner adapter, Atomic Skill, and cases without editing Python runner code.
- At least two embodiments and two planners can run compatible skills through the same manifest and report schema.
- All physical stages are measured from replay observations; projected planning effects do not decide physical success.
- The manifest records resolved embodiment, planner configuration hash, skill options, domain/version, seed, and case parameters.
- One nominal domain and at least one versioned generalization domain are supported end to end.
- Reports include coverage, stage rates, overall success, and domain-level mean/worst/variance/retention where applicable.
- Every run emits
resolved_suite.yaml,environment.json,case_manifest.json,trials.jsonl,aggregates.json, and a Markdown report. - Unsupported capability, ordinary task failure, invalid case, and runtime error remain distinct.
- Existing motion-generation and Atomic Skill focused tests continue to pass, with new negative tests for incorrect physical evidence and generalization aggregation.
Motivation
EmbodiChain currently has two complementary benchmark paths:
scripts/benchmark/motion_generationalready provides suite YAML, planner and scenario registries, frozen manifests, raw artifacts, aggregation, and reporting.- The Atomic Skill benchmark work in Benchmark seven more atomic skills #642 expands skill coverage and introduces skill-specific stage chains, but each skill still owns a large standalone Python script with hard-coded robot, planner, scene, cases, replay, and report assembly.
This split makes it difficult to answer the benchmark question users actually care about:
Given an embodiment/configuration, a planner, an Atomic Skill, and a generalization target, how well does the complete physical behavior perform?
Without one configuration and artifact contract, adding a planner, embodiment, skill, or generalization domain requires edits across multiple runners. Results are also difficult to compare because scene construction, replay timing, success evidence, unsupported classification, and output metadata can diverge between scripts.
A unified suite would preserve the strongest parts of both implementations: the reproducibility and extensibility of the motion-generation framework, and the per-skill physical stage semantics of the Atomic Skill benchmarks.
Related work: #437 established the generic motion-generation benchmark architecture; #642 expands Atomic Skill coverage and motivates convergence onto that architecture.
Additional context
A minimal target configuration could look like:
schema_version: 1
name: atomic_skill_generalization
suite_version: atomic_skill_generalization_v1
embodiment:
component: ../../embodichain_tasks/configs/components/embodiments/franka_panda.yaml
overrides: {}
planners:
- id: curobo
adapter: curobo
role: primary_baseline
enabled: true
config: {}
tracks:
- id: nominal-pick
scenario: atomic_task
skills:
- id: pick_up
cases: [cube_top_center]
domains:
- id: nominal
version: v1
- id: held_out_objects
version: v1
objects: [unseen_box, unseen_cylinder]
protocol:
seeds: [11, 23, 37]
measured_trials: 3The exact schema should remain small and reuse existing component/registry contracts rather than introduce a third configuration system.
Checklist
- I have checked that there is no similar issue in the repo (required)
Activity
yuecideng commentedon Sep 23, 2026
Proposed three-person work allocation (for meeting discussion)
Suggested ownership: yuecideng owns the unified framework and generalization statistics; matafela owns embodiment/planner integration and skill migration; Yuan-Xinyi owns physical evaluation and stage criteria. This is a discussion draft. Assignments, timelines, and final interfaces remain to be agreed upon.
1. Scope
The work should establish three shared properties:
The existing
scripts/benchmark/motion_generationframework already includesSuiteCfg, a generic runner,AtomicSkillCaseProvider, and several integrated skills. Providers still owntask_result()evaluation, and some robot construction depends on tutorial helpers. The work should extend the existing framework, clarify ownership, and migrate integrations.2. Proposed ownership
This allocation follows existing work: yuecideng has contributed to the suite/atomic benchmark framework, Yuan-Xinyi is developing #642, and matafela has contributed to cuRobo integration. Final assignments should account for familiarity and available time, as confirmed in the meeting.
3. Agree on three interfaces first
Case provider → runner: led by matafela, jointly agreed with yuecideng.
unsupportedfrom an independent capability contract or sufficient reproducible validation, never from candidate planner failure or a truncated probe.Execution observations → evaluator: led by Yuan-Xinyi, with scene integration support from matafela.
projected_contextas evidence of physical success; use the same timing contract for video replay and scored execution.Trial → aggregation: led by yuecideng, with field semantics agreed by the other two owners.
unsupported,invalid case, ordinary task failure, and runtime error.4. Delivery sequence
pick_upAgree on the physical evaluation contract first. Component integration and statistical implementation can then proceed in parallel. Expand skill migration after validating the first end-to-end run. That run is an integration checkpoint; final acceptance still requires multiple embodiments and planners, a nominal domain plus at least one versioned generalization domain, and all required artifacts.
5. Collaboration and PR boundaries
Suggested logical changes, with the number of PRs adjusted to their size:
To reduce conflicts, first separate the provider, observation, and evaluator responsibilities currently concentrated in
atomic_task.py. Coordinate changes toconfig.py,models.py, andrunner.pythrough yuecideng. Each owner supplies tests for their modules; interface changes and acceptance results receive cross-review.6. Acceptance priorities and meeting decisions
Pay particular attention to two failure modes:
unsupported, failed cases disappear from aggregation, or unequal domain sizes hide poor worst-domain performance. matafela supplies real scenes and independent compatibility evidence.Decisions proposed for the meeting:
pick_upcase for the first end-to-end run.