メインコンテンツまでスキップ
ステージ 3 · 第 10 章 · 実践

10. リーダー・フォロワーのキャリブレーションとテレオペレーション

lerobot-calibrate で SO-ARM のリーダーとフォロワーをキャリブレーションし、関節マッピングとキャリブレーションファイルの保存場所を理解して、最初のマスター・スレーブテレオペレーションを実行します。

⚡ コード不要 · 環境構築不要

セットアップをスキップして — reBot Arm と LeRobot を 1 つのアプリから実行

SenseCraft Robotics は、SO-ARM101、reBot Arm 102 + B601-RS および B601-DM 向けの Seeed のノーコードプラットフォームです。アームを接続し、キャリブレーションを行い、デモを収集し、ガイド付きインターフェースから学習と推論を実行できます — Python 環境もターミナルも不要です。

  • ✅ 6 ステップのガイド付きワークフロー
  • ✅ クラウド学習 — ローカル GPU 不要
  • ✅ Windows / macOS クライアント
  • ✅ SO-ARM101 · B601-RS · B601-DM
⚠️
実行前の安全確認

アーム作業領域 1 メートル以内の貴重品と無関係な人を片付けてください。本章の実行前に、アームが確実に固定され、電源とケーブルが正しく接続されていることを確認します。

10.1 アーム全体のキャリブレーションが重要な理由​

動機

10.1 アーム全体のキャリブレーションが重要な理由

第 6 章で ID とボーレートを書き込み、第 7 章でニュートラルを確認しました。アーム全体のキャリブレーションは最後のステップです:関節ごとに、サーボの生の位置読み取り値と物理角度のマッピングを学習し、リーダーとフォロワーが物理的に一致する姿勢で同じ値を報告するようにします。

このキャリブレーションには、より深い理由があります:ある SO-ARM で訓練したニューラルネットが、別の SO-ARM でも動くようになること。 すべてのキャリブレーション済み SO-ARM が「ゼロ度」と「可動範囲の中間」の定義で一致するため、あなたのフォロワーで録ったデータセットは、私のフォロワーでも有効です。

危険

電源ルールの再掲:SO101 スタンダード版はすべて 5V 電源。SO101 Pro 版では、リーダーのキャリブレーション・運転は毎ステップ 5V 電源で、フォロワーは 12V 電源で行ってください。

10.2 フォロワーアームのキャリブレーション​

キャリブレーション

10.2 フォロワーアームのキャリブレーション

6 つのサーボを 3 ピンケーブルと制御ボードで接続し、シリアル権限を付与して実行:

sudo chmod 666 /dev/ttyACM*
lerobot-calibrate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm # <- ロボットに一意な名前を付ける

手順(下の動画参照):

  1. 中間姿勢:全関節が可動範囲の中間に来る位置(ほぼ「まっすぐ上」)にアームを動かし、Enter を押します;
  2. 全可動範囲:指示に従い、各関節を順に全可動域で動かします。ツールが最小値/最大値をサンプリングします。
ヒント

LeRobot リポジトリの更新により、リーダーアームのキャリブレーション中に 5 番サーボからの信号が端末に届かないことがありますが、正常でありそのまま続行できます。

10.3 リーダーアームのキャリブレーション​

キャリブレーション

10.3 リーダーアームのキャリブレーション

同じ 2 ステップ(中間姿勢 → 関節ごとの全可動域)。teleoperator のキーを使います:

lerobot-calibrate \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM1 \
--teleop.id=my_awesome_leader_arm # <- リーダーに一意な名前を付ける
ヒント

Could not connect on port '/dev/ttyACM0'. Make sure you are using the correct port. Try running lerobot-find-port と出たら、sudo chmod 666 /dev/ttyACM* で再度権限を付与してください。

キャリブレーションファイルの保存先(やり直し方)​

キャリブレーションファイルは JSON で ~/.cache/huggingface/lerobot/calibration/robots/ と ~/.cache/huggingface/lerobot/calibration/teleoperators/ に保存されます。やり直すには:

  • 方法 1 —— ファイルを削除してクリーンな状態から:
rm -rf ~/.cache/huggingface/lerobot/calibration/robots
rm -rf ~/.cache/huggingface/lerobot/calibration/teleoperators
  • 方法 2 —— プロンプトに答える。 キャリブレーション済みのアームで再実行すると:
Press ENTER to use provided calibration file associated with the id my_awesome_leader_arm, or type 'c' and press ENTER to run calibration:

c + Enter で再キャリブレーション、Enter のみで既存データをそのまま使用します。

キャリブレーションが失敗する場合:Magnitude ... exceeds 2047​

キャリブレーションやテレオペレーションで Magnitude 30841 exceeds 2047 (max for sign_bit_index=11) と出たら、サーボのゼロオフセットが異常です。まず電源を切りアームを再起動してもう一度。解消しなければ、先に中間位置キャリブレーションを行います — 第 7 章のツール、または Seeed_RoboController のスクリプト:

git clone https://github.com/Seeed-Projects/Seeed_RoboController.git
cd Seeed_RoboController
pip install -r requirements.txt

python -m src.tools.servo_disable # (任意)トルクを無効化し手で関節を動かしやすく
python -m src.tools.servo_middle_calibration # 現在位置を 2048 として書き込み
python -m src.tools.servo_center_test # 2048 へ動かして検証

その後 lerobot-calibrate に戻り、アーム全体のキャリブレーションをやり直します。

10.4 関節マッピング:方向・可動域・グリッパ​

マッピング

10.4 関節マッピング:方向・可動域・グリッパ

キャリブレーション後、手動で確認します:

  • 方向:リーダー関節 1 を時計回りに回すと、フォロワー関節 1 も時計回りに動く必要があります。逆方向に動く関節があれば、キャリブレーション時の姿勢が鏡像だった可能性 — その関節をやり直してください;
  • 可動域:リーダーの各関節を両端のリミットまで動かすと、フォロワーも対応するリミットに到達し、プリント部品に押し付けられないことを確認;
  • グリッパ:リーダーのグリッパハンドルを完全に閉じると — フォロワーのグリッパも完全に閉じる。全開は全開に対応。
ヒント

第 9 章のルール再掲:ここで選んだ --robot.id / --teleop.id はキャリブレーションファイルに紐づきます。以後のテレオペレーション・録画・評価ではまったく同じ id を使ってください。

10.5 マスター・スレーブテレオペレーションの開始​

テレオペ

10.5 マスター・スレーブテレオペレーションの開始

いよいよ 2 本のアームが 1 つのシステムになる瞬間です。ポート権限を付与して開始:

sudo chmod 666 /dev/ttyACM*
lerobot-teleoperate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM1 \
--teleop.id=my_awesome_leader_arm

teleoperate コマンドは自動で:

  1. 不足しているキャリブレーションを検出し、キャリブレーション手順を開始;
  2. ロボットとテレオペレータを接続し、テレオペレーションを開始します。

テレオペレーション安全ガイド​

  • 最初にトルクが有効になるときはフォロワーを手で支える — キャリブレーション姿勢へ素早く移動します;
  • リーダーはゆっくり動かす。フォロワーは全力トルクで追従します;
  • フォロワーのグリッパと挟み点に指を入れない;
  • フォロワーが遅れる・震える・関節が応答しない場合:停止し、電源を切り、そのサーボのバスケーブルを確認(サーボの LED が消えていれば手前のケーブルが緩んでいます)。

10.6 制御周波数とレイテンシ​

性能

10.6 制御周波数とレイテンシ

レイテンシはどこから来る?なぜ避けられない?​

すべての制御サイクルでリーダーを読み、フォロワーに目標を送り、(後で)カメラも読みます。特に USB カメラは自分のペースでフレームを出します。ループは高速 — 数十ミリ秒 — ですがゼロではないため、速いリーダー動作はフォロワー上でわずかに滑らかに見えます。正常です。

制御周波数とは?設定できる?​

LeRobot は設定された fps でループを回します(SO-ARM ワークフローのデフォルトは 30。後のデータセットの --dataset.fps はこれに一致させる必要があります)。テレオペレーションがカクつく場合:

  • USB ハブを避け、アームとカメラを PC に直結;
  • 他のプロセスがシリアルポートを掴んでいないか確認;
  • lerobot-find-port でバスを共有する機器がないか確認。

10.7 ハンズオン演習​

演習

10.7 ハンズオン演習

  1. リーダーとフォロワーをキャリブレーションし、~/.cache/huggingface/lerobot/calibration/ の 2 つの JSON ファイルを確認;
  2. 5 分間テレオペレーション:グリッパでマウスパッドの四隅に触れ、小さな物体を拾う;
  3. 意図的に失敗を体験:誤った --robot.id で teleoperate を実行し、エラーを読む — 一度読めば忘れません;
  4. c プロンプトで再キャリブレーションを練習。

制御チェーンの検証が済んだら、次章で最初のポリシーが学ぶデータを設計します。

Loading Comments...