[2nd Jan, 2025 どうも学習のスクリプト回したらパーミッションで引っかかったので追加]
[Genesis] 1時間で4脚ロボットの強化学習の環境構築
https://qiita.com/hEnka/items/cc5fd872eb0bf7cd3abc
を見て凄いなぁ、と。
Linux推奨だったのでWSL2でもできるんじゃないかなと試してみた。
WSL2でCuda環境を整えるところ、とりあえずWindowsのドライバだけそこそこ最新版のNvidiaのドライバちゃんと入れておけばWSL2では特にすることはないはず。
Cuda Toolkitくらいかな、ってところも、公式から、ポチポチと選んでいって、以下のような感じになればOK.

そのままtest.pyをまずはCPUで実行すると、いきなりエラーになった。

この対策は、ここを見るとimport genesisの前にrendering backendを指定すればよいとの事。具体的にはこうする。
import os os.environ['PYOPENGL_PLATFORM'] = 'glx' import genesis as gs gs.init(backend=gs.cuda) 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()
で、それをやるとCPUだとうまく動くようになるけれども、gs.cudaにしたとたんまたエラーになる。

ここもこのInoue-sanの投稿にしたがって環境変数を設定する。
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH
これでとりあえず目標のところまでは動くようになった。

2nd Jan, 2025追加分
さて、追加で学習のスクリプトなど試したところ、以下のエラーが
libEGL warning: failed to open /dev/dri/renderD128: Permission denied
色々見ると、パーミッションの問題なので自分が上記デバイスにアクセスできるようにすればOKだった。WSL2だとrenderD128のパーミッションは660でgroupがrenderになっている例がよく出てくる。この場合は自分をrenderグループに追加してWSL再起動でいいんだけど、うちの環境ではなぜか600で group もrootになっていた。