embodichain.data

Contents

embodichain.data#

Dataset resolution, asset-download helpers, preset asset registries, and shared constants/enums used by simulation tasks and training pipelines.

Data Package Overview#

The embodichain.data package centralizes dataset resolution, asset download helpers, preset asset registries, and shared constants/enums used by simulation tasks and training pipelines.

Submodules

assets

Preset configuration objects for scene assets (robots, end-effectors, objects, materials, sensors, planners, solvers, demo scenes) ready to reference from task configs.

constants

dataset

download

CLI tool for pre-downloading EmbodiChain data assets.

enum

Asset Registry#

Preset configuration objects for scene assets (robots, end-effectors, objects, materials, sensors, planners, solvers, demo scenes) ready to reference from task configs.

Preset configuration objects for scene assets (robots, end-effectors, objects, materials, sensors, planners, solvers, demo scenes) ready to reference from task configs.

Robot Asset Datasets#

Robot dataset classes register the prefixes used by get_data_path() and embodichain data. Most fetch their pinned archives on first construction. FlexivRizon4S downloads its versioned official URDF, meshes, license and provenance archive from the configured asset source, with Hugging Face as a fallback, into the standard revision-specific cache. Asset lookup and robot configuration share that same data.

Classes:

ABB

Dataset class for the ABB robot.

ARX5

Dataset class for the ARX5 robot.

Agile

Dataset class for the Agile robots.

AlohaMini

Dataset class for the Aloha Mini robot.

Aubo

Dataset class for the Aubo robots.

CartPole

Dataset class for the CartPole.

CobotMagicArm

Dataset class for the Cobot Magic Arm robot.

Fanuc

Dataset class for the Fanuc robot.

FlexivRizon4S

Download the Apache-2.0 Flexiv Rizon 4S description from Hugging Face.

Franka

Dataset class for the Franka robots.

Hans

Dataset class for the Hans robots.

KUKA

Dataset class for the KUKA robot.

Motoman

Dataset class for the Motoman robot.

RainbowY1

Dataset class for the Aubo robots.

RidgeBack

Dataset class for the RidgeBack wheeled robot.

Rokae

Dataset class for the Rokae robots.

TianjiMarvin

Dataset class for the Tianji Marvin robot.

UnitreeH1

Dataset class for the Unitree H1 robot.

UnitreeH1Usd

Dataset class for the Unitree H1 robot USD version.

UniversalRobots

Dataset class for the Universal Robots.

class embodichain.data.assets.robot_assets.ABB[source]#

Bases: EmbodiChainDataset

Dataset class for the ABB robot.

Reference:

https://global.abb/

Directory structure:
ABB/

IRB1200_5_90/IRB1200_5_90.urdf IRB2600_12_165/IRB2600_12_165.urdf

Example usage:
>>> from embodichain.data.robot_dataset import ABB
>>> dataset = ABB()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("ABB/IRB1200_5_90/IRB1200_5_90.urdf"))
>>> print(get_data_path("ABB/IRB2600_12_165/IRB2600_12_165.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.ARX5[source]#

Bases: EmbodiChainDataset

Dataset class for the ARX5 robot.

Reference:

https://arx-x.com/

Directory structure:
ARX5/

X5A.urdf

Example usage:
>>> from embodichain.data.robot_dataset import ARX5
>>> dataset = ARX5()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("ARX5/X5A.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.Agile[source]#

Bases: EmbodiChainDataset

Dataset class for the Agile robots.

Reference:

https://www.agile-robots.com/en/solutions/diana-7/

Directory structure:
Agile/

Diana7/Diana7.urdf

Example usage:
>>> from embodichain.data.robot_dataset import Agile
>>> dataset = Agile()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("Agile/Diana7/Diana7.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.AlohaMini[source]#

Bases: EmbodiChainDataset

Dataset class for the Aloha Mini robot.

Reference:

annncatto/alohamini_ros2

Directory structure:
AlohaMini/

alohamini2pro.urdf

Example usage:
>>> from embodichain.data.robot_dataset import AlohaMini
>>> dataset = AlohaMini()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("AlohaMini/alohamini2pro.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.Aubo[source]#

Bases: EmbodiChainDataset

Dataset class for the Aubo robots.

Reference:

https://www.aubo-robotics.cn/

Directory structure:
Aubo/

i5/i5.urdf

Example usage:
>>> from embodichain.data.robot_dataset import Aubo
>>> dataset = Aubo()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("Aubo/i5/i5.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.CartPole[source]#

Bases: EmbodiChainDataset

Dataset class for the CartPole.

Directory structure:
cart_pole/

cart_pole.urdf cart.mtl cart.obj pole.mtl pole.obj slide_bar.mtl slide_bar.obj

Example usage:
>>> from embodichain.data.robot_dataset import CartPole
>>> dataset = CartPole()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("CartPole/cart_pole.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.CobotMagicArm[source]#

Bases: EmbodiChainDataset

Dataset class for the Cobot Magic Arm robot.

Reference:

https://global.agilex.ai/products/cobot-magic

Directory structure:
CobotMagicArm/

CobotMagicNoGripper.urdf CobotMagicWithGripperV70.urdf CobotMagicWithGripperV70NewUV.urdf CobotMagicWithGripperV70NoMaterial.urdf CobotMagicWithGripperV100.urdf CobotMagicWithGripperV100NewUV.urdf CobotMagicWithGripperV100NoMaterial.urdf

Example usage:
>>> from embodichain.data.robot_dataset import CobotMagicArm
>>> dataset = CobotMagicArm()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("CobotMagicArm/CobotMagicWithGripperV100.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.Fanuc[source]#

Bases: EmbodiChainDataset

Dataset class for the Fanuc robot.

Reference:

https://www.fanuc.com/

Directory structure:
Fanuc/

M_20iA/M_20iA.urdf R_2000iC_165F/R_2000iC_165F.urdf

Example usage:
>>> from embodichain.data.robot_dataset import Fanuc
>>> dataset = Fanuc()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("Fanuc/KR6_R700_sixx/KR6_R700_sixx.urdf"))
>>> print(get_data_path("Fanuc/KR6_R900_sixx/KR6_R900_sixx.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.FlexivRizon4S[source]#

Bases: EmbodiChainDataset

Download the Apache-2.0 Flexiv Rizon 4S description from Hugging Face.

The pinned official URDF, meshes, original parameter files, license and provenance share the standard locked download and extraction cache. The normal data registry resolves FlexivRizon4S/rizon4s.urdf.

Parameters:

data_root (str | None) – Optional root for the standard locked asset cache.

Methods:

__init__([data_root])

Attributes:

cache_prefix

Revision-specific extraction identity used by the data CLI.

__init__(data_root=None)[source]#
cache_prefix: ClassVar[str] = 'FlexivRizon4S_v1'#

Revision-specific extraction identity used by the data CLI.

class embodichain.data.assets.robot_assets.Franka[source]#

Bases: EmbodiChainDataset

Dataset class for the Franka robots.

Reference:

https://franka.de/franka-research-3

Directory structure:
Franka/
Panda/

Panda.urdf PandaWithHand.urdf

FR3/

fr3.urdf

Example usage:
>>> from embodichain.data.robot_dataset import Franka
>>> dataset = Franka()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("Franka/Panda/Panda.urdf"))
>>> print(get_data_path("Franka/PandaWithHand/PandaWithHand.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.Hans[source]#

Bases: EmbodiChainDataset

Dataset class for the Hans robots.

Reference:

https://www.huayan-robotics.com/elfin

Directory structure:
Hans/

E05/E05.urdf E10/E10.urdf

Example usage:
>>> from embodichain.data.robot_dataset import Hans
>>> dataset = Hans()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("Hans/E05/E05.urdf"))
>>> print(get_data_path("Hans/E10/E10.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.KUKA[source]#

Bases: EmbodiChainDataset

Dataset class for the KUKA robot.

Reference:

https://www.kuka.com/

Directory structure:
KUKA/

KUKA/KR6_R700_sixx/KR6_R700_sixx.urdf KUKA/KR6_R900_sixx/KR6_R900_sixx.urdf

Example usage:
>>> from embodichain.data.robot_dataset import ABB
>>> dataset = ABB()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("KUKA/KR6_R700_sixx/KR6_R700_sixx.urdf"))
>>> print(get_data_path("KUKA/KR6_R900_sixx/KR6_R900_sixx.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.Motoman[source]#

Bases: EmbodiChainDataset

Dataset class for the Motoman robot.

Reference:

https://www.motoman.com/en-us

Directory structure:
Motoman/

GP7/GP7.urdf GP12/GP12.urdf

Example usage:
>>> from embodichain.data.robot_dataset import Motoman
>>> dataset = Motoman()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("Motoman/GP7/GP7.urdf"))
>>> print(get_data_path("Motoman/GP12/GP12.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.RainbowY1[source]#

Bases: EmbodiChainDataset

Dataset class for the Aubo robots.

Reference:

https://www.rainbow-robotics.com/en_rby1

Directory structure:
RainbowY1/

RainbowY1.urdf

Example usage:
>>> from embodichain.data.robot_dataset import RainbowY1
>>> dataset = RainbowY1()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("RainbowY1/RainbowY1.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.RidgeBack[source]#

Bases: EmbodiChainDataset

Dataset class for the RidgeBack wheeled robot.

Reference:

https://clearpathrobotics.com/ridgeback-indoor-robot-platform/

Directory structure:
RidgeBack/

RidgeBack.urdf

Example usage:
>>> from embodichain.data.robot_dataset import RidgeBack
>>> dataset = RidgeBack()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("RidgeBack/RidgeBack.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.Rokae[source]#

Bases: EmbodiChainDataset

Dataset class for the Rokae robots.

Reference:

https://www.rokae.com/en/product/show/349/SR-Cobots.html

Directory structure:
Rokae/

SR3/SR3.urdf SR5/SR5.urdf

Example usage:
>>> from embodichain.data.robot_dataset import Rokae
>>> dataset = Rokae()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("Rokae/SR3/SR3.urdf"))
>>> print(get_data_path("Rokae/SR5/SR5.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.TianjiMarvin[source]#

Bases: EmbodiChainDataset

Dataset class for the Tianji Marvin robot.

Directory structure:
TianjiMarvin/

robot_acd.urdf robot_with_ee_acd.urdf

Example usage:
>>> from embodichain.data.assets.robot_assets import TianjiMarvin
>>> dataset = TianjiMarvin()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("TianjiMarvin/robot_with_ee_acd.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.UnitreeH1[source]#

Bases: EmbodiChainDataset

Dataset class for the Unitree H1 robot.

Reference:

https://www.unitree.com/h1/

Directory structure:
UnitreeH1/

UnitreeH1.urdf UnitreeH1WithWrist.urdf

Example usage:
>>> from embodichain.data.robot_dataset import UnitreeH1
>>> dataset = UnitreeH1()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("UnitreeH1/UnitreeH1.urdf"))
>>> print(get_data_path("UnitreeH1/UnitreeH1WithWrist.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.UnitreeH1Usd[source]#

Bases: EmbodiChainDataset

Dataset class for the Unitree H1 robot USD version.

Directory structure:
UnitreeH1Usd/H1_usd

h1.usd h1.usda

Example usage:
>>> from embodichain.data.robot_dataset import UnitreeH1Usd
>>> dataset = UnitreeH1Usd()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("UnitreeH1Usd/H1_usd/h1.usd"))
>>> print(get_data_path("UnitreeH1Usd/H1_usd/h1.usda"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#
class embodichain.data.assets.robot_assets.UniversalRobots[source]#

Bases: EmbodiChainDataset

Dataset class for the Universal Robots.

V4 corrects the legacy UR3/UR3e material palette without changing robot geometry, collision meshes, kinematics or inertial properties.

Reference:

https://www.universal-robots.com/products/ur-series/

Directory structure:
UniversalRobots/

UR3/UR3.urdf UR3e/UR3e.urdf UR5/UR5.urdf UR5e/UR5e.urdf UR10/UR10.urdf UR10e/UR10e.urdf

Example usage:
>>> from embodichain.data.robot_dataset import UniversalRobots
>>> dataset = UniversalRobots()
or
>>> from embodichain.data import get_data_path
>>> print(get_data_path("UniversalRobots/UR3/UR3.urdf"))
>>> print(get_data_path("UniversalRobots/UR3e/UR3e.urdf"))
>>> print(get_data_path("UniversalRobots/UR5/UR5.urdf"))
>>> print(get_data_path("UniversalRobots/UR5e/UR5e.urdf"))
>>> print(get_data_path("UniversalRobots/UR10/UR10.urdf"))
>>> print(get_data_path("UniversalRobots/UR10e/UR10e.urdf"))

Methods:

__init__([data_root])

__init__(data_root=None)[source]#

SO101FollowerAssets resolves the official follower URDF, STLs and motor reference directly from a pinned The Robot Studio revision. File SHA256 checks and the shared dataset lock protect the complete dependency cache. The original license and source reference files are retained alongside the meshes.

Compatible public imports for robot-owned assets.

Classes:

SO101FollowerAssets

Download the official follower URDF and its dependencies at a fixed revision.

class embodichain.data.assets.so101_assets.SO101FollowerAssets[source]#

Bases: EmbodiChainDataset

Download the official follower URDF and its dependencies at a fixed revision.

The original Apache-2.0 license, CAD inertials, joint frames, limits and yellow/black URDF materials are preserved. Each source file is checked against its pinned SHA256, including when repairing an existing cache.

Parameters:

data_root (str | None) – Optional asset cache root. Omission uses EMBODICHAIN_DATA_ROOT through the shared data constants.

Methods:

__init__([data_root])

__init__(data_root=None)[source]#

Constants#

Dataset Resolution#

Classes:

Functions:

get_data_class(dataset_name[, extra_modules])

Resolve a dataset class from the shared asset catalog or extra modules.

get_data_path(data_path_in_config)

Get the absolute path of the data file.

class embodichain.data.dataset.EmbodiChainDataset[source]#

Bases: DownloadDataset

Methods:

__init__(self, prefix, data_descriptor[, ...])

calculate_md5(file_path[, chunk_size])

Calculate the MD5 checksum of a file.

check_zip(prefix, data_descriptor, path)

Check the integrity of the zip file and its extracted contents.

__init__(self: open3d.cuda.pybind.data.DownloadDataset, prefix: str, data_descriptor: open3d.cuda.pybind.data.DataDescriptor, data_root: str = '') → None[source]#
calculate_md5(file_path, chunk_size=8192)[source]#

Calculate the MD5 checksum of a file.

check_zip(prefix, data_descriptor, path)[source]#

Check the integrity of the zip file and its extracted contents.

embodichain.data.dataset.get_data_class(dataset_name, extra_modules=None)[source]#

Resolve a dataset class from the shared asset catalog or extra modules.

Parameters:
  • dataset_name (str) – The name of the dataset class.

  • extra_modules (list[str] | None) – Optional list of additional module names to search for the dataset class.

Returns:

The dataset class.

Return type:

type

Raises:

AttributeError – If the dataset class is not found in any module.

embodichain.data.dataset.get_data_path(data_path_in_config)[source]#

Get the absolute path of the data file.

Resolution order:
  1. If data_path_in_config is an absolute path, return it directly.

  2. If a matching file/directory exists under EMBODICHAIN_DEFAULT_DATA_ROOT (which can be overridden via the EMBODICHAIN_DATA_ROOT environment variable), return that path.

  3. Otherwise, resolve via the registered data-class download mechanism.

Parameters:

data_path_in_config (str) – The dataset name, optionally followed by a subpath in the format "dataset_name/subpath".

Returns:

The absolute path of the data file.

Return type:

str

Asset Download CLI#

CLI tool for pre-downloading EmbodiChain data assets.

Usage:

# List all available assets
embodichain data list

# List assets in a specific category
embodichain data list --category robot

# Download a specific asset by name
embodichain data download --name CobotMagicArm

# Download all assets in a category
embodichain data download --category robot

# Download everything
embodichain data download --all

Functions:

cmd_download(args)

Download assets by name, category, or everything.

cmd_list(args)

List available assets.

download_asset(cls_name, cls)

Instantiate an asset class to trigger download, then ensure extraction.

find_asset_class(name, registry)

Find an asset class by name (case-insensitive) across all categories.

get_registry()

List asset classes from core modules and installed asset catalogs.

main([argv])

Run the data asset CLI.

embodichain.data.download.cmd_download(args)[source]#

Download assets by name, category, or everything.

Return type:

None

embodichain.data.download.cmd_list(args)[source]#

List available assets.

Return type:

None

embodichain.data.download.download_asset(cls_name, cls)[source]#

Instantiate an asset class to trigger download, then ensure extraction.

Return type:

bool

embodichain.data.download.find_asset_class(name, registry)[source]#

Find an asset class by name (case-insensitive) across all categories.

Return type:

tuple[str, type] | None

embodichain.data.download.get_registry()[source]#

List asset classes from core modules and installed asset catalogs.

Return type:

dict[str, list[tuple[str, type]]]

Returns:

Fresh category lists containing public asset IDs and their classes. Classes are resolved without constructing datasets or downloading files.

embodichain.data.download.main(argv=None)[source]#

Run the data asset CLI.

Parameters:

argv (Sequence[str] | None) – Arguments excluding the command name. Uses sys.argv when omitted.

Return type:

None

Enums#

Classes:

ActionMode

ControlParts

EefExecute

EefType

EndEffector

Hints

JointType

LeRobotKey

LeRobot standard field keys - official LeRobot dataset format.

SemanticMask

SemanticMask is an enumeration representing different semantic regions in an image or scene.

class embodichain.data.enum.ActionMode[source]#

Bases: Enum

Attributes:

ABSOLUTE = ''#
RELATIVE = 'delta_'#
class embodichain.data.enum.ControlParts[source]#

Bases: Enum

Attributes:

HEAD = 'head'#
LEFT_ARM = 'left_arm'#
LEFT_EEF = 'left_eef'#
RIGHT_ARM = 'right_arm'#
RIGHT_EEF = 'right_eef'#
WAIST = 'waist'#
class embodichain.data.enum.EefExecute[source]#

Bases: Enum

Attributes:

CLOSE = 'execute_close'#
OPEN = 'execute_open'#
class embodichain.data.enum.EefType[source]#

Bases: Enum

Attributes:

POSE = 'eef_pose'#
class embodichain.data.enum.EndEffector[source]#

Bases: Enum

Attributes:

DEXTROUSHAND = 'hand'#
GRIPPER = 'gripper'#
class embodichain.data.enum.Hints[source]#

Bases: Enum

Attributes:

ARM = ('left_arm', 'right_arm')#
EEF = ('left_eef', 'right_eef', 'gripper', 'hand')#
class embodichain.data.enum.JointType[source]#

Bases: Enum

Attributes:

QPOS = 'qpos'#
class embodichain.data.enum.LeRobotKey[source]#

Bases: Enum

LeRobot standard field keys - official LeRobot dataset format.

Attributes:

ACTION = 'action'#
ACTION_PREFIX = 'action.'#
ACTION_TOKENS = 'action.tokens'#
ACTION_TOKEN_MASK = 'action.token_mask'#
DONE = 'next.done'#
INFO = 'info'#
OBS_ENV_STATE = 'observation.environment_state'#
OBS_IMAGE = 'observation.image'#
OBS_IMAGES = 'observation.images'#
OBS_LANGUAGE = 'observation.language'#
OBS_LANGUAGE_ATTENTION_MASK = 'observation.language.attention_mask'#
OBS_LANGUAGE_SUBTASK = 'observation.subtask'#
OBS_LANGUAGE_SUBTASK_ATTENTION_MASK = 'observation.subtask.attention_mask'#
OBS_LANGUAGE_SUBTASK_TOKENS = 'observation.subtask.tokens'#
OBS_LANGUAGE_TOKENS = 'observation.language.tokens'#
OBS_PREFIX = 'observation.'#
OBS_QF = 'observation.qf'#
OBS_QVEL = 'observation.qvel'#
OBS_STATE = 'observation.state'#
OBS_STR = 'observation'#
REWARD = 'next.reward'#
TRUNCATED = 'next.truncated'#
class embodichain.data.enum.SemanticMask[source]#

Bases: IntEnum

SemanticMask is an enumeration representing different semantic regions in an image or scene.

BACKGROUND#

Represents the background region (value: 0).

Type:

int

FOREGROUND#

Represents the foreground objects (value: 1).

Type:

int

ROBOT_LEFT#

Represents the left robot region (value: 2).

Type:

int

ROBOT_RIGHT#

Represents the right robot region (value: 3).

Type:

int

Attributes:

Methods:

__new__(value)

BACKGROUND = 0#
FOREGROUND = 1#
ROBOT_LEFT = 2#
ROBOT_RIGHT = 3#
__new__(value)#