如何解决改变Openai Mujoco的半猎豹质量
我想要做的是改变Halfcheetah的头“ body_mass [7]”,它可以改变它,但不会使头变大。如果我在xml file中更改其质量,它将正确渲染。 缺少什么吗?
这是使用openai gym渲染mujoco的Halfcheetah的代码。
import gym
import os
import numpy as np
from gym import utils
from gym.envs.mujoco import mujoco_env
class HalfCheetahEnv(mujoco_env.MujocoEnv,utils.EzPickle):
def __init__(self):
self.prev_qpos = None
dir_path = os.path.dirname(os.path.realpath(__file__))
MODEL_PATH = '%s/assets/half_cheetah.xml' % dir_path
mujoco_env.MujocoEnv.__init__(self,MODEL_PATH,5)
utils.EzPickle.__init__(self)
def step(self,action):
xposbefore = self.sim.data.qpos[0]
self.do_simulation(action,self.frame_skip)
xposafter = self.sim.data.qpos[0]
ob = self._get_obs()
reward_ctrl = - 0.1 * np.square(action).sum()
reward_run = (xposafter - xposbefore)/self.dt
reward = reward_ctrl + reward_run
done = False
return ob,reward,done,{}
def _get_obs(self):
return np.concatenate([
self.sim.data.qpos.flat[1:],self.sim.data.qvel.flat,])
def reset_model(self):
qpos = self.init_qpos + self.np_random.uniform(low=-.1,high=.1,size=self.model.nq)
qvel = self.init_qvel + self.np_random.randn(self.model.nv) * .1
self.set_state(qpos,qvel)
return self._get_obs()
def viewer_setup(self):
self.viewer.cam.distance = self.model.stat.extent * 0.5
def change_env(self):
self.model.body_mass[7] = 1.5
self.model.dof_damping[7] = 1.5
if __name__ == "__main__":
env = HalfCheetahEnv()
env.reset()
env.change_env()
while True:
env.render()
print(env.model.body_mass)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。