LeRobot documentation

ورقة الغش

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

and get access to the augmented documentation experience

to get started

ورقة الغش

جميع أوامر LeRobot في مكان واحد. إذا نسيت كيفية استخدام أمر معين أو أردت التعرف على أمر جديد، يمكنك القيام بذلك هنا.

تذكّر بتغيير المنافذ/الأسماء/المعرّفات إلى قيمك الخاصة في جميع الأوامر المدرجة أدناه!

طريقة رائعة أخرى للاطلاع على جميع الأوامر وإعدادها لتناسب إعدادك المحدد هي استخدام هذا Jupyter Notebook.

الإعداد والتثبيت

للتنصيب، يرجى الاطلاع على LeRobot Installation.

أدوات مفيدة

العثور على المنفذ

استخدم هذا لتحديد المنافذ التسلسلية التي تتصل بها روبوتاتك. اتبع التعليمات في الطرفية: سيُطلب منك فصل كابل USB ثم الضغط على Enter. بعد ذلك، سيقوم السكربت باكتشاف منفذ التسلسل الصحيح لذلك الروبوت وطباعته.

lerobot-find-port
البحث عن الكاميرات

اعثر بسرعة على فهارس الكاميرات وتحقق من مخرجاتها. يطبع هذا الأمر معلومات الكاميرات في الطرفية ويحفظ إطارات اختبار من كل كاميرا مكتشفة في outputs/captured_images

lerobot-find-cameras

المعايرة

في معظم الحالات، ستحتاج إلى إجراء المعايرة مرة واحدة فقط لكل روبوت وجهاز تشغيل عن بُعد. قبل إجراء المعايرة، تأكد من أن جميع المفاصل في وضع متوسط تقريبي.

lerobot-calibrate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower_arm

تأكد من استخدام نفس المعرّفات المستخدمة أثناء المعايرة لاحقًا في السكربتات الأخرى. بهذه الطريقة يجد LeRobot ملفات المعايرة.

التشغيل عن بُعد

التشغيل عن بُعد باستخدام كاميرتين وعرض البيانات باستخدام Rerun.

lerobot-teleoperate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower_arm \
    --robot.cameras="{ top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30} }" \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_leader_arm \
    --display_data=true

تسجيل مجموعة بيانات

يتم رفع مجموعة البيانات تلقائيًا إلى Hugging Face Hub تحت repo_id. تأكد من تسجيل الدخول إلى حسابك في HF باستخدام CLI (يمكنك الحصول على رمز من https://huggingface.co/settings/tokens)، واحفظ اسم المستخدم الخاص بك في HF_USER، حيث تستخدم الأوامر أدناه هذا المتغير:

lerobot-record \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower_arm \
    --robot.cameras="{ top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30} }" \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_leader_arm \
    --dataset.repo_id=${HF_USER}/so101_dataset_test \
    --dataset.num_episodes=30 \
    --dataset.single_task="put the red brick in a bowl" \
    --dataset.streaming_encoding=true \
    --display_data=true

أثناء جمع مجموعة البيانات، يمكنك التحكم في العملية باستخدام لوحة المفاتيح:

  • اضغط السهم الأيمن (→) أو n: لحفظ الحلقة والانتقال إلى التالية.
  • اضغط على السهم الأيسر (←) أو r: لحذف الحلقة الحالية وإعادة المحاولة.
  • اضغط Escape (ESC) أو q: إيقاف، ترميز مقاطع الفيديو، ورفعها.

lerobot-record يضيف تاريخ ووقت الجلسة إلى نهاية --dataset.repo_id، لذا يُحفظ ${HF_USER}/so101_dataset_test باسم ${HF_USER}/so101_dataset_test_YYYYMMDD_HHMMSS. يمكنك العثور على الاسم الكامل في ملفك الشخصي على Hugging Face أو باستخدام ls ~/.cache/huggingface/lerobot/${HF_USER}، ثم استخدمه في أوامر التدريب أدناه. أضف --dataset.no_stamp=true للإبقاء على الاسم الدقيق.

عمق التسجيل

تُسجّل كاميرات Intel RealSense (type: intelrealsense) تدفق عمق عند ضبط use_depth: true. يتم تكميم العمق إلى رموز 12-بت وتخزينه كفيديو مستقل.

lerobot-record \
    ... \
    --robot.cameras="{ head: {type: intelrealsense, serial_number_or_name: \"0123456789\", width: 640, height: 480, fps: 30, use_depth: true} }" \
    --dataset.repo_id=${HF_USER}/so101_depth_test \
    --dataset.single_task="put the red brick in a bowl" \
    --dataset.depth_encoder.depth_min=0.01 \
    --dataset.depth_encoder.depth_max=10.0 \
    --dataset.depth_encoder.shift=0.0 \
    --dataset.depth_encoder.use_log=true

معلمات ترميز الفيديو

تُرمَّز تدفقات RGB والعمق بشكل مستقل عبر المفاتيح --dataset.rgb_encoder.* و--dataset.depth_encoder.*.

lerobot-record \
    ... \
    --dataset.rgb_encoder.vcodec=h264 \
    --dataset.rgb_encoder.pix_fmt=yuv420p \
    --dataset.rgb_encoder.crf=23 \
    --dataset.depth_encoder.vcodec=hevc \
    --dataset.depth_encoder.extra_options='{"x265-params": "lossless=1"}'

التدريب

يعتمد الأمر على عتادك، فقد يستغرق تدريب السياسة بضع ساعات. هذه هي الطريقة التي تتدرب بها على سياسة ACT بسيطة:

lerobot-train \
    --dataset.repo_id=${HF_USER}/so101_dataset_test_YYYYMMDD_HHMMSS \
    --policy.type=act \
    --output_dir=outputs/train/act_so101_test \
    --job_name=act_so101_test \
    --policy.device=cuda \
    --trackio.enable=true \
    --policy.repo_id=${HF_USER}/policy_test \
    --steps=20000
  • أنواع السياسات الشائعة: act، diffusion، multi_task_dit، smolvla، pi0، pi05، pi0_fast، groot، xvla. لكل سياسة صفحة خاصة بها تحت السياسات في الشريط الجانبي، ويوضح دليل الحساب والأجهزة أيها يناسب وحدة معالجة الرسوميات لديك.
  • الأجهزة: cuda (NVIDIA)، mps (Apple Silicon)، cpu

--policy.type ينشئ سياسة جديدة من ذلك النوع ويدربها من الصفر على مجموعة البيانات الخاصة بك (بعض السياسات لا تزال تبدأ من هياكل رؤية أو لغة مُسبقة التدريب، كما هو مُحدد في إعداداتها). ولتدريب نموذج قائم بدلاً من ذلك، مرّر --policy.path مع نقطة فحص محلية أو معرف مستودع على Hub: حيث تُقرأ نوع السياسة وإعداداتها منه، لذا لا حاجة إلى --policy.type.

lerobot-train \
    --dataset.repo_id=${HF_USER}/so101_dataset_test_YYYYMMDD_HHMMSS \
    --policy.path=username/the_policy_to_finetune \
    --policy.device=cuda \
    --policy.repo_id=${HF_USER}/policy_finetuned_test \
    --output_dir=outputs/train/finetuned_so101_test \
    --steps=20000

لا تملك وحدة معالجة رسومية محلية؟ أضف --job.target=<flavor> (مثل a10g-small) إلى أيٍّ من الأمرين، وسينفّذ lerobot-train المهمة على Hugging Face Jobs بدلاً من ذلك — حيث يقوم برفع مجموعة بيانات محلية فقط نيابةً عنك ودفع النموذج المُدرَّب. لعرض قائمة الأنواع المتاحة، استخدم hf jobs hardware. لتتبع مقاييس المهمة، أضف --trackio.enable=true --trackio.space_id=<user>/<space>: فمستودع Trackio المحلي الخاص بالمكوّن لا يبقى بعد انتهاء المهمة.

للاستئناف، وجّه --config_path إلى نقطة تحقق (checkpoint) وأضف --resume=true. يقبل مسارًا محليًا أو معرف مستودع على Hub (حيث يتم جلب أحدث نقطة تحقق)، ويعمل محليًا أو على مهمة (job) عن طريق إضافة --job.target=<flavor>:

lerobot-train --config_path=${HF_USER}/policy_test --resume=true --job.target=a10g-small

الاستدلال

تعني الاستدلال تشغيل السياسة/النموذج المُدرَّب على الروبوت. لهذا الغرض نستخدم lerobot-rollout. ستحتاج إلى تقديم مسار إلى سياستك. يمكن أن يكون مسارًا محليًا أو معرف مستودع على Hugging Face، على سبيل المثال ${HF_USER}/policy_test من أمر التدريب أعلاه. استخدم نفس المنفذ، و--robot.id، وإعداد الكاميرا، ووصف المهمة كما عند جمع مجموعة البيانات. يُقاس --duration بالثواني؛ وإذا لم يُحدد، تستمر السياسة في العمل حتى توقفها.

في الإصدار v0.5.x وما قبله، لا يوجد lerobot-rollout ويحتاج إلى استخدام lerobot-record بدلاً منه. مزيد من المعلومات هنا.

lerobot-rollout \
    --strategy.type=base \
    --policy.path=${HF_USER}/policy_test \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower_arm \
    --robot.cameras="{ top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30} }" \
    --task="put the red brick in a bowl" \
    --duration=60
Update on GitHub