4足歩行ロボットMEVIUS製作技術情報・開発日誌

Isaac Labでの強化学習 – 4足歩行ロボットMEVIUS製作 Part.4

4足歩行ロボットMEVIUS製作

はじめに

東京科学大学の福田です。現在チーム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 Sim Introduction

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のリポジトリはこちらになります。

(ぜひスター押していってください!)

GitHub - CoRE-MA-KING/mevius_isaac_lab
Contribute to CoRE-MA-KING/mevius_isaac_lab development by creating an account on GitHub.

今回は、Isaac SimとIsaac Labを用いた学習テスト用にこちらのワークスペースを作成しました。

GitHub - fkfk21/isaaclab_rl_ws
Contribute to fkfk21/isaaclab_rl_ws development by creating an account on GitHub.

こちらのワークスペースのセットアップではIsaac Simを含む仮想環境の作成、Pythonパッケージ管理、リポジトリのcloneなどの手順をpoetry, vcs-toolsを使用して簡略化しています。

開発環境・記事作成期間中に、Isaac Sim 4.5.0, Isaac Lab v2 が登場しましたので、明示的にIsaac Lab v1 (1.4.1) とそれに対応するIsaac Sim 4.2.0を使用するワークスペースを作成しています。 近日中にIsaac Lab v2にも対応予定です。

公式の手順を参照したい場合は下記をご覧ください。

Isaac Lab学習用Workspace

インストール手順

  1. 希望のディレクトリにworkspaceのリポジトリをcloneしてください。
    git clone -b isaaclab-v1 git@github.com:fkfk21/isaaclab_rl_ws.git
  2.  CUDAのバージョンを確認
    • 現在のpyproject.tomlはCUDA 12.1を想定して設定されています。
    • 異なるバージョンを使用する場合はpyproject.tomlの対応する部分を変更してください。
  3. 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 より高いバージョンではエラーが発生しました。
  4. インストール
    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” で確認・変更することができます。

使用しているGPUによってはVRAMの上限を超えてエラーが発生することがあるので設定する解像度には注意してください。

描画のFPS、使用中のVRAM、使用中のRAMは 目のアイコン>”Heads up Display”内にて、それぞれ”FPS”, “Device Memory”, “Process Memory”をクリックすることで確認できます。

描画中は、レンダリングプロセスによって強化学習におけるサンプル収集に時間がかかってしまうので、画面右下、IsaacLab のタブ内の “Simulation Settings” > “Rendering Mode” の設定を FULL_RENDERINGからNO_RENDERINGに変更してください。

現在(IsaacLab v1.4.1)では、PARTIAL_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出場までの強化学習ベースのポリシー開発記録とどのような変更・改良をしてきたかについて解説したいと思っています。

ご期待ください!!

タイトルとURLをコピーしました