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

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

4足歩行ロボットMEVIUS製作

はじめに

東京科学大学の福田です。現在チームMA-KINGにて、ロボット競技会CoREにおける4足歩行ロボット開発を行っております。

本ブログでは、CoREにおけるMEVIUS歩行用のポリシー作成の初期検討として、河原塚先生が公開してくださっている環境について紹介します。

本学習環境は、物理シミュレーターIsaac Gymとそれを用いたlocomotion用の学習フレームワークlegged_gymによるMEVIUS強化学習環境になります。

 

Isaac Gymでの強化学習

legged_gym + Isaac GymでMEVIUSの強化学習を行う手順について紹介します。

MEVIUS

GitHub - haraduka/mevius: A Quadruped Robot Easily Constructed through E-Commerce with Sheet Metal Welding and Machining
A Quadruped Robot Easily Constructed through E-Commerce with Sheet Metal Welding and Machining - haraduka/mevius

legged_gym

GitHub - leggedrobotics/legged_gym: Isaac Gym Environments for Legged Robots
Isaac Gym Environments for Legged Robots. Contribute to leggedrobotics/legged_gym development by creating an account on ...

MEVIUS学習用 legged_gym (河原塚先生作成)

GitHub - haraduka/legged_gym: Isaac Gym Environments for Legged Robots
Isaac Gym Environments for Legged Robots. Contribute to haraduka/legged_gym development by creating an account on GitHub...

動作環境

OS: Ubuntu 22.04

前提

  • Ubuntu20.04以上を想定 (検証は22.04)
  • CUDAがインストールされていること
  • VRAM 8GB 以上のNvidia GPUを使用していること

準備

今回、legged_gymとIsaac Gymを用いた学習のテスト用にワークスペースを作成しました。

GitHub - fkfk21/leggedgym_rl_ws: Workspace for reinforcement learning with legged_gym
Workspace for reinforcement learning with legged_gym - fkfk21/leggedgym_rl_ws

こちらのワークスペースのセットアップでは、仮想環境の作成、Pythonパッケージの管理、リポジトリのcloneなどの手順を簡略化するため、pyenv、poetry、vcs-toolを使用しています。 これらツールは次回のIsaacLab編でも使用します。

以降の手順はこちらのセットアップ手順に準じます。自分で環境を作成する場合は、legged_gym公式のInstallation手順を参照ください。

その場合、pythonのversionは3.8までがサポートされているのでご注意ください。

pyenv のinstall

手順はこちらに従っています。また、対象の環境はLinux、ShellはBashを想定しています。

  1. 依存関係のインストール
    sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev curl git \
    libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
  2. pyenvをinstall
    curl -fsSL https://pyenv.run | bash
  3. .bashrcにpyenv関連のrootとPATHを追加。
    最後の行については、デフォルトのpythonコマンドの実行先を置き換えたくない場合は、ここでは.bashrcに追加せず、仮想環境作成直前に実行するようにしてください。

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    
    # if needed
    echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc

poetryのinstallation

手順はこちら に従っています。

  1. pipx をインストール
    python3 -m pip install --user pipx
    
    python3 -m pipx ensurepath
  2. poetry をインストール
    version 1.7.1で動くことは確認していますので、対象のversionを入れる場合は、2つ目を実行してください。

    pipx install poetry
    
    pipx install poetry==1.7.1
  3. (recommend) 仮想環境フォルダーをプロジェクト内に作成する設定
    poetry config virtualenvs.in-project true

vcs-tool のinstallation

ROSがインストールされているかどうかによってインストール方法が異なるので下記のリンクに従ってインストールしてください。
https://github.com/dirk-thomas/vcstool?tab=readme-ov-file#how-to-install-vcstool

インストール手順

  1. 希望のディレクトリにworkspaceのリポジトリをcloneしてください
    git clone -b mevius git@github.com:fkfk21/leggedgym_rl_ws.git
  2. Isaac Gymのインストール
    学習に使用するNvidiaの提供するシミュレーターです。
    下記の公式ダウンロードページからtar.gzファイルをダウンロードしてください。
    ・Isaac Gymの公式では、Ubuntu20.04までがサポートされているとの記載がありますが、私の環境(Ubuntu 22.04)では動作しました。

    https://developer.nvidia.com/isaac-gym/download
    解凍したisaacgymフォルダをワークスペース直下に移動させます

    tar -xf IsaacGym_Preview_4_Package.tar.gz
    mv isaacgym /path/to/legged_gym_rl_ws/
  3. CUDA versionとpytorch versionの確認
    インストール済みのCUDA versionは下記コマンドにて確認してください。

    nvcc -V

    次に、使用したいpytorchのversionを確認してください。
    ・特にこだわりがない場合は、デフォルトから変えなくてもOKです。
    使用するversionに合わせて、leggedgym_rl_ws/pyproject.toml 内のtorch, torchvision, torchaudioのversion、それらと関連するCUDA versionを修正してください。
    デフォルトでは、pytorch==2.4.0, CUDA==12.1が想定された設定になっています。

     
  4. 仮想環境の構築とパッケージのInstall
    cd leggedgym_rl_ws
    vcs import . < leggedgym.repos
    
    cd legged_gym
    git remote add haraduka git@github.com:haraduka/legged_gym.git
    git fetch haraduka
    git checkout haraduka/mevius
    
    ## (if needed) eval "$(pyenv init - bash)"
    
    pyenv install 3.8.19
    poetry install --no-root

実行

仮想環境を有効化します。

cd /path/to/legged_gym_rl_ws/
source `poetry env info --path`/bin/activate

以下のコマンドで学習を開始します

python legged_gym/legged_gym/scripts/train.py --task=mevius

並列で作成する環境数、最大イテレーション数を変えたい場合は以下のように実行します

python legged_gym/legged_gym/scripts/train.py --task=mevius --num_envs 2048 --max_iterations 20000

このとき使用できるオプションは以下で確認できます

python legged_gym/legged_gym/scripts/train.py --help

学習を開始するとコンソール上では各イテレーションでの報酬を含む情報が表示されていきます。

GUI上では、このように環境上に大量のMEVIUSが表示されます。

起動した直後だと常にレンダリングが走る状態なので、Isaac Gym画面操作中にvのキーを押すことで一時的にレンダリングを無効化できます。これによって、各イテレーションの計算時間を短縮できます。

しばらく待つと、この画像のように歩行動作を獲得しながら、多様な地形を踏破できるように訓練されている様子が見られます。

また、別コンソール上で以下を実行することで、tensorboardを起動することができます。

poetry run tensorboard --logdir ./legged_gym/logs

localhost:6006 にアクセスすることで、以下のようなイテレーションに対する報酬の遷移などをグラフで確認することができます。

学習が完了したら、以下のコマンドを実行することで、学習結果を確認することができます。

python legged_gym/legged_gym/scripts/play.py --task=mevius

また、続きから学習を開始したい場合は、下記のコマンドのように読み込むログデータを指定してください。
`{LOAD_RUN}`の部分には、legged_gym/logs/flat_mevius のディレクトリ名を入れてください(例: Feb14_19-44-17_)

python legged_gym/legged_gym/scripts/train.py --task=mevius --resume --load_run {LOAD_RUN}

num_envs等の設定をデフォル値から変更する場合は再度オプションをつけて指定する必要があります

python legged_gym/legged_gym/scripts/train.py --task=mevius --resume --load_run {LOAD_RUN} --num_envs 2048 --max_iterations 20000

備考

Isaac Gym - Preview Release
NVIDIA’s physics simulation environment for reinforcement learning research.

GitHub - leggedrobotics/legged_gym: Isaac Gym Environments for Legged Robots
Isaac Gym Environments for Legged Robots. Contribute to leggedrobotics/legged_gym development by creating an account on ...

現在、Nvidiaでは開発をIsaac GymからIsaac Simに移行してしまい、公式の推奨する強化学習フレームワークはIsaac Labになっています。

次回の記事では、Isaac Lab環境での学習用プログラム(現在整備中&公開予定) を使用した強化学習の実践方法の紹介をします!

 

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