Robot Catalog#
Use the robot catalog to discover installed configurations before choosing a
robot for a Gym task, workspace analysis, or dual-arm composition. The main
embodichain distribution includes the official embodichain_robots package.
embodichain list-robot
python -m embodichain list-robot
embodichain list-robot --help
Listing reads catalog metadata without importing robot implementations, starting simulation, or downloading assets. See List Robots for the table columns.
Read the Control Summary#
Control DOF counts unique independent joints in the default control parts.
The count excludes mimic followers and counts joints shared by groups such as
dual_arm and full_body once. It describes the configured control groups;
other movable joints in the asset can be outside those groups.
Control Parts uses independent-plus-mimic notation. For example,
eef (1+1m) describes a two-joint gripper with one independent joint and one
follower. Official presets use eef for a single arm and left_eef /
right_eef for a dual arm. Custom control-part names remain valid.
Mimic Joints lists follower names from the default URDF, including passive
followers outside the control parts. W1’s BrainCo PIP joints are an example:
they appear in this column while each hand’s six selected control joints are
independent. The displayed follower count therefore need not equal the sum
of the m counts in the control parts.
A * marks the default variant. - means that a provider has not supplied a
summary, and None in the mimic column means a known absence of followers.
When a provider omits per-part mimic membership, part counts are marked
total instead of being presented as independent counts.
The official catalog currently groups configurations into these families:
Robot ID |
Independent control DOF |
Variant coverage |
|---|---|---|
|
15 |
Complete Aloha Mini 2 Pro default control groups |
|
14 |
Default dual six-joint arms and two independent gripper commands |
|
20, 22, or 32 |
Three body releases and six hand profiles per release |
|
12 or 16 |
Six UR bases or a pair of Franka Panda arms with grippers |
|
8 |
Seven arm joints and one independent gripper command |
|
16 |
Default dual seven-joint arms with grippers |
|
6 |
|
These summaries describe catalog defaults. Configuration overrides can change the control groups or attached end effectors. See Supported Robots for the individual robot configurations and their additional options.
Select a Variant#
Use the Robot ID to resolve a configuration and supply its variant fields as
overrides. UR model IDs are also registered individually, even though their
display rows are grouped under URRobot:
from embodichain.robot_registry import list_robot_cfgs, resolve_robot_cfg
robot_ids = list_robot_cfgs()
ur5_cfg = resolve_robot_cfg("URRobot", {"robot_type": "ur5"})
ur5_preset_cfg = resolve_robot_cfg("ur5")
list_robot_cfgs() returns all registered IDs, including the six UR presets.
resolve_robot_cfg() imports and constructs the selected configuration, so
asset resolution and robot dependencies can be required at that point.
The same registered IDs are accepted by Gym’s robot.class_type, workspace
analysis’s --robot, and dual-arm composition’s base_robot.
Dual-arm Bases#
The default base is ur10. Every listed UR base contributes six independent
arm joints per side, giving 12 control DOFs. A FrankaPanda base contributes
seven arm joints and one independent gripper command per side, giving 16
control DOFs plus two mimic followers. The overlapping dual_arm group is
counted once.
panda_pair_cfg = resolve_robot_cfg(
"DualArmRobot", {"base_robot": "FrankaPanda"}
)
See Dual-Arm Composition for mounts and the base-robot contract.
W1 Body and Hand Profiles#
W1 advertises body releases v021, v022, and v025. Each release has six
hand profiles, for 18 combinations. Equivalent body releases share a display
row while retaining their version labels and hand-specific DOFs.
Hand profile |
Left hand |
Right hand |
Control DOF |
|---|---|---|---|
|
|
|
32 |
|
|
|
22 |
|
|
|
22 |
|
|
|
22 |
|
|
|
22 |
|
No default end effector |
No default end effector |
20 |
The default is v021/BrainCo. Dexterous-hand/two-finger-gripper mixtures are
omitted from the advertised profiles. Body and hand release versions are
independent: all registered hand brands currently use hand revision v021,
including with body v022 or v025.
Choose a displayed profile through version, hand_types, and
with_default_eef; labels such as v025/DH_PGC describe a profile rather than
an additional registered robot ID:
w1_gripper_cfg = resolve_robot_cfg(
"DexforceW1",
{
"version": "v025",
"hand_types": {
"left": "DH_PGC_GRIPPER",
"right": "DH_PGC_GRIPPER",
},
"hand_versions": {"left": "v021", "right": "v021"},
},
)
w1_bare_cfg = resolve_robot_cfg(
"DexforceW1", {"version": "v025", "with_default_eef": False}
)
See Dexforce W1 for hardware releases and calibration.
Register a Third-party Catalog#
An installed package exposes a lightweight mapping through an
embodichain.robots entry point:
[project.entry-points."embodichain.robots"]
acme = "acme_robots.catalog:ROBOTS"
# acme_robots/catalog.py
ROBOTS = {
"acme.arm": {
"class_path": "acme_robots.arm:ArmCfg",
"defaults": {"variant": "standard"},
"dof": 6,
"control_parts": {"arm": 6},
"mimic_joints": {},
"control_part_mimics": {},
"supports_dual_arm": True,
},
}
Keep the catalog module and package initializer free of robot implementation
imports. class_path is required, and the selected class must implement the
RobotCfg.from_dict() contract. Defaults and display metadata are optional.
In catalog metadata, control_parts maps names to raw joint counts;
RobotCfg.control_parts itself maps names to joint patterns.
mimic_joints maps followers to leaders, and control_part_mimics lists each
part’s followers. Set supports_dual_arm=True only for a compatible single-arm
base that satisfies the assembly contract.
Robot IDs must be unique across installed catalogs. Use a vendor prefix for third-party IDs; duplicate IDs produce a CLI error. Discovery is cached for the process lifetime, so refresh the package’s installation metadata and restart the process after changing an entry point. See Adding a New Robot for the configuration implementation checklist.
Import and Selector Migration#
Import concrete presets from embodichain_robots. Generic dual-arm APIs remain
in the core:
from embodichain_robots import FrankaPandaCfg, URRobotCfg
from embodichain.lab.sim.robots import DualArmRobotCfg, build_dual_arm_cfg
from embodichain.lab.sim.robots.dual_arm import resolve_mounts
Former concrete modules and exports under embodichain.lab.sim.robots have
been removed. Select robots by exact registered IDs such as FrankaPanda,
CobotMagic, URRobot, and ur5. Historical aliases such as franka,
franka_panda, cobotmagic, and ur, and unregistered Cfg-suffixed IDs are
no longer accepted. This does not change custom robot UIDs or asset joint names.
See Robot catalogs and configurations for the resolver API and canonical configuration imports.