
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 जॉइंट वेलोसिटी और एक ग्रिपर पोजीशन है, जिसमें कार्टेशियन व्यू action_dict में है।
- •चार क्लॉक: 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 आर्म से टकराता है, और इसके बजाय क्या करना है। नीचे दिया गया हर नंबर उस पेपर, डेटासेट कार्ड या स्रोत फ़ाइल से आया है जिससे वह संबंधित है।
तीनों डेटासेट में वास्तव में क्या है
| 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 |
| संरचना | all teleoperated | 50,365 teleoperated, 9,731 scripted | per source lab |
| नियंत्रण दर | 15 Hz | 5 Hz | varies, 3 fps upwards |
| कैमरे | 2 x ZED 2 exterior, 1 x ZED Mini wrist | up to 4, most episodes only the fixed one | whatever the lab used |
| कच्चा डाउनलोड | 1.7 TB RLDS, 8.7 TB raw stereo | JPEG archives | per-dataset TFDS buckets |
बहुत कम लोग अभी भी 1.7 TB RLDS TFRecords डाउनलोड करते हैं। समुदाय संगठन IPEC-COMMUNITY ने Open X-Embodiment के अधिकांश हिस्से को AV1 वीडियो के साथ LeRobot डेटासेट प्रारूप में पुनः प्रकाशित किया है, जहाँ 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 संग्राहक।
- मुख्य परिणाम सह-प्रशिक्षण है, न कि स्टैंडअलोन प्रशिक्षण: इन-डोमेन प्रदर्शनों के साथ 50/50 मिश्रित बैचों ने वितरण में 22 प्रतिशत पूर्ण सफलता और उससे बाहर 17 प्रतिशत से अगले सर्वश्रेष्ठ तरीके को हराया।
- IPEC-COMMUNITY/droid_lerobot: 92,233 एपिसोड, 27,044,326 फ्रेम, franka, 15 fps, codebase_version v2.0, 180x320 पर तीन AV1 स्ट्रीम, 392 GB।
- एक 2 GB, 100-एपिसोड का डीबगिंग नमूना gs://gresearch/robotics/droid_100 पर उपलब्ध है। वहीं से शुरू करें।
BridgeData V2
एक हॉबी सेटअप के सबसे करीब: एक WidowX 250 6-DoF आर्म, 24 वातावरणों और 13 कौशलों में 5 Hz पर 60,096 प्रक्षेपवक्र। संरचना पर ध्यान दें: 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
उसी अर्थ में कोई डेटासेट नहीं: 34 प्रयोगशालाओं से 60 मौजूदा रोबोट डेटासेट को एक RLDS संग्रह में एकत्रित किया गया है, जिसमें 22 एम्बॉडीमेंट और दस लाख से अधिक ट्रेजेक्टरीज़ शामिल हैं। BridgeData V2 इसके भीतर bridge_orig के रूप में मौजूद है; google_robot स्लाइस, fractal20220817_data, 3 fps पर 87,212 एपिसोड में परिवर्तित होता है।
इस एकत्रीकरण में एक चेतावनी है जिसे पेपर स्पष्ट रूप से बताता है। RT-X प्रयोगों के लिए, लेखकों ने प्रत्येक स्रोत को 7-DoF एंड-इफेक्टर एक्शन में परिवर्तित किया, लेकिन डेटासेट में कोऑर्डिनेट फ़्रेमों को संरेखित नहीं किया, और प्रत्येक रोबोट की मूल नियंत्रण योजना के अनुसार एक्शन मानों को निरपेक्ष या सापेक्ष स्थिति या वेग होने की अनुमति दी। उनका निष्कर्ष है: एक ही एक्शन वेक्टर विभिन्न रोबोटों के लिए बहुत अलग गतियाँ उत्पन्न कर सकता है।

चार भागों में विसंगति
एम्बॉडिमेट बेमेल को आमतौर पर एक अस्पष्ट समस्या माना जाता है। यह चार प्रकार का होता है, वे अलग-अलग तरीके से विफल होते हैं, और उनमें से दो को स्क्रिप्टिंग द्वारा ठीक नहीं किया जा सकता।
1. स्वतंत्रता की कोटियाँ
एक SO-100 में पाँच आर्म जॉइंट्स और एक ग्रिपर होता है। मोटर्स के रूप में गिनने पर यह एक 6-DoF आर्म है, और SmolVLA पेपर इसे यही कहता है; एक पोजिशनिंग मैकेनिज्म के रूप में गिनने पर यह 5-DoF है, और LeRobot इसे अपनी इनवर्स-काइनेमेटिक्स डॉकस्ट्रिंग में यही कहता है, जो 5-DOF SO-101 पर सॉफ्ट-ओरिएंटेशन IK का वर्णन करता है जहाँ कलाई केवल आंशिक रूप से ओरिएंटेशन को ट्रैक करती है। एक 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 चेकपॉइंट कोई शॉर्टकट नहीं है। Physical Intelligence, pi05_droid को gs://openpi-assets/checkpoints/pi05_droid पर भेजता है, और वही README जो इसकी व्यापकता की प्रशंसा करता है, चेतावनी देता है कि ये विशेषज्ञ चेकपॉइंट आपके सेटअप के लिए सामान्यीकृत नहीं हो सकते हैं। इसकी स्थिति आठ Franka जॉइंट नंबर हैं और इसकी इमेज कीज़ exterior_image_1_left और wrist_image_left हैं। कोई भी फ़्लैग इसे छह-मोटर SO-100 कमांड में नहीं बदलता है।
2. एक्शन वेक्टर वास्तव में क्या कहता है
आयाम से भी गहरा। LeRobot रूपांतरणों में, तीनों बताते हैं कि ग्रिपर को कार्टेशियन स्पेस में कहाँ जाना चाहिए। एक SO-100 बताता है कि छह सर्वो को कहाँ जाना चाहिए। रूपांतरण के लिए एक किनेमेटिक मॉडल और एक सॉल्वर की आवश्यकता होती है, न कि केवल एक रीशेप की।
| गुणधर्म | LeRobot रूप में OXE, DROID और Bridge | LeRobot में SO-100 |
|---|---|---|
| एक्शन वेक्टर | 7-D: x, y, z, रोल, पिच, यॉ, ग्रिपर | 6-D: प्रति मोटर एक लक्ष्य स्थिति |
| स्टेट वेक्टर | 8-D, एक पैड स्लॉट के साथ (google_robot एक क्वाटरनियन का उपयोग करता है) | 6-D, प्रति मोटर एक |
| फ्रेम | कार्टेशियन, डेटासेट में असंबद्ध | जॉइंट स्पेस, प्रति-आर्म कैलिब्रेशन |
| निरपेक्ष या सापेक्ष | कोई भी, स्रोत लैब द्वारा तय किया गया | निरपेक्ष लक्ष्य स्थितियाँ |
| इकाइयाँ | प्रति डेटासेट सामान्यीकृत, फिर असतत | डिफ़ॉल्ट रूप से डिग्री (use_degrees=True), अन्यथा -100 से 100 |
| मौन विफलता | एक डेल्टा को निरपेक्ष के रूप में पढ़ा गया | एक अंशांकित न किया गया आर्म |
openx2lerobot README हर उस डेटासेट के लिए एक एकीकृत 8-डिम स्थिति और 7-डिम क्रिया को दस्तावेज़ित करता है जिसे वह परिवर्तित करता है, जहाँ से
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 एपिसोड और आपके 50 को एक साथ जोड़ा जाए। LeRobot मना कर देता है, और यह इनकार उन तीन चीज़ों का नाम बताता है जो भिन्न हैं।
- 1पूरे 1.7 TB के बजाय 100-एपिसोड का नमूना खींचें।
संरचना देखने के लिए 2 GB पर्याप्त है।
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2RLDS को 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मर्ज का प्रयास करें और त्रुटि पढ़ें।
मर्ज हर डेटासेट को लोड करता है, फिर validate_all_metadata सूची में पहले के विरुद्ध fps, robot_type और सुविधाओं की जाँच करता है, पहले बेमेल पर त्रुटि उत्पन्न करता है।
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.
संदर्भ मान उस डेटासेट से आते हैं जिसे आपने पहले सूचीबद्ध किया था, यही कारण है कि संदेश DROID के 15 के बजाय आपके 30 fps के बारे में शिकायत करता है। fps को ठीक करें और आप robot_type जाँच पर पहुँचेंगे; उसे ठीक करें और आप फीचर जाँच पर पहुँचेंगे, एक्शन के लिए 6 के मुकाबले 7। कोई भी क्रम काम नहीं करता है, और वही गार्ड रिकॉर्ड समय पर sanity_check_dataset_robot_compatibility के माध्यम से चलता है।
वर्तमान LeRobot मुख्य पर so100_follower और so101_follower दोनों एक साझा SOFollowerRobotConfig पर पंजीकृत हैं, इसलिए वास्तविक रिकॉर्डिंग से प्राप्त स्ट्रिंग वह नहीं हो सकती जिसकी आप अपेक्षा करते हैं। इसे अपनी meta/info.json से पढ़ें, और जिस जाँच को आपको अक्षम करना पड़ा, उसे एक ऐसी जाँच मानें जो आपको कुछ बता रही थी।
तो वास्तव में क्या स्थानांतरित होता है?
वजन (वेट्स), एपिसोड नहीं। हर आधुनिक सामान्यवादी नीति ने प्रीट्रेनिंग में इसका कुछ हिस्सा आत्मसात किया, और जब आप एक जारी किए गए से शुरू करते हैं, तो आप इसे उन लोगों द्वारा पहले से ही समायोजित पाते हैं जिनके पास इसे ठीक से करने के लिए कंप्यूट क्षमता थी। pi0 का पेपर अनुपात के बारे में स्पष्ट है: इसके प्री-ट्रेनिंग मिश्रण का 9.1 प्रतिशत, टाइमस्टेप्स में गिना गया, OXE, Bridge v2 और DROID सहित ओपन-सोर्स डेटा है। यह आंकड़ा pi0 का है; प्रत्येक विक्रेता का मिश्रण भिन्न होता है।
- दृश्य और भाषा के पूर्वज्ञान: एनकोडर ने हजारों रसोई और मग देखे हैं और जानता है कि "लाल ब्लॉक" का क्या अर्थ है।
- हेरफेर संरचना पर एक पूर्वज्ञान: पहुंचना, बंद करना, उठाना, परिवहन करना, छोड़ना, एम्बॉडमेंट-स्वतंत्र भले ही संख्याएं न हों।
- परीक्षण के लिए एक ज्ञात-अच्छा डेटासेट। यदि आपका कार्य 100 DROID एपिसोड को ओवरफिट नहीं कर सकता है, तो समस्या आपके सेटअप में है।
- संदर्भ बिंदु: छोटे पैमाने के डेटासेट डोमेन पर RT-1-X ने मूल विधि या RT-1 की तुलना में 50 प्रतिशत अधिक औसत सफलता दर हासिल की, और RT-2-X ने उभरते कौशल पर RT-2 को लगभग 3 गुना से हराया।
- कोई प्रयोग करने योग्य एक्शन सुपरविजन नहीं। एक 7-D कार्टेशियन लक्ष्य 6-D जॉइंट कमांड नहीं है।
- कोई कैमरा-पोज़ ट्रांसफर नहीं, और डेटा में कुछ भी आपको यह नहीं बताता कि पोज़ अलग हैं।
- कोई टाइमिंग ट्रांसफर नहीं: 30 एफपीएस रिकॉर्डर के मुकाबले 3, 5 और 15 एफपीएस स्रोत।
- कोई ग्रिपर ट्रांसफर नहीं। एक Robotiq 2F-85 और STS3215 पर एक मुद्रित जबड़ा बल, स्ट्रोक और गतिशीलता में भिन्न होते हैं।
- केवल स्केल ही इसके लेखकों के लिए भी पर्याप्त नहीं था: बड़े-डेटासेट डोमेन में RT-1-X ने अकेले उस डेटासेट पर प्रशिक्षित RT-1 को नहीं हराया।
- आपको अपने कितने एपिसोड की आवश्यकता है, इसमें कोई कमी नहीं।
| मॉडल की परत | स्थानांतरित होता है? | क्यों |
|---|---|---|
| विजन एनकोडर | हाँ, दृढ़ता से | वस्तुएं और दृश्य एम्बॉडमेंट-स्वतंत्र होते हैं |
| भाषा ग्राउंडिंग | हाँ | निर्देश टेक्स्ट होते हैं, ज्यामिति नहीं |
| क्रॉस-मॉडल फ्यूजन | ज्यादातर | प्रॉम्प्ट में नामित वस्तु पर ध्यान देता है |
| प्रोप्रियोसेप्शन एनकोडर | नहीं | इनपुट आयाम और जॉइंट सिमेंटिक्स भिन्न होते हैं |
| एक्शन हेड | नहीं | एक 7-D कार्टेशियन स्पेस पर प्रशिक्षित है जिसमें आप नहीं हैं |
| सामान्यीकरण सांख्यिकी | नहीं, और खतरनाक | विदेशी सांख्यिकी हर कमांड को बदल देती हैं |
यही कारण है कि SmolVLA एक कम लागत वाली भुजा पर अलग तरह से व्यवहार करता है। इसके पेपर में Hugging Face से 481 सामुदायिक डेटासेट चुने गए हैं, जिन्हें एम्बॉडीमेंट प्रकार, एपिसोड गणना, डेटा गुणवत्ता और फ्रेम कवरेज के आधार पर फ़िल्टर किया गया है: 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 backbone | 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 | none, from scratch |
ACT एक ईमानदार एज केस है: कोई बेस मॉडल नहीं है, इसलिए कोई भी सार्वजनिक डेटा कभी भी उस तक नहीं पहुँचता। यह स्वचालित रूप से कोई नुकसान नहीं है, क्योंकि 20 मिलीसेकंड प्रति एक्शन स्टेप पर यह उन पाँचों में से एकमात्र है जो एक तेज़ लूप को बंद कर सकता है, जैसा कि ACT पेज बताता है। कार्य के अनुसार चुनें, उपयोग करके सभी पाँचों की तुलना, GR00T N1.7 बनाम Pi0.5, और 85 मॉडलों में 332 बेंचमार्क परिणाम अखाड़ा में।
पथ B: DROID को एक परीक्षण फिक्स्चर के रूप में उपयोग करें
100-एपिसोड का नमूना इस महीने आप जो 2 GB डाउनलोड करेंगे, उसमें सबसे अच्छा है, और यह प्रशिक्षण के लिए नहीं है। यह एक ऐसा डेटासेट है जिसके सही होने की आपको जानकारी है। इस पर अपना कनवर्टर, लोडर और एक छोटा GPU कार्य चलाएँ; जो कुछ भी विफल होता है वह एक इंफ्रास्ट्रक्चर बग है जो तब मिला जब यह सस्ता था। NVIDIA बड़े पैमाने पर भी ऐसा ही करता है: GR00T N1.7 कार्ड में चार पोस्ट-प्रशिक्षित वेरिएंट सूचीबद्ध हैं, 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 अपने एपिसोड | a few GB | 100 मिनट की रिकॉर्डिंग | 1 to 3 USD | उच्च |
| GR00T N1.7, 50 अपने एपिसोड | a few GB | 100 मिनट की रिकॉर्डिंग | 4 to 12 USD | उच्च |
| शुरुआत से ACT, 50 अपने एपिसोड | a few GB | 100 मिनट की रिकॉर्डिंग | 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 और feature schema की आवश्यकता होती है और पहले बेमेल पर 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
- DROID: एक बड़े पैमाने पर इन-द-वाइल्ड रोबोट मैनिपुलेशन डेटासेट
- DROID डॉक्स: डाउनलोड आकार और RLDS एपिसोड स्कीमा
- BridgeData V2: बड़े पैमाने पर रोबोट सीखने के लिए एक डेटासेट
- BridgeData V2 प्रोजेक्ट पेज: संरचना और कैमरा कवरेज
- Open X-Embodiment: रोबोटिक लर्निंग डेटासेट और RT-X मॉडल
- Open X-Embodiment प्रोजेक्ट पेज
- google-deepmind/open_x_embodiment: डेटासेट सूची और RT-1-X चेकपॉइंट
- any4lerobot: openx2lerobot कनवर्टर और इसकी एकीकृत 8-D स्थिति, 7-D क्रिया
- IPEC-COMMUNITY/droid_lerobot: meta/info.json और रेपो आकार
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: 3 fps पर google_robot स्लाइस
- huggingface/lerobot: SO फॉलोअर, किनेमेटिक्स प्रोसेसर, एग्रीगेट और रिकॉर्ड कॉन्फिग्स
- 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