WSL2上でもMuJoCoを動かすことが可能です。
WSL2の導入とGUIの導入については大変だった点をまとめて別記事を書いたのでこちらをご参照ください。
WSL2の導入とGUI環境の構築
mujoco-pyを動かしたいときのPythonについては導入済みという前提で進めます。
MuJoCo導入
MuJoCoのダウンロード
好きな方法で https://www.roboti.us/index.html からMuJoCoをダウンロードし ~/.mujoco/mujoco200
に展開します。例えば、
wget https://www.roboti.us/download/mujoco200_linux.zip
unzip mujoco.zip -d /home/{username}/.mujoco
mv /home/{username}/.mujoco/mujoco200_linux /home/{username}/.mujoco/mujoco200
rm mujoco.zip
また、~/.mujoco/mjkey.txt
にライセンスキーを用意します。
環境変数の追加
さらに、~/.bashrc
に
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/{username}/.mujoco/mujoco200/bin
を追加します。
依存するものの導入
いくつか必要なものをいれてやります。
sudo apt update
sudo apt install gcc
sudo apt install libosmesa6-dev
ここまでくれば、pip install mujoco-py
ができます!!
GUIで描画する
準備として
sudo apt install libgl1-mesa-dev xorg-dev
しておきます。
また、GUIについてはWSL2の導入とGUI環境の構築を参考にして導入してください。
$ cd ~/.mujoco/mujoco200/bin
$ ./simulate ../model/humanoid.xml
MuJoCo Pro version 2.00
ERROR: could not initialize GLFW
Press Enter to exit ...
が出たらファイアウォールのうちWindows Defenderファイアウォールのプロパティからパブリックドメインの保護されているネットワーク接続で、wslのチェックを外してください。
ただし、ここで紹介したデフォルトのまま(あるいはいろいろなサイトで紹介されているもの)だと、
MuJoCo Pro version 2.00
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
ERROR: OpenGL version 1.5 or higher required
Press Enter to exit ...
となってしまいます。OpenGLのバージョンが低すぎるようです。世界中で1つだけ?答えに行きついているサイトがありました。 https://superuser.com/questions/1487555/how-to-troubleshoot-opengl-on-ubuntu-under-windows-10-wsl
要するに、
-
LIBGL_ALWAYS_INDIRECT
は~.bashrc
で設定するな -
LIBGL_ALWAYS_INDIRECT
変数は一切設定するな - VcXsrv起動時にはNative openglのやつのチェックを外す。さらに
-wgl
オプションをつけるな。
1、2については、LIBGL_ALWAYS_INDIRECT
はもともと\etc\profile.d\wsl-integration.sh
で定義されている(これはシンボリックリンクで本当は/usr/share/wslu/wsl-integration.sh
)とのことです。
したがって、~/.bashrc
に
unset LIBGL_ALWAYS_INDIRECT
をかいてやれば変数が削除できるのでいけます。これで、./simulate ../model/humanoid.xml
もできますし、mujoco-py 、あるいは OpenAI gym を使った描画もできます。