
DROID، BridgeData V2 و Open X-Embodiment به عملیاتهای 7-بعدی اند-افکتور روی بازوهای 6 و 7 درجه آزادی تبدیل میشوند. یک SO-100 شش موقعیت مفصلی را میپذیرد. چه چیزی منتقل میشود، چه چیزی نمیشود، و به جای آن چه باید کرد.
نسخه کوتاه
- •ساختارهای LeRobot هر سه یک قرارداد مشترک دارند: یک عملگر نهایی 7-بعدی [x, y, z, roll, pitch, yaw, gripper] و یک حالت 8-بعدی با یک شکاف پد. یک SO-100 شش موقعیت مفصلی مطلق را میگیرد.
- •آن بردار 7-بعدی مصنوع مبدل است: فیلد عمل RLDS خود DROID شامل 6 joint velocities plus a gripper position است، با نمای دکارتی در action_dict.
- •چهار ساعت: DROID 15 fps، BridgeData V2 5 fps، برش google_robot 3 fps، یک SO-100 در حال ضبط با 30 fps.
- •شما نمیتوانید آنها را با دادههای خود ادغام کنید. validate_all_metadata در اولین تفاوت در fps، robot_type یا features خطا میدهد، و هر سه متفاوت هستند.
- •آنچه منتقل میشود وزنهای از پیش آموزشدیده است، نه اپیزودها. دادههای متنباز 9.1 percent از ترکیب پیشآموزشی pi0 را تشکیل میدهند.
- •ارزانترین کاربرد واقعی آنها یک ابزار تست است: یک نمونه DROID 2 GB، 100-episode که عملکرد صحیح آن اثبات شده و خط لوله شما را قبل از ضبط برای یک آخر هفته تأیید میکند.
یک مجموعه داده عمومی با میلیونها مسیر در یک Google Cloud bucket و یک SO-100 روی میز وجود دارد که 110 to 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 تجهیزات | 22 پیادهسازی، 60 مجموعه داده، 34 آزمایشگاه |
| مقیاس | 76k مسیر، 350 ساعت | 60,096 مسیر | بیش از 1 میلیون مسیر، 527 مهارت |
| تنوع | 564 صحنه، 84 وظیفه، 50 گردآورنده | 24 محیط، 13 مهارت | 160,266 وظیفه، 21 مؤسسه |
| ترکیب | تماماً از راه دور کنترل شده | 50,365 از راه دور کنترل شده، 9,731 اسکریپت شده | به ازای هر آزمایشگاه منبع |
| نرخ کنترل | 15 Hz | 5 Hz | متغیر، 3 فریم بر ثانیه به بالا |
| دوربینها | 2 عدد ZED 2 خارجی، 1 عدد ZED Mini مچی | تا 4 عدد، اکثر اپیزودها فقط از دوربین ثابت | هر آنچه آزمایشگاه استفاده کرده است |
| دانلود خام | 1.7 TB RLDS, 8.7 TB استریو خام | JPEG آرشیوها | به ازای هر مجموعه داده TFDS باکتها |
تعداد کمی از افراد هنوز 1.7 ترابایت از RLDS TFRecords را دانلود میکنند. سازمان جامعه IPEC-COMMUNITY بیشتر Open X-Embodiment را در قالب مجموعه داده LeRobot با ویدیوی AV1 بازنشر کرده است، که در آن DROID به 392 GB میرسد. این نسخهای است که با آن کار خواهید کرد، و meta/info.json آن چیزی است که باید ابتدا بخوانید.
DROID
استانداردترین از بین این سه. یک تجهیزات در همه جا: یک Franka Panda با گریپر Robotiq 2F-85، دو دوربین استریو ZED 2 قابل تنظیم و یک ZED Mini مچی، که با کنترلرهای Meta Quest 2 از راه دور کنترل میشود، و از طریق Polymetis با فرکانس 15 Hz در هر دو فضای مفصلی و اند-افکتور فضا ضبط شده است. برچسبهای زبان بعداً از طریق tasq.ai اضافه شدند، تا سه برچسب برای هر اپیزود.
- 76 هزار مسیر، 350 ساعت، 564 صحنه، 84 وظیفه، 50 جمعآوریکننده در سه قاره.
- نتیجه اصلی، آموزش مشترک است، نه آموزش مستقل: دستههایی که 50/50 با نمایشهای دروندامنه ترکیب شدهاند، بهترین روش بعدی را با 22 درصد موفقیت مطلق در توزیع و 17 درصد خارج از آن شکست دادند.
- IPEC-COMMUNITY/droid_lerobot: 92,233 اپیزود، 27,044,326 فریم، فرانک، 15 فریم بر ثانیه، نسخه کد v2.0، سه جریان AV1 با ابعاد 180x320، 392 گیگابایت.
- یک نمونه اشکالزدایی 2 گیگابایتی و 100 اپیزودی در gs://gresearch/robotics/droid_100 قرار دارد. از آنجا شروع کنید.
BridgeData V2
نزدیکترین به یک راهاندازی سرگرمی: یک بازوی WidowX 250 با 6 درجه آزادی، 60,096 مسیر در 24 محیط و 13 مهارت با فرکانس 5 هرتز. به ترکیب توجه کنید: 50,365 نمایش تلهاپراتوری تخصصی به علاوه 9,731 از یک سیاست تصادفی اسکریپتشده برای برداشتن و قرار دادن، بنابراین حدود 16 درصد نمایش انسانی نیست، که برای یادگیری تقلیدی کیفیت اهمیت دارد. دانلود معمول، IPEC-COMMUNITY/bridge_orig_lerobot، 53,192 اپیزود و 1,893,026 فریم را با 5 فریم بر ثانیه گزارش میدهد، نوع ربات widowx: کمتر از 60,096 مورد مقاله، بنابراین تعداد را از meta/info.json بخوانید تا اینکه به هر یک از آنها استناد کنید.
Open X-Embodiment
نه یک مجموعه داده به همان معنا: 60 مجموعه داده ربات موجود از 34 آزمایشگاه در یک مجموعه RLDS گردآوری شدهاند که 22 تجسم و بیش از یک میلیون مسیر را پوشش میدهد. BridgeData V2 به عنوان bridge_orig در آن قرار دارد؛ برش google_robot، fractal20220817_data، به 87,212 اپیزود با سرعت 3 فریم بر ثانیه تبدیل میشود.
این گردآوری یک هشدار دارد که مقاله به صراحت بیان میکند. برای آزمایشهای RT-X، نویسندگان هر منبع را به یک عمل 7-DoF اند-افکتور تبدیل میکنند، اما فریمهای مختصات را در بین مجموعههای داده همتراز نمیکنند و اجازه میدهند مقادیر عمل، موقعیتهای مطلق یا نسبی یا سرعتها باشند، مطابق با طرح کنترل اصلی هر ربات. نتیجهگیری آنها: یک بردار عمل مشابه ممکن است حرکات بسیار متفاوتی را برای رباتهای مختلف ایجاد کند.

عدم تطابق، در چهار بخش
عدم تطابق تجسم معمولاً به عنوان یک مشکل مبهم در نظر گرفته میشود. این چهار مورد است، آنها به روشهای متفاوتی شکست میخورند، و دو مورد با اسکریپتنویسی قابل رفع نیستند.
۱. درجات آزادی
یک SO-100 دارای پنج مفصل بازو به علاوه یک گریپر است. اگر به عنوان موتور شمارش شود، یک بازوی 6-DoF است، و مقاله SmolVLA آن را اینگونه مینامد؛ اگر به عنوان یک مکانیزم موقعیتیابی شمارش شود، 5-DoF است، و LeRobot آن را در docstring سینماتیک معکوس خود اینگونه مینامد، که IK جهتگیری نرم را بر روی SO-101 5-DOF توصیف میکند که در آن مچ دست فقط تا حدی جهتگیری را ردیابی میکند. یک 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 checkpoint آماده، میانبر نیست. Physical Intelligence مدل pi05_droid را در gs://openpi-assets/checkpoints/pi05_droid ارائه میدهد و همان README که گستردگی آن را ستایش میکند، هشدار میدهد که این checkpointهای تخصصی ممکن است برای تنظیمات شما قابل تعمیم نباشند. وضعیت آن هشت عدد مفصل Franka است و کلیدهای تصویر آن exterior_image_1_left و wrist_image_left هستند. هیچ فِلَگی آن را به یک فرمان SO-100 شش موتوره تبدیل نمیکند.
۲. بردار عمل در واقع چه میگوید
عمیقتر از ابعاد. در تبدیلهای LeRobot، هر سه میگویند که گریپر باید به کجا برود، در فضای دکارتی. یک SO-100 میگوید که شش سروو باید به کجا بروند. تبدیل کردن به یک مدل کینماتیک و یک حلکننده نیاز دارد، نه یک تغییر شکل (reshape).
| ویژگی | OXE, DROID و Bridge در فرم LeRobot | SO-100 در LeRobot |
|---|---|---|
| بردار عمل | 7-D: x, y, z, roll, pitch, yaw, gripper | 6-D: یک موقعیت هدف برای هر موتور |
| بردار وضعیت | 8-D، با یک جایگاه پد (google_robot از یک کواترنیون استفاده میکند) | 6-D، یکی برای هر موتور |
| فریم | دکارتی، ناهمتراز در سراسر مجموعه دادهها | فضای مفصلی، کالیبراسیون به ازای هر بازو |
| مطلق یا نسبی | هر دو، توسط آزمایشگاه منبع تصمیمگیری میشود | موقعیتهای هدف مطلق |
| واحدها | نرمالسازی شده به ازای هر مجموعه داده، سپس گسستهسازی شده | درجه به طور پیشفرض (use_degrees=True)، در غیر این صورت -100 تا 100 |
| خطای خاموش | یک دلتا که به عنوان مطلق خوانده میشود | یک بازوی کالیبره نشده |
README openx2lerobot یک حالت یکپارچه 8-بعدی و یک عمل 7-بعدی را برای هر مجموعه دادهای که تبدیل میکند، مستند میکند، که اسلات pad از آنجا میآید. طرح RLDS خود DROID متفاوت است: action سطح بالای آن یک بردار 7-تایی از 6 سرعت مفصل به علاوه 1 موقعیت گریپر است، با cartesian_position، cartesian_velocity، joint_position و joint_velocity تحت action_dict. openpi نمای فضای مفصل را میخواند، ساخت LeRobot نمای کارتزین را به شما میدهد. هیچکدام شش زاویه مطلق سروو نیستند.
LeRobot قطعه گمشده را ارائه میدهد: دنبالکننده SO دارای یک پردازشگر کینماتیک با مراحل InverseKinematicsEEToJoints و ForwardKinematicsJointsToEE است. کلیدهای آن ee.x، ee.y، ee.z به علاوه یک بردار چرخش ee.wx، ee.wy، ee.wz و ee.gripper_pos هستند، بنابراین حتی کدگذاری جهتگیری نیز با roll-pitch-yaw در فایلها متفاوت است. مرحله IK یک orientation_weight میگیرد، پیشفرض 0.01، که docstring آن میگوید برای IK فقط موقعیت در بازوهای با تحریک ناکافی، آن را 0.0 تنظیم کنید. شما میتوانید پل را بسازید، اما نیمه جهتگیری هر عمل قرض گرفته شده تقریبی باقی میماند.
3. نرخ کنترل
DROID 15 هرتز، BridgeData V2 5 هرتز، برش google_robot 3 فریم بر ثانیه است؛ نویسندگان pi0 بخش متنباز ترکیب خود را به عنوان کنترل با فرکانس پایین بین 2 تا 10 هرتز توصیف میکنند. DatasetRecordConfig در LeRobot به طور پیشفرض fps 30، episode_time_s 60، reset_time_s 60، num_episodes 50 است. یک آموزشدیده بر روی دادههای 5 هرتز یاد گرفت که یک عمل 200 میلیثانیه را پوشش میدهد. آن را با 30 هرتز بازپخش کنید و بازو به آرامی حرکت میکند؛ به طور ساده بازنمونهبرداری کنید و فریمی که گریپر بسته میشود را تار میکنید. همچنین با به خوبی تعامل نمیکند: یک قطعه 100-مرحلهای در 5 هرتز 20 ثانیه و در 30 هرتز 3.3 ثانیه است.
4. دوربینها
BridgeData V2 هر ۵۰ مسیر، دو وضعیت دوربین را تصادفی کرد و صفحه پروژه آن اشاره میکند که بیشتر دادهها به هر حال فقط نمای ثابت را حمل میکنند. DROID از پایههای قابل تنظیم ZED 2 به همراه یک ZED Mini مچی استفاده کرد. شما دو وبکم USB دارید که با چشم قرار داده شدهاند. وضعیت دوربین یک متغیر مزاحم برای یک ؛ بلکه بخش زیادی از چیزی است که رمزگذار بصری بر آن تمرکز کرده و هیچ چیز در فرمت فایل به شما نمیگوید که وضعیتها متفاوت هستند.
قطعات به اندازه کافی خوب با هم جور میشوند تا اجرا شوند. مجموعه داده بارگذاری میشود، آموزش شروع میشود، خطا کاهش مییابد، نقاط بازرسی ظاهر میشوند، هیچ خطایی رخ نمیدهد. سپس سیاست هیچ کار قابل تشخیصی روی بازو انجام نمیدهد و شما یک روز را صرف یافتن اشکال در اسکریپت آموزشی خود میکنید. هیچ اشکالی وجود ندارد: مدل یک توزیع عمل کارتزین را برای رباتی یاد گرفته است که در اتاق شما وجود ندارد. از کاهش خطا، سیاست هیچ کاری نمیکند شروع کنید، نه از ابرپارامترهای خود.
چه اتفاقی میافتد وقتی به هر حال سعی میکنید دادهها را ادغام کنید
نقشه واضح این است که آنها را به هم متصل کنیم: چند هزار اپیزود DROID به علاوه ۵۰ اپیزود شما. LeRobot امتناع میکند و این امتناع سه تفاوت را نام میبرد.
- 1نمونه ۱۰۰ اپیزودی را دریافت کنید، نه ۱.۷ ترابایت کامل را
۲ گیگابایت برای مشاهده ساختار کافی است.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2تبدیل RLDS به فرم 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ادغام را امتحان کنید و خطا را بخوانید
merge هر مجموعه داده را بارگذاری میکند، سپس 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، از ۳۰ فریم بر ثانیه شما شکایت میکند. نرخ فریم را اصلاح کنید و به بررسی robot_type میرسید؛ آن را اصلاح کنید و به بررسی ویژگیها میرسید، ۷ در برابر ۶ برای عمل. هیچ ترتیبی از این بررسیها عبور نمیکند و همین محافظ در زمان ضبط از طریق 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 به نرخ موفقیت میانگین 50 درصد بالاتر از روش اصلی یا RT-1 دست یافت، و RT-2-X در مهارتهای نوظهور RT-2 را حدود 3 برابر شکست داد.
- عدم نظارت عملیاتی قابل استفاده. یک هدف کارتزین 7-بعدی، یک فرمان مفصلی 6-بعدی نیست.
- عدم انتقال وضعیت دوربین، و هیچ چیز در دادهها به شما نمیگوید که وضعیتها متفاوت هستند.
- عدم انتقال زمانبندی: منابع 3، 5 و 15 فریم بر ثانیه در مقابل یک ضبطکننده 30 فریم بر ثانیه.
- عدم انتقال گریپر. یک Robotiq 2F-85 و یک فک چاپشده روی STS3215 در نیرو، کورس و دینامیک متفاوت هستند.
- مقیاس به تنهایی حتی برای نویسندگان آن کافی نبود: در دامنههای مجموعه دادههای بزرگ، RT-1-X نتوانست RT-1 آموزشدیده فقط روی آن مجموعه داده را شکست دهد.
- عدم کاهش در تعداد اپیزودهای مورد نیاز شما.
| لایه مدل | منتقل میشود؟ | چرا |
|---|---|---|
| رمزگذار بینایی | بله، به شدت | اشیاء و صحنهها مستقل از کالبد هستند |
| تثبیت زبان | بله | دستورالعملها متن هستند، نه هندسه |
| ادغام بینمدالی | بیشتر | به شیء نامبرده شده در اعلان توجه میکند |
| رمزگذار حس عمقی | خیر | ابعاد ورودی و معناشناسی مفصلی متفاوت هستند |
| سر عمل | خیر | روی یک فضای کارتزین 7-بعدی آموزش دیده که شما در آن نیستید |
| آمارهای نرمالسازی | خیر، و خطرناک | آمارهای خارجی هر فرمان را تغییر میدهند |
به همین دلیل SmolVLA روی یک بازوی کمهزینه متفاوت عمل میکند. مقاله آن ۴۸۱ مجموعه داده جامعه را از Hugging Face انتخاب میکند که بر اساس نوع تجسم، تعداد اپیزود، کیفیت داده و پوشش فریم فیلتر شدهاند: ۲۲.۹ هزار اپیزود، ۱۰.۶ میلیون فریم، که روی بازوهای واقعی 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 میلیثانیه در هر گام | nvidia/GR00T-N1.7-3B |
| GR00T N1.5 | ~3 B | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 165 میلیثانیه | nvidia/GR00T-N1.5-3B |
| Pi0.5 | ~3 B, با ستون فقرات PaliGemma | 50 | LeRobot v3.0 | A100 or H100 80 GB | 485 میلیثانیه | lerobot/pi05_base |
| SmolVLA | ~450 M | 30 | LeRobot v3.0 | RTX 4090 or any 24 GB | 245 میلیثانیه | lerobot/smolvla_base |
| ACT | ~80 M | 50 | LeRobot v3.0 | RTX 4090 or any 24 GB | 20 میلیثانیه | none, from scratch |
ACT یک مورد خاص صادقانه است: بدون مدل پایه، بنابراین هیچ یک از دادههای عمومی هرگز به آن نمیرسد. این به طور خودکار یک نقطه ضعف نیست، زیرا با 20 میلیثانیه در هر گام عملیاتی، تنها یکی از این پنج مورد است که میتواند یک حلقه سریع را ببندد، همانطور که صفحه ACT توضیح میدهد. بر اساس وظیفه با استفاده از مقایسه هر پنج مورد، GR00T N1.7 در برابر Pi0.5، و 332 نتیجه بنچمارک در 85 مدل در آرنا انتخاب کنید.
مسیر B: استفاده از DROID به عنوان یک ابزار تست
نمونه 100-اپیزودی بهترین 2 GB است که این ماه دانلود خواهید کرد، و نه برای آموزش. این یک مجموعه داده است که میدانید صحیح است. مبدل، لودر و یک کار کوتاه GPU خود را روی آن اجرا کنید؛ هر چیزی که شکست بخورد یک باگ زیرساختی است که در زمانی که ارزان بود پیدا شده است. NVIDIA همین کار را در مقیاس انجام میدهد: کارت GR00T N1.7 چهار نوع پس از آموزش را برای Bridge و Fractal در SimplerEnv، DROID و LIBERO فهرست میکند.
مسیر C: دادههای خود را عمداً ضبط کنید
سی تا پنجاه در کنار ۷۶,۰۰۰ کم به نظر میرسد، تا زمانی که به یاد بیاورید دادههای شما تنها مواردی هستند که با بازو، دوربینها و میز شما مطابقت دارند. با تنظیمات پیشفرض LeRobot، پنجاه اپیزود معادل ۱۰۰ دقیقه زمان واقعی است. به ، و .

دو روش برای رسیدن از دادههای عمومی به یک سیاست عملیاتی
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 ادغام شده با اپیزودهای شما | هر دو | مسدود شده توسط validate_all_metadata | n/a | هیچ، اجرا نمیشود |
| SmolVLA، 30 تا 50 اپیزود شخصی | چند گیگابایت | 100 دقیقه ضبط | 1 to 3 USD | بالا |
| GR00T N1.7، 50 اپیزود شخصی | چند گیگابایت | 100 دقیقه ضبط | 4 to 12 USD | بالا |
| ACT از ابتدا، 50 اپیزود شخصی | چند گیگابایت | 100 دقیقه ضبط | 1 to 3 USD | بالا، 20 میلیثانیه استنتاج |
| نمونه DROID به عنوان ابزار تست | 2 GB | یک بعدازظهر | یک اجرای کوتاه | بالا، به عنوان اعتبارسنجی |
عدم تقارن نکته اصلی است: مسیری که بیشترین داده را قرض میگیرد، پرهزینهترین و کمترین احتمال را برای حرکت بازوی شما دارد. کمتر از دو ساعت از تلهاپریشن شما یک ترابایت از فرانکای شخص دیگری را شکست میدهد. هنوز بازو ندارید؟ /live یک SO-100 فیزیکی را بدون نیاز به ثبتنام پخش میکند. سپس اولین سیاست خود را آموزش دهید، و SmolVLA روی SO-100 برای راهنمای خاص.
نمونه 2 گیگابایتی DROID را دانلود کنید و از آن برای اثبات پایپلاین خود استفاده کنید. 1.7 ترابایت دیگر را نادیده بگیرید. 50 اپیزود از یک وظیفه را با دوربینهای ثابت ضبط کنید. ابتدا SmolVLA را تنظیم دقیق کنید، زیرا با حداقل 30 اپیزود روی یک کارت 24 گیگابایتی، ارزانترین راه برای تکرار است، سپس GR00T N1.7 را روی همان دادهها امتحان کنید. مقایسه را روی وظیفه خود انجام دهید، نه روی یک بنچمارک.
مجموعهدادههایی را ضبط کنید که از قبل با بازوی شما مطابقت دارند
کلاینت دسکتاپ، مجموعهدادههای با فرمت LeRobot را مستقیماً از یک جلسه تلهاپ مینویسد: بازوی مناسب، نرخ فریم مناسب، فضای عمل مناسب. بدون تبدیل RLDS، بدون بازنگاری.
کلاینت دسکتاپ را دریافت کنیدآیا میتوانم یک سیاست را روی DROID آموزش دهم و آن را روی SO-100 خود اجرا کنم؟▾
نه به طور مستقیم. در ساختار LeRobot، اقدامات DROID دستورات 7-D اند-افکتور بر روی یک Franka Panda با سرعت 15 fps هستند؛ در RLDS خام، آنها 6 سرعت مفصل به علاوه موقعیت یک گریپر هستند. یک SO-100، 6 موقعیت مطلق مفصل را میپذیرد. شما به یک لایه سینماتیک معکوس نیاز خواهید داشت، و حتی در آن صورت، یک مچ 5-DoF نمیتواند ژستهای دلخواه 6-DoF را بازتولید کند.
آیا میتوانم اپیزودهای DROID یا Bridge را با اپیزودهای SO-100 خودم ترکیب کنم؟▾
خیر. validate_all_metadata به fps، robot_type و feature schema یکسان نیاز دارد و در اولین عدم تطابق، ValueError را ایجاد میکند. هر سه متفاوت هستند: 15 یا 5 fps در مقابل 30، franka یا widowx در مقابل بازوی شما، اشکال عمل 7 در مقابل 6. بازنویسی فراداده برای گذراندن بررسی، معناشناسی را اصلاح نمیکند.
آیا Open X-Embodiment برای یک بازوی کمهزینه بیفایده است؟▾
خیر، اما ارزش آن از طریق وزنهای از پیش آموزشدیده به شما میرسد، نه اپیزودها. مجموعهدادههای متنباز شامل OXE، Bridge v2 و DROID، 9.1 درصد از ترکیب پیشآموزش pi0 را تشکیل میدهند، و NVIDIA نسخههای GR00T N1.7 را که پس از آموزش روی Bridge، Fractal، DROID و LIBERO عرضه میکند. کاری که نمیتوانید انجام دهید این است که آن اپیزودها را به ضبط خودتان اضافه کنید.
کدام سیاست بیشترین بهره را از دادههای عمومی بینبدنه میبرد؟▾
Pi0.5 و مدلهای GR00T بیشترین پیشآموزش بینبدنه را دارند، اما SmolVLA اغلب روی یک بازوی کمهزینه بهترین عملکرد را دارد: مجموعه پیشآموزش آن شامل 481 مجموعهداده جامعه، 22.9K اپیزود و 10.6M فریم است که روی بازوهای واقعی SO-100 و SO-101 ارزیابی شده است. ACT برعکس است: بدون مدل پایه، 20 ms در هر گام عمل.
واقعاً به چند اپیزود از خودم نیاز دارم؟▾
30 برای SmolVLA، 50 برای GR00T N1.7، GR00T N1.5، Pi0.5 و ACT. با تنظیمات پیشفرض 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-بعدی، عمل 7-بعدی آن
- IPEC-COMMUNITY/droid_lerobot: meta/info.json و اندازه مخزن
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: برش google_robot با 3 فریم بر ثانیه
- 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