LeRobot documentation

reBot B601

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

reBot B601

reBot B601は、Seeed Studioによる、模倣学習とエンボディドAI向けのオープンソースロボットアームです。セットアップでは、6自由度のフォロワーアームとグリップ、そしてテレオペレーション用のreBot Arm 102リーダーを組み合わせます。

FollowerはDamiao(DM)またはRobStride(RS)モーターで利用できます。どちらの構成も同じLeRobotロボットタイプとジョイント名を使用します。--robot.motor_familyでハードウェアを選択してください。

ビルドmotor_familyモーターデフォルトの接続
B601-DMdmDamiao(4340Pベース、4310リスト)Damiaoシリアルブリッジ
B601-RSrsRobStride(rs-06ベース、rs-00手首)ネイティブCAN

このガイドでは、単一アームおよび両腕セットアップにおけるハードウェアのセットアップ、キャリブレーション、テレオペレーション、および記録について説明します。

reBot B601 follower arm reBot Arm 102 leader arm

左がB601のフォロワー、右がreBot Arm 102のリーダーです。DMとRSのフォロワーは同じ関節レイアウトと外観を共有していますが、モーターが異なります。画像はSeeed Studioの提供によるものです。

ハードウェアと安全性

B601-DMまたはB601-RSのフォロワーについて、Seeed Studioのガイドに従ってモーターを組み立て、配線し、設定してください。

Secure the follower to a stable surface and keep its workspace clear. Support the arm whenever torque is disabled or the program disconnects because it can move under gravity. If power or a data cable disconnects during operation, stop the program, return the leader and follower to their zero positions, then reconnect and restart.

LeRobot🤗のインストール

インストールガイドに従って、reBot サポートをインストールします:

pip install -e ".[rebot]"

これにより、フォロワーにはmotorbridge、reBot Arm 102 リーダーにはmotorbridge-smart-servoがインストールされます。

ハードウェアを接続する

DMはデフォルトでシリアルブリッジを使用し、オプションでネイティブCANを使用できます。RSはネイティブCANが必要です。

can_adapter使用ポートの例
damiaoDamiaoシリアルブリッジ; DMのみ/dev/ttyACM0
socketcanMotorBridgeネイティブCAN;RSに必要can0

モーターファミリーがデフォルトのアダプターを選択します。代わりにネイティブCANでDMを実行するには、--robot.can_adapter=socketcanを追加し、そのCANチャネルを--robot.portとして使用します。

シリアルブリッジ

lerobot-find-port を使用して、DMシリアルブリッジおよびリーダーのポートを特定します。デバイス名が区別しにくい場合は、一度に1つのシリアルデバイスのみを接続してください。

lerobot-find-port
On Linux, remove `brltty` (`sudo apt remove brltty`) if it captures a serial device. You may also need temporary access with `sudo chmod 666 /dev/ttyACM* /dev/ttyUSB*`.

ネイティブCAN

socketcan という設定名はプラットフォーム間で維持されます。Linux では SocketCAN が使用されます。macOS には互換性のある PCAN アダプターと MacCAN PCBUSB ランタイムが必要です。Windows のネイティブ CAN サポートは実験的であり、PEAK PCAN アダプターと PCAN-Basic が必要です。インストールの詳細については、MotorBridge プラットフォームのセットアップを参照してください。

Linuxでは、RSフォロワーを接続する前に、各ネイティブCANインターフェースを1 Mbpsに設定してください。

sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up
ip -details link show can0

can0を、CANバックエンドが提供するチャンネルに置き換えてください。両腕ネイティブCAN構成では、両方のアームが同じモーターIDを使用するため、can0とcan1のような個別のチャンネルが必要です。

デバイスタイプ

型デバイス
rebot_b601_follower単一フォロワー
bi_rebot_b601_follower両手フォロワー
rebot_102_leaderSingle reBot Arm 102 リーダー
bi_rebot_102_leaderBimanual reBot Arm 102 リーダー

motor_familyのデフォルト値はdmです。両手構成では、各アームが独自のleft_arm_config.*またはright_arm_config.*設定を持ち、モーターファミリーを独立して選択できます。

キャリブレーション

Calibration は、現在の物理的な姿勢をモーターのゼロ位置として設定し、LeRobot のキャリブレーションファイルを保存します。各アームを、グリップが完全に閉じた状態で、以下の図に示すゼロ位置に配置し、プロンプトが表示されたら ENTER キーを押してください。

reBot B601 follower arm at its zero position reBot Arm 102 leader arm at its zero position

フォロワーのゼロ位置(左)とリーダーのゼロ位置(右)。図はDMフォロワーを示しています。RSフォロワーは同じ関節配置を使用します。

後続のコマンドで同じ--robot.idと--teleop.idを再利用することで、LeRobotが保存されたキャリブレーションを読み込むようにします。キャリブレーションが既に存在する場合、コマンドは既存のものを再利用するか、cを入力して再キャリブレーションを実行するかの選択を促します。

フォロワー

単一アーム(DM)
単一アーム (RS)
デュアルアーム(DM)
lerobot-calibrate \
    --robot.type=rebot_b601_follower \
    --robot.motor_family=dm \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower

リーダー

単一アーム
デュアルアーム
lerobot-calibrate \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.id=leader

テレオペレーション

小さな動きから始め、ワークスペース全体を使用する前に、すべての関節の方向を確認してください。

単一アーム(DM)
単一アーム (RS)
デュアルアーム(DM)
lerobot-teleoperate \
    --robot.type=rebot_b601_follower \
    --robot.motor_family=dm \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.id=leader

データセットを記録する

録画前にテレオペレーションをテストしてください。カメラを追加するには、まず以下で特定します:

lerobot-find-cameras opencv

単一アーム

この例では、1つのOpenCVカメラを使用して、5つのDMエピソードをローカルに記録します。

lerobot-record \
    --robot.type=rebot_b601_follower \
    --robot.motor_family=dm \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower \
    --robot.cameras='{"front": {"type": "opencv", "index_or_path": 0, "width": 640, "height": 480, "fps": 30}}' \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.id=leader \
    --dataset.repo_id=your_username/rebot-dm-test \
    --dataset.single_task="Pick up the object" \
    --dataset.num_episodes=5 \
    --dataset.episode_time_s=30 \
    --dataset.reset_time_s=10 \
    --dataset.push_to_hub=false \
    --display_data=true

RS の場合、motor_family を rs に変更し、ロボットポートをネイティブ CAN チャネルに変更します。モーターのみのテストを行う場合は、カメラの引数を削除します。

両手

このDMの例では、共有のトップカメラと各アームごとの1つのリストカメラを記録します。データセットのカメラキーはtop、left_wrist、right_wristです。

lerobot-record \
    --robot.type=bi_rebot_b601_follower \
    --robot.id=bi_follower \
    --robot.left_arm_config.motor_family=dm \
    --robot.left_arm_config.port=/dev/ttyACM0 \
    --robot.right_arm_config.motor_family=dm \
    --robot.right_arm_config.port=/dev/ttyACM1 \
    --robot.cameras='{
      top: {
        type: opencv,
        index_or_path: "/dev/video2",
        width: 640,
        height: 480,
        fps: 30,
        fourcc: "MJPG"
      }
    }' \
    --robot.left_arm_config.cameras='{
      wrist: {
        type: opencv,
        index_or_path: "/dev/video0",
        width: 640,
        height: 480,
        fps: 30,
        fourcc: "MJPG"
      }
    }' \
    --robot.right_arm_config.cameras='{
      wrist: {
        type: opencv,
        index_or_path: "/dev/video4",
        width: 640,
        height: 480,
        fps: 30,
        fourcc: "MJPG"
      }
    }' \
    --teleop.type=bi_rebot_102_leader \
    --teleop.id=bi_leader \
    --teleop.left_arm_config.port=/dev/ttyUSB0 \
    --teleop.right_arm_config.port=/dev/ttyUSB1 \
    --dataset.repo_id=local/rebot-bimanual-dm-camera-test \
    --dataset.root=/tmp/rebot-bimanual-dm-camera-test \
    --dataset.single_task="Test coordinated movement of both reBot DM arms" \
    --dataset.fps=30 \
    --dataset.num_episodes=2 \
    --dataset.episode_time_s=20 \
    --dataset.reset_time_s=10 \
    --dataset.push_to_hub=false \
    --display_data=false

両手 RS セットアップの場合、両方のモーターファミリーをrsに設定し、それぞれ別のネイティブ CAN チャネルを使用します。混合セットアップでは、片方のアームにdmを、もう片方のアームにrsを選択できます。

のアップロード、リプレイ、学習、評価を行うには、Imitation Learning for Robotsを参照してください。

高度なコントロール

両方のビルドは、同じ関節名と、度単位のパブリックな位置を公開します。LeRobot は、各ファミリーのモーター方向の符号をアクションと観測に適用するため、ポリシーやテレオペレーターはモーター符号の変換を行う必要はありません。

  • DMはデフォルトでアームにMIT制御、グリップにforce_posを使用します。gripper_torque_ratioのデフォルト値は0.07です。DMは--robot.control_mode=pos_velもサポートしています。
  • RS は MIT 制御と力制限インピーダンスグリップを使用しています。これは、MotorBridge が RobStride に対して force_pos を提供しないためです。測定されたグリップの動作に応じて、コマンドトルクは移動中に 3.5 N·m、保持中に 1.0 N·m に制限されます。フィードバックが失敗した場合、LeRobot はグリップトルクをゼロにコマンドしようとし、その後アームを無効にします。
  • mit_kp、mit_kd、およびpos_vel_velocityは、各関節に対するスカラー値1つ、または関節をキーとするマッピングのいずれかを指定できます。
  • max_relative_targetは、コマンドと最新の測定位置の差に上限を設けます。例えば、--robot.max_relative_target=5.0は、すべてのコマンドされた関節の变化を5度に制限します。
  • joint_limitsは、公開されている関節の自由度において、ファミリーのデフォルト値を任意に上書きします。

Followerモーターの方向は、モーターファミリーから内部で選択されます。テレオペレーションの関節が誤った方向に動く場合、リーダーのjoint_directionsは設定可能のままです。

DM and RS use the same coordinate convention, but their geometry, gains, and dynamics differ. Validate policies and datasets before transferring them between builds.

トラブルシューティング

問題確認
シリアルデバイスが存在しないか、使用中です一度に1台ずつデバイスを再接続し、lerobot-find-portを再実行し、権限を確認し、Linuxではbrlttyを削除してください。
ネイティブCANは接続できませんアダプタの動作時間、チャンネル名、1 Mbpsのビットレート、モーターの出力、CAN配線、ターミネーションを確認してください。
テレオペレーションされた関節が逆方向に動くプログラムを停止し、motor_familyを確認して、リーダーのjoint_directionsをチェックしてください。
キャリブレーションは再利用されませんキャリブレーションで使用したのと同じロボットまたはテレオペレーターのidを使用してください。

アセンブリ、配線、およびハードウェア固有の診断については、B601-DMおよびB601-RSのSeeed Studioガイドを参照してください。

Update on GitHub