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 là cánh tay robot mã nguồn mở từ Seeed Studio dành cho học bắt chước và AI hiện thân. Một cấu hình kết hợp cánh tay theo dõi 6-DOF với kẹp và reBot Arm 102 làm cánh tay dẫn để vận hành từ xa.

Follower có sẵn với động cơ Damiao (DM) hoặc RobStride (RS). Cả hai cấu hình đều sử dụng cùng một loại robot LeRobot và tên khớp; hãy chọn phần cứng bằng --robot.motor_family.

Xây dựngmotor_familyĐộng cơKết nối mặc định
B601-DMdmDamiao (cơ sở 4340P, cổ tay 4310)Cầu nối nối tiếp Damiao
B601-RSrsRobStride (cơ sở rs-06, cổ tay rs-00)CAN bản địa

Hướng dẫn này bao gồm việc thiết lập phần cứng, hiệu chuẩn, điều khiển từ xa và ghi hình cho các cấu hình một cánh tay và hai cánh tay.

reBot B601 follower arm reBot Arm 102 leader arm

Người theo dõi B601 (bên trái) và người dẫn đầu reBot Arm 102 (bên phải). Người theo dõi DM và RS có cùng bố trí khớp và ngoại hình tổng thể nhưng sử dụng các động cơ khác nhau. Hình ảnh do Seeed Studio cung cấp.

Phần cứng và an toàn

Lắp ráp, đấu nối và cấu hình các động cơ theo hướng dẫn của Seeed Studio cho thiết bị theo dõi của bạn: B601-DM hoặc B601-RS.

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.

Cài đặt LeRobot 🤗

Làm theo Hướng dẫn cài đặt, sau đó cài đặt hỗ trợ reBot:

pip install -e ".[rebot]"

Lệnh này cài đặt motorbridge cho follower và motorbridge-smart-servo cho leader của reBot Arm 102.

Kết nối phần cứng

DM sử dụng cầu nối serial của nó theo mặc định và có thể tùy chọn sử dụng CAN native. RS yêu cầu CAN native.

can_adapterSử dụngVí dụ về cổng
damiaoCầu nối nối tiếp Damiao; chỉ dành cho DM/dev/ttyACM0
socketcanCAN bản địa của MotorBridge; bắt buộc đối với RScan0

Họ motor chọn bộ điều phối mặc định. Để chạy DM trên CAN bản địa thay vào đó, hãy thêm --robot.can_adapter=socketcan và sử dụng kênh CAN của nó làm --robot.port.

Cầu nối tuần tự

Sử dụng lerobot-find-port để xác định các cổng cầu nối serial DM và leader. Nếu tên các thiết bị khó phân biệt, hãy kết nối từng thiết bị serial một.

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 bản địa

Tên cấu hình socketcan được giữ nguyên trên các nền tảng. Linux sử dụng SocketCAN. macOS yêu cầu bộ điều hợp PCAN tương thích và runtime MacCAN PCBUSB. Hỗ trợ native-CAN trên Windows là thử nghiệm và yêu cầu bộ điều hợp PEAK PCAN cùng PCAN-Basic. Xem cài đặt nền tảng MotorBridge để biết chi tiết cài đặt.

Trên Linux, hãy cấu hình mỗi giao diện CAN native ở tốc độ 1 Mbps trước khi kết nối một RS follower:

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

Thay can0 bằng kênh do backend CAN của bạn cung cấp. Các cấu hình CAN bản địa hai tay cần các kênh riêng biệt như can0 và can1 vì cả hai cánh tay đều sử dụng cùng các ID động cơ.

Các loại thiết bị

LoạiThiết bị
rebot_b601_followerMột người theo dõi
bi_rebot_b601_followerNgười theo dõi hai tay
rebot_102_leaderĐơn reBot Arm 102 leader
bi_rebot_102_leaderBimanual reBot Arm 102 leader

motor_family mặc định là dm. Trong cấu hình hai tay, mỗi cánh tay có các cài đặt left_arm_config.* hoặc right_arm_config.* riêng và có thể chọn họ động cơ độc lập.

Hiệu chuẩn

Calibration đặt tư thế vật lý hiện tại làm vị trí zero của động cơ và lưu tệp hiệu chuẩn LeRobot. Đặt mỗi cánh tay vào vị trí zero như hình bên dưới với kẹp gắp đóng hoàn toàn, sau đó nhấn ENTER khi được yêu cầu.

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

Vị trí zero của follower (bên trái) và vị trí zero của leader (bên phải). Hình ảnh hiển thị follower DM; follower RS sử dụng cùng bố trí khớp.

Tái sử dụng cùng --robot.id và --teleop.id trong các lệnh sau để LeRobot tải hiệu chuẩn đã lưu. Nếu hiệu chuẩn đã tồn tại, lệnh cho phép bạn tái sử dụng nó hoặc nhập c để hiệu chuẩn lại.

Người theo dõi

Một cánh tay (DM)
Một cánh tay (RS)
Tay đôi (DM)
lerobot-calibrate \
    --robot.type=rebot_b601_follower \
    --robot.motor_family=dm \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower

Trưởng nhóm

Một cánh tay
Cánh tay kép
lerobot-calibrate \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.id=leader

Điều khiển từ xa

Bắt đầu với các chuyển động nhỏ và kiểm tra hướng của từng khớp trước khi sử dụng toàn bộ không gian làm việc.

Một cánh tay (DM)
Một cánh tay (RS)
Tay đôi (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

Ghi lại một bộ dữ liệu

Kiểm tra điều khiển từ xa trước khi ghi hình. Để thêm một camera, trước tiên hãy xác định nó bằng:

lerobot-find-cameras opencv

Một cánh tay

Ví dụ này ghi lại năm tập DM cục bộ bằng một camera OpenCV:

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

Đối với RS, thay đổi motor_family thành rs và cổng robot thành kênh CAN native. Xóa đối số camera cho bài kiểm tra chỉ có động cơ.

Hai tay

Ví dụ DM này ghi lại một camera trên cùng dùng chung và một camera cổ tay cho mỗi cánh tay. Các khóa camera của bộ dữ liệu là top, left_wrist và 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

Đối với cấu hình RS hai tay, đặt cả hai nhóm động cơ thành rs và sử dụng các kênh CAN native riêng biệt. Cấu hình hỗn hợp có thể chọn dm cho một cánh tay và rs cho cánh tay còn lại.

Xem Imitation Learning for Robots để tải lên, phát lại, huấn luyện và đánh giá một chính sách.

Kiểm soát nâng cao

Cả hai bản build đều hiển thị cùng các tên khớp và vị trí công khai tính bằng độ. LeRobot áp dụng các dấu hướng động cơ của từng dòng vào các hành động và quan sát, do đó các chính sách và người vận hành từ xa không cần phải chuyển đổi dấu động cơ.

  • DM sử dụng điều khiển MIT cho cánh tay và force_pos cho kẹp gắp theo mặc định. gripper_torque_ratio có giá trị mặc định là 0.07; DM cũng hỗ trợ --robot.control_mode=pos_vel.
  • RS sử dụng điều khiển MIT và kẹp tay có trở kháng giới hạn lực vì MotorBridge không cung cấp force_pos cho RobStride. Tùy thuộc vào chuyển động đo được của kẹp tay, mô-men xoắn được lệnh sẽ bị giới hạn ở mức 3.5 N·m khi di chuyển hoặc 1.0 N·m khi giữ. Nếu phản hồi thất bại, LeRobot sẽ cố gắng lệnh mô-men xoắn kẹp tay bằng không và sau đó vô hiệu hóa cánh tay.
  • mit_kp, mit_kd và pos_vel_velocity chấp nhận một giá trị vô hướng cho mỗi khớp hoặc một ánh xạ theo khóa khớp.
  • max_relative_target giới hạn sự khác biệt giữa một lệnh và vị trí đo được gần nhất. Ví dụ, --robot.max_relative_target=5.0 giới hạn mỗi khớp được lệnh thay đổi tối đa năm độ.
  • joint_limits tùy chọn ghi đè các mặc định của nhóm trong các bậc tự do khớp công khai.

Hướng của động cơ follower được chọn bên trong từ họ động cơ. joint_directions của leader vẫn có thể cấu hình nếu một khớp teleoperation di chuyển theo hướng sai.

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

Xử lý sự cố

Vấn đềKiểm tra
Thiết bị nối tiếp bị thiếu hoặc đang bậnKết nối lại từng thiết bị một, chạy lại lerobot-find-port, kiểm tra quyền truy cập và gỡ bỏ brltty trên Linux.
CAN bản địa không thể kết nốiKiểm tra thời gian chạy của adapter, tên kênh, tốc độ bit 1 Mbps, công suất động cơ, dây nối CAN và điện trở cuối.
Một khớp điều khiển từ xa di chuyển theo hướng saiDừng chương trình, xác nhận motor_family và kiểm tra joint_directions của leader.
Việc hiệu chuẩn không được tái sử dụngSử dụng cùng một robot hoặc id của người vận hành từ xa đã được dùng trong quá trình hiệu chuẩn.

Đối với việc lắp ráp, đấu nối và chẩn đoán phần cứng cụ thể, hãy xem các hướng dẫn của Seeed Studio dành cho B601-DM và B601-RS.

Update on GitHub