From 00567a52613077b50afa3c8f88c538c97bba2bd5 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Mon, 11 Oct 2021 12:56:15 -0700 Subject: [PATCH] remote tensorflow requirement from envs_v2 --- .../gym/pybullet_envs/examples/testEnv.py | 20 ++++++++++++ .../minitaur/envs/minitaur_logging.py | 13 ++++---- .../envs_v2/examples/laikago_pmtg_example.py | 6 ++-- .../envs_v2/locomotion_gym_config_test.py | 6 ++-- .../envs_v2/locomotion_gym_env_test.py | 31 +++++++++---------- .../minitaur/envs_v2/utilities/env_utils.py | 7 ++++- 6 files changed, 55 insertions(+), 28 deletions(-) diff --git a/examples/pybullet/gym/pybullet_envs/examples/testEnv.py b/examples/pybullet/gym/pybullet_envs/examples/testEnv.py index 5d30d27af..6c550fe4f 100644 --- a/examples/pybullet/gym/pybullet_envs/examples/testEnv.py +++ b/examples/pybullet/gym/pybullet_envs/examples/testEnv.py @@ -13,10 +13,28 @@ def test(args): count = 0 env = gym.make(args.env) env.env.configure(args) + print("args.render=", args.render) if (args.render == 1): env.render(mode="human") env.reset() + + w, h, vmat,projmat,camup,camfwd,hor,ver,yaw,pitch,dist,target= p.getDebugVisualizerCamera() + dist = 0.4 + yaw = 0 + p.resetDebugVisualizerCamera(dist,yaw, pitch,target) + + for obindex in range (p.getNumBodies()): + obuid = p.getBodyUniqueId(obindex) + p.changeDynamics(obuid, -1, linearDamping=0, angularDamping=0) + for l in range (p.getNumJoints(obuid)): + p.changeDynamics(obuid, l, linearDamping=0, angularDamping=0, jointDamping=0) + #if (l==0): + # p.setJointMotorControl2(obuid,l,p.POSITION_CONTROL,targetPosition=0) + if (l==2): + jp,jv,_,_ = p.getJointState(obuid,l) + p.resetJointState(obuid,l, jp,0.01 ) + if (args.resetbenchmark): while (1): env.reset() @@ -26,6 +44,8 @@ def test(args): print("action space:") sample = env.action_space.sample() action = sample * 0.0 + action = [0,0]#sample * 0.0 + print("action=") print(action) for i in range(args.steps): diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py index b6f1c5a3d..2cff24e94 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py @@ -18,8 +18,8 @@ os.sys.path.insert(0, parentdir) import datetime import os import time +import logging -import tensorflow.compat.v1 as tf from pybullet_envs.minitaur.envs import minitaur_logging_pb2 NUM_MOTORS = 8 @@ -74,7 +74,7 @@ def update_episode_proto(episode_proto, minitaur, action, step): """ max_num_steps = len(episode_proto.state_action) if step >= max_num_steps: - tf.logging.warning("{}th step is not recorded in the logging since only {} steps were " + logging.warning("{}th step is not recorded in the logging since only {} steps were " "pre-allocated.".format(step, max_num_steps)) return step_log = episode_proto.state_action[step] @@ -119,12 +119,13 @@ class MinitaurLogging(object): """ if not self._log_path or not episode_proto.state_action: return self._log_path - if not tf.gfile.Exists(self._log_path): - tf.gfile.MakeDirs(self._log_path) + if not os.path.exists(self._log_path): + os.mkdir(self._log_path) ts = time.time() time_stamp = datetime.datetime.fromtimestamp(ts).strftime("%Y-%m-%d-%H%M%S") log_path = os.path.join(self._log_path, "minitaur_log_{}".format(time_stamp)) - with tf.gfile.Open(log_path, "w") as f: + + with open(log_path, 'wb') as f: f.write(episode_proto.SerializeToString()) return log_path @@ -136,7 +137,7 @@ class MinitaurLogging(object): Returns: The minitaur episode proto. """ - with tf.gfile.Open(log_path, 'rb') as f: + with open(log_path, 'rb') as f: content = f.read() episode_proto = minitaur_logging_pb2.MinitaurEpisode() episode_proto.ParseFromString(content) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/examples/laikago_pmtg_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/examples/laikago_pmtg_example.py index c86c10db4..d791dd18a 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/examples/laikago_pmtg_example.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/examples/laikago_pmtg_example.py @@ -20,7 +20,8 @@ from __future__ import print_function import os import gin -import tensorflow.compat.v1 as tf +import sys + from pybullet_envs.minitaur.envs_v2 import env_loader import pybullet_data as pd @@ -81,4 +82,5 @@ def main(argv): if __name__ == "__main__": - tf.app.run(main) + + main(sys.argv) diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_config_test.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_config_test.py index fc53f02e7..343b58db0 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_config_test.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_config_test.py @@ -6,12 +6,12 @@ from __future__ import print_function import gin from pybullet_envs.minitaur.envs_v2 import locomotion_gym_config -import tensorflow.compat.v1 as tf +import unittest from absl.testing import parameterized -class LocomotionGymConfigTest(tf.test.TestCase, parameterized.TestCase): +class LocomotionGymConfigTest(unittest.TestCase): def testSimulationParametersFromGinString(self): config_text = ( @@ -72,4 +72,4 @@ class LocomotionGymConfigTest(tf.test.TestCase, parameterized.TestCase): if __name__ == '__main__': - tf.test.main() + unittest.main() diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_env_test.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_env_test.py index 51f3c9ae6..1c9ea0e9b 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_env_test.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_env_test.py @@ -10,7 +10,7 @@ import random import gin import mock import numpy as np -import tensorflow.compat.v1 as tf +import unittest from absl.testing import parameterized from pybullet_envs.minitaur.envs_v2 import locomotion_gym_env @@ -56,7 +56,7 @@ class TestTask(task_interface.Task): return False -class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase): +class LocomotionGymEnvTest(unittest.TestCase): def setUp(self): super().setUp() @@ -68,7 +68,7 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase): env = locomotion_gym_env.LocomotionGymEnv() self.assertIsInstance(env.robot, minitaur_v2.Minitaur) # The robot will stand on the ground. - self.assertNear(env.robot.base_position[2], 0.25, 5e-2) + self.assertAlmostEqual(env.robot.base_position[2], 0.25, 1) def test_reset_gym(self): gin.parse_config_file(_CONFIG_FILE) @@ -80,8 +80,8 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase): action_dim) observations = env_utils.flatten_observations(observations) self.assertEqual(observations.size, 12) - self.assertNear(observations[0], 0, 1e-2) - self.assertNear(observations[4], desired_init_motor_angle, 2e-1) + self.assertAlmostEqual(observations[0], 0, 1) + self.assertAlmostEqual(observations[4], desired_init_motor_angle, 0) def test_step_gym(self): gin.parse_config_file(_CONFIG_FILE) @@ -98,8 +98,8 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase): self.assertFalse(done) self.assertEqual(reward, steps) self.assertEqual(observations.size, 12) - self.assertNear(observations[0], 0, 1e-2) - self.assertNear(observations[4], desired_motor_angle, 2e-1) + self.assertAlmostEqual(observations[0], 0, 1) + self.assertAlmostEqual(observations[4], desired_motor_angle, 1) np.testing.assert_allclose(env._last_action, [desired_motor_angle] * action_dim, 2e-1) @@ -126,7 +126,7 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase): env = locomotion_gym_env.LocomotionGymEnv(task=None, scene=None) # The robot will free fall. - self.assertNear(env.robot.base_position[2], 0.15, 5e-2) + self.assertAlmostEqual(env.robot.base_position[2], 0.15, 1) def test_seed_draw_with_np(self): gin.parse_config_file(_CONFIG_FILE) @@ -150,12 +150,11 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase): action_dim = len(env.action_space.high) observations = env.reset(initial_motor_angles=[desired_init_motor_angle] * action_dim) - self.assertLen(observations, 2) - self.assertLen(observations['IMU'], 4) - self.assertNear(observations['IMU'][0], 0, 1e-2) - self.assertLen(observations['MotorAngle'], 8) - self.assertNear(observations['MotorAngle'][0], desired_init_motor_angle, - 2e-1) + self.assertEqual(len(observations), 2) + self.assertEqual(len(observations['IMU']), 4) + self.assertAlmostEqual(observations['IMU'][0], 0, 2) + self.assertEqual(len(observations['MotorAngle']), 8) + self.assertAlmostEqual(observations['MotorAngle'][0], desired_init_motor_angle,0) @@ -171,7 +170,7 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase): ]) env = locomotion_gym_env.LocomotionGymEnv() - self.assertLen(env.scene.dynamic_objects, 2) + self.assertEqual(len(env.scene.dynamic_objects), 2) for obj in env.scene.dynamic_objects: self.assertIsInstance(obj, autonomous_object.AutonomousObject) @@ -238,4 +237,4 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase): if __name__ == '__main__': - tf.test.main() + unittest.main() diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/utilities/env_utils.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/utilities/env_utils.py index f82283bf3..5ae427a43 100644 --- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/utilities/env_utils.py +++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/utilities/env_utils.py @@ -8,8 +8,13 @@ import collections import gin from gym import spaces import numpy as np +import traceback +import logging -import tensorflow.compat.v1 as tf +try: + import tensorflow.compat.v1 as tf +except Exception as e: + pass # logging.warning(traceback.format_exc())