基建笔记mujoco和mujoco_py安装的坑


介绍mujoco和mujoco_py过程和遇到问题解决方法

-1. 吐槽前言:

  1. 不少技术文章还是摘抄太多, 大同小异, 千篇一律, 知其然不知其所以然, 所以常常一错百错.
  2. 相同问题的解决方案虽都是相似的, 但很多博文都没有讲清楚重点. 而且过程博主自己都未必亲自验证过, 缺乏责任意识.
  3. 不少博文给出的方法, 看是大而全面, 有理有据. 但不够细致入微,不能直接利用. 严重影响学习效率.

0. 环境版本说明:

  • ubuntu-16.04
  • gym-0.15.4
  • tensorflow 1.12.0
  • CUDA 10.0 \ cudnn7.4
    我还不太了解环境版本和mujoco之间的关联问题, 这里仅为列出给大家对比查看.

0.1 更新1 : 安装mujoco200

1. 安装Mujoco

1.1 官方源码下载:

  1. 直接在mujoco官网下载. 我下的是 mjpro150 linux.
  2. 在home目录下创建隐藏文件夹mujoco,再将刚才的文件放进去:
1
2
3
4
mkdir ~/.mujoco
cp mjpro150_linux.zip ~/.mujoco
cd ~/.mujoco
unzip mjpro150_linux.zip

1.2 安装license

  1. 在官网的license一栏进行注册. 因为Mujoco是收费的仿真器,所以可以先免费试用30天, 学生可以免费使用一年, 但是需要验证, 这个验证可能等一段时间.
  2. license 需要 full name \ email address \ computer id 信息,其中 Computer id 一项需要点击右侧的 Linux 下载 getid_linux(可执行文件) , 在本地终端里通过下面命令获得id, 才能完成所有信息填写:
1
2
chmod +x getid_linux
./getid_linux
  1. 点击 submint 后,邮箱会收到一份邮件, 从中下载证书mjkey.txt.

1.3 环境配置

  1. 将证书mjkey.txt拷贝到创建的隐藏文件夹中:
1
2
cp mjkey.txt ~/.mujoco  
cp mjkey.txt ~/.mujoco/mjpro150/bin
  1. 添加环境变量, 打开 ~/.bashrc 文件添加以下内容:
1
2
export LD_LIBRARY_PATH=~/.mujoco/mjpro150/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}

1.4 运行测试

1
2
cd ~/.mujoco/mjpro150/bin
./simulate ../model/humanoid.xml

出现经典人形木偶就OK啦~

2. 安装mujoco_py (两种安装思路)

2.1 法1: 直接用 pip 安装, 然后缺什么补什么, 注意先进入python指定虚拟环境:

我这里安装指定了mujoco的版本是1.50

1
 pip3 install -U 'mujoco-py<1.50.2,>=1.50.1'

2.2 法2: 下载源码来安装

2.2.1 在github下载源码:
1
  git clone https://github.com/openai/mujoco-py.git

我在这一步是安装的历史版本 1.15.1, 不是最新的.

2.2.2 安装 patchelf
1
2
curl -o /usr/local/bin/patchelf https://s3-us-west-2.amazonaws.com/openai-sci-artifacts/manual-builds/patchelf_0.9_amd64.elf
sudo chmod +x /usr/local/bin/patchelf
2.2.3 进入python虚拟环境并安装依赖
1
2
3
4
5
cd ~/mujoco-py
cp requirements.txt requirements.dev.txt ./mujoco_py
cd mujoco_py
pip3 install -r requirements.txt
pip3 install -r requirements.dev.txt

2.2.4 安装
1
2
3
4
cd ~/mujoco-py/vendor
./Xdummy-entrypoint
cd ..
python setup.py install

3. 测试使用 ( 注意虚拟环境 )

3.1 python调用

第一次 Import 时需要用 gcc 编译一些东西, 所以这里会因为缺失包而出错.

1
2
3
4
$ python
import mujoco_py
# 第一次导入会加载一些东西,再导入一次就正常了
import mujoco_py

因为缺失包而出错, 用下面命令来安装, 方法来自openai/mujoco_py

1
sudo apt install libosmesa6-dev libgl1-mesa-glx libglfw3
3.2 查看example

mujoco有一些图形案例已经做好了, 可以直接用Python调用查看显示效果:

1
2
3
cd ~/mujoco/examples
chmod +x ./*
python body_interaction.py

这时候往往无法出现图形界面并出现下面的错误提示.

3.2 解决 Error: GLEW initalization error: Missing GL version

这个问题在openai的issus里讨论了很长, 最后解决方法是在 ~/.bshrc 中加入 export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so , 根据自身系统实际情况来确定实际文件名.

1
2
cd /usr/lib/x86_64-linux-gnu/
ls | grep libGLEW

发现我电脑中文件名是 libGLEW.so.1.13, 所以我在 ~/.bashrc 中加入下面一条:

1
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so.1.13

有些人后面还加入nvidia显卡的 libGL.so 文件, 如下:

1
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so:/usr/lib/nvidia-390/libGL.so

实际上我暂时没有找到对应的文件, 所以删掉了后面一段, 实际测试也并不影响.
至此, 整个安装都基本结束, 后面出现新问题再来填坑吧.

4. update

4.1 安装mujoco200:

  1. 官网直接下载 mujoco200 就行, 但是需要注意在解压之后, 得把 mujoco200_linux文件名改成 mujoco200 才行, 不然在 mujoco_py 中会因为路径名称不对找不到 (无力吐槽):
1
2
3
unzip mujoco200_linux.zip
mv mujoco200_linux ~/.mujoco/mujoco200
cp ~/.mujoco/mjkey.txt ~/.mujoco/mujoco200/bin #(这一步可能不需要)
  1. 测试安装:
1
2
cd ~/.mujoco/mujoco200/bin
./simulate ../model/humanoid.xml

同样, 出现木偶人就OK啦

4.2 环境配置:

把原来的环境路径替换成一下:

1
2
export LD_LIBRARY_PATH=~/.mujoco/mujoco200/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}

4.3 安装mujoco_py 2.1

先卸载旧的, 再安装2.1版本. 同时第一次使用时需要在python下 import mujoco_py 来编译需要的文件.

1
2
pip uninstall mujoco_py
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -U 'mujoco-py<2.1,>=2.0'

参考博客:

https://www.cnblogs.com/dinghongkai/p/11557917.html
https://blog.csdn.net/jianghao_ava/article/details/80874254
https://blog.csdn.net/jianghao_ava/article/details/81062337
https://blog.csdn.net/gsww404/article/details/80636676
https://blog.csdn.net/gsww404/article/details/80636676