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

ステージ2:ハンドとアームのキャリブレーション(Linux) ​

本ステージでは 3 つのデバイスをキャリブレーションします:リーダーアーム、フォロワーアーム、AmazingHand ハンド。キャリブレーションは遠隔操作の正確性の前提であり、本ステージを完了しないと遠隔操作に進めません。

キャリブレーション順序:リーダーアーム → フォロワーアーム+ハンド → ハンド角度。各ステップでターミナル対話(物理操作 + キー入力)が必要です。

⚠️ 共通の注意:本ページのコマンド内のシリアルポート引数は例示のプレースホルダーであり、必ずあなたのマシンの実際のシリアルポートパスに置き換える必要があります(ステージ1 で記録したシリアルポートを参照)。


前提条件 ​

  • ステージ1:環境構築 を完了している

  • conda 環境 lerobot が有効化されている

  • シリアルポート権限を設定済み(ステージ1 の第 5 節)

  • 3 台のデバイスのシリアルポートを記録済み

  • デバイスに電源を投入済み、独立給電


ステップ 1:リーダーアームのキャリブレーション ​

Bash
lerobot-calibrate \
  --teleop.type=so101_leader --teleop.port=<leader_arm_port> --teleop.id=amazing_hand_leader

<leader_arm_port> をあなたのマシンの実際のパスに置き換えてください(例 /dev/ttyACM1)。

操作手順:

  1. リーダーアームのすべての関節を中間位置に移動し、Enter を押す

  2. 各関節を順に最大/最小範囲まで動かし、完了したら Enter を押す

検証:キャリブレーションファイルは自動的に以下に保存されます ~/.cache/huggingface/lerobot/calibration/teleoperators/so_leader/amazing_hand_leader.json

⚠️ 注意 1(グリッパーは必須):6 番グリッパーサーボの範囲が gripper.pos(0~100)の正規化基準となります。グリッパーは必ず全開から全閉まで動かし、確実にキャリブレーションしてください。そうしないとハンドの開閉比率が歪みます。

⚠️ 注意 2(自由回転):キャリブレーション時はアームが自由に回転できる必要があります。サーボが無負荷であることを確認してください。

⚠️ 注意 3(権限):シリアルポートで Permission denied が報告された場合は、先に sudo chmod 666 /dev/ttyACM* を実行します(またはステージ1 で udev ルールを設定済みか確認します)。


ステップ 2:フォロワーアームのキャリブレーション(ハンドを同時接続) ​

Bash
lerobot-calibrate \
  --robot.type=so101_amazing_hand --robot.port=<follower_arm_port> --robot.hand_port=<hand_port> --robot.id=amazing_hand_follower

<follower_arm_port> / <hand_port> を実際のパスに置き換えてください(例 /dev/ttyACM0 / /dev/ttyACM2)。

操作手順:

  1. フォロワーアームの5 つの関節(6 番なし)を中間位置に移動し、Enter を押す

  2. 各関節を全行程動かし、Enter を押す

検証:キャリブレーションファイルは以下に保存されます ~/.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) ​

Bash
lerobot-calibrate-amazing-hand --hand_port <hand_port> --leader_port <leader_arm_port>

<hand_port> / <leader_arm_port> を実際のパスに置き換えてください(例 /dev/ttyACM2 / /dev/ttyACM1)。--leader_port はグリッパー方向を同時にキャリブレーションするために使用します(下記参照)。

⚠️ 注意(ディスプレイなし環境):GUI にはグラフィカルデスクトップが必要です。ディスプレイなし/SSH 環境で実行すると、pygame.error: video system not initialized が報告されます。解決方法:

  • ローカルのグラフィカルセッションで実行する;または

  • X11 転送(ssh -X)で実行する。

GUI 操作:

  1. 4 本の指のスライダー(index/middle/ring/thumb)をドラッグし、ハンドを完全に開いた状態にして Save Open をクリック

  2. スライダーをドラッグしてハンドを完全に握り込んだ状態にし、Save Close をクリック

  3. リーダーアームのグリッパーを開き、Capture Open をクリック(GUI は gripper.pos をリアルタイム表示します。開いたときは 100 に近いはずです)

  4. リーダーアームのグリッパーをつまみ、Capture Close をクリック(つまんだときは 0 に近いはずです)

  5. 自動保存:上記 4 つの値をすべて設定すると、ウィンドウ上部に緑色のバナー AUTO-SAVED to .../hand_angles.json が表示され、ターミナルにもパスが出力されます

  6. ウィンドウを閉じる(ハンドのトルクが自動的に解除されます)

検証:角度とグリッパーのマッピングは以下に保存されます ~/.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 はリーダーアームのグリッパーの開閉に対応し、ハンドの指ではありません。ハンドの開く方向が逆の場合は、たいていここで逆にキャリブレーションしたかハンド角度を逆にキャリブレーションしたためで、再キャリブレーションすれば直ります。


再キャリブレーション ​

一部だけ再キャリブレーションしたい場合:

  • ハンドだけ再キャリブレーション → ステップ 3 のみ実行

  • フォロワーアームだけ再キャリブレーション → ステップ 2 のみ実行(ついでにハンドトルクも有効化されます)

  • すべて再キャリブレーション → ステップ 1 → 2 → 3

⚠️ 注意:ステップ 2 とステップ 3 は同時に実行できません(どちらもハンドのシリアルポートを占有します)。


本ステージを完了したら、ステージ3:遠隔操作 に進みます。


トラブルシューティング ​

現象原因解決
シリアルポート Permission denied権限が未設定sudo chmod 666 /dev/ttyACM* または udev を設定
ハンドのキャリブレーション GUI が開かないグラフィカル環境なしローカルのグラフィカルセッションで実行、または ssh -X 転送
ハンドドライバが Operation timed out を報告シリアルポートがビジー/タイミングハンドのシリアルポートが占有されていないことを確認し、再試行
リーダーアームのキャリブレーションで 2307 型番エラーアームバスが汚染ハンドのシリアルポートを同時接続していないことを確認;本プロジェクトのハンドは rustypot 経由のため回避済み