def test_walker_is_correctly_reinitialized( self, position_offset, rotate_180_degrees, use_variations): walker_spawn_position = position_offset if not rotate_180_degrees: walker_spawn_rotation = None else: walker_spawn_rotation = np.pi if use_variations: walker_spawn_position = deterministic.Constant(position_offset) walker_spawn_rotation = deterministic.Constant(walker_spawn_rotation) walker = cmu_humanoid.CMUHumanoid() arena = corridor_arenas.EmptyCorridor() task = corridor_tasks.RunThroughCorridor( walker=walker, arena=arena, walker_spawn_position=walker_spawn_position, walker_spawn_rotation=walker_spawn_rotation) # Randomize the initial pose and joint positions in order to check that they # are set correctly by `initialize_episode`. random_state = np.random.RandomState(12345) task.initialize_episode_mjcf(random_state) physics = mjcf.Physics.from_mjcf_model(task.root_entity.mjcf_model) walker_joints = walker.mjcf_model.find_all('joint') physics.bind(walker_joints).qpos = random_state.uniform( size=len(walker_joints)) walker.set_pose(physics, position=random_state.uniform(size=3), quaternion=rotations.UniformQuaternion()(random_state)) task.initialize_episode(physics, random_state) physics.forward() with self.subTest('Correct joint positions'): walker_qpos = physics.bind(walker_joints).qpos if walker.upright_pose.qpos is not None: np.testing.assert_array_equal(walker_qpos, walker.upright_pose.qpos) else: walker_qpos0 = physics.bind(walker_joints).qpos0 np.testing.assert_array_equal(walker_qpos, walker_qpos0) walker_xpos, walker_xquat = walker.get_pose(physics) with self.subTest('Correct position'): expected_xpos = walker.upright_pose.xpos + np.array(position_offset) np.testing.assert_array_equal(walker_xpos, expected_xpos) with self.subTest('Correct orientation'): upright_xquat = walker.upright_pose.xquat.copy() upright_xquat /= np.linalg.norm(walker.upright_pose.xquat) if rotate_180_degrees: expected_xquat = (-upright_xquat[3], -upright_xquat[2], upright_xquat[1], upright_xquat[0]) else: expected_xquat = upright_xquat np.testing.assert_allclose(walker_xquat, expected_xquat)
def testMultiplicative(self, use_constant_variation_object): amount = 23 if use_constant_variation_object: variation = noises.Multiplicative(deterministic.Constant(amount)) else: variation = noises.Multiplicative(amount) initial_value = 3 current_value = initial_value for _ in range(NUM_ITERATIONS): current_value = variation(initial_value=initial_value, current_value=current_value) self.assertEqual(current_value, initial_value * amount)
def testAdditiveCumulative(self, use_constant_variation_object): amount = 3 if use_constant_variation_object: variation = noises.Additive(deterministic.Constant(amount), cumulative=True) else: variation = noises.Additive(amount, cumulative=True) initial_value = 1 current_value = initial_value for i in range(NUM_ITERATIONS): current_value = variation(initial_value=initial_value, current_value=current_value) self.assertEqual(current_value, initial_value + amount * (i + 1))
def test_getitem(self): value = deterministic.Constant(np.array([4, 5, 6, 7, 8])) np.testing.assert_array_equal(variation.evaluate(value[[3, 1]]), [7, 5])
def setUp(self): super(VariationTest, self).setUp() self.value_1 = 3 self.variation_1 = deterministic.Constant(self.value_1) self.value_2 = 5 self.variation_2 = deterministic.Constant(self.value_2)
def setUp(self): self.value_1 = 3 self.variation_1 = deterministic.Constant(self.value_1) self.value_2 = 5 self.variation_2 = deterministic.Constant(self.value_2)