uvを使ったIsaacLabの環境構築方法

に公開

Isaac Labをuvでインストールする方法が、uv pip installするものしか見当たらなかったのでuv addで入れる方法をまとめます。

uvのインストール

この記事を読んでくださっている方は大体インストール済みと思われますが念のため。
以下のコマンドでインストールできます。

curl -LsSf https://astral.sh/uv/install.sh | sh

詳しくは以下のドキュメントを参照。
https://docs.astral.sh/uv/getting-started/installation/

プロジェクトフォルダの初期化

uv addを使うということはpyproject.tomlで管理するということなので、pyproject.toml.python-versionなどを生成します。そんなことは百も承知という方は飛ばしてください。

uv init --python 3.11 --package <your-project-name>

ちなみに--packageを付けることでsrc layoutのパッケージを作ってくれます。
--libと違って[project.scripts]を設定してくれるので、CLIを作るときなどに便利です。
https://docs.astral.sh/uv/concepts/projects/init/#packaged-applications

また、執筆時点ではIsaac Sim 5.X.Xはpython 3.11を要求しているので、--python 3.11を付けています。
https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/isaaclab_pip_installation.html

CUDA同梱torch用のindex urlの設定

CUDA用のtorchにはCUDAが同梱されているので、ローカルにCUDA環境を汚す必要がなくて便利です。
ただ、この場合はindex urlを目的のCUDAのバージョンに合わせて設定する必要があります。
詳しくは以下のドキュメントを参照。
https://docs.astral.sh/uv/guides/integration/pytorch/

以下、ドキュメントから必要な部分のみ抜粋します。

まずindex urlを追加するため、pyproject.tomlに以下を追記します。
CUDAのバージョンは環境に合わせて適宜変更してください。

pyproject.toml
[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true

explicit = trueを付けると、このインデックスを指定したパッケージのみでこのインデックスが使われるようになります。今回は複数のインデックスが混在するので、uvが正しくパッケージの依存関係を解決できるよう設定しておくことをお勧めします。

つづいて、torchとtorchvisionがこのindex urlを使うよう設定します。
以下をpyproject.tomlに追記してください。

pyproject.toml
[tool.uv.sources]
torch = { index = "pytorch-cu128" }
torchvision = { index = "pytorch-cu128" }

NVIDIAのindex urlの設定

Isaac LabとIsaac SimはNVIDIAのリポジトリにあるので、torch同様index urlを設定します。
以下をpyproject.tomlに追記してください。

pyproject.toml
[[tool.uv.index]]
name = "nvidia"
url = "https://pypi.nvidia.com"
explicit = true

そして、[tool.uv.sources]の部分に以下のようにisaaclabのインデックスを指定してください。

pyproject.toml
[tool.uv.sources]
torch = { index = "pytorch-cu128" }
torchvision = { index = "pytorch-cu128" }
+ isaaclab = { index = "nvidia" }
ここまで設定した状態の`pyproject.toml`の例
pyproject.toml
[project]
name = "isaaclab-sample-package"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
authors = [
    { name = "you", email = "aaa@bbb.ccc" }
]
requires-python = ">=3.11"
dependencies = []

[project.scripts]
isaaclab-sample-package = "isaaclab_sample_package:main"

[build-system]
requires = ["uv_build>=0.9.5,<0.10.0"]
build-backend = "uv_build"

[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true

[[tool.uv.index]]
name = "nvidia"
url = "https://pypi.nvidia.com"
explicit = true

[tool.uv.sources]
torch = { index = "pytorch-cu128" }
torchvision = { index = "pytorch-cu128" }
isaaclab = { index = "nvidia" }

torchとisaaclabのインストール

ここまでの設定が正しくできていれば、以下のコマンドでインストールできるはずです。

uv add isaaclab[isaacsim,all] omniverse-kit

少なくとも私物のWindows 11ではインストールできました。
omniverse-kitは後述するsettings.jsonの生成時に要求されました。

インストール出来たら、試しに以下を実行してみましょう。

uv run isaacsim --help

初回はEULAに同意するか問われると思います。同意したらisaacsimコマンドの使い方が表示されます。

Isaac Sim自体は以下で起動できます。

uv run isaacsim

初回は起動後の初期化処理に時間がかかるので、気長に待ちましょう。

VSCodeで開発する人は、以下のコマンドでいい感じに依存フォルダを設定した.vscode/settings.jsonを書いてくれます。すでにある場合は上書きされてしまうのでご注意。

uv run python -m isaaclab --generate-vscode-settings

Pythonスクリプトから起動

__init__.pyを以下のように編集します。

src/isaaclab_sample_package/__init__.py
import argparse
import sys

from isaaclab.app import AppLauncher


def main() -> None:
    parser = argparse.ArgumentParser()
    # append AppLauncher cli args
    AppLauncher.add_app_launcher_args(parser)
    # parse the arguments
    args_cli, hydra_args = parser.parse_known_args()
    # clear out sys.argv for Hydra
    sys.argv = [sys.argv[0]] + hydra_args
    # launch omniverse app
    app_launcher = AppLauncher(args_cli)
    simulation_app = app_launcher.app

    print("Isaac Lab started successfully!")

    simulation_app.close()

以下で起動します。

uv run <your-package-name>

一度Isaac Labから起動したときのIsaac SimのGUIが表示され、少し経ったら消えるはずです。出力の最後の方に以下のような記述があれば問題ないと思います。

[14.506s] app ready
[18.031s] Simulation App Startup Complete
Isaac Lab started successfully!
[18.262s] Simulation App Shutting Down

module 'omni.usd' has no attribute 'UsdContext'みたいなエラーが出る場合

./.venv/Lib/site-packages/isaacsim/extscacheを削除すればいいらしいです。
https://forums.developer.nvidia.com/t/attributeerror-module-omni-usd-has-no-attribute-usdcontext/341881

まとめ

uv addでIsaac Labを設定する方法をまとめました。index urlを設定するところが肝かと思います。

Discussion