notes
Tools

MuJoCo を WSL2 で使う

物理計算は問題なし、viewer は WSLg 前提、オフスクリーン描画は EGL が失敗したら osmesa、ゲームパッドはカーネルに joystick ドライバが無い

要点#

物理は動く。表示は WSLg が必要。ゲームパッドは標準カーネルでは使えない。

数字 / コマンド#

項目WSL2 での状態
MuJoCo 本体 (C, python wheel)そのまま動く。CPU 性能はネイティブとほぼ同じ
GLFW viewerWSLg (Windows 11) で表示される。GPU は Mesa d3d12 経由
オフスクリーン描画MUJOCO_GL=egl が失敗することがある → MUJOCO_GL=osmesa (ソフトウェア) か画面ありで MUJOCO_GL=glfw
/dev/input/js0標準カーネルに joystick ドライバが無く出ない。usbipd-win + 自前カーネルが必要
ワークスペース置き場Linux 側 (ext4)。/mnt/c だとビルドと mesh 読み込みが数倍遅い
CAN など実機 I/O不可
# 描画 backend の切替
MUJOCO_GL=osmesa python3 render.py     # ソフトウェア描画
MUJOCO_GL=glfw   python3 render.py     # WSLg の画面を使う

詳細#

  • MuJoCo の描画は OpenGL 固定機能中心で要求が低く、Mesa d3d12 で足りる。性能はネイティブより落ちる
  • ROS 2 (DDS) は WSL2 内で完結する分には設定不要。Windows 側や別 PC と通信するときはミラーモードかポート転送
  • ゲームパッドの回避策: ブラウザ (Foxglove) の仮想ジョイスティックで /joy を出す、または Windows 側で joy を読んで ROS に流す

関連#

最終更新:

On this page