🧠

IsaacGymEnvsの環境構築と各種デモの動作確認

2024/10/14に公開

海洋ロボコンをやってた人です。

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に記載されるはずです。

~/.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 <<<

上述の中で

~/.bashrc
export PATH="/home/ubuntu/miniconda3/bin:$PATH"

という記載により、ターミナル起動毎にbaseのMiniconda環境が起動するようになるので、毎度仮想環境が立ち上がるのはナンセンス(ROS環境とか使いたい)という場合は以下のようなaliasでON/OFFできるようにしておくと良いと思います。

~/.bashrc
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をインストールして、下記の通り進めます。

https://developer.nvidia.com/isaac-gym/download

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で複製します。

https://github.com/leggedrobotics/legged_gym

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

https://github.com/sudhirpratapyadav/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

https://medium.com/@piliwilliam0306/install-isaac-gym-on-ubuntu-22-04-8ebf4b86e6f7

https://qiita.com/ti-556/items/a2435b9a4f9655453061

Future work

下記参照して、使えるようになりたい。

https://www.docswell.com/s/MakotoSato/ZGX7Q4-2024-02-23-165116#p1

以上です。
Likeいただけると大変励みになりますので、よろしくお願いいたします。

Discussion