
DROID, BridgeData V2 และ Open X-Embodiment แปลงเป็นการกระทำของปลายแขนหุ่นยนต์แบบ 7 มิติ บนแขนหุ่นยนต์ 6 และ 7 องศาอิสระ SO-100 ใช้ตำแหน่งข้อต่อ 6 ตำแหน่ง อะไรที่ถ่ายทอดได้ อะไรที่ถ่ายทอดไม่ได้ และควรทำอย่างไรแทน
สรุปโดยย่อ
- •LeRobot ที่สร้างขึ้นทั้งสามแบบใช้ข้อตกลงร่วมกัน: การกระทำของปลายแขนกลแบบ 7 มิติ [x, y, z, roll, pitch, yaw, gripper] และสถานะแบบ 8 มิติพร้อมช่องว่างสำหรับเติม SO-100 ใช้ตำแหน่งข้อต่อสัมบูรณ์หกตำแหน่ง
- •เวกเตอร์ 7 มิตินั้นเป็นผลผลิตของตัวแปลง: ฟิลด์การกระทำ RLDS ของ DROID เองคือความเร็วข้อต่อ 6 ตำแหน่งบวกกับตำแหน่งของกริปเปอร์ โดยมีมุมมองแบบคาร์ทีเซียนอยู่ใน action_dict
- •สี่ความถี่: DROID 15 fps, BridgeData V2 5 fps, ส่วนของ google_robot 3 fps, การบันทึกของ SO-100 ที่ 30 fps
- •คุณไม่สามารถรวมข้อมูลเหล่านี้กับข้อมูลของคุณเองได้ validate_all_metadata จะแจ้งข้อผิดพลาดเมื่อพบความแตกต่างแรกของ fps, robot_type หรือ features และทั้งสามสิ่งนี้ก็แตกต่างกัน
- •สิ่งที่ถ่ายโอนคือ pretrained weights ไม่ใช่ episodes ข้อมูลโอเพนซอร์สคิดเป็น 9.1 เปอร์เซ็นต์ของส่วนผสมการ pre-training ของ pi0
- •การใช้งานจริงที่ถูกที่สุดคืออุปกรณ์ทดสอบ: ตัวอย่าง DROID ขนาด 2 GB จำนวน 100 episode ที่ทราบว่าดีแล้ว ซึ่งพิสูจน์ว่าไปป์ไลน์ของคุณทำงานได้ก่อนที่คุณจะบันทึกข้อมูลตลอดสุดสัปดาห์
มีชุดข้อมูลสาธารณะขนาดหนึ่งล้านวิถีการเคลื่อนที่อยู่บน Google Cloud bucket และ SO-100 อยู่บนโต๊ะซึ่งมีราคาชิ้นส่วน 110 ถึง 150 EUR ทำไมข้อมูลแรกถึงสอนข้อมูลที่สองไม่ได้? มันทำได้บางส่วน แต่การถ่ายโอนแทบไม่เกิดขึ้นในจุดที่คนคาดหวัง และส่วนที่ดูเหมือนง่ายที่สุดกลับใช้งานไม่ได้เลย
ต่อไปนี้คือ: สิ่งที่อยู่ภายใน DROID, BridgeData V2 และ Open X-Embodiment ซึ่งแต่ละชุดข้อมูลจะปะทะกับแขนกล 5-DoF ราคาประหยัด และสิ่งที่ควรทำแทน ตัวเลขทุกตัวด้านล่างมาจากเอกสารวิจัย, การ์ดชุดข้อมูล หรือไฟล์ต้นฉบับที่เกี่ยวข้อง
สิ่งที่ชุดข้อมูลทั้งสามชุดมีอยู่จริง
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| หุ่นยนต์ | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, ~4,000 USD rig | 22 embodiments, 60 datasets, 34 labs |
| ขนาด | 76k trajectories, 350 hours | 60,096 trajectories | 1M+ trajectories, 527 skills |
| ความหลากหลาย | 564 scenes, 84 tasks, 50 collectors | 24 environments, 13 skills | 160,266 tasks, 21 institutions |
| องค์ประกอบ | ควบคุมทางไกลทั้งหมด | 50,365 teleoperated, 9,731 scripted | ต่อห้องปฏิบัติการต้นทาง |
| อัตราการควบคุม | 15 Hz | 5 Hz | varies, 3 fps upwards |
| กล้อง | 2 x ZED 2 exterior, 1 x ZED Mini wrist | สูงสุด 4 ตัว, ส่วนใหญ่ใช้เฉพาะตัวที่ติดตั้งอยู่กับที่ | ตามที่ห้องปฏิบัติการใช้งาน |
| ดาวน์โหลดไฟล์ดิบ | 1.7 TB RLDS, 8.7 TB raw stereo | JPEG archives | per-dataset TFDS buckets |
มีคนไม่กี่คนที่ยังคงดาวน์โหลด RLDS TFRecords ขนาด 1.7 TB องค์กรชุมชน IPEC-COMMUNITY ได้เผยแพร่ Open X-Embodiment ส่วนใหญ่ซ้ำในรูปแบบ LeRobot dataset พร้อมวิดีโอ AV1 ซึ่ง DROID มีขนาด 392 GB นี่คือเวอร์ชันที่คุณจะใช้งาน และ meta/info.json คือสิ่งที่คุณควรอ่านเป็นอันดับแรก
DROID
เป็นมาตรฐานที่สุดในสามตัวนี้ มีชุดอุปกรณ์เดียวในทุกที่: Franka Panda พร้อมกริปเปอร์ Robotiq 2F-85, กล้องสเตอริโอ ZED 2 ที่ปรับได้สองตัว และ ZED Mini ที่ข้อมือ, ควบคุมทางไกลด้วยคอนโทรลเลอร์ Meta Quest 2, บันทึกผ่าน Polymetis ที่ 15 Hz ทั้งในส่วนของข้อต่อและ ส่วนปลายแขน ภาษา. ป้ายกำกับภาษาถูกเพิ่มเข้ามาภายหลังผ่าน tasq.ai สูงสุดสามป้ายต่อ ตอน.
- 76k วิถีการเคลื่อนที่, 350 ชั่วโมง, 564 ฉาก, 84 งาน, 50 ผู้รวบรวมข้อมูลในสามทวีป
- ผลลัพธ์หลักคือการฝึกร่วม (co-training) ไม่ใช่การฝึกแบบเดี่ยว (standalone training): ชุดข้อมูลที่ผสม 50/50 กับการสาธิตในโดเมนเอาชนะวิธีที่ดีที่สุดถัดไปได้ถึง 22 เปอร์เซ็นต์ของความสำเร็จสัมบูรณ์ในการกระจายข้อมูล และ 17 เปอร์เซ็นต์นอกการกระจายข้อมูล
- IPEC-COMMUNITY/droid_lerobot: 92,233 ตอน, 27,044,326 เฟรม, franka, 15 fps, codebase_version v2.0, สตรีม AV1 สามรายการที่ 180x320, 392 GB.
- ตัวอย่างการดีบักขนาด 2 GB จำนวน 100 ตอนอยู่ที่ gs://gresearch/robotics/droid_100 เริ่มต้นจากตรงนั้นได้เลย
BridgeData V2
ใกล้เคียงกับการตั้งค่าสำหรับงานอดิเรกมากที่สุด: แขนหุ่นยนต์ WidowX 250 แบบ 6-DoF, 60,096 วิถีการเคลื่อนที่ใน 24 สภาพแวดล้อมและ 13 ทักษะที่ 5 Hz. โปรดสังเกตองค์ประกอบ: การสาธิตโดยผู้เชี่ยวชาญที่ควบคุมจากระยะไกล 50,365 รายการ บวกกับ 9,731 รายการจากนโยบายการหยิบและวางแบบสุ่มที่เขียนสคริปต์ไว้ ดังนั้นประมาณ 16 เปอร์เซ็นต์ไม่ใช่การสาธิตโดยมนุษย์ ซึ่งมีความสำคัญต่อ การเรียนรู้แบบเลียนแบบ คุณภาพ. การดาวน์โหลดปกติ, IPEC-COMMUNITY/bridge_orig_lerobot, รายงาน 53,192 ตอน และ 1,893,026 เฟรมที่ 5 fps, robot_type widowx: น้อยกว่า 60,096 ที่ระบุในเอกสาร ดังนั้นควรอ่านจำนวนจาก meta/info.json แทนที่จะอ้างอิงจากแหล่งใดแหล่งหนึ่ง
Open X-Embodiment
ไม่ใช่ชุดข้อมูลในความหมายเดียวกัน: ชุดข้อมูลหุ่นยนต์ที่มีอยู่ 60 ชุดจาก 34 ห้องปฏิบัติการถูกรวบรวมไว้ในคอลเลกชัน RLDS เดียว ครอบคลุม 22 รูปแบบการใช้งานและวิถีการเคลื่อนที่กว่าหนึ่งล้านครั้ง BridgeData V2 อยู่ภายในนั้นในชื่อ bridge_orig; ส่วน google_robot, fractal20220817_data, แปลงเป็น 87,212 ตอนที่ 3 เฟรมต่อวินาที
การรวบรวมข้อมูลนี้มีข้อควรระวังที่ระบุไว้อย่างชัดเจนในเอกสาร สำหรับการทดลอง RT-X ผู้เขียนแปลงแต่ละแหล่งข้อมูลเป็นการกระทำของปลายแขนกลแบบ 7-DoF แต่ไม่ได้จัดแนวเฟรมพิกัดระหว่างชุดข้อมูล และอนุญาตให้ค่าการกระทำเป็นตำแหน่งสัมบูรณ์หรือสัมพัทธ์ หรือความเร็ว ตามแผนการควบคุมดั้งเดิมของหุ่นยนต์แต่ละตัว ข้อสรุปของพวกเขา: เวกเตอร์การกระทำเดียวกันอาจทำให้เกิดการเคลื่อนไหวที่แตกต่างกันมากสำหรับหุ่นยนต์แต่ละตัว

ความไม่ตรงกัน ในสี่ส่วน
ความไม่ตรงกันของกายภาพมักถูกมองว่าเป็นปัญหาคลุมเครือเพียงปัญหาเดียว แต่แท้จริงแล้วมีสี่ประการ ซึ่งแต่ละประการล้มเหลวต่างกัน และสองประการไม่สามารถแก้ไขได้ด้วยการเขียนสคริปต์
1. องศาอิสระ
หุ่นยนต์ SO-100 มีข้อต่อแขนห้าข้อบวกกับกริปเปอร์ เมื่อนับเป็นมอเตอร์ จะเป็นแขน 6-DoF และเอกสาร SmolVLA ก็เรียกเช่นนั้น; เมื่อนับเป็นกลไกการวางตำแหน่ง จะเป็น 5-DoF และ LeRobot ก็เรียกเช่นนั้นใน docstring ของ inverse-kinematics ซึ่งอธิบาย IK แบบ soft-orientation บน SO-101 แบบ 5-DOF ที่ข้อมือติดตามการวางแนวเพียงบางส่วน หุ่นยนต์ Franka มีข้อต่อการวางตำแหน่งเจ็ดข้อ ช่องว่างนี้เป็นตัวกำหนดว่าท่าทางใดบ้างที่มีอยู่: แขน 5-DoF โดยทั่วไปไม่สามารถเข้าถึงตำแหน่งและการวางแนวที่กำหนดเองได้พร้อมกัน ดังนั้นตัวแก้ปัญหาจะส่งคืนตำแหน่งที่ใกล้ที่สุดเท่าที่จะทำได้ ซึ่งเป็นการเคลื่อนไหวที่แตกต่างจากที่สาธิตไว้ ข้อมูลพื้นฐาน: องศาอิสระ.
# 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ดังนั้น DROID checkpoint ที่สร้างสำเร็จรูปจึงไม่ใช่ทางลัด Physical Intelligence จัดส่ง pi05_droid ที่ gs://openpi-assets/checkpoints/pi05_droid และ README เดียวกันที่ยกย่องความครอบคลุมของมันก็เตือนว่า expert checkpoint เหล่านี้อาจไม่สามารถนำไปใช้กับระบบของคุณได้ สถานะของมันคือตัวเลขข้อต่อ Franka แปดตัว และคีย์รูปภาพของมันคือ exterior_image_1_left และ wrist_image_left ไม่มี flag ใดที่เปลี่ยนสิ่งนั้นให้เป็นคำสั่ง SO-100 แบบหกมอเตอร์ได้
2. สิ่งที่ action vector บอกจริงๆ
ลึกซึ้งกว่ามิติ ในการแปลง LeRobot ทั้งสามตัวระบุว่า gripper ควรไปที่ใดในพื้นที่ Cartesian SO-100 ระบุว่าเซอร์โวหกตัวควรไปที่ใด การแปลงต้องใช้ kinematic model และ solver ไม่ใช่การปรับรูปร่างใหม่
| คุณสมบัติ | OXE, DROID และ Bridge ในรูปแบบ LeRobot | SO-100 ใน LeRobot |
|---|---|---|
| Action vector | 7-D: x, y, z, roll, pitch, yaw, gripper | 6-D: หนึ่งตำแหน่งเป้าหมายต่อมอเตอร์ |
| State vector | 8-D, พร้อมช่อง pad (google_robot ใช้ quaternion) | 6-D, หนึ่งต่อมอเตอร์ |
| เฟรม | Cartesian, ไม่สอดคล้องกันในชุดข้อมูล | joint space, การปรับเทียบต่อแขน |
| สัมบูรณ์หรือสัมพัทธ์ | อย่างใดอย่างหนึ่ง, ตัดสินใจโดยห้องปฏิบัติการต้นทาง | ตำแหน่งเป้าหมายสัมบูรณ์ |
| หน่วย | ทำให้เป็นมาตรฐานต่อชุดข้อมูล, จากนั้นทำให้เป็นค่าไม่ต่อเนื่อง | องศาโดยค่าเริ่มต้น (use_degrees=True), มิฉะนั้น -100 ถึง 100 |
| ความล้มเหลวแบบเงียบ | ค่าเดลต้าที่อ่านเป็นค่าสัมบูรณ์ | แขนที่ไม่ได้ปรับเทียบ |
ไฟล์ README ของ openx2lerobot ได้บันทึกสถานะ 8 มิติและแอคชัน 7 มิติที่เป็นหนึ่งเดียวกันสำหรับทุกชุดข้อมูลที่แปลง ซึ่งเป็นที่มาของช่อง pad สคีมา RLDS ของ DROID เองนั้นแตกต่างกัน: action ระดับบนสุดของมันคือเวกเตอร์ 7 มิติของ ความเร็วข้อต่อ 6 ค่าบวกตำแหน่งกริปเปอร์ 1 ค่า โดยมี cartesian_position, cartesian_velocity, joint_position และ joint_velocity อยู่ภายใต้ action_dict openpi อ่านมุมมองในพื้นที่ข้อต่อ ส่วน LeRobot build จะให้มุมมองแบบคาร์ทีเซียนแก่คุณ ทั้งสองอย่างไม่ใช่ค่ามุมเซอร์โวสัมบูรณ์หกค่า
LeRobot มีส่วนที่ขาดหายไป: SO follower มีโปรเซสเซอร์จลนศาสตร์ที่มีขั้นตอน InverseKinematicsEEToJoints และ ForwardKinematicsJointsToEE คีย์ของมันคือ ee.x, ee.y, ee.z บวกกับเวกเตอร์การหมุน ee.wx, ee.wy, ee.wz และ ee.gripper_pos ดังนั้นแม้แต่การเข้ารหัสทิศทางก็ยังแตกต่างจาก roll-pitch-yaw ในไฟล์ ขั้นตอน IK ใช้ orientation_weight ซึ่งมีค่าเริ่มต้น 0.01 โดย docstring ระบุให้ตั้งค่าเป็น 0.0 สำหรับ IK เฉพาะตำแหน่งบนแขนกลที่ควบคุมได้ไม่เต็มที่ คุณสามารถสร้างสะพานเชื่อมได้ แต่ครึ่งหนึ่งของแอคชันที่ยืมมาซึ่งเกี่ยวข้องกับทิศทางจะยังคงเป็นการประมาณค่า
3. อัตราการควบคุม
DROID ทำงานที่ 15 Hz, BridgeData V2 ที่ 5 Hz, ส่วน google_robot ที่ 3 fps; ผู้เขียน pi0 อธิบายส่วนโอเพนซอร์สของส่วนผสมของพวกเขาว่าเป็นการควบคุมความถี่ต่ำระหว่าง 2 ถึง 10 Hz DatasetRecordConfig ของ LeRobot มีค่าเริ่มต้นเป็น fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50 ที่ฝึกด้วยข้อมูล 5 Hz เรียนรู้ว่าหนึ่งแอคชันครอบคลุม 200 ms หากเล่นซ้ำที่ 30 Hz แขนกลจะเคลื่อนที่ช้ามาก; หากสุ่มตัวอย่างใหม่แบบง่ายๆ คุณจะทำให้เฟรมที่กริปเปอร์ปิดเบลอ นอกจากนี้ยังทำงานได้ไม่ดีกับ : ส่วน 100 ขั้นตอนคือ 20 วินาทีที่ 5 Hz และ 3.3 วินาทีที่ 30 Hz
4. กล้อง
BridgeData V2 สุ่มตำแหน่งกล้องสองตำแหน่งทุกๆ 50 วิถี และหน้าโปรเจกต์ของมันระบุว่าข้อมูลส่วนใหญ่มีเพียงมุมมองคงที่อยู่แล้ว DROID ใช้ฐานยึด ZED 2 ที่ปรับได้พร้อมกับ ZED Mini ที่ข้อมือ คุณมีเว็บแคม USB สองตัวที่จัดตำแหน่งด้วยสายตา ตำแหน่งกล้องไม่ใช่ตัวแปรที่ก่อกวนสำหรับ ; มันเป็นส่วนสำคัญที่ตัวเข้ารหัสภาพใช้ และไม่มีอะไรในรูปแบบไฟล์ที่บอกคุณว่าตำแหน่งแตกต่างกัน
ส่วนประกอบต่างๆ เข้ากันได้ดีพอที่จะทำงานได้ ชุดข้อมูลโหลดขึ้น การฝึกเริ่มขึ้น ค่าความเสียหายลดลง จุดตรวจสอบปรากฏขึ้น ไม่มีข้อผิดพลาดใดๆ จากนั้นนโยบายก็ไม่ทำอะไรที่จดจำได้บนแขนหุ่นยนต์ และคุณใช้เวลาทั้งวันในการตามล่าหาข้อผิดพลาดในสคริปต์การฝึกของคุณ ไม่มีข้อผิดพลาด: โมเดลได้เรียนรู้การกระจายการกระทำแบบคาร์ทีเซียนสำหรับหุ่นยนต์ที่ไม่มีอยู่ในห้องของคุณ เริ่มต้นที่ ค่าความเสียหายลดลง แต่นโยบายไม่ทำอะไร ไม่ใช่ที่ไฮเปอร์พารามิเตอร์ของคุณ
จะเกิดอะไรขึ้นเมื่อคุณพยายามรวมข้อมูลอยู่ดี
แผนที่ชัดเจนคือการรวม: DROID หลายพันตอนบวกกับ 50 ตอนของคุณ LeRobot ปฏิเสธ และการปฏิเสธนั้นระบุสามสิ่งที่แตกต่างกัน
- 1ดึงตัวอย่าง 100 ตอน ไม่ใช่ 1.7 TB เต็ม
2 GB ก็เพียงพอที่จะเห็นโครงสร้างแล้ว
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2แปลง RLDS เป็นรูปแบบ LeRobot
openx2lerobot ห่อหุ้มการแปลงมาตรฐาน OXE และระบุประเภทหุ่นยนต์และความถี่ในการควบคุม README ระบุสิ่งนี้ไว้ใน convert.sh
bashgit 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อ่าน meta/info.json ก่อนสิ่งอื่นใด
ไฟล์นี้เป็นตัวตัดสินว่าส่วนที่เหลือของวันของคุณจะทำงานได้หรือไม่
bashpython -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ลองรวมและอ่านข้อผิดพลาด
merge โหลดทุกชุดข้อมูล จากนั้น validate_all_metadata จะตรวจสอบ fps, robot_type และ features เทียบกับรายการแรกในลิสต์ โดยจะแจ้งข้อผิดพลาดเมื่อพบความไม่ตรงกันครั้งแรก
bashlerobot-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.
ค่าอ้างอิงมาจากชุดข้อมูลใดก็ตามที่คุณระบุไว้เป็นอันดับแรก ซึ่งเป็นเหตุผลที่ข้อความบ่นเกี่ยวกับ 30 fps ของคุณแทนที่จะเป็น 15 fps ของ DROID แก้ไข fps แล้วคุณจะเจอการตรวจสอบ robot_type แก้ไขสิ่งนั้นแล้วคุณจะเจอการตรวจสอบ feature โดย 7 เทียบกับ 6 สำหรับ action ไม่มีลำดับใดผ่านไปได้ และการป้องกันเดียวกันนี้จะทำงานในเวลาบันทึกผ่าน sanity_check_dataset_robot_compatibility
ใน LeRobot main ปัจจุบัน so100_follower และ so101_follower ทั้งคู่ถูกลงทะเบียนบน SOFollowerRobotConfig ที่ใช้ร่วมกัน ดังนั้นสตริงจากการบันทึกจริงจึงไม่จำเป็นต้องเป็นสิ่งที่คุณคาดหวัง อ่านจาก meta/info.json ของคุณเอง และถือว่าการตรวจสอบที่คุณต้องปิดใช้งานเป็นการตรวจสอบที่กำลังบอกบางสิ่งบางอย่างแก่คุณ
แล้วอะไรที่ถ่ายทอดได้จริงบ้าง?
น้ำหนักโมเดล ไม่ใช่ตอนการเรียนรู้ นโยบายทั่วไปที่ทันสมัยทุกตัวได้ดูดซับบางส่วนของการเรียนรู้ล่วงหน้า และเมื่อคุณ จากที่เผยแพร่ออกมา คุณจะได้รับมรดกที่ได้รับการปรับปรุงแก้ไขแล้วโดยผู้ที่มีกำลังประมวลผลเพียงพอที่จะทำได้อย่างถูกต้อง เอกสารของ pi0 เปิดเผยสัดส่วนอย่างตรงไปตรงมา: 9.1 เปอร์เซ็นต์ของส่วนผสมการเรียนรู้ล่วงหน้า ซึ่งนับเป็นไทม์สเต็ป เป็นข้อมูลโอเพนซอร์ส รวมถึง OXE, Bridge v2 และ DROID ตัวเลขนี้เป็นของ pi0; ส่วนผสมของผู้จำหน่ายแต่ละรายจะแตกต่างกันไป
- ความรู้พื้นฐานด้านภาพและภาษา: ตัวเข้ารหัสได้เห็นห้องครัวและแก้วกาแฟนับพันใบ และรู้ว่า "บล็อกสีแดง" หมายถึงอะไร
- ความรู้พื้นฐานเกี่ยวกับโครงสร้างการจัดการ: เข้าใกล้, ปิด, ยก, ขนส่ง, ปล่อย, เป็นอิสระจากกายภาพแม้ว่าตัวเลขจะไม่ใช่ก็ตาม
- ชุดข้อมูลที่ทราบว่าดีสำหรับการทดสอบ หากงานของคุณไม่สามารถโอเวอร์ฟิต 100 DROID episodes ได้ ปัญหาคือการตั้งค่าของคุณ
- จุดอ้างอิง: ในโดเมนชุดข้อมูลขนาดเล็ก RT-1-X มีอัตราความสำเร็จเฉลี่ยสูงกว่าวิธีการดั้งเดิมหรือ RT-1 ถึง 50 เปอร์เซ็นต์ และ RT-2-X เอาชนะ RT-2 ได้ประมาณ 3 เท่าในทักษะที่เกิดขึ้นใหม่
- ไม่มีการกำกับดูแลการกระทำที่ใช้งานได้จริง เป้าหมายคาร์ทีเซียน 7 มิติ ไม่ใช่คำสั่งข้อต่อ 6 มิติ
- ไม่มีการถ่ายทอดท่าทางกล้อง และไม่มีสิ่งใดในข้อมูลที่บอกว่าท่าทางแตกต่างกัน
- ไม่มีการถ่ายทอดเวลา: แหล่งที่มา 3, 5 และ 15 fps เทียบกับเครื่องบันทึก 30 fps
- ไม่มีการถ่ายทอดตัวจับยึด Robotiq 2F-85 และก้ามหนีบที่พิมพ์บน STS3215 มีความแตกต่างกันในด้านแรง ระยะชัก และพลวัต
- ขนาดเพียงอย่างเดียวไม่เพียงพอแม้แต่สำหรับผู้เขียน: ในโดเมนชุดข้อมูลขนาดใหญ่ RT-1-X ไม่สามารถเอาชนะ RT-1 ที่ฝึกด้วยชุดข้อมูลนั้นเพียงอย่างเดียวได้
- ไม่มีการลดจำนวนตอนที่คุณต้องการเอง
| เลเยอร์ของโมเดล | ถ่ายทอดได้หรือไม่? | เหตุผล |
|---|---|---|
| Vision encoder | ใช่, อย่างมาก | วัตถุและฉากเป็นอิสระจากกายภาพ |
| Language grounding | ใช่ | คำสั่งเป็นข้อความ ไม่ใช่เรขาคณิต |
| Cross-modal fusion | ส่วนใหญ่ | ให้ความสนใจกับวัตถุที่ระบุในข้อความแจ้ง |
| Proprioception encoder | ไม่ | มิติอินพุตและความหมายของข้อต่อแตกต่างกัน |
| Action head | ไม่ | ฝึกบนพื้นที่คาร์ทีเซียน 7 มิติที่คุณไม่ได้อยู่ |
| Normalisation statistics | ไม่, และอันตราย | สถิติภายนอกทำให้ทุกคำสั่งคลาดเคลื่อน |
นี่คือเหตุผลว่าทำไม SmolVLA จึงทำงานแตกต่างกันบนแขนกลราคาประหยัด งานวิจัยของมันเลือกชุดข้อมูลชุมชน 481 ชุดจาก Hugging Face โดยกรองตามประเภทของตัวหุ่นยนต์ จำนวนตอน คุณภาพข้อมูล และความครอบคลุมของเฟรม: 22.9K ตอน, 10.6M เฟรม, ประเมินผลบนแขนกล SO-100 และ SO-101 จริง ขนาดเล็กและตรงกันดีกว่าขนาดใหญ่และไม่ตรงกัน เปรียบเทียบกับ ACT เทียบกับ SmolVLA.
สามเส้นทางที่น่าสนใจ
เส้นทาง A: ปรับแต่งจากจุดตรวจสอบที่ได้ดูดซับข้อมูลไปแล้ว
คนส่วนใหญ่ควรเลือกเส้นทางนี้ คุณไม่จำเป็นต้องยุ่งกับ DROID หรือ Open X-Embodiment: เลือกนโยบายที่การฝึกอบรมล่วงหน้าได้ดูดซับข้อมูลข้ามตัวหุ่นยนต์ไปแล้ว บันทึกตอนของคุณเอง แล้วปรับแต่ง
| นโยบาย | พารามิเตอร์ | จำนวนตอนขั้นต่ำ | รูปแบบชุดข้อมูล | ระดับ GPU | การอนุมาน | จุดตรวจสอบพื้นฐาน |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M ฝึกฝนในการปรับแต่งอย่างละเอียด | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 152 ms per step | nvidia/GR00T-N1.7-3B |
| GR00T N1.5 | ~3 B | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 165 ms | nvidia/GR00T-N1.5-3B |
| Pi0.5 | ~3 B, แกนหลัก PaliGemma | 50 | LeRobot v3.0 | A100 or H100 80 GB | 485 ms | lerobot/pi05_base |
| SmolVLA | ~450 M | 30 | LeRobot v3.0 | RTX 4090 or any 24 GB | 245 ms | lerobot/smolvla_base |
| ACT | ~80 M | 50 | LeRobot v3.0 | RTX 4090 or any 24 GB | 20 ms | ไม่มี, เริ่มต้นใหม่ทั้งหมด |
ACT เป็นกรณีพิเศษที่ตรงไปตรงมา: ไม่มีโมเดลพื้นฐาน ดังนั้นจึงไม่มีข้อมูลสาธารณะใดๆ เข้าถึงได้โดยตรง นี่ไม่ใช่ข้อเสียโดยอัตโนมัติ เนื่องจากที่ 20 มิลลิวินาทีต่อขั้นตอนการดำเนินการ มันเป็นเพียงหนึ่งในห้าโมเดลที่สามารถปิดลูปได้อย่างรวดเร็ว ดังที่ หน้า ACT ระบุไว้ เลือกตามงานโดยใช้ ทั้งห้าแบบเปรียบเทียบกัน, GR00T N1.7 เทียบกับ Pi0.5 และผลการทดสอบมาตรฐาน 332 รายการจาก 85 โมเดลใน อารีน่า.
เส้นทาง B: ใช้ DROID เป็นอุปกรณ์ทดสอบ
ตัวอย่าง 100 ตอนเป็นข้อมูล 2 GB ที่ดีที่สุดที่คุณจะดาวน์โหลดในเดือนนี้ และไม่ใช่สำหรับการฝึกอบรม มันคือชุดข้อมูลที่คุณรู้ว่าถูกต้อง รันตัวแปลง ตัวโหลด และงาน GPU สั้นๆ บนข้อมูลนี้ สิ่งใดก็ตามที่ล้มเหลวคือข้อผิดพลาดโครงสร้างพื้นฐานที่พบในขณะที่ยังแก้ไขได้ง่าย NVIDIA ทำเช่นเดียวกันในระดับใหญ่: การ์ด GR00T N1.7 ระบุรุ่นที่ผ่านการฝึกอบรมเพิ่มเติมสี่แบบ สำหรับ Bridge และ Fractal ใน SimplerEnv, DROID และ LIBERO.
เส้นทาง C: บันทึกข้อมูลของคุณเองอย่างตั้งใจ
สามสิบถึงห้าสิบ อาจดูน้อยเมื่อเทียบกับ 76,000 จนกว่าคุณจะจำได้ว่าข้อมูลของคุณเป็นชุดเดียวที่มีแขนกล กล้อง และโต๊ะของคุณ ตามค่าเริ่มต้นของ LeRobot, 50 ตอนใช้เวลาจริง 100 นาที ดู , และ .

สองวิธีในการเปลี่ยนจากข้อมูลสาธารณะไปสู่นโยบายที่ใช้งานได้จริง
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.
- 1Install LeRobot with the extras the scripts need
The record and train entry points each declare their own extra.
bashpip install 'lerobot[core_scripts]' # lerobot-record pip install 'lerobot[training]' # lerobot-train pip install gsutil tensorflow tensorflow-datasets - 2Get a small, known-good slice
100 DROID episodes, 2 GB.
bashgsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 3Convert to LeRobot form
Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.
bashpython openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 4Check 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.
bashpython src/lerobot/scripts/convert_dataset_v21_to_v30.py \ --repo-id=you/droid100_lerobot - 5Record your own episodes
Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.
bashlerobot-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" - 6Fine-tune on your data only
Weights from public data, actions from your own. Do not mix the datasets.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=you/so100_pick_block \ --policy.device=cuda \ --batch_size=4 \ --steps=20000
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.
The platform removes the GPU and pipeline plumbing. It does not remove the embodiment mismatch: point the trainer at a converted DROID dataset and you get a policy trained on Franka actions, exactly as you would locally.
- 1Pick a policy, not a dataset
The five trainable policies, with parameter counts, GPU tiers and latencies, are at /policies.
- 2Record with the desktop client
It writes LeRobot-format datasets, episodes, camera streams and joint states, straight out of a teleop session. No conversion step to get wrong.
- 3Or bring a dataset you already have
The training form accepts one from /directory, a Hugging Face repo id, or your own machine. A repo id means a converted OXE dataset will load, and the mismatch loads with it.
- 4Train on a rented GPU
The backend rents a card on a spot market by required VRAM. SmolVLA or ACT on 24 GB: 2 to 5 hours, about 1 to 3 USD. GR00T or Pi0.5 on A100 or H100: 3 to 6 hours, about 4 to 12 USD. See /pricing.
- 5Serve it back to the arm
/api/inference/pod auto-provisions a GPU pod serving the policy; the local client talks to that endpoint. Pods carry an idle watchdog and destroy themselves, so nothing keeps billing silently.
Inference has to sit next to the servos for fast tasks. The control loop is 20 to 485 ms per action step depending on the model, and public-internet round trips turn a working policy into a hesitant one. Remote inference is fine for slow pick-and-place, not fast reactive motion.
The platform helps with the boring parts: the right format for the right arm at the right frame rate, and no babysitting a spot instance. It helps with nothing else in this article.

ค่าใช้จ่ายของแต่ละเส้นทาง
| เส้นทาง | พื้นที่จัดเก็บ | เวลาที่ใช้โดยมนุษย์ | ค่าใช้จ่าย GPU | โอกาสที่แขนหุ่นยนต์จะเคลื่อนไหว |
|---|---|---|---|---|
| DROID ที่แปลงแล้ว (เดี่ยว) | 392 GB | วันในการแปลง | 4 to 12 USD | ต่ำมาก, พื้นที่การกระทำไม่ถูกต้อง |
| DROID ที่รวมกับตอนของคุณ | both | ถูกบล็อกโดย validate_all_metadata | n/a | ไม่มี, ไม่ทำงาน |
| SmolVLA, 30 ถึง 50 ตอนของคุณเอง | ไม่กี่ GB | บันทึก 100 นาที | 1 to 3 USD | สูง |
| GR00T N1.7, 50 ตอนของคุณเอง | ไม่กี่ GB | บันทึก 100 นาที | 4 to 12 USD | สูง |
| ACT จากศูนย์, 50 ตอนของคุณเอง | ไม่กี่ GB | บันทึก 100 นาที | 1 to 3 USD | สูง, การอนุมาน 20 มิลลิวินาที |
| ตัวอย่าง DROID สำหรับการทดสอบ | 2 GB | ช่วงบ่าย | การรันสั้นๆ หนึ่งครั้ง | สูง, เพื่อการตรวจสอบ |
ความไม่สมมาตรคือประเด็นสำคัญ: เส้นทางที่ยืมข้อมูลมากที่สุดคือเส้นทางที่แพงที่สุดและมีโอกาสน้อยที่สุดที่จะขยับแขนของคุณ การใช้เวลาไม่ถึงสองชั่วโมงในการทำ การควบคุมระยะไกล ดีกว่าข้อมูล Franka ของคนอื่นเป็นเทราไบต์ ยังไม่มีแขนหุ่นยนต์ใช่ไหม? /live สตรีม SO-100 จริงโดยไม่ต้องลงทะเบียน จากนั้น ฝึกนโยบายแรกของคุณ, และ SmolVLA บน SO-100 สำหรับคู่มือเฉพาะ
ดาวน์โหลดตัวอย่าง DROID ขนาด 2 GB และใช้เพื่อพิสูจน์ไปป์ไลน์ของคุณ ไม่ต้องสนใจข้อมูลส่วนที่เหลือ 1.7 TB บันทึก 50 ตอนของงานเดียวด้วยกล้องที่ติดตั้งอยู่กับที่ Fine-tune SmolVLA ก่อน เพราะด้วยจำนวนตอนขั้นต่ำ 30 ตอนบนการ์ด 24 GB ทำให้การทดลองซ้ำมีค่าใช้จ่ายถูกที่สุด จากนั้นลองใช้ GR00T N1.7 กับข้อมูลชุดเดียวกัน เปรียบเทียบกับงานของคุณเอง ไม่ใช่กับเกณฑ์มาตรฐาน
บันทึกชุดข้อมูลที่ตรงกับแขนกลของคุณ
ไคลเอนต์เดสก์ท็อปเขียนชุดข้อมูลรูปแบบ LeRobot ได้โดยตรงจากการควบคุมระยะไกล: แขนที่ถูกต้อง, อัตราเฟรมที่ถูกต้อง, พื้นที่การกระทำที่ถูกต้อง ไม่มีการแปลง RLDS ไม่มีการแมปใหม่
รับไคลเอนต์เดสก์ท็อปฉันสามารถฝึกนโยบายบน DROID และรันบน SO-100 ของฉันได้หรือไม่?▾
ไม่โดยตรง ใน LeRobot build การกระทำของ DROID คือคำสั่ง end-effector แบบ 7 มิติบน Franka Panda ที่ 15 fps; ใน RLDS ดั้งเดิม พวกมันคือความเร็วข้อต่อ 6 ค่าบวกกับตำแหน่งของกริปเปอร์ SO-100 ใช้ตำแหน่งข้อต่อสัมบูรณ์ 6 ค่า คุณจะต้องมีเลเยอร์ inverse-kinematics และแม้กระนั้น ข้อมือแบบ 5-DoF ก็ไม่สามารถสร้างท่าทาง 6-DoF แบบสุ่มได้
ฉันสามารถผสมตอนของ DROID หรือ Bridge กับตอน SO-100 ของฉันเองได้หรือไม่?▾
ไม่ได้ validate_all_metadata ต้องการ fps, robot_type และ feature schema ที่เหมือนกัน และจะส่ง ValueError เมื่อพบความไม่ตรงกันครั้งแรก ทั้งสามอย่างแตกต่างกัน: 15 หรือ 5 fps เทียบกับ 30, franka หรือ widowx เทียบกับแขนกลของคุณ, รูปแบบการกระทำ 7 เทียบกับ 6 การเขียน metadata ใหม่เพื่อให้ผ่านการตรวจสอบไม่ได้แก้ไขความหมาย
แล้ว Open X-Embodiment ไม่มีประโยชน์สำหรับแขนกลราคาประหยัดใช่หรือไม่?▾
ไม่ แต่คุณค่าของมันมาถึงคุณผ่านน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า ไม่ใช่ผ่านตอนต่างๆ ชุดข้อมูลโอเพนซอร์สรวมถึง OXE, Bridge v2 และ DROID คิดเป็น 9.1 เปอร์เซ็นต์ของส่วนผสมการฝึกอบรมล่วงหน้าของ pi0 และ NVIDIA จัดส่ง GR00T N1.7 รุ่นที่ผ่านการฝึกอบรมหลังการฝึกอบรมบน Bridge, Fractal, DROID และ LIBERO สิ่งที่คุณไม่สามารถทำได้คือการผนวกตอนเหล่านั้นเข้ากับการบันทึกของคุณเอง
นโยบายใดที่ได้รับประโยชน์สูงสุดจากข้อมูล cross-embodiment สาธารณะ?▾
Pi0.5 และโมเดล GR00T มีการฝึกอบรมล่วงหน้าแบบ cross-embodiment มากที่สุด แต่ SmolVLA มักจะทำงานได้ดีที่สุดบนแขนกลราคาประหยัด: ชุดการฝึกอบรมล่วงหน้าของมันคือชุดข้อมูลชุมชน 481 ชุด, 22.9K ตอน และ 10.6M เฟรม ซึ่งได้รับการประเมินบนแขนกล SO-100 และ SO-101 จริง ACT ตรงกันข้าม: ไม่มีโมเดลพื้นฐาน, 20 ms ต่อขั้นตอนการกระทำ
ฉันต้องการตอนของฉันเองกี่ตอนกันแน่?▾
30 สำหรับ SmolVLA, 50 สำหรับ GR00T N1.7, GR00T N1.5, Pi0.5 และ ACT ที่ค่าเริ่มต้นของ LeRobot ที่ 60 วินาทีต่อตอน และ 60 วินาทีในการรีเซ็ต, 50 ตอนคือ 100 นาทีของเวลาจริง ข้อมูล cross-embodiment ที่ยืมมาไม่ได้ลดจำนวนเหล่านั้นลง
Sources
- DROID: ชุดข้อมูลการควบคุมหุ่นยนต์ขนาดใหญ่ในสภาพแวดล้อมจริง
- เอกสาร DROID: ขนาดดาวน์โหลดและ RLDS episode schema
- BridgeData V2: ชุดข้อมูลสำหรับการเรียนรู้ของหุ่นยนต์ในขนาดใหญ่
- หน้าโครงการ BridgeData V2: องค์ประกอบและการครอบคลุมของกล้อง
- Open X-Embodiment: ชุดข้อมูลการเรียนรู้ของหุ่นยนต์และโมเดล RT-X
- หน้าโครงการ Open X-Embodiment
- google-deepmind/open_x_embodiment: รายการชุดข้อมูลและจุดตรวจสอบ RT-1-X
- any4lerobot: ตัวแปลง openx2lerobot และสถานะ 8 มิติ, การกระทำ 7 มิติแบบรวม
- IPEC-COMMUNITY/droid_lerobot: meta/info.json และขนาด repo
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: ส่วน google_robot ที่ 3 fps
- huggingface/lerobot: SO follower, ตัวประมวลผลจลนศาสตร์, การรวมและการบันทึกการกำหนดค่า
- openpi: อินพุตนโยบาย DROID และจุดตรวจสอบ pi05_droid
- pi0: โมเดลการไหลของวิสัยทัศน์-ภาษา-การกระทำสำหรับการควบคุมหุ่นยนต์ทั่วไป
- SmolVLA: โมเดลวิสัยทัศน์-ภาษา-การกระทำสำหรับหุ่นยนต์ที่เข้าถึงได้และมีประสิทธิภาพ
Sources
- DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset
- DROID docs: download sizes and the RLDS episode schema
- BridgeData V2: A Dataset for Robot Learning at Scale
- BridgeData V2 project page: composition and camera coverage
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- Open X-Embodiment project page
- google-deepmind/open_x_embodiment: dataset list and RT-1-X checkpoints
- any4lerobot: the openx2lerobot converter and its unified 8-D state, 7-D action
- IPEC-COMMUNITY/droid_lerobot: meta/info.json and repo size
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: the google_robot slice at 3 fps
- huggingface/lerobot: SO follower, kinematics processor, aggregate and record configs
- openpi: DROID policy inputs and the pi05_droid checkpoint
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started