ubuntu20.04安装mujoco、mujoco-py、gym以及将 urdf 转 mjcf

1、安装mujoco

1.1 在csdn - 安全中心安装mujoco210

Download the MuJoCo version 2.1 binaries for
   [Linux](https://mujoco.org/download/mujoco210-linux-x86_64.tar.gz) or
   [OSX](https://mujoco.org/download/mujoco210-macos-x86_64.tar.gz).

1.2 将下载的mujoco210解压到~/.mujoco/mujoco210路径下

Extract the downloaded `mujoco210` directory into `~/.mujoco/mujoco210`.

If you want to specify a nonstandard location for the package,
use the env variable `MUJOCO_PY_MUJOCO_PATH`.

注意:ctrl + h 可显示前缀带.的隐藏文件

如果要为包指定非标准位置,请使用环境变量MUJOCO_PY_MUJOCO_PATH

验证是否安装成功(运行下面代码,出现小人证明安装成功)

cd ~/.mujoco/mujoco210/bin

./simulate ../model/humanoid.xml

2、安装mujoco-py

2.1 使用conda命令新建一个环境安装mujoco-py

conda create -n mujoco_py python=3.8
conda activate mujoco_py

2.2 安装一些必要的库

To install mujoco-py on Ubuntu, make sure you have the following libraries installed:

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

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

# Make sure your python environment is activated
pip install -U 'mujoco-py<2.2,>=2.1'

直接pip安装通常需要等很久,并且易出现超时报错,故暂时换源并延长报错时长

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U 'mujoco-py<2.2,>=2.1' --default-timeout=1000
# -i https://pypi.tuna.tsinghua.edu.cn/simple 使用清华镜像源
# --default-timeout=1000 超时时间1000s

3、 解决mujoco-py安装报错

3.1 报错`-lGL` cannot be found

If you installed above libraries and you still see an error that `-lGL` cannot be found, most likely you needto create the symbolic link directly:

    sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so

sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so

3.2 安装报错:mujoco_py/cymj.pyx:67:5: Exception check on 'c_warning_callback'

[1/1] Cythonizing /root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/cymj.pyx

Error compiling Cython file:
------------------------------------------------------------
...
    See c_warning_callback, which is the C wrapper to the user defined function
    '''
    global py_warning_callback
    global mju_user_warning
    py_warning_callback = warn
    mju_user_warning = c_warning_callback
                       ^
------------------------------------------------------------

/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/cymj.pyx:92:23: Cannot assign type 'void (const char *) except * nogil' to 'void (*)(const char *) noexcept nogil'

Error compiling Cython file:
------------------------------------------------------------
...
    See c_warning_callback, which is the C wrapper to the user defined function
    '''
    global py_error_callback
    global mju_user_error
    py_error_callback = err_callback
    mju_user_error = c_error_callback
                     ^
------------------------------------------------------------

/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/cymj.pyx:127:21: Cannot assign type 'void (const char *) except * nogil' to 'void (*)(const char *) noexcept nogil'
Traceback (most recent call last):
  File "main.py", line 8, in <module>
    import d4rl
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/d4rl/__init__.py", line 14, in <module>
    import d4rl.locomotion
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/d4rl/locomotion/__init__.py", line 2, in <module>
    from d4rl.locomotion import ant
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/d4rl/locomotion/ant.py", line 20, in <module>
    import mujoco_py
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/__init__.py", line 2, in <module>
    from mujoco_py.builder import cymj, ignore_mujoco_warnings, functions, MujocoException
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/builder.py", line 504, in <module>
    cymj = load_cython_ext(mujoco_path)
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/builder.py", line 110, in load_cython_ext
    cext_so_path = builder.build()
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/builder.py", line 226, in build
    built_so_file_path = self._build_impl()
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/builder.py", line 278, in _build_impl
    so_file_path = super()._build_impl()
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/builder.py", line 239, in _build_impl
    dist.ext_modules = cythonize([self.extension])
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/Cython/Build/Dependencies.py", line 1134, in cythonize
    cythonize_one(*args)
  File "/root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
    raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: /root/anaconda3/envs/mujoco_env/lib/python3.8/site-packages/mujoco_py/cymj.pyx

属于cython编译报错,可以查看一下mujoco_py文件'require.txt'里面,对cython版本的要求,大于最低版本就行:

pip uninstall cython
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cython==3.0.0a10 --default-timeout=1000

4、安装gym

sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U gym[all] --default-timeout=1000

4.1 报错ERROR: Could not build wheels for box2d-py

Building wheels for collected packages: box2d-py
  Building wheel for box2d-py (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [16 lines of output]
      Using setuptools (version 68.0.0).
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-cpython-311
      creating build\lib.win-amd64-cpython-311\Box2D
      copying library\Box2D\Box2D.py -> build\lib.win-amd64-cpython-311\Box2D
      copying library\Box2D\__init__.py -> build\lib.win-amd64-cpython-311\Box2D
      creating build\lib.win-amd64-cpython-311\Box2D\b2
      copying library\Box2D\b2\__init__.py -> build\lib.win-amd64-cpython-311\Box2D\b2
      running build_ext
      building 'Box2D._Box2D' extension
      swigging Box2D\Box2D.i to Box2D\Box2D_wrap.cpp
      swig.exe -python -c++ -IBox2D -small -O -includeall -ignoremissing -w201 -globals b2Globals -outdir library\Box2D -keyword -w511 -D_SWIG_KWARGS -o Box2D\Box2D_wrap.cpp Box2D\Box2D.i
      error: command 'swig.exe' failed: None
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for box2d-py
  Running setup.py clean for box2d-py
Failed to build box2d-py
ERROR: Could not build wheels for box2d-py, which is required to install pyproject.toml-based projects

报错原因参考:ERROR: Failed building wheel for box2d-py 解决方法-CSDN博客

gym是一个强化学习的Python库,它依赖box2d,box2d是一个游戏领域的2D图形引擎,它在运行时又会依赖到swig,swig是一个将c/c++代码封装为Python库的工具(是Python调用c/c++库的一种常见手段)。而swig并不是一个python库,应该说算是一个系统级别的库,在Linux,Windows和Mac上都有不同的发行包,无法通过pip自动安装。所以,在初次构建依赖到gym的Python项目时就会遇到“ERROR: Failed building wheel for box2d-py”错误,原因就是本地操作系统上没有安装swig。
解决方案:

# 查看电脑有无swig软件包
swig --version 
# 若没有,安装swig软件包
sudo apt install swig  
# 安装box2d-py
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple box2d-py --default-timeout=3000   
# 安装gym
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gym[all] --default-timeout=3000

5、测试运行mujoco-py

5.1 在.bashrc文件中添加环境变量(没加会报错提示)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/.mujoco/mujoco210/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia

5.2 测试代码正确运行时的情况

$ python3
Python 3.8.18 (default, Sep 11 2023, 13:40:15) 
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 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.  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]

5.3 若运行报错:编译文件出错fatal error: GL/glew.h: No such file or directory

执行以下命令即可:

sudo apt-get install build-essential
sudo apt-get install build-essential libgl1-mesa-dev
sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
sudo apt-get install libglfw3-dev libglfw3

5.4 若运行报错:FileNotFoundError: [Errno 2] No such file or directory: 'patchelf'

执行以下命令即可:

sudo apt-get install patchelf

6、将solidworks导出的urdf文件转成mujoco对应的mjcf文件

6.1 在urdf文件添加一些必要的MuJoCo的tag用于控制编译选项

  <mujoco>
        <compiler 
        meshdir="#自己存放模型.stl文件的目录#" 
        balanceinertia="true" 
        discardvisual="false" />
  </mujoco>

6.2 检查urdf文件(可选)

sudo apt install liburdfdom-tools
check_urdf xxx.urdf 
# 检查urdf文件,没问题则显示--- Successfully Parsed XML ---

6.3 将urdf 转成 mjcf

~/mujoco/mujoco210/bin
./compile /path/to/model.urdf /path/to/model.xml

6.4 测试生成的mjcf文件模型

cd ~/.mujoco/mujoco210/bin
 ./simulate /path/to/model.xml
urdf的xml文件格式官网:urdf/XML - ROS Wiki
mujoco的xml文件格式官网:XML Reference - MuJoCo Documentation

 7、安装pytorch

 7.1  先查看操作系统的版本
lsb_release -a
 返回 Ubuntu 20.04.6 LTS
 7.2  查看显卡驱动版本
nvidia-smi
 7.3  安装pytorch
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

 Start Locally | PyTorch pytorch版本选择传送门

8、引用博客

编译文件出错fatal error: GL/glew.h: No such file or directory-CSDN博客

[已解决] Cython.Compiler.Errors.CompileError: /root/anaconda3/envs/mujoco_env/lib/python3.8/site-packag_/home/wenbo/anaconda3/envs/lac/lib/python3.8/site--CSDN博客

mujoco安装及urdf转xml方法记录_urdf转换xml-CSDN博客
ERROR: Failed building wheel for box2d-py 解决方法-CSDN博客

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Ubuntu 20.04安装mujoco的步骤如下: 1. 首先安装mujoco的依赖项,包括cmake、gcc和g。你可以通过以下命令来安装它们: ``` sudo apt-get install cmake gcc g++ ``` 2. 下载mujoco安装包,你可以从mujoco官网(https://mujoco.org/)下载mujoco210文件。 3. 解压下载的文件到指定目录~/.mujoco。你可以使用以下命令解压文件: ``` tar -xvzf mujoco210_linux.zip -C ~/.mujoco ``` 4. 配置.bashrc环境文件,添加mujoco的路径。你可以通过以下命令打开.bashrc文件: ``` nano ~/.bashrc ``` 在文件的末尾添加以下两行代码: ``` export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mujoco210_linux/bin export LD_PRELOAD=~/.mujoco/mujoco210_linux/bin/libglfw.so ``` 保存并退出文件。 5. 测试mujoco是否安装成功。你可以打开一个新的终端窗口,然后运行以下命令: ``` python import mujoco_py ``` 如果没有错误提示,说明mujoco安装成功。 接下来,你可以安装mujoco-py,它是mujocoPython接口。安装mujoco-py的步骤如下: 1. 下载mujoco-py到本地电脑。你可以使用以下命令克隆mujoco-py的GitHub仓库: ``` git clone https://github.com/openai/mujoco-py.git ``` 2. 创建一个Anaconda环境,并在该环境中安装mujoco-py。你可以使用以下命令创建环境并激活它: ``` conda create -n mujoco python=3.7 conda activate mujoco ``` 3. 在Anaconda环境中安装mujoco-py。你可以使用以下命令进入mujoco-py的目录,并运行安装命令: ``` cd mujoco-py pip install -r requirements.txt python setup.py install ``` 4. 配置.bashrc环境文件,添加mujoco-py的路径。你可以使用以下命令打开.bashrc文件: ``` nano ~/.bashrc ``` 在文件的末尾添加以下一行代码: ``` export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mujoco-py/bin ``` 保存并退出文件。 5. 测试mujoco-py安装是否成功。你可以在终端窗口中运行以下命令: ``` python import mujoco_py ``` 如果没有错误提示,说明mujoco-py安装成功。 请注意,安装mujocomujoco-py需要一定的时间和资源,并且需要一些操作系统和Python的基本知识。如果在安装过程中遇到问题,可以参考相关文档或寻求进一步的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值