protomotions.robot_configs module

Robot configuration classes defining morphology and control parameters.

Base Configuration

class protomotions.robot_configs.base.RobotConfig(asset, common_naming_to_robot_body_names=<factory>, default_root_height=1, default_dof_pos=None, contact_bodies=None, trackable_bodies_subset='all', non_termination_contact_bodies='all', init_state=None, mimic_small_marker_bodies=None, contact_pairs_multiplier=16, control=<factory>, simulation_params=<factory>)[source]

Bases: ConfigBuilder

Configuration for robot morphology and control parameters.

Defines all robot-specific parameters including asset files, body names, control settings, and physical properties. Each robot (SMPL, G1, etc.) should subclass this and provide robot-specific values.

Key configuration areas:

  • Asset: Robot mesh/URDF files and physical properties

  • Body Names: Named body parts for tracking and observations

  • Control: PD gains, action scales, and control modes

  • Kinematic Info: Joint structure extracted from MJCF/URDF

  • Simulator Params: Simulator-specific overrides

Example:

config = RobotConfig(
    asset=RobotAssetConfig(asset_file_name="robot.xml"),
    control=ControlConfig(control_type=ControlType.BUILT_IN_PD)
)
asset: RobotAssetConfig
common_naming_to_robot_body_names: Dict[str, List[str]]
default_root_height: float = 1
default_dof_pos: List[float] | MockTensor | None = None
contact_bodies: List[str] | str | None = None
trackable_bodies_subset: List[str] | str = 'all'
non_termination_contact_bodies: List[str] | str = 'all'
init_state: InitState | None = None
mimic_small_marker_bodies: List[str] | None = None
contact_pairs_multiplier: int = 16
control: ControlConfig
kinematic_info: KinematicInfo
number_of_actions: int
simulation_params: SimulatorParams
__post_init__()[source]

Compute derived fields after initialization.

update_fields(**kwargs)[source]

Update robot config fields and reprocess derived fields.

This is useful when you need to modify fields after initialization without manually calling __post_init__.

Parameters:

**kwargs – Fields to update on the robot config

__init__(asset, common_naming_to_robot_body_names=<factory>, default_root_height=1, default_dof_pos=None, contact_bodies=None, trackable_bodies_subset='all', non_termination_contact_bodies='all', init_state=None, mimic_small_marker_bodies=None, contact_pairs_multiplier=16, control=<factory>, simulation_params=<factory>)

SMPL Humanoid

class protomotions.robot_configs.smpl.SmplRobotConfig(asset: protomotions.robot_configs.base.RobotAssetConfig = <factory>, common_naming_to_robot_body_names: Dict[str, str] = <factory>, default_root_height: float = 0.95, default_dof_pos: Union[List[float], MockTensor, NoneType] = None, contact_bodies: Union[List[str], str, NoneType] = None, trackable_bodies_subset: List[str] = <factory>, non_termination_contact_bodies: List[str] = <factory>, init_state: Optional[protomotions.robot_configs.base.InitState] = None, mimic_small_marker_bodies: Optional[List[str]] = None, contact_pairs_multiplier: int = 16, control: protomotions.robot_configs.base.ControlConfig = <factory>, simulation_params: protomotions.robot_configs.base.SimulatorParams = <factory>)[source]

Bases: RobotConfig

default_root_height: float = 0.95
simulation_params: SimulatorParams
__init__(asset=<factory>, common_naming_to_robot_body_names=<factory>, default_root_height=0.95, default_dof_pos=None, contact_bodies=None, trackable_bodies_subset=<factory>, non_termination_contact_bodies=<factory>, init_state=None, mimic_small_marker_bodies=None, contact_pairs_multiplier=16, control=<factory>, simulation_params=<factory>)

SMPL-X Humanoid

class protomotions.robot_configs.smplx.SMPLXRobotConfig(asset: protomotions.robot_configs.base.RobotAssetConfig = <factory>, common_naming_to_robot_body_names: Dict[str, List[str]] = <factory>, default_root_height: float = 0.95, default_dof_pos: Union[List[float], MockTensor, NoneType] = None, contact_bodies: List[str] = <factory>, trackable_bodies_subset: Union[List[str], str] = 'all', non_termination_contact_bodies: List[str] = <factory>, init_state: Optional[protomotions.robot_configs.base.InitState] = None, mimic_small_marker_bodies: List[str] = <factory>, contact_pairs_multiplier: int = 20, control: protomotions.robot_configs.base.ControlConfig = <factory>, simulation_params: protomotions.robot_configs.base.SimulatorParams = <factory>)[source]

Bases: RobotConfig

default_root_height: float = 0.95
contact_pairs_multiplier: int = 20
simulation_params: SimulatorParams
__init__(asset=<factory>, common_naming_to_robot_body_names=<factory>, default_root_height=0.95, default_dof_pos=None, contact_bodies=<factory>, trackable_bodies_subset='all', non_termination_contact_bodies=<factory>, init_state=None, mimic_small_marker_bodies=<factory>, contact_pairs_multiplier=20, control=<factory>, simulation_params=<factory>)

Unitree H1 (Version 2)

class protomotions.robot_configs.h1_2.H1_2RobotConfig(asset: protomotions.robot_configs.base.RobotAssetConfig = <factory>, common_naming_to_robot_body_names: Dict[str, List[str]] = <factory>, default_root_height: float = 1.03, default_dof_pos: Union[List[float], MockTensor, NoneType] = None, contact_bodies: Union[List[str], str, NoneType] = None, trackable_bodies_subset: List[str] = <factory>, non_termination_contact_bodies: Union[List[str], str] = 'all', init_state: Optional[protomotions.robot_configs.base.InitState] = None, mimic_small_marker_bodies: Optional[List[str]] = None, contact_pairs_multiplier: int = 16, control: protomotions.robot_configs.base.ControlConfig = <factory>, simulation_params: protomotions.robot_configs.base.SimulatorParams = <factory>)[source]

Bases: RobotConfig

default_root_height: float = 1.03
simulation_params: SimulatorParams
__init__(asset=<factory>, common_naming_to_robot_body_names=<factory>, default_root_height=1.03, default_dof_pos=None, contact_bodies=None, trackable_bodies_subset=<factory>, non_termination_contact_bodies='all', init_state=None, mimic_small_marker_bodies=None, contact_pairs_multiplier=16, control=<factory>, simulation_params=<factory>)

Unitree G1

class protomotions.robot_configs.g1.G1RobotConfig(asset: protomotions.robot_configs.base.RobotAssetConfig = <factory>, common_naming_to_robot_body_names: Dict[str, List[str]] = <factory>, default_root_height: float = 0.8, default_dof_pos: Union[List[float], MockTensor, NoneType] = None, contact_bodies: Union[List[str], str, NoneType] = None, trackable_bodies_subset: List[str] = <factory>, non_termination_contact_bodies: Union[List[str], str] = 'all', init_state: Optional[protomotions.robot_configs.base.InitState] = None, mimic_small_marker_bodies: Optional[List[str]] = None, contact_pairs_multiplier: int = 16, control: protomotions.robot_configs.base.ControlConfig = <factory>, simulation_params: protomotions.robot_configs.base.SimulatorParams = <factory>)[source]

Bases: RobotConfig

default_root_height: float = 0.8
simulation_params: SimulatorParams
__init__(asset=<factory>, common_naming_to_robot_body_names=<factory>, default_root_height=0.8, default_dof_pos=None, contact_bodies=None, trackable_bodies_subset=<factory>, non_termination_contact_bodies='all', init_state=None, mimic_small_marker_bodies=None, contact_pairs_multiplier=16, control=<factory>, simulation_params=<factory>)

AMP Humanoid

class protomotions.robot_configs.amp.AMPRobotConfig(asset: protomotions.robot_configs.base.RobotAssetConfig = <factory>, common_naming_to_robot_body_names: Dict[str, List[str]] = <factory>, default_root_height: float = 0.8, default_dof_pos: Union[List[float], MockTensor, NoneType] = None, contact_bodies: Union[List[str], str, NoneType] = None, trackable_bodies_subset: List[str] = <factory>, non_termination_contact_bodies: Union[List[str], str] = 'all', init_state: Optional[protomotions.robot_configs.base.InitState] = None, mimic_small_marker_bodies: Optional[List[str]] = None, contact_pairs_multiplier: int = 16, control: protomotions.robot_configs.base.ControlConfig = <factory>, simulation_params: protomotions.robot_configs.base.SimulatorParams = <factory>)[source]

Bases: RobotConfig

default_root_height: float = 0.8
simulation_params: SimulatorParams
__init__(asset=<factory>, common_naming_to_robot_body_names=<factory>, default_root_height=0.8, default_dof_pos=None, contact_bodies=None, trackable_bodies_subset=<factory>, non_termination_contact_bodies='all', init_state=None, mimic_small_marker_bodies=None, contact_pairs_multiplier=16, control=<factory>, simulation_params=<factory>)