Windows下安装Mujoco1.50复现强化学习论文
很多经典强化学习算法(DDPG、PPO)使用Mujoco环境进行实验和评估,配置复现环境非常困难,有以下几点原因:
- 年代久远,Mujoco-py的依赖管理做的不好,仅限定所需依赖库最低版本,最高版本未限制,由于其不再维护,导致安装时依赖库常常出现版本过高的问题。
- Mujoco被DeepMind收购,最新版本(3.x)与复现论文所需版本(1.x)互不兼容,用法有差别。
- 基于C/C++的项目,借助cython向python提供接口,涉及到C/C++编译器。
- Windows系统下,难度进一步加大。。。
最近看了很多在Windows上安装Mujoco1.50的教程,大多数过于繁杂,下面根据官方文档,写一个相对简化的安装方法,主要是
- 不需要定义环境变量
- 不需要添加目录到路径
其实官方文档很简单,总共就三句话,并没有说1.50版本要设置环境变量啥的,不知道其他博主在哪看的。
一个前提
在Windows上,Mujoco-py需要Cython调用MSVC编译器才能将C/C++代码转换为Python可调用的模块,而MSVC跟Visual Studio捆绑在一起,所以需要安装Visual Studio,本人安装的是VS2022,勾选如下两个组件(MSVC和Windows SDK),如已安装请忽略。
安装C/C++版本的Mujoco1.50
由于Mujoco在2022年已经开源,所以直接使用官网提供的免费许可证即可。
许可证页)
下载这两个文件后,一定要放置在$env:USERPROFILE/.mujoco
,文件夹不存在则自行创建(powershell):
cd $env:USERPROFILE
mkdir .mujoco
并且文件不能随意命名,只能是mjpro150和mjkey.txt,否则后面cython编译时会找不到对应的C/C++源文件。
本人电脑上是这样:
注意mjpro150解压后不要嵌套目录,mjpro150一定是bin/include这些子文件夹:
到此,C/C++版本的Mujoco1.50安装完成。可以在$env:USERPROFILE
下执行以下命令查看示例,(一定得是这个目录下):
.\mjpro150\bin\simulate.exe .\mjpro150\model\humanoid.xml
没有问题,可以正常渲染出一个仿真机器人。
安装Python接口
新建一个python虚拟环境(看个人需求,不一定要重建),这里使用python3.7,需要说明的是,官方不对3.7以上提供支持:
pip install cython==0.29.21
pip install git+https://github.com/openai/mujoco-py.git@1.50.1.0
实测此cython版本可行,其余版本未测试。
这里直接从github链接安装mujoco-py,较为简便;也可以下载下来,使用pip install -e xxx
进行本地安装。
测试:
import os
import mujoco_py
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)
输出:
[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. ]
[-1.27161562e-06 8.11077220e-22 1.39996033e+00 1.00000000e+00
-3.03194099e-22 5.72581843e-06 4.82416781e-21 4.24327899e-21
7.56543337e-06 -2.67335148e-21 -5.48340066e-07 1.11131854e-05
-1.31327715e-04 -3.02014428e-04 -3.07930146e-04 1.38935774e-05
-5.48340066e-07 1.11131854e-05 -1.31327715e-04 -3.02014428e-04
-3.07930146e-04 -1.38935774e-05 -8.12365751e-06 9.97029984e-06
-2.12264641e-06 8.12365751e-06 -9.97029984e-06 -2.12264641e-06]
成功!
依赖文件
以防万一,这里给出本人将上述步骤进行完毕后的requirements.txt,遇到版本问题可以参考:
cython==0.29.21
glfw==2.7.0
imageio==2.31.2
mujoco-py @ git+https://github.com/openai/mujoco-py.git@498b451a03fb61e5bdfcb6956d8d7c881b1098b5
numpy==1.21.6
pillow==9.5.0
pip==22.3.1
setuptools==65.6.3
wheel==0.38.4
wincertstore==0.2