ملخص سريع
- قم بتثبيت LeRobot في غضون 2 دقيقة باستخدام
pip install lerobotواختبره باستخدام سياسة مسبقة التدريب على ذراع فرانكا المحاكاة. - سجل بيانات التوجيه عن بعد من روبوت حقيقي (مثل UR5) باستخدام أداة سطر الأوامر
lerobot.record. - تدريب سياسة مخصصة من خلال الأمثلة باستخدام 3 أسطر من الكود باستخدام
lerobot.train. - قم بتقييمها في المحاكاة (Isaac Gym) أو نشرها على الأجهزة (SO-100) مع تغييرات كود بسيطة.
- شارك مجموعات البيانات/النماذج على منصة Hugging Face Hub باستخدام
lerobot.push_to_hub.
1. التثبيت ونظام ملفات مجموعة البيانات في LeRobot
تثبيت LeRobot
ابدأ مع التثبيت الرسمي. بالنسبة لمعظم المستخدمين، فإن حزمة Python هي الخيار الأسرع:
pip install lerobot -U
تحقق من التثبيت:
python -c "import lerobot; print(lerobot.__version__)"
الخرج المتوقع:
0.5.0
نظرة عامة على نظام ملفات مجموعة البيانات
تتبع مجموعات بيانات LeRobot معيار RLDS (Robot Learning Dataset Standard)، ولكن مع توسعات خاصة بـ Hugging Face. هيكل ملفات مجموعة البيانات الأساسية يبدو كالتالي:
my_dataset/
├── scenes/ # اختياري: تكوين المشاهد ثلاثية الأبعاد
│ └── table.yaml
├── trajectories/ # أمثلة مسجلة
│ ├── demo_0.h5 # تنسيق HDF5 (ضروري)
│ ├── demo_1.h5
│ └── ...
└── metadata.json # وصف مجموعة البيانات (ضروري)
حقول رئيسية في metadata.json:
{
"description": "مجموعة بيانات UR5 لرفع ووضع الأشياء",
"robot": "ur5e",
"tasks": ["pick", "place"],
"sensors": ["rgb_camera", "joint_states"],
"version": "0.1.0"
}
أخطاء شائعة:
- غياب
metadata.json: سيظهر خطأValueError: Dataset metadata not found. - بنية HDF5 غير صحيحة: تأكد من أن كل ملف
.h5يحتوي على مجموعات/observationsو/actions.
2. تحميل السياسات المسبقة التدريب
يوفر LeRobot ثلاثة أنواع من السياسات جاهزة للاستخدام: ACT (Action Chunk Transformer)، Diffusion Policy، و SmolVLA (Small Vision-Language-Action). هذا هو كيفية تحميلها واختبارها.
تحميل سياسة ACT
from lerobot import ACTPolicy
# تحميل نموذج ACT المسبق التدريب (ذراع فرانكا، معالجة على سطح الطاولة)
policy = ACTPolicy.from_pretrained("lerobot/act3d-franka-table")
# محاكاة خطوة (دخول: قاموس الملاحظات)
observation = {
"image": torch.randn(3, 256, 256), # صورة RGB
"joint_states": torch.randn(7), # زوايا مفاصل الذراع
"ee_pose": torch.randn(7) # وضع نهاية التنفيذ
}
action = policy(observation)
print(action.shape) # المتوقع: torch.Size([7]) لزخم المفاصل
تحميل سياسة Diffusion
from lerobot import DiffusionPolicy
# تحميل سياسة grasp باستخدام Diffusion
policy = DiffusionPolicy.from_pretrained("lerobot/diffusion_policy-grasp")
# أخذ عينة من العمل (عشوائي)
action = policy.sample(observation)
print(action) # الناتج: {"action": tensor([...]), "log_probs": tensor([...])}
تحميل SmolVLA
from lerobot import SmolVLA
# تحميل نموذج VLA للأنشطة المشروطة بالنص
vla = SmolVLA.from_pretrained("lerobot/smolvla-aloha")
# استعلام باستخدام نص وصورة
query = {
"image": torch.randn(3, 224, 224),
"text": "أخذ الكتل الحمراء",
"joint_states": torch.randn(7)
}
action = vla(query)
print(action) # الناتج: tensor([...]) لأعمال المفاصل
نقاط حذر:
- سياسات ACT تتطلب ملاحظات في تنسيق معياري (تحقق من بطاقة النموذج للتعديل).
- سياسات Diffusion أبطأ (~100 مللي ثانية لكل خطوة) ولكن أكثر كفاءة في أخذ العينات.
- SmolVLA تحتاج إلى مدمجات نصية مسبقة الحساب (استخدم
lerobot.tokenizersإذا كانت مفقودة).
3. تسجيل مجموعات بيانات التوجيه عن بعد على ذراع حقيقي
استخدم أداة سطر الأوامر lerobot.record لجمع البيانات من روبوت حقيقي. هذا مثال على UR5.
متطلبات مسبقة
- تثبيت ROS 2 (Humble) وسائق UR:
sudo apt install ros-humble-ur-driver - تأكد من أن الروبوت متصل بالشبكة ويمكن الوصول إليه عبر ROS 2.
تسجيل مجموعة بيانات
lerobot record \
--robot ur5e \
--sensors rgb_camera joint_states \
--output_dir ./ur5_demos \
--max_episodes 10
الخرج المتوقع:
سجل مجموعة بيانات ل UR5e...
حلقه 1/10: انتظر إدخال التوجيه...
[بدء عقدة ROS 2: /lerobot_recorder]
[سجل في: ./ur5_demos/trajectories/episode_0.h5]
[اضغط Ctrl+C لإنهاء الحلقة]
أنماط التوجيه عن بعد
| نمط | علم الأمر | الوصف |
|---|---|---|
| لوحة المفاتيح | --teleop_mode keyboard | استخدام مفاتيح السهم للتحكم بالروبوت. |
| الجوستيك | --teleop_mode joystick | يتطلب حزمة python-joystick. |
| الكمبيوتر | --teleop_mode gamepad | يعمل مع أجهزة التحكم المتوافقة مع XInput. |
| دليل الحساسات |
أخطاء شائعة:
- فشل الاتصال بـ ROS 2: تحقق من إعداد
ROS_DOMAIN_IDوROS_MASTER_URI. الإصلاح: قم بتشغيلexport ROS_DOMAIN_ID=0قبل التسجيل. - تخريج الحساسات: إذا كانت صور RGB متلوية، أعد ضبط الكاميرا باستخدام
ros2 camera_calibration.
4. تدريب سياسة من الأمثلة
قم بتدريب سياسة مخصصة باستخدام واجهة برمجة التطبيقات lerobot.train. هذا مثال على BC (Behavior Cloning).
تدريب من الصفر
from lerobot import BehaviorCloningTrainer
from lerobot.datasets import load_dataset
# تحميل مجموعة البيانات الخاصة بك
dataset = load_dataset("path/to/ur5_demos")
# إعداد المدرب
trainer = BehaviorCloningTrainer(
model="lerobot/act3d-base", # ابدأ من قاعدة مسبقة التدريب
dataset=dataset,
batch_size=32,
epochs=50,
lr=1e-4
)
# تدريب!
trainer.train()
trainer.push_to_hub("my-ur5-policy") # حفظ على منصة Hugging Face Hub
ضبط المعلمات الفائقة
المعلمات الرئيسية التي يمكن ضبطها:
| معلمة | القيمة الافتراضية | نطاق موصى به | الوصف |
|---|---|---|---|
batch_size | 32 | 16–128 | زيادة حجم الحزمة = تدريب أسرع. |
lr | 1e-4 | 1e-5 إلى 1e-3 | قيمة عالية = عدم استقرار؛ قيمة منخفضة = بطء. |
epochs | 50 | 20–200 | التوقف المبكر إذا استقرت خسارة التحقق. |
kl_weight | 0.1 | 0.01–0.5 | فقط للتدريب باستخدام تقنيات التعلم التعزيزي التحسين. |
نقاط حذر:
- التدريب الزائد: إذا كانت خسارة التدريب << خسارة التحقق، قل من سعة النموذج أو أضف توسيع البيانات.
- تعديل العمل: تأكد من أن الأعمال في مجموعة البيانات الخاصة بك تتطابق مع نطاق أوامر الروبوت (مثل
[-1, 1]لزخم المفاصل).
5. التقييم في المحاكاة وعلى الأجهزة
تقييم في Isaac Gym
from lerobot.sim import IsaacGymEnv
from lerobot import ACTPolicy
# تحميل السياسة والبيئة
policy = ACTPolicy.from_pretrained("my-ur5-policy")
env = IsaacGymEnv(robot="ur5e", task="pick_place")
# تشغيل التقييم
success_rate = env.evaluate(policy, episodes=10)
print(f"نسبة النجاح: {success_rate * 100:.2f}%")
الخرج المتوقع:
حلقه 1/10: نجاح = صحيح
حلقه 2/10: نجاح = خطأ
...
نشر على الأجهزة (مثال UR5)
from lerobot.hardware import UR5Controller
from lerobot import ACTPolicy
# إعداد الروبوت والسياسة
robot = UR5Controller()
policy = ACTPolicy.from_pretrained("my-ur5-policy")
# تشغيل التحكم في الحلقة المغلقة
while True:
obs = robot.get_observations()
action = policy(obs)
robot.send_action(action)
جدول دعم الأجهزة:
| روبوت | دعم LeRobot | ملاحظات |
|---|---|---|
| UR5/UR10 | ✅ | يتطلب سائق ROS 2. |
| Franka Emika | ✅ | يعمل مع حزمة franka_ros2. |
| SO-100 | ✅ | دعم رسمي (انظر أدناه). |
| Stretch RE1 | ✅ | يتطلب سائق stretch_ros2. |
| Aloha | ✅ | تجريبي (2026-05). |
| وثائق الأجهزة |
نقاط حذر:
- التباطؤ: نشر التطبيقات الحقيقية يتطلب <50 مللي ثانية زمن حلقة. استخدم
robot.set_control_rate(20)لتحديثات 20 هرتز. - الأمان: تأكد دائمًا من تمكين حدود القوة/الزخم و الإيقاف الطارئ في وضع الأجهزة.
6. نشر مجموعات البيانات والنماذج على المنصة
شارك عملك مع المجتمع باستخدام منصة Hugging Face Hub.
نشر مجموعة بيانات
lerobot push_to_hub \
--path ./ur5_demos \
--repo_id my-username/ur5-pick-place-demos \
--private # اختياري: ضع على False للجمهور
نشر نموذج
from lerobot import ACTPolicy
# تحميل السياسة المدربة
policy = ACTPolicy.from_pretrained("lerobot/act3d-base")
policy.train() # افترض أنك قد دربته
# نشر على المنصة
policy.push_to_hub("my-username/ur5-act-policy")
ميزات المنصة:
- بطاقات النماذج: تُولد تلقائيًا من كودك (عدل
README.mdفي المستودع). - مجموعات البيانات: مرقمة ومفهرسة (مثل
huggingface.co/datasets/my-username/ur5_demos). - الفضاء: نشر أمثلة تفاعلية (انظر LeRobot Spaces).
نقاط حذر:
- ملفات كبيرة: قد تفشل مجموعات البيانات >10 جيجابايت. استخدم
lerobot push_to_hub --chunk_size 1G. - الترخيص: يجب دائمًا تحديد ترخيص (مثل
mitأوapache-2.0) فيmetadata.json.
7. الدلائل الخاصة بالأجهزة
SO-100 (دعم رسمي)
يشمل LeRobot دعمًا أصليًا للمناوب المحمول SO-100.
تثبيت سائق SO-100:
pip install lerobot[so100]
مثال: توجيه SO-100 عن بعد:
lerobot record \
--robot so100 \
--sensors rgb_camera base_pose \
--output_dir ./so100_navigation
أذرع Koch Robotics
لأذرع Koch K1/K2، استخدم واجهة ROS 2:
from lerobot.hardware import KochArm
robot = KochArm()
robot.move_to_joint_positions([0.5, -0.3, 0.0,
