LeRobot documentation
reBot B601
reBot B601
reBot B601は、Seeed Studioによる、模倣学習とエンボディドAI向けのオープンソースロボットアームです。セットアップでは、6自由度のフォロワーアームとグリップ、そしてテレオペレーション用のreBot Arm 102リーダーを組み合わせます。
FollowerはDamiao(DM)またはRobStride(RS)モーターで利用できます。どちらの構成も同じLeRobotロボットタイプとジョイント名を使用します。--robot.motor_familyでハードウェアを選択してください。
| ビルド | motor_family | モーター | デフォルトの接続 |
|---|---|---|---|
| B601-DM | dm | Damiao(4340Pベース、4310リスト) | Damiaoシリアルブリッジ |
| B601-RS | rs | RobStride(rs-06ベース、rs-00手首) | ネイティブCAN |
このガイドでは、単一アームおよび両腕セットアップにおけるハードウェアのセットアップ、キャリブレーション、テレオペレーション、および記録について説明します。

左が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 | 使用 | ポートの例 |
|---|---|---|
damiao | Damiaoシリアルブリッジ; DMのみ | /dev/ttyACM0 |
socketcan | MotorBridgeネイティブ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 can0can0を、CANバックエンドが提供するチャンネルに置き換えてください。両腕ネイティブCAN構成では、両方のアームが同じモーターIDを使用するため、can0とcan1のような個別のチャンネルが必要です。
デバイスタイプ
| 型 | デバイス |
|---|---|
rebot_b601_follower | 単一フォロワー |
bi_rebot_b601_follower | 両手フォロワー |
rebot_102_leader | Single reBot Arm 102 リーダー |
bi_rebot_102_leader | Bimanual reBot Arm 102 リーダー |
motor_familyのデフォルト値はdmです。両手構成では、各アームが独自のleft_arm_config.*またはright_arm_config.*設定を持ち、モーターファミリーを独立して選択できます。
キャリブレーション
Calibration は、現在の物理的な姿勢をモーターのゼロ位置として設定し、LeRobot のキャリブレーションファイルを保存します。各アームを、グリップが完全に閉じた状態で、以下の図に示すゼロ位置に配置し、プロンプトが表示されたら ENTER キーを押してください。

フォロワーのゼロ位置(左)とリーダーのゼロ位置(右)。図はDMフォロワーを示しています。RSフォロワーは同じ関節配置を使用します。
後続のコマンドで同じ--robot.idと--teleop.idを再利用することで、LeRobotが保存されたキャリブレーションを読み込むようにします。キャリブレーションが既に存在する場合、コマンドは既存のものを再利用するか、cを入力して再キャリブレーションを実行するかの選択を促します。
フォロワー
lerobot-calibrate \
--robot.type=rebot_b601_follower \
--robot.motor_family=dm \
--robot.port=/dev/ttyACM0 \
--robot.id=followerlerobot-calibrate \
--robot.type=rebot_b601_follower \
--robot.motor_family=rs \
--robot.port=can0 \
--robot.id=followerキャリブレーションは、左のフォロワー、続いて右のフォロワーの順で実行されます。
lerobot-calibrate \
--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/ttyACM12つのRSフォロワーを使用する場合、両方のファミリーをrsに設定し、2つのポートにはそれぞれ別のネイティブCANチャネルを使用します。アームごとのキャリブレーションファイルには、_leftおよび_rightのサフィックスが使用されます。
リーダー
lerobot-calibrate \
--teleop.type=rebot_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=leaderlerobot-calibrate \
--teleop.type=bi_rebot_102_leader \
--teleop.id=bi_leader \
--teleop.left_arm_config.port=/dev/ttyUSB0 \
--teleop.right_arm_config.port=/dev/ttyUSB1テレオペレーション
小さな動きから始め、ワークスペース全体を使用する前に、すべての関節の方向を確認してください。
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=leaderlerobot-teleoperate \
--robot.type=rebot_b601_follower \
--robot.motor_family=rs \
--robot.port=can0 \
--robot.id=follower \
--teleop.type=rebot_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=leaderlerobot-teleoperate \
--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 \
--teleop.type=bi_rebot_102_leader \
--teleop.id=bi_leader \
--teleop.left_arm_config.port=/dev/ttyUSB0 \
--teleop.right_arm_config.port=/dev/ttyUSB1データセットを記録する
録画前にテレオペレーションをテストしてください。カメラを追加するには、まず以下で特定します:
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=trueRS の場合、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.5N·m、保持中に1.0N·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