改变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 (将#修改为@)