Win10安装Meta-world、MuJoCo 及 mujoco-py

本文是为了搭建Sawyer机器人的强化学习环境,安装MuJoCo 及 mujoco-py等是为了服务Meta-world

安装环境:win10、Meta-world=2.0.0、MuJoCo=1.5.0、mujoco-py=1.50.1

1.安装前言

1.1安装建议

如果能在Linux系统上部署,尽量不要在windows上面,因为必须要下载Visual Studio,版本之间的对应也有问题。虽然目前可以成功运行环境。
目前 MuJoCo 主要适用于 Linux 系统或 MacOS 系统,根据其它博客可知,Windows 系统支持最完美的版本是 mjpro150 和 mujoco-py 1.50.1.0。

1.2软件介绍

2021年10月,DeepMind 宣布收购 MuJoCo 物理模拟器,并承诺将MuJoCo 作为一个免费的、开源的、社区驱动的项目进行开发和维护。简而言之,MuJoCo 的所有权从最初的 Roboti LLC 转为现在的 DeepMind。可以在Roboti LLC网站下载,也可以在DeepMind上下载。
OpenAI 官方也提供了 mujoco-py Github的地址。和注意版本 MuJoCo要对应。

2.安装流程

2.1安装软件分享

我将安装所需的文件打包上传至百度网盘中,具体的链接如下:mujoco安装所需要的环境

2.2安装 Visual Studio

这一步在整个安装过程中是并不可少的,因为 mujoco仿真引擎是基于C/C++的,所以每一次运行时实际上都是通过 VS Build Tools 进行编译转换。先给出 Microsoft Visual Studio 的官网:下载visual studio build tools
我在百度网盘中添加 vs_buildtools_2017.exe、vs_buildtools_2019.exe 和 vs_buildtools_2022.exe 三个文件,有需要可自行取用。
我安装的是 vs_buildtools_2017.exe,安装时选择的界面如下图所示:

2.3安装 mjpro150
  1. 下载 mjpro150
    去下载页面获取对应的版本,网盘中是 mjpro150 win64
    在这里插入图片描述

  2. 在C盘的用户目录下(C:\Users\zlm)新建一个文件夹名为.mujoco。这里注意,用户名必须是英文,不能是中文,如果需要改可以在TB,Pdd上面找人改,非常快
    在这里插入图片描述

  3. 将下载解压后的mjpro150放在.mujoco中
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c55d768f3af1466c845660b1fc407bf4.png

  4. 将mjkey.txt文件放入C:\Users\xxx.mujoco文件夹以及C:\Users\xxx.mujoco\mjpro150\bin文件夹中

  5. 添加环境变量
    在自己电脑上的“编辑系统环境变量>环境变量”中找到“用户变量”、“系统变量”,分别添加两个环境变量

变量名:MUJOCO_PY_MJPRO_PATH
变量值:C:\Users\xxx.mujoco\mjpro150
变量名:MUJOCO_PY_MJKEY_PATH
变量值:C:\Users\xxx.mujoco\mjpro150\bin\mjkey.txt

在这里插入图片描述

  1. 添加环境变量
    在自己电脑上的“编辑系统环境变量>环境变量”中找到“用户变量”和“系统变量”中的Path,双击,点击“新建”,将mjpro150文件中的bin文件夹的地址输入其中(例如:C:\Users\zlm.mujoco\mjpro150\bin),
    重启电脑
    在这里插入图片描述
  2. 安装成功后可以在bin文件夹中打开simulate.exe,并且将model文件夹中的XML文件夹拖拽到应用界面上则会出现对应模型的3D物理仿真模拟。
    在这里插入图片描述
2.4安装mujoco_py
  1. 创建虚拟环境,python必须是3.8,Meta-world要求3.8以上
conda create -n py38 python=3.8
  1. “mujoco-py-1.50.1.0.tar.gz”上传到百度网盘里了。将压缩包内的文件解压至“C:\Users\zlm.mujoco”路径下,打开cmd控制台,依次执行如下指令。这里建议把mujoco-py-1.50.1文件名改为mujoco-py
cd C:\Users\zlm\.mujoco\mujoco-py  #进入解压后的目录
conda activate py38  #激活虚拟环境
pip install -r requirements.txt  #下载并安装相关依赖
pip install -r requirements.dev.txt  #下载并安装相关依赖
python setup.py install #安装mujoco-py

上面第三行和第四行命令如果下载得比较慢,可以用以下代码替换:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt  #从清华源下载并安装相关依赖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.dev.txt  #从清华源下载并安装相关依赖
  1. mujoco-py测试
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)

注意上述脚本需要在py38虚拟环境中运行。第一次执行会有很多东西,不用担心,是在用安装的Visual Studio Build Tools构建一些东西。如果顺利,你将在最后看到
在这里插入图片描述
这里肯定会出现错误
错误1:Cython.Compiler.Errors.CompileError: D:\Anaconda\Anaconda3\envs\py37\lib\site-packages\mujoco_py\cymj.pyx
解决方法:降低版本

pip uninstall cython
pip install cython==0.29.21

错误2:ImportError: DLL load failed while importing cymj
这个报错是因为 Python 的版本较高,自 Python 3.8 开始,在程序运行时只会加载 trusted dlls。该问题已在 Github 上有对应的 Issue,具体可参考这里。
解决办法:
在代码前面加入下面的三行代码:xxx是自己的用户名

import os
os.add_dll_directory("C://Users//XXX//.mujoco//mjpro150//bin")
os.add_dll_directory("C://Users//XXX//.mujoco//mujoco-py//mujoco_py")

错误3:fatal error C1081: ‘C:\Users\Ian\Miniconda3\envs\drlnd\lib\site-packages\mujoco_py-1.50.1.59-py3.6.egg\mujoco_py\generated_pyxbld_1.50.1.59_36_windowsextensionbuilder\temp.win-amd64-3.6\Release\Users\Ian\Miniconda3\envs\drlnd\lib\site-packages\mujoco_py-1.50.1.59-py3.6.egg\mujoco_py\cymj.obj’: file name too long文件名过长。
解决方案:把其中的mujoco_py文件夹中的mujoco_py复制到自己的python虚拟环境python包的所在位置
具体如下,主要路径的正确!!!

在这里插入图片描述

3.安装Meta-world

点击Meta-world官网

git clone https://github.com/Farama-Foundation/Metaworld.git
cd Metaworld
conda activate ×××
pip install -e .

项目随便下在哪里都好,但是安装的时候注意,一定要激活自己安装mujoco_py的环境。

在安装的过程中,会提醒少了Mujoco模块,在网上查询了很久,也没有找到解决办法。无奈之下,在虚拟环境中又安装了Mujoco=2.3.7,接着就不会报错了。 尝试了Mujoco==3.0以上的版本,但是会报错,数组的大小不对,安装2.3.7版本的可以成功运行。

下面运行了ML1环境的示例代码,并做了一些改动。

import metaworld
import random
import os
os.add_dll_directory("C://Users//zlm//.mujoco//mjpro150//bin")
os.add_dll_directory("C://Users//zlm//.mujoco//mujoco-py//mujoco_py")
import mujoco_py
import matplotlib.pyplot as plt
#print(metaworld.ML1.ENV_NAMES)  # Check out the available environments

ml1 = metaworld.ML1('pick-place-v2') # Construct the benchmark, sampling tasks


env = ml1.train_classes['pick-place-v2']()  # Create an environment with task `pick_place`
task = random.choice(ml1.train_tasks)
env.set_task(task)  # Set task
obs = env.reset()  # Reset environment

a = env.action_space.sample()  # Sample an action
obs, reward, truncation, termination, info = env.step(a)  # Step the environment with the sampled random action
print(env.step(a))

运行结果如下所示:

在这里插入图片描述

后续会学习garage库中的一些示例,有兴趣的小伙伴可以一起交流。

  • 30
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值