Skip to main content

physics_modifier_cfg

Module: GBC.gyms.isaaclab_45.managers.physics_modifier_cfg

Overview 📖

This module provides configuration classes for physics modifier terms used by the PhysicsModifierManager. It defines the structure and parameters needed to register physics modifier functions in the curriculum learning system.

Configuration Classes 🔧

PhysicsModifierTermCfg ⚙️

Inheritance: ManagerTermBaseCfg

Configuration class for individual physics modifier terms that defines how physics modifiers are registered and parameterized within the physics modification system.

Attributes

func 🎯
func: Callable = MISSING

Type: Callable
Required: Yes
Description: The physics modifier function that will be executed. Must be decorated with @update from physics_modifier_function_wrapper.

Requirements:

  • Function must have @update decorator
  • First two parameters must be env and env_ids
  • Must implement physics modification logic
description 📝
description: str = ""

Type: str
Required: No
Default: ""
Description: Human-readable description of the physics modifier's purpose and behavior.

Usage Example 🚀

from GBC.gyms.isaaclab_45.managers.physics_modifier_cfg import PhysicsModifierTermCfg
from GBC.gyms.isaaclab_45.managers.physics_modifier_function_wrapper import update

@update(update_strategy=custom_strategy)
def external_force_modifier(env, env_ids, max_force=1000.0, duration=1.0):
"""Apply external forces for curriculum learning"""
# Implementation here
pass

# Configuration registration
external_force_cfg = PhysicsModifierTermCfg(
func=external_force_modifier,
params={
"max_force": 1500.0,
"duration": 2.0,
"asset_cfg": SceneEntityCfg("robot", body_names=["base_link"])
},
description="External force application for baby walker training"
)

Integration with Manager 🔗

The configuration is used by PhysicsModifierManager during term preparation:

@configclass
class PhysicsModifiersCfg:
"""Physics modifiers configuration"""

force_assist = PhysicsModifierTermCfg(
func=external_z_force_base,
params={"max_force": 1500.0, "apply_offset_range": 0.15},
description="Z-direction force assistance"
)

random_push = PhysicsModifierTermCfg(
func=random_push_modifier,
params={"push_magnitude": 100.0, "push_frequency": 0.1},
description="Random external pushes for robustness"
)
  • 🏗️ PhysicsModifierManager: Uses these configurations to instantiate physics modifiers
  • 🎨 @update decorator: Required for all physics modifier functions
  • ⚙️ ManagerTermBaseCfg: Base configuration class providing common functionality