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
andenv_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