Windows
环境 |
版本 |
操作系统 |
Windows 11 |
VS build tool |
2017版 |
python |
3.7.4、3.8.5 |
mujoco |
150、210 |
mujoco-py |
150版1.50.1.0,210版2.1.2.14 |
- 去下载
Build Tools for Visual Studio 2017 (version 15.9)
,进去安装win10的三个sdk以及其他生成工具,如下图。
- 之后去下载mujoco环境,150和210都可,放入
C:\Users\xxx\.mujoco\
目录下,150改名为 mjpro150
,200改名为 mujoco210
。将其秘钥 mjkey.txt
放入.mujoco\
下,也放入对应环境的 bin\
目录下。
- 配置相关的环境变量,在
path
中添加 C:\Users\xxx\.mujoco\mujoco210\bin
并移到第一行,注意替换其中的目录为要装的mujoco版本。若安装150版本,还需添加如下两个环境变量:
MUJOCO_PY_MJKEY_PATH=C:\Users\xxx\.mujoco\mjpro150\bin\mjkey.txt
MUJOCO_PY_MJPRO_PATH=C:\Users\xxx\.mujoco\mjpro150
- 安装mujoco-py。150版本去github下载1.50.1.0的源码,解压后先进入该项目目录,执行
pip install -r requirements.txt
和 pip install -r requirements.dev.txt
,之后再执行 python setup.py install
即可。210版本直接执行 pip install mujoco-py==2.1.2.14
即可安装。
import mujoco_py
import os
mj_path = mujoco_py.utils.discover_mujoco()
xml_path = os.path.join(mj_path, 'model', 'humanoid.xml')
model = mujoco_py.load_model_from_path(xml_path)
sim = mujoco_py.MjSim(model)
print(sim.data.qpos)
sim.step()
print(sim.data.qpos)
- 安装multiagent_mujoco。只有210版本才行,同时需保证
mujoco_py>=2.1.2.14
才行。去官网克隆源码进行安装。注意: 安装时只要ma_mujoco装上了,其 numpy和scipy版本比setup.py中的要求低了一些也没问题。若发现安装好的包内的 assets
目录内没有模型,需将源码中的 assets
目录内的模型全部拷贝过去即可。
from multiagent_mujoco.mujoco_multi import MujocoMulti
import numpy as np
import time
def main():
env_args = {"scenario": "manyagent_swimmer",
"agent_conf": "10x2",
"agent_obsk": 1,
"episode_limit": 1000}
env = MujocoMulti(env_args=env_args)
env_info = env.get_env_info()
n_actions = env_info["n_actions"]
n_agents = env_info["n_agents"]
n_episodes = 10
for e in range(n_episodes):
env.reset()
terminated = False
episode_reward = 0
while not terminated:
obs = env.get_obs()
state = env.get_state()
actions = []
for agent_id in range(n_agents):
avail_actions = env.get_avail_agent_actions(agent_id)
avail_actions_ind = np.nonzero(avail_actions)[0]
action = np.random.uniform(-1.0, 1.0, n_actions)
actions.append(action)
reward, terminated, _ = env.step(actions)
episode_reward += reward
time.sleep(0.1)
env.render()
print("Total reward in episode {} = {}".format(e, episode_reward))
env.close()
if __name__ == "__main__":
main()
Ubuntu
MuJoCo-py 对 ubuntu 的支持很好,适用性很强,网上也有很多ubuntu安装的教程,这儿就不重复介绍了。直接放几个实用点的使用的链接:
- Ubuntu20.04 Linux系统安装mujoco和mujoco_py
- 安装mujoco_py遇到的一些问题与解决方法
- 安装mpi4py模块遇到的一些问题(Ubuntu)