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 जॉइंट वेलोसिटी और एक ग्रिपर पोजीशन है, जिसमें कार्टेशियन व्यू 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 आर्म से टकराता है, और इसके बजाय क्या करना है। नीचे दिया गया हर नंबर उस पेपर, डेटासेट कार्ड या स्रोत फ़ाइल से आया है जिससे वह संबंधित है।

तीनों डेटासेट में वास्तव में क्या है

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
संरचनाall teleoperated50,365 teleoperated, 9,731 scriptedper source lab
नियंत्रण दर15 Hz5 Hzvaries, 3 fps upwards
कैमरे2 x ZED 2 exterior, 1 x ZED Mini wristup to 4, most episodes only the fixed onewhatever the lab used
कच्चा डाउनलोड1.7 TB RLDS, 8.7 TB raw stereoJPEG archivesper-dataset TFDS buckets
प्रवेश बिंदु LeRobot रूपांतरण है, न कि मूल बकेट

बहुत कम लोग अभी भी 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 एंड-इफेक्टर एक्शन में परिवर्तित किया, लेकिन डेटासेट में कोऑर्डिनेट फ़्रेमों को संरेखित नहीं किया, और प्रत्येक रोबोट की मूल नियंत्रण योजना के अनुसार एक्शन मानों को निरपेक्ष या सापेक्ष स्थिति या वेग होने की अनुमति दी। उनका निष्कर्ष है: एक ही एक्शन वेक्टर विभिन्न रोबोटों के लिए बहुत अलग गतियाँ उत्पन्न कर सकता है।

The AY-Robots dataset directory listing public LeRobot datasets with episode counts and task descriptions
The public dataset directory at /directory: datasets already in LeRobot form, already matching a supported arm.

चार भागों में विसंगति

एम्बॉडिमेट बेमेल को आमतौर पर एक अस्पष्ट समस्या माना जाता है। यह चार प्रकार का होता है, वे अलग-अलग तरीके से विफल होते हैं, और उनमें से दो को स्क्रिप्टिंग द्वारा ठीक नहीं किया जा सकता।

1. स्वतंत्रता की कोटियाँ

एक SO-100 में पाँच आर्म जॉइंट्स और एक ग्रिपर होता है। मोटर्स के रूप में गिनने पर यह एक 6-DoF आर्म है, और SmolVLA पेपर इसे यही कहता है; एक पोजिशनिंग मैकेनिज्म के रूप में गिनने पर यह 5-DoF है, और LeRobot इसे अपनी इनवर्स-काइनेमेटिक्स डॉकस्ट्रिंग में यही कहता है, जो 5-DOF SO-101 पर सॉफ्ट-ओरिएंटेशन IK का वर्णन करता है जहाँ कलाई केवल आंशिक रूप से ओरिएंटेशन को ट्रैक करती है। एक Franka में सात पोजिशनिंग जॉइंट्स होते हैं। यह अंतर तय करता है कि कौन सी पोज़ मौजूद हैं: एक 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 चेकपॉइंट कोई शॉर्टकट नहीं है। 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 और BridgeLeRobot में SO-100
एक्शन वेक्टर7-D: x, y, z, रोल, पिच, यॉ, ग्रिपर6-D: प्रति मोटर एक लक्ष्य स्थिति
स्टेट वेक्टर8-D, एक पैड स्लॉट के साथ (google_robot एक क्वाटरनियन का उपयोग करता है)6-D, प्रति मोटर एक
फ्रेमकार्टेशियन, डेटासेट में असंबद्धजॉइंट स्पेस, प्रति-आर्म कैलिब्रेशन
निरपेक्ष या सापेक्षकोई भी, स्रोत लैब द्वारा तय किया गयानिरपेक्ष लक्ष्य स्थितियाँ
इकाइयाँप्रति डेटासेट सामान्यीकृत, फिर असततडिफ़ॉल्ट रूप से डिग्री (use_degrees=True), अन्यथा -100 से 100
मौन विफलताएक डेल्टा को निरपेक्ष के रूप में पढ़ा गयाएक अंशांकित न किया गया आर्म
7-D कार्टेशियन वेक्टर कनवर्टर का कन्वेंशन है, DROID का नहीं

openx2lerobot README हर उस डेटासेट के लिए एक एकीकृत 8-डिम स्थिति और 7-डिम क्रिया को दस्तावेज़ित करता है जिसे वह परिवर्तित करता है, जहाँ से 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 एपिसोड और आपके 50 को एक साथ जोड़ा जाए। LeRobot मना कर देता है, और यह इनकार उन तीन चीज़ों का नाम बताता है जो भिन्न हैं।

  1. 1
    पूरे 1.7 TB के बजाय 100-एपिसोड का नमूना खींचें।

    संरचना देखने के लिए 2 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 मानक परिवर्तनों को समाहित करता है और रोबोट प्रकार तथा नियंत्रण आवृत्ति को एनोटेट करता है। 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
    मर्ज का प्रयास करें और त्रुटि पढ़ें।

    मर्ज हर डेटासेट को लोड करता है, फिर validate_all_metadata सूची में पहले के विरुद्ध fps, robot_type और सुविधाओं की जाँच करता है, पहले बेमेल पर त्रुटि उत्पन्न करता है।

    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 के 15 के बजाय आपके 30 fps के बारे में शिकायत करता है। fps को ठीक करें और आप robot_type जाँच पर पहुँचेंगे; उसे ठीक करें और आप फीचर जाँच पर पहुँचेंगे, एक्शन के लिए 6 के मुकाबले 7। कोई भी क्रम काम नहीं करता है, और वही गार्ड रिकॉर्ड समय पर sanity_check_dataset_robot_compatibility के माध्यम से चलता है।

जाँच को विफल करने के लिए 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 एफपीएस रिकॉर्डर के मुकाबले 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 फाइन-ट्यूनिंग में प्रशिक्षित50LeRobot 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, 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 msnone, 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 मिनट का वास्तविक समय है। देखें , और .

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.

AY-Robots डेस्कटॉप क्लाइंट डाउनलोड पेज, वह क्लाइंट जो टेलीऑपरेशन सत्र से LeRobot-फ़ॉर्मेट डेटासेट रिकॉर्ड करता है।
डेस्कटॉप क्लाइंट /download पर टेलीऑप सत्र से सीधे LeRobot डेटासेट लिखता है, RLDS रूपांतरण को दरकिनार करते हुए।

प्रत्येक पथ की लागत क्या है

पथस्टोरेजमानव समयGPU लागतआपके हाथ को हिलाने की संभावना
अकेले परिवर्तित DROID392 GBरूपांतरण के दिन4 to 12 USDबहुत कम, गलत एक्शन स्पेस
आपके एपिसोड के साथ DROID मर्ज किया गयाbothvalidate_all_metadata द्वारा अवरुद्धn/aकोई नहीं, यह नहीं चलता
SmolVLA, 30 से 50 अपने एपिसोडa few GB100 मिनट की रिकॉर्डिंग1 to 3 USDउच्च
GR00T N1.7, 50 अपने एपिसोडa few GB100 मिनट की रिकॉर्डिंग4 to 12 USDउच्च
शुरुआत से ACT, 50 अपने एपिसोडa few 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 और 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

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started