VLAdaptorBench / external /rlbench /tests /unit /test_domain_randomization_environment.py
lsnu's picture
Add files using upload-large-folder tool
a32fcea verified
import unittest
from os import path
import numpy as np
from pyrep.const import RenderMode
from rlbench import Environment
from rlbench.action_modes.action_mode import MoveArmThenGripper
from rlbench.action_modes.arm_action_modes import JointVelocity
from rlbench.action_modes.gripper_action_modes import Discrete
from rlbench.observation_config import ObservationConfig, CameraConfig
from rlbench.sim2real.domain_randomization import RandomizeEvery, \
VisualRandomizationConfig
from rlbench.tasks.open_microwave import OpenMicrowave
ASSET_DIR = path.join(path.dirname(path.abspath(__file__)), 'assets', 'textures')
class TestDomainRandomizaionEnvironment(unittest.TestCase):
def tearDown(self):
self.env.shutdown()
def get_task(self, randomize_every, frequency, visual_config=None,
dynamics_config=None):
cam_config = CameraConfig(render_mode=RenderMode.OPENGL)
obs_config = ObservationConfig(right_shoulder_camera=cam_config)
obs_config.set_all(False)
obs_config.set_all_low_dim(True)
obs_config.right_shoulder_camera.rgb = True
mode = MoveArmThenGripper(JointVelocity(), Discrete())
self.env = Environment(
mode, ASSET_DIR, obs_config, True, True, 'panda',
randomize_every, frequency, visual_config, dynamics_config)
self.env.launch()
return self.env.get_task(OpenMicrowave)
def test_visual_randomize_every_2_episodes(self):
visual_config = VisualRandomizationConfig(ASSET_DIR)
task = self.get_task(RandomizeEvery.EPISODE, 2, visual_config)
_, obs1 = task.reset()
_, obs2 = task.reset()
_, obs3 = task.reset()
# obs1 and obs2 should be almost identical
self.assertLess(
np.mean(np.abs(obs1.right_shoulder_rgb - obs2.right_shoulder_rgb)),
5)
# obs2 and obs3 should be very different
self.assertGreater(
np.mean(np.abs(obs2.right_shoulder_rgb - obs3.right_shoulder_rgb)),
5)
def test_visual_randomize_every_2_transitions(self):
visual_config = VisualRandomizationConfig(ASSET_DIR)
task = self.get_task(RandomizeEvery.TRANSITION, 2, visual_config)
_, _ = task.reset()
a = ([0.0] * 7) + [1.0]
obs1, _, _ = task.step(a)
obs2, _, _ = task.step(a)
obs3, _, _ = task.step(a)
# obs1 and obs2 should be almost identical
self.assertLess(
np.mean(np.abs(obs1.right_shoulder_rgb - obs2.right_shoulder_rgb)),
5)
# obs2 and obs3 should be very different
self.assertGreater(
np.mean(np.abs(obs2.right_shoulder_rgb - obs3.right_shoulder_rgb)),
5)