[Genesis] 1時間で4脚ロボットの強化学習の環境構築

# 環境

Genesisはクロスプラットホームで様々なOS、ハードウェアで動作できるように設計されています。しかし、公式が最も推奨するのは、Linux環境にCUDAが使用できるGPUとのことです。

サポートするOSとハードの表です。WindowsではInteractive ViewerとHeadless Renderingが使えないので、Genesisを始める方は、LinuxかApple Siliconの入っているMacが良いです。
![Screenshot from 2024-12-28 13-59-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3926225/da1927b5-f6e1-41bc-5940-1a1e6f35128c.png)

なお、筆者の環境は次の表の通りです。

| 項目 | 環境 |
| --- | --- |
| CPU | Intel Core i7 11700F |
| GPU | RTX3070ti |
| RAM | 32GB |
| OS | Ubuntu22.04 |

よってこのチュートリアルはUbuntuの方用です。
Macをお使いの方は、こちらの記事が参考になります。

https://note.com/npaka/n/n07b448c74613


# Genesisのインストール
インストールした方は適宜飛ばしてください。

Python3.9以上とpipをインストール
```
sudo apt update
sudo apt install python3
sudo apt install python3-pip

#互換性を上げておく
sudo apt install python-is-python3
```

PyTorchをインストール
```
#Cuda 11.8の場合
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

#Cuda 12.1の場合
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

#CUDA 12.4の場合
pip3 install torch torchvision torchaudio
```

Genesisのインストール
```
pip install genesis-world
```


モーションプランナーをインストール（必須でない）
[ここ](https://github.com/ompl/ompl/releases/tag/prerelease)から、自分の環境に合うやつをダウンロードしてください。
(私の場合ompl-1.6.0-cp310-cp310-manylinux_2_28_x86_64.whl)

```
cd Downloads
pip install ompl-1.6.0-cp310-cp310-manylinux_2_28_x86_64.whl
```

### nvidiaのドライバを入れる (nvidiaのGPUを持っている人限定)

nvidiaのGPUが刺さっているPCでも、ドライバを入れなければGenesisが動きません。入れ方の参考サイトを書いておきます。すでに入れている人は飛ばしてください。

https://qiita.com/porizou1/items/74d8264d6381ee2941bd


# Genesisパッケージをgit cloneする

```
cd
git clone https://github.com/Genesis-Embodied-AI/Genesis.git
```

動作確認として、Genesis/exampleの中に次のコードをtest.pyとしてコピペする。gs.cpuをgs.cudaにするとnvidiaのGPUを使います。
```python:test.py
import genesis as gs
gs.init(backend=gs.cpu)

scene = gs.Scene(show_viewer=True)
plane = scene.add_entity(gs.morphs.Plane())
franka = scene.add_entity(
    gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
)

scene.build()

for i in range(1000):
    scene.step()
```

実行
```
cd Genesis
python3 examples/test.py
```

ロボットアームがぶっ倒れるシミュレーションが表示されたら成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3926225/67c664bc-b276-8892-142d-891d56bec26b.png)


### CPUのみで動かす場合に発生するエラーについて
エラーが出ない人は飛ばしてください。
cpuのみで動かす場合にエラーが出ることがあるとのことです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">とりあえず現環境（Ubuntu22.04, no GPU）でGenesis起動できた<br>OpenGL.error.Error: Attempt to retrieve context when no valid contextというエラーで起動できない問題にあたっていたけど、CPU環境では既知の問題のようで<a href="https://t.co/sPACrxRTYS">https://t.co/sPACrxRTYS</a><br>以下の方法で動いた<a href="https://t.co/ngHorfOWGz">https://t.co/ngHorfOWGz</a> <a href="https://t.co/44Er6Z5nEl">pic.twitter.com/44Er6Z5nEl</a></p>&mdash; NWK/野分機械 (@RoboSafs01075) <a href="https://twitter.com/RoboSafs01075/status/1873018971286585429?ref_src=twsrc%5Etfw">December 28, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

その際には、この[issue](https://github.com/Genesis-Embodied-AI/Genesis/issues/227
)を参考にコードを修正してください。


# 4脚ロボットの強化学習環をgit cloneする

```
cd
git clone https://github.com/leggedrobotics/rsl_rl
cd rsl_rl && git checkout v1.0.2 && pip install -e .

pip install tensorboard
```

学習を回す
```
cd
cd Genesis
python examples/locomotion/go2_train.py
```

学習の途中でモニターする場合。(学習が1分未満なので私はやってない）
```
tensorboard --logdir logs
```

学習結果を見る
```
python examples/locomotion/go2_eval.py
```

成功するとこのように歩いていきます。
<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">なんか一瞬で歩いた<br>rtx3070tiで51秒で学習終わった。本当に学習しているか疑うレベル <a href="https://t.co/reyl8qXeTY">pic.twitter.com/reyl8qXeTY</a></p>&mdash; 変化 hEnka (@hEnka_robotics) <a href="https://twitter.com/hEnka_robotics/status/1872520905253101909?ref_src=twsrc%5Etfw">December 27, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


# 参考サイト
https://github.com/Genesis-Embodied-AI/Genesis

https://genesis-world.readthedocs.io/en/latest/user_guide/overview/installation.html


ロボットアームのチュートリアル

https://genesis-world.readthedocs.io/en/latest/user_guide/getting_started/hello_genesis.html

4脚ロボットのチュートリアル

https://genesis-world.readthedocs.io/en/latest/user_guide/getting_started/locomotion.html