LeRobot documentation
RoboTwin 2.0
RoboTwin 2.0
The commands below run the simulator locally. To keep its dependencies away from your policy's, serve it instead with `lerobot-env-server --config_path=docker/sim/configs/robotwin.yaml --sim.task=--docker=true`, where ` ` is the command's `--env.task`, and add `--env.server.endpoint=tcp/127.0.0.1:7448` to the command. A server runs the task it was started with (see [Simulation: local or served](./simulation)).
RoboTwin 2.0 هو مقياس واسع النطاق للتلاعب بذراعين مبني على محرك الفيزياء SAPIEN. يوفر بروتوكول تقييم قياسي لسياسات الروبوتات ذات اليدين عبر 50 مهمة (حتى فرع main الرئيسي) مع عشوائية نطاق قوية (الفوضى، والإضاءة، والخلفية، وارتفاع سطح الطاولة، والتعليمات اللغوية).
- الورقة: RoboTwin 2.0: مولّد بيانات قابل للتوسع ومعايير مع عشوائية مجال قوية للتلاعب الروبوتي الثنائي اليد المتين
- GitHub: RoboTwin-Platform/RoboTwin
- لوحة الصدارة: robotwin-platform.github.io/leaderboard
- مجموعة البيانات: lerobot/robotwin_unified

نظرة عامة
| خاصية | القيمة |
|---|---|
| المهام | 50 مهام للتعامل بذراعين |
| روبوت | Aloha-AgileX ثنائي الذراع (14 درجة حرية، 7 لكل ذراع) |
| مساحة الإجراءات | فضاء مشترك بأبعاد 14، مستمر في [-1, 1] |
| الكاميرات | head_camera, left_camera, right_camera |
| محاكي | SAPIEN (وليس MuJoCo) |
| بروتوكول التقييم | 100 حلقة/مهمة، 50 عرضًا توضيحيًا demo_clean |
| إعدادات التقييم | سهل (demo_clean) وصعب (demo_randomized) |
المهام المتاحة
تأتي RoboTwin 2.0 مع 50 مهمةً للتعامل بمساعدَين في مجلد envs/ في مستودعها الأصلي. القائمة الرسمية هي السلسلة ROBOTWIN_TASKS في src/lerobot/sim/integrations/robotwin.py، وهي نسخة مطابقة حرفياً من المستودع الأصلي. أمثلة على المهام:
| المهمة | اسم سطر الأوامر | الفئة |
|---|---|---|
| اضرب الكتلة بالمطرقة | beat_block_hammer | استخدام الأدوات |
| انقر على جرس / ساعة منبّه | click_bell | دقة الضغط |
| تجميع الكتل (2 / 3) | stack_blocks_two/three | التكديس |
| تصاعد الأوعية (2 / 3) | stack_bowls_two/three | التكديس |
| كتلة التسليم / الميكروفون | handover_block | إحداثيات ثنائية اليد |
| ارفع القدر | lift_pot | الرفع باليدين |
| هزّ الزجاجة | shake_bottle | حركة مستمرة |
| تبديل المفتاح | turn_switch | جسم مفصلي |
| ختم | stamp_seal | مكان الدقة |
| مسح الكائن | scan_object | التلاعب عبر الهاتف |
مرر قائمة مفصولة بفواصل إلى --env.task لتشغيل مهام متعددة في مسح تقييم واحد.
`open_laptop` is currently broken upstream (its `check_success()` uses `self.arm_tag`, which is only set inside the scripted-expert `play_once()` path and therefore unavailable during normal policy eval). Avoid it until the upstream bug is fixed, or patch the task to default `self.arm_tag = "left"` in `load_actors()`.
مجموعة البيانات
يتوفر مجموعة بيانات RoboTwin 2.0 بتنسيق LeRobot v3.0 على Hugging Face Hub:
lerobot/robotwin_unified
يتضمن أكثر من 100,000 مسار مُجمَّع مسبقًا عبر جميع المهام الخمسين (79.6 غيغابايت، ترخيص Apache 2.0). لا حاجة لتحويل الصيغة — فهو بالفعل في مخطط LeRobot v3.0 الصحيح مع ملاحظات الفيديو وتسميات الإجراءات.
يمكنك تحميله مباشرةً باستخدام مكتبة HF Datasets:
from datasets import load_dataset
ds = load_dataset("lerobot/robotwin_unified", split="train")التثبيت
يتطلب RoboTwin 2.0 نظام Linux مع بطاقة رسومات من NVIDIA (حيث يعتمد SAPIEN على Vulkan للعرض). تُجمَّع أكواد CUDA الخاصة بمخططي المسار CuRobo وpytorch3d مقابل torch 2.7.1، وهو ما لا يتطابق مع إصدار torch في LeRobot، لذا يعمل RoboTwin في بيئته الخاصة خلف lerobot-env-server، بينما لا يحتاج جانب السياسة سوى إلى LeRobot.
الصورة المُقدَّمة (موصى بها)
lerobot-env-server --config_path=docker/sim/configs/robotwin.yaml --sim.task=beat_block_hammer --docker=trueتقوم أول عملية بتشغيل مرحلة robotwin_native من docker/Dockerfile.sim (حوالي 20 دقيقة، معظمها pytorch3d و CuRobo). على جهاز صغير، قم ببناء الصورة بنفسك أولاً مع ذاكرة محدودة؛ ثم يعيد الخادم استخدامها:
docker build -f docker/Dockerfile.sim --build-arg SIM=robotwin \
--build-arg MAX_JOBS=1 --build-arg CUROBO_CUDA_ARCHS=8.6 -t lerobot-sim-robotwin:local .حيث 8.6 هو قدر معالجة وحدة معالجة الرسوميات لديك. أضف --env.server.endpoint=tcp/127.0.0.1:7448 إلى أوامر التقييم أدناه.
البيئة الأصلية
لتشغيل الخادم دون Docker، أعد إنتاج مرحلة robotwin_native من docker/Dockerfile.sim في بيئة افتراضية منفصلة، وهي الوصفة المُختبَرة: مُترجم CUDA 12.8 nvcc، وtorch 2.7.1، والتثبيت المثبّت لـ RoboTwin مع أصوله، وCuRobo v0.7.8، وإصلاحات mplib وSAPIEN الخاصة بـ RoboTwin. ثم ثبّت LeRobot باستخدام --no-deps بالإضافة إلى docker/sim/requirements.txt، وأزل --docker=true من الأمر أعلاه (انظر المحاكاة: محلية أو مُقدَّمة).
التقييم
التقييم القياسي (موصى به)
قيّم سياسةً على مهمة واحدة باستخدام البروتوكول الرسمي (100 حلقة):
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer \
--eval.batch_size=1 \
--eval.n_episodes=100فحص سريع لمهمة واحدة
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer \
--eval.batch_size=1 \
--eval.n_episodes=5مسح المهام المتعددة
التقييم على عدة مهام في تشغيل واحد:
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer,click_bell,handover_block,stack_blocks_two \
--eval.batch_size=1 \
--eval.n_episodes=100الاختبار المرجعي الكامل (جميع المهام الخمسين)
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=adjust_bottle,beat_block_hammer,blocks_ranking_rgb,blocks_ranking_size,click_alarmclock,click_bell,dump_bin_bigbin,grab_roller,handover_block,handover_mic,hanging_mug,lift_pot,move_can_pot,move_pillbottle_pad,move_playingcard_away,move_stapler_pad,open_microwave,pick_diverse_bottles,pick_dual_bottles,place_a2b_left,place_a2b_right,place_bread_basket,place_bread_skillet,place_burger_fries,place_can_basket,place_cans_plasticbox,place_container_plate,place_dual_shoes,place_empty_cup,place_fan,place_mouse_pad,place_object_basket,place_object_scale,place_object_stand,place_phone_stand,place_shoe,press_stapler,put_bottles_dustbin,put_object_cabinet,rotate_qrcode,scan_object,shake_bottle,shake_bottle_horizontally,stack_blocks_three,stack_blocks_two,stack_bowls_three,stack_bowls_two,stamp_seal,turn_switch \
--eval.batch_size=1 \
--eval.n_episodes=100`open_laptop` is intentionally omitted above because of the upstream `self.arm_tag` bug (see the **Available tasks** section). Re-add it once the upstream fix lands.
إعداد الكاميرا
بشكل افتراضي، يتم تضمين جميع الكاميرات الثلاث:
| مفتاح الكاميرا | الوصف |
|---|---|
head_camera | منظر علوي من جسم الجسم |
left_camera | كاميرا مثبتة على معصم اليد اليسرى |
right_camera | كاميرا مثبتة على معصم اليد اليمنى |
للاستخدام مجموعة فرعية من الكاميرات، تجاوز --env.camera_names:
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer \
--env.camera_names="head_camera,left_camera" \
--eval.batch_size=1 \
--eval.n_episodes=10مرجع إعدادات البيئة
أهم المعلمات الخاصة بـ RoboTwinEnvConfig:
| معامل | افتراضي | الوصف |
|---|---|---|
task | "beat_block_hammer" | أسماء المهام مفصولة بفواصل |
fps | 25 | إطارات المحاكاة في الثانية |
episode_length | 1200 | الحد الأقصى لعدد الخطوات في كل حلقة |
obs_type | "pixels_agent_pos" | "pixels" أو "pixels_agent_pos" |
camera_names | "head_camera,left_camera,right_camera" | الكاميرات النشطة مفصولة بفواصل |
observation_height | 240 | ارتفاع بكسل الكاميرا |
observation_width | 320 | عرض بكسل الكاميرا |
إرسال إلى لوحة الصدارة
يمكن إرسال النتائج إلى لوحة صدارة RoboTwin 2.0. ويتطلب البروتوكول الرسمي ما يلي:
- التدريب على 50
demo_cleanمن الأمثلة لكل مهمة - تقييم 100 حلقة لكل مهمة
- تقرير معدل النجاح بشكل منفصل لكل من الإعداد Easy (
demo_clean) والإعداد Hard (demo_randomized)
للحصول على تعليمات الإرسال، يرجى الرجوع إلى توثيق RoboTwin 2.0.
Update on GitHub