ステージ2:ハンドとアームのキャリブレーション(Windows)
本ステージでは 3 つのデバイスをキャリブレーションします:リーダーアーム、フォロワーアーム、AmazingHand ハンド。キャリブレーションは遠隔操作の正確性の前提であり、本ステージを完了しないと遠隔操作に進めません。
キャリブレーション順序:リーダーアーム → フォロワーアーム+ハンド → ハンド角度。各ステップでターミナル対話(物理操作 + キー入力)が必要です。
⚠️ 共通の注意:本ページのコマンド内のシリアルポート引数は例示のプレースホルダーであり、必ずあなたのマシンの実際の COM 番号に置き換える必要があります(ステージ1 で記録したシリアルポートを参照)。
前提条件
ステージ1:環境構築 を完了している
conda 環境
lerobotが有効化されている
# 環境の有効化
conda activate lerobot
# lerobot に移動
cd ../lerobot3 台のデバイスのシリアルポートを記録済み
デバイスに電源を投入済み、独立給電
ステップ 1:リーダーアームのキャリブレーション
lerobot-calibrate --teleop.type=so101_leader --teleop.port=<leader_arm_com> --teleop.id=amazing_hand_leader
<leader_arm_com>をあなたのマシンの実際の COM 番号に置き換えてください(例COM54)。
操作手順:
リーダーアームのすべての関節を中間位置に移動し、Enter を押す
各関節を順に最大/最小範囲まで動かし、完了したら Enter を押す
検証:キャリブレーションファイルは自動的に以下に保存されます C:\Users\<ユーザー名>\.cache\huggingface\lerobot\calibration\teleoperators\so_leader\amazing_hand_leader.json
⚠️ 注意 1(グリッパーは必須):6 番グリッパーサーボの範囲が
gripper.pos(0~100)の正規化基準となります。グリッパーは必ず全開から全閉まで動かし、確実にキャリブレーションしてください。そうしないと後続のハンド開閉比率が歪みます。
⚠️ 注意 2(自由回転):キャリブレーション時はアームが自由に回転できる必要があります。サーボが無負荷であることを確認してください。
⚠️ 注意 3(キャリブレーションファイルの場所):Windows ではパスはユーザーディレクトリ
%USERPROFILE%\.cache\huggingface\lerobot\calibration\です。
ステップ 2:フォロワーアームのキャリブレーション(ハンドを同時接続)
lerobot-calibrate --robot.type=so101_amazing_hand --robot.port=<follower_arm_com> --robot.hand_port=<hand_com> --robot.id=amazing_hand_follower
<follower_arm_com>/<hand_com>を実際の COM 番号に置き換えてください(例COM58/COM11)。
操作手順:
フォロワーアームの5 つの関節(6 番なし)を中間位置に移動し、Enter を押す
各関節を全行程動かし、Enter を押す
検証:キャリブレーションファイルは以下に保存されます C:\Users\<ユーザー名>\.cache\huggingface\lerobot\calibration\robots\so101_amazing_hand\amazing_hand_follower.json
⚠️ 注意 1(ハンドトルクの自動有効化):このコマンドは接続時に8 つのハンドサーボのトルクを自動的に有効化します(ログに
enabling AmazingHand torqueと表示されます)。キャリブレーション終了時にハンドが開くのは正常な現象です。
⚠️ 注意 2(ハンド GUI は表示されない):ハンド角度は lerobot の
RangeFinderGUIを使用しません。フォロワーアームのキャリブレーションが終われば完了です。ハンド角度にはステップ 3 の専用ツールを使用します。
⚠️ 注意 3(シリアルポートの占有):このステップはハンドのシリアルポートを占有します。該当シリアルポートを占有する他のプロセスを同時に実行しないでください。
ステップ 3:ハンド角度 + グリッパー方向のキャリブレーション(専用 GUI)
lerobot-calibrate-amazing-hand --hand_port <hand_com> --leader_port <leader_arm_com>
<hand_com>/<leader_arm_com>を実際の COM 番号に置き換えてください(例COM11/COM54)。--leader_portはグリッパー方向を同時にキャリブレーションするために使用します(下記参照)。
GUI 操作:
4 本の指のスライダー(index/middle/ring/thumb)をドラッグし、ハンドを完全に開いた状態にして
Save Openをクリックスライダーをドラッグしてハンドを完全に握り込んだ状態にし、
Save Closeをクリックリーダーアームのグリッパーを開き、
Capture Openをクリック(GUI はgripper.posをリアルタイム表示します。開いたときは 100 に近いはずです)リーダーアームのグリッパーをつまみ、
Capture Closeをクリック(つまんだときは 0 に近いはずです)自動保存:上記 4 つの値をすべて設定すると、ウィンドウ上部に緑色のバナー
AUTO-SAVED to ...\hand_angles.jsonが表示され、ターミナルにもパスが出力されますウィンドウを閉じる(ハンドのトルクが自動的に解除されます)
検証:角度とグリッパーのマッピングは以下に保存されます C:\Users\<ユーザー名>\.cache\huggingface\lerobot\calibration\robots\so101_amazing_hand\hand_angles.json
⚠️ 注意 1(必ずキャリブレーション):新しい PC/新しいハンドごとに本ステップを実行する必要があります。config 内の角度は AmazingHand 公式の汎用デフォルトで、あくまでフォールバックです。
hand_angles.jsonが存在する場合はあなたの実測値が優先して読み込まれます。キャリブレーションしないと開閉方向/範囲が誤る可能性があります。
⚠️ 注意 2(自動読み込み):ロボットは起動のたびに
hand_angles.json(gripper_open_pos/gripper_close_posを含む)を読み込み、config のデフォルト値を上書きします。コードを変更する必要はありません。グリッパー方向はリーダーアームによって異なるため、一度キャリブレーションすれば済みます。
⚠️ 注意 3(スライダーの意味):スライダーを
+方向に動かすと、その指の m1 は+angleに、m2 は-angleに動きます(ミラー)。ハンドの実際の姿勢で開き/握りを判断し、角度の数値は気にしなくて構いません。
⚠️ 注意 4(正確なキャリブレーション):キャリブレーションは"完全に開く"際に過度にしないこと(指の歪み/開きすぎ)、"完全に握る"際に過度に押し込まないこと(サーボが継続的に加圧)。そうしないと遠隔操作時に開閉が行き過ぎます。
⚠️ 注意 5(Capture の順序):
Capture Open/Capture Closeはリーダーアームのグリッパーの開閉に対応し、ハンドの指ではありません。ハンドの開く方向が逆の場合は、たいていここで逆にキャリブレーションしたかハンド角度を逆にキャリブレーションしたためで、再キャリブレーションすれば直ります。
⚠️ 注意 6(GUI が開かない):
pygame(amazinghandextra に含まれる)がインストールされているか確認してください。それでも開かない場合は、グラフィカルデスクトップ環境があるか確認してください。
再キャリブレーション
一部だけ再キャリブレーションしたい場合:
ハンドだけ再キャリブレーション → ステップ 3 のみ実行
フォロワーアームだけ再キャリブレーション → ステップ 2 のみ実行(ついでにハンドトルクも有効化されます)
すべて再キャリブレーション → ステップ 1 → 2 → 3
⚠️ 注意:ステップ 2 とステップ 3 は同時に実行できません(どちらもハンドのシリアルポートを占有します)。
本ステージを完了したら、ステージ3:遠隔操作 に進みます。
トラブルシューティング
| 現象 | 原因 | 解決 |
|---|---|---|
| リーダーアームのキャリブレーションで 2307 型番エラー | アームバスが汚染/シリアルポート競合 | ハンドのシリアルポートを同時接続していないことを確認;本プロジェクトのハンドは rustypot 経由のため回避済み |
| キャリブレーション時にハンドの GUI が表示されない | 誤ったコマンドを使用 | 必ず lerobot-calibrate-amazing-hand を使用する(lerobot-calibrate ではない) |
ハンドドライバが Operation timed out を報告 | シリアルポートがビジー/タイミング | ハンドのシリアルポートが占有されていないことを確認し、再試行 |
| キャリブレーションファイルが見つからない | パスが違う | %USERPROFILE%\.cache\huggingface\lerobot\calibration\ を確認 |
| シリアルポートが開けない | COM 番号が誤り | lerobot-find-port で再確認 |

