(以下均可根据右侧网址进行环境配置https://blog.csdn.net/linyijiong/article/details/84198384)
Ubuntu16.04 , Anaconda3 , python 3.6 , tensorflow-gpu 1.10.1 , CUDA 9.0 , cuDNN8.0.
MuJoCo(Multi-Joint dynamics with Contact)是一个物理模拟器,可以用于机器人控制优化等研究。
(参考网址: https://github.com/openai/mujoco-py#obtaining-the-binaries-and-license-key )
1.1.1
下载 mjpro150 linux
1.1.2
点击Licence,进行许可证注册(mujoco不开源)
根据你的情况进行选择一年或者30天的许可时期。通过认证后,会将account number发至邮箱。
根据使用平台下载 getid_linux(可执行文件) 获取 computer id, 步骤如下:
chmod +x getid_linux
/getid_linux
输出结果类似于 LINUX_A1EHAO_Q8BPHTASDM1005D03TB3293
将上述两者输入网站,如下图。
点击Register computer 后,你的邮箱收到类似以下的邮件。
1.2.1
创建隐藏文件夹并将 上一步下载的mjpro150_linux.zip 拷贝到 mujoco 文件夹中。解压后路径为:~/.mujoco/mjpro150
mkdir ~/.mujoco
cp mjpro150_linux.zip ~/.mujoco
cd ~/.mujoco
unzip mjpro150_linux.zip
1.2.2
将证书mjkey.txt拷贝到创建的隐藏文件夹中
cp mjkey.txt ~/.mujoco
cp mjkey.txt ~/.mujoco/mjpro150/bin
1.2.
添加环境变量~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/bourne/.mujoco/mjpro150/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia-390
cd ~/.mujoco/mjpro150/bin
./simulate ../model/humanoid.xml
参考网址:https://github.com/openai/mujoco-py#obtaining-the-binaries-and-license-key
git clone https://github.com/openai/mujoco-py.git
注意:现在的mujoco-py的部分已经更新到v2.0了(没有关系的),一般使用问题不大,想用最新的需要将前面的操作更换一下版本(下载200版本的mujoco,并将前面介绍的所有150修改为200)。
继续使用1.50版本问题不大,因为很多包都是基于150版本的,可以使用github更新2.0之前的最后一个版本,399a22b1384a078f8cd02d10486cff379cdf5985,使用前六位即可。
在下载完官方包之后,进入文件夹,使用git checkout 399a22,切换到以前的版本。
pip3 install -U 'mujoco-py<1.50.2,>=1.50.1'
注意的是在这里安装的时候可能会缺很多包,但是提示什么装什么就行了。
2.3.1
缺少GL/glew.h头文件
网上查看后是缺少 libglew-dev,补上即可
sudo apt-get install libglew-dev
(参考网址:https://stackoverflow.com/questions/15852417/compiling-opengl-program-gl-glew-h-missing)
2.3.2
提示需要将以下环境变量导入bashrc中,然后重新打开一个终端(虚拟环境)进行安装
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia-390
如果不能识别上述路径,进入ld文件 (本人没有用到)
(参考:http://man.linuxde.net/ldconfig 、http://blog.51cto.com/lsscto/904078)
sudo gedit /etc/ld.so.conf
把以下路径写到文件中的新一行
/usr/lib/nvidia-390
重新加载文件
sudo ldconfig
输入以下代码后,出现相应数据则说明mujoco-py安装成功。
$ pip3 install -U 'mujoco-py<1.50.2,>=1.50.1'
$ python3
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)
# [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)
# [-2.09531783e-19 2.72130735e-05 6.14480786e-22 -3.45474715e-06
# 7.42993721e-06 -1.40711141e-04 -3.04253586e-04 -2.07559344e-04
# 8.50646247e-05 -3.45474715e-06 7.42993721e-06 -1.40711141e-04
# -3.04253586e-04 -2.07559344e-04 -8.50646247e-05 1.11317030e-04
# -7.03465386e-05 -2.22862221e-05 -1.11317030e-04 7.03465386e-05
# -2.22862221e-05]
安装gym相对简单,在此不赘述,按照下面的网站指示即可(注意更新pip)
https://github.com/openai/gym
当遇到这个错误的时候,记得加上sudo
配置好以上环境后,我们尝试以下用课程里面第一节课的demo跑一下。(保持在虚拟环境中运行)
git clone https://github.com/berkeleydeeprlcourse/homework.git
cd homework/hw1/
./demo.bash
(参考网站:https://blog.csdn.net/gsww404/article/details/80636676?utm_source=blogxgwz7 )
此时依然碰到一个错误
Running trained model
Creating window glfw
ERROR: GLEW initalization error: Missing GL version
Press Enter to exit ...Killed
查询之后,添加以下到bashrc文件中
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so:/usr/lib/nvidia-390/libGL.so
出现下面的肉色奇异种,说明一切配置成功! 开始大干DRL! X D
安装需要工具baselines :https://github.com/openai/baselines
根据前面几节的情况,这里同样先进入建立的虚拟环境中。
(Note:需要运行本文安装的包时候,也需要先进入环境中)
d安装baseline的时候会发现需要安装tensorflow,根据提示用pip安装速度很慢,因此取消后直接利用conda install tensorflow-gpu来下载tf,结果问题出现了,由于前面安装的驱动为390版本,但是conda一上来就安装了cuda9.2版本(通过conda list查看包)
根据官方的对应表,这两者不兼容
因此可以输入以下回到cuda 9.0版本:
conda install cudatoolkit=8.0
参考:
跑pytest的时候缺少包 imagehash,可以按照下面安装
conda install -c conda-forge imagehash
https://anaconda.org/conda-forge/imagehash
在此本人运行了HER算法,详细的命令行以及各种参数可以参考 baselines的github
https://github.com/openai/baselines/tree/master/baselines/her
(运行的时候还是会遇到上面的问题:GLEW initalization error: Missing GL version,按照上面解决即可
https://github.com/openai/mujoco-py/issues/75
https://github.com/openai/mujoco-py/pull/145)
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so:/usr/lib/nvidia-390/libGL.so
#==================================================================
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
export PATH=$PATH:/usr/local/cuda-9.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-9.0
# added by Anaconda3 5.3.0 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/home/bourne/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
\eval "$__conda_setup"
else
if [ -f "/home/bourne/anaconda3/etc/profile.d/conda.sh" ]; then
. "/home/bourne/anaconda3/etc/profile.d/conda.sh"
CONDA_CHANGEPS1=false conda activate base
else
\export PATH="/home/bourne/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda init <<<
#==================================================================
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/bourne/.mujoco/mjpro150/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia-390
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so:/usr/lib/nvidia-390/libGL.so
export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}
---------------------------分割线-----------------------------------------
由于在Pycharm配置不了tensorflow-gpu,为了消除前期配置工作的影响,本人删除了相应的虚拟环境(环境名为tfgpu)。
在重新配置一个虚拟环境的时候,执行到上述的mujoco-py的时候,发现无论怎么运行
pip3 install -U 'mujoco-py<1.50.2,>=1.50.1'
进入虚拟环境fgpu,运行python,无法import mujoco_py。
然后在路径anaconda3/env/tfgpu/lib/python3.6/site-packages/中, 找不到刚刚安装好的mujoco_py包。很是奇怪。
于是尝试卸载mujoco_py,输入以下
pip3 uninstall mujoco-py
发现mujocopy的包在以下路径中
/home/bourne/.local/lib/python3.5/site-packages/
因此将路径中的包mujoco_py和mujoco_py-1.50.1.68.dist-info放进以下路径(你的虚拟环境路径)
anaconda3/env/tfgpu/lib/python3.6/site-packages/
然后尝试再次import mujoco_py并执行一些简单指令,成功。