はじめに
東京科学大学の福田です。現在チームMA-KINGにて、ロボット競技会CoREにおける4足歩行ロボット開発を行っています。
本ブログでは、CoREにおけるMEVIUS歩行ポリシー作成用環境として、Isaac Sim + Isaac Labを用いた強化学習と開発環境の紹介をします。
まだIsaac Labで強化学習をやったことがない方に向けて、MEVIUSを事例とした強化学習手順を紹介いたします。
Isaac Simとは
NVIDIAが提供するNVIDIA Omniverse上に構築されたロボット開発・シミュレーション向けのアプリケーションです。
Boston Dynamics SpotやUnitreeの四足歩行ロボットをはじめとしたロボット、RealSenseなどのセンサー、工場などの環境アセット提供に加え、ROS/ROS2との連携、OmniGraphを用いたVisual Programmingなど様々な機能を提供しています。
Isaac Labとは
強化学習、模倣学習、モーションプランニングなど、ロボティクス研究のワークフローを統一・簡略化するために設計されたGPU-acceleratedなオープンソースフレームワークです。
Isaac LabはNVIDIA Isaac Simを基盤として構築されており、カメラ、LiDAR、接触センサーなどのセンサーシミュレーション機能をはじめ、ロボット学習を促進するために設計されたツールと環境を提供しています。
GitHub – isaac-sim/IsaacLab: Unified framework for robot learning built on NVIDIA Isaac Sim
動作環境
OS: Ubuntu 22.04
Python 3.10
前提
- Ubuntu 22.04を想定 (Python仮想環境にシステムのPythonを使用しているため)
- 他のバージョンを使う場合は、前回の記事のようにpyenvで3.10を用意するのが確実かと思います。
- CUDAがインストールされていること
- VRAM 8GB以上のNVIDIA GPUを使用していること
必要ツール
- poetry (1.7.1)
- vcs-tools (0.3.0)
- git-lfs (3.0.2)
poetry, vcs-toolsのインストール方法は前回の記事を参照してください。 () 内は、作者が動作確認したバージョンを記しています。
git-lfsのinstall
sudo apt install git-lfs
Isaac Labでの強化学習
IsaacLabを用いたMEVIUSの強化学習用Extensionのリポジトリはこちらになります。
(ぜひスター押していってください!)
今回は、Isaac SimとIsaac Labを用いた学習テスト用にこちらのワークスペースを作成しました。
こちらのワークスペースのセットアップではIsaac Simを含む仮想環境の作成、Pythonパッケージ管理、リポジトリのcloneなどの手順をpoetry, vcs-toolsを使用して簡略化しています。
公式の手順を参照したい場合は下記をご覧ください。
- Isaac Sim: https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_python.html
- Isaac Lab: https://isaac-sim.github.io/IsaacLab/v1.4.1/source/setup/installation/pip_installation.html#installing-isaac-lab
Isaac Lab学習用Workspace
インストール手順
- 希望のディレクトリにworkspaceのリポジトリをcloneしてください。
git clone -b isaaclab-v1 git@github.com:fkfk21/isaaclab_rl_ws.git
- CUDAのバージョンを確認
- 現在のpyproject.tomlはCUDA 12.1を想定して設定されています。
- 異なるバージョンを使用する場合はpyproject.tomlの対応する部分を変更してください。
- Isaac Sim と pytorchのバージョンを確認
- 現在(tag: isaaclab-v1)では、Isaac Sim 4.2.0、Isaac Lab 1.4.1を想定して設定しています。
- Isaac Sim 4.2.0を使用する場合は、pytorchのversionは2.4.1のままをおすすめします。
- 私の環境ではpytorch 2.4.1 より高いバージョンではエラーが発生しました。
- インストール
cd isaaclab_rl_ws vcs import . < isaaclab.repos cd isaaclab && git apply ../rsl_rl.patch && cd .. poetry install --no-root poetry run isaaclab/isaaclab.sh -i ## -> Do you accept the EULA? (Yes/No) のメッセージが出るのでYesを入力 poetry run pip install -e mevius_isaac_lab/exts/mevius_isaac_lab
実行
実行前に仮想環境を有効化してください。
cd /path/to/isaaclab_rl_ws/
source `poetry env info --path`/bin/activate
学習開始
以下のコマンドで学習を開始します。
python mevius_isaac_lab/scripts/rsl_rl/train.py --task=Isaac-Velocity-Flat-Mevius-v0
並列で作成する環境数、最大イテレーション数を変えたい場合は以下のように実行します。
- デフォルトでは、環境数 2048, 最大イテレーション(flat task) 1500になっています。
- 作成する環境数は使用するGPUのVRAMに従って変更するのが良いと思います。
python mevius_isaac_lab/scripts/rsl_rl/train.py --task=Isaac-Velocity-Flat-Mevius-v0 --num_envs 2048 --max_iterations 2000
また、headless (Isaac Sim GUI起動なし)で学習させたい場合は、”–headless”オプションを付けてください。
その他、使用できるオプションは以下で確認できます。
python mevius_isaac_lab/scripts/rsl_rl/train.py --help
Isaac Sim GUI ガイド
関連する箇所のみを簡単に説明します。
GUIありで起動するとIsaac Simが立ち上がり、下の画像のように大量のMEVIUSが動く様子が確認できると思います。
描画の解像度は オプションアイコン > Viewport > “Render Resolution” で確認・変更することができます。
描画のFPS、使用中のVRAM、使用中のRAMは 目のアイコン>”Heads up Display”内にて、それぞれ”FPS”, “Device Memory”, “Process Memory”をクリックすることで確認できます。
描画中は、レンダリングプロセスによって強化学習におけるサンプル収集に時間がかかってしまうので、画面右下、IsaacLab のタブ内の “Simulation Settings” > “Rendering Mode” の設定を FULL_RENDERINGからNO_RENDERINGに変更してください。

学習経過と終了後の確認
isaaclab_rl_wsフォルダ内にて、
poetry run tensorboard --logdir logs
を実行した後、http://localhost:6006/ にアクセスするとtensorboardで報酬の各要素の値の遷移を初めとした多くの情報を確認することができます。
複数回実行していると、各回での情報を比較して確認できるので、パラメータ調整に活用できます。

学習が終了したら、下記のコマンドを実行することで、Isaac Sim上で得られたポリシーによる歩行を確認することができます。
python mevius_isaac_lab/scripts/rsl_rl/play.py --task=Isaac-Velocity-Flat-Mevius-Play-v0 --load_run {LOAD_RUN} --checkpoint model_{iteration_num}.pt
- {LOAD_RUN}には、Flatタスクの場合、logs/rsl_rl/mevius_flat フォルダ内の日時に相当するフォルダ名(例えば、下記画像内では “2025-02-19_23-55-31”)を入れてください。
- checkpointは指定しない場合終了時のモデルをloadしますが、特定のタイミングでのモデルをloadしたい場合は、logs/rsl_rl/mevius_flat/{LOAD_RUN} フォルダ内のmodel_{iteration}.pt の種類を確認して指定するようにしてください。
複雑地形環境での学習
学習するタスクについて、
- -task=Isaac-Velocity-Flat-Mevius-v0 を指定すると平面環境
- -task=Isaac-Velocity-Rough-Mevius-v0 を指定すると複雑地形環境
で実行することができます。
つまり、下記コマンドを実行することで複雑地形環境で学習できます。
python mevius_isaac_lab/scripts/rsl_rl/train.py --task=Isaac-Velocity-Rough-Mevius-v0 --num_envs 2048 --max_iterations 20000
学習中の様子↓
まとめ
今回の記事では、IsaacSim + IsaacLabを使ったMEVIUSの強化学習環境について紹介しました。ぜひ、mevius_isaac_lab内の報酬設定などを変更して遊んでみてください。
次回の記事では、Isaac Labで提供されている地形や自分で作成した地形の解説と、それらをIsaac Labのインターフェース経由で設定する方法について紹介します。
また、それ以降の記事では、MA-KINGのCoRE出場までの強化学習ベースのポリシー開発記録とどのような変更・改良をしてきたかについて解説したいと思っています。
ご期待ください!!