ゆるふわフィジカルAI
パソコンで作業中のゆるロボ

MuJoCo入門|物理シミュレーションの最初の一歩を10分で【Python】

2026-07-22実践

#MuJoCo#シミュレーション#Python#実践

フィジカルAIの練習場、物理シミュレータ。その定番が Google DeepMind がオープンソースで公開している MuJoCo です。この記事では、インストールから「画面の中で物理が動く」感動まで10分で行きます。

📦

pip install

1分

📝

モデルを書く

XMLで数行

▶️

動かす

物理が動く!

まずは触ってみよう(インストール不要)

「物理シミュレーション」と言われてもピンとこないですよね。まずはこの場で遊んでみてください

🕹️ さわれる物理シミュレータ

箱やボールをドラッグして投げてみてください。重力も変えられます

重力をマイナスにすると…?🌙 いろいろ試してみましょう

いま体験したこと — 「重力・摩擦・衝突のルールがある仮想世界で、モノが本物っぽく動く」 — これが物理シミュレーションのすべてです。ロボット開発では、この仮想世界の中でロボットに何百万回も練習させます。

💡

これは2Dの簡易版です

上のデモはブラウザ用の2D物理エンジンで作ったミニ版。本物のMuJoCoは3Dで、摩擦や接触をはるかに正確に計算します。ここから先は、その本物を自分のPCで動かす手順です。

MuJoCoってなに?

接触や摩擦の計算が得意な物理エンジンです。ロボットの強化学習研究で長年の定番で、以前は有料でしたが、DeepMindが買収して無料・オープンソースになりました。

インストール(1分)

Python 3.9以降があれば1行です。

pip install mujoco

最小のシミュレーション: 振り子を落とす

MuJoCoでは、世界をMJCFというXML形式で記述します。まずは「箱が落ちるだけの世界」から。

import mujoco

xml = """
<mujoco>
  <worldbody>
    <light pos="0 0 3"/>
    <geom type="plane" size="2 2 0.1" rgba="0.9 0.9 0.95 1"/>
    <body pos="0 0 1">
      <freejoint/>
      <geom type="box" size="0.1 0.1 0.1" rgba="1 0.56 0.69 1"/>
    </body>
  </worldbody>
</mujoco>
"""

model = mujoco.MjModel.from_xml_string(xml)
data = mujoco.MjData(model)

for _ in range(1000):
    mujoco.mj_step(model, data)

print("箱の最終位置:", data.qpos[:3])

実行すると、1000ステップ後の箱の位置が表示されます。Z座標(3つめ)が約0.1 = 床の上に着地しているのがわかるはず。物理、動いてます🎉

画面で見る(ビューア)

数字だけでは寂しいので、可視化しましょう。

pip install mujoco  # ビューアは同梱です
python -m mujoco.viewer

ウィンドウが開いたら、さっきのXMLを pendulum.xml として保存してドラッグ&ドロップするだけ。マウスで視点をぐりぐり動かせます。

Pythonから直接開くことも:

import mujoco.viewer
mujoco.viewer.launch(model, data)

ちょっと発展: 振り子を揺らす

関節(joint)を使うと「物理で揺れる振り子」が作れます。

xml = """
<mujoco>
  <worldbody>
    <light pos="0 0 3"/>
    <body pos="0 0 1.5">
      <joint type="hinge" axis="0 1 0"/>
      <geom type="capsule" fromto="0 0 0  0 0 -0.5" size="0.03" rgba="0.54 0.93 0.82 1"/>
    </body>
  </worldbody>
</mujoco>
"""

これをビューアで開いて振り子をマウスでつまんで放すと、ちゃんと物理法則で揺れます。この「世界のルールを書く→動く」の体験がシミュレーションの本質です。

🌱

つまずいたら

エラーの多くはXMLの書き間違いです。エラーメッセージに行番号が出るので、まずそこを確認。公式ドキュメント(mujoco.readthedocs.io)のXMLリファレンスが頼りになります。

まとめ

  • MuJoCoは pip install mujoco だけで始められる無料の物理シミュレータ
  • 世界はXML(MJCF)で記述、mj_step() で時間を進める
  • ビューアで可視化すると一気に楽しくなる

次の一歩 🌸

次は「シミュレーションの中でAIに動きを学ばせる」段階へ。LeRobot入門で模倣学習を体験するか、学習ロードマップで全体像を確認しましょう。

あわせて読みたい