Ubuntu22.04 配置 Isaac Gym_ubuntu22.04安装isaac gym
Isaac Gym 是 NVIDIA 开发的一个基于GPU的机器人强化学习训练平台。
1.配置系统环境
Ubuntu22.04 安装 CUDA
Ubuntu22.04 安装 Miniconda3
2.安装Isaac Gym
在 NVIDIA Developer 下载安装文件IsaacGym_Preview_4_Package.tar.gz
,下载后解压。
添加虚拟环境
# 创建虚拟环境,环境名称可自定义conda create -n rlgpu python=3.8conda activate rlgpu# 安装Python包及相关依赖cd isaacgym/pythonpip install -e .
3. 配置环境变量
如果此时运行例程,会报错:ImportError: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
。这是因为Isaac Gym 适配到python3.8,而ubuntu22.04 使用的python是3.10。
conda 提供了钩子(hooks)机制,允许在激活和去激活环境时运行自定义脚本。现在通过脚本将虚拟环境中动态链接库路径链接到环境变量 LD_LIBRARY_PATH
中。
3.1.创建激活脚本
在激活虚拟环境时,activate.d 文件夹中的脚本会被依次执行。通过在 activate.d 中添加脚本,可以在激活环境时设置环境变量,创建脚本,例如 set_env_vars.sh:
# 要先确保已激活虚拟环境mkdir -p $CONDA_PREFIX/etc/conda/activate.dtouch $CONDA_PREFIX/etc/conda/activate.d/set_env_vars.sh
编辑脚本文件,添加以下内容:
#!/bin/bashexport LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
3.2.创建去激活脚本
在退出虚拟环境时,deactivate.d 文件夹中的脚本会被依次执行。通过在 deactivate.d 中添加脚本,可以在退出环境时清理环境变量,创建脚本,例如 unset_env_vars.sh:
mkdir -p $CONDA_PREFIX/etc/conda/deactivate.dtouch $CONDA_PREFIX/etc/conda/deactivate.d/unset_env_vars.sh
编辑脚本文件,添加以下内容,从环境变量中移除 $CONDA_PREFIX/lib:
#!/bin/bashexport LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | sed \"s|$CONDA_PREFIX/lib:||\")
3.3.确保脚本可执行
运行以下命令,确保这两个脚本是可执行的:
chmod +x $CONDA_PREFIX/etc/conda/activate.d/set_env_vars.shchmod +x $CONDA_PREFIX/etc/conda/deactivate.d/unset_env_vars.sh
3.4.测试
检查 LD_LIBRARY_PATH
是否正确添加:
# 退出环境重新激活conda activate rlgpuecho $LD_LIBRARY_PATH
应该会看到虚拟环境的动态链接库路径被添加到了 LD_LIBRARY_PATH
中,例如:/home/q/miniconda3/envs/rlgpu/lib:/other/lib
。
退出虚拟环境,检查动态链接库路径是否正确移除:
conda deactivateecho $LD_LIBRARY_PATH
正确的情况是没有了conda相关的路径,例如:/other/lib
。
4.运行例程
运行例程验证效果,能出现下图情况则配置完成。
cd examplespython 1080_balls_of_solitude.py
5.附:Isaac Gym 无响应问题
以下问题如果没有遇到则略过。
在有些电脑上,可能打开Isaac Gym界面会卡住,具体是卡在 gym.draw_viewer(viewer, sim, True)
。
可以强制指定使用 NVIDIA 的 Vulkan 驱动解决。
具体操作还是采用 Conda 的钩子机制(避免污染全局环境)。
5.1.创建激活脚本
# 要先确保已激活虚拟环境,并创建了activate.d文件夹touch $CONDA_PREFIX/etc/conda/activate.d/set_nvidia_vulkan.sh
编辑脚本文件,添加以下内容:
#!/bin/bash# backupexport _CONDA_BACKUP_VK_ICD_FILENAMES=\"${VK_ICD_FILENAMES:-}\"# set new valueexport VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
5.2.创建去激活脚本
在退出环境时恢复 VK_ICD_FILENAMES
,创建脚本:
# 要先确保已激活虚拟环境,并创建了deactivate.d文件夹touch $CONDA_PREFIX/etc/conda/deactivate.d/unset_nvidia_vulkan.sh
编辑脚本文件,添加以下内容:
#!/bin/bashif [[ -n \"${_CONDA_BACKUP_VK_ICD_FILENAMES:-}\" ]]; then export VK_ICD_FILENAMES=\"$_CONDA_BACKUP_VK_ICD_FILENAMES\"else unset VK_ICD_FILENAMESfiunset _CONDA_BACKUP_VK_ICD_FILENAMES
5.3.确保脚本可执行
运行以下命令,确保这两个脚本是可执行的:
chmod +x $CONDA_PREFIX/etc/conda/activate.d/set_nvidia_vulkan.shchmod +x $CONDA_PREFIX/etc/conda/deactivate.d/unset_nvidia_vulkan.sh
5.4.测试
检查 VK_ICD_FILENAMES
是否正确添加:
conda activate rlgpuecho $VK_ICD_FILENAMES
应该会看到 /usr/share/vulkan/icd.d/nvidia_icd.json