diff --git a/robohive/envs/multi_task/utils/parse_demos.py b/robohive/envs/multi_task/utils/parse_demos.py
index 65795e3a..6ad26b0f 100644
--- a/robohive/envs/multi_task/utils/parse_demos.py
+++ b/robohive/envs/multi_task/utils/parse_demos.py
@@ -84,7 +84,7 @@ def render_demos(env, data, filename='demo_rendering.mp4', render=None):
# playback demos and get data(physics respected)
def gather_training_data(env, data, filename='demo_playback.mp4', render=None):
- env = env.env
+ env = env.unwrapped
FPS = 30
render_skip = max(1, round(1. / \
(FPS * env.sim.model.opt.timestep * env.frame_skip)))
@@ -127,7 +127,7 @@ def gather_training_data(env, data, filename='demo_playback.mp4', render=None):
# normalization and env stepping
act = (ctrl - act_mid) / act_rng
act = np.clip(act, -0.999, 0.999)
- next_obs, reward, done, env_info = env.step(act)
+ next_obs, reward, done, *_, env_info = env.step(act)
path_reward += reward
# populate path
diff --git a/robohive/envs/myo/myodm/myodm_v0.py b/robohive/envs/myo/myodm/myodm_v0.py
index abd47ea0..4c9ebeeb 100644
--- a/robohive/envs/myo/myodm/myodm_v0.py
+++ b/robohive/envs/myo/myodm/myodm_v0.py
@@ -285,7 +285,7 @@ def playback(self):
ref_mot = self.ref.get_reference(self.time+self.motion_start_time)
self.qpos_from_robot_object(self.sim.data.qpos, ref_mot.robot, ref_mot.object )
self.sim.forward()
- self.sim.data.time = self.sim.data.time + 0.02#self.env.env.dt
+ self.sim.data.time = self.sim.data.time + 0.02#self.env.unwrapped.dt
return idxs[0] < self.ref.horizon-1
diff --git a/robohive/envs/tcdm/playback_mocap.py b/robohive/envs/tcdm/playback_mocap.py
index 44ce818a..18aa72a5 100644
--- a/robohive/envs/tcdm/playback_mocap.py
+++ b/robohive/envs/tcdm/playback_mocap.py
@@ -25,7 +25,7 @@
# envMyoSuit=gym.make('MyoHandAirplanePass-v0')
envMyoSuit=gym.make(args.sim_name)
- physics_myo=envMyoSuit.env.sim
+ physics_myo=envMyoSuit.unwrapped.sim
# jx_mocap coordinates
# for i,b in enumerate(BODIES): #print(b,i, physics_myo.sim.named.data.xipos[b])
# print(f"
\" ")
diff --git a/robohive/envs/tcdm/track.py b/robohive/envs/tcdm/track.py
index af75b558..408b8c38 100644
--- a/robohive/envs/tcdm/track.py
+++ b/robohive/envs/tcdm/track.py
@@ -273,7 +273,7 @@ def playback(self):
ref_mot = self.ref.get_reference(self.time)
self.qpos_from_robot_object(self.sim.data.qpos, ref_mot.robot, ref_mot.object )
self.sim.forward()
- self.sim.data.time = self.sim.data.time + 0.02#self.env.env.dt
+ self.sim.data.time = self.sim.data.time + 0.02#self.env.unwrapped.dt
return idxs[0] < self.ref.horizon-1
diff --git a/robohive/robot/robot.py b/robohive/robot/robot.py
index 4daa9a5d..aa559712 100644
--- a/robohive/robot/robot.py
+++ b/robohive/robot/robot.py
@@ -802,8 +802,9 @@ def demo_robot():
from robohive.utils import gym
prompt("Starting Robot===================")
- env = gym.make('FrankaReachFixed-v0')
- rob = env.env.robot
+ envw = gym.make('FrankaReachFixed-v0')
+ env = envw.unwrapped
+ rob = env.robot
prompt("Getting sensor data==============")
sen = rob.get_sensors()
@@ -811,16 +812,16 @@ def demo_robot():
prompt(sen)
prompt("stepping forward=================")
- ctrl = env.env.np_random.uniform(size=env.env.sim.model.nu)
+ ctrl = env.np_random.uniform(size=env.sim.model.nu)
rob.step(ctrl, 1.0)
prompt("Resetting Robot==================")
- pos = env.env.np_random.uniform(size=env.env.sim.model.nq)
- vel = env.env.np_random.uniform(size=env.env.sim.model.nv)
+ pos = env.np_random.uniform(size=env.sim.model.nq)
+ vel = env.np_random.uniform(size=env.sim.model.nv)
rob.reset(pos, vel)
prompt("Closing Robot====================")
rob.close()
if __name__ == '__main__':
- demo_robot()
\ No newline at end of file
+ demo_robot()
diff --git a/robohive/tests/test_envs.py b/robohive/tests/test_envs.py
index 5b6598fb..998d446c 100644
--- a/robohive/tests/test_envs.py
+++ b/robohive/tests/test_envs.py
@@ -123,30 +123,31 @@ def check_old_envs(self, module_name, env_names, lite=False, seed=1234):
for env_name in env_names:
print("Testing env: ", env_name)
# test init
- env = gym.make(env_name)
+ envw = gym.make(env_name)
+ env = envw.unwrapped
env.seed(seed)
# test reset
- env.env.reset()
+ env.reset()
# test obs vec
- obs = env.env.get_obs()
+ obs = env.get_obs()
if not lite:
# test obs dict
- obs_dict = env.env.get_obs_dict(env.env.sim)
+ obs_dict = env.get_obs_dict(env.sim)
# test rewards
- rwd = env.env.get_reward_dict(obs_dict)
+ rwd = env.get_reward_dict(obs_dict)
# test vector => dict upgrade
- # print(env.env.get_obs() - env.env.get_obs_vec())
- # assert (env.env.get_obs() == env.env.get_obs_vec()).all(), "check vectorized computations"
+ # print(env.get_obs() - env.get_obs_vec())
+ # assert (env.get_obs() == env.get_obs_vec()).all(), "check vectorized computations"
# test env infos
- infos = env.unwrapped.get_env_infos()
+ infos = env.get_env_infos()
# test step (everything together)
- observation, _reward, done, _info = env.env.step(np.zeros(env.env.sim.model.nu))
- del(env)
+ observation, _reward, done, *_, _info = env.step(np.zeros(env.sim.model.nu))
+ del(envw)
if __name__ == '__main__':
diff --git a/robohive/tutorials/3_get_obs_proprio_extero.ipynb b/robohive/tutorials/3_get_obs_proprio_extero.ipynb
index ad9614f1..166899a3 100644
--- a/robohive/tutorials/3_get_obs_proprio_extero.ipynb
+++ b/robohive/tutorials/3_get_obs_proprio_extero.ipynb
@@ -213,7 +213,7 @@
"outputs": [],
"source": [
"# Recover all info at current timestep: obs(t), rwd(t), done(t), info(t)\n",
- "obs_t, rwd_t, done_t, info_t = env.env.forward(update_proprioception=True, update_exteroception=True)\n",
+ "obs_t, rwd_t, done_t, *_, info_t = env.unwrapped.forward(update_proprioception=True, update_exteroception=True)\n",
"print(f\"time = {env.obs_dict['time']}\")\n",
"print(f\"obs vector = {obs_t}\")\n",
"print(f\"obs_dict = {env.obs_dict.keys()}\")\n",
@@ -221,7 +221,7 @@
"print(f\"visual_dict = {env.visual_dict.keys()}\")\n",
"\n",
"# Recover info at the next timestep: obs(t+dt), rwd(t+dt), done(t+dt), info(t+dt)\n",
- "obs_tdt, rwd_tdt, done_tdt, info_tdt = env.env.step(env.action_space.sample(), update_proprioception=True, update_exteroception=True)\n",
+ "obs_tdt, rwd_tdt, done_tdt, *_, info_tdt = env.unwrapped.step(env.action_space.sample(), update_proprioception=True, update_exteroception=True)\n",
"print(f\"time = {env.obs_dict['time']}\")\n",
"print(f\"obs vector = {obs_tdt}\")\n",
"print(f\"obs_dict = {env.obs_dict.keys()}\")\n",
diff --git a/robohive/tutorials/ee_teleop.py b/robohive/tutorials/ee_teleop.py
index 2808e775..c0eab658 100644
--- a/robohive/tutorials/ee_teleop.py
+++ b/robohive/tutorials/ee_teleop.py
@@ -180,9 +180,10 @@ def main(env_name, env_args, reset_noise, action_noise, input_device, output, ho
# seed and load environments
np.random.seed(seed)
- env = gym.make(env_name) if env_args==None else gym.make(env_name, **(eval(env_args)))
+ envw = gym.make(env_name) if env_args==None else gym.make(env_name, **(eval(env_args)))
+ env = envw.unwrapped
env.seed(seed)
- env.env.mujoco_render_frames = True if 'onscreen'in render else False
+ env.mujoco_render_frames = True if 'onscreen'in render else False
goal_sid = env.sim.model.site_name2id(goal_site)
env.sim.model.site_rgba[goal_sid][3] = 0.2 # make visible
@@ -211,7 +212,7 @@ def main(env_name, env_args, reset_noise, action_noise, input_device, output, ho
env.reset(reset_qpos=env.init_qpos+reset_noise, blocking=True)
# recover init state
- obs, rwd, done, env_info = env.forward()
+ obs, rwd, done, *_, env_info = env.forward()
act = np.zeros(env.action_space.shape)
gripper_state = 0
@@ -254,9 +255,9 @@ def main(env_name, env_args, reset_noise, action_noise, input_device, output, ho
act[:7] = ik_result.qpos[:7]
act[7:] = gripper_state
if action_noise:
- act = act + env.env.np_random.uniform(high=action_noise, low=-action_noise, size=len(act)).astype(act.dtype)
+ act = act + env.np_random.uniform(high=action_noise, low=-action_noise, size=len(act)).astype(act.dtype)
if env.normalize_act:
- act = env.env.robot.normalize_actions(act)
+ act = env.robot.normalize_actions(act)
# nan actions for last log entry
act = np.nan*np.ones(env.action_space.shape) if i_step == horizon else act
@@ -275,7 +276,7 @@ def main(env_name, env_args, reset_noise, action_noise, input_device, output, ho
# step env using action from t=>t+1 ----------------------
if i_step < horizon: #incase last actions (nans) can cause issues in step
- obs, rwd, done, env_info = env.step(act)
+ obs, rwd, done, *_, env_info = env.step(act)
print("rollout {} end".format(i_rollout))
@@ -294,4 +295,4 @@ def main(env_name, env_args, reset_noise, action_noise, input_device, output, ho
if __name__ == '__main__':
- main()
\ No newline at end of file
+ main()
diff --git a/robohive/tutorials/ee_teleop_oculus.py b/robohive/tutorials/ee_teleop_oculus.py
index bd8f3165..b54715c4 100644
--- a/robohive/tutorials/ee_teleop_oculus.py
+++ b/robohive/tutorials/ee_teleop_oculus.py
@@ -83,9 +83,10 @@ def main(env_name, env_args, reset_noise, action_noise, output, horizon, num_rol
# seed and load environments
np.random.seed(seed)
- env = gym.make(env_name) if env_args==None else gym.make(env_name, **(eval(env_args)))
+ envw = gym.make(env_name) if env_args==None else gym.make(env_name, **(eval(env_args)))
+ env = envw.unwrapped
env.seed(seed)
- env.env.mujoco_render_frames = True if 'onscreen'in render else False
+ env.mujoco_render_frames = True if 'onscreen'in render else False
goal_sid = env.sim.model.site_name2id(goal_site)
teleop_sid = env.sim.model.site_name2id(teleop_site)
env.sim.model.site_rgba[goal_sid][3] = 0.2 # make visible
@@ -128,7 +129,7 @@ def main(env_name, env_args, reset_noise, action_noise, output, horizon, num_rol
env.sim.model.site_quat[goal_sid] = mat2quat(np.reshape(env.sim.data.site_xmat[teleop_sid], [3,-1]))
# recover init state
- obs, rwd, done, env_info = env.forward()
+ obs, rwd, done, *_, env_info = env.forward()
act = np.zeros(env.action_space.shape)
gripper_state = 0
@@ -201,9 +202,9 @@ def main(env_name, env_args, reset_noise, action_noise, output, horizon, num_rol
act[:7] = ik_result.qpos[:7]
act[7:] = gripper_state
if action_noise:
- act = act + env.env.np_random.uniform(high=action_noise, low=-action_noise, size=len(act)).astype(act.dtype)
+ act = act + env.np_random.uniform(high=action_noise, low=-action_noise, size=len(act)).astype(act.dtype)
if env.normalize_act:
- act = env.env.robot.normalize_actions(act)
+ act = env.robot.normalize_actions(act)
# nan actions for last log entry
act = np.nan*np.ones(env.action_space.shape) if i_step == horizon else act
@@ -222,7 +223,7 @@ def main(env_name, env_args, reset_noise, action_noise, output, horizon, num_rol
# step env using action from t=>t+1 ----------------------
if i_step < horizon: #incase last actions (nans) can cause issues in step
- obs, rwd, done, env_info = env.step(act)
+ obs, rwd, done, *_, env_info = env.step(act)
# Detect jumps
qpos_now = env_info['obs_dict']['qp_arm']
@@ -251,4 +252,4 @@ def main(env_name, env_args, reset_noise, action_noise, output, horizon, num_rol
if __name__ == '__main__':
- main()
\ No newline at end of file
+ main()
diff --git a/setup.py b/setup.py
index 7af1f1d7..bbfac246 100644
--- a/setup.py
+++ b/setup.py
@@ -61,9 +61,9 @@ def package_files(directory):
"click",
# 'gym==0.13', # default to this stable point if caught in gym issues.
"gymnasium==0.29.1",
- "mujoco==3.1.3",
+ "mujoco==3.3.3",
"numpy>=2",
- "dm-control==1.0.16",
+ "dm-control==1.0.31",
"termcolor",
"sk-video",
"flatten_dict",
diff --git a/setup/env.yaml b/setup/env.yaml
index 1bb1eefa..0e3bffe2 100644
--- a/setup/env.yaml
+++ b/setup/env.yaml
@@ -16,8 +16,9 @@ dependencies:
- pip
- pip:
- click
- - gym==0.13
- - mujoco==2.3.3
+ - gymnasium==0.29.1
+ - mujoco==3.3.3
+ - dm-control==1.0.31
- mujoco-py<2.2,>=2.1
- termcolor
- sk-video
@@ -27,5 +28,5 @@ dependencies:
- absl-py
- pycapnp==1.1.0
- r3m @ git+https://github.com/facebookresearch/r3m.git
- - h5py==3.7.0
+ - h5py>=3.11.0
- alephzero # real_sense subscribers dependency