class DClawPoseRandomDynamics(DClawPoseRandom): """Track a random moving pose. The dynamics of the simulation are randomized each episode. """ def __init__(self, *args, sim_observation_noise: Optional[float] = 0.05, **kwargs): super().__init__(*args, sim_observation_noise=sim_observation_noise, **kwargs) self._randomizer = SimRandomizer(self) self._dof_indices = ( self.robot.get_config('dclaw').qvel_indices.tolist()) def _reset(self): # Randomize joint dynamics. self._randomizer.randomize_dofs( self._dof_indices, damping_range=(0.005, 0.1), friction_loss_range=(0.001, 0.005), ) self._randomizer.randomize_actuators( all_same=True, kp_range=(1, 3), ) super()._reset()
def __init__(self, *args, sim_observation_noise: Optional[float] = 0.05, **kwargs): super().__init__( *args, sim_observation_noise=sim_observation_noise, **kwargs) self._randomizer = SimRandomizer(self) self._dof_indices = ( self.robot.get_config('dkitty').qvel_indices.tolist())
class DKittyWalkRandomDynamics(DKittyWalkFixed): """Walk straight towards a random location.""" def __init__(self, *args, sim_observation_noise: Optional[float] = 0.05, **kwargs): super().__init__( *args, sim_observation_noise=sim_observation_noise, **kwargs) self._randomizer = SimRandomizer(self) self._dof_indices = ( self.robot.get_config('dkitty').qvel_indices.tolist()) def _reset(self): """Resets the environment.""" # Randomize joint dynamics. self._randomizer.randomize_dofs( self._dof_indices, all_same=True, damping_range=(0.1, 0.2), friction_loss_range=(0.001, 0.005), ) self._randomizer.randomize_actuators( all_same=True, kp_range=(2.5, 3.0), ) # Randomize friction on all geoms in the scene. self._randomizer.randomize_geoms( all_same=True, friction_slide_range=(0.8, 1.2), friction_spin_range=(0.003, 0.007), friction_roll_range=(0.00005, 0.00015), ) # Generate a random height field. self._randomizer.randomize_global( total_mass_range=(1.6, 2.0), # height_field_range=(0, 0.05), ) if len(self.sim.render_contexts) > 0: self.sim_scene.upload_height_field(0) super()._reset()
class DKittyStandRandomDynamics(DKittyStandRandom): """Stand up from a random positon with randomized dynamics.""" def __init__(self, *args, sim_observation_noise: Optional[float] = 0.05, **kwargs): super().__init__( *args, sim_observation_noise=sim_observation_noise, **kwargs) self._randomizer = SimRandomizer(self) self._dof_indices = ( self.robot.get_config('dkitty').qvel_indices.tolist()) def _reset(self): """Resets the environment.""" # Randomize joint dynamics. self._randomizer.randomize_dofs( self._dof_indices, all_same=True, damping_range=(0.1, 0.2), friction_loss_range=(0.001, 0.005), ) self._randomizer.randomize_actuators( all_same=True, kp_range=(2, 4), ) # Randomize friction on all geoms in the scene. self._randomizer.randomize_geoms( all_same=True, friction_slide_range=(0.8, 1.2), friction_spin_range=(0.003, 0.007), friction_roll_range=(0.00005, 0.00015), ) # Generate a random height field. self._randomizer.randomize_global( total_mass_range=(1.6, 2.0), height_field_range=(0, 0.05), ) self.sim_scene.upload_height_field(0) super()._reset()
class DKittyRandomDynamics(BaseDKittyWalk): """Walk straight towards a random location.""" def __init__(self, *args, randomize_hfield=0.0, **kwargs): super().__init__(*args, **kwargs) self._randomizer = SimRandomizer(self) self._randomize_hfield = randomize_hfield self._dof_indices = self.robot.get_config( "dkitty").qvel_indices.tolist() def _reset(self): """Resets the environment.""" # Randomize joint dynamics. self._randomizer.randomize_dofs( self._dof_indices, all_same=True, damping_range=(0.1, 0.2), friction_loss_range=(0.001, 0.005), ) self._randomizer.randomize_actuators( all_same=True, kp_range=(2.8, 3.2), ) # Randomize friction on all geoms in the scene. self._randomizer.randomize_geoms( all_same=True, friction_slide_range=(0.8, 1.2), friction_spin_range=(0.003, 0.007), friction_roll_range=(0.00005, 0.00015), ) # Generate a random height field. self._randomizer.randomize_global( total_mass_range=(1.6, 2.0), height_field_range=(0, self._randomize_hfield), ) # if self._randomize_hfield > 0.0: # self.sim_scene.upload_height_field(0) super()._reset()
def __init__(self, *args, randomize_hfield=0.0, **kwargs): super().__init__(*args, **kwargs) self._randomizer = SimRandomizer(self) self._randomize_hfield = randomize_hfield self._dof_indices = self.robot.get_config( "dkitty").qvel_indices.tolist()
class DClawScrewRandomDynamics(DClawScrewRandom): """Rotates the object with a random initial position and velocity. The dynamics of the simulation are randomized each episode. """ def __init__(self, *args, sim_observation_noise: Optional[float] = 0.05, **kwargs): super().__init__( *args, sim_observation_noise=sim_observation_noise, **kwargs) self._randomizer = SimRandomizer(self) self._dof_indices = ( self.robot.get_config('dclaw').qvel_indices.tolist() + self.robot.get_config('object').qvel_indices.tolist()) def _reset(self): # Randomize joint dynamics. self._randomizer.randomize_dofs( self._dof_indices, damping_range=(0.005, 0.1), friction_loss_range=(0.001, 0.005), ) self._randomizer.randomize_actuators( all_same=True, kp_range=(1, 3), ) # Randomize friction on all geoms in the scene. self._randomizer.randomize_geoms( all_same=True, friction_slide_range=(0.8, 1.2), friction_spin_range=(0.003, 0.007), friction_roll_range=(0.00005, 0.00015), ) self._randomizer.randomize_bodies( ['mount'], position_perturb_range=(-0.01, 0.01), ) self._randomizer.randomize_geoms( ['mount'], color_range=(0.2, 0.9), ) self._randomizer.randomize_geoms( parent_body_names=['valve'], color_range=(0.2, 0.9), ) super()._reset()