12/02/25 @ 忘记把环境版本写到正文里了,已修复。另外添加了在运行过程中遇到的依赖问题。
TOC
关于isaac gym的疑难杂症
近期在研究rl-based humanoid control,用于motion mimic,也即是Perpetual Humanoid Control for Real-time Simulated Avatars这篇文章。虽然论文、代码已经搞明白了,流程也跑通了,谁料Ubuntu的显卡驱动丢失(推测是因为内核版本更新,跟显卡驱动所使用的内核不一致,导致其驱动无法正常运行,谁知道呢),整个系统重装、再装一次显卡驱动,连夜加急重装python环境,又又又踩坑,现在将一些遇到的坑记录下来,防止自己又忘了。
1. 配置phc依赖
conda create -n isaac python=3.8
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia
pip install -r requirement.txt
这里需要注意,requirement.txt这里面有对pytorch lightning的依赖,现在(2025年12月)装的话,其版本可能会很高,跟pytorch-cuda=11.6的项目依赖会冲突。由于本项目并没有用lightning,所以可以删去。
另外,后续isaac gym会报过时gpu架构的错,错误信息如下:
RuntimeError: nvrtc: error: invalid value for --gpu-architecture (-arch)
经过尝试,如下环境可以运行(注,我是4090):
python==3.8.20
rl-games==1.1.4
isaacgym==1.0rc4
isaacgymenvs==1.3.2
gym==0.23.1
torch==1.13.0+cu116
也就是pytorch-cuda=11.6这个版本对应的那些pytorch依赖,装好了pytorch,再按照PHC的安装流程走应该是没问题的,我把上面的几个关键版本贴上了,PHC提到的isaac gym应该会依次安装跟我上面版本一致的包。
这里顺带贴安装pytorch的命令行,方便大家使用,也防止自己忘记,切记把PHC的requirement的pytorch相关的安装命令删除。
# compatible torch version!!!
pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu116
特别注意
其中rl-games的版本一定要是1.1.4,不然会报如下的错误。这在后面装IsaacGymEnvs的时候,IsaacGymEnvs有可能会强制升级rl-games,在后续我会说明。
runner.model_builder.model_factory.register_builder('amp', lambda network, **kwargs: amp_models.ModelAMPContinuous(network))
AttributeError: 'Runner' object has no attribute 'model_builder'
2. 配置isaac gym
首先下载isaac gym,访问链接,具体版本为isaac-gym-preview-4,由于isaac gym已经过时,被isaac sim全面替代,所以还是要注意一下到底是gym还是sim。
然后按教程安装,访问链接,现将流程摘录如下:
# 先激活现有环境
conda activate isaac
# 解压,然后到isaac gym的目录中去
cd path-to-isaac_gym
# 找到名为python的sub folder
pip install -e .
# 检查结果
pip show isaacgym
3. 配置isaac gym envs
去仓库下载代码,访问链接,然后去到仓库目录安装。
pip install -e .
特别注意
如前所述,IsaacGymEnvs有可能会强制升级rl-games,因此需要对setup.py的内容进行修改,ref。
修改IsaacGymEnvs的版本为1.3.2,修改rl-games的版本为1.1.4。
4. 运行过程中的依赖报错
4.1 libstdc++.so.6找不到GLIBCXX_3.4.32
常规问题,直接将系统的libstdc++.so拷贝到isaac的环境中去就好了,ref。
例如:
# link right libstdc++
cd ~/miniconda3/envs/isaac/lib
rm libstdc++.so.6 libstdc++.so
sudo ln -s libstdc++.so.6.0.33 libstdc++.so
sudo ln -s libstdc++.so.6.0.33 libstdc++.so.6
4.2 ImportError: libpython3.8.so.1.0
情况就是跑python phc/run_hydra.py xxx的时候会报这个错,将isaac的lib放到系统环境依赖中可以解决。
例如:
export LD_LIBRARY_PATH=/path_to_conda/envs/isaac/lib:$LD_LIBRARY_PATH
4.3 [Error] [carb] [Plugin: libcarb.gym.plugin.so] Could not load the dynamic library
这个错是rt的时候抛出的,栈顶错误为类似RuntimeError: Failed to acquire interface: carb::gym::Gym (pluginName: nullptr),这实际上是4.2问题的延展问题,也即是python的isaac这个包(python接口)找不到对应isaac本体(dll),把本体的路径也加到环境变量中即可。
例如:
export LD_LIBRARY_PATH=/path_to_your_root/IsaacGym_Preview_4_Package/isaacgym/python/isaacgym/_bindings/linux-x86_64:$LD_LIBRARY_PATH

2万+





