From 4ad3247ef58ecf01d0e596d917ee1f9e64dd26eb Mon Sep 17 00:00:00 2001 From: Andrea Prestia <67275846+andreh1111@users.noreply.github.com> Date: Tue, 12 May 2026 14:13:49 -0400 Subject: [PATCH] dependency update and code alignment --- robohive/envs/multi_task/utils/parse_demos.py | 4 ++-- robohive/envs/myo/myodm/myodm_v0.py | 2 +- robohive/envs/tcdm/playback_mocap.py | 2 +- robohive/envs/tcdm/track.py | 2 +- robohive/robot/robot.py | 13 ++++++------ robohive/tests/test_envs.py | 21 ++++++++++--------- .../tutorials/3_get_obs_proprio_extero.ipynb | 4 ++-- robohive/tutorials/ee_teleop.py | 15 ++++++------- robohive/tutorials/ee_teleop_oculus.py | 15 ++++++------- setup.py | 4 ++-- setup/env.yaml | 7 ++++--- 11 files changed, 47 insertions(+), 42 deletions(-) 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