MuJoCoを使ってみる その1(環境構築、サンプルプログラムの実行)

はじめに

 今回は物理シミュレーションを行うことができる、MuJoCoというソフトウェアを試してみました。

 MuJoCoは以前の記事でGenesisを試していたときに見つけました。Genesisの開発でも利用されているようです。ロボットのシミュレーションといえばROSというイメージが強かったのですが、他にもいろいろあるようですね。

▼MuJoCoのページはこちら。

https://mujoco.org

▼シミュレーションの動画はこちら。確かにGenesisで見たような画面です。

▼Genesisを利用したときの記事はこちら

Genesisを使ってみる その1(環境構築、サンプルプログラムの実行)

はじめに  今回はGenesisという物理シミュレーションソフトウェアを試してみました。  3か月ほど前に公開されたばかりで、デモ動画が面白そうでした。グラフィックはUnr…

▼以前の記事はこちら

Unreal Engine 5を使ってみる その7(Open Manipulator)

はじめに  前回、Unreal Engine 5(UE5)でロボットアームのようなものを作成しました。今回はROBOTIS社がオープンソースとして公開している、Open Manipulatorというロ…

ROS1を使ってみる その4(URDFファイルの作成、Open Manipulator)

はじめに  今回はOpen ManipulatorのURDFファイルを作成してみました。  これまではROSですでに用意されていたOpen Manipulatorのモデルを利用していましたが、URDFファ…

環境を構築する

▼PCは10万円ぐらいで購入したゲーミングノートPCを利用しています。Windows 11の環境です。

ちょっと買い物:新しいノートPCとSSDの増設

はじめに  今回はこれまで使っていたPCが壊れたので買い替えましたという話です。  以前はよく分からないGPUが載っていたノートPCを使っていたのですが、最近はUnreal E…

 まずはPythonの仮想環境を作成します。

py -3.10 -m venv pyenv-mujoco
cd .\pyenv-mujoco
.\Scripts\activate

▼Pythonの仮想環境の作成については、以下の記事をご覧ください。

Pythonの仮想環境を作成する(venv、Windows)

はじめに  今回はPythonの仮想環境の作成についてまとめてみました。  Pythonを利用したNode-REDのノードを開発するときに仮想環境を詳しく調べていました。作成した仮…

 パッケージのインストールは以下だけで済むようです。

pip install mujoco

 ロボットのモデルなどのデータが必要になりそうだったので、GitHubのリポジトリをクローンしておきました。

git clone https://github.com/google-deepmind/mujoco.git

Viewerを起動する

 MuJoCoで利用できるモデルを、Viewerで表示してみました。

▼Pythonでの実行に関するページを参考に実行してみます。

https://mujoco.readthedocs.io/en/latest/python.html

 以下のコマンドでViewerが起動しました。

python -m mujoco.viewer

▼以下のように表示されました。モデルファイルをドラッグ&ドロップでアップロードできるようです。

 以下のようにクローンしたGitHubのリポジトリの、モデルファイルのパスを指定すると、Viewerの中にモデルが表示されました。

python -m mujoco.viewer --mjcf=./mujoco/model/humanoid/22_humanoids.xml

 ヒューマノイドのモデルを指定しています。

▼表示された途端、姿勢を崩して倒れました。

▼各ジョイントの値が表示されています。

▼Controlの欄でパラメータを変更すると、動いているヒューマノイドがありました。

 他のモデルも試してみました。

▼carは2輪+キャスターの構成ですね。

▼Controlから操作することができました。

▼tendon_armは人間の関節と筋肉の構成のようなモデルでした。

▼slider_crankはこんな感じ。アニメーションっぽい表現に見えました。

Model Galleryのモデルを表示してみる

 MuJoCoのModel Galleryにあった実際のロボットのモデルは、MuJoCo Menagerieという別のリポジトリにあるようでした。

▼Model Galleryのページはこちら。二足歩行、人型、犬型、ロボットアームなどが用意されています。

https://mujoco.readthedocs.io/en/latest/models.html

▼MuJoCo Menagerieのリポジトリはこちら

https://github.com/google-deepmind/mujoco_menagerie

 MuJoCo MenagerieのGitHubのリポジトリをクローンして、Viewerで表示してみました。

git clone https://github.com/google-deepmind/mujoco_menagerie
python -m mujoco.viewer --mjcf=./mujoco_menagerie/unitree_a1/scene.xml

▼倒れていますが、犬型ロボットが表示されました!Controlで足を操作できます。

▼google_robotはこんな感じ。アームを動かすと、慣性が働いていました。

▼flybodyという、なぜか存在するハエのモデルはこんな感じ。

 ハエのモデルは可動部が非常に多くて、羽や関節だけでなく、触覚や口などの細かいところまで動かせます。ロボットよりもよっぽど制御パラメータが多くて、やたらと作りこまれています。

Notebookのチュートリアルを実行してみる

 Google Colaboratoryで実行できるチュートリアルがあったので、実行してみました。

▼以下のリンクからGoogle ColaboratoryでNotebookのコードを実行できます。

https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/tutorial.ipynb

 ここでは実行結果の一部だけ紹介します。

▼これは面白いと思ったのですが、逆立ちコマのシミュレーションですね。データはグラフでも出力されています。

▼物体に対する力のベクトルの可視化もできます。

▼糸で固定した物体に対する衝突のシミュレーション。リアルな挙動に見えます。

▼深度画像やセグメンテーション画像のレンダリングもできます。

▼一番最後はドミノでした。カメラを動かしながら撮影されています。

 xmlファイルで記述して物体を配置すると、コードが長くなるのではないかと思いましたが、そうでもなさそうでした。サンプルをもとにChatGPTに書いてもらえば、シミュレーションできそうです。

▼ROSのURDFファイルを記述するときは行数が多かった印象です。Viewerでも見たように、サンプルが豊富なら多少は楽かもしれません。

ROS1を使ってみる その4(URDFファイルの作成、Open Manipulator)

はじめに  今回はOpen ManipulatorのURDFファイルを作成してみました。  これまではROSですでに用意されていたOpen Manipulatorのモデルを利用していましたが、URDFファ…

最後に

 Genesisに触れた後だったので、MuJoCoが開発に利用されているという面影がありました。MuJoCoよりはGenesisを利用して開発することになるかもしれませんが、物理シミュレーションだけならこちらでも良さそうです。

 私は主にUnreal Engineを利用してシミュレーションを行っているので、MuJoCoのように様々なロボットのモデルを利用したいなと思っているところです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です