はじめに
東京科学大学の福田です。現在チームMA-KINGにて、ロボット競技会CoREにおける4足歩行ロボット開発を行っております。
本ブログでは、CoREにおけるMEVIUS歩行用のポリシー作成の初期検討として、河原塚先生が公開してくださっている環境について紹介します。
本学習環境は、物理シミュレーターIsaac Gymとそれを用いたlocomotion用の学習フレームワークlegged_gymによるMEVIUS強化学習環境になります。
Isaac Gymでの強化学習
legged_gym + Isaac GymでMEVIUSの強化学習を行う手順について紹介します。
MEVIUS
legged_gym
MEVIUS学習用 legged_gym (河原塚先生作成)
動作環境
OS: Ubuntu 22.04
前提
- Ubuntu20.04以上を想定 (検証は22.04)
- CUDAがインストールされていること
- VRAM 8GB 以上のNvidia GPUを使用していること
準備
今回、legged_gymとIsaac Gymを用いた学習のテスト用にワークスペースを作成しました。
こちらのワークスペースのセットアップでは、仮想環境の作成、Pythonパッケージの管理、リポジトリのcloneなどの手順を簡略化するため、pyenv、poetry、vcs-toolを使用しています。 これらツールは次回のIsaacLab編でも使用します。
以降の手順はこちらのセットアップ手順に準じます。自分で環境を作成する場合は、legged_gym公式のInstallation手順を参照ください。
その場合、pythonのversionは3.8までがサポートされているのでご注意ください。
pyenv のinstall
手順はこちらに従っています。また、対象の環境はLinux、ShellはBashを想定しています。
- 依存関係のインストール
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
- pyenvをinstall
curl -fsSL https://pyenv.run | bash
- .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
手順はこちら に従っています。
- pipx をインストール
python3 -m pip install --user pipx python3 -m pipx ensurepath
- poetry をインストール
version 1.7.1で動くことは確認していますので、対象のversionを入れる場合は、2つ目を実行してください。pipx install poetry pipx install poetry==1.7.1
- (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
インストール手順
- 希望のディレクトリにworkspaceのリポジトリをcloneしてください
git clone -b mevius git@github.com:fkfk21/leggedgym_rl_ws.git
- 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/
- 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が想定された設定になっています。
leggedgym_rl_ws/pyproject.toml at main · fkfk21/leggedgym_rl_wsWorkspace for reinforcement learning with legged_gym - fkfk21/leggedgym_rl_ws - 仮想環境の構築とパッケージの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
備考

現在、Nvidiaでは開発をIsaac GymからIsaac Simに移行してしまい、公式の推奨する強化学習フレームワークはIsaac Labになっています。
次回の記事では、Isaac Lab環境での学習用プログラム(現在整備中&公開予定) を使用した強化学習の実践方法の紹介をします!