LeRobot documentation

NVIDIA RoboLab

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

NVIDIA RoboLab

RoboLab هو معيار تقييم يتكون من 120 مهمة للتعامل مع الأشياء على سطح الطاولة لروبوت DROID (ذراع Franka Panda مزودة بمقبض Robotiq 2F-85)، ويُحاكى باستخدام NVIDIA Isaac Lab ويُعرض باستخدام عارض RTX الخاص بـ Isaac Sim. تتنوع المهام بين الالتقاط والوضع، والتكديس، والفرز، وإعادة التوجيه، بالإضافة إلى متغيرات مشروطة باللغة (العلاقات المكانية، والألوان، والعدّ، والتعليمات الغامضة)، وتُصنّف إلى بسيطة أو متوسطة أو معقدة.

المتطلبات والتراخيص

  • GPU: بطاقة رسومات NVIDIA RTX (حيث يعتمد Isaac Sim على تقنية RTX للعرض). يستهلك كل بيئة واحدة من مهمة واحدة حوالي 7 غيغابايت من ذاكرة الفيديو (VRAM)، بما في ذلك Isaac Sim؛ بينما تضيف كل بيئة إضافية ضمن نفس المهمة حوالي 1 إلى 2 غيغابايت (تدعم أدلة RoboLab تشغيل 30 إلى 100 بيئة على بطاقة رسومات بسعة 48 غيغابايت، وذلك حسب طبيعة المهمة). بالإضافة إلى ذلك، يحتاج نموذجك (Policy) إلى مساحة ذاكرة خاصة به.
  • Isaac Sim: يعمل RoboLab هنا على Isaac Sim 6.0.1 و Isaac Lab 3.0 beta 2، أي حزمة Isaac Sim 6 الخاصة بـ RoboLab. باستخدام Isaac Sim، فإنك توافق على ترخيص NVIDIA Isaac Sim؛ ويقبل صورة Docker هذا الترخيص نيابةً عنك، تمامًا كما تفعل صورة RoboLab الخاصة.
  • الموارد: مشاهد RoboLab وأجسامه ونماذج روبوته (حوالي 6 غيغابايت، من git LFS الخاص به) مرخّصة في الغالب بموجب CC BY-NC-SA 4.0، مع وجود بعضها تحت شروط أخرى؛ راجع THIRD_PARTY_NOTICES.md الخاص بـ RoboLab. لا توزّع LeRobot هذه الموارد: يقوم التنزيل من NVlabs عند بناء الصورة.
  • Docker، لإعداد الخادم الوارد أدناه: BuildKit (docker buildx) لبناء الصورة، وNVIDIA Container Toolkit حتى يتمكن الحاوية من استخدام وحدة معالجة الرسوميات.

تشغيله كخدمة (موصى به)

تثبّت إصدار Isaac Lab 3.0 التجريبي transformers==4.57.6 (وبالتالي huggingface-hub<1.0)، وnumpy==2.3.1 وpackaging==26.0، وهي إصدارات لا تقبلها تبعيات LeRobot الخاصة. شغّل RoboLab في صورة Docker مستقلة، خلف lerobot-env-server، وشغّل سياستك في بيئة LeRobot المعتادة لديك:

# Build the image on first use (Isaac Sim and the assets: a long first build), then serve every task
lerobot-env-server --config_path=docker/sim/configs/robolab.yaml --docker=true

# In your LeRobot environment
lerobot-eval \
  --policy.path=<your DROID joint-position policy> \
  --env.type=robolab \
  --env.task=BananaInBowlTask \
  --env.server.endpoint=tcp/127.0.0.1:7448 \
  --rename_map='{"observation.images.over_shoulder_left_camera": "observation.images.<exterior>", "observation.images.wrist_cam": "observation.images.<wrist>"}' \
  --eval.batch_size=1 \
  --eval.n_episodes=10

تشغّل الخادم أيّاً من المهام المُهيّأة له: يفتح العميل المهمة التي يطلبها، ويبنيها الخادم في Isaac Sim قيد التشغيل (بضع ثوانٍ). أما بدء تشغيل Isaac Sim نفسه فيستغرق من ثوانٍ إلى بضع دقائق. إذا لم يجد الخادم وحدة معالجة رسومية (GPU) داخل الحاوية (ERROR_INCOMPATIBLE_DRIVER)، فراجع ملاحظة Vulkan في Simulation.

شغّله محليًا

بعد تثبيت Isaac Sim و RoboLab في بيئتك، أضف --env.server.endpoint وشغّل lerobot-eval ليعمل RoboLab في عملية مستقلة. ثبّت حزمة RoboLab أولاً، ثم ثبّت LeRobot دون تبعياته، كما تفعل صورة Docker:

GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/NVlabs/RoboLab.git && git -C RoboLab lfs pull
uv venv --python 3.12 && source .venv/bin/activate
uv pip install "isaaclab[isaacsim]==3.0.0b2.post1" -e ./RoboLab \
  --extra-index-url https://pypi.nvidia.com --index-strategy unsafe-best-match
uv pip install --no-deps -e ./lerobot
uv pip install draccus termcolor eclipse-zenoh  # what the rest of LeRobot's simulation code imports
export OMNI_KIT_ACCEPT_EULA=YES                 # accepts the Isaac Sim license

لا يتوفر في هذه البيئة مساحة لسياسات تتطلب transformers 5 (π₀.₅، SmolVLA، …): شغّل تلك التي تُقدَّم كخدمة.

المهام

كل مهمة من مهام RoboLab الـ 120 تشكّل مجموعة مستقلة بمعرّف مهمة واحد، لذا يُبلّغ lerobot-eval عن معدل نجاح لكل مهمة وعن المعدل الإجمالي. يقبل --env.task قائمة بأسماء مهام مفصولة بفواصل، مثل BananaInBowlTask,RubiksCubeAndBananaTask؛ اتركه فارغًا لتشمل جميع المهام الـ 120. تُدرَج أسماء المهام والتعليمات ومستوى الصعوبة في بيانات المهام الوصفية الخاصة بـ RoboLab.

تشارك جميع بيئات المهمة عالم Isaac Lab واحدًا على وحدة معالجة الرسوميات: --eval.batch_size=N يشغّل N حلقة في آنٍ واحد في ذلك العالم.

الملاحظات والإجراءات

المفتاحالشكلالمحتوى
observation.images.over_shoulder_left_camera720 × 1280 × 3كاميرا خارجية، على يسار الروبوت
observation.images.wrist_cam720 × 1280 × 3كاميرا معصم
observation.state8joint_0.pos … joint_6.pos (بالراديان)، gripper.pos (0 مفتوح، 1 مغلق)
action8الأهداف المطلقة المشتركة للمفاصل السبعة، ثم القابض: مغلق عند تجاوز 0.5

يعمل الروبوت بتردد 15 هرتز (الفيزياء بتردد 120 هرتز، أي 8 خطوات فيزيائية لكل إجراء)، ويسجّل LeRobot ذلك على أنه robot_type="Franka"، كما في DROID. لكل حلقة حد زمني خاص بمهمتها (من 20 إلى 300 ثانية، أي من 300 إلى 4,500 خطوة)؛ تنتهي الحلقة الناجحة كمنتهية (terminated)، بينما تنتهي الحلقة التي تنفد فيها المهلة كمنقوصة (truncated). تعليمات المهمة هي وصف المهمة الخاص بالبيئة (env).

روبوت المحاكاة

يمكن أن يحل RoboLab محل روبوت DROID الحقيقي في lerobot-rollout وlerobot-record وأدوات الروبوتات الأخرى (انظر المحاكاة: محلية أو مُقدَّمة):

lerobot-rollout \
  --robot.type=sim --robot.env.type=robolab --robot.env.task=BananaInBowlTask --robot.task_id=0 \
  --robot.env.server.endpoint=tcp/127.0.0.1:7448 \
  --policy.path=<your policy> --fps=15 ...

مرجع إعدادات البيئة

معاملافتراضيالوصف
taskempty: جميع 120أسماء المهام مفصولة بفواصل
cameras"WRIST_LEFT"إعداد مسبق للكاميرا من robolab/registrations/droid/camera_presets.py الخاص بـ RoboLab، مثل WRIST_LEFT_RIGHT للكاميرتين الخارجيتين
instruction_type"default"التعليمات التي يمنحها كل مهمة: default أو vague أو specific
observation_height, observation_widthغير مُعيّن: 720 × 1280قم بتغيير حجم إطارات الكاميرا على وحدة معالجة الرسوميات (GPU) أولاً، على سبيل المثال لإرسال إطارات أصغر من الخادم

المقارنة مع لوحة الصدارة

تقيّم لوحة صدارة RoboLab 10 حلقات لكل مهمة باستخدام التعليمات الافتراضية، وكاميرات WRIST_LEFT، وإجراءات موضع المفاصل، وهي الإعدادات الافتراضية في LeRobot. ولا يحدد النص إصدار Isaac Sim الذي أنتج أرقامه، والإعداد الافتراضي في RoboLab هو Isaac Sim 5.0: حيث تختلف الفيزياء والعرض بين إصدارات Isaac Sim، لذا فإن الأرقام الناتجة عن إعداد Isaac Sim 6.0.1 هذا غير قابلة للمقارنة المباشرة.

Update on GitHub