Ubuntu 本地及服务器安装 Isaac Sim

Isaac Sim 本地安装

Isaac Sim 环境是曾经 Isaac Gym 的上位版本,他们都是用来做机器人仿真环境训练的,适合用于虚实迁移任务,特点为及其高效,因为仿真环境与训练的模型都是在 GPU 上完成。IsaacLab 则是通过 Python 语言将 Isaac Sim 中的环境创建为 Gym 接口,从而直接应用于强化学习算法中。

而 Isaac Sim 现在作为 Omniverse Platform 中的一部分,我们需要先安装 Omniverse 因此我们的安装顺序

  1. Omniverse Launcher (Omniverse 可视化界面)
  2. Isaac Sim Compatibility Checker (检查电脑是否支持 Isaac Sim)
  3. 使用 Omniverse Launcher 安装一些基础包
  4. 使用 Omnvierse Launcher 安装 Isaac Sim
  5. IssaLab (配置使 Isaac Sim 成为 Python 中仿真环境接口)

在官方给出的安装教程中,只需完成 Isaac Sim RequirementsWorkstation Installation 两步,对于 Python 的 Python Environment Installation,由于其对 Conda 环境中 Python 配置介绍不详细,因此我们按照 IssacLab 中方法进行配置更为方便!

安装 Omniverse Launcher

Omniverse Launcher 下载链接填写好你的信息就能下载了,最好注册一个 Nvidia 账号,这样可以保存你的填写的信息,选择 Linux 下载(我这里是第三行):
Omniverse Launcher下载位置

下载后我们可以得到一个 omniverse-launcher-linux.AppImage 软件,把这个软件放到一个固定的位置,因为第一次运行时会在菜单中创建当前位置的快捷方式。安装方法:进入到该文件夹下,执行下述代码开始安装

sudo chmod +x omniverse-launcher-linux.AppImage
# 如果你有 Clash 代理的话可以加上 --proxy-server={IP}:{PORT}
./omniverse-launcher-linux.AppImage --no-sandbox --proxy-server=127.0.0.1:7890

安装完成omniverse后,第一次打开会让你选择Pkg和Cache的安装位置,默认位置即可,后续IsaacSim中会用到pkg位置。

安装 Isaac Sim

首先按照 Isaac Sim Compatibility Checker 给出的步骤安装 Compatibility Checker 对电脑的兼容性进行检查,只要显卡那一栏不是红的应该就没有问题(我的电脑检查结果如下左图所示)。

按照 Workstation Installation 在 Omniverse Launcher 中顺次安装 Cache, Nucleus 中的内容。

注意:在安装 Isaac Sim 时候,一定要手动选择安装的版本为 4.0.0(2024.6.6.的最新版本为 4.0.0,这样才能和后续 Python 安装的保持一致)如下中,右两图所示:

IsaacLab 安装

这里推荐使用 IsaacLab,这个是对 OmniIsaacGymEnvs 的改进版本,有详细的参考文档以及教学,可以直接参考 Installation using Isaac Sim Binaries 进行安装,不要使用Pip installation,因为这会重新下载Isaac Sim而且不完整,安装IsaacLab流程如下:

  1. 设置虚拟链接ln -s ${HOME}/.local/share/ov/pkg/isaac-sim-4.2.0 _isaac_sim (确定左侧路径就是你的isaac-sim安装位置,注意版本号)
  2. 创建conda中的新环境./isaaclab.sh --conda(如果是zsh终端,需要先修改isaaclab.sh文件中19行附近的export ISAACLAB_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"export ISAACLAB_PATH="$( cd "$( dirname "$0" )" && pwd )"因为前面那个指令是bash中的,可能无法找到正确的路径)

    创建完成后,我们进入isaaclab环境后,使用isaaclab指令就相当于执行了./isaaclab.sh脚本了

  3. conda activate isaaclab安装训练框架isaaclab -i rl_games,安装后可能还需要再装一次pip install rl_games,可能是bug
  4. 环境测试,我们直接执行训练样例代码,来自 IsaacSim - sample - Reinforcement Learning,我们使用第三个(因为它是可以使用GPU加速的),训练 cartpole 用时 45s,其他还有两个环境可以测试自带的环境请见 - Environments,训练 Ant 用时 2:42,下面以训练 Cartpole 为例:
# install python module (for rl-games),安装 rl-games
./isaaclab.sh -i rl_games
conda activate isaaclab
# run script for training(如果使用的是 conda 进行的安装,使用 python 和 ./isaaclab.sh -p 是一样的)
python source/standalone/workflows/rl_games/train.py --task Isaac-Cartpole-v0 --headless
python source/standalone/workflows/rl_games/train.py --task Isaac-Cartpole-v0 --headless
# run script for playing with 32 environments,模型权重保存在 /IsaacLab/logs/rl_games 下,例如我的就是如下位置
python source/standalone/workflows/rl_games/play.py --task Isaac-Cartpole-v0 --num_envs 32 --checkpoint /home/yy/Coding/GitHub/IsaacLab/logs/rl_games/cartpole/2024-06-18_22-12-56/nn/last_cartpole_ep_150_rew__4.6873245_.pth

Isaac Sim Docker 安装

我按照 Isaac Sim Container Installation 中的安装流程,基于 nvcr.io/nvidia/isaac-sim:4.0.0 安装了基础的 isaac-sim,我在其基础上配置了 conda, zsh, vim, tmux,...,可以直接使用 IsaacLabIsaacGymEnvs。使用方法 docker pull wtyyy/isaacsim:latest,执行

docker run --name isaac-sim --entrypoint zsh -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
    -v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
    -v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
    -v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
    -v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
    -v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
    -v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
    -v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
    -v ~/docker/isaac-sim/documents:/root/Documents:rw \
    wtyyy/isaacsim:latest

即可启动容器。

如果报错docker: Error response from daemon: unknown or invalid runtime name: nvidia.,则需要安装nvidia-container-toolkit,参考Install with apt,如果安装完成后还是报错,参考GitHub issus - Docker Error - Unknown or Invalid Runtime Name: Nvidia,修改/etc/docker/daemon.json文件包含如下内容:

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

重启docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

Ubuntu 本地及服务器安装 Isaac Sim
https://wty-yy.github.io/posts/7379/
作者
wty
发布于
2024年6月18日
许可协议