Public API Supplement#
This page lists module exports declared through __all__ that are not
covered by a more focused API-reference page. Prefer curated pages for APIs
that need deeper explanations or examples. Sphinx obtains signatures and
summaries here from the canonical Python docstrings.
embodichain.agents.mllm.task_program#
Strict MLLM entry points that inject host-owned integration settings before decoding and compiling the constrained Task Program schema surface.
|
Decode and compile a model response through the existing environment path. |
|
Decode one untrusted model response into the canonical program config. |
embodichain.data#
The public data namespace exposes dataset resolution, legacy database locations, and resource metadata. Its asset namespace loads on first access so extension asset definitions can import the dataset base without circular initialization.
Preset configuration objects for scene assets (robots, end-effectors, objects, materials, sensors, planners, solvers, demo scenes) ready to reference from task configs. |
|
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
|
|
Built-in mutable sequence. |
|
Resolve a dataset class from the shared asset catalog or extra modules. |
|
Get the absolute path of the data file. |
|
List the 24 public presets without downloading assets or creating a World. |
|
Read independent metadata for a public preset or auxiliary resource. |
embodichain.data.assets.demo_assets#
Downloadable bundles used by standalone manipulation and deformable-body demos. Each class resolves one versioned archive into the configured EmbodiChain data cache.
|
Downloadable meshes for coordinated placement and pickment tutorials. |
|
Shared cloth-twist and W1 T-shirt-folding demo assets. |
|
Downloadable scene assets for multi-W1 manipulation demos. |
|
Downloadable articulated Rubik's-cube asset for manipulation demos. |
|
Downloadable meshes and robot assets for the scoop-ice demo. |
|
Portable tabletop scene for grouped and intra-group layout demos. |
embodichain.data.assets.materials#
Material, environment-map and background bundles use the shared asset cache.
DefaultMaterials downloads the pinned 18-preset collection and its auxiliary
soap-film layer; it does not create a simulator World.
|
|
|
|
|
|
|
Download the bundled background-texture collection. |
Lazily download the pinned default-material collection. |
- class embodichain.data.assets.materials.DefaultMaterials[source]#
Lazily download the pinned default-material collection.
- Parameters:
data_root (
str|None) – Optional data cache root. Each resource revision has its own locked cache entry.EMBODICHAIN_DOWNLOAD_PREFIXselects a mirror containing the catalog’s versioned archive path; otherwise the original DexSim resource server is used (requires network access).
Methods:
__init__([data_root])__new__(**kwargs)get_material_path(name)Get an authored preset directory in this verified resource revision.
- __new__(**kwargs)#
- get_material_path(name)[source]#
Get an authored preset directory in this verified resource revision.
- Parameters:
name (
str) – Downloadable resource preset orSoapBubbleInterior.- Return type:
str- Returns:
Absolute path suitable for DexSim’s native material loader.
- Raises:
ValueError – The name is unknown or denotes a built-in parameter preset, which has no directory in this archive.
embodichain.data.assets.planner_assets#
|
Download a neural planner checkpoint from HuggingFace. |
embodichain.data.assets.policy_assets#
Resolve one official model ID to a pinned repository snapshot and materialize its native RUN files inside the model cache. The returned provenance records the exact repository and revision used for evaluation.
|
Download one official native policy and identify its repository snapshot. |
- embodichain.data.assets.policy_assets.download_pretrained_policy(model_id, *, revision=None, cache_dir=None)[source]#
Download one official native policy and identify its repository snapshot.
Files are materialized inside one revision-specific directory so relative RunManifest paths stay within the downloaded run. Robot assets continue to use the task’s normal asset resolver. Bundles contain
checkpoint.pt,run-manifest.json,configs/train.yaml,configs/env.yamlandevaluation.json. Commit-pinned files reuse the Hub’s local cache. Requests use the canonical endpoint regardless ofHF_ENDPOINT; standard HTTP proxy environment variables still apply.- Parameters:
model_id (
str) – Model directory name from the official repository’s index.revision (
str|None) – Hub commit, tag or branch; defaults to a tested commit.cache_dir (
str|Path|None) – Model cache root; defaults to~/.cache/embodichain/policies.
- Return type:
tuple[Path,dict[str,str]]- Returns:
Local RUN directory and source fields (repo_id, revision, model_id).
- Raises:
ValueError – The model ID, index schema or policy format is unsupported.
ImportError – The model’s task package is not installed.
RuntimeError – The model files cannot be downloaded.
embodichain.data.assets.solver_assets#
|
Download a neural IK solver checkpoint from HuggingFace. |
embodichain.data.assets.w1_assets#
Versioned W1 URDF archives use the shared data-root and download cache. V021 provides separate body components; V022 and V025 bundle the full robot and components. V030 packages the standard 20-DOF body without detachable grippers or wrist-camera attachments. Its component visuals and inertials match the corrected full-body definition.
Dataset class for the Dexforce W1 V021. |
|
Dataset class for the unified Dexforce W1 V022 release archive. |
|
Dataset class for the unified Dexforce W1 V025 release archive. |
|
Standard V030 body archive, excluding detachable end effectors. |
|
- class embodichain.data.assets.w1_assets.DexforceW1V021[source]#
Dataset class for the Dexforce W1 V021.
- Directory structure:
DexforceW1V021/DexforceW1V021.urdf
- Example usage:
>>> from embodichain.data import get_data_path >>> print(get_data_path("DexforceW1V021/DexforceW1_v02_1.urdf"))
Methods:
- __new__(**kwargs)#
- class embodichain.data.assets.w1_assets.DexforceW1V022[source]#
Dataset class for the unified Dexforce W1 V022 release archive.
Expected Hugging Face path and archive layout:
dexforce_w1/v022/w1.zip w1/robot.urdf w1/chassis.urdf w1/torso.urdf w1/head.urdf w1/left_arm.urdf w1/right_arm.urdf
Methods:
- __new__(**kwargs)#
- class embodichain.data.assets.w1_assets.DexforceW1V025[source]#
Dataset class for the unified Dexforce W1 V025 release archive.
Expected Hugging Face path and archive layout:
dexforce_w1/v025/w1.zip w1/robot.urdf w1/chassis.urdf w1/torso.urdf w1/head.urdf w1/left_arm.urdf w1/right_arm.urdf
The same archive supports both direct full-robot loading and component assembly, so runtime code does not download duplicate component archives.
Methods:
- __new__(**kwargs)#
- class embodichain.data.assets.w1_assets.DexforceW1V030[source]#
Standard V030 body archive, excluding detachable end effectors.
The archive is published at
dexforce_w1/v030/w1.zipwithw1/robot.urdfand the five component URDFs. Component visuals and inertials match the corrected full body. Its yellow and dark plastic materials match V021. Wrist camera and gripper assets belong to independently assembled attachments.- Parameters:
data_root (
str|None) – Download and extraction cache root. Defaults to the configured EmbodiChain asset cache.
Methods:
- __new__(**kwargs)#
embodichain.data.default_materials#
The wheel includes catalog metadata so these functions work offline without
asset downloads. Both functions are also available from embodichain.data. The 24-preset
catalog combines six built-in parameter definitions and 18 downloadable
resources; metadata identifies their source and download requirement.
Metadata includes compatible renderer names, source revision, dependencies,
auxiliary resources and suggested physical texture dimensions. Dimensions do
not change geometry or UVs.
List the 24 public presets without downloading assets or creating a World. |
|
Read independent metadata for a public preset or auxiliary resource. |
- embodichain.data.default_materials.list_default_materials()[source]#
List the 24 public presets without downloading assets or creating a World.
- Return type:
list[str]- Returns:
Preset names in catalog order. Auxiliary resources are omitted.
- embodichain.data.default_materials.get_default_material_info(name)[source]#
Read independent metadata for a public preset or auxiliary resource.
- Parameters:
name (
str) – Case-sensitive catalog name, includingSoapBubbleInterior.- Return type:
dict[str,Any]- Returns:
Description, source, download requirement, supported renderers, dependencies, geometry guidance and source revision. Built-in presets also include their native parameter defaults and have no texture size. Suggested resource sizes do not change UVs.
- Raises:
ValueError – The name is not in the built-in catalog.
- embodichain.data.list_default_materials()[source]
List the 24 public presets without downloading assets or creating a World.
- Return type:
list[str]- Returns:
Preset names in catalog order. Auxiliary resources are omitted.
- embodichain.data.get_default_material_info(name)[source]
Read independent metadata for a public preset or auxiliary resource.
- Parameters:
name (
str) – Case-sensitive catalog name, includingSoapBubbleInterior.- Return type:
dict[str,Any]- Returns:
Description, source, download requirement, supported renderers, dependencies, geometry guidance and source revision. Built-in presets also include their native parameter defaults and have no texture size. Suggested resource sizes do not change UVs.
- Raises:
ValueError – The name is not in the built-in catalog.
embodichain.data_pipeline#
The configuration submodule derives bounded pipeline settings without starting an online worker. Importing the data-pipeline package remains lazy.
|
Derive bounded ODS consumption and cache settings from measured capacities. |
embodichain.data_pipeline.configuration#
Configure ODS from measured generation and training capacities. A versioned profile bounds selections per trajectory; the planner never promotes provisional bounds to qualified ones. Runtime metadata constrains cache storage, refill latency and short-window consumption. The online engine and consumer must enforce the returned quota and pacing targets. Measurement helpers preserve the units, common monotonic window and difference between active and wall-clock rates.
Explicit task/model/sampler qualification and selection-budget bounds. |
|
Measured runtime settings and optional total cache-storage allowance. |
|
Derived settings and their qualifications; no runtime state is changed. |
|
|
Plan quota-protected ODS settings from two concurrent capacity estimates. |
Count and active duration within an explicit absolute monotonic window. |
|
Active capacities and realized wall rates, kept distinct by unit. |
|
|
Calculate rates for matching monotonic windows with explicit count units. |
- class embodichain.data_pipeline.configuration.ODSReuseProfileCfg[source]#
Explicit task/model/sampler qualification and selection-budget bounds.
scopeidentifies task, model, history/horizon and trajectory-length assumptions.qualified=Falseis a supported provisional profile, not a claim that its recommended bounds are scientifically safe.Methods:
__init__([profile_id, scope, qualified, ...])copy(**kwargs)Return a new object replacing specified fields with new values.
replace(**kwargs)Return a new object replacing specified fields with new values.
to_dict()Convert an object into dictionary recursively.
validate([prefix])Check the validity of configclass object.
- __init__(profile_id=<factory>, scope=<factory>, qualified=<factory>, min_chunks_per_episode=<factory>, max_chunks_per_episode=<factory>, hard_max_chunks_per_episode=<factory>, latency_safety_factor=<factory>)#
- copy(**kwargs)#
Return a new object replacing specified fields with new values.
This is especially useful for frozen classes. Example usage:
@configclass(frozen=True) class C: x: int y: int c = C(1, 2) c1 = c.replace(x=3) assert c1.x == 3 and c1.y == 2
- Parameters:
obj (
object) – The object to replace.**kwargs – The fields to replace and their new values.
- Return type:
object- Returns:
The new object.
- replace(**kwargs)#
Return a new object replacing specified fields with new values.
This is especially useful for frozen classes. Example usage:
@configclass(frozen=True) class C: x: int y: int c = C(1, 2) c1 = c.replace(x=3) assert c1.x == 3 and c1.y == 2
- Parameters:
obj (
object) – The object to replace.**kwargs – The fields to replace and their new values.
- Return type:
object- Returns:
The new object.
- to_dict()#
Convert an object into dictionary recursively.
Note
Ignores all names starting with “__” (i.e. built-in methods).
- Parameters:
obj (
object) – An instance of a class to convert.- Raises:
ValueError – When input argument is not an object.
- Return type:
dict[str,Any]- Returns:
Converted dictionary mapping.
- validate(prefix='')#
Check the validity of configclass object.
This function checks if the object is a valid configclass object. A valid configclass object contains no MISSING entries.
- Parameters:
obj (
object) – The object to check.prefix (
str) – The prefix to add to the missing fields. Defaults to ‘’.
- Return type:
list[str]- Returns:
A list of missing fields.
- Raises:
TypeError – When the object is not a valid configuration object.
- class embodichain.data_pipeline.configuration.ODSRuntimeCfg[source]#
Measured runtime settings and optional total cache-storage allowance.
cache_memory_bytesandbytes_per_episodemust be supplied together. The allowance is for episode storage only; the caller must reserve worker, model and allocator memory separately. B and P are preserved unchanged.Methods:
__init__([batch_size, producer_envs, ...])copy(**kwargs)Return a new object replacing specified fields with new values.
replace(**kwargs)Return a new object replacing specified fields with new values.
to_dict()Convert an object into dictionary recursively.
validate([prefix])Check the validity of configclass object.
- __init__(batch_size=<factory>, producer_envs=<factory>, first_publication_p95_seconds=<factory>, cache_memory_bytes=<factory>, bytes_per_episode=<factory>, min_cache_episodes=<factory>, measurement_scope=<factory>)#
- copy(**kwargs)#
Return a new object replacing specified fields with new values.
This is especially useful for frozen classes. Example usage:
@configclass(frozen=True) class C: x: int y: int c = C(1, 2) c1 = c.replace(x=3) assert c1.x == 3 and c1.y == 2
- Parameters:
obj (
object) – The object to replace.**kwargs – The fields to replace and their new values.
- Return type:
object- Returns:
The new object.
- replace(**kwargs)#
Return a new object replacing specified fields with new values.
This is especially useful for frozen classes. Example usage:
@configclass(frozen=True) class C: x: int y: int c = C(1, 2) c1 = c.replace(x=3) assert c1.x == 3 and c1.y == 2
- Parameters:
obj (
object) – The object to replace.**kwargs – The fields to replace and their new values.
- Return type:
object- Returns:
The new object.
- to_dict()#
Convert an object into dictionary recursively.
Note
Ignores all names starting with “__” (i.e. built-in methods).
- Parameters:
obj (
object) – An instance of a class to convert.- Raises:
ValueError – When input argument is not an object.
- Return type:
dict[str,Any]- Returns:
Converted dictionary mapping.
- validate(prefix='')#
Check the validity of configclass object.
This function checks if the object is a valid configclass object. A valid configclass object contains no MISSING entries.
- Parameters:
obj (
object) – The object to check.prefix (
str) – The prefix to add to the missing fields. Defaults to ‘’.
- Return type:
list[str]- Returns:
A list of missing fields.
- Raises:
TypeError – When the object is not a valid configuration object.
- class embodichain.data_pipeline.configuration.ODSConfiguration[source]#
Derived settings and their qualifications; no runtime state is changed.
Methods:
__init__(episode_sample_budget, ...[, ...])- __init__(episode_sample_budget, episode_sample_hard_limit, balance_chunks_per_episode, batch_size, producer_envs, buffer_size, cache_bytes, initial_chunk_budget, initial_max_updates, initial_remainder_chunks, refill_remaining_chunks, active_chunks_per_second_cap, training_chunks_per_second_target, training_updates_per_second_target, publication_episodes_per_second_target, training_duty_fraction, producer_duty_fraction, expected_training_throttle_fraction, expected_producer_throttle_fraction, profile_id, profile_scope, profile_qualified, measurement_scope, reasons, end_of_supply_rule='Stop when remaining unlocked per-episode quota cannot fund one full batch.')#
- embodichain.data_pipeline.configuration.configure_ods(accepted_episodes_per_second, training_chunks_per_second, *, profile, runtime)[source]#
Plan quota-protected ODS settings from two concurrent capacity estimates.
- Parameters:
accepted_episodes_per_second (
float) – Published successful trajectories per production second, including retry cost; not an idle whole-run rate.training_chunks_per_second (
float) – Completed chunk selections per active learner second, including sampling, transfers and optimization.profile (
ODSReuseProfileCfg) – Explicit qualified or provisional selection-budget policy.runtime (
ODSRuntimeCfg) – Batch, writer parallelism, latency and storage metadata.
- Return type:
- Returns:
Budget, active and average pacing targets, cache and refill controls. The cache heuristic assumes one writer batch is unavailable. Its active cap must be enforced over short windows, not as post-burst average sleep.
- Raises:
ValueError – Invalid metadata, unrepresentable derived values, or memory too small for the writer, diversity and a full unlocked batch.
TypeError – Profile or runtime has the wrong configuration type.
- class embodichain.data_pipeline.configuration.ODSRateMeasurementCfg[source]#
Count and active duration within an explicit absolute monotonic window.
Methods:
__init__([unit, count, ...])copy(**kwargs)Return a new object replacing specified fields with new values.
replace(**kwargs)Return a new object replacing specified fields with new values.
to_dict()Convert an object into dictionary recursively.
validate([prefix])Check the validity of configclass object.
- __init__(unit=<factory>, count=<factory>, start_monotonic_seconds=<factory>, end_monotonic_seconds=<factory>, active_seconds=<factory>)#
- copy(**kwargs)#
Return a new object replacing specified fields with new values.
This is especially useful for frozen classes. Example usage:
@configclass(frozen=True) class C: x: int y: int c = C(1, 2) c1 = c.replace(x=3) assert c1.x == 3 and c1.y == 2
- Parameters:
obj (
object) – The object to replace.**kwargs – The fields to replace and their new values.
- Return type:
object- Returns:
The new object.
- replace(**kwargs)#
Return a new object replacing specified fields with new values.
This is especially useful for frozen classes. Example usage:
@configclass(frozen=True) class C: x: int y: int c = C(1, 2) c1 = c.replace(x=3) assert c1.x == 3 and c1.y == 2
- Parameters:
obj (
object) – The object to replace.**kwargs – The fields to replace and their new values.
- Return type:
object- Returns:
The new object.
- to_dict()#
Convert an object into dictionary recursively.
Note
Ignores all names starting with “__” (i.e. built-in methods).
- Parameters:
obj (
object) – An instance of a class to convert.- Raises:
ValueError – When input argument is not an object.
- Return type:
dict[str,Any]- Returns:
Converted dictionary mapping.
- validate(prefix='')#
Check the validity of configclass object.
This function checks if the object is a valid configclass object. A valid configclass object contains no MISSING entries.
- Parameters:
obj (
object) – The object to check.prefix (
str) – The prefix to add to the missing fields. Defaults to ‘’.
- Return type:
list[str]- Returns:
A list of missing fields.
- Raises:
TypeError – When the object is not a valid configuration object.
- class embodichain.data_pipeline.configuration.ODSThroughputMeasurement[source]#
Active capacities and realized wall rates, kept distinct by unit.
Methods:
__init__(...)- __init__(accepted_episodes_per_active_second, accepted_episodes_per_wall_second, training_chunks_per_active_second, training_chunks_per_wall_second, window_seconds)#
- embodichain.data_pipeline.configuration.measure_ods_throughput(production, training)[source]#
Calculate rates for matching monotonic windows with explicit count units.
Counts may be zero; active durations must be positive and no longer than the window. A shared window alone does not prove simultaneous saturation: callers must record production/learner overlap and measurement scope separately.
- Return type:
embodichain.data_pipeline.depth_video#
|
Convert a string or number to a floating point number, if possible. |
|
Convert a string or number to a floating point number, if possible. |
|
Convert a string or number to a floating point number, if possible. |
|
bool(x) -> bool |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
int([x]) -> integer int(x, base=10) -> integer |
embodichain.gen_sim.env#
|
Return the configured shared |
|
Return the repository containing the installed GenSim source tree. |
|
Load missing variables from the shared GenSim |
embodichain.gen_sim.gradio_ui.app_articraft#
embodichain.gen_sim.gradio_ui.app_asset_engine#
embodichain.gen_sim.gradio_ui.app_commands#
embodichain.gen_sim.gradio_ui.app_env#
|
int([x]) -> integer int(x, base=10) -> integer |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
Path subclass for non-Windows systems. |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
Path subclass for non-Windows systems. |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
Path subclass for non-Windows systems. |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
Built-in immutable sequence. |
|
int([x]) -> integer int(x, base=10) -> integer |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
int([x]) -> integer int(x, base=10) -> integer |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
Resolve the explicit static and generated roots Gradio may serve. |
|
Resolve repository metadata and dotenv paths Gradio must never serve. |
|
Disable proxy inheritance for local pipeline and Gradio processes. |
|
Map app-level SimReady settings to the upstream CLI's environment. |
|
Return the network environment captured before Gradio forces direct access. |
|
Validate deployment exposure and return Gradio credentials. |
|
Reject an artifact setting broad enough to expose the repository. |
embodichain.gen_sim.gradio_ui.app_media#
embodichain.gen_sim.gradio_ui.app_processes#
embodichain.gen_sim.gradio_ui.app_services#
embodichain.gen_sim.gradio_ui.app_state#
embodichain.gen_sim.gradio_ui.app_ui#
embodichain.gen_sim.gradio_ui.app_workflows#
embodichain.gen_sim.gradio_ui.gradio_app#
embodichain.gen_sim.scene_engine.cli.randomization#
Command-line entry point for grouped layout generation from an existing Scene Engine workspace. Validates the YAML policy, prepares a reusable baseline and saves successful candidates with a completion manifest.
|
Prepare a baseline, generate layouts and save a new run directory. |
embodichain.gen_sim.scene_engine.core.scene_edit_plan#
|
One normalized edit operation produced from an LLM edit draft. |
|
Validated operations against one immutable pre-edit scene state. |
embodichain.gen_sim.scene_engine.pipeline.editing.scene_edit_asset_preparation#
|
Prepare and return SimReady assets required by add operations. |
embodichain.gen_sim.scene_engine.pipeline.utils.usd_scene#
Entity metadata and deterministic UID indexing for schema-v2 USD scene stages.
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
One USD entity paired with its simulator facade. |
|
One EmbodiChain entity authored on a USD prim. |
|
Map one USD entity index to DexSim/EmbodiChain runtime objects. |
|
Index EmbodiChain entity metadata from one USD stage. |
embodichain.gen_sim.scene_engine.randomization.adapter#
|
Read scaled local Z-up geometry without modifying its source export. |
|
Generate a v4 run after the final Scene Engine export. |
|
Convert validated legacy layouts without resampling or changing identity. |
embodichain.gen_sim.scene_engine.randomization.baseline#
Extracts one table work area, group AABBs and root-relative member poses from rigid GLB exports. A group contains a direct table child and all descendants. The baseline cache is reused only when source identity, extraction version, structure and checksum match; preparation leaves the source export untouched.
|
Result of preparing a persisted scene randomization baseline. |
|
Validate a portable scene and persist its reusable grouped baseline. |
embodichain.gen_sim.scene_engine.randomization.cfg#
Loads a closed, versioned YAML policy and resolves the workspace’s
scene_export/ input and scene_randomization_base.yaml baseline path.
The workspace is supplied separately through output_root. For example:
schema_version: 1
seed: 42
candidate_count: 10
max_attempts: 1000
collision_margin_m: 0.02
Generate and save layouts, then cycle the original scene and saved candidates:
embodichain scene-randomization --output_root ./workspace --config policy.yaml
python -m embodichain.gen_sim.scene_engine.randomization.loading \
--layout-dir ./workspace/scene_layouts/run_001/layouts --interval 3
Version 3 adds hierarchical member XY/yaw sampling on CPU or CUDA:
schema_version: 3
backend: batched
device: cuda:0
randomize_groups: true
intra_group:
targets:
mug_001:
xy_offset_bounds_m: null
yaw_delta_range_deg: [-180, 180]
randomize_groups: false holds group roots fixed. Unselected members retain
parent-relative poses and follow moved ancestors. XY bounds, when supplied as
[[min_x, min_y], [max_x, max_y]], bound the original entity origin’s offset
in its parent support frame. A null bound uses the complete feasible region.
Yaw increments rotate around the support normal while retaining authored tilt.
Defaults are 2 mm boundary and sibling margins, 1 mm support gap and 1 mm grid
resolution. intra_group.support_overrides accepts parent UID entries with
a proper rigid parent_from_support matrix and GeoJSON polygon; overrides
must have mesh support evidence. Invalid polygons are rejected during policy
loading before scene preparation. Ambiguous automatic layers raise an error.
The positive height deviation of the selected near-planar layer is included in
its conservative support height, retaining the configured minimum gap over
shallow raised geometry.
Content-addressed geometry caches leave the original baseline unchanged. Hierarchical layouts save v3 root XY translations and full selected member poses relative to their parents, using JSON or packed storage. Replay validates source, cache, policy, geometry and identity before exposing lazy variants and does not sample again. The existing v1/v2 group layouts and earlier v3 hierarchical layouts remain readable. New hierarchical proposals use algorithm version 2: dynamic group centers are sampled from the remaining free rectangular area without nested retries. Support caches use extraction version 2 and include a conservative layer height ceiling; older caches retain their recorded height semantics on replay. Saving compares the on-disk cache against the generated snapshot before publishing a completed run.
|
One non-root member's displacement bounds in its parent support frame. |
|
Explicit parent-local support frame and GeoJSON Polygon/MultiPolygon. |
|
Explicit member selection and conservative support geometry settings. |
|
Resolved scene paths and grouped layout generation parameters. |
|
Load a closed version-1, version-2 or hierarchical version-3 policy. |
embodichain.gen_sim.scene_engine.randomization.generation#
Uses the shared seeded procedural generator and XY layout solver, then expands
every group from the same baseline. Successful candidates contain a full
SceneFragment and a SceneVariant. Group-only sampling preserves authored
orientation and height. Hierarchical sampling changes selected members’ support
XY/yaw, aligns their geometric bottom to the support gap and propagates subtrees.
Scale and exported collision hull budgets are preserved. Acceptance checks
conservative support coverage, sibling/group AABBs and table bounds; it does not
establish physical stability or task success.
budget_exhausted is a normal result that retains any successful candidates.
The result records actual parameters, proposal attempts and solver outcomes;
generation does not save candidates until save_layouts is called.
|
In-memory grouped scene candidates and their generation accounting. |
|
Randomize every support group using shared seeded XY layout generation. |
embodichain.gen_sim.scene_engine.randomization.loading#
Validates a completed run’s candidate files against its manifest, policy, baseline and unchanged source export, then reconstructs every group member’s absolute pose without generating layouts or rewriting caches. Playback loads assets once and cycles original and candidate poses without advancing physics. Runs with no successful candidates cannot be previewed.
|
Validated source workspace, original poses and ordered saved variants. |
|
Read every saved candidate once and reconstruct all group member poses. |
|
Cycle original and saved layouts in the existing scene preview window. |
|
Parse standalone saved-layout preview arguments. |
embodichain.gen_sim.scene_engine.randomization.persistence#
Saves each result in a distinct scene_layouts/run_NNN/ directory containing
the resolved policy and candidate group centers. Relative references identify
the existing source export and baseline, so those files must remain available
and unchanged. The completion manifest is published last, including for a run
with zero candidates; interrupted writes may leave a run without that manifest.
|
Save successful grouped layouts and generation accounting in a new run. |
embodichain.gen_sim.simready_pipeline.cli.start#
|
Ingest one asset directory. |
|
Run the SimReady asset pipeline CLI. |
embodichain.lab.gym.envs.base_env#
embodichain.lab.gym.envs.demo#
|
Per-frame annotation keys stored in expert rollout buffers. |
|
Current version of the segment-aware demonstration metadata schema. |
Collector-owned settings for demonstration persistence. |
|
Result of executing all planned segments for one batched episode. |
|
Supported persistence layouts for one demonstration execution. |
|
One semantic subtask inside a demonstration episode. |
|
Stable, first-failure-phase outcome for one program segment row. |
|
Execution result and half-open frame range for one segment. |
|
|
Plan and execute every segment in one environment episode. |
|
Resolve a task's segment plan with legacy single-action-list fallback. |
embodichain.lab.gym.envs.embodied_env#
Configuration for Embodied AI environments. |
|
Embodied AI environment that is used to simulate the Embodied AI tasks. |
embodichain.lab.sim.scene.expansion.layout#
Own scaled local mesh geometry and a rooted physical support tree. |
|
Own reusable numeric geometry, policy, permissions and source identity. |
|
Owned lazy proposals and exact bounded generation accounting. |
|
Selected-row pose publication and host-owned cache invalidations. |
|
|
Snapshot prepared rigid entities through public simulation interfaces. |
|
Prepare source-independent hierarchy and conservative support geometry. |
|
Generate a batch without loading meshes or constructing simulation objects. |
|
Preflight all rows, then batch rigid pose writes without physics steps. |
embodichain.lab.sim.scene.expansion.persistence#
Fully validated source, prepared geometry and lazy saved proposals. |
|
|
Publish a v4 layout package, writing the completion manifest last. |
|
Validate every file, source, geometry and identity before exposing layouts. |
embodichain.lab.task_program.integrations.simulation.handover#
Resolve a hand-over delivery target from immutable configuration. |
embodichain.lab.gym.envs.episode_context#
Row-local recording eligibility follows the buffered episode, independently of replaceable demo annotations. Synchronous checks retain pending and rejected state across internal resets, and snapshots own their JSON provenance.
Keep recording eligibility attached to buffers rather than annotations. |
- class embodichain.lab.gym.envs.episode_context.EpisodeContext[source]#
Keep recording eligibility attached to buffers rather than annotations.
- Parameters:
num_envs (
int) – Number of independently reset environment rows.device (
str|device) – Device used by row masks and returned environment IDs.
A successful reset must initialize a row before it can be recorded. Checks block publication until their synchronous scope closes. Rejection is sticky until the host consumes the old buffers and starts another episode. Context updates and snapshots belong to the creating thread; background writers consume owned snapshots instead of accessing this object.
Methods:
__init__(num_envs[, device])check(source[, env_ids])Block selected buffers while a component performs a synchronous check.
filter_recordable([env_ids])Return owned eligible row IDs in the caller's requested order.
snapshot([env_ids])Copy JSON provenance and eligibility without advancing any state.
- check(source, env_ids=None)[source]#
Block selected buffers while a component performs a synchronous check.
- Parameters:
source (
str) – Stable component name, e.g.events/scene_layout.env_ids (
Sequence[int] |Tensor|None) – Selected rows, or all rows when omitted.
- Yields:
A callable that must be invoked exactly once as
finish(accepted=bool_or_row_mask, metadata=..., reasons=...). Metadata may be one shared JSON mapping or a mapping from selected integer row IDs to JSON mappings. Reasons may be one string or a row-keyed mapping. Inputs are validated and copied before publication.- Raises:
RuntimeError – For overlapping scopes of the same source, a missing report, or a report attempted after closing the scope.
- Return type:
Iterator[Callable[...,None]]
Scopes survive internal resets. Exceptions, including cancellation, reject all selected current buffers even after a successful report. A later check cannot clear an earlier rejection in those buffers.
- filter_recordable(env_ids=None)[source]#
Return owned eligible row IDs in the caller’s requested order.
- Parameters:
env_ids (
Sequence[int] |Tensor|None) – Requested rows, or all rows when omitted.- Return type:
Tensor- Returns:
Long tensor on the context device. Pending, uninitialized and previously rejected buffers are excluded independently of task success.
- snapshot(env_ids=None)[source]#
Copy JSON provenance and eligibility without advancing any state.
- Parameters:
env_ids (
Sequence[int] |Tensor|None) – Selected rows, or all rows when omitted.- Return type:
list[dict[str,Any]]- Returns:
Owned row dictionaries suitable for info, episode sidecars and asynchronous persistence. Their eligibility does not prove task success.
embodichain.lab.gym.envs.managers.action_manager#
Base class for one independently processed and applied action slice. |
|
Split one flat policy action across independently applied terms. |
embodichain.lab.gym.envs.managers.actions#
Map normalized actions around a configured default joint pose. |
|
Convert an absolute EEF pose into selected-arm joint targets. |
|
Apply scaled effort actions to selected joints. |
|
Apply absolute position actions to selected joints. |
|
Map normalized selected-joint actions to position limits. |
|
Apply scaled velocity actions to selected joints. |
|
Map one scalar policy action to explicit parallel-gripper joints. |
|
Convert normalized arena-frame pose deltas into selected-arm targets. |
|
Add scaled relative actions to current selected positions. |
embodichain.lab.gym.envs.managers.action_types#
Bind one action-term descriptor to a manager-owned flat slice. |
|
Describe one term's raw policy-action representation. |
|
Capture one policy request and its controller-side action stages. |
embodichain.lab.gym.envs.objectives#
Optional measured objectives observe ordered stable placement regions independently of Task Program completion, segment acceptance and dataset persistence. Progress advances once per control step; snapshots are pure and partial resets are isolated per environment. Stable region occupancy does not establish gripper detachment.
|
Inclusive axis-aligned bounds in environment-local metres. |
|
Ordered stable-region observations; these do not prove gripper release. |
|
Environment-local position and measured velocities, each shaped |
|
Observe ordered stable regions without changing termination or acceptance. |
embodichain.lab.gym.envs.objectives.config#
Strict declaration decoding resolves a deployment’s objective component relative to its owning configuration and rejects unknown fields and invalid thresholds.
|
Inclusive axis-aligned bounds in environment-local metres. |
|
Ordered stable-region observations; these do not prove gripper release. |
|
Decode and validate the minimal ordered stable-region declaration. |
|
Load a strict |
embodichain.lab.gym.envs.objectives.ordered_placement#
The evaluator consumes measured positions and velocities. Historical milestone progress remains recorded when final-region truth becomes false; returning to the final region requires the configured stable hold duration again.
|
Environment-local position and measured velocities, each shaped |
|
Observe ordered stable regions without changing termination or acceptance. |
embodichain.lab.gym.envs.wrapper.replay#
Replay a recorded environment trajectory. |
embodichain.lab.gym.utils#
|
alias of |
|
alias of |
|
Capture restorable simulation state into a trajectory state view. |
|
Restore one trajectory timestep into an environment scene. |
embodichain.lab.gym.utils.gym_utils#
|
Built-in mutable sequence. |
|
Add common environment launcher arguments to an existing argparse parser. |
|
Assign data to a TensorDict using a '/' separated key. |
|
Adds one dimension in front of everything. |
|
Build environment configuration from command-line arguments. |
|
Concatenate tensors along a new dimension specified by dim, using the provided ids to index into the tensors. |
|
Clip action to [-1, 1] and scale according to a range [low, high]. |
|
Parser configuration file into cfgs for env initialization. |
|
Convert observation to OpenAI gym observation space (recursively). |
|
Convert arrays in a dictionary to torch tensors in-place. |
|
Fetch data from a nested dictionary using a '/' separated key. |
|
Flatten a dictionary containing states recursively. |
|
Gets the min and max values of a given numpy type |
|
Get all registered manager modules (built-in + extensions). |
|
Initialize a rollout buffer based on the environment configuration. |
|
Initialize a rollout buffer based on the observation and action spaces. |
|
Map qpos to end-effector pose. |
|
Merge command-line arguments with gym configuration. |
|
Register additional manager modules for functor resolution. |
|
Maps any given sequence to a torch tensor on the CPU. |
|
Maps any given sequence to a torch tensor on the CPU/GPU. |
embodichain.lab.gym.utils.profiler#
|
alias of |
|
alias of |
embodichain.lab.gym.utils.trajectory_state#
|
Capture restorable simulation state into a trajectory state view. |
|
Restore one trajectory timestep into an environment scene. |
embodichain.lab.scripts.analyze_workspace#
|
Build a SimulationManagerCfg from CLI arguments. |
|
Build a RobotCfg from either a URDF/USD asset or a predefined robot. |
|
Build a RobotCfg from a predefined EmbodiChain robot preset. |
|
Build a WorkspaceAnalyzerConfig from CLI arguments. |
|
Visualize cached workspace data beside its robot in EmbodiChain. |
|
Parse workspace-analysis CLI arguments. |
|
Run the workspace analysis end-to-end. |
|
Command-line interface for workspace analysis. |
embodichain.lab.scripts.preview_asset#
|
Build a SimulationManagerCfg from CLI arguments. |
|
Command-line interface for asset preview. |
|
Load one or more assets into the simulation. |
|
Orchestrate: create simulation, load asset, optionally preview, destroy. |
|
Enter interactive preview mode. |
embodichain.lab.scripts.preview_joint_control#
|
Expose scalar articulation joints and hold commanded preview poses. |
embodichain.lab.scripts.preview_lerobot_data#
|
Human-readable episode summary and validation result. |
|
Summary of one contiguous demonstration segment. |
|
Build and validate a preview from already loaded LeRobot samples. |
|
Run the preview through the unified |
|
Load one episode through LeRobot and return its validated preview. |
|
Run the preview CLI and return a process exit code. |
|
Resolve a dataset root, optionally selecting the newest child dataset. |
embodichain.lab.scripts.preview_material#
Query the default catalog without loading simulation dependencies, or render presets and parameter variants with fixed preview settings and managed cleanup.
|
Query or preview default materials using the production preset resolver. |
|
Run the material-preview command. |
- embodichain.lab.scripts.preview_material.main(args)[source]#
Query or preview default materials using the production preset resolver.
- Parameters:
args (
Namespace) – Parsed material-preview arguments. Batch mode always exports without a window; single previews use one unless headless is set.- Raises:
ValueError – Selection, override or renderer requirements are invalid.
OSError – A supplied model or output directory cannot be accessed.
RuntimeError – Native rendering or window creation fails.
AssertionError – A requested direct-native comparison fails.
- Return type:
None
embodichain.lab.scripts.preview_robot#
Load a catalog robot or a standalone configuration and run a native or Viser preview with managed control-part Gizmos and optional joint controls.
|
Decode a catalog or standalone robot configuration. |
|
Run the robot-preview command. |
|
Load and preview a robot, releasing the owned simulation before returning. |
- embodichain.lab.scripts.preview_robot.build_robot_cfg(args)[source]#
Decode a catalog or standalone robot configuration.
- Parameters:
args (
Namespace) – Parsed preview arguments. File fields and JSON overrides take precedence over catalog and explicitly selected variant defaults.- Return type:
- Returns:
A validated robot configuration with local file assets resolved.
- Raises:
ValueError – If selection is invalid or no robot asset is configured.
TypeError – If the file root is not a mapping.
OSError – If the configuration file cannot be read.
embodichain.lab.scripts.run_task#
|
Command-line interface for environment runner. |
|
Execute one legacy planner result through the common episode executor. |
|
Generate, execute, and commit one demonstration collection batch. |
|
Run the selected workflow without taking ownership of |
|
Run the following code to create a demonstration and perform env steps. |
embodichain.lab.sim#
|
Manual PBR properties or explicit overrides of a default material preset. |
|
Visual material definition in the simulation environment. |
|
Instance of a visual material in the simulation environment. |
|
Reuse state for one render-body segment of a parsed object. |
|
Abstract base class for batch entity in the simulation engine. |
|
Global Embodied AI simulation manager. |
|
Global robot simulation configuration. |
|
Path subclass for non-Windows systems. |
|
Path subclass for non-Windows systems. |
|
Path subclass for non-Windows systems. |
|
Path subclass for non-Windows systems. |
embodichain.lab.sim.atomic_actions#
|
Engine-scoped registry of planning services used by atomic actions. |
|
Base class for affordance data. |
|
Batched pose candidates with cost and explicit validity. |
|
Owned result of one batched Affordance sampling operation. |
|
Immutable identity for reproducible parallel Affordance sampling. |
|
Antipodal grasp affordance for parallel-jaw grippers. |
|
Affordance describing how an assemble object fits onto a base object. |
|
Built-in immutable sequence. |
|
Per-invocation coordinated pickup behavior. |
|
Per-invocation coordinated placement behavior. |
|
Policy for consuming a live dynamic collision world. |
|
Scene entity state addressable by a stable entity identifier. |
|
alias of |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
Per-invocation pick-up, handover, and placement behavior. |
|
Batch of 3D interaction points on an object surface. |
|
Per-invocation behavior for |
|
Per-invocation held-object transport behavior. |
|
Per-invocation behavior for |
|
Shared semantic-object goal contract for object-centric skills. |
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
Per-invocation pickup behavior. |
|
Per-invocation placement behavior. |
|
Represent a PEP 604 union type |
|
Close the end effector, contact a rigid object, and push it in-plane. |
|
Push one rigid object toward a target pose on the target support plane. |
|
Per-invocation planar pushing behavior. |
|
End-effector calibration selected by a bound motion control part. |
|
Observe simulation rigid objects and maintain scene revisions. |
|
Material-pose thresholds used to advance scene revisions. |
|
alias of |
|
Produce scene snapshots correlated with execution environments. |
|
alias of |
embodichain.lab.sim.atomic_actions.affordance#
|
Base class for affordance data. |
|
Antipodal grasp affordance for parallel-jaw grippers. |
|
Antipodal grasp affordance with an object-local alignment axis. |
|
Target-local antipodal grasp and parent-joint translation geometry. |
|
Target-local contact point and parent-joint pressing geometry. |
|
Target-local grasp point and parent-joint rotation geometry. |
|
Batch of 3D interaction points on an object surface. |
|
Affordance describing how an assemble object fits onto a base object. |
Classes:
|
Base class for affordance data. |
|
Antipodal grasp affordance for parallel-jaw grippers. |
|
Affordance describing how an assemble object fits onto a base object. |
|
Antipodal grasp affordance with an object-local alignment axis. |
|
Batch of 3D interaction points on an object surface. |
|
Target-local handle geometry and a resolved hinge axis. |
|
Target-local contact point and parent-joint pressing geometry. |
|
Target-local antipodal grasp and parent-joint translation geometry. |
|
Target-local grasp point and parent-joint rotation geometry. |
- class embodichain.lab.sim.atomic_actions.affordance.Affordance[source]
Base class for affordance data.
Represents an object’s interaction possibilities. Subclasses carry whatever typed fields they need (mesh tensors, interaction points, etc.); the base class only carries an object label and a free-form custom_config dict.
Methods:
__init__([object_label, custom_config])get_batch_size()Return the batch size of this affordance data.
get_custom_config(key[, default])Get a custom affordance configuration value.
resolve_from_object_geometry(geometry)Resolve geometry-derived fields after object semantics are assembled.
sample_candidates(candidates, *, sampling, ...)Select poses from a legal candidate set for each logical branch.
set_custom_config(key, value)Set a custom affordance configuration value.
Attributes:
custom_configUser-defined configuration payload.
object_labelLabel of the object this affordance belongs to.
- __init__(object_label='', custom_config=<factory>)
-
custom_config:
dict[str,Any] User-defined configuration payload.
- get_batch_size()[source]
Return the batch size of this affordance data.
- Return type:
int
- get_custom_config(key, default=None)[source]
Get a custom affordance configuration value.
- Return type:
Any
-
object_label:
str= '' Label of the object this affordance belongs to.
- resolve_from_object_geometry(geometry)[source]
Resolve geometry-derived fields after object semantics are assembled.
Subclasses may override this hook when their derived semantic values require metadata owned by
ObjectSemantics.geometry.- Parameters:
geometry (
Mapping[str,Any]) – Non-affordance object geometry metadata.- Return type:
None
- sample_candidates(candidates, *, sampling, env_ids, key, reference_poses=None)[source]
Select poses from a legal candidate set for each logical branch.
- Parameters:
candidates (
AffordancePoseCandidates) – Batched world poses, costs, and validity produced by geometry.sampling (
AffordanceSamplingContext|None) – Optional reproducible branch stream.Noneselects the lowest-cost candidate in every row.env_ids (
Tensor) – Stable environment identities matching candidate rows.key (
str) – Sampling operation identity.reference_poses (
Tensor|None) – Optional world poses of frames used to compare candidate geometry and recorded in the sampling provenance.
- Return type:
AffordanceSample- Returns:
Per-row success, selected poses, and selection metadata.
- set_custom_config(key, value)[source]
Set a custom affordance configuration value.
- Return type:
None
- class embodichain.lab.sim.atomic_actions.affordance.AntipodalAffordance[source]
Antipodal grasp affordance for parallel-jaw grippers.
The affordance owns only target-local triangle-mesh data. Its mesh may describe either the whole object or one selected articulation link; operations that infer whole-object geometry reject the latter. Simulator entity handles and live poses belong to scene grounding.
Attributes:
MAX_SURFACE_POINT_COUNTMaximum point-cloud size used for geometry-distribution analysis.
custom_configUser-defined configuration payload.
mesh_scopeWhether the mesh describes the whole object or one selected link.
mesh_trianglesTarget-local mesh triangle indices, shape [M, 3].
mesh_verticesTarget-local mesh vertices, shape [N, 3].
Methods:
__init__([object_label, custom_config, ...])get_grasp_candidates(generator, ...[, ...])Generate constrained candidates using an externally owned service.
get_object_longest_axis(obj_poses, *[, ...])Return the widest surface-point distribution axis in world space.
require_whole_object_mesh()Reject a link-only grasp mesh where whole-object geometry is required.
sample_surface_points([max_points])Deterministically sample target-local mesh-surface points.
-
MAX_SURFACE_POINT_COUNT:
ClassVar[int] = 1000 Maximum point-cloud size used for geometry-distribution analysis.
- __init__(object_label='', custom_config=<factory>, mesh_vertices=None, mesh_triangles=None, mesh_scope='object')
-
custom_config:
dict[str,Any] User-defined configuration payload.
- get_grasp_candidates(generator, object_poses, approach_direction, *, obj_longest_axis=None, is_positive_part=True)[source]
Generate constrained candidates using an externally owned service.
- Parameters:
generator (
GraspPoseGenerator) – Grasp-pose service configured for the actual gripper.object_poses (
Tensor) – Live-grounded world poses with shape(B, 4, 4).approach_direction (
Tensor) – Shared or per-row approach direction.obj_longest_axis (
Tensor|None) – Optional axis restricting the graspable region.is_positive_part (
bool|Tensor) – Which end of the optional axis is graspable.
- Return type:
AffordancePoseCandidates- Returns:
Padded candidates with explicit validity.
- get_object_longest_axis(obj_poses, *, max_points=1000)[source]
Return the widest surface-point distribution axis in world space.
- Return type:
Tensor
-
mesh_scope:
Literal['object','link'] = 'object' Whether the mesh describes the whole object or one selected link.
-
mesh_triangles:
Tensor|None= None Target-local mesh triangle indices, shape [M, 3].
-
mesh_vertices:
Tensor|None= None Target-local mesh vertices, shape [N, 3].
- require_whole_object_mesh()[source]
Reject a link-only grasp mesh where whole-object geometry is required.
- Raises:
ValueError – If this affordance contains only a selected link mesh.
- Return type:
None
- sample_surface_points(max_points=1000)[source]
Deterministically sample target-local mesh-surface points.
- Parameters:
max_points (
int) – Requested point cap in[1, 1000].- Return type:
Tensor- Returns:
Target-local surface points with shape
(N, 3).
-
MAX_SURFACE_POINT_COUNT:
- class embodichain.lab.sim.atomic_actions.affordance.AssembleAffordance[source]
Affordance describing how an assemble object fits onto a base object.
The affordance stores the relative assembly relation. Planning supplies the base object’s snapshot pose through
AssembleGoal.base_pose. The assemble object’s target pose isbase_pose @ assemble_to_base_pose.Methods:
__init__([object_label, custom_config, ...])get_assemble_object_pose(base_pose)Return the assemble-object target pose for a given base-object pose.
sample_assemble_object_pose(base_pose, *, ...)Sample only explicitly declared assembly-equivalent rotations.
Attributes:
assemble_to_base_posePose of the assemble object relative to the base object frame, shape
(4, 4)or(num_envs, 4, 4).custom_configUser-defined configuration payload.
symmetry_transformsAssembly-equivalent object-local rotations with shape
(K, 4, 4).- __init__(object_label='', custom_config=<factory>, assemble_to_base_pose=<factory>, symmetry_transforms=None)
-
assemble_to_base_pose:
Tensor Pose of the assemble object relative to the base object frame, shape
(4, 4)or(num_envs, 4, 4).
-
custom_config:
dict[str,Any] User-defined configuration payload.
- get_assemble_object_pose(base_pose)[source]
Return the assemble-object target pose for a given base-object pose.
The assemble object is placed at
base_pose @ assemble_to_base_pose.- Parameters:
base_pose (
Tensor) – Base-object pose with shape(4, 4)or(num_envs, 4, 4).- Return type:
Tensor- Returns:
Assemble-object target pose with shape
(num_envs, 4, 4).- Raises:
TypeError – If either pose value is not a tensor.
ValueError – If either pose has an unsupported shape or batch size.
- sample_assemble_object_pose(base_pose, *, sampling, env_ids, key='assembly_symmetry')[source]
Sample only explicitly declared assembly-equivalent rotations.
- Parameters:
base_pose (
Tensor) – Base-object world poses.sampling (
AffordanceSamplingContext|None) – Optional reproducible branch stream.env_ids (
Tensor) – Stable environment identities matching base rows.key (
str) – Sampling operation identity.
- Return type:
AffordanceSample- Returns:
Assembly target poses with selection success and metadata.
-
symmetry_transforms:
Tensor|None= None Assembly-equivalent object-local rotations with shape
(K, 4, 4).
- class embodichain.lab.sim.atomic_actions.affordance.AxisAlignAffordance[source]
Antipodal grasp affordance with an object-local alignment axis.
Methods:
__init__([object_label, custom_config, ...])Attributes:
custom_configUser-defined configuration payload.
internal_axisAxis expressed in the target object's local frame.
- __init__(object_label='', custom_config=<factory>, mesh_vertices=None, mesh_triangles=None, mesh_scope='object', internal_axis=<factory>)
-
custom_config:
dict[str,Any] User-defined configuration payload.
-
internal_axis:
Tensor Axis expressed in the target object’s local frame.
- class embodichain.lab.sim.atomic_actions.affordance.InteractionPoints[source]
Batch of 3D interaction points on an object surface.
Methods:
__init__([object_label, custom_config, ...])get_approach_direction(point_idx)Get recommended approach direction for a given point.
get_batch_size()Return the number of interaction points in this affordance.
get_points_by_type(point_type)Get points by their interaction type.
sample_poses(target_pose, *, sampling, env_ids)Sample local contact points and their inward-facing frames.
Attributes:
custom_configUser-defined configuration payload.
normalsOptional surface normals at each interaction point with shape [B, 3].
point_typesOptional labels for each point's interaction type.
pointsBatch of 3D interaction points with shape [B, 3].
- __init__(object_label='', custom_config=<factory>, points=<factory>, normals=None, point_types=<factory>)
-
custom_config:
dict[str,Any] User-defined configuration payload.
- get_approach_direction(point_idx)[source]
Get recommended approach direction for a given point.
- Return type:
Tensor
- get_batch_size()[source]
Return the number of interaction points in this affordance.
- Return type:
int
- get_points_by_type(point_type)[source]
Get points by their interaction type.
- Return type:
Tensor|None
-
normals:
Tensor|None= None Optional surface normals at each interaction point with shape [B, 3].
-
point_types:
list[str] Optional labels for each point’s interaction type.
-
points:
Tensor Batch of 3D interaction points with shape [B, 3].
- sample_poses(target_pose, *, sampling, env_ids, key='interaction_points', point_type=None)[source]
Sample local contact points and their inward-facing frames.
- Parameters:
target_pose (
Tensor) – Target world poses with shape(B, 4, 4).sampling (
AffordanceSamplingContext|None) – Optional reproducible branch stream.env_ids (
Tensor) – Stable environment identities matching target rows.key (
str) – Sampling operation identity.point_type (
str|None) – Optional exact interaction-point label.
- Return type:
AffordanceSample- Returns:
Sampled contact frames with selection success and metadata.
- Raises:
ValueError – If point geometry, normals, or the requested type is invalid.
- class embodichain.lab.sim.atomic_actions.affordance.OpenDoorAffordance[source]
Target-local handle geometry and a resolved hinge axis.
Use
from_articulation()to start from a graspable handle link. The factory consumes the articulation’s public parent-joint chain, skips only fixed joints, and automatically accepts one unambiguous active revolute ancestor. Ambiguous mechanisms require an explicit hinge joint name. The resulting affordance owns no simulator entity or live pose.Methods:
__init__([object_label, custom_config, ...])from_articulation(articulation, link_name, *)Build handle semantics from a parent revolute joint.
Attributes:
axis_originResolved point on the hinge axis in the handle-link frame.
custom_configUser-defined configuration payload.
joint_limitsOptional lower and upper hinge limits in radians.
joint_nameStable name of the resolved parent revolute joint.
opening_directionJoint-coordinate direction from the closed limit toward the open limit.
rotation_axisResolved hinge axis expressed in the handle-link frame.
- __init__(object_label='', custom_config=<factory>, mesh_scope='object', joint_limits=None, opening_direction=1, *, mesh_vertices, mesh_triangles, rotation_axis, axis_origin, joint_name)
-
axis_origin:
tuple[float,float,float] Resolved point on the hinge axis in the handle-link frame.
-
custom_config:
dict[str,Any] User-defined configuration payload.
- classmethod from_articulation(articulation, link_name, *, hinge_joint_name=None, opening_direction=1)[source]
Build handle semantics from a parent revolute joint.
Automatic resolution skips only fixed joints. It succeeds when the handle chain contains exactly one active ancestor and that joint is revolute. A chain with multiple active ancestors can represent a latch, handle joint, or another mechanism and therefore requires an explicit
hinge_joint_name. Hinge geometry is converted from the joint frame into the requested handle-link frame using current public link poses.- Parameters:
articulation (Articulation) – Articulation containing the graspable handle link.
link_name (str) – Graspable handle link from which to start the traversal.
hinge_joint_name (str | None) – Optional explicit revolute ancestor. Required when more than one active ancestor makes automatic resolution ambiguous.
opening_direction (int) – Joint-coordinate direction from the closed legal endpoint toward the open endpoint. Defaults to increasing qpos.
- Return type:
OpenDoorAffordance
- Returns:
Pure target-local handle and hinge semantics.
- Raises:
TypeError – If a supplied name is not a string.
ValueError – If the link or explicit joint is unknown, automatic resolution is ambiguous, the selected joint is not revolute, or the resolved joint geometry is invalid.
-
joint_limits:
tuple[float,float] |None= None Optional lower and upper hinge limits in radians.
-
joint_name:
str Stable name of the resolved parent revolute joint.
-
opening_direction:
int= 1 Joint-coordinate direction from the closed limit toward the open limit.
-
rotation_axis:
Tensor Resolved hinge axis expressed in the handle-link frame.
- class embodichain.lab.sim.atomic_actions.affordance.PressAffordance[source]
Target-local contact point and parent-joint pressing geometry.
Methods:
__init__([object_label, custom_config, ...])get_press_pose(target_pose[, press_position])Construct a press pose at the configured surface point.
resolve_from_object_geometry(geometry)Resolve the target-local prismatic axis, sign, and contact point.
sample_press_pose(target_pose[, ...])Sample contact-frame roll while preserving point and forward axis.
Attributes:
custom_configUser-defined configuration payload.
press_axisParent prismatic-joint axis, signed toward articulation geometry.
press_positionLocal contact point; inferred from articulation geometry when omitted.
- __init__(object_label='', custom_config=<factory>, press_axis=<factory>, *, press_position=None)
-
custom_config:
dict[str,Any] User-defined configuration payload.
- get_press_pose(target_pose, press_position=None)[source]
Construct a press pose at the configured surface point.
The end-effector z-axis follows
press_axisin world space. An adaptive reference produces an orthonormal, right-handed frame.- Parameters:
target_pose (
Tensor) – Current target world pose with shape(B, 4, 4).press_position (
tuple[float,float,float] |None) – Optional per-call exact local-frame press position. It overridespress_position.
- Return type:
Tensor- Returns:
Batched world-frame press poses with shape
(B, 4, 4).- Raises:
ValueError – If an input has an invalid shape or value.
-
press_axis:
Tensor Parent prismatic-joint axis, signed toward articulation geometry.
-
press_position:
tuple[float,float,float] |None= None Local contact point; inferred from articulation geometry when omitted.
- resolve_from_object_geometry(geometry)[source]
Resolve the target-local prismatic axis, sign, and contact point.
- Return type:
None
- sample_press_pose(target_pose, press_position=None, *, sampling, env_ids, key='press_roll')[source]
Sample contact-frame roll while preserving point and forward axis.
- Parameters:
target_pose (
Tensor) – Target world poses with shape(B, 4, 4).press_position (
tuple[float,float,float] |None) – Optional exact local contact position.sampling (
AffordanceSamplingContext|None) – Optional reproducible branch stream.env_ids (
Tensor) – Stable environment identities matching target rows.key (
str) – Sampling operation identity.
- Return type:
AffordanceSample- Returns:
Sampled press poses and roll metadata.
- class embodichain.lab.sim.atomic_actions.affordance.SlideAffordance[source]
Target-local antipodal grasp and parent-joint translation geometry.
The positive translation-axis direction denotes approaching and pushing the articulated part closed. Pulling moves in the opposite direction. The mesh describes the actual graspable contact surface. The target pose is supplied separately by
SceneEntityPoseor a pose snapshot.Methods:
__init__([object_label, custom_config, ...])resolve_from_object_geometry(geometry)Resolve the target-local prismatic axis and neighborhood sign.
Attributes:
custom_configUser-defined configuration payload.
joint_limitsOptional lower and upper translation limits in metres.
joint_nameOptional stable prismatic-joint name associated with the link.
translation_axisParent prismatic-joint axis, signed toward articulation geometry.
- __init__(object_label='', custom_config=<factory>, mesh_scope='object', translation_axis=<factory>, joint_name=None, joint_limits=None, *, mesh_vertices, mesh_triangles)
-
custom_config:
dict[str,Any] User-defined configuration payload.
-
joint_limits:
tuple[float,float] |None= None Optional lower and upper translation limits in metres.
-
joint_name:
str|None= None Optional stable prismatic-joint name associated with the link.
- resolve_from_object_geometry(geometry)[source]
Resolve the target-local prismatic axis and neighborhood sign.
- Return type:
None
-
translation_axis:
Tensor Parent prismatic-joint axis, signed toward articulation geometry.
- class embodichain.lab.sim.atomic_actions.affordance.TwistAffordance[source]
Target-local grasp point and parent-joint rotation geometry.
Methods:
__init__([object_label, custom_config, ...])get_grasp_pose(target_pose)Construct a deterministic world grasp pose from local geometry.
require_axis_origin()Return the explicit or geometry-derived local rotation-axis point.
resolve_from_object_geometry(geometry)Resolve the target-local revolute axis, sign, and joint origin.
sample_grasp_pose(target_pose, *, sampling, ...)Sample explicitly declared roll symmetry around the grasp axis.
Attributes:
axis_originFallback axis point, overridden by revolute-joint origin metadata.
custom_configUser-defined configuration payload.
grasp_positionExplicit target-local center of the gripper contact region.
grasp_rollNominal contact-frame rotation about the grasp z-axis, in radians.
grasp_roll_rangeAllowed absolute grasp rolls containing
grasp_roll.joint_limitsOptional lower and upper angular limits in radians.
joint_nameOptional stable articulation-joint name associated with the axis.
twist_axisParent revolute-joint axis, signed toward articulation geometry.
- __init__(object_label='', custom_config=<factory>, twist_axis=<factory>, joint_name=None, joint_limits=None, *, grasp_position, axis_origin=None, grasp_roll=0.0, grasp_roll_range=None)
-
axis_origin:
tuple[float,float,float] |None= None Fallback axis point, overridden by revolute-joint origin metadata.
-
custom_config:
dict[str,Any] User-defined configuration payload.
- get_grasp_pose(target_pose)[source]
Construct a deterministic world grasp pose from local geometry.
The pose z-axis follows
twist_axis. The remaining axes are formed with an adaptive reference so the result is always in SO(3).- Return type:
Tensor- Returns:
Batched world-frame grasp poses with shape
(B, 4, 4).- Raises:
ValueError – If
target_poseis not a batched pose tensor.
-
grasp_position:
tuple[float,float,float] Explicit target-local center of the gripper contact region.
-
grasp_roll:
float= 0.0 Nominal contact-frame rotation about the grasp z-axis, in radians.
-
grasp_roll_range:
tuple[float,float] |None= None Allowed absolute grasp rolls containing
grasp_roll.
-
joint_limits:
tuple[float,float] |None= None Optional lower and upper angular limits in radians.
-
joint_name:
str|None= None Optional stable articulation-joint name associated with the axis.
- require_axis_origin()[source]
Return the explicit or geometry-derived local rotation-axis point.
- Return type:
tuple[float,float,float]- Returns:
Resolved target-local rotation-axis origin.
- Raises:
ValueError – If neither a fallback nor articulation geometry supplied the rotation-axis origin.
- resolve_from_object_geometry(geometry)[source]
Resolve the target-local revolute axis, sign, and joint origin.
- Return type:
None
- sample_grasp_pose(target_pose, *, sampling, env_ids, key='twist_grasp')[source]
Sample explicitly declared roll symmetry around the grasp axis.
- Parameters:
target_pose (
Tensor) – Target world poses with shape(B, 4, 4).sampling (
AffordanceSamplingContext|None) – Optional reproducible branch stream.env_ids (
Tensor) – Stable environment identities matching target rows.key (
str) – Sampling operation identity.
- Return type:
AffordanceSample- Returns:
Sampled grasp poses and roll metadata.
-
twist_axis:
Tensor Parent revolute-joint axis, signed toward articulation geometry.
embodichain.lab.sim.atomic_actions.affordance_sampling#
|
Batched pose candidates with cost and explicit validity. |
|
Owned result of one batched Affordance sampling operation. |
|
Immutable identity for reproducible parallel Affordance sampling. |
Reproducible pose sampling within Affordance-owned geometry.
Classes:
|
Batched pose candidates with cost and explicit validity. |
|
Owned result of one batched Affordance sampling operation. |
|
Immutable identity for reproducible parallel Affordance sampling. |
- class embodichain.lab.sim.atomic_actions.affordance_sampling.AffordancePoseCandidates[source]
Batched pose candidates with cost and explicit validity.
- Parameters:
poses (
Tensor) – World-frame homogeneous poses with shape(B, K, 4, 4).costs (
Tensor) – Lower-is-better candidate costs with shape(B, K).valid (
Tensor) – Real-candidate mask with shape(B, K).
Methods:
__init__(poses, costs, valid)from_rows(rows, *, device)Pad variable candidate rows without making padding selectable.
- __init__(poses, costs, valid)
- classmethod from_rows(rows, *, device)[source]
Pad variable candidate rows without making padding selectable.
- Parameters:
rows (
Sequence[tuple[Tensor,Tensor]]) – Per-row(poses, costs)values; rows may be empty.device (
device|str) – Output device.
- Return type:
AffordancePoseCandidates- Returns:
A rectangular candidate batch with explicit validity.
- class embodichain.lab.sim.atomic_actions.affordance_sampling.AffordanceSample[source]
Owned result of one batched Affordance sampling operation.
- Parameters:
success (
Tensor) – Per-row legal-sample mask with shape(B,).poses (
Tensor) – Selected poses with shape(B, 4, 4).metadata (
dict[str,object]) – Sampling provenance and selection diagnostics. Affordance samplers recordpose_frame="world",selected_poses, optional world-framereference_poses,env_ids, and geometricsuccessas JSON-compatible values. Row lists follow the input batch order. Failed rows retain identity placeholder poses and must be interpreted withsuccess; this is not IK or execution success. Candidate IDs identify only each row’s candidate pool.
Methods:
__init__(success, poses, metadata)- __init__(success, poses, metadata)
- class embodichain.lab.sim.atomic_actions.affordance_sampling.AffordanceSamplingContext[source]
Immutable identity for reproducible parallel Affordance sampling.
- Parameters:
count (
int) – Number of logical branches in each sampling group.seed (
int) – Host-selected base seed.episode_id (
int) – Host-selected episode or batch identity.attempt_id (
int) – Explicit resampling attempt identity.branch_override (
int|None) – Optional logical branch selected independently of the physical environment row.
Methods:
__init__([count, seed, episode_id, ...])branch_for(env_id, *[, row_index])Return the selected branch for one environment identity.
generator(key, *[, group])Create a private CPU generator for a stable named stream.
metadata()Return JSON-compatible sampling provenance.
sample_range(nominal, bounds, *, env_ids, key)Stratify a legal scalar interval while retaining nominal branches.
Attributes:
enabledWhether more than the nominal branch was requested.
- __init__(count=1, seed=0, episode_id=0, attempt_id=0, branch_override=None, branch_overrides=None)
- branch_for(env_id, *, row_index=None)[source]
Return the selected branch for one environment identity.
- Return type:
int
- property enabled: bool
Whether more than the nominal branch was requested.
- generator(key, *, group=0)[source]
Create a private CPU generator for a stable named stream.
- Parameters:
key (
str) – Non-empty sampling operation identity.group (
int) – Non-negative logical branch-group identity.
- Return type:
Generator- Returns:
A generator independent of PyTorch’s global random state.
- metadata()[source]
Return JSON-compatible sampling provenance.
- Return type:
dict[str,int|None]
- sample_range(nominal, bounds, *, env_ids, key)[source]
Stratify a legal scalar interval while retaining nominal branches.
- Parameters:
nominal (
float|Tensor) – Scalar or one value per environment row.bounds (
tuple[float,float] |None) – Inclusive lower and upper bounds, orNonefor no freedom.env_ids (
Tensor) – Stable non-negative environment identities, shape(B,).key (
str) – Sampling operation identity.
- Return type:
Tensor- Returns:
Sampled values with shape
(B,)on the environment device.
embodichain.lab.sim.atomic_actions.bindings#
Engine-owned generic endpoint bindings for one atomic action call. |
|
One action-local endpoint resolved to a runtime controller target. |
|
Joint-position destination backed by one robot control part. |
|
Stable controller destination produced by an endpoint adapter. |
embodichain.lab.sim.atomic_actions.control#
Per-invocation semantic commands keyed by slot and endpoint. |
|
Immutable-by-ownership command associated with one control part. |
|
Reusable semantic commands for one named robot control part. |
|
|
Conventional semantic command for an object-holding end effector. |
A semantic command represented by one or batched joint positions. |
|
|
Conventional semantic command for an open end effector. |
|
Conventional semantic command for an embodiment-defined parked posture. |
embodichain.lab.sim.atomic_actions.core#
Side-effect-free planner for one semantically meaningful robot skill. |
|
Shallow-frozen semantic information about an interaction object. |
|
Machine-readable metadata for one registered atomic skill. |
|
|
Resolve an indexless CUDA device to the active concrete GPU index. |
embodichain.lab.sim.atomic_actions.effects#
Expected task-state changes that require post-execution verification. |
embodichain.lab.sim.atomic_actions.engine#
Own planning resources and coordinate side-effect-free atomic actions. |
embodichain.lab.sim.atomic_actions.execution#
One timestamped execution or recovery event. |
|
Structured event categories emitted by |
|
Owned inspection snapshot for one installed action plan. |
|
Execute grounded invocations incrementally with bounded local recovery. |
|
Lifecycle status of an execution session. |
|
Result returned after one closed-loop execution update. |
embodichain.lab.sim.atomic_actions.verification#
|
Current-observation outcome for one physical state expectation. |
Typed boundary describing a physical effect awaiting verification. |
|
Correlated per-environment update for one effect boundary. |
|
|
Describe the next in-flight command boundary for held-object checks. |
|
Correlated in-flight held-object loss and recovery decision. |
|
Correlate a blocking physical-effect check with a segment entry. |
|
Current-observation decision for one blocking segment-entry gate. |
embodichain.lab.sim.atomic_actions.goals#
|
Shared semantic-object goal contract for object-centric skills. |
|
Explicit pose tensor or a pose resolved from the latest scene snapshot. |
Late-bound pose derived from a versioned scene entity. |
|
|
Collect stable scene entity identifiers referenced by a goal value. |
|
Resolve a pose goal against a planning context. |
|
Validate an explicit or late-bound pose goal. |
|
Validate the environment-independent part of a pose goal. |
Goal contracts shared by atomic actions.
Classes:
|
Shared semantic-object goal contract for object-centric skills. |
Late-bound pose derived from a versioned scene entity. |
Data:
|
Explicit pose tensor or a pose resolved from the latest scene snapshot. |
Functions:
|
Collect stable scene entity identifiers referenced by a goal value. |
|
Resolve a pose goal against a planning context. |
|
Validate an explicit or late-bound pose goal. |
|
Validate the environment-independent part of a pose goal. |
- class embodichain.lab.sim.atomic_actions.goals.ObjectActionGoal[source]
Shared semantic-object goal contract for object-centric skills.
Methods:
__init__(semantics)Attributes:
semanticsSemantic and geometric description of the object.
- __init__(semantics)
-
semantics:
ObjectSemantics Semantic and geometric description of the object.
- embodichain.lab.sim.atomic_actions.goals.PoseGoalValue = torch.Tensor | embodichain.lab.sim.atomic_actions.goals.SceneEntityPose
Explicit pose tensor or a pose resolved from the latest scene snapshot.
- class embodichain.lab.sim.atomic_actions.goals.SceneEntityPose[source]
Late-bound pose derived from a versioned scene entity.
The semantic request remains stable while each call to
AtomicAction.plan()resolves the latest scene pose. This is the bridge used by an execution session to replan moving goals.Methods:
__init__(entity_id[, relative_pose, ...])snapshot()Return an independently owned late-bound pose value.
Attributes:
entity_idStable scene entity identifier.
minimum_confidenceMinimum accepted perception confidence.
relative_poseOptional transform applied as
entity_pose @ relative_pose.world_displacementOptional world-frame translation applied after
relative_pose.world_orientationOptional world-frame orientation applied before
relative_pose.- __init__(entity_id, relative_pose=None, minimum_confidence=0.0, world_displacement=None, world_orientation=None)
-
entity_id:
str Stable scene entity identifier.
-
minimum_confidence:
float Minimum accepted perception confidence.
-
relative_pose:
Tensor|None Optional transform applied as
entity_pose @ relative_pose.
- snapshot()[source]
Return an independently owned late-bound pose value.
- Return type:
- Returns:
Exact scene reference with an owned relative-pose tensor.
-
world_displacement:
Tensor|None Optional world-frame translation applied after
relative_pose.
-
world_orientation:
Tensor|None Optional world-frame orientation applied before
relative_pose.
- embodichain.lab.sim.atomic_actions.goals.collect_scene_dependencies(value)[source]
Collect stable scene entity identifiers referenced by a goal value.
- Return type:
tuple[str,...]
- embodichain.lab.sim.atomic_actions.goals.resolve_pose_goal(value, context, *, name)[source]
Resolve a pose goal against a planning context.
- Parameters:
value (
Tensor|SceneEntityPose) – Explicit tensor or scene-entity reference.context (
PlanningContext) – Latest observed planning context.name (
str) – Field name used in validation errors.
- Return type:
Tensor- Returns:
Explicit pose tensor. Scene references always return shape
(B, 4, 4).
- embodichain.lab.sim.atomic_actions.goals.validate_pose_goal(value, name, *, allow_waypoints)[source]
Validate an explicit or late-bound pose goal.
- Return type:
None
- embodichain.lab.sim.atomic_actions.goals.validate_pose_tensor(value, name, *, allow_waypoints)[source]
Validate the environment-independent part of a pose goal.
- Parameters:
value (
Tensor) – Pose tensor to validate.name (
str) – Field name used in validation errors.allow_waypoints (
bool) – Whether a batched waypoint dimension is accepted.
- Raises:
TypeError – If
valueis not a tensor.ValueError – If the tensor shape is not a supported pose shape.
- Return type:
None
embodichain.lab.sim.atomic_actions.invocation#
One fully typed and endpoint-bound atomic skill request. |
|
Marker base for immutable, skill-specific runtime options. |
|
|
Type variable. |
|
Type variable. |
|
Require physical-effect evidence before one trajectory segment starts. |
Engine-owned immutable planning snapshot for one invocation revision. |
embodichain.lab.sim.atomic_actions.plans#
Scene-bound planning result for one grounded atomic action invocation. |
|
|
Offline compilation result for a sequence of action invocations. |
Explicit physical-effect verification independent of symbolic state. |
|
|
Planner metadata retained for debugging and recovery decisions. |
Stable planning-failure classification used by recovery policy. |
|
Full-robot joint trajectory with per-environment timing metadata. |
|
|
Named half-open waypoint range inside an action trajectory. |
|
Normalize a scalar or batched success value to |
embodichain.lab.sim.atomic_actions.policies#
|
Policy for consuming a live dynamic collision world. |
Immutable motion-generation policy for one action invocation. |
|
Bounded local recovery policy used by the execution runtime. |
embodichain.lab.sim.atomic_actions.primitives#
|
Built-in action implementations instantiated once per action engine. |
embodichain.lab.sim.atomic_actions.requirements#
|
Capability for resolving batched inverse kinematics for an endpoint. |
|
Capability for planning and executing Cartesian-pose motion. |
Require selected slots to have pairwise-disjoint physical claims. |
|
Require selected endpoints within one participant to be disjoint. |
|
|
Capability for resolving forward kinematics for an endpoint. |
|
Capability for commanding a grasping end effector. |
|
Capability for resolving inverse kinematics for an endpoint. |
|
Capability for planning and executing joint-position motion. |
Complete robot-independent binding contract for one atomic skill. |
|
Capabilities and commands required from one slot-local endpoint. |
|
One skill-local participant selected as an indivisible resource unit. |
embodichain.lab.sim.atomic_actions.runner#
Outcome reported by a command transport or controller. |
|
Synchronous acknowledgement returned by a |
|
Auditable record of one controller operation and acknowledgement. |
|
Command-sink operation recorded by an execution runner. |
|
Controller boundary used by |
|
|
Synchronous verifier called on a fresh due-cycle observation. |
Clock abstraction used for deterministic and simulation scheduling. |
|
Connect an execution session to observation, controller, and time ports. |
|
Transport and scheduling policy for an |
|
|
Synchronous phase-aware held-object verifier for one due command cycle. |
Wall-clock implementation backed by |
|
Source of fresh planning contexts for feedback-driven execution. |
|
|
Synchronous verifier for one blocking trajectory-segment entry gate. |
Lifecycle status owned by an |
|
Result of one non-blocking execution-runner update. |
|
|
Optional observer called after every blocking runner-loop iteration. |
embodichain.lab.sim.atomic_actions.runtime#
|
Engine-scoped registry of planning services used by atomic actions. |
embodichain.lab.sim.atomic_actions.runtime_commands#
One transport-compatible payload addressed to one runtime target. |
|
Batched joint-position targets for the built-in robot transport. |
|
Synchronized endpoint commands for one batched runtime instant. |
|
Immutable-by-ownership payload submitted to one runtime transport. |
|
Ordered runtime command frames for one stable environment batch. |
embodichain.lab.sim.atomic_actions.scene#
|
Produce scene snapshots correlated with execution environments. |
embodichain.lab.sim.atomic_actions.sim_adapter#
|
Describe a locked articulation as one antipodal-graspable rigid object. |
|
Create an engine whose initial context observes selected rigid objects. |
|
Observe simulation rigid objects and maintain scene revisions. |
|
Material-pose thresholds used to advance scene revisions. |
Structural contract a scene provider requires of an observed entity. |
|
|
Callback that returns the latest scene snapshot for a simulation timestamp. |
Adapt a simulation robot to observation, command, and clock protocols. |
embodichain.lab.sim.atomic_actions.state#
|
Scene entity state addressable by a stable entity identifier. |
Observed or projected relation between an object and one manipulator. |
|
Complete side-effect-free input to |
|
Measured robot state used as the start of planning or replanning. |
|
Versioned scene state used to ground dynamic goals and obstacles. |
|
Symbolic task state, separate from measured robot state. |
Observed robot state, symbolic task state, and scene snapshots.
Classes:
|
Verified symbolic state for one named articulation joint. |
|
Observed or projected relation for an object held by two manipulators. |
|
Scene entity state addressable by a stable entity identifier. |
Observed or projected relation between an object and one manipulator. |
|
|
Live measured state for one scene articulation joint. |
Complete side-effect-free input to |
|
Measured robot state used as the start of planning or replanning. |
|
Versioned scene state used to ground dynamic goals and obstacles. |
|
Symbolic task state, separate from measured robot state. |
- class embodichain.lab.sim.atomic_actions.state.ArticulationJointState[source]
Verified symbolic state for one named articulation joint.
Methods:
__init__(position[, env_mask])Attributes:
env_maskRows for which the verified state is present.
positionJoint positions with shape
(J,)or(B, J).- __init__(position, env_mask=None)
-
env_mask:
Tensor|None Rows for which the verified state is present.
-
position:
Tensor Joint positions with shape
(J,)or(B, J).
- class embodichain.lab.sim.atomic_actions.state.CoordinatedHeldObjectState[source]
Observed or projected relation for an object held by two manipulators.
Methods:
__init__(semantics, left_object_to_eef, ...)- __init__(semantics, left_object_to_eef, right_object_to_eef, left_grasp_xpos, right_grasp_xpos, env_mask=None)
- class embodichain.lab.sim.atomic_actions.state.EntityState[source]
Scene entity state addressable by a stable entity identifier.
Methods:
__init__(pose[, confidence])- __init__(pose, confidence=1.0)
- class embodichain.lab.sim.atomic_actions.state.HeldObjectState[source]
Observed or projected relation between an object and one manipulator.
Methods:
__init__(semantics, object_to_eef, grasp_xpos)Attributes:
env_maskEnvironments in which the relation is active.
grasp_xposEnd-effector grasp pose.
object_to_eefObject-to-end-effector transform.
semanticsSemantics of the held object.
- __init__(semantics, object_to_eef, grasp_xpos, env_mask=None)
-
env_mask:
Tensor|None Environments in which the relation is active.
-
grasp_xpos:
Tensor End-effector grasp pose.
-
object_to_eef:
Tensor Object-to-end-effector transform.
-
semantics:
ObjectSemantics Semantics of the held object.
- class embodichain.lab.sim.atomic_actions.state.ObservedArticulationJointState[source]
Live measured state for one scene articulation joint.
Methods:
__init__(position[, valid_mask])snapshot()Return an independently owned observation value.
Attributes:
positionMeasured joint position with shape
(J,)or(B, J).valid_maskOptional row-validity mask for a batched observation.
- __init__(position, valid_mask=None)
-
position:
Tensor Measured joint position with shape
(J,)or(B, J).
- snapshot()[source]
Return an independently owned observation value.
- Return type:
ObservedArticulationJointState
-
valid_mask:
Tensor|None Optional row-validity mask for a batched observation.
- class embodichain.lab.sim.atomic_actions.state.PlanningContext[source]
Complete side-effect-free input to
AtomicAction.plan().Methods:
__init__(robot, task, scene, env_ids[, ...])get_articulation_joint_state(...)Return verified state for one canonical articulation joint.
get_coordinated_held_object(first_resource, ...)Return a coordinated held-object relation, if any.
get_held_object(resource)Return the object held by
resource, if any.project(*, qpos, task)Create the hypothetical context used to compile a following action.
require_control_dt()Return the explicit command period required for interpolation.
Attributes:
affordance_samplingOptional immutable Affordance sampling stream supplied by the host.
articulation_jointsVerified articulation-joint states.
batch_sizeNumber of environments in this planning request.
control_dtExplicit command period used by action-owned interpolation.
coordinated_held_objectsCoordinated held-object relations.
held_objectsSingle-resource held-object relations.
last_qposMeasured joint positions used as the planning start state.
- __init__(robot, task, scene, env_ids, control_dt=None, affordance_sampling=None)
-
affordance_sampling:
AffordanceSamplingContext|None Optional immutable Affordance sampling stream supplied by the host.
- property articulation_joints: Mapping[tuple[str, str], ArticulationJointState]
Verified articulation-joint states.
- property batch_size: int
Number of environments in this planning request.
-
control_dt:
float|None Explicit command period used by action-owned interpolation.
- property coordinated_held_objects: Mapping[tuple[str, str], CoordinatedHeldObjectState]
Coordinated held-object relations.
- get_articulation_joint_state(articulation_id, joint_id)[source]
Return verified state for one canonical articulation joint.
- Return type:
ArticulationJointState|None
- get_coordinated_held_object(first_resource, second_resource)[source]
Return a coordinated held-object relation, if any.
- Return type:
CoordinatedHeldObjectState|None
- get_held_object(resource)[source]
Return the object held by
resource, if any.- Return type:
HeldObjectState|None
- property held_objects: Mapping[str, HeldObjectState]
Single-resource held-object relations.
- property last_qpos: Tensor
Measured joint positions used as the planning start state.
- project(*, qpos, task)[source]
Create the hypothetical context used to compile a following action.
- Parameters:
qpos (
Tensor) – Projected terminal joint positions.task (
TaskState) – Task state after applying expected effects.
- Return type:
- Returns:
New context. No measured state or simulator state is mutated.
- require_control_dt()[source]
Return the explicit command period required for interpolation.
- Raises:
ValueError – If the caller did not provide
control_dt.- Return type:
float
- class embodichain.lab.sim.atomic_actions.state.RobotObservation[source]
Measured robot state used as the start of planning or replanning.
Methods:
__init__(timestamp, qpos, qvel[, qeffort, ...])with_qpos(qpos)Create a projected observation with a new position and zero velocity.
Attributes:
batch_sizeNumber of represented vectorized environments.
robot_dofNumber of robot joint-position columns.
- __init__(timestamp, qpos, qvel, qeffort=None, root_pose=None, root_twist=None)
- property batch_size: int
Number of represented vectorized environments.
- property robot_dof: int
Number of robot joint-position columns.
- with_qpos(qpos)[source]
Create a projected observation with a new position and zero velocity.
- Parameters:
qpos (
Tensor) – Projected joint positions with the same shape as this observation.- Return type:
- Returns:
New observation suitable for compiling the next action.
- class embodichain.lab.sim.atomic_actions.state.SceneSnapshot[source]
Versioned scene state used to ground dynamic goals and obstacles.
Methods:
__init__(timestamp, version[, entities, ...])collision_obstacle_poses(*, batch_size, ...)Return collision obstacle poses in planning batch order.
collision_world_revisions(batch_size)Expand the collision revision to one value per environment.
empty()Create an empty initial scene snapshot.
get_articulation_joint_state(...)Return an owned live joint observation for a canonical address.
Attributes:
articulation_jointsLive physical joint observations keyed by articulation and joint ID.
collision_entity_idsEntity IDs whose poses update a planner's dynamic collision world.
collision_world_revisionGlobal or per-environment collision-world revision.
- __init__(timestamp, version, entities=<factory>, collision_world_revision=0, collision_entity_ids=(), articulation_joints=<factory>)
-
articulation_joints:
Mapping[tuple[str,str],ObservedArticulationJointState] Live physical joint observations keyed by articulation and joint ID.
-
collision_entity_ids:
tuple[str,...] Entity IDs whose poses update a planner’s dynamic collision world.
- collision_obstacle_poses(*, batch_size, device, dtype)[source]
Return collision obstacle poses in planning batch order.
- Parameters:
batch_size (
int) – Number of planning environments.device (
device) – Planner tensor device.dtype (
dtype) – Planner tensor dtype.
- Return type:
Mapping[str,Tensor]- Returns:
Mapping from configured collision entity ID to
(B, 4, 4)pose.
-
collision_world_revision:
int|tuple[int,...] Global or per-environment collision-world revision.
- collision_world_revisions(batch_size)[source]
Expand the collision revision to one value per environment.
- Parameters:
batch_size (
int) – Number of environments represented by the planning context.- Return type:
tuple[int,...]- Returns:
Per-environment monotonic revision tuple.
- Raises:
ValueError – If an explicit revision tuple does not match the batch.
- classmethod empty()[source]
Create an empty initial scene snapshot.
- Return type:
- get_articulation_joint_state(articulation_id, joint_id)[source]
Return an owned live joint observation for a canonical address.
- Return type:
ObservedArticulationJointState|None
- class embodichain.lab.sim.atomic_actions.state.TaskState[source]
Symbolic task state, separate from measured robot state.
Methods:
__init__(batch_size, device[, held_objects, ...])empty(batch_size, device)Create an empty symbolic state.
exclusive_held_object_mask(resource)Return environments where only
resourceholds its object.get_articulation_joint_state(...)Return verified state for one canonical articulation joint.
get_coordinated_held_object(first_resource, ...)Return the relation for an ordered resource pair, if any.
get_held_object(resource)Return the object held by
resource, if any.held_object_mask(resource)Return environments where
resourceholds an object.Attributes:
articulation_jointsVerified articulation states keyed by canonical articulation and joint IDs.
batch_sizeNumber of vectorized environments represented by the state.
coordinated_held_objectsCoordinated relations keyed by ordered logical task-state resource pairs.
deviceDevice used by per-environment masks and relation tensors.
held_objectsSingle-manipulator held-object relations keyed by control resource.
- __init__(batch_size, device, held_objects=<factory>, coordinated_held_objects=<factory>, articulation_joints=<factory>)
-
articulation_joints:
Mapping[tuple[str,str],ArticulationJointState] Verified articulation states keyed by canonical articulation and joint IDs.
-
batch_size:
int Number of vectorized environments represented by the state.
-
coordinated_held_objects:
Mapping[tuple[str,str],CoordinatedHeldObjectState] Coordinated relations keyed by ordered logical task-state resource pairs.
-
device:
device|str Device used by per-environment masks and relation tensors.
- classmethod empty(batch_size, device)[source]
Create an empty symbolic state.
- Parameters:
batch_size (
int) – Number of represented environments.device (
device|str) – Tensor device used by the state.
- Return type:
- Returns:
Empty task state with explicit batch metadata.
- exclusive_held_object_mask(resource)[source]
Return environments where only
resourceholds its object.Object identity is established by the exact semantic record or by a shared non-null simulation entity. Labels and structural equality are deliberately ignored because distinct physical objects may look alike.
- Parameters:
resource (
str) – Manipulator control-resource name.- Return type:
Tensor- Returns:
Owned boolean mask with shape
(batch_size,).
- get_articulation_joint_state(articulation_id, joint_id)[source]
Return verified state for one canonical articulation joint.
- Return type:
ArticulationJointState|None
- get_coordinated_held_object(first_resource, second_resource)[source]
Return the relation for an ordered resource pair, if any.
- Return type:
CoordinatedHeldObjectState|None
- get_held_object(resource)[source]
Return the object held by
resource, if any.- Return type:
HeldObjectState|None
- held_object_mask(resource)[source]
Return environments where
resourceholds an object.- Parameters:
resource (
str) – Manipulator control-resource name.- Return type:
Tensor- Returns:
Owned boolean mask with shape
(batch_size,). Missing resources produce an all-false mask.
-
held_objects:
Mapping[str,HeldObjectState] Single-manipulator held-object relations keyed by control resource.
embodichain.lab.sim.atomic_actions.trajectory_ops#
|
Build exact Cartesian translation targets along one world-space axis. |
|
Convert batched joint targets into the planner's waypoint representation. |
|
Convert batched pose targets into the planner's waypoint representation. |
|
Interpolate hand joint positions between two semantic commands. |
|
Interpolate a joint path through one or more exact target waypoints. |
|
Validate and copy a joint target onto the planning device. |
|
Validate and copy an end-effector target onto the planning device. |
|
Split a sample budget into motion, hand, and motion segments. |
|
Retime and embed a controlled-joint plan into a full-robot trajectory. |
|
Translate batched poses by a world-frame offset. |
embodichain.lab.sim.atomic_actions.transports#
Route generic endpoint operations to exact registered transports. |
|
Backend that owns one kind of runtime endpoint command. |
embodichain.lab.sim.diff#
Public bridge from task-defined Newton kinematics and Warp tapes into PyTorch autograd. It does not advance the Newton dynamics solver.
|
Bridge one task-defined Newton kinematics step into PyTorch autograd. |
|
Open a Warp tape for expert Newton kinematics kernels. |
embodichain.lab.sim.diff.bridge#
|
Bridge one task-defined Newton kinematics step into PyTorch autograd. |
|
Open a Warp tape for expert Newton kinematics kernels. |
embodichain.lab.sim.cfg.source#
USD source configuration identifies a file and an optional exact prim inside
that file. Source selection is independent of runtime identity, placement and
parent/link attachment. Supply it through source on a visual, rigid-object
or articulation configuration. Existing mesh and URDF file inputs remain
available; each asset has one file owner.
Select a typed asset from a source USD stage. |
- class embodichain.lab.sim.cfg.source.UsdSourceCfg[source]#
Select a typed asset from a source USD stage.
Supply this as
sourceon a visual-object, rigid-object or articulation configuration. Runtime identity and placement belong to the containing configuration. This source does not bind an already imported scene entity.Methods:
__init__([file_path, source_prim_path])copy(**kwargs)Return a new object replacing specified fields with new values.
from_dict(data)Decode a source mapping, rejecting unknown source options.
replace(**kwargs)Return a new object replacing specified fields with new values.
to_dict()Convert an object into dictionary recursively.
validate([prefix])Check the validity of configclass object.
Attributes:
Source USD, USDA, USDC or USDZ file.
Exact absolute prim path in the source stage.
- __init__(file_path=<factory>, source_prim_path=<factory>)#
- copy(**kwargs)#
Return a new object replacing specified fields with new values.
This is especially useful for frozen classes. Example usage:
@configclass(frozen=True) class C: x: int y: int c = C(1, 2) c1 = c.replace(x=3) assert c1.x == 3 and c1.y == 2
- Parameters:
obj (
object) – The object to replace.**kwargs – The fields to replace and their new values.
- Return type:
object- Returns:
The new object.
-
file_path:
str# Source USD, USDA, USDC or USDZ file.
- classmethod from_dict(data)[source]#
Decode a source mapping, rejecting unknown source options.
- Parameters:
data (
Mapping[str,object]) – Source file and optional exact source prim selector.- Return type:
- Returns:
Source configuration; call
validate()after assembly.
- replace(**kwargs)#
Return a new object replacing specified fields with new values.
This is especially useful for frozen classes. Example usage:
@configclass(frozen=True) class C: x: int y: int c = C(1, 2) c1 = c.replace(x=3) assert c1.x == 3 and c1.y == 2
- Parameters:
obj (
object) – The object to replace.**kwargs – The fields to replace and their new values.
- Return type:
object- Returns:
The new object.
-
source_prim_path:
str|None# Exact absolute prim path in the source stage.
Omit only when the source contains a single candidate of the requested asset type. This is not a destination path, regex or parent/link binding.
- to_dict()#
Convert an object into dictionary recursively.
Note
Ignores all names starting with “__” (i.e. built-in methods).
- Parameters:
obj (
object) – An instance of a class to convert.- Raises:
ValueError – When input argument is not an object.
- Return type:
dict[str,Any]- Returns:
Converted dictionary mapping.
- validate(prefix='')#
Check the validity of configclass object.
This function checks if the object is a valid configclass object. A valid configclass object contains no MISSING entries.
- Parameters:
obj (
object) – The object to check.prefix (
str) – The prefix to add to the missing fields. Defaults to ‘’.
- Return type:
list[str]- Returns:
A list of missing fields.
- Raises:
TypeError – When the object is not a valid configuration object.
embodichain.lab.sim.cfg.visual_object#
Render-only geometry or a USD source, and initial visual state.
Configure a render-only object, without a rigid body or colliders. |
embodichain.lab.sim.diff.runtime#
|
Expose Newton model/state buffers required by kinematic environments. |
embodichain.lab.sim.objects.articulation#
Scene-batch data manager for articulations. |
|
Articulation represents a batch of articulations in the simulation. |
|
Backend-neutral kinematic description of one articulation joint. |
embodichain.lab.sim.objects.constraint#
Batch of fixed constraints linking two |
embodichain.lab.sim.objects.gizmo#
Native robot targets use DexSim’s controller with Newton IK by default.
Set GizmoCfg.ik_solver="embodichain" to reuse the robot control part’s
configured solver, including PinkSolver; Viser uses the same solver adapter.
embodichain.lab.sim.objects.rigid_object#
Planner-independent snapshot of one DexSim physical collision shape. |
|
Scene-batch data manager for dynamic or kinematic rigid bodies. |
|
RigidObject represents a batch of rigid body in the simulation. |
|
|
Configuration for a rigid body asset in the simulation. |
embodichain.lab.sim.objects.rigid_object_group#
Expose one flat Scene rigid-body batch as |
|
A two-dimensional view over rigid objects owned by DexSim Spawn. |
|
|
Configuration for a rigid object group asset in the simulation. |
embodichain.lab.sim.objects.robot#
|
Represents a group of controllable joints in a robot. |
A class representing a batch of robots in the simulation environment. |
embodichain.lab.sim.objects.visual_object#
Batched render-only objects provide pose, visibility and material-assignment operations without physical buffers or collision APIs.
A replicated visual asset with no rigid-body state or collision API. |
|
|
Configure a render-only object, without a rigid body or colliders. |
embodichain.lab.sim.physics#
Manager-level physics backend selection and lifecycle contracts for the Default and Newton implementations integrated through DexSim.
|
Abstract base class for a swappable physics backend. |
|
Default backend using DexSim's native GPU or CPU physics path. |
|
The Warp-based Newton physics backend integrated through DexSim. |
|
Construct the physics backend for |
embodichain.lab.sim.physics.base#
|
Abstract base class for a swappable physics backend. |
embodichain.lab.sim.physics.default#
|
Default backend using DexSim's native GPU or CPU physics path. |
embodichain.lab.sim.physics.newton#
|
The Warp-based Newton physics backend integrated through DexSim. |
embodichain.lab.sim.motion.planners.base_planner#
BasePlannerCfg(robot_uid: 'str' = <factory>, planner_type: 'str' = <factory>, sim_instance_id: 'int' = <factory>) |
|
|
Describe one planner's collision-world integration contract. |
|
PlanOptions() |
Base class for trajectory planners. |
|
|
Decorator (factory) that validates the |
embodichain.lab.sim.motion.planners.curobo.curobo_planner#
|
Auto-generation of the cuRobo robot YAML from the robot's URDF. |
|
Per-plan options for |
|
cuRobo V2 collision-aware motion-planning backend. |
|
Configuration for the cuRobo V2 planner backend. |
|
Static collision-world configuration for the cuRobo backend. |
embodichain.lab.sim.motion.planners.curobo.curobo_yaml#
|
Fit collision spheres to each robot link's mesh and write a cuRobo robot YAML. |
|
Build a mixed cuRobo scene from DexSim physical collision shapes. |
|
Show robot and world collision models in DexSim until Enter is pressed. |
|
Visualize a robot's live link meshes and cached collision spheres. |
|
Add a sampled cuRobo collision-world overlay to the DexSim scene. |
embodichain.lab.sim.motion.planners.neural_planner#
|
Neural motion planner based on an APG waypoint transformer policy. |
|
NeuralPlannerCfg(robot_uid: 'str' = <factory>, planner_type: 'str' = <factory>, sim_instance_id: 'int' = <factory>, onnx_model_path: 'str' = <factory>, control_part: 'str | None' = <factory>, max_steps: 'int' = <factory>, action_scale: 'float' = <factory>, num_arm_joints: 'int' = <factory>, num_waypoints: 'int' = <factory>, use_relative_obs: 'bool' = <factory>, canonicalize_quat_obs: 'bool' = <factory>, joint_periodic_features: 'bool' = <factory>, intermediate_orientation: 'bool' = <factory>, pos_eps: 'float' = <factory>, rot_eps: 'float' = <factory>, joint_eps: 'float' = <factory>, onnx_providers: 'list[str] | None' = <factory>, policy_frame_from_world: 'list[list[float]] | None' = <factory>, runtime_tcp_from_policy_tcp: 'list[list[float]] | None' = <factory>, dt: 'float' = <factory>, constraints: 'dict[str, float | list[float]] | None' = <factory>) |
|
NeuralPlanOptions(control_part: 'str | None' = <factory>, start_qpos: 'torch.Tensor | None' = <factory>, max_steps: 'int | None' = <factory>, waypoint_modalities: 'list[str] | None' = <factory>) |
embodichain.lab.sim.motion.planners.bezier#
Differentiable quadratic and quintic Bézier geometry, including
HolisticMotion-compatible waypoint blending and path-constraint projection.
Use BezierPath.parameter_at_arc_length(distance) to convert a scalar
time law’s geometric distances to polynomial parameters. Reuse those parameters
for evaluate, arc_tangent, and arc_curvature; normalized arc length
is generally different from the Bézier parameter. Lookup accuracy is controlled
by table_count independently of the output sample count.
|
Euclidean quadratic or quintic Bézier path value object. |
|
Integrate the Euclidean Bézier speed over |
|
Evaluate a Bézier derivative with respect to its normalized parameter. |
|
Evaluate quadratic or quintic Bézier control points at |
|
Sample a Bézier path and return |
- BezierPath.parameter_at_arc_length(distance, *, table_count=4097)[source]#
Convert geometric arc lengths to normalized polynomial parameters.
Reuse the returned parameters for positions, tangents, and curvature so they refer to the same points on the curve. A polyline lookup table approximates cumulative length; its resolution is independent of the number of requested distances. The table is rebuilt on each call to reflect changes to the underlying control points.
- Parameters:
distance (
Tensor) – Finite scalar, shared sample vector (N,), or per-path samples (…, N) whose batch dimensions broadcast with the control points. Values outside the path are clamped.table_count (
int) – Number of uniformly spaced polynomial parameters in the lookup table, at least two. Higher values improve accuracy.
- Return type:
Tensor- Returns:
Parameters in [0, 1] with broadcast batch and sample dimensions. A scalar distance omits the sample dimension. Stationary paths return zero parameters.
- Raises:
ValueError – If distances are non-finite or table_count is invalid.
embodichain.lab.sim.motion.planners.toppra_planner#
Time-optimal joint-path parameterization. The planner solves timing for
waypoint input; retime_joint_paths() applies the same parameterization to
paths another planner already produced, such as a closed-loop policy rollout
whose samples carry only nominal timing.
Rest-to-rest joint-path timing with differentiable CPU/CUDA Warp kernels. |
|
Configure the shared CPU/CUDA Warp time parameterizer. |
|
|
ToppraPlanOptions(constraints: 'dict' = <factory>, sample_method: 'TrajectorySampleMethod' = <factory>, sample_interval: 'float | int' = <factory>, *, control_part: 'str | None' = None) |
|
Re-parameterize already-planned joint paths under dynamic limits. |
embodichain.lab.sim.motion.planners.se3#
SE(3) screw interpolation and constrained Cartesian line trajectories with explicit twist, acceleration, jerk, and timing outputs.
|
Samples from a time-parameterized Cartesian line trajectory. |
|
Plan a constrained time-parameterized Cartesian line trajectory. |
embodichain.lab.sim.motion.planners.trapezoidal_planner#
Configure trapezoidal or Double-S trajectory generation. |
|
Plan batched linear joint paths with trapezoidal or Double-S timing. |
|
Configure the batched joint-space time-profile planner. |
embodichain.utils.warp.kinematics.trapezoidal_warp#
Warp-accelerated helpers construct scalar trapezoidal or Double-S motion profiles and compose their sampled path derivatives into batched joint-space trajectories.
|
Construct all scalar segment profiles in one Warp launch. |
|
Evaluate scalar profiles once per sample, then compose all joints. |
embodichain.lab.sim.motion.planners.utils#
Enumeration for different trajectory sampling methods. |
|
Enumeration for different robot parts to move. |
|
Enumeration for different types of movements. |
|
Data class representing the state for a motion plan (env-batched). |
|
Data class representing the result of a motion plan (env-batched). |
|
|
Normalize a scalar or batched success value to |
|
Calculate interpolation points for each segment with vectorized tensor ops. |
|
Interpolate between two poses using vectorized Slerp + linear translation. |
|
Batched pose interpolation. |
embodichain.lab.sim.robots.dual_arm#
Configuration for a dual-manipulator composed from a single-arm robot. |
|
|
Build a dual-arm cfg from a single-arm robot cfg. |
|
Resolve a mount config into left/right 4x4 transforms. |
embodichain.lab.sim.sensors.camera#
embodichain.lab.sim.sensors.contact_sensor#
Configuration for filtering contacts from an articulation's links. |
|
Sensor to get contacts from rigid bodies and articulation links. |
|
Configuration class for contact sensors. |
embodichain.lab.sim.sim_manager#
|
Path subclass for non-Windows systems. |
|
Path subclass for non-Windows systems. |
|
Path subclass for non-Windows systems. |
|
Path subclass for non-Windows systems. |
embodichain.lab.task_program.semantics.calls#
|
Represent a PEP 604 union type |
Pick up, transfer, and place an object with two robot resources. |
|
Pick one registered object using an optional explicit grasp affordance. |
|
Place a held object at exactly one semantic destination. |
|
|
Represent a PEP 604 union type |
Safe value payload for a catalog-registered semantic extension. |
|
Immutable discovery catalog separated from engine installation. |
|
Static catalog metadata for one semantic call kind. |
|
Base value contract shared by every declarative semantic call. |
|
Object-space pose expressed as position and an XYZW quaternion. |
|
|
Build the curated catalog for installed manipulation primitives. |
Immutable, robot-independent semantic call specifications.
Classes:
Pick up, transfer, and place an object with two robot resources. |
|
Pick one registered object using an optional explicit grasp affordance. |
|
Place a held object at exactly one semantic destination. |
|
Safe value payload for a catalog-registered semantic extension. |
|
Immutable discovery catalog separated from engine installation. |
|
Static catalog metadata for one semantic call kind. |
|
Base value contract shared by every declarative semantic call. |
|
Object-space pose expressed as position and an XYZW quaternion. |
Functions:
|
Build the curated catalog for installed manipulation primitives. |
- class embodichain.lab.task_program.semantics.calls.HandOver[source]
Pick up, transfer, and place an object with two robot resources.
- Parameters:
object (
SceneObjectRef) – Authoritative scene-object reference. The object must not already be held when the unified action starts.final_target (
SemanticPose|None) – Optional final object-space delivery pose.resources (
Mapping[str,str]) – Optional skill-local resource overrides. Select the second candidate with thedestinationslot when needed.
Methods:
__init__(object[, final_target, resources])- __init__(object, final_target=None, *, resources=<factory>)
- class embodichain.lab.task_program.semantics.calls.Pick[source]
Pick one registered object using an optional explicit grasp affordance.
- Parameters:
object (
SceneObjectRef) – Authoritative semantic object reference.grasp (
SceneAffordanceRef|None) – Optional explicit grasp affordance. Omission requests deterministic registry selection.resources (
Mapping[str,str]) – Optional skill-local resource overrides.
Methods:
__init__(object[, grasp, resources])- __init__(object, grasp=None, *, resources=<factory>)
- class embodichain.lab.task_program.semantics.calls.Place[source]
Place a held object at exactly one semantic destination.
- Parameters:
object (
SceneObjectRef) – Authoritative held-object reference.at (
SemanticPose|None) – Absolute object-space pose.on (
SceneObjectRef|SceneAffordanceRef|None) – Object or affordance supporting anonrelation.inside (
SceneObjectRef|SceneAffordanceRef|None) – Object or affordance supporting aninsiderelation.resources (
Mapping[str,str]) – Optional skill-local resource overrides.
Methods:
__init__(object[, at, on, inside, resources])- __init__(object, at=None, on=None, inside=None, *, resources=<factory>)
- class embodichain.lab.task_program.semantics.calls.RegisteredSemanticCall[source]
Safe value payload for a catalog-registered semantic extension.
- Parameters:
call_id (
str) – Stable extension identifier discovered in a semantic catalog.arguments (
Mapping[str,None|bool|int|float|str|SceneEntityRef|SemanticPose|tuple[None|bool|int|float|str|SceneEntityRef|SemanticPose|tuple[DeclarativeValue,...] |Mapping[str, DeclarativeValue],...] |Mapping[str,None|bool|int|float|str|SceneEntityRef|SemanticPose|tuple[DeclarativeValue,...] |Mapping[str, DeclarativeValue]]]) – Nested declarative data. Executable or live values are rejected at construction.resources (
Mapping[str,str]) – Optional skill-local resource overrides.
Methods:
__init__(call_id[, arguments, resources])Attributes:
semantic_idReturn the registered extension identifier.
- __init__(call_id, arguments=<factory>, *, resources=<factory>)
- property semantic_id: str
Return the registered extension identifier.
- class embodichain.lab.task_program.semantics.calls.SemanticCallCatalog[source]
Immutable discovery catalog separated from engine installation.
Methods:
__init__(descriptors)discover(call)Discover metadata without installing or executing an implementation.
with_descriptor(descriptor)Return a new catalog containing one additional descriptor.
Attributes:
descriptorsReturn immutable descriptors keyed by exact semantic ID.
- __init__(descriptors)[source]
- property descriptors: Mapping[str, SemanticCallDescriptor]
Return immutable descriptors keyed by exact semantic ID.
- discover(call)[source]
Discover metadata without installing or executing an implementation.
- Parameters:
call (
str|SemanticCallSpec) – Exact semantic ID or a call value.- Return type:
- Returns:
Matching immutable descriptor.
- Raises:
KeyError – If the exact call ID is unknown.
TypeError – If the call type disagrees with its descriptor.
- with_descriptor(descriptor)[source]
Return a new catalog containing one additional descriptor.
- Return type:
- class embodichain.lab.task_program.semantics.calls.SemanticCallDescriptor[source]
Static catalog metadata for one semantic call kind.
- Parameters:
call_id (
str) – Stable semantic call identifier.spec_type (
type[SemanticCallSpec]) – Exact public call value type.target_descriptor (
SkillDescriptor|None) – Exact atomic goal/options/resource contract. It is inferred and non-overridable for curated calls and required for registered extensions.
Methods:
__init__(call_id, spec_type[, target_descriptor])Attributes:
binding_contractReturn the resource contract from the canonical target descriptor.
skill_idReturn the atomic skill ID from the canonical target descriptor.
- __init__(call_id, spec_type, target_descriptor=None)
- property binding_contract: SkillBindingContract
Return the resource contract from the canonical target descriptor.
- property skill_id: str
Return the atomic skill ID from the canonical target descriptor.
- class embodichain.lab.task_program.semantics.calls.SemanticCallSpec[source]
Base value contract shared by every declarative semantic call.
- Parameters:
resources (
Mapping[str,str]) – Optional skill-local slot to robot-resource overrides.
Methods:
__init__(*[, resources])to_metadata()Return this semantic call as deterministic JSON-safe data.
Attributes:
semantic_idReturn the stable catalog identifier for this call.
- __init__(*, resources=<factory>)
- property semantic_id: str
Return the stable catalog identifier for this call.
- to_metadata()[source]
Return this semantic call as deterministic JSON-safe data.
- Return type:
dict[str,object]
- class embodichain.lab.task_program.semantics.calls.SemanticPose[source]
Object-space pose expressed as position and an XYZW quaternion.
The value owns normalized tensor snapshots and never exposes its internal tensors directly. A single pose or an environment batch is accepted.
- Parameters:
position (
Tensor|tuple[float,float,float] |list[float]) – Shape(3,)or(B, 3).quaternion_xyzw (
Tensor|tuple[float,float,float,float] |list[float]) – Shape(4,)or(B, 4). Finite, non-zero quaternions are normalized at construction.
Methods:
__init__(position, quaternion_xyzw)snapshot()Return an independently owned pose value.
to_matrix()Convert the semantic pose to a homogeneous transform.
to_metadata()Return the pose as deterministic JSON-safe semantic data.
Attributes:
batch_sizeReturn the explicit batch size, or
Nonefor one broadcast pose.positionReturn an independent position tensor.
quaternion_xyzwReturn an independent normalized quaternion tensor.
- __init__(position, quaternion_xyzw)[source]
- property batch_size: int | None
Return the explicit batch size, or
Nonefor one broadcast pose.
- property position: Tensor
Return an independent position tensor.
- property quaternion_xyzw: Tensor
Return an independent normalized quaternion tensor.
- snapshot()[source]
Return an independently owned pose value.
- Return type:
- to_matrix()[source]
Convert the semantic pose to a homogeneous transform.
- Return type:
Tensor- Returns:
Shape
(4, 4)for an unbatched pose or(B, 4, 4)for a batched pose.
- to_metadata()[source]
Return the pose as deterministic JSON-safe semantic data.
- Return type:
dict[str,object]
- embodichain.lab.task_program.semantics.calls.builtin_semantic_call_catalog()[source]
Build the curated catalog for installed manipulation primitives.
- Return type:
- Returns:
A fresh immutable catalog. Atomic implementations remain uninstalled; callers bind them to an engine through the separate runtime path.
embodichain.lab.task_program.semantics.integration#
Factory-owned call linked to one installed engine/profile combination. |
|
Provider-free static link result for one semantic call. |
|
|
Represent a PEP 604 union type |
Provider-free static scene declaration using canonical registry metadata. |
|
Immutable provider-free scene catalog used before simulation starts. |
|
Structured deterministic semantic-integration diagnostic. |
|
Static scene/profile/catalog declaration validated before execution. |
|
Raise one structured error at a static or live integration boundary. |
Two-phase static and live semantic integration validation.
Classes:
Factory-owned call linked to one installed engine/profile combination. |
|
Live-installed, still side-effect-free semantic integration link. |
|
Provider-free static link result for one semantic call. |
|
Provider-free static scene declaration using canonical registry metadata. |
|
Immutable provider-free scene catalog used before simulation starts. |
|
Structured deterministic semantic-integration diagnostic. |
|
Static scene/profile/catalog declaration validated before execution. |
Exceptions:
Raise one structured error at a static or live integration boundary. |
- class embodichain.lab.task_program.semantics.integration.BoundSemanticCall[source]
Factory-owned call linked to one installed engine/profile combination.
Methods:
__init__(*args, **kwargs)Reject construction outside
BoundSemanticIntegration.Attributes:
robot_profileReturn the exact bound profile that produced this call.
- __init__(*args, **kwargs)[source]
Reject construction outside
BoundSemanticIntegration.
- property robot_profile: BoundRobotSkillProfile
Return the exact bound profile that produced this call.
- class embodichain.lab.task_program.semantics.integration.BoundSemanticIntegration[source]
Live-installed, still side-effect-free semantic integration link.
Methods:
__init__(*, manifest, scene_registry, ...)link_call(call, *[, path])Resolve one call against exact installed skills, resources, and preset.
Attributes:
engineReturn the engine whose used call targets are validated at link time.
manifestReturn the static integration declaration.
robot_profileReturn the validated live robot profile.
scene_registryReturn the validated live scene registry.
- __init__(*, manifest, scene_registry, robot_profile, engine)[source]
- property engine: AtomicActionEngine
Return the engine whose used call targets are validated at link time.
- link_call(call, *, path=('call',))[source]
Resolve one call against exact installed skills, resources, and preset.
- Return type:
- property manifest: SemanticIntegrationManifest
Return the static integration declaration.
- property robot_profile: BoundRobotSkillProfile
Return the validated live robot profile.
- property scene_registry: SceneRegistry
Return the validated live scene registry.
- class embodichain.lab.task_program.semantics.integration.LinkedSemanticCall[source]
Provider-free static link result for one semantic call.
Methods:
__init__(call, descriptor, preset_id[, ...])- __init__(call, descriptor, preset_id, affordances=<factory>)
- class embodichain.lab.task_program.semantics.integration.SceneEntityManifest[source]
Provider-free static scene declaration using canonical registry metadata.
Methods:
__init__(ref[, aliases, parent, ...])from_metadata(metadata)Copy one canonical provider-free registry metadata value.
- __init__(ref, aliases=(), parent=None, native_name=None, dynamics=SceneDynamics.UNKNOWN, collision_role=SceneCollisionRole.NONE, semantic_type=None, affordance_capabilities=frozenset({}), default_affordances=<factory>, affordance_payload_type=None, affordance_revision=None, relative_pose=None, pose_source_revision=None)
- classmethod from_metadata(metadata)[source]
Copy one canonical provider-free registry metadata value.
- Return type:
- class embodichain.lab.task_program.semantics.integration.SceneManifest[source]
Immutable provider-free scene catalog used before simulation starts.
Methods:
__init__([entries, collision_world_mode])from_registry(registry)Project a live registry without observing any dynamic provider.
lookup(identifier, *[, expected_type, path])Return one static entry after canonical typed resolution.
resolve(identifier, *[, expected_type, path])Resolve one canonical or alias reference with pathful diagnostics.
resolve_affordance(parent, *, capability[, ...])Resolve one affordance using the same strict rule as SceneRegistry.
validate_registry(registry, *[, path])Require a live registry to match this provider-free declaration.
Attributes:
entriesReturn immutable provider-free entries in declaration order.
- __init__(entries=(), *, collision_world_mode=None)[source]
- property entries: tuple[SceneEntityManifest, ...]
Return immutable provider-free entries in declaration order.
- classmethod from_registry(registry)[source]
Project a live registry without observing any dynamic provider.
- Return type:
- lookup(identifier, *, expected_type=<class 'embodichain.lab.task_program.semantics.scene.SceneEntityRef'>, path=())[source]
Return one static entry after canonical typed resolution.
- Return type:
- resolve(identifier, *, expected_type=<class 'embodichain.lab.task_program.semantics.scene.SceneEntityRef'>, path=())[source]
Resolve one canonical or alias reference with pathful diagnostics.
- Return type:
TypeVar(RefT, bound=SceneEntityRef)
- resolve_affordance(parent, *, capability, explicit=None, path=())[source]
Resolve one affordance using the same strict rule as SceneRegistry.
- Return type:
- validate_registry(registry, *, path=('integration', 'scene_registry'))[source]
Require a live registry to match this provider-free declaration.
- Return type:
None
- class embodichain.lab.task_program.semantics.integration.SemanticDiagnostic[source]
Structured deterministic semantic-integration diagnostic.
- Parameters:
code (
str) – Stable machine-readable failure code.path (
tuple[str|int,...]) – Complete configuration or program path.message (
str) – Human-readable explanation.candidates (
tuple[str,...]) – Canonical candidate IDs, sorted when applicable.
Methods:
__init__(code, path, message[, candidates])Attributes:
rendered_pathReturn the path in dotted/indexed notation.
- __init__(code, path, message, candidates=())
- property rendered_path: str
Return the path in dotted/indexed notation.
- class embodichain.lab.task_program.semantics.integration.SemanticIntegrationManifest[source]
Static scene/profile/catalog declaration validated before execution.
- Parameters:
scene (
SceneManifest) – Provider-free scene manifest.robot_profile (
RobotSkillProfile) – Declarative robot resource/profile snapshot.call_catalog (
SemanticCallCatalog) – Discoverable semantic call descriptors.runtime_preset (
str|None) – Optional integration-wide policy preset override.
Methods:
__init__(scene, robot_profile, call_catalog)bind(scene_registry, engine, *[, ...])Validate live scene and robot bindings without observing or planning.
link_call(call, *[, path])Resolve static refs, affordances, and declared resource structure.
- __init__(scene, robot_profile, call_catalog, runtime_preset=None)
- bind(scene_registry, engine, *, endpoint_adapters=None)[source]
Validate live scene and robot bindings without observing or planning.
- Return type:
- link_call(call, *, path=('call',))[source]
Resolve static refs, affordances, and declared resource structure.
This method never observes scene providers, constructs an engine, samples a grasp, or runs a planner.
- Return type:
embodichain.lab.task_program.semantics.effects#
Backend-neutral semantic-effect contracts, evidence, and monitors.
Classes:
Symbolic articulation-joint postcondition. |
|
Raw contact or constraint-state condition. |
|
Raw per-row contact or constraint-state observations. |
|
Raw boolean evidence channel. |
|
Stateful conjunction monitor over typed physical evidence clauses. |
|
Strict hysteresis policy for typed pose/binary/scalar/joint clauses. |
|
Factory for the built-in typed-clause monitor. |
|
Provider-neutral robot control-part observation address. |
|
Typed removal of one coordinated held-object relation. |
|
Immutable observation address, deliberately separate from command targets. |
|
Versioned provider route plus one immutable observation address. |
|
Per-row outcome for one physical state expectation. |
|
Stateful verifier owned by one grounded semantic call. |
|
Uncorrelated aggregate and per-expectation monitor decision. |
|
Versioned constructor for independent semantic-effect monitors. |
|
Versioned, declarative reference to an effect-monitor factory. |
|
Immutable exact-ID/revision registry of monitor factories. |
|
Expected symbolic held-object state at an effect boundary. |
|
Typed individual held-object postcondition. |
|
Raw articulation/robot joint-position target condition. |
|
Raw per-row joint position/velocity observations. |
|
Object-to-endpoint pose condition with monitor-owned tolerances. |
|
Raw object-to-endpoint transform observations. |
|
Expected relationship to a grounded pose baseline. |
|
Raw force/wrench magnitude condition with monitor-owned thresholds. |
|
Raw per-row force or wrench-magnitude observations. |
|
Raw scalar physical evidence channel. |
|
Expected high/low magnitude band for scalar evidence. |
|
Trace-level semantic effect category; clause types define behavior. |
|
Grounded typed physical clauses and symbolic postconditions for one call. |
|
Typed mapping domains owned by |
|
Provider-free key for one exact symbolic |
Data:
|
Stable ID of the built-in typed-clause monitor. |
|
Exact behavior/configuration revision of the built-in monitor. |
|
Stable provider ID used by generic control-part evidence addresses. |
|
Exact contract revision of control-part evidence addresses. |
|
Recursively immutable, non-executable monitor configuration value. |
- class embodichain.lab.task_program.semantics.effects.ArticulationJointStateExpectation[source]
Symbolic articulation-joint postcondition.
Methods:
__init__(expectation_id, articulation_id, ...)snapshot()Return an independently owned articulation expectation.
- __init__(expectation_id, articulation_id, joint_id, target_position)
- snapshot()[source]
Return an independently owned articulation expectation.
- Return type:
- class embodichain.lab.task_program.semantics.effects.BinaryEffectClause[source]
Raw contact or constraint-state condition.
Methods:
__init__(clause_id, expectation_id, source, ...)snapshot()Return an independently owned binary clause.
- __init__(clause_id, expectation_id, source, evidence_kind, expected)
- snapshot()[source]
Return an independently owned binary clause.
- Return type:
- class embodichain.lab.task_program.semantics.effects.BinaryEffectEvidenceBatch[source]
Raw per-row contact or constraint-state observations.
Methods:
__init__(evidence_id, evidence_kind, values, ...)snapshot()Return an independently owned evidence batch.
to_metadata()Return raw binary evidence as JSON-safe trace metadata.
- __init__(evidence_id, evidence_kind, values, valid, acquisition_errors, timestamp, env_ids, observation_revision)
- snapshot()[source]
Return an independently owned evidence batch.
- Return type:
- to_metadata()[source]
Return raw binary evidence as JSON-safe trace metadata.
- Return type:
dict[str,object]
- class embodichain.lab.task_program.semantics.effects.BinaryEvidenceKind[source]
Raw boolean evidence channel.
Methods:
__new__(value)- __new__(value)
- embodichain.lab.task_program.semantics.effects.COMPOSITE_EFFECT_MONITOR_ID = 'builtin.composite_effect'
Stable ID of the built-in typed-clause monitor.
- embodichain.lab.task_program.semantics.effects.COMPOSITE_EFFECT_MONITOR_REVISION = '1'
Exact behavior/configuration revision of the built-in monitor.
- embodichain.lab.task_program.semantics.effects.CONTROL_PART_EVIDENCE_PROVIDER_ID = 'builtin.control_part'
Stable provider ID used by generic control-part evidence addresses.
- embodichain.lab.task_program.semantics.effects.CONTROL_PART_EVIDENCE_PROVIDER_REVISION = '1'
Exact contract revision of control-part evidence addresses.
- class embodichain.lab.task_program.semantics.effects.CompositeEffectMonitor[source]
Stateful conjunction monitor over typed physical evidence clauses.
Methods:
__init__(spec, cfg)observe(request, evidence)Update typed-clause hysteresis and decide current request rows.
Attributes:
resolved_paramsReturn all effective typed-clause thresholds, including defaults.
specReturn an independently owned effect contract.
- __init__(spec, cfg)[source]
- observe(request, evidence)[source]
Update typed-clause hysteresis and decide current request rows.
- Return type:
- property resolved_params: Mapping[str, None | bool | int | float | str | tuple[None | bool | int | float | str | tuple[EffectMonitorParam, ...] | Mapping[str, EffectMonitorParam], ...] | Mapping[str, None | bool | int | float | str | tuple[EffectMonitorParam, ...] | Mapping[str, EffectMonitorParam]]]
Return all effective typed-clause thresholds, including defaults.
- property spec: SemanticEffectSpec
Return an independently owned effect contract.
- class embodichain.lab.task_program.semantics.effects.CompositeEffectMonitorCfg[source]
Strict hysteresis policy for typed pose/binary/scalar/joint clauses.
Methods:
__init__([attached_translation_threshold, ...])from_params(params)Decode strict declarative factory parameters.
to_metadata()Return every resolved hysteresis threshold as JSON-safe data.
- __init__(attached_translation_threshold=0.02, attached_rotation_threshold=0.2, detached_translation_threshold=0.05, detached_rotation_threshold=0.5, force_absent_threshold=0.2, force_present_threshold=1.0, joint_success_tolerance=0.02, joint_failure_tolerance=0.1, consecutive_samples=2)
- classmethod from_params(params)[source]
Decode strict declarative factory parameters.
- Return type:
- to_metadata()[source]
Return every resolved hysteresis threshold as JSON-safe data.
- Return type:
dict[str,object]
- class embodichain.lab.task_program.semantics.effects.CompositeEffectMonitorFactory[source]
Factory for the built-in typed-clause monitor.
Methods:
create(spec, ref)Create one independently stateful typed-clause monitor.
validate_ref(ref)Validate exact built-in selection and typed thresholds.
- create(spec, ref)[source]
Create one independently stateful typed-clause monitor.
- Return type:
- validate_ref(ref)[source]
Validate exact built-in selection and typed thresholds.
- Return type:
None
- class embodichain.lab.task_program.semantics.effects.ControlPartEvidenceAddress[source]
Provider-neutral robot control-part observation address.
Methods:
__init__(control_part, channel)Attributes:
address_fingerprintReturn the channel-scoped control-part observation address.
- __init__(control_part, channel)
- property address_fingerprint: Hashable
Return the channel-scoped control-part observation address.
- class embodichain.lab.task_program.semantics.effects.CoordinatedHeldObjectCleanupExpectation[source]
Typed removal of one coordinated held-object relation.
Methods:
__init__(expectation_id, task_state_keys)snapshot()Return an independently constructed cleanup expectation.
- __init__(expectation_id, task_state_keys)
- snapshot()[source]
Return an independently constructed cleanup expectation.
- Return type:
- class embodichain.lab.task_program.semantics.effects.EffectEvidenceAddress[source]
Immutable observation address, deliberately separate from command targets.
Attributes:
address_fingerprintReturn a stable, hashable physical observation address.
Methods:
snapshot()Return an independently owned address of the exact same type.
- abstract property address_fingerprint: Hashable
Return a stable, hashable physical observation address.
- snapshot()[source]
Return an independently owned address of the exact same type.
- Return type:
- class embodichain.lab.task_program.semantics.effects.EffectEvidenceSourceRef[source]
Versioned provider route plus one immutable observation address.
Methods:
__init__(provider_id, revision, address)snapshot()Return an independently owned source reference.
to_metadata()Return the versioned physical observation address as JSON-safe data.
Attributes:
source_fingerprintReturn the provider-scoped source address fingerprint.
- __init__(provider_id, revision, address)
- snapshot()[source]
Return an independently owned source reference.
- Return type:
- property source_fingerprint: Hashable
Return the provider-scoped source address fingerprint.
- to_metadata()[source]
Return the versioned physical observation address as JSON-safe data.
- Return type:
dict[str,object]
- class embodichain.lab.task_program.semantics.effects.EffectExpectationDecision[source]
Per-row outcome for one physical state expectation.
Rows absent from both
satisfied_maskandcontradicted_maskremain unresolved.inverse_satisfied_maskis deliberately stronger than contradiction: it requires every clause in the expectation group to have reached its explicit inverse band for the configured consecutive-sample window. This distinction lets failure reconciliation retain a relation only from complete inverse evidence rather than from one contradictory clause.Methods:
__init__(expectation_id, satisfied_mask, ...)snapshot()Return an independently owned expectation outcome.
- __init__(expectation_id, satisfied_mask, contradicted_mask, inverse_satisfied_mask)
- snapshot()[source]
Return an independently owned expectation outcome.
- Return type:
- class embodichain.lab.task_program.semantics.effects.EffectMonitor[source]
Stateful verifier owned by one grounded semantic call.
Methods:
observe(request, evidence)Consume one synchronized raw observation and decide requested rows.
Attributes:
resolved_paramsReturn all resolved monitor thresholds for trace metadata.
specReturn an independently owned effect contract.
- abstract observe(request, evidence)[source]
Consume one synchronized raw observation and decide requested rows.
- Return type:
- abstract property resolved_params: Mapping[str, None | bool | int | float | str | tuple[None | bool | int | float | str | tuple[EffectMonitorParam, ...] | Mapping[str, EffectMonitorParam], ...] | Mapping[str, None | bool | int | float | str | tuple[EffectMonitorParam, ...] | Mapping[str, EffectMonitorParam]]]
Return all resolved monitor thresholds for trace metadata.
- abstract property spec: SemanticEffectSpec
Return an independently owned effect contract.
- class embodichain.lab.task_program.semantics.effects.EffectMonitorDecision[source]
Uncorrelated aggregate and per-expectation monitor decision.
When
expectation_decisionsis non-empty, the aggregate masks are authoritative reductions of that current observation: success is the conjunction of every satisfied mask and failure is the union of every contradicted mask. This prevents callers from combining expectation outcomes observed on different ticks.Methods:
__init__(success_mask, failure_mask[, ...])- __init__(success_mask, failure_mask, expectation_decisions=())
- class embodichain.lab.task_program.semantics.effects.EffectMonitorFactory[source]
Versioned constructor for independent semantic-effect monitors.
Methods:
create(spec, ref)Create one independent monitor for
specandref.validate_ref(ref)Validate one reference without providers or state creation.
- abstract create(spec, ref)[source]
Create one independent monitor for
specandref.- Return type:
- abstract validate_ref(ref)[source]
Validate one reference without providers or state creation.
- Return type:
None
- embodichain.lab.task_program.semantics.effects.EffectMonitorParam: TypeAlias = None | bool | int | float | str | tuple['EffectMonitorParam', ...] | collections.abc.Mapping[str, 'EffectMonitorParam']
Recursively immutable, non-executable monitor configuration value.
- class embodichain.lab.task_program.semantics.effects.EffectMonitorRef[source]
Versioned, declarative reference to an effect-monitor factory.
Methods:
__init__(monitor_id, revision[, params])snapshot()Return an independently owned declarative reference.
to_metadata()Return a deterministic JSON-safe monitor selection.
- __init__(monitor_id, revision, params=<factory>)
- snapshot()[source]
Return an independently owned declarative reference.
- Return type:
- to_metadata()[source]
Return a deterministic JSON-safe monitor selection.
- Return type:
dict[str,object]
- class embodichain.lab.task_program.semantics.effects.EffectMonitorRegistry[source]
Immutable exact-ID/revision registry of monitor factories.
Methods:
__init__([factories])create(spec, ref)Create one independent monitor through exact factory lookup.
resolve(ref)Resolve the exact factory named by a declarative reference.
validate_ref(ref)Validate a reference provider-free through its exact factory.
Attributes:
factoriesReturn the immutable exact-key factory mapping.
- __init__(factories=())[source]
- create(spec, ref)[source]
Create one independent monitor through exact factory lookup.
- Return type:
- property factories: Mapping[tuple[str, str], EffectMonitorFactory]
Return the immutable exact-key factory mapping.
- resolve(ref)[source]
Resolve the exact factory named by a declarative reference.
- Return type:
- validate_ref(ref)[source]
Validate a reference provider-free through its exact factory.
- Return type:
None
- class embodichain.lab.task_program.semantics.effects.HeldObjectRelation[source]
Expected symbolic held-object state at an effect boundary.
Methods:
__new__(value)- __new__(value)
- class embodichain.lab.task_program.semantics.effects.HeldObjectStateExpectation[source]
Typed individual held-object postcondition.
Methods:
__init__(expectation_id, relation, ...)snapshot()Return an independently constructed state expectation.
- __init__(expectation_id, relation, object_id, slot_id, resource_id, task_state_key)
- snapshot()[source]
Return an independently constructed state expectation.
- Return type:
- class embodichain.lab.task_program.semantics.effects.JointStateEffectClause[source]
Raw articulation/robot joint-position target condition.
Methods:
__init__(clause_id, expectation_id, source, ...)snapshot()Return an independently owned joint-state clause.
- __init__(clause_id, expectation_id, source, target_position)
- snapshot()[source]
Return an independently owned joint-state clause.
- Return type:
- class embodichain.lab.task_program.semantics.effects.JointStateEvidenceBatch[source]
Raw per-row joint position/velocity observations.
Methods:
__init__(evidence_id, positions, velocities, ...)snapshot()Return an independently owned evidence batch.
to_metadata()Return raw joint-state evidence as JSON-safe trace metadata.
- __init__(evidence_id, positions, velocities, valid, acquisition_errors, timestamp, env_ids, observation_revision)
- snapshot()[source]
Return an independently owned evidence batch.
- Return type:
- to_metadata()[source]
Return raw joint-state evidence as JSON-safe trace metadata.
- Return type:
dict[str,object]
- class embodichain.lab.task_program.semantics.effects.PoseRelationClause[source]
Object-to-endpoint pose condition with monitor-owned tolerances.
Methods:
__init__(clause_id, expectation_id, source, ...)snapshot()Return an independently owned pose clause.
- __init__(clause_id, expectation_id, source, expectation, baseline_object_to_endpoint=None)
- snapshot()[source]
Return an independently owned pose clause.
- Return type:
- class embodichain.lab.task_program.semantics.effects.PoseRelationEvidenceBatch[source]
Raw object-to-endpoint transform observations.
Methods:
__init__(evidence_id, object_to_endpoint, ...)snapshot()Return an independently owned evidence batch.
to_metadata()Return raw pose evidence as JSON-safe trace metadata.
- __init__(evidence_id, object_to_endpoint, valid, acquisition_errors, timestamp, env_ids, observation_revision)
- snapshot()[source]
Return an independently owned evidence batch.
- Return type:
- to_metadata()[source]
Return raw pose evidence as JSON-safe trace metadata.
- Return type:
dict[str,object]
- class embodichain.lab.task_program.semantics.effects.PoseRelationExpectation[source]
Expected relationship to a grounded pose baseline.
Methods:
__new__(value)- __new__(value)
- class embodichain.lab.task_program.semantics.effects.ScalarEffectClause[source]
Raw force/wrench magnitude condition with monitor-owned thresholds.
Methods:
__init__(clause_id, expectation_id, source, ...)snapshot()Return an independently owned scalar clause.
- __init__(clause_id, expectation_id, source, evidence_kind, expectation)
- snapshot()[source]
Return an independently owned scalar clause.
- Return type:
- class embodichain.lab.task_program.semantics.effects.ScalarEffectEvidenceBatch[source]
Raw per-row force or wrench-magnitude observations.
Methods:
__init__(evidence_id, evidence_kind, values, ...)snapshot()Return an independently owned evidence batch.
to_metadata()Return raw scalar evidence as JSON-safe trace metadata.
- __init__(evidence_id, evidence_kind, values, valid, acquisition_errors, timestamp, env_ids, observation_revision)
- snapshot()[source]
Return an independently owned evidence batch.
- Return type:
- to_metadata()[source]
Return raw scalar evidence as JSON-safe trace metadata.
- Return type:
dict[str,object]
- class embodichain.lab.task_program.semantics.effects.ScalarEvidenceKind[source]
Raw scalar physical evidence channel.
Methods:
__new__(value)- __new__(value)
- class embodichain.lab.task_program.semantics.effects.ScalarExpectation[source]
Expected high/low magnitude band for scalar evidence.
Methods:
__new__(value)- __new__(value)
- class embodichain.lab.task_program.semantics.effects.SemanticEffectKind[source]
Trace-level semantic effect category; clause types define behavior.
Methods:
__new__(value)- __new__(value)
- class embodichain.lab.task_program.semantics.effects.SemanticEffectSpec[source]
Grounded typed physical clauses and symbolic postconditions for one call.
Methods:
__init__(semantic_id, effect_kind, skill_id, ...)snapshot()Return an independently owned grounded effect contract.
state_expectation(expectation_id)Return an owned state expectation by effect-local ID.
to_metadata()Return this grounded effect contract as deterministic JSON-safe data.
validate_request(request)Validate execution identity and typed symbolic postconditions.
- __init__(semantic_id, effect_kind, skill_id, invocation_id, invocation_revision, env_ids, state_expectations, clauses)
- snapshot()[source]
Return an independently owned grounded effect contract.
- Return type:
- state_expectation(expectation_id)[source]
Return an owned state expectation by effect-local ID.
- to_metadata()[source]
Return this grounded effect contract as deterministic JSON-safe data.
- Return type:
dict[str,object]
- validate_request(request)[source]
Validate execution identity and typed symbolic postconditions.
- Return type:
None
- class embodichain.lab.task_program.semantics.effects.SymbolicStateDomain[source]
Typed mapping domains owned by
TaskState.Methods:
__new__(value)- __new__(value)
- class embodichain.lab.task_program.semantics.effects.SymbolicStateKey[source]
Provider-free key for one exact symbolic
TaskStatewrite.The domain makes otherwise similar string and pair addresses impossible to conflate during static parallel analysis. This contract intentionally describes only exact keys; dynamic or opaque effects must not manufacture a guessed key.
Methods:
__init__(domain, address)articulation_joint(articulation_id, joint_id)Build one articulation-joint mapping key.
coordinated_held_object(...)Build one ordered coordinated-held-object mapping key.
held_object(task_state_key)Build one held-object mapping key.
Attributes:
renderedReturn a deterministic domain-qualified diagnostic form.
- __init__(domain, address)
- classmethod articulation_joint(articulation_id, joint_id)[source]
Build one articulation-joint mapping key.
- Return type:
- classmethod coordinated_held_object(first_task_state_key, second_task_state_key)[source]
Build one ordered coordinated-held-object mapping key.
- Return type:
- classmethod held_object(task_state_key)[source]
Build one held-object mapping key.
- Return type:
- property rendered: str
Return a deterministic domain-qualified diagnostic form.
embodichain.lab.task_program.semantics.evidence#
Backend-neutral acquisition ports for typed semantic-effect evidence.
Classes:
Query for one raw contact or constraint boolean. |
|
Callback-owned raw binary values with explicit row validity. |
|
Minimal simulation robot API used by the built-in provider. |
|
Built-in simulation acquisition for control-part evidence addresses. |
|
One synchronized acquisition tick shared by all effect clauses. |
|
Dispatch and normalize a synchronized observation for one effect spec. |
|
Versioned backend port that acquires a group of exact-source queries. |
|
Immutable exact-ID/revision registry of live evidence providers. |
|
Typed request for the raw evidence of exactly one effect clause. |
|
Query for current joint positions and optional velocities. |
|
Callback-owned raw joint state with explicit row validity. |
|
Query for an object's pose relative to a resource endpoint. |
|
Query for one raw force or wrench magnitude. |
|
Callback-owned raw scalar values with explicit row validity. |
|
Typed adapter for scene-articulation joint-state observations. |
Data:
|
Closed set of typed clause queries accepted by evidence providers. |
Functions:
|
Build one independently owned typed query per effect clause. |
- class embodichain.lab.task_program.semantics.evidence.BinaryEffectEvidenceQuery[source]
Query for one raw contact or constraint boolean.
Methods:
__init__(clause, _expectation)snapshot()Return an independently owned binary query.
Attributes:
evidence_idReturn the source clause ID.
expectationReturn an owned correlated expectation.
sourceReturn an owned source route.
- __init__(clause, _expectation)
- property evidence_id: str
Return the source clause ID.
- property expectation: HeldObjectStateExpectation | CoordinatedHeldObjectCleanupExpectation | ArticulationJointStateExpectation
Return an owned correlated expectation.
- snapshot()[source]
Return an independently owned binary query.
- Return type:
- property source: EffectEvidenceSourceRef
Return an owned source route.
- class embodichain.lab.task_program.semantics.evidence.BinaryEffectObservation[source]
Callback-owned raw binary values with explicit row validity.
Methods:
__init__(values[, valid, acquisition_errors])- __init__(values, valid=None, acquisition_errors=())
- class embodichain.lab.task_program.semantics.evidence.ControlPartRobotEvidenceSource[source]
Minimal simulation robot API used by the built-in provider.
Methods:
__init__(*args, **kwargs)compute_fk(qpos[, name, env_ids, to_matrix])Return the selected endpoint pose for current joint positions.
get_qpos([name, target])Return current robot or control-part joint positions.
get_qvel([name, target])Return current robot or control-part joint velocities.
- __init__(*args, **kwargs)
- compute_fk(qpos, name=None, env_ids=None, to_matrix=False)[source]
Return the selected endpoint pose for current joint positions.
- Return type:
Tensor
- get_qpos(name=None, target=False)[source]
Return current robot or control-part joint positions.
- Return type:
Tensor
- get_qvel(name=None, target=False)[source]
Return current robot or control-part joint velocities.
- Return type:
Tensor
- class embodichain.lab.task_program.semantics.evidence.ControlPartSimulationEvidenceProvider[source]
Built-in simulation acquisition for control-part evidence addresses.
Pose evidence is computed as
inverse(object_pose) @ endpoint_posefrom one scene snapshot andRobot.compute_fk(). Joint evidence reads the control part’s measured positions and velocities. Contact, constraint, force, and wrench signals are backend-specific, so callers inject raw observation callbacks. An omitted callback yields explicit invalid rows; the effect monitor can then retry until its normal deadline.Methods:
__init__(robot, *[, scene_provider, ...])collect(queries, context)Acquire all supplied control-part queries at one observation tick.
- __init__(robot, *, scene_provider=None, contact_observer=None, constraint_observer=None, force_observer=None, wrench_observer=None)[source]
- collect(queries, context)[source]
Acquire all supplied control-part queries at one observation tick.
- Return type:
Mapping[str,PoseRelationEvidenceBatch|BinaryEffectEvidenceBatch|ScalarEffectEvidenceBatch|JointStateEvidenceBatch]
- class embodichain.lab.task_program.semantics.evidence.EffectEvidenceCollectionContext[source]
One synchronized acquisition tick shared by all effect clauses.
- Parameters:
timestamp (
float) – Non-negative backend observation time.observation_revision (
int) – Monotonic revision chosen by the runtime port.env_ids (
Tensor) – Ordered environment correlation IDs to observe.
Methods:
__init__(timestamp, observation_revision, ...)snapshot()Return an independently owned acquisition context.
- __init__(timestamp, observation_revision, env_ids)
- snapshot()[source]
Return an independently owned acquisition context.
- Return type:
- class embodichain.lab.task_program.semantics.evidence.EffectEvidenceCollector[source]
Dispatch and normalize a synchronized observation for one effect spec.
Methods:
__init__(registry)collect(spec, *, timestamp, observation_revision)Acquire and strictly synchronize evidence for every effect clause.
Attributes:
registryReturn the immutable provider registry.
- __init__(registry)[source]
- collect(spec, *, timestamp, observation_revision, env_ids=None)[source]
Acquire and strictly synchronize evidence for every effect clause.
- Parameters:
spec (
SemanticEffectSpec) – Grounded semantic effect contract.timestamp (
float) – Backend observation time for this acquisition tick.observation_revision (
int) – Runtime-owned observation revision.env_ids (
Tensor|None) – Optional ordered subset ofspec.env_ids. Acquisition failures must remain present as rows withvalid=False.
- Return type:
Mapping[str,PoseRelationEvidenceBatch|BinaryEffectEvidenceBatch|ScalarEffectEvidenceBatch|JointStateEvidenceBatch]- Returns:
Immutable mapping keyed exactly by effect clause ID.
- property registry: EffectEvidenceProviderRegistry
Return the immutable provider registry.
- class embodichain.lab.task_program.semantics.evidence.EffectEvidenceProvider[source]
Versioned backend port that acquires a group of exact-source queries.
Methods:
collect(queries, context)Acquire one synchronized batch for every supplied query.
- abstract collect(queries, context)[source]
Acquire one synchronized batch for every supplied query.
- Return type:
Mapping[str,PoseRelationEvidenceBatch|BinaryEffectEvidenceBatch|ScalarEffectEvidenceBatch|JointStateEvidenceBatch]
- class embodichain.lab.task_program.semantics.evidence.EffectEvidenceProviderRegistry[source]
Immutable exact-ID/revision registry of live evidence providers.
Methods:
__init__([providers])resolve(source)Resolve the exact provider selected by
source.Attributes:
providersReturn the immutable exact-key provider mapping.
- __init__(providers=())[source]
- property providers: Mapping[tuple[str, str], EffectEvidenceProvider]
Return the immutable exact-key provider mapping.
- resolve(source)[source]
Resolve the exact provider selected by
source.- Parameters:
source (
EffectEvidenceSourceRef) – Versioned evidence route from one effect clause.- Return type:
- Returns:
Registered provider with the exact ID and revision.
- Raises:
KeyError – If no exact provider version is installed.
- class embodichain.lab.task_program.semantics.evidence.EffectEvidenceQuery[source]
Typed request for the raw evidence of exactly one effect clause.
Attributes:
evidence_idReturn the clause-local evidence identifier.
expectationReturn an owned symbolic expectation related to this query.
sourceReturn an owned exact provider route and physical address.
Methods:
snapshot()Return an independently owned query of the exact same type.
- abstract property evidence_id: str
Return the clause-local evidence identifier.
- abstract property expectation: HeldObjectStateExpectation | CoordinatedHeldObjectCleanupExpectation | ArticulationJointStateExpectation
Return an owned symbolic expectation related to this query.
- abstract snapshot()[source]
Return an independently owned query of the exact same type.
- Return type:
- abstract property source: EffectEvidenceSourceRef
Return an owned exact provider route and physical address.
- embodichain.lab.task_program.semantics.evidence.EffectEvidenceQueryValue: TypeAlias = embodichain.lab.task_program.semantics.evidence.PoseRelationEvidenceQuery | embodichain.lab.task_program.semantics.evidence.BinaryEffectEvidenceQuery | embodichain.lab.task_program.semantics.evidence.ScalarEffectEvidenceQuery | embodichain.lab.task_program.semantics.evidence.JointStateEvidenceQuery
Closed set of typed clause queries accepted by evidence providers.
- class embodichain.lab.task_program.semantics.evidence.JointStateEvidenceQuery[source]
Query for current joint positions and optional velocities.
Methods:
__init__(clause, _expectation)snapshot()Return an independently owned joint-state query.
Attributes:
evidence_idReturn the source clause ID.
expectationReturn an owned correlated expectation.
sourceReturn an owned source route.
- __init__(clause, _expectation)
- property evidence_id: str
Return the source clause ID.
- property expectation: HeldObjectStateExpectation | CoordinatedHeldObjectCleanupExpectation | ArticulationJointStateExpectation
Return an owned correlated expectation.
- snapshot()[source]
Return an independently owned joint-state query.
- Return type:
- property source: EffectEvidenceSourceRef
Return an owned source route.
- class embodichain.lab.task_program.semantics.evidence.JointStateObservation[source]
Callback-owned raw joint state with explicit row validity.
Methods:
__init__(positions[, velocities, valid, ...])- __init__(positions, velocities=None, valid=None, acquisition_errors=())
- class embodichain.lab.task_program.semantics.evidence.PoseRelationEvidenceQuery[source]
Query for an object’s pose relative to a resource endpoint.
Methods:
__init__(clause, _expectation)snapshot()Return an independently owned pose query.
Attributes:
evidence_idReturn the source clause ID.
expectationReturn an owned correlated expectation.
sourceReturn an owned source route.
- __init__(clause, _expectation)
- property evidence_id: str
Return the source clause ID.
- property expectation: HeldObjectStateExpectation | CoordinatedHeldObjectCleanupExpectation | ArticulationJointStateExpectation
Return an owned correlated expectation.
- snapshot()[source]
Return an independently owned pose query.
- Return type:
- property source: EffectEvidenceSourceRef
Return an owned source route.
- class embodichain.lab.task_program.semantics.evidence.ScalarEffectEvidenceQuery[source]
Query for one raw force or wrench magnitude.
Methods:
__init__(clause, _expectation)snapshot()Return an independently owned scalar query.
Attributes:
evidence_idReturn the source clause ID.
expectationReturn an owned correlated expectation.
sourceReturn an owned source route.
- __init__(clause, _expectation)
- property evidence_id: str
Return the source clause ID.
- property expectation: HeldObjectStateExpectation | CoordinatedHeldObjectCleanupExpectation | ArticulationJointStateExpectation
Return an owned correlated expectation.
- snapshot()[source]
Return an independently owned scalar query.
- Return type:
- property source: EffectEvidenceSourceRef
Return an owned source route.
- class embodichain.lab.task_program.semantics.evidence.ScalarEffectObservation[source]
Callback-owned raw scalar values with explicit row validity.
Methods:
__init__(values[, valid, acquisition_errors])- __init__(values, valid=None, acquisition_errors=())
- class embodichain.lab.task_program.semantics.evidence.SceneArticulationEvidenceProvider[source]
Typed adapter for scene-articulation joint-state observations.
Integrations inject either a direct observer or a
SceneProviderwhose snapshot containsObservedArticulationJointStatevalues. The adapter never discovers live simulator objects from an environment. Repeated clauses share one synchronized snapshot and one sample per exact physical address.Methods:
__init__([observer, scene_provider])collect(queries, context)Collect synchronized joint state for exact scene addresses.
- __init__(observer=None, *, scene_provider=None)[source]
- collect(queries, context)[source]
Collect synchronized joint state for exact scene addresses.
- Return type:
Mapping[str,PoseRelationEvidenceBatch|BinaryEffectEvidenceBatch|ScalarEffectEvidenceBatch|JointStateEvidenceBatch]
- embodichain.lab.task_program.semantics.evidence.build_effect_evidence_queries(spec)[source]
Build one independently owned typed query per effect clause.
- Parameters:
spec (
SemanticEffectSpec) – Grounded semantic effect contract.- Return type:
tuple[PoseRelationEvidenceQuery|BinaryEffectEvidenceQuery|ScalarEffectEvidenceQuery|JointStateEvidenceQuery,...]- Returns:
Queries in the contract’s deterministic clause order.
embodichain.lab.task_program.semantics.profiles#
Raised when multiple assignments remain without a complete default. |
|
Robot- and engine-validated view of a |
|
One named execution endpoint backed by a robot control part. |
|
Resolve joint-backed |
|
Authority used to advance semantic state after command completion. |
|
Adapter-produced runtime destination and claim metadata for one endpoint. |
|
Raised when a robot skill profile disagrees with its engine or robot. |
|
Extensible execution endpoint in a robot resource graph. |
|
Resolve one endpoint kind without coupling profiles to its controller. |
|
Robot-validated resource with concrete endpoint joint IDs and claim. |
|
Endpoint declaration resolved by one registered adapter. |
|
One generic resource assignment lowered for the current action core. |
|
Generic mapping from skill-local slots to robot resource IDs. |
|
Physical leaf and joint claim used for deterministic conflict checks. |
|
Generic leaf or composite resource in one robot's resource DAG. |
|
Reusable declarative skill integration for one robot embodiment. |
|
Policies and typed semantic-call option templates. |
|
Raised when no robot-resource assignment can satisfy a skill. |
|
Bound workflow-level recovery for curated semantic effect failures. |
embodichain.lab.task_program.semantics.scene#
Raised when compatible affordances lack one explicitly scoped default. |
|
|
Capability for an affordance usable by object pickup or handover. |
|
Capability for an affordance that defines an |
|
Capability for an affordance that defines an |
Stateful scene provider derived from an immutable registry. |
|
Reference to one registered interaction affordance. |
|
Reference to one articulation registered in the semantic scene. |
|
How an entity participates in the planner collision world. |
|
Batch-sharing policy for a dynamic planner collision world. |
|
Physical mobility classification owned by a scene registration. |
|
Typed reference to one authoritative scene-registry entity. |
|
Provider-free semantic metadata projected from one registration. |
|
Immutable integration metadata for one authoritative scene entity. |
|
Observe one registered entity for an ordered environment batch. |
|
Provide one entity's planner-facing collision geometry descriptor. |
|
Reference to one registered articulation link. |
|
Reference to one object registered in the semantic scene. |
|
Immutable authoritative catalog of semantic scene entities. |
|
Raised when a parent has no affordance for a required capability. |
Authoritative scene identity and registration value contracts.
Exceptions:
Raised when compatible affordances lack one explicitly scoped default. |
|
Raised when a parent has no affordance for a required capability. |
Classes:
Canonical scene articulation and joint observation address. |
|
Typed target frame for placing an object's origin inside a container. |
|
Stateful scene provider derived from an immutable registry. |
|
Reference to one registered interaction affordance. |
|
Observe canonical joints for one registered scene articulation. |
|
Reference to one articulation registered in the semantic scene. |
|
How an entity participates in the planner collision world. |
|
Batch-sharing policy for a dynamic planner collision world. |
|
Physical mobility classification owned by a scene registration. |
|
Provider-free semantic metadata projected from one registration. |
|
Typed reference to one authoritative scene-registry entity. |
|
Immutable integration metadata for one authoritative scene entity. |
|
Observe one registered entity for an ordered environment batch. |
|
Provide one entity's planner-facing collision geometry descriptor. |
|
Reference to one registered articulation link. |
|
Reference to one object registered in the semantic scene. |
|
Immutable authoritative catalog of semantic scene entities. |
|
Typed target frame for placing an object's origin on a support surface. |
Data:
|
Capability for an affordance usable by object pickup or handover. |
|
Schema revision for built-in support/container object-target frames. |
|
Capability for an affordance that defines an |
|
Capability for an affordance that defines an |
|
Stable route for explicitly injected articulation-joint observations. |
|
Exact contract revision for articulation-joint evidence addresses. |
- exception embodichain.lab.task_program.semantics.scene.AmbiguousSceneAffordanceError[source]
Raised when compatible affordances lack one explicitly scoped default.
- class embodichain.lab.task_program.semantics.scene.ArticulationJointEvidenceAddress[source]
Canonical scene articulation and joint observation address.
Methods:
__init__(articulation_id, joint_id)Attributes:
address_fingerprintReturn the exact provider-independent joint address.
- __init__(articulation_id, joint_id)
- property address_fingerprint: Hashable
Return the exact provider-independent joint address.
- class embodichain.lab.task_program.semantics.scene.ContainerAffordance[source]
Typed target frame for placing an object’s origin inside a container.
The registered affordance pose is the desired object pose, expressed relative to its parent scene entity. The optional confidence threshold is enforced whenever that late-bound target pose is resolved.
- Parameters:
minimum_confidence (
float) – Minimum confidence accepted while resolving the late-bound target pose.
Methods:
__init__([object_label, custom_config, ...])Attributes:
custom_configUser-defined configuration payload.
- __init__(object_label='', custom_config=<factory>, minimum_confidence=0.0)
-
custom_config:
dict[str,Any] User-defined configuration payload.
- embodichain.lab.task_program.semantics.scene.GRASP_AFFORDANCE_CAPABILITY = 'affordance.grasp'
Capability for an affordance usable by object pickup or handover.
- embodichain.lab.task_program.semantics.scene.PLACEMENT_TARGET_AFFORDANCE_REVISION = '1'
Schema revision for built-in support/container object-target frames.
- embodichain.lab.task_program.semantics.scene.PLACE_IN_AFFORDANCE_CAPABILITY = 'affordance.place.in'
Capability for an affordance that defines an
insideplacement relation.
- embodichain.lab.task_program.semantics.scene.PLACE_ON_AFFORDANCE_CAPABILITY = 'affordance.place.on'
Capability for an affordance that defines an
onplacement relation.
- class embodichain.lab.task_program.semantics.scene.RegistrySceneProvider[source]
Stateful scene provider derived from an immutable registry.
Instances are created by
SceneRegistry.make_scene_provider(); each instance owns its revision counters and material-pose baselines.- Parameters:
registry (
SceneRegistry) – Immutable catalog that owns entity registrations.translation_threshold (
float) – Accumulated translation needed to publish a material scene change.rotation_threshold (
float) – Accumulated rotation needed to publish a material scene change.batch_size (
int|None) – Optional fixed execution batch size. Factory-created planning providers bind this value before their first observation.
Methods:
__init__(registry, *, translation_threshold, ...)snapshot(*, timestamp, env_ids)Observe all canonical entities and advance material revisions.
Attributes:
collision_world_modeReturn the configured or first-snapshot-resolved collision mode.
- __init__(registry, *, translation_threshold, rotation_threshold, batch_size=None)[source]
- property collision_world_mode: SceneCollisionWorldMode | None
Return the configured or first-snapshot-resolved collision mode.
- snapshot(*, timestamp, env_ids)[source]
Observe all canonical entities and advance material revisions.
- Parameters:
timestamp (
float) – Non-negative monotonic observation timestamp.env_ids (
Tensor) – Stable ordered correlation IDs for every environment row.
- Return type:
- Returns:
An immutable snapshot keyed only by canonical registry IDs.
- embodichain.lab.task_program.semantics.scene.SCENE_ARTICULATION_EVIDENCE_PROVIDER_ID = 'builtin.scene_articulation'
Stable route for explicitly injected articulation-joint observations.
- embodichain.lab.task_program.semantics.scene.SCENE_ARTICULATION_EVIDENCE_PROVIDER_REVISION = '1'
Exact contract revision for articulation-joint evidence addresses.
- class embodichain.lab.task_program.semantics.scene.SceneAffordanceRef[source]
Reference to one registered interaction affordance.
Methods:
__init__(entity_id)- __init__(entity_id)
- class embodichain.lab.task_program.semantics.scene.SceneArticulationJointStateProvider[source]
Observe canonical joints for one registered scene articulation.
Methods:
__init__(*args, **kwargs)observe_joints(*, timestamp, env_ids)Return live joint observations whose rows follow
env_ids.- __init__(*args, **kwargs)
- observe_joints(*, timestamp, env_ids)[source]
Return live joint observations whose rows follow
env_ids.- Return type:
Mapping[str,ObservedArticulationJointState]
- class embodichain.lab.task_program.semantics.scene.SceneArticulationRef[source]
Reference to one articulation registered in the semantic scene.
Methods:
__init__(entity_id)- __init__(entity_id)
- class embodichain.lab.task_program.semantics.scene.SceneCollisionRole[source]
How an entity participates in the planner collision world.
Methods:
__new__(value)- __new__(value)
- class embodichain.lab.task_program.semantics.scene.SceneCollisionWorldMode[source]
Batch-sharing policy for a dynamic planner collision world.
Methods:
__new__(value)- __new__(value)
- class embodichain.lab.task_program.semantics.scene.SceneDynamics[source]
Physical mobility classification owned by a scene registration.
Methods:
__new__(value)- __new__(value)
- class embodichain.lab.task_program.semantics.scene.SceneEntityMetadata[source]
Provider-free semantic metadata projected from one registration.
- Parameters:
ref (
SceneEntityRef) – Canonical typed entity reference.aliases (
tuple[str,...]) – Boundary aliases, compared as an order-independent set.parent (
SceneEntityRef|None) – Canonical parent for links and affordances.native_name (
str|None) – Backend-local child name.dynamics (
SceneDynamics) – Physical mobility classification.collision_role (
SceneCollisionRole) – Planner collision classification.semantic_type (
str|None) – Optional application semantic type.affordance_capabilities (
frozenset[str]) – Open capabilities of an affordance.default_affordances (
Mapping[str,SceneAffordanceRef]) – Capability-scoped direct-child defaults.affordance_payload_type (
type[Affordance] |None) – Exact registered affordance value type.affordance_revision (
str|None) – Integrator-owned payload revision or fingerprint.relative_pose (
tuple[float,...] |None) – Flattened parent-relative 4x4 pose, when declared.pose_source_revision (
str|None) – Optional integrator-owned fingerprint of a provider-backed pose declaration, independent of affordance schema.
Methods:
__init__(ref[, aliases, parent, ...])from_registration(registration)Project semantic metadata without copying a live payload/provider.
- __init__(ref, aliases=(), parent=None, native_name=None, dynamics=SceneDynamics.UNKNOWN, collision_role=SceneCollisionRole.NONE, semantic_type=None, affordance_capabilities=frozenset({}), default_affordances=<factory>, affordance_payload_type=None, affordance_revision=None, relative_pose=None, pose_source_revision=None)
- classmethod from_registration(registration)[source]
Project semantic metadata without copying a live payload/provider.
- Return type:
- class embodichain.lab.task_program.semantics.scene.SceneEntityRef[source]
Typed reference to one authoritative scene-registry entity.
- Parameters:
entity_id (
str) – Globally stable canonical registry identifier.
Methods:
__init__(entity_id)Attributes:
entity_idGlobally stable authoritative registry identifier.
- __init__(entity_id)
-
entity_id:
str Globally stable authoritative registry identifier.
- class embodichain.lab.task_program.semantics.scene.SceneEntityRegistration[source]
Immutable integration metadata for one authoritative scene entity.
Parent relationships, simulator-native names, pose sources, geometry, and affordances belong to the registry registration rather than the lightweight reference copied into semantic calls.
- Parameters:
ref (
SceneEntityRef) – Canonical typed reference.state_provider (
SceneEntityStateProvider|None) – Optional dynamic pose/confidence source.joint_state_provider (
SceneArticulationJointStateProvider|None) – Optional live articulation-joint source.aliases (
tuple[str,...]) – External names normalized at the registry boundary.parent (
SceneEntityRef|None) – Canonical parent for a link or affordance.native_name (
str|None) – Backend-local member name underparent.dynamics (
SceneDynamics) – Physical mobility classification.geometry_provider (
SceneGeometryProvider|None) – Planner-facing collision geometry source.collision_role (
SceneCollisionRole) – Static, dynamic, or no planner collision role.semantic_type (
str|None) – Optional application semantic type.affordance (
Affordance|None) – Affordance value for an affordance registration.affordance_capabilities (
frozenset[str]) – Open semantic operations supported by an affordance registration.default_affordances (
Mapping[str,SceneAffordanceRef]) – Capability-to-child mapping owned by a parent object, articulation, or link registration.affordance_revision (
str|None) – Stable integrator-owned revision or fingerprint for capability-bearing affordance payload data.relative_pose (
Tensor|None) – Optional parent-relative affordance transform.pose_source_revision (
str|None) – Optional integrator-owned fingerprint of the explicit state provider’s pose declaration. Requiresstate_providerand stays separate from the affordance payload schema revision.
Methods:
__init__(ref[, state_provider, aliases, ...])Attributes:
affordanceAffordance value owned by a
SceneAffordanceRefregistration.affordance_capabilitiesOpen semantic capabilities declared by an affordance registration.
affordance_revisionStable payload revision required by capability-bearing affordances.
aliasesExternal names normalized once at the registry boundary.
collision_roleStatic/dynamic planner-obstacle role, or
none.default_affordancesCapability-scoped child affordances selected when multiple are valid.
dynamicsStatic, kinematic, dynamic, or unknown mobility classification.
geometry_providerCollision geometry source required for planner collision roles.
joint_state_providerExplicit live joint source for an articulation registration.
native_nameBackend-local link or affordance name under
parent.parentCanonical parent reference for a link or affordance.
pose_source_revisionIntegrator-owned fingerprint of the provider-backed pose declaration.
refCanonical typed reference owned by the registry.
relative_poseOptional parent-relative pose when no explicit state provider exists.
semantic_typeOptional application semantic type such as
containerortool.state_providerExplicit dynamic pose/confidence source.
- __init__(ref, state_provider=None, aliases=(), parent=None, native_name=None, dynamics=SceneDynamics.UNKNOWN, geometry_provider=None, collision_role=SceneCollisionRole.NONE, semantic_type=None, affordance=None, affordance_capabilities=frozenset({}), default_affordances=<factory>, affordance_revision=None, relative_pose=None, joint_state_provider=None, pose_source_revision=None)
-
affordance:
Affordance|None Affordance value owned by a
SceneAffordanceRefregistration.
-
affordance_capabilities:
frozenset[str] Open semantic capabilities declared by an affordance registration.
-
affordance_revision:
str|None Stable payload revision required by capability-bearing affordances.
-
aliases:
tuple[str,...] External names normalized once at the registry boundary.
-
collision_role:
SceneCollisionRole Static/dynamic planner-obstacle role, or
none.
-
default_affordances:
Mapping[str,SceneAffordanceRef] Capability-scoped child affordances selected when multiple are valid.
-
dynamics:
SceneDynamics Static, kinematic, dynamic, or unknown mobility classification.
-
geometry_provider:
SceneGeometryProvider|None Collision geometry source required for planner collision roles.
-
joint_state_provider:
SceneArticulationJointStateProvider|None Explicit live joint source for an articulation registration.
-
native_name:
str|None Backend-local link or affordance name under
parent.
-
parent:
SceneEntityRef|None Canonical parent reference for a link or affordance.
-
pose_source_revision:
str|None Integrator-owned fingerprint of the provider-backed pose declaration.
-
ref:
SceneEntityRef Canonical typed reference owned by the registry.
-
relative_pose:
Tensor|None Optional parent-relative pose when no explicit state provider exists.
-
semantic_type:
str|None Optional application semantic type such as
containerortool.
-
state_provider:
SceneEntityStateProvider|None Explicit dynamic pose/confidence source.
- class embodichain.lab.task_program.semantics.scene.SceneEntityStateProvider[source]
Observe one registered entity for an ordered environment batch.
Methods:
__init__(*args, **kwargs)observe(*, timestamp, env_ids)Return the entity state whose rows follow
env_ids.- __init__(*args, **kwargs)
- observe(*, timestamp, env_ids)[source]
Return the entity state whose rows follow
env_ids.- Parameters:
timestamp (
float) – Observation timestamp supplied by the integration.env_ids (
Tensor) – Stable ordered environment correlation IDs.
- Return type:
EntityState- Returns:
Current pose and confidence for the registered entity.
- class embodichain.lab.task_program.semantics.scene.SceneGeometryProvider[source]
Provide one entity’s planner-facing collision geometry descriptor.
Methods:
__init__(*args, **kwargs)get_geometry()Return the planner-facing geometry descriptor.
- __init__(*args, **kwargs)
- get_geometry()[source]
Return the planner-facing geometry descriptor.
- Return type:
object- Returns:
Backend-consumable geometry or a live simulation entity.
- class embodichain.lab.task_program.semantics.scene.SceneLinkRef[source]
Reference to one registered articulation link.
Methods:
__init__(entity_id)- __init__(entity_id)
- class embodichain.lab.task_program.semantics.scene.SceneObjectRef[source]
Reference to one object registered in the semantic scene.
Methods:
__init__(entity_id)- __init__(entity_id)
- class embodichain.lab.task_program.semantics.scene.SceneRegistry[source]
Immutable authoritative catalog of semantic scene entities.
Canonical identifiers occupy one flat, globally unique namespace. Aliases are accepted only at lookup and integration boundaries and always resolve to a canonical typed reference before they leave the registry.
- Parameters:
registrations (
Iterable[SceneEntityRegistration]) – Complete scene registrations. The iterable is copied and cannot be extended after construction.collision_world_mode (
SceneCollisionWorldMode|None) – Explicit dynamic-collision batch policy. It may be omitted for a single environment, which resolves toshared. A multi-environment dynamic world must select a mode explicitly.
Methods:
__init__([registrations, collision_world_mode])affordances(parent, *, capability)Return compatible direct-child affordances without selecting one.
collision_geometry_by_id([role])Materialize planner geometry under canonical registry IDs.
from_simulation(simulation, *[, ...])Opt explicitly selected simulation entities into a registry.
lookup(identifier, *[, expected_type])Return an owned registration after canonical typed resolution.
make_planning_scene_provider(...[, ...])Create a provider after complete planner/registry validation.
make_scene_provider(*[, ...])Create an independent provider without planner cross-validation.
object_semantics(object_ref, *, affordance)Build one owned atomic-action semantic snapshot.
resolve(identifier, *[, expected_type])Resolve a canonical ID or alias to a typed canonical reference.
resolve_affordance(parent, *, capability[, ...])Select one compatible affordance with strict scoped-default rules.
resolve_collision_world_mode(*, batch_size)Resolve the configured collision mode for an execution batch.
validate_collision_integration(...[, ...])Validate registry/planner agreement before dynamic planning.
Attributes:
aliasesReturn the immutable alias-to-canonical-ID index.
collision_world_entity_idsReturn every canonical ID represented in the planner world.
dynamic_collision_entity_idsReturn canonical IDs whose planner poses update dynamically.
entity_metadataReturn provider-free metadata without copying affordance payloads.
entity_refsReturn canonical typed references in registration order.
registrationsReturn structurally independent registration values.
static_collision_entity_idsReturn canonical IDs baked into the static planner world.
- __init__(registrations=(), *, collision_world_mode=None)[source]
- affordances(parent, *, capability)[source]
Return compatible direct-child affordances without selecting one.
- Parameters:
parent (
str|SceneEntityRef) – Canonical ID, alias, or typed parent reference.capability (
str) – Required open affordance capability.
- Return type:
tuple[SceneAffordanceRef,...]- Returns:
Compatible canonical references sorted by canonical ID.
- property aliases: Mapping[str, str]
Return the immutable alias-to-canonical-ID index.
- collision_geometry_by_id(role=None)[source]
Materialize planner geometry under canonical registry IDs.
- Parameters:
role (
SceneCollisionRole|None) – Optional exact collision-role filter. Without a filter, all static and dynamic collision registrations are included. Registrations whose role isSceneCollisionRole.NONEnever enter the planner collision world.- Return type:
Mapping[str,object]- Returns:
Fresh immutable canonical-ID-to-geometry mapping.
- property collision_world_entity_ids: tuple[str, ...]
Return every canonical ID represented in the planner world.
- property dynamic_collision_entity_ids: tuple[str, ...]
Return canonical IDs whose planner poses update dynamically.
- property entity_metadata: tuple[SceneEntityMetadata, ...]
Return provider-free metadata without copying affordance payloads.
- property entity_refs: tuple[SceneEntityRef, ...]
Return canonical typed references in registration order.
- classmethod from_simulation(simulation, *, rigid_objects=None, articulation_objects=None, articulations=None, collision_roles=None, geometry_providers=None, collision_world_mode=None)[source]
Opt explicitly selected simulation entities into a registry.
rigid_objects,articulation_objects, andarticulationsmap authoritative registry IDs to simulation UIDs. Articulation objects use a native articulation for root-pose observation while publishing aSceneObjectRefwithout joint state. UIDs become aliases automatically; unlisted simulation entities are never imported. Collision participation defaults toSceneCollisionRole.NONE.- Parameters:
simulation (
SimulationManager) – Simulation manager used only for explicit UID lookup.rigid_objects (
Mapping[str,str] |None) – Canonical object IDs mapped to simulation UIDs.articulation_objects (
Mapping[str,str] |None) – Canonical object IDs backed by articulation simulation UIDs.articulations (
Mapping[str,str] |None) – Canonical articulation IDs mapped to simulation UIDs.collision_roles (
Mapping[str,SceneCollisionRole] |None) – Optional collision roles keyed by canonical ID.geometry_providers (
Mapping[str,SceneGeometryProvider] |None) – Optional geometry overrides keyed by canonical ID. Selected rigid objects otherwise expose their live handles.collision_world_mode (
SceneCollisionWorldMode|None) – Optional dynamic collision batch-sharing mode.
- Return type:
- Returns:
Immutable registry containing only the explicitly selected entities.
- lookup(identifier, *, expected_type=<class 'embodichain.lab.task_program.semantics.scene.SceneEntityRef'>)[source]
Return an owned registration after canonical typed resolution.
- Parameters:
identifier (
str|SceneEntityRef) – Canonical ID, alias, or typed canonical reference.expected_type (
type[TypeVar(RefT, bound= SceneEntityRef)]) – Required reference class.
- Return type:
- Returns:
A structurally independent copy of the matching registration.
- make_planning_scene_provider(motion_generator, *, batch_size, translation_threshold=0.0001, rotation_threshold=0.001)[source]
Create a provider after complete planner/registry validation.
- Parameters:
motion_generator (
MotionGenerator) – Motion generator that will consume dynamic poses.batch_size (
int) – Number of execution environments.translation_threshold (
float) – Accumulated translation needed to publish a material scene change.rotation_threshold (
float) – Accumulated rotation needed to publish a material scene change.
- Return type:
- Returns:
A new independently stateful, planner-validated scene provider.
- make_scene_provider(*, translation_threshold=0.0001, rotation_threshold=0.001, batch_size=None)[source]
Create an independent provider without planner cross-validation.
This factory is intended for perception and direct-core consumers. The canonical planning path must use
make_planning_scene_provider()so planner IDs, capabilities, and collision-world mode cannot drift.- Parameters:
translation_threshold (
float) – Accumulated translation needed to publish a material scene change.rotation_threshold (
float) – Accumulated rotation needed to publish a material scene change.batch_size (
int|None) – Optional fixed integration batch size. Supplying it validates the collision-world mode immediately and binds the provider to that row count.
- Return type:
- Returns:
A new provider with independent revisions and published baselines.
- object_semantics(object_ref, *, affordance)[source]
Build one owned atomic-action semantic snapshot.
- Parameters:
object_ref (
str|SceneObjectRef) – Canonical object ID, alias, or typed reference.affordance (
str|SceneAffordanceRef) – Registered direct-child affordance for the object.
- Return type:
- Returns:
Object semantics with an owned affordance payload and canonical ID.
- Raises:
ValueError – If the affordance does not belong to the object.
- property registrations: tuple[SceneEntityRegistration, ...]
Return structurally independent registration values.
- resolve(identifier, *, expected_type=<class 'embodichain.lab.task_program.semantics.scene.SceneEntityRef'>)[source]
Resolve a canonical ID or alias to a typed canonical reference.
- Parameters:
identifier (
str|SceneEntityRef) – Canonical ID, alias, or already typed canonical ref.expected_type (
type[TypeVar(RefT, bound= SceneEntityRef)]) – Required reference class for typed lookup.
- Return type:
TypeVar(RefT, bound= SceneEntityRef)- Returns:
Registry-owned canonical reference.
- Raises:
KeyError – If the canonical ID or alias is unknown.
TypeError – If the supplied or resolved reference has the wrong type.
- resolve_affordance(parent, *, capability, explicit=None)[source]
Select one compatible affordance with strict scoped-default rules.
- Parameters:
parent (
str|SceneEntityRef) – Entity that directly owns the affordance.capability (
str) – Required semantic affordance capability.explicit (
str|SceneAffordanceRef|None) – Optional explicit affordance ID or typed reference.
- Return type:
- Returns:
One canonical compatible affordance reference.
- Raises:
UnsupportedSceneAffordanceError – If no compatible affordance exists or an explicit affordance has the wrong parent/capability.
AmbiguousSceneAffordanceError – If multiple candidates exist without a scoped default.
- resolve_collision_world_mode(*, batch_size)[source]
Resolve the configured collision mode for an execution batch.
- Parameters:
batch_size (
int) – Number of execution environments.- Return type:
SceneCollisionWorldMode|None- Returns:
The effective mode, or
Nonewhen no dynamic collision entity is registered.
- property static_collision_entity_ids: tuple[str, ...]
Return canonical IDs baked into the static planner world.
- validate_collision_integration(motion_generator, *, batch_size, scene_provider=None)[source]
Validate registry/planner agreement before dynamic planning.
- Parameters:
motion_generator (
MotionGenerator) – Motion generator whose planner consumes obstacles.batch_size (
int) – Number of execution environments.scene_provider (
SceneProvider|None) – Optional external perception or hardware provider. Its concretecollision_entity_idsmust agree exactly with the registry and planner declarations.
- Return type:
SceneCollisionWorldMode|None- Returns:
Effective dynamic collision mode, or
Nonewithout dynamic IDs.
- class embodichain.lab.task_program.semantics.scene.SupportSurfaceAffordance[source]
Typed target frame for placing an object’s origin on a support surface.
The registered affordance pose is the desired object pose, expressed relative to its parent scene entity. The optional confidence threshold is enforced whenever that late-bound target pose is resolved.
- Parameters:
minimum_confidence (
float) – Minimum confidence accepted while resolving the late-bound target pose.
Methods:
__init__([object_label, custom_config, ...])Attributes:
custom_configUser-defined configuration payload.
- __init__(object_label='', custom_config=<factory>, minimum_confidence=0.0)
-
custom_config:
dict[str,Any] User-defined configuration payload.
- exception embodichain.lab.task_program.semantics.scene.UnsupportedSceneAffordanceError[source]
Raised when a parent has no affordance for a required capability.
embodichain.lab.sim.motion.solvers.base_solver#
Shared solver configuration and runtime contracts for IK, FK, joint limits,
and optional continuous batch IK. Continuous selection defaults to unsupported;
implementations opt in through supports_continuous_batch_ik and implement
the protected _select_continuous_ik_path hook for batched candidates.
Base interface shared by robot forward and inverse kinematics solvers. |
|
Configuration for the kinematic solver used in the robot simulation. |
embodichain.lab.sim.motion.solvers.neural_ik_solver#
Configuration for the neural network IK solver. |
|
IK solver using a trained neural network policy. |
embodichain.lab.sim.motion.solvers.null_space_posture_task#
|
Pink-based task that adds a posture objective that is in the null space projection of other tasks. |
embodichain.lab.sim.motion.solvers.opw_solver#
Configuration and runtime solver for analytic OPW forward and inverse kinematics of compatible six-axis manipulators.
OPW inverse kinematics (IK) controller. |
|
Configuration for OPW inverse kinematics controller. |
embodichain.lab.sim.motion.solvers.pink_solver#
Iterative task-space IK with adaptive damping and convergence checks. |
|
Configure the Pink task-space IK solver. |
embodichain.lab.sim.motion.solvers.srs_solver#
SRS inverse kinematics (IK) controller. |
|
Configuration for SRS inverse kinematics controller. |
embodichain.lab.sim.spawn#
Translation boundary from EmbodiChain object configs and singleton USD assets into DexSim Spawn descriptors.
|
Translate an articulation config into a DexSim Spawn descriptor. |
|
Select an articulation by exact prim path, or require a singleton stage. |
|
Translate a rigid-object config into a DexSim Spawn descriptor. |
|
Compile visual geometry without creating physics or collision descriptors. |
|
Select a rigid object by exact prim path, or require a singleton stage. |
|
Select a USD object's appearance, explicitly omitting its physics. |
|
Translate a surface deformable into a Newton particle-set descriptor. |
|
Translate a volume deformable into a Newton particle-set descriptor. |
embodichain.lab.sim.spawn.descriptors#
|
Translate an articulation config into a DexSim Spawn descriptor. |
|
Apply one EmbodiChain config to exact source-resolved names. |
|
Translate a rigid-object config into a DexSim Spawn descriptor. |
|
Compile visual geometry without creating physics or collision descriptors. |
|
Translate a surface deformable into a Newton particle-set descriptor. |
|
Translate a volume deformable into a Newton particle-set descriptor. |
embodichain.lab.sim.spawn.scene#
|
Map EmbodiChain asset declarations onto one DexSim Spawn scene. |
embodichain.lab.sim.spawn.source#
|
Populate exact URDF metadata without building a Newton model. |
embodichain.lab.sim.spawn.usd#
|
Select an articulation by exact prim path, or require a singleton stage. |
|
Select a rigid object by exact prim path, or require a singleton stage. |
|
Select a USD object's appearance, explicitly omitting its physics. |
embodichain.lab.sim.utility.dynamic_pybind#
Install the projective UV helper on DexSim render bodies. The helper projects vertices across mesh segments and adapts UV storage to the pinned DexSim 0.5.1rc1 binding before writing each segment.
|
Set projective uv mapping to render body. |
|
Initialize dynamic pybind interface. |
embodichain.lab.sim.utility.render_utils#
|
Select the default renderer backend based on the detected GPU. |
embodichain.lab.sim.motion.workspace.caches.cache_utils#
|
Clean all cache sessions. |
|
Clean a specific cache session. |
|
Format bytes to human-readable size. |
|
Get the root cache directory. |
|
Calculate total size of a directory in bytes. |
|
List all cache sessions. |
|
Run the backward-compatible workspace analyzer cache CLI. |
|
Show detailed information about a cache session. |
|
Show total cache size. |
embodichain.lab.sim.motion.workspace.caches.results_cache#
|
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
Disk cache for workspace results, keyed by robot and parameters. |
|
|
Compute a stable, readable key for analysis inputs. |
|
Split an analysis results dict into array and meta parts. |
|
Reconstruct an analysis results dict from arrays and metadata. |
embodichain.lab.sim.motion.workspace.constraints.base_constraint#
Interface for constraint checkers. |
|
Abstract base class for workspace constraint checkers. |
embodichain.lab.sim.motion.workspace.constraints.workspace_constraint#
Workspace constraint checker for robotic workspace analysis. |
embodichain.lab.sim.motion.workspace.samplers.base_sampler#
Interface for all samplers. |
|
Abstract base class for all samplers. |
embodichain.lab.sim.motion.workspace.samplers.gaussian_sampler#
|
Gaussian (Normal distribution) sampler. |
embodichain.lab.sim.motion.workspace.samplers.halton_sampler#
Halton sequence sampler using quasi-random low-discrepancy sequences. |
embodichain.lab.sim.motion.workspace.samplers.importance_sampler#
|
Importance sampler using weighted distribution. |
embodichain.lab.sim.motion.workspace.samplers.iniform_sampler#
Uniform grid sampler. |
embodichain.lab.sim.motion.workspace.samplers.lhs_sampler#
Latin Hypercube Sampler (LHS) for stratified sampling. |
embodichain.lab.sim.motion.workspace.samplers.random_sampler#
Random sampler using uniform distribution. |
embodichain.lab.sim.motion.workspace.samplers.sobol_sampler#
Scrambled Sobol sampling with a persistent stream for each dimension. |
embodichain.lab.sim.motion.workspace.visualizers.axis_visualizer#
Visualizer for coordinate axes/frames at specified poses. |
embodichain.lab.sim.motion.workspace.visualizers.base_visualizer#
Interface for all visualizers. |
|
Abstract base class for all visualizers. |
embodichain.lab.sim.motion.workspace.visualizers.manipulability_visualizer#
Colors and normalization for manipulability visualization. |
|
Per-point scores aligned with the points of an analysis result. |
|
Outcome of robust manipulability normalization. |
|
Colors, sizes and normalization metadata for a point set. |
|
Indices chosen for detailed (ellipsoid) inspection. |
|
Detail record for a single inspected workspace point. |
|
Render workspace points colored by manipulability. |
|
|
Align a manipulability score vector with the points of an analysis result. |
|
Normalize manipulability scores to |
|
Map manipulability scores to RGBA colors and marker sizes. |
|
Choose the few points that deserve a detailed inspection. |
|
Build detail records for the selected points only. |
|
Derive translational manipulability ellipsoids from spatial Jacobians. |
|
Tessellate one ellipsoid for surface plotting. |
embodichain.lab.sim.motion.workspace.visualizers.point_cloud_visualizer#
Point cloud visualizer using SimulationManager, Viser, or local tools. |
embodichain.lab.sim.motion.workspace.visualizers.sphere_visualizer#
Sphere-based visualizer using Open3D or matplotlib. |
embodichain.lab.sim.motion.workspace.visualizers.visualizer_factory#
Factory class for creating visualizers (Singleton pattern). |
|
|
Convenience function to create a visualizer. |
embodichain.lab.sim.motion.workspace.visualizers.voxel_visualizer#
Voxel grid visualizer using Open3D or matplotlib. |
embodichain.lab.visualization.backends#
|
Lifecycle and publishing contract for live visualization backends. |
|
Map backend-neutral scene snapshots onto a Viser server. |
embodichain.lab.visualization.backends.base#
|
Lifecycle and publishing contract for live visualization backends. |
embodichain.lab.visualization.backends.viser#
|
Map backend-neutral scene snapshots onto a Viser server. |
embodichain.lab.visualization.cfg#
Configure live scene visualization. |
|
Configure the local Viser HTTP/WebSocket server. |
embodichain.lab.visualization.cli#
|
Add the standard EmbodiChain Viser command-line options. |
|
Build visualization configuration from parsed CLI arguments. |
embodichain.lab.visualization.picker#
Browser picking caches triangle geometry and returns the closest node hit by a world-space ray. The Viser worker pairs this geometry with poses from the same scene revision before producing a pick command.
Resolve a world-space ray to the closest hit scene node. |
- class embodichain.lab.visualization.picker.ScenePicker[source]#
Resolve a world-space ray to the closest hit scene node.
Geometry is cached per
geometry_idin local coordinates. Each pick transforms the ray into every instance’s local frame (so cached triangle data is reused across instances and across frames) and runs a vectorized Möller-Trumbore test, keeping the smallest positive ray parameter.- Parameters:
epsilon (
float) – Lower bound for accepted ray parameters, in world length units.
Methods:
__init__([epsilon])clear()Drop all cached geometry.
pick(ray_origin, ray_direction, instances)Return the node id of the closest instance hit by the ray.
remove_geometry(geometry_id)Drop one cached geometry.
set_geometry(geometry_id, vertices, faces)Cache one geometry's triangle data in local coordinates.
- pick(ray_origin, ray_direction, instances)[source]#
Return the node id of the closest instance hit by the ray.
Each instance is a
(node_id, geometry_id, position, wxyz)tuple, wherepositionis the world-space translation andwxyzis the normalized[w, x, y, z]quaternion. The ray is transformed into each instance’s local frame so the cached local geometry can be reused.- Parameters:
ray_origin (
ndarray) – World-space ray origin with shape(3,).ray_direction (
ndarray) – World-space ray direction with shape(3,). It is normalized internally so the returned hit distance is in world length units.instances (
Iterable[tuple[str,str,ndarray,ndarray]]) – Iterable of scene instances to test.
- Return type:
str|None- Returns:
The closest hit
node_id, orNoneif the ray misses every instance.
- set_geometry(geometry_id, vertices, faces)[source]#
Cache one geometry’s triangle data in local coordinates.
- Parameters:
geometry_id (
str) – Stable geometry identifier from the scene manifest.vertices (
ndarray) – Triangle mesh vertices with shape(V, 3).faces (
ndarray) – Triangle indices intoverticeswith shape(F, 3).
- Return type:
None
embodichain.lab.visualization.protocol#
|
int([x]) -> integer int(x, base=10) -> integer |
One detached RGB image associated with a manifest camera. |
|
Low-frequency RGB images captured at one simulation timestamp. |
|
Static pinhole-camera parameters for one environment instance. |
|
Detached vertex positions for one deformable scene node. |
|
Coordinate frame overlay. |
|
Immutable browser drag command consumed on the simulation thread. |
|
Static description of one simulation Gizmo exposed by a backend. |
|
Authoritative world pose and visibility of one simulation Gizmo. |
|
Immutable browser joint command consumed on the simulation thread. |
|
Simulation-thread source of optional articulation joint controls. |
|
Static description of one scalar articulation joint control. |
|
Authoritative value and command acknowledgement for one joint control. |
|
Backend-neutral triangle mesh stored in local coordinates. |
|
Immutable browser click-pick command consumed on the simulation thread. |
|
Point cloud overlay with per-cloud or per-point RGB colors. |
|
Dynamic poses and overlays for one simulation sample. |
|
Static scene topology and geometry for one scene revision. |
|
One mesh-bearing logical node in a scene manifest. |
|
All optional overlays attached to a dynamic frame. |
|
Target pose overlay rendered as a coordinate frame. |
|
Polyline trajectory overlay. |
|
|
Estimate NumPy image bytes retained by a camera image frame. |
|
Estimate NumPy payload bytes retained by a frame. |
|
Estimate binary geometry bytes retained by a manifest. |
|
Split pose arrays into positions and normalized wxyz quaternions. |
embodichain.lab.visualization.runtime#
Bounded command queue that coalesces high-rate drag updates. |
|
Bounded queue that keeps only the newest value for each joint control. |
|
A one-slot queue where producers replace an unconsumed old frame. |
|
Current visualization runtime health and connection state. |
|
Snapshot of scene and camera-image capture/upload telemetry. |
|
Run scene capture and a visualization backend without blocking simulation. |
embodichain.lab.visualization.scene_exporter#
Captured RGB images and the time spent rendering and copying them. |
|
A captured frame and the time spent copying scene data. |
|
Capture backend-neutral scene data from a |
|
|
Compute a stable content identifier for local mesh geometry and color. |
|
Encode an arbitrary identifier as one stable Viser path component. |
embodichain.learning.rl.algo.apg#
Optimize policy parameters through differentiable rollout rewards. |
|
Analytic policy-gradient config. |
|
|
Compute per-environment returns up to the first terminal transition. |
|
Compute one discounted return per environment within a rollout segment. |
embodichain.learning.rl.algo.base#
Base class for RL algorithms. |
|
Rollout semantics required by an algorithm. |
embodichain.learning.rl.algo.common#
|
Compute GAE over a rollout stored as [num_envs, time + 1]. |
embodichain.learning.rl.algo.grpo#
embodichain.learning.rl.algo.ppo#
embodichain.learning.rl.collector.base#
Base class for rollout collectors. |
embodichain.learning.rl.collector.differentiable#
Collect graph-preserving rollouts without a preallocated buffer. |
|
An immutable sequence of graph-preserving transitions. |
|
One graph-preserving environment transition. |
embodichain.learning.rl.collector.sync_collector#
Synchronously collect rollouts from a vectorized environment. |
embodichain.learning.rl.experimental.newton#
|
Batched differentiable two-link reach environment using Newton FK. |
|
Configuration for the temporary two-link Newton reach environment. |
embodichain.learning.rl.experimental.newton.planar_reach#
|
Batched differentiable two-link reach environment using Newton FK. |
|
Configuration for the temporary two-link Newton reach environment. |
embodichain.learning.rl.experimental.newton.train_planar_reach#
|
Configuration for random-target Newton APG training. |
|
Train on random reaches and evaluate on held-out samples. |
embodichain.learning.rl.gradients#
Row-wise action-adjoint clipping and its rollout-level diagnostics.
Accumulate row-wise adjoint norm and clipping statistics on-device. |
|
|
Clip each batch row without shortening the differentiable time horizon. |
embodichain.learning.rl.policies.actor_critic#
TensorDict actor-critic with a learnable Gaussian action distribution. |
embodichain.learning.rl.policies.actor_only#
Actor-only policy for algorithms that do not use a value function (e.g., GRPO). |
embodichain.learning.rl.policies.policy#
Abstract base class that all RL policies must implement. |
embodichain.learning.rl.normalization#
Normalize continuous observation fields with running Welford statistics. |
embodichain.learning.rl.utils.optimizer#
|
Fill |
|
Build a scheduler, or |
|
|
|
|
|
|
|
|
|
|
|
embodichain.toolkits.acd#
|
embodichain.toolkits.acd.cli#
|
Generate convex collision meshes and an updated URDF. |
embodichain.toolkits.acd.urdf_modifider#
|
embodichain.toolkits.graspkit.pg_grasp.antipodal_sampler#
Configuration for AntipodalSampler. |
|
AntipodalSampler samples antipodal point pairs on a given mesh. |
embodichain.toolkits.graspkit.pg_grasp.collision_checker#
Configuration for ConvexCollisionChecker. |
|
ConvexCollisionChecker performs efficient collision checking between a batch of query point clouds and a convex decomposition of a mesh. |
embodichain.toolkits.graspkit.pg_grasp.gripper_collision_checker#
Configuration for the GripperCollisionChecker. |
|
|
Generate grid-sampled points on the surface of an axis-aligned box. |
embodichain.toolkits.graspkit.scripts.annotate_grasp#
|
Command-line interface for grasp pose annotation. |
embodichain.toolkits.urdf_assembly.component#
|
Registry for storing and retrieving URDFComponent objects. |
|
Represents a URDF component with its configuration and transformation. |
|
Responsible for loading, renaming, and processing meshes for a single component. |
embodichain.toolkits.urdf_assembly.connection#
|
Responsible for managing connection rules between components and sensor attachments. |
embodichain.toolkits.urdf_assembly.file_writer#
|
Responsible for formatting XML and writing URDF files with proper headers. |
embodichain.toolkits.urdf_assembly.logging_utils#
|
URDF Assembly module-specific logger manager |
embodichain.toolkits.urdf_assembly.mesh#
|
Responsible for copying, renaming, and handling dependencies of mesh files. |
embodichain.toolkits.urdf_assembly.sensor#
|
Registry for storing and retrieving SensorAttachment objects. |
|
Represents a sensor attachment configuration to a robot component. |
|
Responsible for loading, processing, and managing sensor attachments. |
embodichain.toolkits.urdf_assembly.signature#
|
Simple MD5-based signature manager for URDF assemblies without persistent cache. |
embodichain.toolkits.urdf_assembly.urdf_assembly_manager#
A class to manage the assembly of URDF files and their components. |
embodichain_tasks.classic_control.cart_pole#
Cart-pole environment registration under the task-first import path.
|
CartPole balancing task for reinforcement learning. |
embodichain_tasks.classic_control.point_mass#
Differentiable lightweight point-mass task and learning-environment registration.
|
Navigate a damped point mass to a goal while avoiding two obstacles. |
embodichain_tasks.configs#
|
Return an installed official-task config path. |
embodichain_tasks.manipulation.push_cube#
|
Push cube task for reinforcement learning. |
embodichain_tasks.manipulation.repeated_pick_place#
RLinf-facing repeated pick-and-place task registrations with explicit EEF and joint-position action variants.
embodichain_tasks.manipulation.tableware.blocks_ranking_size#
|
embodichain_tasks.manipulation.tableware.match_object_container#
|
embodichain_tasks.manipulation.tableware.place_object_drawer#
|
embodichain_tasks.manipulation.tableware.stack_cups#
|
embodichain_tasks.special.franka_reach_apg#
Differentiable Franka FR3 reach environment that demonstrates the explicit kinematics route used by analytic policy-gradient experiments.
|
Differentiable Franka FR3 reach task for analytic policy gradients. |
embodichain_tasks.utils.importer#
|
Recursively import all modules below package_name. |
Standalone simulation command-line options#
embodichain.cli.sim builds simulation arguments without importing the
simulation runtime. Gym launchers compose these options with configuration
and recording flags. Seed options are opt-in: resolve_seed resolves -1
to an effective 32-bit seed without changing random streams or deterministic
kernel policy; callers log and apply that seed to their own generators.
|
Register standalone simulation and visualization options. |
|
Register one seed option for a caller that actually consumes it. |
|
Resolve the random-run sentinel without changing global RNG state. |
- embodichain.cli.sim.add_sim_args_to_parser(parser)[source]#
Register standalone simulation and visualization options.
- Parameters:
parser (
ArgumentParser) – Parser receiving the options. Device omission preserves the backend default; the other standalone defaults are concrete.- Return type:
None
- embodichain.cli.sim.add_seed_arg_to_parser(parser, *, default=0, scope='random sampling')[source]#
Register one seed option for a caller that actually consumes it.
- Parameters:
parser (
ArgumentParser) – Parser receiving the seed option.default (
int|None) – Seed when omitted; None preserves a Gym config’s seed.scope (
str) – User-facing description of the random streams controlled.
- Return type:
None
- embodichain.cli.sim.resolve_seed(seed)[source]#
Resolve the random-run sentinel without changing global RNG state.
- Parameters:
seed (
int) – A non-negative 32-bit seed, or -1 to generate a fresh seed.- Return type:
int- Returns:
Effective seed to log and pass to the caller’s random generators.
- Raises:
ValueError – If seed is outside the portable 32-bit range.
embodichain.lab.sim.cfg.robot#
Robot construction and complete backend alternatives#
Robot configurations include optional mounted camera declarations.
Standalone simulation initializes them only when enable_sensor is true;
Gym uses its environment-wide sensor switch, which defaults to enabled.
RobotCfg(uid: 'str | None' = <factory>, init_pos: 'tuple[float, float, float]' = <factory>, init_rot: 'tuple[float, float, float]' = <factory>, init_local_pose: 'np.ndarray | None' = <factory>, fpath: 'str' = <factory>, body_scale: 'tuple | list' = <factory>, compute_uv: 'bool' = <factory>, asset_physics_mode: 'AssetPhysicsMode' = <factory>, attrs: 'RigidBodyPhysicsCfg' = <factory>, link_attrs: 'dict[str, LinkPhysicsOverrideCfg] | None' = <factory>, root_props: 'ArticulationRootPropertiesCfg' = <factory>, joint_drive_props: 'JointDrivePropertiesCfg' = <factory>, init_qpos: 'torch.Tensor | np.ndarray | Sequence[float]' = <factory>, qpos_limits: 'torch.Tensor | np.ndarray | Sequence[Sequence[float]] | Dict[str, List[float]] | None' = <factory>, build_pk_chain: 'bool' = <factory>, control_parts: 'Dict[str, List[str]] | None' = <factory>, urdf_cfg: 'URDFCfg | None' = <factory>, solver_cfg: 'SolverCfg | Dict[str, SolverCfg] | None' = <factory>, workspace_cfg: 'Dict[str, RobotWorkspaceCfg] | None' = <factory>, sensors: 'list[SensorCfg]' = <factory>, enable_sensor: 'bool' = <factory>, *, source: 'UsdSourceCfg | None' = None) |
|
Base class for replace-only robot configurations across physics backends. |
- class embodichain.lab.sim.cfg.robot.RobotCfg[source]
RobotCfg(uid: ‘str | None’ = <factory>, init_pos: ‘tuple[float, float, float]’ = <factory>, init_rot: ‘tuple[float, float, float]’ = <factory>, init_local_pose: ‘np.ndarray | None’ = <factory>, fpath: ‘str’ = <factory>, body_scale: ‘tuple | list’ = <factory>, compute_uv: ‘bool’ = <factory>, asset_physics_mode: ‘AssetPhysicsMode’ = <factory>, attrs: ‘RigidBodyPhysicsCfg’ = <factory>, link_attrs: ‘dict[str, LinkPhysicsOverrideCfg] | None’ = <factory>, root_props: ‘ArticulationRootPropertiesCfg’ = <factory>, joint_drive_props: ‘JointDrivePropertiesCfg’ = <factory>, init_qpos: ‘torch.Tensor | np.ndarray | Sequence[float]’ = <factory>, qpos_limits: ‘torch.Tensor | np.ndarray | Sequence[Sequence[float]] | Dict[str, List[float]] | None’ = <factory>, build_pk_chain: ‘bool’ = <factory>, control_parts: ‘Dict[str, List[str]] | None’ = <factory>, urdf_cfg: ‘URDFCfg | None’ = <factory>, solver_cfg: ‘SolverCfg | Dict[str, SolverCfg] | None’ = <factory>, workspace_cfg: ‘Dict[str, RobotWorkspaceCfg] | None’ = <factory>, sensors: ‘list[SensorCfg]’ = <factory>, enable_sensor: ‘bool’ = <factory>, *, source: ‘UsdSourceCfg | None’ = None)
Methods:
__init__([uid, init_pos, init_rot, ...])__new__(**kwargs)Attributes:
enable_sensorInitialize mounted sensors when adding the robot.
sensorsMounted camera configurations with robot-local parent link names.
- __init__(uid=<factory>, init_pos=<factory>, init_rot=<factory>, init_local_pose=<factory>, fpath=<factory>, body_scale=<factory>, compute_uv=<factory>, asset_physics_mode=<factory>, attrs=<factory>, link_attrs=<factory>, root_props=<factory>, joint_drive_props=<factory>, init_qpos=<factory>, qpos_limits=<factory>, build_pk_chain=<factory>, control_parts=<factory>, urdf_cfg=<factory>, solver_cfg=<factory>, workspace_cfg=<factory>, sensors=<factory>, enable_sensor=<factory>, *, source=None)
- __new__(**kwargs)
- enable_sensor: bool
Initialize mounted sensors when adding the robot. Gym overrides this with its environment-wide acquisition switch, which defaults to True.
- sensors: list[SensorCfg]
Mounted camera configurations with robot-local parent link names.
An explicit list replaces the robot’s default suite; an empty list clears it. Sensor UIDs must be unique in the simulation. Runtime parent binding uses a copy, preserving these local calibration declarations.
- class embodichain.lab.sim.cfg.robot.RobotPresetCfg[source]
Base class for replace-only robot configurations across physics backends.
Subclasses declare complete
RobotCfgalternatives as fields. Adefaultfield is required; optional fields use Newton backend or solver profile names such asnewton,newton_mujoco_warp, ornewton_mjwarp. The activePhysicsBackendCfgselects one complete alternative atSimulationManager.add_robot(); alternatives are never field-merged.Portable robot properties should remain on one ordinary
RobotCfg. Use this wrapper only when an asset, actuator model, or native physics value genuinely requires a different complete robot definition.Example:
@configclass class MyRobotPresetCfg(RobotPresetCfg): default: RobotCfg = MyRobotCfg() newton_mujoco_warp: RobotCfg = MyNewtonRobotCfg()
Methods:
__init__()__new__(**kwargs)- __init__()
- __new__(**kwargs)
Asset generalization contracts#
- Asset generalization
- embodichain.data.asset_catalog
- embodichain.data.asset_catalog.contracts
- embodichain.lab.task_program.semantics.asset_requirements
- embodichain.data.asset_catalog additions
- embodichain.data.asset_catalog.local additions
- embodichain.lab.task_program.semantics.asset_matching additions
- embodichain.lab.task_program.integrations.asset_materialization additions
- embodichain.lab.gym.envs.asset_generalization additions
- Calibrated pouring and measured acceptance