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 @updatedecorator
- First two parameters must be envandenv_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"
    )
Related Components 🔗
- 🏗️ PhysicsModifierManager: Uses these configurations to instantiate physics modifiers
- 🎨 @update decorator: Required for all physics modifier functions
- ⚙️ ManagerTermBaseCfg: Base configuration class providing common functionality