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 नमूना जसले तपाईंको पाइपलाइनलाई सप्ताहन्तमा रेकर्ड गर्नु अघि प्रमाणित गर्छ।

गुगल क्लाउड बकेटमा एक मिलियन-ट्र्याजेक्टरी सार्वजनिक डेटासेट छ र एउटा SO-100 डेस्कमा छ जसको पार्टपुर्जामा 110 देखि 150 EUR खर्च भयो। किन पहिलोले दोस्रोलाई सिकाउन सक्दैन? यसले आंशिक रूपमा सक्छ, तर लगभग कुनै पनि स्थानान्तरण मानिसहरूले अपेक्षा गरेको ठाउँमा हुँदैन, र सबैभन्दा सजिलो देखिने भागले बिल्कुल काम गर्दैन।

के पछ्याउँछ: भित्र के छ DROID, BridgeData V2Open X-Embodiment, जहाँ प्रत्येक कम लागतको 5-DoF आर्मसँग ठोक्किन्छ, र यसको सट्टा के गर्ने। तलका प्रत्येक संख्या यससँग सम्बन्धित पेपर, डेटासेट कार्ड वा स्रोत फाइलबाट आएको हो।

तीनवटा डेटासेटहरूमा वास्तवमा के समावेश छ

DROIDBridgeData V2Open X-Embodiment
रोबोटFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD rig22 एम्बोडिमेन्ट, 60 डेटासेट, 34 ल्याब
स्केल76k ट्र्याजेक्टोरी, 350 घण्टा60,096 ट्र्याजेक्टोरी1M+ ट्र्याजेक्टोरी, 527 सीप
विविधता564 दृश्य, 84 कार्य, 50 सङ्कलक24 वातावरण, 13 सीप160,266 कार्य, 21 संस्थाहरू
संरचनासबै टेलिअपरेटेड50,365 टेलिअपरेटेड, 9,731 स्क्रिप्टेडप्रत्येक स्रोत ल्याब अनुसार
नियन्त्रण दर15 Hz5 Hzफरक हुन्छ, 3 fps वा सोभन्दा माथि
क्यामेराहरू2 x ZED 2 बाहिरी, 1 x ZED Mini नाडी4 सम्म, धेरैजसो एपिसोडमा निश्चित क्यामेरा मात्रल्याबले जे प्रयोग गर्यो
कच्चा डाउनलोड1.7 TB RLDS, 8.7 TB कच्चा स्टेरियोJPEG अभिलेखहरूप्रति-डेटासेट TFDS बकेटहरू
प्रवेश बिन्दु LeRobot रूपान्तरण हो, मौलिक बकेट होइन

थोरै मानिसहरूले अझै पनि 1.7 TB RLDS TFRecords डाउनलोड गर्छन्। समुदाय संस्था IPEC-COMMUNITY ले Open X-Embodiment को धेरैजसो भाग LeRobot dataset ढाँचामा 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 trajectories, 350 hours, 564 scenes, 84 tasks, 50 collectors तीन महाद्वीपमा।
  • मुख्य नतिजा सह-प्रशिक्षण हो, एक्लो प्रशिक्षण होइन: इन-डोमेन प्रदर्शनहरूसँग 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 मा छ। त्यहाँबाट सुरु गर्नुहोस्।

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

एउटै अर्थमा डेटासेट होइन: ३४ प्रयोगशालाबाट ६० वटा अवस्थित रोबोट डेटासेटहरू २२ वटा एम्बोडिमेन्ट र दश लाखभन्दा बढी ट्र्याजेक्टोरीहरू समेट्दै एउटा RLDS संग्रहमा जम्मा गरियो। BridgeData V2 यसभित्र bridge_orig को रूपमा रहेको छ; google_robot स्लाइस, fractal20220817_data, ३ fps मा ८७,२१२ एपिसोडमा रूपान्तरण हुन्छ।

यस संकलनमा एउटा चेतावनी छ जुन पेपरले स्पष्ट रूपमा उल्लेख गरेको छ। RT-X प्रयोगहरूको लागि लेखकहरूले प्रत्येक स्रोतलाई ७-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.

बेमेल, चार भागमा

Embodiment mismatch लाई सामान्यतया एउटा अस्पष्ट समस्याको रूपमा लिइन्छ। यो चार प्रकारका हुन्छन्, तिनीहरू फरक-फरक तरिकाले असफल हुन्छन्, र दुईवटा स्क्रिप्टिङद्वारा समाधान गर्न सकिँदैन।

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 ले यी विशेषज्ञ चेकपोइन्टहरू तपाईंको सेटअपमा सामान्यीकरण नहुन सक्ने चेतावनी दिन्छ। यसको अवस्था आठ फ्रान्का जोइन्ट नम्बरहरू हुन् र यसको छवि कुञ्जीहरू exterior_image_1_left र wrist_image_left हुन्। कुनै पनि फ्ल्यागले त्यसलाई छ-मोटर SO-100 कमाण्डमा बदल्दैन।

२. कार्य भेक्टरले वास्तवमा के भन्छ

आयामिकता भन्दा गहिरो। LeRobot रूपान्तरणहरूमा, तीनवटैले ग्रिपर कार्टेसियन स्पेसमा कहाँ जानुपर्छ भनी बताउँछन्। एक SO-100 ले छ वटा सर्भो कहाँ जानुपर्छ भनी बताउँछ। रूपान्तरण गर्नका लागि किनेमेटिक मोडेल र सल्भर चाहिन्छ, रिसेप होइन।

गुणLeRobot फारममा OXE, DROID र BridgeLeRobot मा SO-100
कार्य भेक्टर7-D: x, y, z, roll, pitch, yaw, gripper6-D: प्रति मोटर एक लक्ष्य स्थिति
अवस्था भेक्टर8-D, प्याड स्लट सहित (google_robot ले क्वार्टर्नियन प्रयोग गर्दछ)6-D, प्रति मोटर एक
फ्रेमकार्टेसियन, डेटासेटहरूमा असंगतजोइन्ट स्पेस, प्रति-आर्म क्यालिब्रेसन
निरपेक्ष वा सापेक्षकुनै पनि, स्रोत प्रयोगशाला द्वारा निर्णय गरिएकोabsolute goal positions
एकाइहरूप्रति डेटासेट सामान्यीकृत, त्यसपछि विच्छेदीकृतपूर्वनिर्धारित रूपमा डिग्री (use_degrees=True), अन्यथा -100 देखि 100
मौन विफलतानिरपेक्ष रूपमा पढिएको डेल्टाएक अनक्यालिब्रेटेड आर्म
७-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 follower सँग 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 सेट गर्न भन्छ। तपाईं पुल निर्माण गर्न सक्नुहुन्छ, तर प्रत्येक उधारो कार्यको अभिमुखीकरण आधा अनुमानित नै रहन्छ।

३. नियन्त्रण दर

DROID १५ Hz छ, BridgeData V2 ५ Hz, google_robot स्लाइस ३ fps; pi0 का लेखकहरूले उनीहरूको मिश्रणको खुला-स्रोत भागलाई २ र १० Hz बीचको कम-फ्रिक्वेन्सी नियन्त्रणको रूपमा वर्णन गर्छन्। LeRobot को DatasetRecordConfig पूर्वनिर्धारित रूपमा fps ३०, episode_time_s ६०, reset_time_s ६०, num_episodes ५० मा सेट गरिएको छ। ५ Hz डेटामा प्रशिक्षित एउटा ले एउटा कार्यले २०० ms समेट्छ भनी सिक्यो। यसलाई ३० Hz मा रिप्ले गर्दा हात बिस्तारै चल्छ; यसलाई सामान्य रूपमा पुनः नमूना गर्दा ग्रिपर बन्द हुने फ्रेम धमिलो हुन्छ। यसले सँग पनि नराम्रोसँग अन्तरक्रिया गर्छ: १००-चरणको खण्ड ५ Hz मा २० सेकेन्ड हुन्छ, ३० Hz मा ३.३ सेकेन्ड।

4. क्यामेराहरू

BridgeData V2 ले प्रत्येक ५० ट्र्याजेक्टरीमा दुई क्यामेरा पोजहरू अनियमित गर्यो, र यसको परियोजना पृष्ठले धेरैजसो डेटाले निश्चित दृश्य मात्र बोक्छ भनेर नोट गर्छ। DROID ले समायोज्य ZED 2 माउन्टहरू र एउटा नाडी ZED Mini प्रयोग गर्यो। तपाईंसँग आँखाले राखिएका दुई USB वेबक्यामहरू छन्। क्यामेरा पोज एक उपद्रव चर होइन ; यो धेरैजसो भिजुअल एन्कोडरले कुञ्जी गरेको कुरा हो, र फाइल ढाँचामा केही पनि छैन जसले तपाईंलाई पोजहरू फरक छन् भनी बताउँछ।

एक दिन खाने जाल

टुक्राहरू चलाउनको लागि पर्याप्त राम्रोसँग मिल्छन्। डेटासेट लोड हुन्छ, प्रशिक्षण सुरु हुन्छ, हानि घट्छ, चेकपोइन्टहरू देखा पर्छन्, कुनै त्रुटि हुँदैन। त्यसपछि नीतिले हातमा केही चिन्न सकिने काम गर्दैन र तपाईं आफ्नो प्रशिक्षण स्क्रिप्टमा बग खोज्दै एक दिन बिताउनुहुन्छ। कुनै बग छैन: मोडेलले तपाईंको कोठामा नभएको रोबोटको लागि कार्टेसियन कार्य वितरण सिक्यो। हानि घट्छ, नीतिले केही गर्दैन बाट सुरु गर्नुहोस्, तपाईंको हाइपरप्यारामिटरहरूबाट होइन।

तपाईंले जे भए पनि डेटा मर्ज गर्ने प्रयास गर्दा के हुन्छ

स्पष्ट योजना भनेको केही हजार DROID एपिसोडहरू र तपाईंको ५० लाई जोड्नु हो। 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 को १५ को सट्टा तपाईंको ३० fps बारे गुनासो गर्छ। fps ठीक गर्नुहोस् र तपाईं robot_type जाँचमा पुग्नुहुन्छ; त्यो ठीक गर्नुहोस् र तपाईं सुविधा जाँचमा पुग्नुहुन्छ, कार्यका लागि ६ विरुद्ध ७। कुनै पनि क्रमबद्धता सफल हुँदैन, र sanity_check_dataset_robot_compatibility मार्फत रेकर्ड समयमा उही गार्ड चल्छ।

जाँचलाई हराउन robot_type लाई हार्डकोड नगर्नुहोस्

हालको LeRobot मुख्यमा so100_followerso101_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 trained in fine-tuning50LeRobot 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 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: आफ्नै, जानाजानी रेकर्ड गर्नुहोस्

तीस देखि पचास ७६,००० को तुलनामा सानो लाग्छ जबसम्म तपाईंलाई याद हुँदैन कि तपाईंका मात्र त्यस्ता हुन् जसमा तपाईंको पाखुरा, क्यामेरा र टेबल छन्। LeRobot को पूर्वनिर्धारित सेटिङहरूमा, ५० एपिसोडहरू १०० मिनेटको वास्तविक समय हो। हेर्नुहोस् , र .

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 लागतयसले तपाईंको पाखुरा चलाउने सम्भावना
रूपान्तरित DROID मात्र392 GBरूपान्तरणका दिनहरू4 to 12 USDधेरै कम, गलत कार्य स्थान
तपाईंको एपिसोडहरूसँग मर्ज गरिएको DROIDbothblocked by validate_all_metadatan/aकुनै छैन, यो चल्दैन
SmolVLA, 30 देखि 50 आफ्नै एपिसोडहरूa few GB100 min recording1 to 3 USDउच्च
GR00T N1.7, 50 आफ्नै एपिसोडहरूa few GB100 min recording4 to 12 USDउच्च
ACT स्क्र्याचबाट, 50 आफ्नै एपिसोडहरूa few GB100 min recording1 to 3 USDउच्च, 20 ms inference
परीक्षण फिक्स्चरको रूपमा 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 मा 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 ले Bridge, Fractal, DROID र LIBERO मा पोस्ट-तालिम प्राप्त GR00T N1.7 भेरियन्टहरू पठाउँछ। तपाईंले ती एपिसोडहरूलाई आफ्नो रेकर्डिङमा जोड्न सक्नुहुन्न।

सार्वजनिक क्रस-इम्बोडिमेन्ट डेटाबाट कुन नीतिले सबैभन्दा बढी फाइदा लिन्छ?

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