Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)

自己记录一下DRL的环境搭建, 花了一下午, 不过还是基本搭建完成了.

博主使用的是Ubuntu18.04 + Anaconda3 + cuda10.1 + python3.7 + tensorflow2.1

1. 配置Mujoco-py 环境和文件

mujoco200的安装需要去官网申请激活码
MuJoCo(Multi-Joint dynamics withContact)是一个模拟机器人,生物力学,图形和动画等领域的物理引擎。用于物理仿真分析,主要用于机器人领域的开发和研究。

安装Mujoco是因为gym环境中的许多仿真环境都用到这个物理引擎,比如Robotics,Mujoco最初是由华盛顿大学研发的,目前是收费使用的,作为学生党的我们可以有一年的免费使用,但是需要使用edu邮箱进行注册申请,同时也可以申请一个月的临时使用。Mujoco的网址为https://www.roboti.us/license.html

1)首先,我们需要注册获取License

Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)_第1张图片
我们选用的是linux安装,点击蓝色的linux ,会出现一个下载.
在这里插入图片描述

然后先将信息填好,fullname可以乱填, Email address可以填自己的邮箱用于接收license.有学生邮箱(即以.edu结尾的)可以有一年的试用期.如果是普通邮箱,就只有1个月的试用期.

2)在License下载getid_linux, 这个是用于获取自己电脑的id,下载之后,进入下载目录 , 分别运行如下命令获取自己的电脑id:

chmod +x getid_linux
./getid_linux

运行结果如下所示,把id拷贝并填入到前面的网页Computer id一栏中,
Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)_第2张图片

3)等你提交之后,会受到一封邮件,里面含有两个文件,一个是LICENSE.txt,一个是mjkey.txt

在这里插入图片描述

4)下载mujoco 150/200 linux

下载150的链接为mjpro150 linux,下载200的链接为mujoco200 linux,博主安装的mujoco200.

5)在你的home目录下,创建隐藏文件夹.mujoco,然后将你收到的邮件的内容拷贝到.mujoco文件夹中, 在将mjkey.txt再单独拷贝一份到 /home/(usrname)/.mujoco/mujoco200/bin 中。

Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)_第3张图片

由于以 ‘.’ 开头的文件夹是隐藏目录, 创建好隐藏目录后, 系统会自动隐藏, 因此需要在主目录下按 ctrl + H 来显示隐藏目录.

然后将下载好的压缩包mujoco200_linux.zip解压到当前的 .mujoco 中,

注意: 解压后的文件夹需要命名为mujoco200, 而不能使用mujoco200_linux. 因为后续安装的gym默认路径是/home/(usrname)/.mujoco200/… 因此需要保证自己的文件夹命名如下图所示, 不是这样命名的需要改成一样的.
Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)_第4张图片

或者也可以直接使用命令行操作:

mkdir ~/.mujoco
cp mujoco200_linux.zip ~/.mujoco
cd ~/.mujoco
unzip mujoco200_linux.zip
cp mjkey.txt ~/.mujoco
cp mjkey.txt ~/.mujoco/mujoco200/bin

6)添加环境变量

打开环境变量:

gedit ~/.bashrc

在文件末尾添加如下内容:

# MUJOCO200 START
# export LD_LIBRARY_PATH=~/.mujoco/mujoco200/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} #这种导入方式可能导致在终端mujoco运行正常,但是在编译器如vscode和pycharm中运行报错
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/zeroonegame/.mujoco/mujoco200/bin
export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}
# MUJOCO200 END

7)测试如下

命令行输入

cd ~/.mujoco/mujoco200/bin
./simulate ../model/humanoid.xml

运行结果如下图所示:
Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)_第5张图片

至此我们的预先准备工作已完成

2.安装mujoco_py2

1)激活虚拟环境

# 这里博主安装深度强化学习的环境命名为drl , 大家可以根据自己的环境名称更改,下同
conda activate drl 

2)下载官方的源码

如果直接使用github太慢,可以使用国内的gitee将github的文件拷贝镜像,使用gitee加速.具体操作参考百度

git clone https://github.com/openai/mujoco-py.git

3) 安装mujoco_py

到这一步, 你会遇到大量的问题, 需要有耐心有毅力, 毕竟玩深度学习, 玩强化学习坑多的是, 得慢慢适应.

这里我们使用的是mujoco200,因此根据下述的命令执行,如果是安装mujoco150自行选择即可.

# mujoco150
# pip install -U 'mujoco-py<1.50.2,>=1.50.1'

# mujoco200
pip3 install -U 'mujoco-py<2.1,>=2.0'

安装到这里你会出现一些常见的错误,总结如下:

1.出现“Failed building whell for mujoco-py”,解决办法如下:

sudo apt-get install libglew-dev

2.出现“No module named numpy”,解决办法如下:

pip3 install numpy
# 使用国内源加速下载
# pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

3.出现gcc错误,解决办法如下:

sudo apt-get install libgl1-mesa-dev libgl1-mesa-glx libosmesa6-dev

4.出现error: [Errno 2] No such file or directory: ‘patchelf’: ‘patchelf’ ,解决办法如下:

sudo apt-get install patchelf

5.出现提示重新安装ttf-mscorefonts-installer(这个错误我没遇到,是他人遇到的,也写在这里),解决办法:

wget http://httpredir.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.6_all.deb
sudo dpkg -i ttf-mscorefonts-installer_3.6_all.deb
# 再次运行
sudo apt-get install libgl1-mesa-dev libgl1-mesa-glx libosmesa6-dev python3-pip python3-numpy python3-scipy

6.报错:Could not build wheels for mujoco-py which use PEP 517 and cannot be installed directly ,解决:

pip3 install --no-use-pep517 'mujoco-py<2.1,>=2.0'

如果还有其他问题可以留言, 博主会继续补充解决方法

4)测试mujoco-py

这里在import mujoco_py时可能会报一个关于cffi的错,版本冲突,或者找不到cffi module的问题,可以重装cffi 解决问题

# 若已经安装了,报版本冲突的错,先卸载
pip uninstall cffi
pip install cffi
# 下面这条是必要的,否则安装成功了还是会报找不到cffi 的错误
pip install pygit2

测试代码(先在终端下测试通过,先不要在vscode中测试):

import mujoco_py   
# 如果导入时显示没有该模块,就卸载后重装 ,在当前环境' sudo pip3 uninstall 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)
#输出 [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)
#输出:[-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]

若出现报错

Exception:
Missing path to your environment variable.
Current values LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64/
Please add following line to .bashrc:
export D_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/(usrname)/.mujoco/mujoco200/bin

解决方案:

根据前面配置Mujoco-py 环境和文件的第6)步确认自己的环境变量.
如果是按照博主前面的流程来,是可以正常在vscode下运行上述测试代码的

3.安装gym

博主在安装gym时使用的是简化版的

pip3 install gym

安装全套版使用如下命令

 pip3 install gym[all]

但是博主在实际测试过程中发现自动安装的版本和前面的mujoco200不对应, 即gym会自动匹配到mujoco150而不是mujoco200,而我们前面安装的是mujoco200. 搜索了一圈没发现很好的解决办法.
因此暂时只能是用到哪个模块再单独安装了.如有大佬知晓解决方法, 望能指教一二.

gym安装完成后,使用如下测试代码:

gymtest1.py

import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
        if done:
            print("Episode finished after {} timesteps".format(t+1))
            break

Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)_第6张图片
输出信息如下:
Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)_第7张图片

gymtest2.py

import gym
env = gym.make('Hero-ram-v0')
for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
        if done:
            print("Episode finished after {} timesteps".format(t+1))
            break

这个例子有可能报错: gym.error.DependencyNotInstalled: No module named ‘atari_py’. (HINT: you can install Atari dependenc

解决方案:

pip3 install atari-py

测试结果如下,会出现一个小窗口:
Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)_第8张图片
输出结果如下:
Ubuntu18.04搭建深度强化学习环境(Mujoco200 , gym)_第9张图片

至此, 深度强化学习的环境已经基本搭建完成, 如果还有问题可以留言, 互帮互助解决.

参考文献:

https://zhuanlan.zhihu.com/p/266029027
https://zhuanlan.zhihu.com/p/124001142
https://blog.csdn.net/weixin_44377470/article/details/104928067
https://blog.csdn.net/qs17809259715/article/details/103747724
https://blog.csdn.net/qq_43697649/article/details/105905403
https://blog.csdn.net/jianghao_ava/article/details/80874254
https://blog.csdn.net/chauncygu/article/details/108448173
https://blog.csdn.net/w5688414/article/details/85807467

你可能感兴趣的:(深度学习,深度强化学习,Ubuntu,深度学习,强化学习,人工智能,linux,cuda)