LeRobot documentation
ورقة الغش
ورقة الغش
جميع أوامر 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