LeRobot documentation

RoboTwin 2.0

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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 benchmark overview

نظرة عامة

خاصيةالقيمة
المهام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"أسماء المهام مفصولة بفواصل
fps25إطارات المحاكاة في الثانية
episode_length1200الحد الأقصى لعدد الخطوات في كل حلقة
obs_type"pixels_agent_pos""pixels" أو "pixels_agent_pos"
camera_names"head_camera,left_camera,right_camera"الكاميرات النشطة مفصولة بفواصل
observation_height240ارتفاع بكسل الكاميرا
observation_width320عرض بكسل الكاميرا

إرسال إلى لوحة الصدارة

يمكن إرسال النتائج إلى لوحة صدارة RoboTwin 2.0. ويتطلب البروتوكول الرسمي ما يلي:

  • التدريب على 50 demo_clean من الأمثلة لكل مهمة
  • تقييم 100 حلقة لكل مهمة
  • تقرير معدل النجاح بشكل منفصل لكل من الإعداد Easy (demo_clean) والإعداد Hard (demo_randomized)

للحصول على تعليمات الإرسال، يرجى الرجوع إلى توثيق RoboTwin 2.0.

Update on GitHub