Ubuntu22.04下Issac Gym/宇树机器人RL&gcc/g++,CUDA,CUDA ToolKit,Pytorch配置环境配置gaussian-splatting
前置条件
本随笔写作Condition:在本人3050Ti笔记本上配好环境后,再在室友4060笔记本上边配边记录整理所得。
室友的系统已经配好了相应驱动,因此,本随笔内容基于已经安装了NVIDIA显卡驱动的系统。下次搞到没装驱动的系统我再补一个随笔。
在已经安装驱动的电脑上执行
nvidia-smi
可以在右上角看到 CUDA:
这个数字表示驱动所支持的最大CUDA版本,小于它的都能兼容。所以在pytorch官网选择CUDA 12.1不是指这个num=12.1,而是说pytorch相当于在12.1版本的CUDA上运行,所以只有num>=12.1才能正常运行
并且,这个CUDA 12.1并不意味着你需要安装CUDA 12.1,也不意味着你安装了CUDA 12.1,具体的后面再谈。
宇树机器人
宇树科技的文档中心有一个简单的安装文档,基本上照着写就行,会遇到一个小问题。
问题与解决
- 在第三步“安装CUDA,PYTORCH”那个指令并不一定能正确安装,并且在安装的时候可以指定numpy=1.23.5(否则numpy版本过高会导致后续运行失败)。建议在pytorch官网根据自己驱动去安装。
比如我的CUDA num 支持到12.2,则我可以使用如下指令之一
第一个
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
第二个
conda install numpy=1.23.5 pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
第二个比第一个多指定了numpy的版本,一般使用第二个就可以了,否则待会还是需要降低numpy版本
- 在完成Issac Gym库的安装后,会提示 "Libpython3.8.so.1.0" 不存在
问题解答参考于stackoverflow的第一个回答
简单的来说就是因为Issac Gym需要调用的python库是在conda环境里面,但是Issac Gym默认调用系统的python库所以报错
解决方式就是把conda环境下的这个文件放到系统的路径下,示例如下
sudo cp ~/anaconda3/envs/rl-go2/lib/libpython3.8.so.1.0 /usr/lib/
这里我室友的电脑不知为啥寄了(有窗口但无响应),我去给他重启但无效。
根据另一篇博客的说明,应该是他开了华硕的独显模式,导致不使用集显,从而设备选择错误。但是实际上他的电脑并没有那个博客所指出的文件。而是在这个路径下
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
加入这个配置后成功运行。
-
修改路径时不需要最后的legged_gym
-
no tensorboard
pip install tensorborad
- 遇到了问题too many values to unpack (expected 2)
这是由于官方文档get到的rsl库的版本不正确,最新的版本不兼容,需要重新安装
卸载旧版本
pip uninstall rsl_rl
在rsl_rl目录下
git checkout v1.0.2
pip install -e .
至此,所有问题都得到解决
gaussian-splatting
git clone需要递归,否则没有子模块
在创建conda环境前,需要检查c++是否可以调用glm库,如果无法
#include<glm/glm.hpp>
随便在网上下一个glm的文件夹放到 /usr/include/ 下。否则无法 pip install
然后
根据我的个人环境,选择了
gcc 11 + CUDA 11.8 + 相应pytorch
pytorch之类的内容都写在了environment.yml里面,原本的环境文件需要修改,用以下这个就行
name: mygs
channels:
- pytorch
- conda-forge
- defaults
- nvidia
dependencies:
- cudatoolkit=11.8
- plyfile
- python=3.10
- pip=22.3.1
- pytorch=2.2.0
- torchaudio=2.2.0
- torchvision=0.17.0
- pytorch-cuda=11.8
- tqdm
- pip:
- submodules/diff-gaussian-rasterization
- submodules/simple-knn