Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 104 additions & 0 deletions docs/source/api_reference/embodichain/embodichain.lab.sim.skills.rst
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,38 @@ embodichain.lab.sim.skills
UnsupportedSkillError
AmbiguousSkillBindingError

.. rubric:: Semantic calls and runtime

.. autosummary::

SemanticCallSpec
SemanticPose
Pick
Place
HandOver
OperateArticulation
RegisteredSemanticCall
SemanticCallCatalog
SemanticSkillCompiler
AtomicSkills
SkillRuntime
SkillResult
SkillCallTrace
SkillPlanAttemptTrace
SkillEffectTrace

.. rubric:: Effects, evidence, and parallel execution

.. autosummary::

SemanticEffectSpec
EffectMonitorRef
EffectMonitor
EffectEvidenceCollector
ParallelSkillRuntime
ParallelSkillResult
ParallelCommandSafetyValidator

.. currentmodule:: embodichain.lab.sim.skills

Robot resources and profiles
Expand Down Expand Up @@ -99,6 +131,78 @@ Profile errors

.. autoclass:: AmbiguousSkillBindingError

Semantic calls and runtime
--------------------------

.. autoclass:: SemanticCallSpec
:members:

.. autoclass:: SemanticPose
:members:

.. autoclass:: Pick
:members:

.. autoclass:: Place
:members:

.. autoclass:: HandOver
:members:

.. autoclass:: OperateArticulation
:members:

.. autoclass:: RegisteredSemanticCall
:members:

.. autoclass:: SemanticCallCatalog
:members:

.. autoclass:: SemanticSkillCompiler
:members:

.. autoclass:: AtomicSkills
:members:

.. autoclass:: SkillRuntime
:members:

.. autoclass:: SkillResult
:members:

.. autoclass:: SkillCallTrace
:members:

.. autoclass:: SkillPlanAttemptTrace
:members:

.. autoclass:: SkillEffectTrace
:members:

Effects, evidence, and parallel execution
-----------------------------------------

.. autoclass:: SemanticEffectSpec
:members:

.. autoclass:: EffectMonitorRef
:members:

.. autoclass:: EffectMonitor
:members:

.. autoclass:: EffectEvidenceCollector
:members:

.. autoclass:: ParallelSkillRuntime
:members:

.. autoclass:: ParallelSkillResult
:members:

.. autoclass:: ParallelCommandSafetyValidator
:members:

Registry and provider
---------------------

Expand Down
49 changes: 49 additions & 0 deletions docs/source/overview/sim/atomic_actions/robot_skill_profiles.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,55 @@ One-dimensional joint-position commands are broadcast across environments.
Their last dimension must equal the resolved endpoint's degree of freedom. Use
invocation-level command overrides for object- or environment-specific values.

## Safe preset and dynamic collision worlds

When the authoritative scene registry declares dynamic collision entities and
`safe` is reachable through the integration-wide, per-skill, or
profile-default preset selection, semantic integration validates that path
conservatively during binding. The `safe` preset must use `motion_gen`, and the
active motion generator must explicitly support dynamic collision worlds;
otherwise binding fails before provider observation, planning, or command
emission.

A linked call receives an effective immutable preset snapshot with
`DynamicCollisionMode.REQUIRED`; the source profile preset is not mutated.
Other presets, and scenes without dynamic collision entities, retain their
configured collision mode.

## Select semantic effect monitors with the preset

A {class}`SkillPolicyPreset` owns one coherent runtime choice: planning and
recovery policy, runner cadence, and the exact semantic-effect monitors used to
confirm physical postconditions. `effect_monitors` maps a semantic call ID to a
versioned {class}`EffectMonitorRef`. Its parameters are bounded declarative
values; executable objects, tensors, cyclic containers, and non-finite numbers
are rejected.

When `effect_monitors` is omitted, the preset selects the built-in
pose-relation hysteresis monitor for `pick`, `place`, and `hand_over`. Passing an
explicit empty mapping disables that default; static analysis then reports
`missing_effect_monitor` if a curated effectful call selects that preset. A
manifest also rejects monitor entries whose semantic ID is absent from its call
catalog, and the compiler requires the exact monitor ID/revision and validates
its parameters before grounding.

The semantic compiler creates a fresh monitor for every grounded call. Pick
expects one attached destination relation, place one detached source relation,
and handover both source-detached and destination-attached relations in the
same observation. The monitor compares fresh backend evidence with owned
object-to-endpoint baselines; it never treats the planned `StateDelta` or
current `TaskState` as proof that the physical effect occurred. Invalid or
missing per-environment evidence remains unresolved. Consecutive-sample state
survives request-mask shrinkage within one attempt and resets when recovery
installs a new attempt.

```{note}
The monitor contract is backend-neutral. Simulation, hardware perception, or
controller feedback supplies typed pose-relation evidence. The semantic
runtime adapter that connects that evidence to `ExecutionRunner` is separate
from the profile and monitor configuration.
```

## Bind, discover, and resolve

Pass the profile to
Expand Down
Loading