在Ubuntu 20.04上驯服MuJoCo:从GLEW初始化到Cython编译的深度排雷指南
如果你正在Ubuntu 20.04上搭建机器人学习或强化学习的研究环境,MuJoCo和它的Python接口mujoco-py很可能是你绕不开的一环。这个物理引擎以其精准的仿真和高效的性能,在学术界和工业界都备受青睐。然而,从官网下载mujoco210到成功运行第一个gym环境,这条路布满了“地雷”——尤其是那些令人头疼的GLEW初始化错误和Cython编译警告。网上的教程很多,但往往只告诉你“怎么做”,却不解释“为什么”,一旦遇到教程之外的报错,就只能对着终端发呆。
这篇文章不是另一个简单的步骤罗列。我将结合自己多次在Ubuntu 20.04上从零部署mujoco-py的经验,深入剖析这两个最棘手的报错背后的原理,并提供一套系统性的、可复现的解决方案。我们的目标不仅仅是让代码跑起来,更是要理解每一步操作的意义,让你在未来的环境配置中游刃有余。
1. 环境基石:系统准备与MuJoCo本体安装
在解决任何具体问题之前,一个干净、准备充分的系统环境是成功的一半。Ubuntu 20.04 LTS是一个长期支持版本,其软件库的稳定性非常适合作为开发平台。但默认安装的组件可能并不完全满足mujoco-py的编译和运行需求。
首先,确保你的系统是最新的。打开终端,执行以下命令来更新包列表并升级现有软件:
sudo apt update && sudo apt upgrade -y
接下来,安装一系列关键的构建工具和依赖库。mujoco-py在编译过程中需要用到Cython、patchelf等工具,而运行时则依赖图形库和GLEW。一次性安装它们可以避免后续的麻烦:
sudo apt install -y \
build-essential \
libgl1-mesa-dev \
libgl1-mesa-glx \
libglew-dev \
libosmesa6-dev \
software-properties-common \
patchelf \
ffmpeg \
libav-tools \
xvfb \
libxrandr2 \
libxinerama1 \
libxcursor1 \
libxi6 \
libxxf86vm1
注意:
libglew-dev这个包至关重要,它是后续解决“GLEW initialization error”的核心。同时,libosmesa6-dev提供了离屏渲染支持,对于在无图形界面的服务器上运行MuJoCo仿真至关重要。
完成系统级依赖安装后,我们开始部署MuJoCo 2.10本体。访问MuJoCo官网获取适用于Linux的mujoco210-linux-x86_64.tar.gz压缩包。下载完成后,按照以下步骤操作:
# 1. 在用户主目录下创建隐藏的.mujoco文件夹
mkdir -p ~/.mujoco
# 2. 将下载的压缩包解压至该文件夹
# 假设你的压缩包在~/Downloads目录下
tar -zxvf ~/Downloads/mujoco210-linux-x86_64.tar.gz -C ~/.mujoco
# 3. 验证解压结果
ls -la ~/.mujoco/
你应该能看到一个名为mujoco210的目录。
接下来是配置环境变量。很多教程只让你添加LD_LIBRARY_PATH,但这往往不够。我推荐将以下内容添加到你的~/.bashrc文件末尾(使用nano ~/.bashrc或gedit ~/.bashrc编辑):
# MuJoCo 2.10 路径配置
export MUJOCO_PY_MUJOCO_PATH=$HOME/.mujoco/mujoco210
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.mujoco/mujoco210/bin
保存文件后,执行source ~/.bashrc使配置生效。现在,你可以测试MuJoCo本体是否安装成功:
cd ~/.mujoco/mujoco210/bin
./simulate ../model/humanoid.xml
如果看到一个弹窗显示一个站立的人形模型,并且你可以用鼠标拖拽视角


814

被折叠的 条评论
为什么被折叠?



