我最近需要在我的 Ubuntu 20.04 系统上设置多个版本的 MuJoCo,并在不同的 Conda 虚拟环境中使用它们。以下是我面临的挑战以及我如何解决这些挑战的总结。
挑战
- 管理 MuJoCo 的多个版本:我需要一种方法来无缝地在不同的 MuJoCo 版本之间切换。
- 配置环境变量:确保在每个 Conda 虚拟环境中正确设置了必要的环境变量。
- 验证 MuJoCo 安装:测试设置以确认 MuJoCo 在我的虚拟环境中正常运行。
解决方案
1. 安装 MuJoCo
mujoco 210
Ubantu 20.04 安装 Mujoco210、mujoco-py、gym及报错解决
mujoco 200
2.通过设置环境变量在不同的 Conda 虚拟环境中使用
之前在我安装好mujoco210后,切换到新的虚拟环境发现用不了,最后发现是环境变量的问题。
为了确保在我的 Conda 虚拟环境中正确设置环境变量,使用以下命令。
conda activate tt1 #tt1是我的虚拟环境名称,可以换成你自己的(下面注意保持一致)
conda env config vars set LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mujoco210/bin
conda deactivate
conda activate tt1
验证安装
为了验证 MuJoCo 是否设置正确,我创建了一个简单的测试脚本。
test_mujoco_minimal.py
:
import mujoco_py
import os
# Path to the humanoid.xml model
model_path = os.path.join(mujoco_py.utils.discover_mujoco(), 'model/humanoid.xml')
# Load the model
model = mujoco_py.load_model_from_path(model_path)
sim = mujoco_py.MjSim(model)
# Print the initial state of the simulation
print("Initial state:", sim.data.qpos)
# Perform a simulation step
sim.step()
# Print the state after one step
print("State after one step:", sim.data.qpos)
# Render the simulation to a window
viewer = mujoco_py.MjViewer(sim)
while True:
sim.step()
viewer.render()
3. 不同版本的mujoco切换
创建一个脚本switch_mujoco.sh
来在 MuJoCo 版本之间切换:
#!/bin/bash
MUJOCO_DIR=$HOME/mujoco
if [ $# -eq 0 ]; then
echo "Usage: switch_mujoco.sh <version>"
echo "Available versions:"
ls $MUJOCO_DIR
exit 1
fi
VERSION=$1
MUJOCO_PATH=$MUJOCO_DIR/$VERSION
if [ ! -d $MUJOCO_PATH ]; then
echo "Version $VERSION not found in $MUJOCO_DIR"
exit 1
fi
export MUJOCO_PY_MUJOCO_PATH=$MUJOCO_PATH
export LD_LIBRARY_PATH=$MUJOCO_PATH/bin:$LD_LIBRARY_PATH
echo "Switched to MuJoCo version $VERSION"
使脚本可执行:
chmod +x switch_mujoco.sh
版本间切换:
-
使用脚本在 MuJoCo 版本之间切换。例如,要切换到版本
mujoco200
:
source switch_mujoco.sh mujoco200
切换到mujoco210
:
source switch_mujoco.sh mujoco210