Thư mục bộ dữ liệu công khai AY-Robots hiển thị các bộ dữ liệu LeRobot được ghi lại trên các cánh tay robot lớp SO-100
Bộ dữ liệuOpen X-EmbodimentDROIDSO-100LeRobot

Sử dụng DROID, BridgeData V2 và Open X trên SO-100

AY-Robots ResearchAugust 23, 202618 phút đọc

DROID, BridgeData V2 và Open X-Embodiment chuyển đổi thành các hành động đầu cuối 7 chiều trên các cánh tay robot 6 và 7 bậc tự do. Một SO-100 sử dụng 6 vị trí khớp. Những gì có thể chuyển giao, những gì không, và nên làm gì thay thế.

Phiên bản tóm tắt

  • Các bản dựng LeRobot của cả ba đều chia sẻ một quy ước: một hành động đầu cuối 7 chiều [x, y, z, roll, pitch, yaw, gripper] và một trạng thái 8 chiều với một khe đệm. Một SO-100 sử dụng sáu vị trí khớp tuyệt đối.
  • Vector 7 chiều đó là sản phẩm của bộ chuyển đổi: trường hành động RLDS riêng của DROID là 6 vận tốc khớp cộng với một vị trí kẹp, với chế độ xem Descartes trong action_dict.
  • Bốn tốc độ khung hình: DROID 15 fps, BridgeData V2 5 fps, lát google_robot 3 fps, một SO-100 ghi hình ở 30 fps.
  • Bạn không thể hợp nhất chúng với dữ liệu của riêng bạn. validate_all_metadata sẽ báo lỗi ở điểm khác biệt đầu tiên về fps, robot_type hoặc features, và cả ba đều khác nhau.
  • Cái được chuyển giao là trọng số đã được huấn luyện trước, không phải các tập. Dữ liệu mã nguồn mở chiếm 9.1 phần trăm trong hỗn hợp huấn luyện trước của pi0.
  • Cách sử dụng thực tế rẻ nhất của chúng là một thiết bị kiểm tra: một mẫu DROID 2 GB, 100 tập đã được xác minh là tốt, chứng minh quy trình của bạn trước khi bạn ghi hình trong một cuối tuần.

Có một tập dữ liệu công khai với hàng triệu quỹ đạo trên một Google Cloud bucket và một SO-100 trên bàn có giá 110 đến 150 EUR tiền linh kiện. Tại sao cái đầu tiên không thể dạy cái thứ hai? Nó có thể một phần, nhưng hầu như không có sự chuyển giao nào xảy ra ở nơi mọi người mong đợi, và phần trông dễ nhất lại hoàn toàn không hoạt động.

Sau đây là: những gì có trong DROID, BridgeData V2Open X-Embodiment, nơi mỗi cái va chạm với một cánh tay 5 bậc tự do chi phí thấp, và những gì nên làm thay thế. Mọi con số dưới đây đều đến từ bài báo, thẻ tập dữ liệu hoặc tệp nguồn mà nó thuộc về.

Ba tập dữ liệu này thực sự chứa gì

DROIDBridgeData V2Open X-Embodiment
RobotFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, giàn máy khoảng 4.000 USD22 hiện thân, 60 bộ dữ liệu, 34 phòng thí nghiệm
Quy mô76k quỹ đạo, 350 giờ60.096 quỹ đạoHơn 1 triệu quỹ đạo, 527 kỹ năng
Đa dạng564 cảnh, 84 tác vụ, 50 người thu thập24 môi trường, 13 kỹ năng160.266 tác vụ, 21 tổ chức
Thành phầntất cả được điều khiển từ xa50.365 được điều khiển từ xa, 9.731 được lập trìnhtheo phòng thí nghiệm nguồn
Tốc độ điều khiển15 Hz5 Hzthay đổi, từ 3 khung hình/giây trở lên
Camera2 x ZED 2 bên ngoài, 1 x ZED Mini gắn cổ taytối đa 4, hầu hết các tập chỉ dùng camera cố địnhtùy thuộc vào thiết bị phòng thí nghiệm sử dụng
Tải xuống thô1.7 TB RLDS, 8.7 TB raw stereoKho lưu trữ JPEGcác bucket TFDS theo từng bộ dữ liệu
Điểm truy cập là bản chuyển đổi LeRobot, không phải bucket gốc

Ít người còn tải xuống 1.7 TB TFRecords RLDS. Tổ chức cộng đồng IPEC-COMMUNITY đã tái xuất bản hầu hết Open X-Embodiment dưới dạng bộ dữ liệu LeRobot với video AV1, trong đó DROID có kích thước 392 GB. Đây là phiên bản bạn sẽ làm việc, và meta/info.json của nó là thứ cần đọc đầu tiên.

DROID

Tiêu chuẩn hóa nhất trong ba loại. Một giàn máy duy nhất ở mọi nơi: một Franka Panda với bộ kẹp Robotiq 2F-85, hai camera stereo ZED 2 có thể điều chỉnh và một ZED Mini gắn cổ tay, được điều khiển từ xa bằng bộ điều khiển Meta Quest 2, ghi lại qua Polymetis ở tốc độ 15 Hz trong cả không gian khớp và đầu cuối không gian. Nhãn ngôn ngữ được thêm vào sau đó qua tasq.ai, tối đa ba nhãn cho mỗi tập.

  • 76 nghìn quỹ đạo, 350 giờ, 564 cảnh, 84 nhiệm vụ, 50 người thu thập dữ liệu trên ba châu lục.
  • Kết quả nổi bật là đồng huấn luyện, không phải huấn luyện độc lập: các lô dữ liệu được trộn 50/50 với các minh họa trong miền đã vượt trội hơn phương pháp tốt nhất tiếp theo 22 phần trăm thành công tuyệt đối trong phân phối, và 17 phần trăm ngoài phân phối.
  • IPEC-COMMUNITY/droid_lerobot: 92.233 tập, 27.044.326 khung hình, franka, 15 fps, codebase_version v2.0, ba luồng AV1 ở 180x320, 392 GB.
  • Một mẫu gỡ lỗi 2 GB, 100 tập nằm tại gs://gresearch/robotics/droid_100. Bắt đầu từ đó.

BridgeData V2

Gần nhất với một thiết lập nghiệp dư: một cánh tay WidowX 250 6-DoF, 60.096 quỹ đạo trên 24 môi trường và 13 kỹ năng ở 5 Hz. Lưu ý thành phần: 50.365 minh họa được điều khiển từ xa bởi chuyên gia cộng với 9.731 từ một chính sách chọn và đặt ngẫu nhiên theo kịch bản, vì vậy khoảng 16 phần trăm không phải là minh họa của con người, điều này quan trọng đối với học bắt chước chất lượng. Bản tải xuống thông thường, IPEC-COMMUNITY/bridge_orig_lerobot, báo cáo 53.192 tập và 1.893.026 khung hình ở 5 fps, robot_type widowx: ít hơn 60.096 của bài báo, vì vậy hãy đọc số lượng từ meta/info.json thay vì trích dẫn một trong hai.

Open X-Embodiment

Không phải là một tập dữ liệu theo nghĩa thông thường: 60 tập dữ liệu robot hiện có từ 34 phòng thí nghiệm được gộp vào một bộ sưu tập RLDS duy nhất, bao gồm 22 dạng thực thể và hơn một triệu quỹ đạo. BridgeData V2 nằm trong đó dưới dạng bridge_orig; lát cắt google_robot, fractal20220817_data, chuyển đổi thành 87.212 tập ở tốc độ 3 khung hình/giây.

Việc gộp dữ liệu đi kèm với một cảnh báo mà bài báo đã nêu rõ. Đối với các thí nghiệm RT-X, các tác giả chuyển đổi mỗi nguồn thành một hành động đầu cuối 7-DoF, nhưng không căn chỉnh các hệ tọa độ giữa các tập dữ liệu, và cho phép các giá trị hành động là vị trí hoặc vận tốc tuyệt đối hoặc tương đối, tùy theo sơ đồ điều khiển ban đầu của mỗi robot. Kết luận của họ: cùng một vector hành động có thể tạo ra các chuyển động rất khác nhau cho các robot khác nhau.

Thư mục tập dữ liệu AY-Robots liệt kê các tập dữ liệu LeRobot công khai với số lượng tập và mô tả nhiệm vụ
Thư mục tập dữ liệu công khai tại /directory: các tập dữ liệu đã ở định dạng LeRobot, đã khớp với một cánh tay robot được hỗ trợ.

Sự không khớp, trong bốn phần

Sự không khớp về thể hiện thường được coi là một vấn đề mơ hồ. Thực ra có bốn loại, chúng thất bại theo những cách khác nhau, và hai trong số đó không thể khắc phục bằng cách lập trình.

1. Bậc tự do

Một SO-100 có năm khớp tay cộng với một bộ kẹp. Nếu tính theo động cơ, đó là một cánh tay 6 bậc tự do (6-DoF), và bài báo SmolVLA gọi nó như vậy; nếu tính theo cơ chế định vị, đó là 5 bậc tự do (5-DoF), và LeRobot gọi nó như vậy trong docstring động học ngược của nó, mô tả IK định hướng mềm trên SO-101 5 bậc tự do, nơi cổ tay chỉ theo dõi định hướng một phần. Một Franka có bảy khớp định vị. Khoảng cách đó quyết định những tư thế nào tồn tại: một cánh tay 5 bậc tự do thường không thể đạt được một vị trí và định hướng tùy ý cùng một lúc, vì vậy bộ giải sẽ trả về vị trí gần nhất có thể, một chuyển động khác với chuyển động đã được trình diễn. Thông tin cơ bản: bậc tự do.

python
# src/lerobot/robots/so_follower/so_follower.py
motors = {
    "shoulder_pan":  Motor(1, "sts3215", norm_mode_body),
    "shoulder_lift": Motor(2, "sts3215", norm_mode_body),
    "elbow_flex":    Motor(3, "sts3215", norm_mode_body),
    "wrist_flex":    Motor(4, "sts3215", norm_mode_body),
    "wrist_roll":    Motor(5, "sts3215", norm_mode_body),
    "gripper":       Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
}
# action keys are "<motor>.pos"; send_action sync_writes them to
# "Goal_Position"  ->  a 6-D ABSOLUTE JOINT POSITION command


# openpi/src/openpi/policies/droid_policy.py
def make_droid_example() -> dict:
    return {
        "observation/exterior_image_1_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/wrist_image_left":      np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/joint_position":        np.random.rand(7),   # seven Franka joints
        "observation/gripper_position":      np.random.rand(1),
        "prompt": "do something",
    }
# state = concat(joint_position, gripper_pos)  ->  8-D
Trái: Bộ theo dõi SO của LeRobot, từ src/lerobot/robots/so_follower/so_follower.py. Phải: Đầu vào chính sách DROID của openpi. Sáu so với tám.

Vì vậy, một checkpoint DROID có sẵn không phải là một lối tắt. Physical Intelligence cung cấp pi05_droid tại gs://openpi-assets/checkpoints/pi05_droid, và cùng một README ca ngợi sự đa dạng của nó cũng cảnh báo rằng các checkpoint chuyên gia này có thể không tổng quát hóa được cho thiết lập của bạn. Trạng thái của nó là tám số khớp Franka và các khóa hình ảnh của nó là exterior_image_1_left và wrist_image_left. Không có cờ nào biến điều đó thành lệnh SO-100 sáu động cơ.

2. Vector hành động thực sự nói gì

Sâu hơn cả chiều. Trong các chuyển đổi của LeRobot, cả ba đều cho biết kẹp gắp nên đi đâu, trong không gian Descartes. Một SO-100 cho biết sáu servo nên đi đâu. Chuyển đổi cần một mô hình động học và một bộ giải, chứ không phải là một sự định hình lại.

Thuộc tínhOXE, DROID và Bridge dưới dạng LeRobotSO-100 trong LeRobot
Vector hành động7-D: x, y, z, roll, pitch, yaw, kẹp gắp6-D: một vị trí mục tiêu cho mỗi động cơ
Vector trạng thái8-D, với một khe đệm (google_robot sử dụng một quaternion)6-D, một cho mỗi động cơ
KhungDescartes, không đồng nhất giữa các tập dữ liệukhông gian khớp, hiệu chuẩn từng cánh tay
Tuyệt đối hay tương đốitùy chọn, do phòng thí nghiệm nguồn quyết địnhvị trí mục tiêu tuyệt đối
Đơn vịchuẩn hóa theo từng tập dữ liệu, sau đó rời rạc hóađộ theo mặc định (use_degrees=True), nếu không thì -100 đến 100
Lỗi âm thầmmột delta được đọc như một giá trị tuyệt đốimột cánh tay chưa được hiệu chuẩn
Vector Descartes 7 chiều là quy ước của bộ chuyển đổi, không phải của DROID

README của openx2lerobot ghi lại một trạng thái 8-dim thống nhất và hành động 7-dim cho mọi tập dữ liệu mà nó chuyển đổi, đây là nơi xuất phát của khe pad. Lược đồ RLDS của riêng DROID khác biệt: action cấp cao nhất của nó là một vector 7 chiều gồm 6 vận tốc khớp cộng 1 vị trí kẹp, với cartesian_position, cartesian_velocity, joint_positionjoint_velocity nằm dưới action_dict. openpi đọc chế độ xem không gian khớp, bản dựng LeRobot cung cấp cho bạn chế độ xem Descartes. Cả hai đều không phải là sáu góc servo tuyệt đối.

LeRobot thực sự cung cấp phần còn thiếu: bộ theo dõi SO có bộ xử lý động học với các bước InverseKinematicsEEToJoints và ForwardKinematicsJointsToEE. Các khóa của nó là ee.x, ee.y, ee.z cộng với một vector quay ee.wx, ee.wy, ee.wz và ee.gripper_pos, vì vậy ngay cả mã hóa hướng cũng khác với roll-pitch-yaw trong các tệp. Bước IK nhận một orientation_weight, mặc định 0.01, mà docstring của nó nói rằng hãy đặt 0.0 cho IK chỉ vị trí trên các cánh tay thiếu truyền động. Bạn có thể xây dựng cầu nối, nhưng nửa hướng của mọi hành động được mượn vẫn chỉ là xấp xỉ.

3. Tốc độ điều khiển

DROID là 15 Hz, BridgeData V2 5 Hz, lát google_robot 3 fps; các tác giả của pi0 mô tả phần mã nguồn mở trong hỗn hợp của họ là điều khiển tần số thấp trong khoảng từ 2 đến 10 Hz. DatasetRecordConfig của LeRobot mặc định là fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Một được huấn luyện trên dữ liệu 5 Hz đã học rằng một hành động bao gồm 200 ms. Phát lại nó ở 30 Hz và cánh tay sẽ bò; lấy mẫu lại một cách ngây thơ và bạn sẽ làm nhòe khung hình nơi kẹp đóng lại. Nó cũng tương tác kém với : một phân đoạn 100 bước là 20 giây ở 5 Hz, 3.3 ở 30 Hz.

4. Camera

BridgeData V2 đã ngẫu nhiên hóa hai tư thế camera sau mỗi 50 quỹ đạo, và trang dự án của nó lưu ý rằng hầu hết dữ liệu chỉ mang góc nhìn cố định. DROID đã sử dụng giá đỡ ZED 2 có thể điều chỉnh cùng với một ZED Mini gắn ở cổ tay. Bạn có hai webcam USB được định vị bằng mắt. Tư thế camera không phải là một biến gây phiền toái đối với một ; nó là phần lớn những gì bộ mã hóa thị giác đã tập trung vào, và không có gì trong định dạng tệp cho bạn biết các tư thế khác nhau.

Cái bẫy nuốt chửng một ngày

Các phần khớp với nhau đủ tốt để chạy. Tập dữ liệu tải, quá trình huấn luyện bắt đầu, độ lỗi giảm, các điểm kiểm tra xuất hiện, không có lỗi nào. Sau đó, chính sách không thực hiện bất kỳ hành động nào có thể nhận dạng được trên cánh tay robot và bạn dành cả ngày để tìm lỗi trong tập lệnh huấn luyện của mình. Không có lỗi: mô hình đã học một phân phối hành động Cartesian cho một robot không tồn tại trong phòng của bạn. Bắt đầu từ độ lỗi giảm, chính sách không làm gì, chứ không phải từ các siêu tham số của bạn.

Điều gì xảy ra khi bạn vẫn cố gắng hợp nhất dữ liệu

Kế hoạch rõ ràng là nối chuỗi: vài nghìn tập DROID cộng với 50 tập của bạn. LeRobot từ chối, và sự từ chối đó nêu ra ba điểm khác biệt.

  1. 1
    Tải mẫu 100 tập, không phải toàn bộ 1.7 TB

    2 GB là đủ để xem cấu trúc.

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    Chuyển đổi RLDS sang định dạng LeRobot

    openx2lerobot bao bọc các chuyển đổi tiêu chuẩn OXE và chú thích loại robot cũng như tần số điều khiển. README đặt điều này trong convert.sh.

    bash
    git clone https://github.com/Tavish9/any4lerobot.git
    cd any4lerobot/openx2lerobot
    
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  3. 3
    Đọc meta/info.json trước bất cứ điều gì khác

    Tệp này quyết định liệu phần còn lại trong ngày của bạn có hoạt động hay không.

    bash
    python -c "import json;d=json.load(open('meta/info.json'));\
    print(d['codebase_version'], d['robot_type'], d['fps']);\
    print(d['features']['action']['shape'], d['features']['observation.state']['shape'])"
  4. 4
    Thử hợp nhất và đọc lỗi

    merge tải mọi tập dữ liệu, sau đó validate_all_metadata kiểm tra fps, robot_type và các tính năng so với tập đầu tiên trong danh sách, báo lỗi ngay khi có sự không khớp đầu tiên.

    bash
    lerobot-edit-dataset \
        --new_repo_id you/mixed \
        --operation.type merge \
        --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']"
    
    # ValueError: Same fps is expected, but got fps=30 instead of 15.

Các giá trị tham chiếu đến từ tập dữ liệu nào bạn liệt kê đầu tiên, đó là lý do tại sao thông báo phàn nàn về 30 fps của bạn thay vì 15 của DROID. Sửa fps và bạn sẽ gặp kiểm tra robot_type; sửa lỗi đó và bạn sẽ gặp kiểm tra tính năng, 7 so với 6 cho hành động. Không có thứ tự nào vượt qua được, và cùng một cơ chế bảo vệ chạy tại thời điểm ghi thông qua sanity_check_dataset_robot_compatibility.

Không mã hóa cứng robot_type để vượt qua kiểm tra

Trên LeRobot main hiện tại, so100_followerso101_follower đều được đăng ký vào một SOFollowerRobotConfig dùng chung, vì vậy chuỗi từ một bản ghi thực tế không nhất thiết là chuỗi bạn mong đợi. Hãy đọc nó từ meta/info.json của riêng bạn, và coi một kiểm tra mà bạn phải vô hiệu hóa là một kiểm tra đang nói cho bạn điều gì đó.

Vậy điều gì thực sự được chuyển giao?

Trọng số, không phải tập dữ liệu. Mọi chính sách tổng quát hiện đại đều hấp thụ một phần trong quá trình tiền huấn luyện, và khi bạn từ một đã phát hành, bạn sẽ kế thừa nó đã được điều chỉnh bởi những người có đủ năng lực tính toán để thực hiện đúng cách. Bài báo của pi0 thẳng thắn về tỷ lệ: 9.1 phần trăm hỗn hợp tiền huấn luyện của nó, tính theo bước thời gian, là dữ liệu mã nguồn mở bao gồm OXE, Bridge v2 và DROID. Con số đó là của pi0; hỗn hợp của mỗi nhà cung cấp khác nhau.

Dữ liệu đa thể hiện công khai trên dự án SO-100
Ưu điểm
  • Tiền đề thị giác và ngôn ngữ: bộ mã hóa đã nhìn thấy hàng ngàn nhà bếp và cốc và biết "khối màu đỏ" ám chỉ điều gì.
  • Một tiền đề về cấu trúc thao tác: tiếp cận, đóng, nâng, vận chuyển, thả, độc lập với thể hiện ngay cả khi các con số không.
  • Một tập dữ liệu tốt đã biết để kiểm tra. Nếu công việc của bạn không thể khớp quá 100 tập DROID, vấn đề là ở thiết lập của bạn.
  • Điểm tham chiếu: trên các miền tập dữ liệu quy mô nhỏ, RT-1-X đạt tỷ lệ thành công trung bình cao hơn 50 phần trăm so với phương pháp gốc hoặc RT-1, và RT-2-X đánh bại RT-2 khoảng 3 lần về các kỹ năng mới nổi.
Đánh đổi
  • Không có giám sát hành động khả dụng. Một mục tiêu Descartes 7 chiều không phải là một lệnh khớp 6 chiều.
  • Không có chuyển giao tư thế camera, và không có gì trong dữ liệu cho bạn biết các tư thế khác nhau.
  • Không có chuyển giao thời gian: nguồn 3, 5 và 15 khung hình/giây so với bộ ghi 30 khung hình/giây.
  • Không có chuyển giao kẹp. Một Robotiq 2F-85 và một hàm in 3D trên STS3215 khác nhau về lực, hành trình và động lực học.
  • Chỉ riêng quy mô là không đủ ngay cả đối với các tác giả của nó: trong các miền tập dữ liệu lớn, RT-1-X không vượt trội hơn RT-1 được huấn luyện chỉ trên tập dữ liệu đó.
  • Không giảm số lượng tập dữ liệu riêng của bạn cần.
Lớp của mô hìnhCó chuyển giao không?Tại sao
Vision encoderCó, mạnh mẽCác đối tượng và cảnh độc lập với thể hiện
Language groundingCác hướng dẫn là văn bản, không phải hình học
Cross-modal fusionChủ yếuChú ý đến đối tượng được đặt tên trong lời nhắc
Proprioception encoderKhôngKích thước đầu vào và ngữ nghĩa khớp khác nhau
Action headKhôngĐược huấn luyện trên không gian Descartes 7 chiều mà bạn không ở trong đó
Normalisation statisticsKhông, và nguy hiểmThống kê ngoại lai làm lệch mọi lệnh

Đây là lý do tại sao SmolVLA hoạt động khác biệt trên một cánh tay robot chi phí thấp. Bài báo của nó chọn 481 bộ dữ liệu cộng đồng từ Hugging Face, được lọc theo loại hình thể hiện, số lượng tập, chất lượng dữ liệu và độ phủ khung hình: 22.9K tập, 10.6M khung hình, được đánh giá trên các cánh tay robot SO-100 và SO-101 thực tế. Nhỏ và phù hợp sẽ tốt hơn lớn và không phù hợp. So sánh trên ACT so với SmolVLA.

Ba con đường đáng đi

Con đường A: tinh chỉnh từ một điểm kiểm tra đã hấp thụ dữ liệu

Hầu hết mọi người nên chọn con đường này. Bạn không bao giờ cần chạm vào DROID hoặc Open X-Embodiment: chọn một chính sách mà quá trình tiền huấn luyện của nó đã hấp thụ dữ liệu đa hình thể, ghi lại các tập của riêng bạn, sau đó tinh chỉnh.

Chính sáchTham sốSố tập tối thiểuĐịnh dạng tập dữ liệuCấp GPUSuy luậnĐiểm kiểm tra cơ sở
GR00T N1.7~3 B, ~40 M được huấn luyện tinh chỉnh50LeRobot v2.0 or v2.1A100 or H100 80 GB152 ms per stepnvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 or v2.1A100 or H100 80 GB165 msnvidia/GR00T-N1.5-3B
Pi0.5~3 B, kiến trúc PaliGemma50LeRobot v3.0A100 or H100 80 GB485 mslerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 or any 24 GB245 mslerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 or any 24 GB20 mskhông có, từ đầu

ACT là trường hợp ngoại lệ trung thực: không có mô hình cơ sở, vì vậy không có dữ liệu công khai nào tiếp cận được nó. Đây không tự động là một bất lợi, vì với 20 ms mỗi bước hành động, nó là một trong năm mô hình duy nhất có thể đóng một vòng lặp nhanh, như trang ACT đã nêu. Chọn theo tác vụ bằng cách sử dụng cả năm mô hình được so sánh, GR00T N1.7 so với Pi0.5, và 332 kết quả benchmark trên 85 mô hình trong đấu trường.

Đường dẫn B: sử dụng DROID làm thiết bị kiểm tra

Mẫu 100 tập là 2 GB tốt nhất bạn sẽ tải xuống tháng này, và không phải để huấn luyện. Đây là một tập dữ liệu mà bạn biết là chính xác. Chạy bộ chuyển đổi, bộ tải và một tác vụ GPU ngắn trên đó; bất cứ thứ gì thất bại đều là lỗi hạ tầng được tìm thấy khi chi phí còn thấp. NVIDIA cũng làm điều tương tự ở quy mô lớn: thẻ GR00T N1.7 liệt kê bốn biến thể đã được huấn luyện sau, cho Bridge và Fractal trong SimplerEnv, DROID và LIBERO.

Đường dẫn C: tự ghi lại, một cách có chủ đích

Ba mươi đến năm mươi nghe có vẻ nhỏ bé so với 76.000 cho đến khi bạn nhớ rằng của bạn là những tập duy nhất có cánh tay, camera và bàn của bạn. Với cài đặt mặc định của LeRobot, 50 tập là 100 phút thời gian thực. Xem , và .

Trang hướng dẫn ghi hình của AY-Robots hiển thị các bước để thu thập tập dữ liệu LeRobot từ một phiên điều khiển từ xa
Hướng dẫn ghi hình tại /learn/record-your-first-dataset: bước mà dữ liệu công khai không thể thay thế.

Hai cách để chuyển từ dữ liệu công khai sang một chính sách hoạt động

All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.

  1. 1
    Install LeRobot with the extras the scripts need

    The record and train entry points each declare their own extra.

    bash
    pip install 'lerobot[core_scripts]'   # lerobot-record
    pip install 'lerobot[training]'      # lerobot-train
    pip install gsutil tensorflow tensorflow-datasets
  2. 2
    Get a small, known-good slice

    100 DROID episodes, 2 GB.

    bash
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  3. 3
    Convert to LeRobot form

    Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.

    bash
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  4. 4
    Check the version against your trainer

    The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.

    bash
    python src/lerobot/scripts/convert_dataset_v21_to_v30.py \
        --repo-id=you/droid100_lerobot
  5. 5
    Record your own episodes

    Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.

    bash
    lerobot-record \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
      --teleop.type=so100_leader \
      --teleop.port=/dev/ttyACM1 \
      --dataset.repo_id=you/so100_pick_block \
      --dataset.num_episodes=50 \
      --dataset.single_task="Pick up the red block and put it in the bowl"
  6. 6
    Fine-tune on your data only

    Weights from public data, actions from your own. Do not mix the datasets.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=you/so100_pick_block \
      --policy.device=cuda \
      --batch_size=4 \
      --steps=20000
Where the time actually goes

Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.

Trang tải xuống ứng dụng máy tính để bàn AY-Robots, ứng dụng ghi lại các tập dữ liệu định dạng LeRobot từ một phiên điều khiển từ xa
Ứng dụng máy tính để bàn tại /download ghi trực tiếp các tập dữ liệu LeRobot từ một phiên điều khiển từ xa, bỏ qua bước chuyển đổi RLDS.

Chi phí của mỗi đường dẫn

Đường dẫnLưu trữThời gian người dùngChi phí GPUKhả năng nó di chuyển cánh tay của bạn
DROID đã chuyển đổi riêng392 GBngày chuyển đổi4 to 12 USDrất thấp, không gian hành động sai
DROID hợp nhất với các tập của bạncả haibị chặn bởi validate_all_metadatan/akhông có, nó không chạy
SmolVLA, 30 đến 50 tập riêngvài GB100 phút ghi hình1 to 3 USDcao
GR00T N1.7, 50 tập riêngvài GB100 phút ghi hình4 to 12 USDcao
ACT từ đầu, 50 tập riêngvài GB100 phút ghi hình1 to 3 USDcao, suy luận 20 ms
Mẫu DROID làm thiết bị kiểm tra2 GBmột buổi chiềumột lần chạy ngắncao, như xác thực

Điểm mấu chốt là sự bất đối xứng: con đường vay mượn nhiều dữ liệu nhất là đắt nhất và ít có khả năng di chuyển cánh tay của bạn nhất. Dưới hai giờ vận hành từ xa của riêng bạn tốt hơn một terabyte dữ liệu Franka của người khác. Chưa có cánh tay robot? /live phát trực tiếp một SO-100 vật lý mà không cần đăng ký. Sau đó, huấn luyện chính sách đầu tiên của bạn, và SmolVLA trên SO-100 để có hướng dẫn cụ thể.

Một kế hoạch mặc định hợp lý

Tải xuống mẫu DROID 2 GB và sử dụng nó để chứng minh quy trình của bạn. Bỏ qua 1.7 TB còn lại. Ghi lại 50 tập của một nhiệm vụ với camera cố định. Tinh chỉnh SmolVLA trước, vì với tối thiểu 30 tập trên thẻ 24 GB, đây là cách lặp lại rẻ nhất, sau đó thử GR00T N1.7 trên cùng dữ liệu. So sánh trên nhiệm vụ của bạn, không phải trên một điểm chuẩn.

Ghi lại các tập dữ liệu đã khớp với cánh tay robot của bạn

Ứng dụng máy tính để bàn ghi lại các tập dữ liệu định dạng LeRobot trực tiếp từ phiên vận hành từ xa: cánh tay phải, tốc độ khung hình phù hợp, không gian hành động phù hợp. Không chuyển đổi RLDS, không ánh xạ lại.

Tải ứng dụng máy tính để bàn
Tôi có thể huấn luyện một chính sách trên DROID và chạy nó trên SO-100 của mình không?

Không trực tiếp. Trong bản dựng LeRobot, các hành động của DROID là lệnh đầu cuối 7 chiều trên Franka Panda ở 15 khung hình/giây; trong RLDS thô, chúng là 6 vận tốc khớp cộng với vị trí kẹp. Một SO-100 yêu cầu 6 vị trí khớp tuyệt đối. Bạn sẽ cần một lớp động học ngược, và ngay cả khi đó, một cổ tay 5 bậc tự do cũng không thể tái tạo các tư thế 6 bậc tự do tùy ý.

Tôi có thể trộn các tập DROID hoặc Bridge với các tập SO-100 của riêng mình không?

Không. validate_all_metadata yêu cầu fps, robot_type và feature schema giống hệt nhau và sẽ báo lỗi ValueError khi có sự không khớp đầu tiên. Cả ba đều khác nhau: 15 hoặc 5 fps so với 30, franka hoặc widowx so với cánh tay của bạn, hình dạng hành động 7 so với 6. Việc viết lại metadata để vượt qua kiểm tra không khắc phục được ngữ nghĩa.

Vậy Open X-Embodiment có vô dụng đối với một cánh tay robot chi phí thấp không?

Không, nhưng giá trị của nó đến với bạn thông qua các trọng số được huấn luyện trước, không phải các tập. Các tập dữ liệu mã nguồn mở bao gồm OXE, Bridge v2 và DROID chiếm 9.1 phần trăm hỗn hợp huấn luyện trước của pi0, và NVIDIA cung cấp các biến thể GR00T N1.7 được huấn luyện sau trên Bridge, Fractal, DROID và LIBERO. Điều bạn không thể làm là thêm các tập đó vào bản ghi của riêng bạn.

Chính sách nào hưởng lợi nhiều nhất từ dữ liệu đa dạng công khai?

Pi0.5 và các mô hình GR00T mang nhiều huấn luyện trước đa dạng nhất, nhưng SmolVLA thường hoạt động tốt nhất trên cánh tay robot chi phí thấp: tập huấn luyện trước của nó là 481 tập dữ liệu cộng đồng, 22.9K tập và 10.6M khung hình, được đánh giá trên các cánh tay robot SO-100 và SO-101 thực tế. ACT thì ngược lại: không có mô hình cơ sở, 20 ms mỗi bước hành động.

Tôi thực sự cần bao nhiêu tập của riêng mình?

30 cho SmolVLA, 50 cho GR00T N1.7, GR00T N1.5, Pi0.5 và ACT. Với các cài đặt mặc định của LeRobot là 60 giây mỗi tập và 60 giây đặt lại, 50 tập là 100 phút thời gian thực. Dữ liệu đa dạng được mượn không làm giảm các con số đó.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started