ABEJA Tech Blog

中の人の興味のある情報を発信していきます

15分で作るSO-ARMシミュレーション環境(MuJoCo) 

ABEJA 新卒エンジニアの和田です。

LeRobot Worldwide Hackathonに ABEJA の有志チームとして参加しました。ハッカソンでは模倣学習をテーマにロボットアームの動作を再現したかったのですが、実機を揃えられなかったため、MuJoCo 上でのシミュレーション環境構築を試みました。本記事では、macOS 環境でオープンソースのロボットアーム「SO-101」を MuJoCo 上で動かすセットアップ手順をご紹介します。実機をお持ちでない方でも、手軽にシミュレーションを始められるよう、スクリーンショットやコマンドを交えて丁寧に解説します。 huggingface.co

前提と環境準備

システム要件

システム要件

以下の環境で動作を確認しています。

  • macOS

    • 最低要件:10.15 Catalina 以上
    • 動作検証:15.5
  • Xcode Command Line Tools

    • 最低要件:インストール済みであれば OK
    • 動作検証:xcode-select version 2409
  • CMake

    • 最低要件:3.16 以上
    • 動作検証:CMake version 4.0.3
  • Git

    • 最低要件:インストール済みであれば OK
    • 動作検証:git version 2.39.5 (Apple Git-154)

Homebrew でのツールインストール

# Homebrew(未インストール時)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# CMake のインストール
brew install cmake

# Git のインストール(未インストール時)
brew install git

MuJoCo のビルド

MuJoCo リポジトリをクローン

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

ビルドディレクトリの作成と CMake 設定

mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ..

コンパイル(並列ジョブ数はお好みで調整)

cmake --build . -- -j8

SO-101 モデルの導入

MuJoCo 本体のビルドが完了したら、SO-101 用のモデルを追加します。

# モデルリポジトリをクローン(SO-101 定義を含む)
git clone https://github.com/TheRobotStudio/SO-ARM100.git

# MuJoCo の model フォルダへコピー
cp -r SO-ARM100/Simulation/SO101 ../model/so101_arm

ディレクトリ構造

セットアップ後のフォルダ構成は以下のようになります。

mujoco/
├── build/
│   ├── bin/simulate
│   └── SO-ARM100/
├── model/
│   └── so101_arm/
│       ├── scene.xml
│       ├── so101_new_calib.xml
│       └── assets/
└── src/

シミュレーションの実行

ビルドディレクトリへ移動

cd ./build

シミュレーション起動

./bin/simulate ../model/so101_arm/scene.xml

画面が立ち上がればセットアップ完了です!

操作方法とジョイント制御

マウス操作

  • 左クリック + ドラッグ:カメラ回転

  • 右クリック + ドラッグ:カメラ移動

  • スクロール:ズームイン/ズームアウト

  • Ctrl + 左クリック:オブジェクト選択

SO-101 のジョイント

Joint 可動範囲 説明
1 -110° ~ +110° ベース回転
2 -100° ~ +100° 肩ピッチ
3 -100° ~ +90° 肘ピッチ
4 -95° ~ +95° 手首回転
5 -160° ~ +160° 手首ピッチ
6 -10° ~ +100° グリッパー

トラブルシューティング

ビルドエラー

-DCMAKE_POLICY_VERSION_MINIMUM を指定しないと古いポリシーでエラーが出ます。 CMake プロジェクトを異なるバージョン間で移植する際、ポリシー互換性オプションを固定するために 以下を付与して再実行すると解決しました。

cmake .. -DCMAKE_POLICY_VERSION_MINIMUM=3.5

コンパイルエラー

MuJoCo の CMake ビルドで謎のヘッダー読み込みエラーが発生しました。Xcode Command Line Tools を再インストールして解決しました。

sudo xcode-select --install

実行時エラー

  • メッシュ読み込み失敗 モデルのメッシュ読み込みが Permission denied で落ちる場合があります。実行権限を付与することによって解決しました。
chmod -R 755 ../model/so101_arm/

パフォーマンス問題

-j8 など高い並列数を指定すると、メモリや I/O ボトルネックで途中失敗することがあります。-j4 など適切なジョブ数に調整すると完走率が向上しました。また、PU ドライバや統合 GPU の設定によっては描画が重くなる場合があります。

おわりに

MuJoCo 上で SO-101 を動かす環境構築手順をご紹介しました。実機が手元になくても、シミュレータを活用すれば模倣学習や動作検証のアイデアをすぐに試せるようになります。本稿で解説した以下のポイントを土台に、ぜひ自社プロジェクトやハッカソン、研究開発のワークフローに組み込んでみてください。

We Are Hiring!

ABEJAは、テクノロジーの社会実装に取り組んでいます。 技術はもちろん、技術をどのようにして社会やビジネスに組み込んでいくかを考えるのが好きな方は、下記採用ページからエントリーください! (新卒の方やインターンシップのエントリーもお待ちしております!)

careers.abejainc.com