MuJoCoとGoogle DeepMindのロボティクス
ロボット学習論文の多くが使うApache-2.0の物理エンジン、そのGPUバックエンド(MJXとMuJoCo Warp)、モデルライブラリのMenagerie、Google DeepMindのGemini Roboticsモデルを紹介します。
| 組織 | Google DeepMind(Google傘下。MuJoCoはもともとRoboti LLCが開発) |
|---|---|
| ウェブサイト | mujoco.org/ |
| ライセンス | MuJoCo、MuJoCo Warp、MuJoCo PlaygroundはApache-2.0。Menagerieのモデルはそれぞれ個別のライセンス(Apache-2.0、BSD、MIT)。Gemini RoboticsモデルはGoogleの規約に従う |
| 価格 | MuJoCoと関連ライブラリは無料。Gemini Robotics ER 2はGoogle AI Studioでプレビューとして提供されている。その他のGemini Roboticsモデルの価格は、本稿執筆時点でGoogleは公表していない |
| 更新 | 2026年11月14日 |
製品と提供内容 #
| 名称 | 種類 | 位置づけ |
|---|---|---|
| MuJoCo | シミュレータ | 接触・腱・アクチュエータを扱う剛体動力学のCライブラリとPythonバインディング |
| MJX and MuJoCo Warp | シミュレータ | バッチ処理に対応したGPUバックエンド。それぞれJAXとNVIDIA Warp上に構築 |
| MuJoCo Menagerie | ライブラリ | 市販ロボットと研究用ロボットの厳選MJCFモデル集。ライセンスはモデルごと |
| MuJoCo Playground | フレームワーク | MuJoCoとMuJoCo Warp上のPyTorchによるロボット環境、強化学習タスク、実機ワークフロー。従来のMJX環境はrss2025フォルダに保持 |
| Gemini Robotics | サービス | Google DeepMindのVision-Language-Actionモデルと身体性推論モデル |
どんな組織か
このハブは、接触の多いロボットをシミュレーションするすべての人に向けたものです。対象は脚式移動、把持、多指ハンドなどです。MuJoCoは最初にRoboti LLCが開発しました。MuJoCoの概要によれば、Google DeepMindが2021年10月にこれを買収して無料化し、2022年5月にソースコードを公開しました。以来、ロボット学習の文献の多くで標準的なシミュレータとなっています。レッスン9で使うエンジンでもあります。
Google DeepMindは、Gemini Roboticsの名でロボット基盤モデルも開発しています。Gemini Roboticsのページには、Gemini Robotics 2.5(Vision-Language-Actionモデル、VLA)、Gemini Robotics ER 2(身体性推論。Google AI Studioでプレビューとして提供)、Gemini Robotics On-Device 2(ロボット上で動作する小型モデル)が掲載されています。ページにリリース日の記載はありません。同ページによれば、Googleは100を超える信頼できるテスターと協力しており、早期アクセスの順番待ちリストを設けています。
ツールとAPI
pip install mujocoでエンジンとPythonバインディングが入ります。バージョン4.0.0は2026年11月6日、4.0.1は2026年11月11日にリリースされました。変更履歴によれば、バージョン4.0ではPython 3.10のサポートが終了し、互換性のない変更が含まれます。composite要素とケーブルプラグインは廃止されてflexcompに置き換えられ、腱のsidesiteの意味も変わりました。エンジンはC APIを持つCライブラリで、PythonバインディングとWebAssemblyビルドもあります。Linux、macOS、Windows向けのリリースアーカイブがあり、CPU版エンジンはノートPCでも十分に動きます。
多数の環境を並列に動かす場合は、2つのGPUバックエンドがあります。MJXはJAX上で動作します。MuJoCo WarpはApache-2.0で、自身の説明によればNVIDIAのハードウェア向けに設計されています。同じMuJoCo WarpのソルバはNVIDIAのNewtonバックエンドの中でも使われており、これがこのハブとNVIDIA Isaacのハブをつないでいます。READMEによれば、MuJoCo PlaygroundはMuJoCo Warp上のPyTorchでロボット環境と強化学習(RL)タスクをパッケージ化しており、従来のJAX/MJX環境はrss2025フォルダに残しています。
MuJoCo Menagerieにはロボットモデルが収められています。本稿執筆時点で、UR5e(6 自由度(DoF))、Franka Research 3(7 自由度)、Unitree Go2(12 自由度)、Boston DynamicsのSpot(19 自由度)が含まれ、それぞれに個別のライセンスファイルが付いています。
ROS 2のサポートはコミュニティによるものです。ros-controls組織のmujoco_ros2_controlパッケージ(Apache-2.0)は、MuJoCoモデルをros2_controlのハードウェアインタフェースとして公開します。Google DeepMindはROSドライバを提供していません。
難点:MJCFは強力ですが、記述が冗長です。また、接触のチューニング(solref、solimp、摩擦、タイムステップ)次第で把持が保たれるかどうかが決まります。MJXはCPU版のすべての機能をサポートしているわけではなく、モデルが未対応の機能を使うと例外を送出します。移植の前に、機能の対応状況に関する注記を確認してください。
移行メモ
MuJoCoには、ROSやURDFから移ってきた人がつまずきやすい慣例が3つあります。
- MJCFの角度の既定値は度。 関節の可動範囲と
euler属性は、モデルで<compiler angle="radian"/>を指定しない限り度として読み込まれます。内部では、mjModelとmjDataはラジアンで値を保持します。 - 四元数の順序は(w, x, y, z)。 ROSのメッセージ、SciPy、Isaac Lab 3.0は(x, y, z, w)を使います。
- 単位は固定されていない。 MuJoCoは単位を前提としません。ただし既定値(重力9.81、密度1000)はSI単位系でのみ意味を持つため、メートル、キログラム、秒を使ってください。
このブロックでは最初の2つを示します。同じモデルをcompilerフラグありとなしで読み込み、保存されている可動範囲とボディの四元数を表示します(MuJoCo 3.16で動作確認)。
import mujoco
import numpy as np
# A hinge joint with range and a body rotated with euler="0 0 90".
# MJCF reads both in degrees unless <compiler angle="radian"/> is set.
xml_template = """
<mujoco>
{compiler}
<worldbody>
<body name="link" euler="0 0 90">
<joint name="hinge" type="hinge" axis="0 0 1" range="-90 90"/>
<geom type="capsule" fromto="0 0 0 0.3 0 0" size="0.02"/>
</body>
</worldbody>
</mujoco>
"""
for compiler in ("", '<compiler angle="radian"/>'):
model = mujoco.MjModel.from_xml_string(xml_template.format(compiler=compiler))
label = compiler or "default (degrees)"
print(f"{label}: joint range = {np.round(model.jnt_range[0], 4)} rad")
# body_quat is stored (w, x, y, z)
print(f" body quaternion (w, x, y, z) = {np.round(model.body_quat[1], 4)}")
期待される出力:既定のままでは、可動範囲は±1.5708 rad、四元数は(0.7071, 0, 0, 0.7071)となり、z軸まわりの90度回転を表します。angle="radian"を指定すると、同じ数値が±90 radと90 radとして読み込まれます。compiler行を入れずに手作業で変換したURDFは、このように気づかないうちに誤った値になります。
URDFからの移行:MuJoCoはURDFファイルを直接読み込めます。ただしURDFにはアクチュエータ、腱、接触パラメータがないため、読み込んだ後にMJCFで追加します。要素の対応はURDFとMJCFのチートシートにまとめています。Isaac Simへの移行:Isaac SimのMJCFインポータはUSDに変換します。変換結果には、ほかの変換済みモデルと同じ確認が必要です。
注意点
- Menagerieのライセンスはモデルごとに異なる。 このコレクションにはApache-2.0、BSD-2-Clause、BSD-3-Clause、BSD-3-Clause-Clear、MITが混在しています。再配布する前に、各モデルのフォルダにあるライセンスを読んでください。
- メジャーバージョンでの互換性の破壊。 バージョン4.0では要素が削除され、腱の巻き付けの扱いが変わりました。requirementsで
mujocoのバージョンを固定し、アップグレードの前に変更履歴を読んでください。 - シミュレーションは実機ではない。 Menagerieのモデルは厳選された近似です。sim-to-realの結果を信頼する前に、質量、摩擦、アクチュエータの制限をメーカーのデータシートと照合してください。
- モデルの利用条件。 Gemini Roboticsのモデルはオープンライセンスではなく、Googleの規約とアクセスプログラムに従います。これを基に開発する前に、何を展開してよいかを確認してください。
訂正
- 2026年11月14日:MuJoCo PlaygroundはMJXとMuJoCo Warp上に構築されていると記載していました。そのREADMEでは、MuJoCoとMuJoCo Warp上のPyTorch環境と説明されており、従来のMJX環境はrss2025フォルダに保持されています。