一、安装环境
安装环境官方代码:
conda create --name venv python=3.8
conda activate venv
pip install -r requirements.txt
安装成功截图(很奇怪这里第一遍安装的时候各种报错,第二遍直接成功很顺畅)
1、解决mpi4py报错
按照官方readme.md文档流程安装环境时出现了mpi4py安装失败的报错。
报错原因:缺少 MPI(消息传递接口)的头文件,在进行编译时,编译器找不到 mpi.h 文件。要解决这个问题,需要安装一个 MPI 实现,如 MPICH 或 Open MPI。对于 Debian/Ubuntu 系统:
sudo apt install libmpich-dev # 安装 MPICH
sudo apt install libopenmpi-dev # 安装 Open MPI
2、解决mujoco报错
后续运行代码python cpo.py --task Goal_Point_8Hazards --seed 1
时发现mujoco也出现报错ModuleNotFoundError。
报错原因:尽管在pip install -r requirements.txt
已经尝试过安装相关的 mujoco-py,但MuJoCo 不是一个可以通过简单 pip install mujoco 安装的 Python 包,需要安装 MuJoCo 的物理引擎,并确保配置适当的环境变量。
安装 MuJoCo 物理引擎并配置适当的环境变量
访问 MuJoCo 官网 下载mujoco200 linux版本解压至.mujoco目录下,并修改文件名为mujoco200(这步很重要,因为网上教程大多是基于这个路径)。
添加环境变量:
vim ~/.bashrc
在最后添加下面三行:
export LD_LIBRARY_PATH=~/.mujoco/mujoco200/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia
source ~/.bashrc
检查环境变量:
echo $LD_LIBRARY_PATH
echo $MUJOCO_KEY_PATH
输出结果应是 MuJoCo 库的路径:
(base) qxt@user-System-Product-Name:~/.mujoco/mujoco200/bin$ echo $LD_LIBRARY_PATH
/data/qxt/.mujoco/mujoco200/bin
(base) qxt@user-System-Product-Name:~/.mujoco/mujoco200/bin$ echo $MUJOCO_KEY_PATH
/data/qxt/.mujoco
测试:
cd ~/.mujoco/mujoco200/bin
./simulate ../model/humanoid.xml
出现这个界面表示安装成功。
但是我一直出现报错:
Invalid MIT-MAGIC-COOKIE-1 key
ERROR: could not initialize GLFW
网上说法1、Invalid MIT-MAGIC-COOKIE-1 key
是因为 X11 的 xauth 授权信息不匹配导致的。需要确保你的 xauth 授权正确,并且被正确添加到你的 SSH 会话中。2、 could not initialize GLFW
GLFW 是用于创建窗口和处理输入的库,MuJoCo 使用它来显示图形界面。这个错误可能是因为 GLFW 无法找到正确的显示环境。
在尝试了n种方法仍未得到有效解决后,我突然发现在本地用MobaXterm连接服务器可以运行,于是我直接在MobaXterm终端查看 X11 图形服务器的地址
(base) qxt@user-System-Product-Name:~$ echo $DISPLAY
localhost:11.0
然后在VS Code里手动指定
export DISPLAY=:11.0
发现可以运行了。。。
最后,安装:safe_rl_envs
cd safe_rl_envs
pip install -e .
二、开始训练
1、配置环境参数
预配置环境集safe_rl_env_config.py
,训练流程将通过--task <env name>
自动创建预配置环境。
2、训练(以 CPO 为例)
cd safe_rl_lib/cpo
conda activate venv
python cpo.py --task Goal_Point_8Hazards --seed 1
训练日志(例如,config、model)将保存在cpo/logs/
中。