Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions robohive/envs/multi_task/utils/parse_demos.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)))
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion robohive/envs/myo/myodm/myodm_v0.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
2 changes: 1 addition & 1 deletion robohive/envs/tcdm/playback_mocap.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"<body mocap=\"true\" name=\"j{i}_mocap\" pos=\"{' '.join(map(str, physics_myo.sim.named.data.xipos[b]))} \" ><site name=\"j{i}\" size=\"0.015\" rgba=\"0 0 1 0.5\" pos=\"0 0 0\"/></body>\" ")
Expand Down
2 changes: 1 addition & 1 deletion robohive/envs/tcdm/track.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
13 changes: 7 additions & 6 deletions robohive/robot/robot.py
Original file line number Diff line number Diff line change
Expand Up @@ -802,25 +802,26 @@ 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()
prompt("Sensor data: ", end="")
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()
demo_robot()
21 changes: 11 additions & 10 deletions robohive/tests/test_envs.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__':
Expand Down
4 changes: 2 additions & 2 deletions robohive/tutorials/3_get_obs_proprio_extero.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -213,15 +213,15 @@
"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",
"print(f\"proprio_dict = {env.proprio_dict.keys()}\")\n",
"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",
Expand Down
15 changes: 8 additions & 7 deletions robohive/tutorials/ee_teleop.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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))

Expand All @@ -294,4 +295,4 @@ def main(env_name, env_args, reset_noise, action_noise, input_device, output, ho


if __name__ == '__main__':
main()
main()
15 changes: 8 additions & 7 deletions robohive/tutorials/ee_teleop_oculus.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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']
Expand Down Expand Up @@ -251,4 +252,4 @@ def main(env_name, env_args, reset_noise, action_noise, output, horizon, num_rol


if __name__ == '__main__':
main()
main()
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
7 changes: 4 additions & 3 deletions setup/env.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Loading