🧪 新しいチュートリアルを公開中 — ロボットアームからセンサーまで
コンテンツへスキップ

09 MuJoCo シミュレーションとライブツイン ​

MuJoCo は本プロジェクトで 2 通りの方法で使われ、どちらも hardware/v1/robot_v1.xml (実機と同一ソースのモデル)を使用します:

  • ローカルシミュレーション:ロボットを接続せず、コンピュータ上で 4 つの横倒し姿勢と その起き上がりをループ再生し、リファレンスシーケンスを検証して動きを観察します;
  • ライブツイン:実機が WiFi 経由で姿勢をストリーミングし、MuJoCo ウィンドウが実際の 動きをリアルタイムにミラーリングします(デジタルツイン)。

ウィンドウの操作はどちらの場合も同じです。左ドラッグで視点を回転、右ドラッグでパン、 ホイールでズームします。初めて使用する前に、02 ページのとおり .venv を作成・有効化し、その中にツールの依存関係をインストールしてください (pip install -r tools/requirements.txt、02 ページ参照)。

9.1 ローカルシミュレーションウィンドウ ​

SR-Support フォルダで(.venv を有効化):

bash
python tools/play_getup_executor.py --xml hardware/v1/robot_v1.xml

ウィンドウのタイトルは MuJoCo : sr_support_v1 です(図 9-1)。ロボットは 4 つの横倒し 姿勢に順番に置かれ(roll_pos → roll_neg → pitch_pos → pitch_neg)、そのたびに 実行器がファームウェアとまったく同じパラメータでリファレンスシーケンスをロボットが 直立するまで実行し、その後次の姿勢が設定されます。ウィンドウを閉じるまでループが 繰り返されます。ターミナルには姿勢と結果が出力されます:

text
--- cycle 1 pose 1/4 requested=roll_pos actual=roll_pos up=(+0.00,+1.00,-0.00)
    executor ok=True up=+1.00 servo=[0.0, -0.0] steps=113

ok=True はその姿勢がシミュレーション上で起き上がったことを意味します。ok=False の 場合は、リファレンスシーケンスと変更したパラメータを 06 ページと照らし合わせて確認してください。

図 9-1 MuJoCo シミュレーションウィンドウ(4 姿勢の起き上がりリプレイ)

図 9-1:4 姿勢ループの 1 フレーム — 実行器が横倒し姿勢から起き上がっているところ。

既知のモデルの違い:1× 質量のモデルでは、シミュレーションで roll_neg が ok=False と 表示されます(モデルのアーム質量/摩擦が実機と異なるため。11 ページ 11.4 参照)。これは実機ファームウェアには影響しません。

9.2 WiFi 経由のライブツイン ​

前提条件:ロボットが 08 ページのとおり家庭内ネットワークに接続済みで、 コンピュータも同じネットワーク上にあること。ステータスページにロボットのアドレスが Robot IP として表示されるので、それを次のコマンドにコピーします。

  1. ステータスページで Twin ON を押します(シリアルの d と同じ)。
  2. .venv を有効化した SR-Support フォルダで、次を実行します(アドレスはステータス ページの Robot IP に置き換えます):
bash
python tools/live_twin.py --tcp <Robot IP>:3333

モデルは実際の姿勢をリアルタイムにミラーし(50 Hz のクォータニオンストリーム)、機体を 床面に保ちます。アームはストールしたサーボと同様に床面との接触角で保持されるため、床に めり込むことはありません。

  • コンピュータをロボットのホットスポットに直接接続する場合:アドレスは常に 192.168.4.1、 python tools/live_twin.py --tcp 192.168.4.1:3333。
  • 有線の代替:python tools/live_twin.py --port COM27(ツールが自動で d を送って ストリームを有効化します)。
  • オフライン再生:python tools/live_twin.py --replay logs/hw_fast_xxx.txt。
  • ツインはストリームの切り替えを除いて読み取り専用です。制御コマンドを送信することは ありません。

9.3 テレメトリのログ ​

bash
python tools/tcp_log.py

テレメトリストリームを logs/wifi_<time>.txt に保存し、オフライン再生(--replay)と 故障解析に使えます。ホットスポットでは既定で 192.168.4.1:3333 に接続します。家庭内 ネットワークにある場合は、ステータスページの Robot IP を渡してください:

bash
python tools/tcp_log.py <Robot IP> 3333

9.4 シミュレーションと学習のリファレンス ​

training/b_line/ には、リプレイ・検証・パラメータ調整のために、ファームウェアと 値まで一致する実行器、リファレンスシーケンス、シミュレーション環境が同梱されています。 モデルファイルの説明は 11 ページ 11.1 にあります。


← チュートリアル目次に戻る