
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 आर्मशी टक्कर देतो आणि त्याऐवजी काय करावे. खालील प्रत्येक संख्या संबंधित पेपर, डेटासेट कार्ड किंवा सोर्स फाइलमधून आली आहे.
तीन डेटासेटमध्ये प्रत्यक्षात काय आहे
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| रोबोट | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, ~4,000 USD rig | 22 embodiments, 60 datasets, 34 labs |
| प्रमाण | 76k trajectories, 350 hours | 60,096 trajectories | 1M+ trajectories, 527 skills |
| विविधता | 564 scenes, 84 tasks, 50 collectors | 24 environments, 13 skills | 160,266 tasks, 21 institutions |
| रचना | सर्व दूरनियंत्रित | 50,365 teleoperated, 9,731 scripted | प्रत्येक स्रोत प्रयोगशाळेनुसार |
| नियंत्रण दर | 15 Hz | 5 Hz | varies, 3 fps upwards |
| कॅमेरे | 2 x ZED 2 exterior, 1 x ZED Mini wrist | 4 पर्यंत, बहुतेक भागांमध्ये फक्त निश्चित एक | प्रयोगशाळेने जे वापरले ते |
| मूळ डाउनलोड | 1.7 TB RLDS, 8.7 TB raw stereo | JPEG archives | per-dataset TFDS buckets |
फार कमी लोक अजूनही 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 एंड-इफेक्टर ॲक्शनमध्ये रूपांतरित केले आहे, परंतु डेटासेटमधील समन्वय फ्रेम्स संरेखित केल्या नाहीत आणि प्रत्येक रोबोटच्या मूळ नियंत्रण योजनेनुसार ॲक्शन व्हॅल्यूजला निरपेक्ष किंवा सापेक्ष पोझिशन्स किंवा वेगांमध्ये राहण्याची परवानगी दिली आहे. त्यांचे निष्कर्ष: समान ॲक्शन वेक्टर वेगवेगळ्या रोबोट्ससाठी खूप भिन्न हालचाली निर्माण करू शकतो.

चार भागांमध्ये विसंगती
एम्बॉडिमंट मिसमॅचला सामान्यतः एक अस्पष्ट समस्या मानले जाते. ती चार प्रकारची आहे, ते वेगवेगळ्या प्रकारे अयशस्वी होतात आणि त्यापैकी दोन स्क्रिप्टिंगद्वारे दुरुस्त करता येत नाहीत.
1. स्वातंत्र्याच्या अंशांची संख्या
SO-100 ला पाच आर्म जॉइंट्स आणि एक ग्रिपर आहे. मोटर्स म्हणून मोजल्यास, तो 6-DoF आर्म आहे आणि SmolVLA पेपर त्याला असेच संबोधतो; पोझिशनिंग यंत्रणा म्हणून मोजल्यास, तो 5-DoF आहे, आणि LeRobot त्याला त्याच्या इन्व्हर्स-कायनेमॅटिक्स डॉकस्ट्रिंगमध्ये असेच संबोधतो, जे 5-DOF SO-101 वर सॉफ्ट-ओरिएंटेशन IK चे वर्णन करते जिथे मनगट केवळ अंशतः ओरिएंटेशन ट्रॅक करते. फ्रँकाला सात पोझिशनिंग जॉइंट्स आहेत. ही तफावत कोणत्या पोझेस अस्तित्वात आहेत हे ठरवते: 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 चेकपॉईंट हा काही सोपा मार्ग नाही. फिजिकल इंटेलिजन्स 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, gripper | 6-D: प्रति मोटर एक लक्ष्य स्थिती |
| स्टेट वेक्टर | 8-D, पॅड स्लॉटसह (google_robot क्वॉटरनियन वापरतो) | 6-D, प्रति मोटर एक |
| फ्रेम | कार्टेशियन, डेटासेटमध्ये असंरेखित | जॉइंट स्पेस, प्रति-आर्म कॅलिब्रेशन |
| निरपेक्ष किंवा सापेक्ष | दोन्हीपैकी एक, स्त्रोत लॅबद्वारे ठरवले जाते | निरपेक्ष लक्ष्य स्थिती |
| एकके | प्रति डेटासेट सामान्यीकृत, नंतर विच्छिन्न केलेले | डीफॉल्टनुसार अंश (use_degrees=True), अन्यथा -100 ते 100 |
| शांत अपयश | निरपेक्ष म्हणून वाचलेला डेल्टा | एक अनकॅलिब्रेटेड आर्म |
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संपूर्ण १.७ TB ऐवजी १००-एपिसोडचा नमुना खेचा
संरचना पाहण्यासाठी २ GB पुरेसे आहे.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2RLDS ला LeRobot स्वरूपात रूपांतरित करा
openx2lerobot OXE मानक परिवर्तनांना समाविष्ट करते आणि रोबोटचा प्रकार व नियंत्रण वारंवारता (control frequency) नोंदवते. README मध्ये हे convert.sh मध्ये नमूद केले आहे.
bashgit clone https://github.com/Tavish9/any4lerobot.git cd any4lerobot/openx2lerobot python openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 3इतर काहीही करण्यापूर्वी meta/info.json वाचा
तुमच्या दिवसाचे उर्वरित काम यशस्वी होईल की नाही हे ही फाइल ठरवते.
bashpython -c "import json;d=json.load(open('meta/info.json'));\ print(d['codebase_version'], d['robot_type'], d['fps']);\ print(d['features']['action']['shape'], d['features']['observation.state']['shape'])" - 4एकत्रीकरण (merge) करून पहा आणि त्रुटी वाचा
merge प्रत्येक डेटासेट लोड करते, त्यानंतर validate_all_metadata सूचीतील पहिल्या डेटासेटच्या तुलनेत fps, robot_type आणि वैशिष्ट्ये (features) तपासते, आणि पहिल्या विसंगतीवर त्रुटी दर्शवते.
bashlerobot-edit-dataset \ --new_repo_id you/mixed \ --operation.type merge \ --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']" # ValueError: Same fps is expected, but got fps=30 instead of 15.
संदर्भ मूल्ये तुम्ही प्रथम सूचीबद्ध केलेल्या डेटासेटमधून येतात, म्हणूनच संदेश DROID च्या १५ fps ऐवजी तुमच्या ३० fps बद्दल तक्रार करतो. fps दुरुस्त करा आणि तुम्हाला robot_type तपासणीचा सामना करावा लागेल; ते दुरुस्त करा आणि तुम्हाला वैशिष्ट्य तपासणीचा सामना करावा लागेल, कृतीसाठी (action) ७ विरुद्ध ६. कोणतीही क्रमवारी यशस्वी होत नाही, आणि sanity_check_dataset_robot_compatibility द्वारे रेकॉर्ड करताना तेच संरक्षण (guard) चालते.
सध्याच्या 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 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 फाइन-ट्यूनिंगमध्ये प्रशिक्षित | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 152 ms प्रति स्टेप | 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 | काहीही नाही, सुरुवातीपासून |
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 मिनिटांचा वॉल क्लॉक वेळ. पहा , आणि .

सार्वजनिक डेटामधून कार्यरत धोरणापर्यंत पोहोचण्याचे दोन मार्ग
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 | blocked by validate_all_metadata | n/a | काहीही नाही, ते चालत नाही |
| SmolVLA, 30 ते 50 स्वतःचे एपिसोड्स | काही GB | 100 मिनिटांचे रेकॉर्डिंग | 1 to 3 USD | उच्च |
| GR00T N1.7, 50 स्वतःचे एपिसोड्स | काही GB | 100 मिनिटांचे रेकॉर्डिंग | 4 to 12 USD | उच्च |
| ACT सुरुवातीपासून, 50 स्वतःचे एपिसोड्स | काही GB | 100 मिनिटांचे रेकॉर्डिंग | 1 to 3 USD | उच्च, 20 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
- 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