由于mujoco在更新政策,现在可以直接从官网下载license,获得 mjkey.txt。
环境:
Ubuntu 18.04
Anaconda3
python 3.7
cuda 10.2
MuJoCo(Multi-Joint dynamics with Contact)是一个物理模拟器,可以用于机器人控制优化等研究。
1. 下载安装
在home目录下创建文件夹:
mkdir .mujoco
cd .mujoco
在此目录下,从官网下载 mujoco200_linux.zip并解压,重命名为mujoco200。
将下载许可证mjkey.txt放置在.mujoco
目录以及.mujoco/mujoco200/bin
下。
2. 添加环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mujoco200/bin
3. 测试安装结果
cd ~/.mujoco/mujoco200_linux/bin
./simulate ../model/humanoid.xml
官方文档中说用pip3 install -U 'mujoco-py<2.1,>=2.0'
即可安装。但是运行后会报错
ERROR: Failed building wheel for mujoco-py
Failed to build mujoco-py
ERROR: Could not build wheels for mujoco-py which use PEP 517 and cannot be installed directly
issue中提到安装pip install mujoco_py==2.0.2.8
即可解决问题【在mac OS Big Sur中尝试此方法成功,但是遇到gcc的问题,后面会具体讨论mac中的安装】
1. 下载源代码
这里我没有使用pip install,而是直接下载源代码。
在home目录下,运行
git clone https://github.com/openai/mujoco-py.git
2. 创建conda环境
conda create -n mujoco python=3.7
conda activate mujoco # 激活conda环境
3. 检查/安装 gcc
gcc --version
4. 安装依赖
(mujoco)$ cd ~/mujoco-py
(mujoco)$ pip install -r requirements.txt
(mujoco)$ pip install -r requirements.dev.txt
(mujoco)$ cd ~/mujoco-py/vendor
(mujoco)$ ./Xdummy-entrypoint
(mujoco)$ cd ..
(mujoco)$ python setup.py install
5. 测试
(mujoco)$ python
>>> import mujoco_py
报错:
/home/jyq/anaconda3/envs/mujoco/lib/python3.7/site-packages/mujoco_py-2.0.2.13-py3.7.egg/mujoco_py/gl/osmesashim.c:1:10: fatal error: GL/osmesa.h: No such file or directory
....
error: command ‘gcc’ failed with exit status 1
解决方法:执行
sudo apt install libosmesa6-dev libgl1-mesa-glx libglfw3
再次测试:
(mujoco)$ python
>>> import mujoco_py # 第一次import会编译加载很多东西
>>> import mujoco_py # 再次import就正常了
>>> from os.path import dirname
>>> model = mujoco_py.load_model_from_path(dirname(dirname(mujoco_py.__file__)) +"/xmls/claw.xml")
>>> sim = mujoco_py.MjSim(model)
>>> print(sim.data.qpos)
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
>>> sim.step()
>>> print(sim.data.qpos)
[ 2.09217903e-06 -1.82329050e-12 -1.16711384e-07 -4.69613872e-11
-1.43931860e-05 4.73350204e-10 -3.23749942e-05 -1.19854057e-13
-2.39251380e-08 -4.46750545e-07 1.78771599e-09 -1.04232280e-08]
pip install gym[all]
#报错:
ERROR: Failed building wheel for mujoco-py
发现直接pip install gym
就成功了
测试:
(mujoco)$ python
>>> import gym
>>> env = gym.make("Swimmer-v3")
与Linux系统一样
这里用的是pip install mujoco_py==2.0.2.8
由于是旧版本,需要gcc@8,而我的环境中是gcc@10。所以需要重新安装旧版本gcc。安装步骤如下
brew uninstall gcc@10
brew install gcc@8
homebrew会因为网络原因报Error: Fail to download resource gcc
。建议连接外网多试几遍。
测试
(mujoco)$ python
>>> 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)
# 这里跟官方文档给出的result不一样,不知道为啥
[0. 0. 1.4 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
>>> sim.step()
>>> print(sim.data.qpos)
# 这里跟官方文档给出的result不一样,不知道为啥
[-1.12164337e-05 7.29847036e-22 1.39975300e+00 9.99999999e-01
1.80085466e-21 4.45933954e-05 -2.70143345e-20 1.30126513e-19
-4.63561234e-05 -1.88020744e-20 -2.24492958e-06 4.79357124e-05
-6.38208396e-04 -1.61130312e-03 -1.37554006e-03 5.54173825e-05
-2.24492958e-06 4.79357124e-05 -6.38208396e-04 -1.61130312e-03
-1.37554006e-03 -5.54173825e-05 -5.73572648e-05 7.63833991e-05
-2.12765194e-05 5.73572648e-05 -7.63833991e-05 -2.12765194e-05]
如果遇到
clang: error: unsupported option '-fopenmp'
或
raise ImportError("Failed to load GLFW3 shared library.")
请查看官方文档下给出的解决方法
与Linux系统一样
强化学习实战(八) Ubuntu下Mujoco安装记录