ステージ3:遠隔操作(Windows)
本ステージでは遠隔操作のクローズドループを起動します:リーダーアームがフォロワーアームの動きを制御し、グリッパーが AmazingHand の開閉を制御します。これはシステム全体が正常に動作するかを検証する重要なステージです。
前提条件
ステージ1:環境構築 と ステージ2:キャリブレーション を完了している
3 台のデバイスに電源を投入済み、シリアルポートを記録済み
遠隔操作の実行
lerobot-teleoperate --robot.type=so101_amazing_hand --robot.port=<follower_arm_com> --robot.hand_port=<hand_com> --robot.id=amazing_hand_follower --teleop.type=so101_leader --teleop.port=<leader_arm_com> --teleop.id=amazing_hand_leader
<follower_arm_com>/<hand_com>/<leader_arm_com>をあなたのマシンの実際の COM 番号に置き換えてください(例COM58/COM11/COM54)。
期待される動作:
リーダーアームの 5 関節 → フォロワーアームが追従
リーダーアームのグリッパー → AmazingHand の開閉(比例追従:半分つまむ = 半分閉じる)
💡 パラメータ説明:
--robot.type=so101_amazing_hand:フォロワーアーム + ハンドの複合ロボット--robot.port:フォロワーアームのシリアルポート--robot.hand_port:ハンドのシリアルポート--teleop.type=so101_leader:リーダーアームの遠隔操作器--teleop.port:リーダーアームのシリアルポート
初回実行時に必須:方向の検証
起動後、まず方向テストを行い、以下の 2 点がどちらも正しいことを確認します:
| テスト | 操作 | 正しい現象 |
|---|---|---|
| アームの追従 | リーダーアームの各関節を回す | フォロワーアームが同方向に追従 |
| ハンドの開閉 | リーダーアームのグリッパーを開く/つまむ | グリッパーが開く → ハンドが開く;グリッパーをつまむ → ハンドが閉じる |
⚠️ 注意(方向が逆の場合の対処):
ハンドの開閉方向が逆(グリッパーを開くとハンドが閉じる):ハンド角度のキャリブレーションが不正確です。キャリブレーションツール(グリッパー方向のキャリブレーションを含む)を再実行し、保存後は自動的に反映されます。手動でファイルを変更する必要はありません。ステージ2:キャリブレーション を参照してください。
グリッパーのマッピング方向が逆(グリッパーを開くとハンドが閉じる):同上。キャリブレーション時にリーダーアームのグリッパーを開いたときに
[Capture Open]を、つまんだときに[Capture Close]をクリックすると、ツールが自動的にgripper_open_pos/gripper_close_posを記録・保存し、起動時に自動的に読み込みます。
変更後は遠隔操作を再実行して検証します。
比例追従の検証
方向が正しければ、比例の細かさを検証します:
ゆっくりグリッパーを開く → ハンドは滑らかに開くはずです(跳びがない)
グリッパーを中間で止める → ハンドも中間で止まるはずです
素早く開閉 → ハンドが素早く応答し、カクつきがない
⚠️ 注意(ハンド開閉が行き過ぎる既知の問題):グリッパーが半分開いた時点でハンドが閉じてしまう場合は、ハンド角度のキャリブレーション時に"開く/握る"位置が不正確なことがほとんどです。キャリブレーションのステップ 3(ハンド角度 GUI)を再実行し、より正確な開閉位置をキャリブレーションしてください。
オプション:カメラ付きの可視化
--robot.cameras でカメラを接続し、--display_data=true で Rerun 可視化ウィンドウを開きます(カメラ画像 + 関節状態をリアルタイム表示):
lerobot-teleoperate --robot.type=so101_amazing_hand --robot.port=<follower_arm_com> --robot.hand_port=<hand_com> --robot.id=amazing_hand_follower --teleop.type=so101_leader --teleop.port=<leader_arm_com> --teleop.id=amazing_hand_leader --robot.cameras='{wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "MJPG"},top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30, fourcc: "MJPG"}}' --display_data=true💡 説明:
index_or_pathはカメラのインデックスです。先にlerobot-find-camerasで確認します(マシンによって番号が異なります)。fourcc: "MJPG"は任意で、USB カメラの帯域使用量を大幅に削減できます(MJPEG 圧縮に変更)。カクつく場合に追加します。カメラが 1 つだけでよい場合は、対応する行(例
top)を削除するだけです。
⚠️ 注意(rerun 依存関係):
--display_data=trueには rerun 可視化パッケージが必要です。未インストールの場合は次を実行します:
pip install "rerun-sdk>=0.24.0,<0.34.0"Rerun Viewer の実行ファイルが必要です。Windows で
Failed to find Rerun Viewer executableと報告された場合は、GUI ビューアが欠けています。遠隔操作には影響しません。--display_data=trueを外すだけです。
終了
Ctrl+C を押すと停止します。プログラムは自動的に:
8 つのハンドサーボのトルクを解除
フォロワーアーム/リーダーアームのシリアルポートを切断
カメラを切断(あれば)
⚠️ 注意:正常終了の前にターミナルを直接閉じないでください。そうしないとシリアルポートの占有が残る可能性があります。異常終了後にシリアルポートが占有されている場合は、USB を差し直すかターミナルのプロセスを再起動してください。
トラブルシューティング
| 現象 | 原因 | 解決 |
|---|---|---|
| ハンドの方向が逆 | ハンド角度またはグリッパーマッピングが逆 | 上文の"方向の検証"を参照。角度を入れ替えるかマッピングを調整 |
| ハンドの開閉が過大/不足 | ハンド角度のキャリブレーションが不正確 | ハンド角度 GUI を再キャリブレーション |
| アームが追従しない | キャリブレーション欠如/シリアルポート誤り | フォロワーアームがキャリブレーション済みか、--robot.port が正しいか確認 |
| rerun がエラー | 可視化依存の欠如 | --display_data=true を外す |
| シリアルポートが占有されている | 前回の異常終了 | 占有しているプロセスを閉じるか USB を差し直す |

