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

05 · リーダーアームのデジタルツイン(実体アームがシミュレーションアームを駆動) ​

手で実体のリーダーアームを動かすと、MuJoCo ウィンドウ内のシミュレーションのフォロワーアームがリアルタイムでミラーリングして追従します——デジタルツインデモ、 シミュレーションデータ収集の正しい起動方法です。

前提 ​

リーダーアームがキャリブレーション済みであること(03 参照)。サンプルポートは COM124(本機の現役リーダーアームの実測値。 抜き差しのたびに番号が変わる可能性があるため、03 章で確認したものに置き換えてください)。

コマンド ​

bash
export UV_CACHE_DIR='C:\Users\admin\AppData\Local\Temp\uv-cache'
uv run --frozen --with mujoco python examples/so101_mujoco/teleoperate.py \
    --robot.type=so101_mujoco \
    --teleop.type=so101_leader_trim --teleop.port=COM124 --teleop.id=juxi_leader \
    --teleop.use_degrees=false
  • --robot.type=so101_mujoco:制御対象はシミュレーションアームで、ウィンドウが自動で開きます;
  • --teleop.*:操作デバイスは実体のリーダーアーム(純粋な読み取りのみ、トルクは一切かけず、リーダーアームへのリスクはゼロ);
  • --teleop.use_degrees=false:必ず追加。リーダーアームが出力する単位(ストローク比率制)をシミュレーションアームと一致させます。

--robot.type を so101_follower --robot.port=COM172 --robot.id=juxi_so101 --robot.max_relative_target=5 に変えれば 「実体リーダーアーム → 実機フォロワーアーム」という通常のキットの遊び方になります。同じリーダーアームのキャリブレーションがそのまま使えます。

ゼロ点がずれている場合:自動センタリング微調整(so101_leader_trim) ​

現象:リーダーアームを「目視の中位」に合わせても、シミュレーションアームは数度ずれます。

原理:lerobot の正規化ゼロ点 = キャリブレーション時のスイープ記録範囲の中点 (min+max)/2;一方、キャリブレーションで Enter したときの 「中位姿勢」は生値 2048 として記録されます。ある関節の機械的ストローク自体が非対称だと、2 つの「中点」は常に一定量ずれます (実測 1 号サーボ:記録範囲 776–3457、中点 2116、2048 との差 68 カウント ≈ 5.6°)。 この偏差は再キャリブレーションでは消せません(ストロークの非対称は機械構造で決まるため)、ソフトウェアで補償する必要があります。

解決策:so101_leader_trim プラグインがキャリブレーションファイルから公式に従って各関節の補償を自動計算し、リアルタイムで差し引きます。 再キャリブレーション後も自動的に追従し、手動でのパラメータ調整は不要です:

补偿ᵢ = (2048 − minᵢ) / (maxᵢ − minᵢ) × 200 − 100

本機で実測した有効値(起動ログに出力されます):

関節補償(単位)
shoulder_pan−5.11
shoulder_lift−0.92
elbow_flex+2.54
wrist_flex+0.69

残りの関節は偏差 <0.05 で補償不要;グリッパ(0 から 100)と角度制モードは微調整の対象外です。

開発者向け注記:このプラグインの name は "so_leader" のまま維持する必要があります——name はキャリブレーションファイルの検索ディレクトリキーであり、 カスタムの型名にするとキャリブレーションファイルが見つからず、誤って再キャリブレーションフローが発動します。