uvを使ったIsaacLabの環境構築方法
Isaac Labをuvでインストールする方法が、uv pip installするものしか見当たらなかったのでuv addで入れる方法をまとめます。
uvのインストール
この記事を読んでくださっている方は大体インストール済みと思われますが念のため。
以下のコマンドでインストールできます。
curl -LsSf https://astral.sh/uv/install.sh | sh
詳しくは以下のドキュメントを参照。
プロジェクトフォルダの初期化
uv addを使うということはpyproject.tomlで管理するということなので、pyproject.tomlや.python-versionなどを生成します。そんなことは百も承知という方は飛ばしてください。
uv init --python 3.11 --package <your-project-name>
ちなみに--packageを付けることでsrc layoutのパッケージを作ってくれます。
--libと違って[project.scripts]を設定してくれるので、CLIを作るときなどに便利です。
また、執筆時点ではIsaac Sim 5.X.Xはpython 3.11を要求しているので、--python 3.11を付けています。
CUDA同梱torch用のindex urlの設定
CUDA用のtorchにはCUDAが同梱されているので、ローカルにCUDA環境を汚す必要がなくて便利です。
ただ、この場合はindex urlを目的のCUDAのバージョンに合わせて設定する必要があります。
詳しくは以下のドキュメントを参照。
以下、ドキュメントから必要な部分のみ抜粋します。
まずindex urlを追加するため、pyproject.tomlに以下を追記します。
CUDAのバージョンは環境に合わせて適宜変更してください。
[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
explicit = trueを付けると、このインデックスを指定したパッケージのみでこのインデックスが使われるようになります。今回は複数のインデックスが混在するので、uvが正しくパッケージの依存関係を解決できるよう設定しておくことをお勧めします。
つづいて、torchとtorchvisionがこのindex urlを使うよう設定します。
以下を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に追記してください。
[[tool.uv.index]]
name = "nvidia"
url = "https://pypi.nvidia.com"
explicit = true
そして、[tool.uv.sources]の部分に以下のようにisaaclabのインデックスを指定してください。
[tool.uv.sources]
torch = { index = "pytorch-cu128" }
torchvision = { index = "pytorch-cu128" }
+ isaaclab = { index = "nvidia" }
ここまで設定した状態の`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を以下のように編集します。
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を削除すればいいらしいです。
まとめ
uv addでIsaac Labを設定する方法をまとめました。index urlを設定するところが肝かと思います。
Discussion