IsaacGymEnvsの環境構築と各種デモの動作確認
海洋ロボコンをやってた人です。
2024年度に入り、GPU上の強化学習によって多様なロボットのスキル習得事例を沢山みるようになりました。
エンジニアの側面からも、新しい技術は取り敢えず触ってみたいという点(とモチベ上げたい、息抜きも兼ねて)とあわよくば、Cooking Robotとかに活用できたらというのが背景になります。
この記事では
IsaacGymEnvsの環境構築と各パッケージのデモンストレーションが動くこと
までをゴールとしますので、必要なSectionからご覧ください。
なお、コードの説明は一切ありません。
本来なら前提の説明も踏まえて記載したいのですが、時間にも限りがあるので、IsaacGymとは?どういうソースや構成でシミュレーションが動いているか?などは省略させていただいています。
これらはまた別の記事で。
また、誤記等あればご指摘ください。
1. Preparation
IsaacGymで使用した環境とインストール内容を下記に記載します。
Nvidia Driver等のインストールは省略します。
1.1 Environment
下記で動作環境を出力して確認します。
nvidia-smi
conda --version
python -c "import torch; print(torch.__version__)"
python -c "import torchvision; print(torchvision.__version__)"
python -c "import torchaudio; print(torchaudio.__version__)"
パッケージ | バージョン |
---|---|
NVIDIA-SMI Driver | 535.183.01 |
CUDA | 12.2 |
Conda | 24.7.1 |
Python | 3.7.16 |
PyTorch | 1.13.1+cu117 |
torchvision | 0.14.1+cu117 |
torchaudio | 0.13.1+cu117 |
1.2 Installation of MiniConda
下記に従ってインストールします。
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
init bashでMiniConda環境の構築が完了すると以下が~/.bashrc
に記載されるはずです。
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/ubuntu/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /de>
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/ubuntu/miniconda3/etc/profile.d/conda.sh" ]; then
. "/home/ubuntu/miniconda3/etc/profile.d/conda.sh"
else
export PATH="/home/ubuntu/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
上述の中で
export PATH="/home/ubuntu/miniconda3/bin:$PATH"
という記載により、ターミナル起動毎にbaseのMiniconda環境が起動するようになるので、毎度仮想環境が立ち上がるのはナンセンス(ROS環境とか使いたい)という場合は以下のようなaliasでON/OFFできるようにしておくと良いと思います。
alias conda_on='source ~/miniconda3/bin/activate'
alias conda_off='conda deactivate'
conda 環境のリストを確認する(rlgpuは以降で作成)
conda env list
# conda environments:
#
base * /home/ubuntu/miniconda3
rlgpu /home/ubuntu/miniconda3/envs/rlgpu
conda
環境を削除する場合は以下を実行します
conda deactivate
conda remove --name rlgpu --all
conda
環境を複製・流用する場合は以下を実行します
conda create -n rlquad --clone rlgpu
1.2.1 CondaEnv Advantages and Disadvantages
Conda環境のメリデリとして、環境ごとにパッケージのインストール環境は独立しているので、ライブラリのバージョンなど変えて利用できる点が利点でしょう。
注意として、conda install
は依存関係を考慮してパッケージをインストールするため、特定のバージョンのパッケージや Python 本体との整合性を自動で確保します。
※ 下記例
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
Channels:
- pytorch
- conda-forge
- defaults
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: |
これが利便性である一方で、複数のライブラリのバージョン間の依存関係が複雑になると、解決できず依存関係の衝突・環境が壊れる要因へ。
バージョン依存が多い環境を使用する場合はpip install
で環境構築するのが良さそうです。
1.3. Installation of Issac Gym
公式よりtar.gzをインストールして、下記の通り進めます。
tar -xf IsaacGym_Preview_4_Package.tar.gz
cd isaacgym
rlgpuのconda環境を構築 & アクティベーション
cd ~/isaacgym && ./create_conda_env_rlgpu.sh
conda activate rlgpu
サンプル実行
cd ~/isaacgym/python/examples/ && python3 joint_monkey.py
joint_monkeyのモデルが表示される
cd ~/isaacgym/python/examples/ && python3 kuka_bin.py
kukaのモデルが表示される
上述でうまく起動せず、エラーとなる場合は、pythonバージョンやrlgpuのパスが通っているかを確認します。
conda install python=3.7
conda install libpython3.7-dev
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ubuntu/miniconda3/envs/rlgpu/lib/
2. Installation of IsaacGymEnvs
2.1 Demonstration of IsaacGymEnvs learning
先程のrlgpuの環境のまま、IsaacGymEnvsの学習デモを試してみます。
クローン先はhomeディレクトリ直下にしています。
git clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs.git
cd ~/IsaacGymEnvs
pip3 install -e .
下記を実行しデモンストレーションを起動します。
cd ~/IsaacGymEnvs/isaacgymenvs && python3 train.py task=Cartpole
ヘッドレスモードで実行する場合は、下記のように実行します。
python train.py task=Ant headless=True
headless=Trueを消して実行すれば、下記のように表示されトレーニングをソフト上で確認できます。(高スペックPCでないと重たいですが)
最後まで終わると下記のようになるので
277777 epoch: 500/500 frames: 32702464
=> saving checkpoint 'runs/Ant_14-14-19-59/nn/last_Ant_ep_500_rew_6184.769.pth'
=> saving checkpoint 'runs/Ant_14-14-19-59/nn/last_Ant_ep_500_rew__6184.77_.pth'
MAX EPOCHS NUM!
モデルをロードして可視化してみます。
※ パスは日付になっているので、適宜参照。
python train.py task=Ant checkpoint=runs/Ant_14-14-19-59/nn/last_Ant_ep_500_rew_6184.769.pth
2.2 Troubleshooting
下記に詰まった箇所を記載しておきます。
libpython3.7m.so.1.0
ImportError: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory
の場合
# libpython3.7m.so.1.0ライブラリ系統のインストール
conda install python3.7-dev
# location確認n
locate libpython3.7m.so.1.0
/home/ubuntu/miniconda3/envs/rlgpu/lib/libpython3.7m.so.1.0
# 環境変数に設定
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/$USER/miniconda3/envs/rlgpu/lib
libcublasLt.so.11
OSError: /home/ubuntu/miniconda3/envs/rlgpu/lib/python3.7/site-packages/nvidia/cublas/lib/libcublas.so.11: undefined symbol: cublasLtHSHMatmulAlgoInit, version libcublasLt.so.11
下記がtorchによってインストールされることにより発生するので、削除で解決する。
pip uninstall nvidia_cublas_cu11
🍣YuWd(和田唯我)のメモ🍣 libcublasLt.so.11エラー
Torch not compiled with CUDA enabledで落ちる
[Warning] [carb.gym.plugin] useGpu is set, forcing single scene (0 subscenes)
Not connected to PVD
+++ Using GPU PhysX
Physics Engine: PhysX
Physics Device: cuda:0
GPU Pipeline: enabled
Error executing job with overrides: ['task=Cartpole']
raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled
各種バージョンにあったパッケージをインストール
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
3. Installation of legged_gym
下記のlegged_gymを試します。
環境はrlgpu
のconda環境を流用するので、conda create -n 新しい環境名 --clone rlgpu
で複製します。
git clone https://github.com/leggedrobotics/rsl_rl
cd ~/rsl_rl && git checkout v1.0.2 && pip install -e .
git clone https://github.com/leggedrobotics/legged_gym.git
cd ~/legged_gym && pip install -e .
3.1 Demonstration of ANYmal C Robot
python legged_gym/scripts/train.py --task=anymal_c_flat
4. Installation of manipulation gym
git clone https://github.com/sudhirpratapyadav/manipulation_gym.git
4.1 Demonstration of Open Manipulator X
cd manipulatin_gym
python3 scripts/test_env_omx_joints.py
自作モデルをインポートする際に参考になりそうです。
Reference
Future work
下記参照して、使えるようになりたい。
以上です。
Likeいただけると大変励みになりますので、よろしくお願いいたします。
Discussion