دایرکتوری مجموعه داده عمومی AY-Robots که مجموعه داده‌های LeRobot را ثبت شده روی بازوهای کلاس SO-100 نشان می‌دهد
مجموعه داده‌هاOpen X-EmbodimentDROIDSO-100LeRobot

استفاده از DROID، BridgeData V2 و Open X روی SO-100

AY-Robots ResearchAugust 23, 202618 دقیقه مطالعه

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 کم‌هزینه برخورد می‌کند، و اینکه به جای آن چه باید کرد. هر عددی که در ادامه می‌آید از مقاله، کارت مجموعه داده یا فایل منبع مربوط به آن گرفته شده است.

آنچه سه مجموعه داده واقعاً شامل می‌شوند

DROIDBridgeData V2Open X-Embodiment
رباتFranka Panda, 7 DoF, Robotiq 2F-85WidowX 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 Hz5 Hzمتغیر، 3 فریم بر ثانیه به بالا
دوربین‌ها2 عدد ZED 2 خارجی، 1 عدد ZED Mini مچیتا 4 عدد، اکثر اپیزودها فقط از دوربین ثابتهر آنچه آزمایشگاه استفاده کرده است
دانلود خام1.7 TB RLDS, 8.7 TB استریو خامJPEG آرشیوهابه ازای هر مجموعه داده TFDS باکت‌ها
نقطه ورود، تبدیل LeRobot است، نه باکت اصلی

تعداد کمی از افراد هنوز 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 اند-افکتور تبدیل می‌کنند، اما فریم‌های مختصات را در بین مجموعه‌های داده هم‌تراز نمی‌کنند و اجازه می‌دهند مقادیر عمل، موقعیت‌های مطلق یا نسبی یا سرعت‌ها باشند، مطابق با طرح کنترل اصلی هر ربات. نتیجه‌گیری آن‌ها: یک بردار عمل مشابه ممکن است حرکات بسیار متفاوتی را برای ربات‌های مختلف ایجاد کند.

فهرست دایرکتوری مجموعه داده AY-Robots که مجموعه‌های داده عمومی LeRobot را با تعداد اپیزودها و توضیحات وظایف لیست می‌کند
دایرکتوری عمومی مجموعه داده در /directory: مجموعه‌های داده‌ای که از قبل در فرم LeRobot هستند و با یک بازوی پشتیبانی شده مطابقت دارند.

عدم تطابق، در چهار بخش

عدم تطابق تجسم معمولاً به عنوان یک مشکل مبهم در نظر گرفته می‌شود. این چهار مورد است، آنها به روش‌های متفاوتی شکست می‌خورند، و دو مورد با اسکریپت‌نویسی قابل رفع نیستند.

۱. درجات آزادی

یک SO-100 دارای پنج مفصل بازو به علاوه یک گریپر است. اگر به عنوان موتور شمارش شود، یک بازوی 6-DoF است، و مقاله SmolVLA آن را اینگونه می‌نامد؛ اگر به عنوان یک مکانیزم موقعیت‌یابی شمارش شود، 5-DoF است، و LeRobot آن را در docstring سینماتیک معکوس خود اینگونه می‌نامد، که IK جهت‌گیری نرم را بر روی SO-101 5-DOF توصیف می‌کند که در آن مچ دست فقط تا حدی جهت‌گیری را ردیابی می‌کند. یک 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
چپ: دنبال‌کننده SO از LeRobot، از src/lerobot/robots/so_follower/so_follower.py. راست: ورودی خط‌مشی DROID از openpi. شش در برابر هشت.

بنابراین یک 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 در فرم LeRobotSO-100 در LeRobot
بردار عمل7-D: x, y, z, roll, pitch, yaw, gripper6-D: یک موقعیت هدف برای هر موتور
بردار وضعیت8-D، با یک جایگاه پد (google_robot از یک کواترنیون استفاده می‌کند)6-D، یکی برای هر موتور
فریمدکارتی، ناهمتراز در سراسر مجموعه داده‌هافضای مفصلی، کالیبراسیون به ازای هر بازو
مطلق یا نسبیهر دو، توسط آزمایشگاه منبع تصمیم‌گیری می‌شودموقعیت‌های هدف مطلق
واحدهانرمال‌سازی شده به ازای هر مجموعه داده، سپس گسسته‌سازی شدهدرجه به طور پیش‌فرض (use_degrees=True)، در غیر این صورت -100 تا 100
خطای خاموشیک دلتا که به عنوان مطلق خوانده می‌شودیک بازوی کالیبره نشده
بردار کارتزین 7-بعدی، قرارداد مبدل است، نه DROID

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. 1
    نمونه ۱۰۰ اپیزودی را دریافت کنید، نه ۱.۷ ترابایت کامل را

    ۲ گیگابایت برای مشاهده ساختار کافی است.

    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
    ادغام را امتحان کنید و خطا را بخوانید

    merge هر مجموعه داده را بارگذاری می‌کند، سپس 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، از ۳۰ فریم بر ثانیه شما شکایت می‌کند. نرخ فریم را اصلاح کنید و به بررسی robot_type می‌رسید؛ آن را اصلاح کنید و به بررسی ویژگی‌ها می‌رسید، ۷ در برابر ۶ برای عمل. هیچ ترتیبی از این بررسی‌ها عبور نمی‌کند و همین محافظ در زمان ضبط از طریق 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 به نرخ موفقیت میانگین 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 آموزش‌دیده در تنظیم دقیق50LeRobot v2.0 or v2.1A100 or H100 80 GB152 میلی‌ثانیه در هر گامnvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 or v2.1A100 or H100 80 GB165 میلی‌ثانیهnvidia/GR00T-N1.5-3B
Pi0.5~3 B, با ستون فقرات PaliGemma50LeRobot v3.0A100 or H100 80 GB485 میلی‌ثانیهlerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 or any 24 GB245 میلی‌ثانیهlerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 or any 24 GB20 میلی‌ثانیه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، پنجاه اپیزود معادل ۱۰۰ دقیقه زمان واقعی است. به ، و .

صفحه آموزش ضبط 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احتمال حرکت بازوی شما
DROID تبدیل شده به تنهایی392 GBروزها برای تبدیل4 to 12 USDبسیار پایین، فضای عمل اشتباه
DROID ادغام شده با اپیزودهای شماهر دومسدود شده توسط validate_all_metadatan/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 دقیقه زمان واقعی است. داده‌های بین‌بدنه قرض‌گرفته شده این اعداد را کاهش نمی‌دهند.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started