You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I got an error at class UnimalHeightObs(gym.ObservationWrapper), def observation(self, obs): from hfield.py
File "/home/bak/Projects/metamorph/metamorph/envs/wrappers/hfield.py", line 211, in observation
obs["torso_height"] = round(z_pos - 1, 3)
TypeError: 'str' object does not support item assignment
The def observation(self, obs): is called from class UnimalEnv(gym.Env): in unimal.py. Though the obs is a dictionary and has 'proprioceptive', 'edges' keys at the end of def reset(self):, obs is just a str'proprioceptive' at def observation(self, obs):class UnimalHeightObs(gym.ObservationWrapper).
From the viewpoint of the train loop, the error occurs when the code creates (or initializes) the world environment. At ppo.py, obs cannot create at def train(self):.
To solve above issue, I added self.obs_temp = obs at def reset(self): at def reset(self):class UnimalEnv(gym.Env): and obs = self.obs_temp at class UnimalHeightObs(gym.ObservationWrapper), def observation(self, obs):to preserve obs information.
unimal.py
class UnimalEnv(gym.Env):
"""Superclass for all Unimal tasks."""
...........
...........
###########################################################################
# Reset sim
###########################################################################
def reset(self):
if self.sim is None or cfg.ENV.NEW_SIM_ON_RESET:
self.sim = self._get_sim()
else:
self.sim.reset()
self.step_count = 0
if self.viewer is not None:
self.viewer.update_sim(self.sim)
obs = self.reset_model()
self._set_action_space()
# This is just a temp initialization, the final obs space will depend
# on SelectKeysWrapper
self.observation_space = spu.convert_obs_to_space(obs)
self.metadata["video.frames_per_second"] = int(np.round(1.0 / self.dt))
self.obs_temp = obs ### what I added
return obs
hfield.py
class UnimalHeightObs(gym.ObservationWrapper):
def __init__(self, env):
super().__init__(env)
self.observation_space = spu.update_obs_space(env, {"torso_height": (1,)})
def observation(self, obs):
obs = self.obs_temp ### what I added
x_pos, y_pos, z_pos = self.sim.data.get_body_xpos("torso/0")
........
........
After that, I got an error like below.
Process ForkProcess-3:
Traceback (most recent call last):
File "/home/bak/Projects/metamorph/metamorph/envs/vec_env/subproc_vec_env.py", line 27, in worker
remote.send([env.reset() for env in envs])
File "/home/bak/Projects/metamorph/metamorph/envs/vec_env/subproc_vec_env.py", line 27, in <listcomp>
remote.send([env.reset() for env in envs])
File "/home/bak/Projects/metamorph/metamorph/envs/wrappers/multi_env_wrapper.py", line 40, in reset
obs = self._env.reset()
File "/home/bak/Projects/metamorph/metamorph/algos/ppo/envs.py", line 187, in reset
observation = super(RecordEpisodeStatistics, self).reset(**kwargs)
File "/home/bak/anaconda3/envs/metamorph/lib/python3.8/site-packages/gym/core.py", line 323, in reset
return self.env.reset(**kwargs)
File "/home/bak/Projects/metamorph/metamorph/algos/ppo/envs.py", line 169, in reset
return self.env.reset(**kwargs)
File "/home/bak/anaconda3/envs/metamorph/lib/python3.8/site-packages/gym/wrappers/time_limit.py", line 68, in reset
return self.env.reset(**kwargs)
File "/home/bak/anaconda3/envs/metamorph/lib/python3.8/site-packages/gym/wrappers/order_enforcing.py", line 42, in reset
return self.env.reset(**kwargs)
File "/home/bak/anaconda3/envs/metamorph/lib/python3.8/site-packages/gym/wrappers/env_checker.py", line 47, in reset
return self.env.reset(**kwargs)
File "/home/bak/anaconda3/envs/metamorph/lib/python3.8/site-packages/gym/core.py", line 379, in reset
obs, info = self.env.reset(**kwargs)
ValueError: too many values to unpack (expected 2)
How can I fix these problems and check the result of your experiments?
I used Anaconda environment with mujoco-2.1.0 rather than Docker due to using free version of mujoco and using mujoco-py. Unfortunately, using mujoco after 2.1.0 does not support mujoco-py due to it has its own python binding.
The text was updated successfully, but these errors were encountered:
I got an error at
class UnimalHeightObs(gym.ObservationWrapper)
,def observation(self, obs):
from hfield.pyThe
def observation(self, obs):
is called fromclass UnimalEnv(gym.Env):
in unimal.py. Though theobs
is a dictionary and has'proprioceptive'
,'edges'
keys at the end ofdef reset(self):
,obs
is just astr
'proprioceptive'
atdef observation(self, obs):
class UnimalHeightObs(gym.ObservationWrapper)
.From the viewpoint of the train loop, the error occurs when the code creates (or initializes) the world environment. At
ppo.py
,obs
cannot create atdef train(self):
.To solve above issue, I added
self.obs_temp = obs
atdef reset(self):
atdef reset(self):
class UnimalEnv(gym.Env):
andobs = self.obs_temp
atclass UnimalHeightObs(gym.ObservationWrapper)
,def observation(self, obs):
to preserveobs
information.After that, I got an error like below.
How can I fix these problems and check the result of your experiments?
I used Anaconda environment with
mujoco-2.1.0
rather than Docker due to using free version of mujoco and usingmujoco-py
. Unfortunately, using mujoco after 2.1.0 does not supportmujoco-py
due to it has its own python binding.The text was updated successfully, but these errors were encountered: