AY-Robots सार्वजनिक डेटासेट डिरेक्टरी SO-100 श्रेणीच्या आर्म्सवर रेकॉर्ड केलेले LeRobot डेटासेट दाखवत आहे
डेटासेटOpen X-EmbodimentDROIDSO-100LeRobot

SO-100 वर DROID, BridgeData V2 आणि Open X वापरणे

AY-Robots ResearchAugust 23, 202618 मिनिट वाचन

DROID, BridgeData V2 आणि Open X-Embodiment हे 6 आणि 7-DoF आर्म्सवरील 7-D एंड-इफेक्टर ॲक्शन्समध्ये रूपांतरित होतात. SO-100 हे 6 जॉइंट पोझिशन्स घेते. काय हस्तांतरित होते, काय होत नाही आणि त्याऐवजी काय करावे.

थोडक्यात

  • तिन्ही LeRobot बिल्ड्समध्ये एकच कन्व्हेन्शन आहे: एक 7-D एंड-इफेक्टर ॲक्शन [x, y, z, roll, pitch, yaw, gripper] आणि पॅड स्लॉटसह 8-D स्थिती. एक SO-100 सहा ॲब्सोल्यूट जॉइंट पोझिशन्स घेतो.
  • तो 7-D वेक्टर कन्व्हर्टरचा आर्टिफॅक्ट आहे: DROID चे स्वतःचे RLDS ॲक्शन फील्ड 6 जॉइंट व्हेलॉसिटी अधिक ग्रिपर पोझिशन आहे, ज्यामध्ये ॲक्शन_डिक्टमध्ये कार्टेशियन व्ह्यू आहे.
  • चार क्लॉक्स: DROID 15 fps, BridgeData V2 5 fps, google_robot स्लाइस 3 fps, SO-100 30 fps वर रेकॉर्डिंग.
  • तुम्ही त्यांना तुमच्या स्वतःच्या डेटासह विलीन करू शकत नाही. validate_all_metadata हे fps, robot_type किंवा वैशिष्ट्यांपैकी जे पहिले वेगळे असेल त्यावर एरर देते आणि हे तिन्ही वेगळे आहेत.
  • जे हस्तांतरित होते ते प्रीट्रेन्ड वेट्स आहेत, एपिसोड्स नाहीत. ओपन-सोर्स डेटा हा pi0 च्या प्री-ट्रेनिंग मिश्रणाचा 9.1 टक्के आहे.
  • त्यांचा सर्वात स्वस्त खरा वापर म्हणजे एक टेस्ट फिक्स्चर: एक ज्ञात-चांगला 2 GB, 100-एपिसोड DROID नमुना जो तुम्ही वीकेंडसाठी रेकॉर्ड करण्यापूर्वी तुमची पाइपलाइन सिद्ध करतो.

Google Cloud बकेटवर एक दशलक्ष-ट्रॅजेक्टरी सार्वजनिक डेटासेट आहे आणि एक SO-100 डेस्कवर आहे ज्याला भागांमध्ये 110 ते 150 EUR खर्च आला. पहिले दुसऱ्याला का शिकवू शकत नाही? ते अंशतः शिकवू शकते, परंतु अपेक्षित ठिकाणी जवळजवळ कोणतेही हस्तांतरण होत नाही आणि जो भाग सर्वात सोपा दिसतो तो अजिबात काम करत नाही.

पुढे काय आहे: आत काय आहे DROID, BridgeData V2 आणि Open X-Embodiment, जिथे प्रत्येक कमी किमतीच्या 5-DoF आर्मशी टक्कर देतो आणि त्याऐवजी काय करावे. खालील प्रत्येक संख्या संबंधित पेपर, डेटासेट कार्ड किंवा सोर्स फाइलमधून आली आहे.

तीन डेटासेटमध्ये प्रत्यक्षात काय आहे

DROIDBridgeData V2Open X-Embodiment
रोबोटFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD rig22 embodiments, 60 datasets, 34 labs
प्रमाण76k trajectories, 350 hours60,096 trajectories1M+ trajectories, 527 skills
विविधता564 scenes, 84 tasks, 50 collectors24 environments, 13 skills160,266 tasks, 21 institutions
रचनासर्व दूरनियंत्रित50,365 teleoperated, 9,731 scriptedप्रत्येक स्रोत प्रयोगशाळेनुसार
नियंत्रण दर15 Hz5 Hzvaries, 3 fps upwards
कॅमेरे2 x ZED 2 exterior, 1 x ZED Mini wrist4 पर्यंत, बहुतेक भागांमध्ये फक्त निश्चित एकप्रयोगशाळेने जे वापरले ते
मूळ डाउनलोड1.7 TB RLDS, 8.7 TB raw stereoJPEG archivesper-dataset TFDS buckets
प्रवेश बिंदू LeRobot रूपांतरण आहे, मूळ बकेट नाही

फार कमी लोक अजूनही 1.7 TB RLDS TFRecords डाउनलोड करतात. समुदाय संस्था IPEC-COMMUNITY ने Open X-Embodiment चा बहुतेक भाग LeRobot डेटासेट स्वरूपात AV1 व्हिडिओसह पुन्हा प्रकाशित केला आहे, जिथे DROID 392 GB वर येतो. तीच आवृत्ती आहे ज्यावर तुम्ही काम कराल, आणि तिचे meta/info.json हे प्रथम वाचायचे आहे.

DROID

तिघांपैकी सर्वात प्रमाणित. सर्वत्र एकच रिग: Robotiq 2F-85 ग्रिपरसह एक Franka Panda, दोन समायोज्य ZED 2 स्टिरिओ कॅमेरे आणि एक मनगट ZED Mini, Meta Quest 2 कंट्रोलरसह दूरनियंत्रित, Polymetis द्वारे 15 Hz वर जॉइंट आणि एंड-इफेक्टर स्पेसमध्ये. भाषेचे लेबल्स नंतर tasq.ai द्वारे आले, प्रति भाग.

  • 76k ट्रॅजेक्टरीज, 350 तास, 564 सीन्स, 84 टास्क, तीन खंडांमध्ये 50 कलेक्टर्स.
  • मुख्य निष्कर्ष सह-प्रशिक्षण आहे, स्वतंत्र प्रशिक्षण नाही: इन-डोमेन प्रात्यक्षिकांसह 50/50 मिसळलेल्या बॅचेसने वितरणात 22 टक्के आणि त्याबाहेर 17 टक्के निरपेक्ष यश मिळवून पुढील सर्वोत्तम पद्धतीला हरवले.
  • IPEC-COMMUNITY/droid_lerobot: 92,233 episodes, 27,044,326 frames, franka, 15 fps, codebase_version v2.0, three AV1 streams at 180x320, 392 GB.
  • 2 GB चा, 100-एपिसोडचा डीबगिंग नमुना gs://gresearch/robotics/droid_100 येथे आहे. तेथून सुरुवात करा.

ब्रिजडेटा V2

हॉबी सेटअपच्या सर्वात जवळ: एक WidowX 250 6-DoF आर्म, 24 वातावरणांमध्ये आणि 13 कौशल्यांमध्ये 5 Hz वर 60,096 ट्रॅजेक्टरीज. रचना लक्षात घ्या: 50,365 तज्ञ टेलिऑपरेटेड प्रात्यक्षिके अधिक 9,731 यादृच्छिक स्क्रिप्टेड पिक-अँड-प्लेस पॉलिसीमधून, त्यामुळे सुमारे 16 टक्के मानवी प्रात्यक्षिक नाही, जे महत्त्वाचे आहे अनुकरण शिक्षण गुणवत्तेसाठी. नेहमीचे डाउनलोड, IPEC-COMMUNITY/bridge_orig_lerobot, 5 fps वर 53,192 एपिसोड्स आणि 1,893,026 फ्रेम्स, robot_type widowx: पेपरमधील 60,096 पेक्षा कमी, त्यामुळे दोन्हीपैकी कोणताही उद्धृत करण्याऐवजी meta/info.json मधून संख्या वाचा.

ओपन एक्स-एम्बॉडमेंट

त्याच अर्थाने हा डेटासेट नाही: 34 लॅबमधील 60 विद्यमान रोबोट डेटासेट एका RLDS संकलनात एकत्र केले गेले आहेत, ज्यात 22 एम्बॉडीमेंट्स आणि दहा लाखांहून अधिक ट्रॅजेक्टरीज समाविष्ट आहेत. BridgeData V2 त्यात bridge_orig म्हणून समाविष्ट आहे; google_robot स्लाइस, fractal20220817_data, 3 fps वर 87,212 एपिसोडमध्ये रूपांतरित होते.

या एकत्रीकरणामध्ये एक चेतावणी आहे जी पेपरमध्ये स्पष्टपणे नमूद केली आहे. RT-X प्रयोगांसाठी लेखकांनी प्रत्येक स्त्रोताला 7-DoF एंड-इफेक्टर ॲक्शनमध्ये रूपांतरित केले आहे, परंतु डेटासेटमधील समन्वय फ्रेम्स संरेखित केल्या नाहीत आणि प्रत्येक रोबोटच्या मूळ नियंत्रण योजनेनुसार ॲक्शन व्हॅल्यूजला निरपेक्ष किंवा सापेक्ष पोझिशन्स किंवा वेगांमध्ये राहण्याची परवानगी दिली आहे. त्यांचे निष्कर्ष: समान ॲक्शन वेक्टर वेगवेगळ्या रोबोट्ससाठी खूप भिन्न हालचाली निर्माण करू शकतो.

AY-Robots डेटासेट डिरेक्टरी सार्वजनिक LeRobot डेटासेटची यादी एपिसोड संख्या आणि कार्य वर्णनांसह दर्शवित आहे
सार्वजनिक डेटासेट डिरेक्टरी /directory येथे: डेटासेट आधीच LeRobot स्वरूपात आहेत आणि समर्थित आर्मशी जुळणारे आहेत.

चार भागांमध्ये विसंगती

एम्बॉडिमंट मिसमॅचला सामान्यतः एक अस्पष्ट समस्या मानले जाते. ती चार प्रकारची आहे, ते वेगवेगळ्या प्रकारे अयशस्वी होतात आणि त्यापैकी दोन स्क्रिप्टिंगद्वारे दुरुस्त करता येत नाहीत.

1. स्वातंत्र्याच्या अंशांची संख्या

SO-100 ला पाच आर्म जॉइंट्स आणि एक ग्रिपर आहे. मोटर्स म्हणून मोजल्यास, तो 6-DoF आर्म आहे आणि SmolVLA पेपर त्याला असेच संबोधतो; पोझिशनिंग यंत्रणा म्हणून मोजल्यास, तो 5-DoF आहे, आणि LeRobot त्याला त्याच्या इन्व्हर्स-कायनेमॅटिक्स डॉकस्ट्रिंगमध्ये असेच संबोधतो, जे 5-DOF SO-101 वर सॉफ्ट-ओरिएंटेशन IK चे वर्णन करते जिथे मनगट केवळ अंशतः ओरिएंटेशन ट्रॅक करते. फ्रँकाला सात पोझिशनिंग जॉइंट्स आहेत. ही तफावत कोणत्या पोझेस अस्तित्वात आहेत हे ठरवते: 5-DoF आर्म सामान्यतः एकाच वेळी कोणतीही इच्छित स्थिती आणि ओरिएंटेशन गाठू शकत नाही, त्यामुळे सॉल्वर शक्य तितके जवळचे परिणाम देतो, जे दर्शविलेल्या गतीपेक्षा वेगळे असते. पार्श्वभूमी: .

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
डावीकडे: LeRobot चा SO फॉलोअर, src/lerobot/robots/so_follower/so_follower.py मधून. उजवीकडे: openpi चा DROID पॉलिसी इनपुट. सहा विरुद्ध आठ.

त्यामुळे तयार DROID चेकपॉईंट हा काही सोपा मार्ग नाही. फिजिकल इंटेलिजन्स pi05_droid ला gs://openpi-assets/checkpoints/pi05_droid येथे पाठवते, आणि त्याची व्याप्ती दर्शवणारे तेच README चेतावणी देते की हे तज्ञ चेकपॉईंट तुमच्या सेटअपला लागू होऊ शकत नाहीत. त्याची स्थिती आठ फ्रँका जॉइंट नंबर्स आहेत आणि त्याच्या इमेज कीज exterior_image_1_left आणि wrist_image_left आहेत. कोणताही फ्लॅग त्याला सहा-मोटर SO-100 कमांडमध्ये बदलत नाही.

2. ॲक्शन वेक्टर प्रत्यक्षात काय सांगतो

आयामांपेक्षा खोल. LeRobot रूपांतरणांमध्ये, तिन्ही सांगतात की ग्रिपर कार्टेशियन स्पेसमध्ये कुठे जायला पाहिजे. एक SO-100 सांगतो की सहा सर्व्हो कुठे जायला पाहिजेत. रूपांतरणासाठी कायनेटिक मॉडेल आणि सॉल्वरची आवश्यकता असते, रीशेपची नाही.

गुणधर्मLeRobot स्वरूपातील OXE, DROID आणि ब्रिजLeRobot मधील SO-100
ॲक्शन वेक्टर7-D: x, y, z, roll, pitch, yaw, gripper6-D: प्रति मोटर एक लक्ष्य स्थिती
स्टेट वेक्टर8-D, पॅड स्लॉटसह (google_robot क्वॉटरनियन वापरतो)6-D, प्रति मोटर एक
फ्रेमकार्टेशियन, डेटासेटमध्ये असंरेखितजॉइंट स्पेस, प्रति-आर्म कॅलिब्रेशन
निरपेक्ष किंवा सापेक्षदोन्हीपैकी एक, स्त्रोत लॅबद्वारे ठरवले जातेनिरपेक्ष लक्ष्य स्थिती
एककेप्रति डेटासेट सामान्यीकृत, नंतर विच्छिन्न केलेलेडीफॉल्टनुसार अंश (use_degrees=True), अन्यथा -100 ते 100
शांत अपयशनिरपेक्ष म्हणून वाचलेला डेल्टाएक अनकॅलिब्रेटेड आर्म
7-D कार्टेशियन वेक्टर हे कन्व्हर्टरचे कन्व्हेन्शन आहे, DROID चे नाही

openx2lerobot README प्रत्येक डेटासेटसाठी एक एकीकृत 8-dim स्थिती आणि 7-dim क्रिया दस्तऐवज करते, जेथे pad स्लॉट येतो. DROID ची स्वतःची RLDS स्कीमा वेगळी आहे: तिची टॉप-लेव्हल action ही 6 जॉइंट वेगांसह 1 ग्रिपर स्थिती चा 7-वेक्टर आहे, ज्यामध्ये action_dict अंतर्गत cartesian_position, cartesian_velocity, joint_position आणि joint_velocity आहेत. openpi जॉइंट-स्पेस व्ह्यू वाचते, LeRobot बिल्ड तुम्हाला कार्टेशियन व्ह्यू देते. यापैकी कोणतेही सहा ॲब्सोल्यूट सर्वो अँगल नाहीत.

LeRobot हरवलेला भाग पुरवते: SO फॉलोअरमध्ये InverseKinematicsEEToJoints आणि ForwardKinematicsJointsToEE स्टेप्ससह एक किनेमॅटिक्स प्रोसेसर आहे. त्याच्या कीज ee.x, ee.y, ee.z तसेच एक रोटेशन वेक्टर ee.wx, ee.wy, ee.wz आणि ee.gripper_pos आहेत, त्यामुळे ओरिएंटेशन एन्कोडिंग देखील फाइल्समधील रोल-पिच-यावपेक्षा वेगळे आहे. IK स्टेप एक orientation_weight घेते, डीफॉल्ट 0.01, ज्याच्या डॉकस्ट्रिंगमध्ये असे म्हटले आहे की अंडर-ॲक्टुएटेड आर्म्सवर केवळ पोझिशन-ओन्ली IK साठी 0.0 सेट करावे. तुम्ही ब्रिज तयार करू शकता, परंतु प्रत्येक उधार घेतलेल्या ॲक्शनचा ओरिएंटेशन अर्धा भाग अंदाजितच राहतो.

3. नियंत्रण दर

DROID 15 Hz आहे, BridgeData V2 5 Hz आहे, google_robot स्लाइस 3 fps आहे; pi0 चे लेखक त्यांच्या मिश्रणाचा ओपन-सोर्स भाग 2 ते 10 Hz दरम्यान कमी-फ्रिक्वेंसी नियंत्रण म्हणून वर्णन करतात. LeRobot च्या DatasetRecordConfig मध्ये डीफॉल्टनुसार fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50 आहेत. 5 Hz डेटावर प्रशिक्षित केलेल्या एका ने शिकले की एक ॲक्शन 200 ms कव्हर करते. ते 30 Hz वर पुन्हा प्ले केल्यास आर्म हळू सरकतो; निष्काळजीपणे रीसॅम्पल केल्यास ग्रिपर बंद होणारी फ्रेम खराब होते. हे सोबत देखील वाईट प्रकारे संवाद साधते: 100-स्टेपचा चंक 5 Hz वर 20 सेकंद असतो, 30 Hz वर 3.3 सेकंद असतो.

4. कॅमेरा

BridgeData V2 ने प्रत्येक 50 ट्रॅजेक्टरीजमध्ये दोन कॅमेरा पोझ यादृच्छिक केल्या, आणि त्याच्या प्रोजेक्ट पेजवर नमूद केले आहे की बहुतेक डेटा फक्त निश्चित दृश्यासह असतो. DROID ने ॲडजस्टेबल ZED 2 माउंट्स आणि मनगटावर ZED मिनी वापरले. तुमच्याकडे डोळ्यांनी पोझिशन केलेले दोन USB वेबकॅम आहेत. कॅमेरा पोझ हे त्रासदायक व्हेरिएबल नाही ; कारण व्हिज्युअल एन्कोडरने त्यावरच लक्ष केंद्रित केले होते, आणि फाइल फॉरमॅटमध्ये पोझ भिन्न आहेत असे काहीही सांगितले जात नाही.

एक दिवस वाया घालवणारा सापळा

सर्व घटक व्यवस्थित जुळतात आणि चालतात. डेटासेट लोड होतो, प्रशिक्षण सुरू होते, लॉस कमी होतो, चेकपॉइंट्स दिसतात, कोणतीही त्रुटी येत नाही. मग पॉलिसी हातावर काहीही ओळखण्यासारखे करत नाही आणि तुम्ही तुमच्या प्रशिक्षण स्क्रिप्टमधील बग शोधण्यात एक दिवस घालवता. कोणताही बग नाही: मॉडेलने तुमच्या खोलीत अस्तित्वात नसलेल्या रोबोटसाठी कार्टेशियन ॲक्शन डिस्ट्रिब्युशन शिकले आहे. तुमच्या हायपरपॅरामीटर्सपासून सुरुवात करण्याऐवजी लॉस कमी होतो, पॉलिसी काही करत नाही येथून सुरुवात करा.

तुम्ही डेटा विलीन करण्याचा प्रयत्न केल्यास काय होते

स्पष्ट योजना अशी आहे की काही हजार DROID एपिसोड्स आणि तुमचे ५० एपिसोड्स एकत्र जोडणे. LeRobot नकार देतो, आणि या नकारामागे तीन भिन्न गोष्टींची नावे आहेत.

  1. 1
    संपूर्ण १.७ TB ऐवजी १००-एपिसोडचा नमुना खेचा

    संरचना पाहण्यासाठी २ GB पुरेसे आहे.

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    RLDS ला LeRobot स्वरूपात रूपांतरित करा

    openx2lerobot OXE मानक परिवर्तनांना समाविष्ट करते आणि रोबोटचा प्रकार व नियंत्रण वारंवारता (control frequency) नोंदवते. README मध्ये हे 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
    इतर काहीही करण्यापूर्वी meta/info.json वाचा

    तुमच्या दिवसाचे उर्वरित काम यशस्वी होईल की नाही हे ही फाइल ठरवते.

    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
    एकत्रीकरण (merge) करून पहा आणि त्रुटी वाचा

    merge प्रत्येक डेटासेट लोड करते, त्यानंतर validate_all_metadata सूचीतील पहिल्या डेटासेटच्या तुलनेत fps, robot_type आणि वैशिष्ट्ये (features) तपासते, आणि पहिल्या विसंगतीवर त्रुटी दर्शवते.

    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.

संदर्भ मूल्ये तुम्ही प्रथम सूचीबद्ध केलेल्या डेटासेटमधून येतात, म्हणूनच संदेश DROID च्या १५ fps ऐवजी तुमच्या ३० fps बद्दल तक्रार करतो. fps दुरुस्त करा आणि तुम्हाला robot_type तपासणीचा सामना करावा लागेल; ते दुरुस्त करा आणि तुम्हाला वैशिष्ट्य तपासणीचा सामना करावा लागेल, कृतीसाठी (action) ७ विरुद्ध ६. कोणतीही क्रमवारी यशस्वी होत नाही, आणि sanity_check_dataset_robot_compatibility द्वारे रेकॉर्ड करताना तेच संरक्षण (guard) चालते.

तपासणी टाळण्यासाठी robot_type हार्डकोड करू नका

सध्याच्या LeRobot मुख्य आवृत्तीवर so100_follower आणि so101_follower दोन्ही एकाच सामायिक SOFollowerRobotConfig वर नोंदणीकृत आहेत, त्यामुळे वास्तविक रेकॉर्डिंगमधील स्ट्रिंग तुम्हाला अपेक्षित असलेलीच असेल असे नाही. ती तुमच्या स्वतःच्या meta/info.json मधून वाचा, आणि तुम्हाला अक्षम करावी लागलेली तपासणी म्हणजे तुम्हाला काहीतरी सांगणारी तपासणी होती असे समजा.

मग प्रत्यक्षात काय हस्तांतरित होते?

वजन, भाग नाही. प्रत्येक आधुनिक सामान्यवादी धोरणाने पूर्व-प्रशिक्षणात काही भाग शोषून घेतला आहे, आणि जेव्हा तुम्ही रिलीझ केलेल्या मधून वारसा मिळवता, तेव्हा ते योग्यरित्या करण्यासाठी आवश्यक संगणकीय शक्ती असलेल्या लोकांनी ते आधीच जुळवून घेतलेले असते. pi0 च्या पेपरमध्ये प्रमाणाबद्दल स्पष्टपणे सांगितले आहे: त्याच्या पूर्व-प्रशिक्षण मिश्रणाचा 9.1 टक्के भाग, टाइमस्टेप्समध्ये मोजला जातो, तो OXE, Bridge v2 आणि DROID सह ओपन-सोर्स डेटा आहे. ही आकडेवारी pi0 ची आहे; प्रत्येक विक्रेत्याचे मिश्रण वेगळे असते.

SO-100 प्रकल्पावरील सार्वजनिक क्रॉस-एम्बॉडमेंट डेटा
फायदे
  • व्हिज्युअल आणि भाषिक पूर्वज्ञान: एन्कोडरने हजारो स्वयंपाकघरे आणि मग पाहिले आहेत आणि "लाल ब्लॉक" कशाला संदर्भित करतो हे त्याला माहीत आहे.
  • मॅनिप्युलेशन संरचनेवरील पूर्वज्ञान: दृष्टिकोन, बंद करणे, उचलणे, वाहतूक करणे, सोडणे, संख्या भिन्न नसतानाही एम्बॉडमेंट-स्वतंत्र.
  • चाचणीसाठी एक ज्ञात-चांगला डेटासेट. जर तुमचे काम 100 DROID भागांवर ओव्हरफिट करू शकत नसेल, तर समस्या तुमच्या सेटअपमध्ये आहे.
  • संदर्भ बिंदू: लहान-स्केल डेटासेट डोमेनमध्ये RT-1-X ने मूळ पद्धत किंवा RT-1 पेक्षा 50 टक्के जास्त सरासरी यश दर गाठला, आणि RT-2-X ने उदयोन्मुख कौशल्यांवर RT-2 ला सुमारे 3 पट हरवले.
तडजोडी
  • वापरण्यायोग्य कृती पर्यवेक्षण नाही. 7-D कार्टेशियन लक्ष्य हे 6-D जॉइंट कमांड नाही.
  • कॅमेरा-पोज हस्तांतरण नाही, आणि डेटातील कोणतीही गोष्ट तुम्हाला पोझेस भिन्न आहेत हे सांगत नाही.
  • वेळेचे हस्तांतरण नाही: 30 fps रेकॉर्डरच्या तुलनेत 3, 5 आणि 15 fps स्रोत.
  • ग्रिपर हस्तांतरण नाही. Robotiq 2F-85 आणि STS3215 वरील मुद्रित जबडा बल, स्ट्रोक आणि डायनॅमिक्समध्ये भिन्न आहेत.
  • केवळ स्केल पुरेसे नव्हते, अगदी त्याच्या लेखकांसाठीही: मोठ्या-डेटासेट डोमेनमध्ये RT-1-X ने केवळ त्या डेटासेटवर प्रशिक्षित RT-1 ला हरवले नाही.
  • तुम्हाला तुमच्या स्वतःच्या किती भागांची आवश्यकता आहे यात कोणतीही कपात नाही.
मॉडेलचा स्तरहस्तांतरित होते का?का
व्हिजन एन्कोडरहोय, जोरदारपणेवस्तू आणि दृश्ये एम्बॉडमेंट-स्वतंत्र आहेत
भाषा ग्राउंडिंगहोयसूचना मजकूर आहेत, भूमिती नाही
क्रॉस-मोडल फ्यूजनबहुतेकदाप्रॉम्प्टमध्ये नमूद केलेल्या वस्तूकडे लक्ष देते
प्रोप्रियोसेप्शन एन्कोडरनाहीइनपुट परिमाण आणि जॉइंट सिमेंटिक्स भिन्न आहेत
ॲक्शन हेडनाहीतुम्ही नसलेल्या 7-D कार्टेशियन स्पेसवर प्रशिक्षित
सामान्यीकरण आकडेवारीनाही, आणि धोकादायकपरदेशी आकडेवारी प्रत्येक कमांडला बदलते

यामुळेच SmolVLA कमी किमतीच्या आर्मवर वेगळ्या पद्धतीने कार्य करते. त्याच्या पेपरमध्ये Hugging Face मधून 481 समुदाय डेटासेट निवडले आहेत, जे एम्बॉडिमेट प्रकार, एपिसोड संख्या, डेटा गुणवत्ता आणि फ्रेम कव्हरेजनुसार फिल्टर केले आहेत: 22.9K एपिसोड्स, 10.6M फ्रेम्स, वास्तविक SO-100 आणि SO-101 आर्म्सवर मूल्यांकन केले. लहान आणि जुळणारे मोठे आणि न जुळणाऱ्यांपेक्षा चांगले कार्य करते. यावर तुलना करा ACT against SmolVLA.

घेण्यासारखे तीन मार्ग

मार्ग A: डेटा आधीच वापरलेल्या चेकपॉईंटमधून फाइन-ट्यून करा

बहुतेक लोकांनी हा मार्ग निवडायला हवा. तुम्ही DROID किंवा Open X-Embodiment ला कधीही स्पर्श करत नाही: अशी पॉलिसी निवडा ज्याच्या प्रीट्रेनिंगने आधीच क्रॉस-एम्बॉडिमेट डेटा शोषून घेतला आहे, तुमचे स्वतःचे एपिसोड्स रेकॉर्ड करा, फाइन-ट्यून करा.

पॉलिसीपॅरामीटर्सकिमान एपिसोड्सडेटासेट स्वरूपGPU श्रेणीइन्फरन्सबेस चेकपॉईंट
GR00T N1.7~3 B, ~40 M फाइन-ट्यूनिंगमध्ये प्रशिक्षित50LeRobot v2.0 or v2.1A100 or H100 80 GB152 ms प्रति स्टेपnvidia/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, PaliGemma backbone50LeRobot 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 msकाहीही नाही, सुरुवातीपासून

ACT हा एक प्रामाणिक अपवादात्मक केस आहे: कोणताही बेस मॉडेल नसल्यामुळे, सार्वजनिक डेटापैकी काहीही त्याच्यापर्यंत पोहोचत नाही. हा आपोआप तोटा नाही, कारण 20 ms प्रति ॲक्शन स्टेप वेळेत, पाचपैकी हा एकमेव आहे जो जलद लूप पूर्ण करू शकतो, जसे की ACT पेज मध्ये नमूद केले आहे. कार्य वापरून निवडा सर्व पाचची तुलना, GR00T N1.7 विरुद्ध Pi0.5, आणि 85 मॉडेल्समधील 332 बेंचमार्क परिणाम अरेना.

मार्ग B: DROID ला चाचणी फिक्स्चर म्हणून वापरा

100-एपिसोडचा नमुना हा या महिन्यात तुम्ही डाउनलोड कराल असा सर्वोत्तम 2 GB डेटा आहे, आणि तो प्रशिक्षणासाठी नाही. हा एक डेटासेट आहे जो तुम्हाला माहीत आहे की तो योग्य आहे. त्यावर तुमचा कनवर्टर, लोडर आणि एक लहान GPU जॉब चालवा; काहीही अयशस्वी झाल्यास ती एक इन्फ्रास्ट्रक्चर बग आहे जी कमी खर्चात सापडली. NVIDIA मोठ्या प्रमाणावर तेच करते: GR00T N1.7 कार्डमध्ये SimplerEnv मधील Bridge आणि Fractal, DROID आणि LIBERO साठी चार पोस्ट-प्रशिक्षित प्रकार सूचीबद्ध आहेत.

मार्ग C: तुमचे स्वतःचे, हेतुपुरस्सर रेकॉर्ड करा

तीस ते पन्नास 76,000 च्या तुलनेत कमी वाटतात, जोपर्यंत तुम्हाला आठवत नाही की तुमचेच आर्म, कॅमेरा आणि टेबल वापरले आहेत. LeRobot च्या डिफॉल्टनुसार, 50 एपिसोड्स म्हणजे 100 मिनिटांचा वॉल क्लॉक वेळ. पहा , आणि .

AY-Robots रेकॉर्डिंग ट्यूटोरियल पृष्ठ, जे टेलिऑपरेशन सत्रातून LeRobot डेटासेट कॅप्चर करण्याच्या पायऱ्या दर्शवते.
येथे रेकॉर्डिंग वॉकथ्रू /learn/record-your-first-dataset: सार्वजनिक डेटा बदलू शकत नाही अशी पायरी.

सार्वजनिक डेटामधून कार्यरत धोरणापर्यंत पोहोचण्याचे दोन मार्ग

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.

The AY-Robots desktop client download page, the client that records LeRobot-format datasets from a teleoperation session
The desktop client at /download writes LeRobot datasets directly from a teleop session, sidestepping RLDS conversion.

प्रत्येक मार्गाचा खर्च

मार्गस्टोरेजमानवी वेळGPU खर्चतुमचा हात हलवण्याची शक्यता
एकटा रूपांतरित DROID392 GBरूपांतरणाचे दिवस4 to 12 USDखूप कमी, चुकीची ॲक्शन स्पेस
तुमच्या एपिसोड्ससह विलीन केलेला DROIDbothblocked by validate_all_metadatan/aकाहीही नाही, ते चालत नाही
SmolVLA, 30 ते 50 स्वतःचे एपिसोड्सकाही GB100 मिनिटांचे रेकॉर्डिंग1 to 3 USDउच्च
GR00T N1.7, 50 स्वतःचे एपिसोड्सकाही GB100 मिनिटांचे रेकॉर्डिंग4 to 12 USDउच्च
ACT सुरुवातीपासून, 50 स्वतःचे एपिसोड्सकाही GB100 मिनिटांचे रेकॉर्डिंग1 to 3 USDउच्च, 20 ms इन्फरन्स
चाचणी फिक्स्चर म्हणून DROID नमुना2 GBएक दुपारone short runउच्च, प्रमाणीकरण म्हणून

विषमता हाच मुद्दा आहे: सर्वाधिक डेटा वापरणारा मार्ग सर्वात महागडा असतो आणि तुमचा हात हलवण्याची शक्यता कमी असते. तुमच्या स्वतःच्या दोन तासांपेक्षा कमी टेलिऑपरेशन इतरांच्या फ्रँकाचा एक टेराबाइट डेटापेक्षा अधिक प्रभावी ठरतो. अजून रोबोटिक आर्म नाही? /live कोणत्याही साइनअपशिवाय प्रत्यक्ष SO-100 चे थेट प्रक्षेपण करते. नंतर तुमची पहिली पॉलिसी प्रशिक्षित करा, आणि SO-100 वर SmolVLA विशिष्ट मार्गदर्शनासाठी.

एक वाजवी डीफॉल्ट योजना

2 GB DROID नमुना डाउनलोड करा आणि तुमच्या पाइपलाइनची चाचणी घेण्यासाठी त्याचा वापर करा. इतर 1.7 TB दुर्लक्षित करा. स्थिर कॅमेऱ्यांसह एका कार्याचे 50 एपिसोड रेकॉर्ड करा. प्रथम फाइन-ट्यून करा SmolVLA, कारण 24 GB कार्डवर किमान 30 एपिसोडसह त्यावर पुनरावृत्ती करणे सर्वात स्वस्त आहे, नंतर प्रयत्न करा GR00T N1.7 त्याच डेटावर. तुमच्या कार्यावर तुलना करा, बेंचमार्कवर नाही.

तुमच्या आर्मशी जुळणारे डेटासेट रेकॉर्ड करा

डेस्कटॉप क्लायंट टेलिओप सत्रातून थेट LeRobot-स्वरूपातील डेटासेट लिहितो: योग्य आर्म, योग्य फ्रेम दर, योग्य ॲक्शन स्पेस. RLDS रूपांतरण नाही, रीमॅपिंग नाही.

डेस्कटॉप क्लायंट मिळवा
मी DROID वर पॉलिसी प्रशिक्षित करून ती माझ्या SO-100 वर चालवू शकेन का?

थेट नाही. LeRobot बिल्डमध्ये DROID ॲक्शन्स 15 fps वर Franka Panda वरील 7-D एंड-इफेक्टर कमांड्स आहेत; कच्च्या RLDS मध्ये त्या 6 जॉइंट वेगांसह ग्रिपर पोझिशन आहेत. SO-100 6 ॲब्सोल्यूट जॉइंट पोझिशन्स घेतो. तुम्हाला इन्व्हर्स-कायनेमॅटिक्स लेयरची आवश्यकता असेल, आणि तरीही 5-DoF मनगट कोणत्याही 6-DoF पोझेसची पुनरावृत्ती करू शकत नाही.

मी DROID किंवा Bridge एपिसोड्स माझ्या स्वतःच्या SO-100 एपिसोड्समध्ये मिसळू शकेन का?

नाही. validate_all_metadata ला समान fps, robot_type आणि फीचर स्कीमा आवश्यक आहे आणि पहिल्या विसंगतीवर ValueError वाढवते. तिन्ही भिन्न आहेत: 30 च्या तुलनेत 15 किंवा 5 fps, तुमच्या आर्मच्या तुलनेत franka किंवा widowx, 6 च्या तुलनेत 7 ॲक्शन शेप्स. तपासणी पास करण्यासाठी मेटाडेटा पुन्हा लिहिल्याने सिमेंटिक्स दुरुस्त होत नाही.

तर, कमी किमतीच्या आर्मसाठी Open X-Embodiment निरुपयोगी आहे का?

नाही, परंतु त्याचे मूल्य तुम्हाला प्रीट्रेन्ड वेट्सद्वारे मिळते, एपिसोड्सद्वारे नाही. OXE, Bridge v2 आणि DROID सह ओपन-सोर्स डेटासेट pi0 च्या प्री-ट्रेनिंग मिश्रणाचा 9.1 टक्के भाग आहेत आणि NVIDIA GR00T N1.7 व्हेरिएंट्स Bridge, Fractal, DROID आणि LIBERO वर पोस्ट-ट्रेन केलेले पाठवते. तुम्ही ते एपिसोड्स तुमच्या स्वतःच्या रेकॉर्डिंगमध्ये जोडू शकत नाही.

सार्वजनिक क्रॉस-एम्बॉडमेंट डेटाचा सर्वाधिक फायदा कोणत्या पॉलिसीला होतो?

Pi0.5 आणि GR00T मॉडेल्समध्ये सर्वाधिक क्रॉस-एम्बॉडमेंट प्रीट्रेनिंग असते, परंतु SmolVLA कमी किमतीच्या आर्मवर अनेकदा सर्वोत्तम कार्य करते: त्याचा प्रीट्रेनिंग सेट 481 समुदाय डेटासेट, 22.9K एपिसोड्स आणि 10.6M फ्रेम्स आहे, ज्याचे वास्तविक SO-100 आणि SO-101 आर्म्सवर मूल्यांकन केले जाते. ACT याच्या उलट आहे: कोणताही बेस मॉडेल नाही, प्रति ॲक्शन स्टेप 20 ms.

मला माझ्या स्वतःच्या किती एपिसोड्सची खरोखर गरज आहे?

SmolVLA साठी 30, GR00T N1.7, GR00T N1.5, Pi0.5 आणि ACT साठी 50. LeRobot च्या प्रति एपिसोड 60 s आणि 60 s रीसेटच्या डिफॉल्टनुसार, 50 एपिसोड्स म्हणजे 100 मिनिटांचा वॉल क्लॉक वेळ. उधार घेतलेला क्रॉस-एम्बॉडमेंट डेटा हे आकडे कमी करत नाही.

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started