Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:ARISE Initiative Robosuite DynamicsModder

From Leeroopedia

Metadata:

Overview

Concrete class for randomizing physics dynamics parameters in MuJoCo simulations provided by the robosuite modding utilities.

Description

DynamicsModder modifies MjModel physical parameters including: global (density, viscosity), body (position, quaternion, inertia, mass), geom (friction, solref, solimp), and joint (stiffness, frictionloss, damping, armature). Requires modder.update() after modifications to propagate changes. Inherits from BaseModder.

Usage

Used internally by DomainRandomizationWrapper. Can be used standalone for custom dynamics randomization.

Code Reference

  • Source: robosuite
  • File: robosuite/utils/mjmod.py
  • Lines: L1405-1997
  • Signature:
class DynamicsModder(BaseModder):
    def __init__(self, sim, random_state=None,
                 randomize_density=True, randomize_viscosity=True,
                 density_perturbation_ratio=0.1, viscosity_perturbation_ratio=0.1,
                 body_names=None, randomize_position=True, randomize_quaternion=True,
                 randomize_inertia=True, randomize_mass=True,
                 position_perturbation_size=0.02, quaternion_perturbation_size=0.02,
                 inertia_perturbation_ratio=0.02, mass_perturbation_ratio=0.02,
                 geom_names=None, randomize_friction=True, randomize_solref=True,
                 randomize_solimp=True, friction_perturbation_ratio=0.1,
                 solref_perturbation_ratio=0.1, solimp_perturbation_ratio=0.1,
                 joint_names=None, randomize_stiffness=True, randomize_frictionloss=True,
                 randomize_damping=True, randomize_armature=True,
                 stiffness_perturbation_ratio=0.1, frictionloss_perturbation_size=0.05,
                 damping_perturbation_size=0.01, armature_perturbation_size=0.01):
  • Import: from robosuite.utils.mjmod import DynamicsModder

I/O Contract

Inputs:

  • sim (MjSim, Required): MuJoCo simulation instance to modify
  • random_state (RandomState, Optional): Random state for reproducibility
  • body_names (list, Optional, Default: all elements): Body names to randomize
  • geom_names (list, Optional, Default: all elements): Geometry names to randomize
  • joint_names (list, Optional, Default: all elements): Joint names to randomize
  • All randomize_* parameters (bool, Optional, Default: True): Enable/disable specific randomizations
  • All *_perturbation_* parameters (float, Optional): Perturbation magnitudes (see defaults in signature)

Methods:

  • randomize(): Apply random perturbations to configured parameters
  • save_defaults(): Store current parameter values as defaults
  • restore_defaults(): Reset parameters to saved defaults
  • update(): Must call after modifications to propagate changes to simulation

Usage Examples

The DynamicsModder is typically used through the DomainRandomizationWrapper by specifying dynamics_randomization_args:

from robosuite.wrappers import DomainRandomizationWrapper

# Configure dynamics randomization parameters
dynamics_args = {
    'randomize_density': True,
    'density_perturbation_ratio': 0.15,
    'randomize_friction': True,
    'friction_perturbation_ratio': 0.2,
    'randomize_mass': True,
    'mass_perturbation_ratio': 0.1,
}

# Wrap environment with domain randomization
env = DomainRandomizationWrapper(
    env,
    dynamics_randomization_args=dynamics_args
)

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment